<?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>53003</bug_id>
          
          <creation_ts>2011-01-24 05:19:39 -0800</creation_ts>
          <short_desc>Web Inspector: [JSC] implement setting breakpoints by line:column</short_desc>
          <delta_ts>2012-08-07 13:18:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</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>92951</dependson>
    
    <dependson>93228</dependson>
          <blocked>93387</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Podivilov">podivilov</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aandrey</cc>
    
    <cc>aestes</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>kpiascik</cc>
    
    <cc>loislo</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>paroga</cc>
    
    <cc>PeterHWang</cc>
    
    <cc>pfeldman</cc>
    
    <cc>philn</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>338960</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-01-24 05:19:39 -0800</bug_when>
    <thetext>Web Inspector: [JSC] implement setting breakpoints by line:column</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>339023</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2011-01-24 08:24:59 -0800</bug_when>
    <thetext>Related to the following:
&lt;http://webkit.org/b/52615&gt; Web Inspector: set breakpoints by line:column</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633606</commentid>
    <comment_count>2</comment_count>
      <attachid>143987</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-05-24 23:30:21 -0700</bug_when>
    <thetext>Created attachment 143987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633621</commentid>
    <comment_count>3</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-05-25 00:01:35 -0700</bug_when>
    <thetext>This bug causes Browser with JSC to work wrong in Pretty Print debug mode if the Javascript files put several statements in one line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635368</commentid>
    <comment_count>4</comment_count>
      <attachid>143987</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-28 12:49:59 -0700</bug_when>
    <thetext>Comment on attachment 143987
Patch

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

Looks good, can be improved some more.

&gt; Source/WebCore/ChangeLog:4
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=53003

Better add an empty line here.

&gt; Source/WebCore/ChangeLog:5
&gt; +        The RIM PR https://bugzilla.qnx.com/bugzilla/show_bug.cgi?id=154675 is depend on this bug.

This needs to go below Reviewed by. Also please add an empty line after Reviewed by.

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:75
&gt; +        return true;

I think you can combine below so you only have two returns.

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:525
&gt; +    m_lastHitScriptBreakpoints.clear();

You are doing same lines of code as in returnEvent. So I think there can be a helper function to avoid duplicating code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635597</commentid>
    <comment_count>5</comment_count>
      <attachid>144450</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-05-28 23:06:30 -0700</bug_when>
    <thetext>Created attachment 144450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635598</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-28 23:08:26 -0700</bug_when>
    <thetext>Attachment 144450 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/ChangeLog:10:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 4 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>635603</commentid>
    <comment_count>7</comment_count>
      <attachid>144450</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-28 23:18:32 -0700</bug_when>
    <thetext>Comment on attachment 144450
Patch

Attachment 144450 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12847365</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635604</commentid>
    <comment_count>8</comment_count>
      <attachid>144450</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-28 23:18:37 -0700</bug_when>
    <thetext>Comment on attachment 144450
Patch

Attachment 144450 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12845413</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635605</commentid>
    <comment_count>9</comment_count>
      <attachid>144453</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-05-28 23:19:36 -0700</bug_when>
    <thetext>Created attachment 144453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635610</commentid>
    <comment_count>10</comment_count>
      <attachid>144453</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-28 23:24:32 -0700</bug_when>
    <thetext>Comment on attachment 144453
Patch

Attachment 144453 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12845416</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635611</commentid>
    <comment_count>11</comment_count>
      <attachid>144453</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-28 23:28:34 -0700</bug_when>
    <thetext>Comment on attachment 144453
Patch

Attachment 144453 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12838508</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635615</commentid>
    <comment_count>12</comment_count>
      <attachid>144453</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-28 23:31:10 -0700</bug_when>
    <thetext>Comment on attachment 144453
Patch

Attachment 144453 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12845418</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635621</commentid>
    <comment_count>13</comment_count>
      <attachid>144453</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-05-28 23:36:29 -0700</bug_when>
    <thetext>Comment on attachment 144453
Patch

Attachment 144453 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12846382</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635625</commentid>
    <comment_count>14</comment_count>
      <attachid>144453</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-28 23:39:05 -0700</bug_when>
    <thetext>Comment on attachment 144453
Patch

Attachment 144453 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12853146</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635891</commentid>
    <comment_count>15</comment_count>
      <attachid>144524</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-05-29 04:53:18 -0700</bug_when>
    <thetext>Created attachment 144524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635893</commentid>
    <comment_count>16</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-05-29 04:54:50 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=144524) [details]
&gt; Patch

To resolve build problem with other platform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637918</commentid>
    <comment_count>17</comment_count>
      <attachid>144524</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-05-30 18:51:45 -0700</bug_when>
    <thetext>Comment on attachment 144524
Patch

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

This looks good to me, but I&apos;d rather have a Inspector person look at this. pfeldman maybe?

&gt; Source/WebCore/ChangeLog:6
&gt; +        The RIM PR https://bugzilla.qnx.com/bugzilla/show_bug.cgi?id=154675 is depend on this bug.

s/is depend/depends

&gt; Source/WebCore/ChangeLog:8
&gt; +        Reviewed by Rob Buis.

You don&apos;t want to fill this in until you have r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639148</commentid>
    <comment_count>18</comment_count>
      <attachid>144524</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-01 03:11:04 -0700</bug_when>
    <thetext>Comment on attachment 144524
Patch

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

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:95
&gt; +    unsigned i;

Please move it to the for() initialization section:
  for (size_t i = 0; i &lt; breaksCount; i++) {

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:135
&gt; +        if (breaksVector.at(i).columnNumber == (int)columnNumber) {

We should change types of ScriptBreakpoint.{lolumn,line}Number from int to unsigned if they are always &gt;= 0. Also please use static_cast&lt;int&gt; instead of c-syle cast.

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:163
&gt; +    unsigned j;

Please declare the variables in the corresponding for() sections where they are initialized.

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:438
&gt; +    const TextPosition position = m_currentCallFrame-&gt;position();

What&apos;s the point in extracting this into a local variable given that it is used only once in the method?

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:446
&gt; +    m_currentCallFrame-&gt;updatePosition(hitPosition);

You shouldn&apos;t need to update call frame position from the ScriptDebugServer, VM should provide correct location.

&gt; Source/WebCore/bindings/js/ScriptDebugServer.h:137
&gt; +    typedef HashMap&lt;Page*, ListenerSet*&gt; PageListenersMap;

Revert this line.

&gt; Source/WebCore/bindings/js/ScriptDebugServer.h:153
&gt; +    mutable BreakpointsInLine m_lastHitScriptBreakpoints;

Why do you need these fields to be mutable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640448</commentid>
    <comment_count>19</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-06-04 03:32:43 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 144524 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144524&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:95
&gt; &gt; +    unsigned i;
&gt; 
&gt; Please move it to the for() initialization section:
&gt;   for (size_t i = 0; i &lt; breaksCount; i++) {
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:135
&gt; &gt; +        if (breaksVector.at(i).columnNumber == (int)columnNumber) {
&gt; 
&gt; We should change types of ScriptBreakpoint.{lolumn,line}Number from int to unsigned if they are always &gt;= 0. Also please use static_cast&lt;int&gt; instead of c-syle cast.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:163
&gt; &gt; +    unsigned j;
&gt; 
&gt; Please declare the variables in the corresponding for() sections where they are initialized.
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:438
&gt; &gt; +    const TextPosition position = m_currentCallFrame-&gt;position();
&gt; 
&gt; What&apos;s the point in extracting this into a local variable given that it is used only once in the method?

sorry, it&apos;s a legacy of my old patch, I just neglected it. it will be modified.

&gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:446
&gt; &gt; +    m_currentCallFrame-&gt;updatePosition(hitPosition);
&gt; 
&gt; You shouldn&apos;t need to update call frame position from the ScriptDebugServer, VM should provide correct location.
&gt; 
Actually, the VM of JSC can not provide correct enough location. It can only provide the line number. If there are several statements in one line, ScriptDebugServer has to &quot;guest&quot; the column and set it in currentCallFrame to make sure send a right position to frontend.

&gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.h:137
&gt; &gt; +    typedef HashMap&lt;Page*, ListenerSet*&gt; PageListenersMap;
&gt; 
&gt; Revert this line.

Sorry, ok.
  
&gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.h:153
&gt; &gt; +    mutable BreakpointsInLine m_lastHitScriptBreakpoints;
&gt; 
&gt; Why do you need these fields to be mutable?
Because I think it&apos;s most appropriate to change it in &quot;hasBreakpoint&quot;, but &quot;hasBreakpoint&quot; is a const function. I just don&apos;t want to break the original design.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>641323</commentid>
    <comment_count>20</comment_count>
      <attachid>145731</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-06-05 01:55:12 -0700</bug_when>
    <thetext>Created attachment 145731
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642723</commentid>
    <comment_count>21</comment_count>
      <attachid>145731</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-06 13:04:42 -0700</bug_when>
    <thetext>Comment on attachment 145731
Patch

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

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:160
&gt; +    unsigned hitBreaksCount = m_lastHitScriptBreakpoints.size();

I don&apos;t understand the purpose of m_lastHitScriptBreakpoints - isn&apos;t it always empty at this point?

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:179
&gt; +    m_hitScriptBreakpoint = breaksVector.at(i);

Why don&apos;t you return m_hitScriptBreakpoint in an output parameter instead of adding a mutable field?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>642726</commentid>
    <comment_count>22</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-06-06 13:06:06 -0700</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.h:153
&gt; &gt; &gt; +    mutable BreakpointsInLine m_lastHitScriptBreakpoints;
&gt; &gt; 
&gt; &gt; Why do you need these fields to be mutable?
&gt; Because I think it&apos;s most appropriate to change it in &quot;hasBreakpoint&quot;, but &quot;hasBreakpoint&quot; is a const function. I just don&apos;t want to break the original design.

hasBreakpoint is used in one place only as far as I can see, doesn&apos;t look like a valuable design to keep to me :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>644573</commentid>
    <comment_count>23</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-06-08 04:39:05 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt;  Source/WebCore/bindings/js/ScriptDebugServer.h:153
&gt; &gt;+    mutable BreakpointsInLine m_lastHitScriptBreakpoints;
&gt; 
&gt; Why do you need these fields to be mutable?

The function &quot;hasBreakpoint&quot; is a const function, I just don&apos;t want to break the original design. Maybe I should just change it as a normal function and avoid &quot;mutable&quot;. 

&gt; hasBreakpoint is used in one place only as far as I can see, doesn&apos;t look like a valuable design to keep to me :)

Yes, it looks like redundant :). But actually it&apos;s the heart of JSC debugger. Since the breakpoint in JSC is &quot;fake&quot; breakpoint. It&apos;s not inserted in JS code. If debugger is attached, interpreter just calling ScriptController to check if the breakpoint is reached at current line using &quot;hasBreakpoint&quot;. So &quot;hasBreakpoint&quot; is almost invoked by every JS statement interpreting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645317</commentid>
    <comment_count>24</comment_count>
      <attachid>145731</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-09 07:17:37 -0700</bug_when>
    <thetext>Comment on attachment 145731
Patch

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

&gt; Source/WebCore/ChangeLog:6
&gt; +        RIM PR https://bugzilla.qnx.com/bugzilla/show_bug.cgi?id=152507 depends on this bug.

What is RIM PR?

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:99
&gt; +    std::sort(breaksVector.begin(), breaksVector.end(), breakpointOrderSortFunction);

If breaksVector are breakpoints in the line, why comparing the line numbers in the comparator?

&gt;&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:160
&gt;&gt; +    unsigned hitBreaksCount = m_lastHitScriptBreakpoints.size();
&gt; 
&gt; I don&apos;t understand the purpose of m_lastHitScriptBreakpoints - isn&apos;t it always empty at this point?

I also can&apos;t say I&apos;m following the purpose of the m_lastHitScriptBreakpoints.

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:171
&gt; +            m_lastHitScriptBreakpoints.append(breaksVector.at(i));

So at first, you will go here and consider that you should stop on breakpoint no matter whether its position matches the breakpoint column? This looks wrong.
If you set a breakpoint in the formatted script (which originally was a single javascript line), it will map to say line 1, column 42. Then every statement regardless of the offset will be finding this breakpoint and stopping on it.

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:445
&gt; +        m_currentCallFrame-&gt;updatePosition(hitPosition);

This sounds like a hack. You should get someone from the JSC team to bless it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645705</commentid>
    <comment_count>25</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-06-10 21:17:53 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 145731 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145731&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:6
&gt; &gt; +        RIM PR https://bugzilla.qnx.com/bugzilla/show_bug.cgi?id=152507 depends on this bug.
&gt; 
&gt; What is RIM PR?

It&apos;s Problem Report of the BlackBerry Browser. Our Browser cannot support &quot;Pretty print&quot; mode of JS debugging because of this bug of webkit.

&gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:99
&gt; &gt; +    std::sort(breaksVector.begin(), breaksVector.end(), breakpointOrderSortFunction);
&gt; 
&gt; If breaksVector are breakpoints in the line, why comparing the line numbers in the comparator?
Because the breakpoints in m_lastHitScriptBreakpoints are not always in same line. 

&gt; &gt;&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:160
&gt; &gt;&gt; +    unsigned hitBreaksCount = m_lastHitScriptBreakpoints.size();
&gt; &gt; 
&gt; &gt; I don&apos;t understand the purpose of m_lastHitScriptBreakpoints - isn&apos;t it always empty at this point?
&gt; 
&gt; I also can&apos;t say I&apos;m following the purpose of the m_lastHitScriptBreakpoints.

The m_lastHitScriptBreakpoints is used to record recent hit points. By its help we can figure out what breakpoint should be toggled. For example, if there 3 breakpoints in a same line, and the first and second are already hit, then now in this line the third should hit, even the JSC VM only provide the line number, we can figure out accurately which breakpoint should be toggled. 
 
&gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:171
&gt; &gt; +            m_lastHitScriptBreakpoints.append(breaksVector.at(i));
&gt; 
&gt; So at first, you will go here and consider that you should stop on breakpoint no matter whether its position matches the breakpoint column? This looks wrong.
&gt; If you set a breakpoint in the formatted script (which originally was a single javascript line), it will map to say line 1, column 42. Then every statement regardless of the offset will be finding this breakpoint and stopping on it.

The information in breaksVector is accurate since it come from Frontend. In the webpage of Inspector the script calculates the breakpoint&apos;s position and sends message, finally the setBreakpoints is invoked and save it in breaksVector. 
The problem is that in hasBreakpoints we only know which line we are. So we using m_lastHitScriptBreakpoints to calculate which breakpoint in this line should be toggled. And this breakpoint also should be recorded as recent toggled breakpoints.     
 
&gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:445
&gt; &gt; +        m_currentCallFrame-&gt;updatePosition(hitPosition);
&gt; 
&gt; This sounds like a hack. You should get someone from the JSC team to bless it.
You can take m_curerntCallFrame as a copy of callFrame of JSC VM. The Inspector Frontend send the brekpoint information of it to outside. Since JSC VM only provide the line number, the column number is always 0. Here just to set a accurate column number.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645811</commentid>
    <comment_count>26</comment_count>
      <attachid>145731</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-06-11 01:03:14 -0700</bug_when>
    <thetext>Comment on attachment 145731
Patch

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:6
&gt;&gt;&gt; +        RIM PR https://bugzilla.qnx.com/bugzilla/show_bug.cgi?id=152507 depends on this bug.
&gt;&gt; 
&gt;&gt; What is RIM PR?
&gt; 
&gt; It&apos;s Problem Report of the BlackBerry Browser. Our Browser cannot support &quot;Pretty print&quot; mode of JS debugging because of this bug of webkit.

Ok, it sounds like we should disable setting breakpoints on formatted scripts in JSC for now.

&gt;&gt;&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:171
&gt;&gt;&gt; +            m_lastHitScriptBreakpoints.append(breaksVector.at(i));
&gt;&gt; 
&gt;&gt; So at first, you will go here and consider that you should stop on breakpoint no matter whether its position matches the breakpoint column? This looks wrong.
&gt;&gt; If you set a breakpoint in the formatted script (which originally was a single javascript line), it will map to say line 1, column 42. Then every statement regardless of the offset will be finding this breakpoint and stopping on it.
&gt; 
&gt; The information in breaksVector is accurate since it come from Frontend. In the webpage of Inspector the script calculates the breakpoint&apos;s position and sends message, finally the setBreakpoints is invoked and save it in breaksVector. 
&gt; The problem is that in hasBreakpoints we only know which line we are. So we using m_lastHitScriptBreakpoints to calculate which breakpoint in this line should be toggled. And this breakpoint also should be recorded as recent toggled breakpoints.

I don&apos;t understand how it works though. Consider following JavaScript snippet:
var a = 0; var b = 0; var c = a + b;

in formatted mode, it is:
var a = 0;
var b = 0;
var c = a + b;  &lt;-- now set breakpoint in this line

it ends up line = 0; column = 22;

JSC starts interpretation of &quot;var a = 0;&quot; at [0, 0] and hasBreakpoint request is made with line 0. You fetch all breakpoints for this line including the one we set above. Then you get to this place of code (since j == hitBreaksCount == 0) and stop on that breakpoint. As a result, instead of stopping on &quot;var c = a + b&quot; you stop on &quot;var a = 0&quot;.

What do I miss here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>646521</commentid>
    <comment_count>27</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-06-11 18:22:24 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; (From update of attachment 145731 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145731&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/ChangeLog:6
&gt; &gt;&gt;&gt; +        RIM PR https://bugzilla.qnx.com/bugzilla/show_bug.cgi?id=152507 depends on this bug.
&gt; &gt;&gt; 
&gt; &gt;&gt; What is RIM PR?
&gt; &gt; 
&gt; &gt; It&apos;s Problem Report of the BlackBerry Browser. Our Browser cannot support &quot;Pretty print&quot; mode of JS debugging because of this bug of webkit.
&gt; 
&gt; Ok, it sounds like we should disable setting breakpoints on formatted scripts in JSC for now.
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:171
&gt; &gt;&gt;&gt; +            m_lastHitScriptBreakpoints.append(breaksVector.at(i));
&gt; &gt;&gt; 
&gt; &gt;&gt; So at first, you will go here and consider that you should stop on breakpoint no matter whether its position matches the breakpoint column? This looks wrong.
&gt; &gt;&gt; If you set a breakpoint in the formatted script (which originally was a single javascript line), it will map to say line 1, column 42. Then every statement regardless of the offset will be finding this breakpoint and stopping on it.
&gt; &gt; 
&gt; &gt; The information in breaksVector is accurate since it come from Frontend. In the webpage of Inspector the script calculates the breakpoint&apos;s position and sends message, finally the setBreakpoints is invoked and save it in breaksVector. 
&gt; &gt; The problem is that in hasBreakpoints we only know which line we are. So we using m_lastHitScriptBreakpoints to calculate which breakpoint in this line should be toggled. And this breakpoint also should be recorded as recent toggled breakpoints.
&gt; 
&gt; I don&apos;t understand how it works though. Consider following JavaScript snippet:
&gt; var a = 0; var b = 0; var c = a + b;
&gt; 
&gt; in formatted mode, it is:
&gt; var a = 0;
&gt; var b = 0;
&gt; var c = a + b;  &lt;-- now set breakpoint in this line
&gt; 
&gt; it ends up line = 0; column = 22;
&gt; 
&gt; JSC starts interpretation of &quot;var a = 0;&quot; at [0, 0] and hasBreakpoint request is made with line 0. You fetch all breakpoints for this line including the one we set above. Then you get to this place of code (since j == hitBreaksCount == 0) and stop on that breakpoint. As a result, instead of stopping on &quot;var c = a + b&quot; you stop on &quot;var a = 0&quot;.
&gt; 
&gt; What do I miss here?
 Oops, I think I need to correct something. Thx.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657400</commentid>
    <comment_count>28</comment_count>
      <attachid>149483</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-06-26 01:31:13 -0700</bug_when>
    <thetext>Created attachment 149483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657402</commentid>
    <comment_count>29</comment_count>
      <attachid>149483</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-26 01:40:01 -0700</bug_when>
    <thetext>Comment on attachment 149483
Patch

Attachment 149483 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13098366</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657422</commentid>
    <comment_count>30</comment_count>
      <attachid>149490</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-06-26 02:09:30 -0700</bug_when>
    <thetext>Created attachment 149490
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657509</commentid>
    <comment_count>31</comment_count>
      <attachid>149490</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-26 05:02:08 -0700</bug_when>
    <thetext>Comment on attachment 149490
Patch

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

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:136
&gt; +    if (m_currentSourceID != sourceID) {

Can you explain how that is expected to work in case when you first stop in a script 1, then in a script 2 and again in the same line in script 1? It seems that in that case you will return the first column as the current one or am I missing something?

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:157
&gt; +    int nextColumn = codeInLine.find(&quot;;&quot;, m_currentStatementPosition.columnNumber);

You shouldn&apos;t be trying to parse the code here, instead JSC should be extended to report you current statement&apos;s column.

&gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:160
&gt; +        if (c == &apos; &apos; || c == &apos;\t&apos;)

What is the purpose of skipping first whitespace?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657541</commentid>
    <comment_count>32</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-06-26 05:49:26 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; (From update of attachment 149490 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149490&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:136
&gt; &gt; +    if (m_currentSourceID != sourceID) {
&gt; 
&gt; Can you explain how that is expected to work in case when you first stop in a script 1, then in a script 2 and again in the same line in script 1? It seems that in that case you will return the first column as the current one or am I missing something?
&gt; 
The sourceID represents the code block of current callframe, if code block is changed, then it must starts from the first line.  
You can take this call stack as example: 
Interpreter::debug(...) 
debugger-&gt;callEvent(..., callFrame-&gt;codeBlock()-&gt;ownerExecutable()-&gt;sourceID(),...);
ScriptDebugServer::createCallFrameAndPauseIfNeeded(... ,sourceID, ...);
updateCurrentStatementPosition(sourceID); 
   
&gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:157
&gt; &gt; +    int nextColumn = codeInLine.find(&quot;;&quot;, m_currentStatementPosition.columnNumber);
&gt; 
&gt; You shouldn&apos;t be trying to parse the code here, instead JSC should be extended to report you current statement&apos;s column.
&gt; 
It&apos;s a very big change to make JSC to provide current statement&apos;s column. Since JSC doesn&apos;t really insert break point, it just call interface of Debugger at entrance of Function or code-block. 
And actually, the Debugger has enough info to calculate it.
&gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:160
&gt; &gt; +        if (c == &apos; &apos; || c == &apos;\t&apos;)
&gt; 
&gt; What is the purpose of skipping first whitespace?
For example, the column of second statement in &quot;var a = 1;[white apace][white apace]...[white apace]var b=1;&quot;, the formatter of forntend assign it as 11.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657546</commentid>
    <comment_count>33</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-06-26 05:52:37 -0700</bug_when>
    <thetext>sorry.
For example, the column of second statement in &quot;var a = 1;[white Space][white space]...[white space]var b=1;&quot;, the formatter of forntend assign it as 11.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657565</commentid>
    <comment_count>34</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-06-26 06:21:35 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #31)
&gt; &gt; (From update of attachment 149490 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149490&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:136
&gt; &gt; &gt; +    if (m_currentSourceID != sourceID) {
&gt; &gt; 
&gt; &gt; Can you explain how that is expected to work in case when you first stop in a script 1, then in a script 2 and again in the same line in script 1? It seems that in that case you will return the first column as the current one or am I missing something?
&gt; &gt; 
&gt; The sourceID represents the code block of current callframe, if code block is changed, then it must starts from the first line.  
sourceID is a pointer to the corresponding SourceProvider which is shared between several functions/code blocks.

&gt; &gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:157
&gt; &gt; &gt; +    int nextColumn = codeInLine.find(&quot;;&quot;, m_currentStatementPosition.columnNumber);
&gt; &gt; 
&gt; &gt; You shouldn&apos;t be trying to parse the code here, instead JSC should be extended to report you current statement&apos;s column.
&gt; &gt; 
&gt; It&apos;s a very big change to make JSC to provide current statement&apos;s column. Since JSC doesn&apos;t really insert break point, it just call interface of Debugger at entrance of Function or code-block. 
&gt; And actually, the Debugger has enough info to calculate it.
I doubt it. E.g. how can you tell in ScriptDebugServer which column is going to be next in the following statement: &quot;if (foo()) { bar(); } else { baz(); }&quot; ?

&gt; &gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:160
&gt; &gt; &gt; +        if (c == &apos; &apos; || c == &apos;\t&apos;)
&gt; &gt; 
&gt; &gt; What is the purpose of skipping first whitespace?
&gt; For example, the column of second statement in &quot;var a = 1;[white apace][white apace]...[white apace]var b=1;&quot;, the formatter of forntend assign it as 11.
I still don&apos;t understand that, we skip first whitespace and the statement now starts with 10 spaces?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658311</commentid>
    <comment_count>35</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-06-26 21:05:31 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (In reply to comment #32)
&gt; &gt; (In reply to comment #31)
&gt; &gt; &gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:157
&gt; &gt; &gt; &gt; +    int nextColumn = codeInLine.find(&quot;;&quot;, m_currentStatementPosition.columnNumber);
&gt; &gt; &gt; 
&gt; &gt; &gt; You shouldn&apos;t be trying to parse the code here, instead JSC should be extended to report you current statement&apos;s column.
&gt; &gt; &gt; 
&gt; &gt; It&apos;s a very big change to make JSC to provide current statement&apos;s column. Since JSC doesn&apos;t really insert break point, it just call interface of Debugger at entrance of Function or code-block. 
&gt; &gt; And actually, the Debugger has enough info to calculate it.
&gt; I doubt it. E.g. how can you tell in ScriptDebugServer which column is going to be next in the following statement: &quot;if (foo()) { bar(); } else { baz(); }&quot; ?
Yes, my code is failed with that case. I thought JSC will take code inside curved parentheses as a code-block. I&apos;m wrong :(. Maybe, it&apos;s impossible to solve it keeping JSC unchanged?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658316</commentid>
    <comment_count>36</comment_count>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2012-06-26 21:12:11 -0700</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:157
&gt; &gt; &gt; +    int nextColumn = codeInLine.find(&quot;;&quot;, m_currentStatementPosition.columnNumber);(In reply to comment #35)

&gt; &gt; I doubt it. E.g. how can you tell in ScriptDebugServer which column is going to be next in the following statement: &quot;if (foo()) { bar(); } else { baz(); }&quot; ?
&gt; Yes, my code is failed with that case. I thought JSC will take code inside curved parentheses as a code-block. I&apos;m wrong :(. Maybe, it&apos;s impossible to solve it keeping JSC unchanged?

How about this code:
  var a = &quot;a string; &lt;- with a semicolon&quot;;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658367</commentid>
    <comment_count>37</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-06-26 23:11:29 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; &gt; &gt; &gt; Source/WebCore/bindings/js/ScriptDebugServer.cpp:157
&gt; &gt; &gt; &gt; +    int nextColumn = codeInLine.find(&quot;;&quot;, m_currentStatementPosition.columnNumber);(In reply to comment #35)
&gt; 
&gt; &gt; &gt; I doubt it. E.g. how can you tell in ScriptDebugServer which column is going to be next in the following statement: &quot;if (foo()) { bar(); } else { baz(); }&quot; ?
&gt; &gt; Yes, my code is failed with that case. I thought JSC will take code inside curved parentheses as a code-block. I&apos;m wrong :(. Maybe, it&apos;s impossible to solve it keeping JSC unchanged?
&gt; 
&gt; How about this code:
&gt;   var a = &quot;a string; &lt;- with a semicolon&quot;;

Yes, I see. Thx. Maybe, let JSC rather than Debugger to provide &quot;column&quot; is the only right way. I have to investigate JSC...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661265</commentid>
    <comment_count>38</comment_count>
      <attachid>150358</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-07-01 23:04:52 -0700</bug_when>
    <thetext>Created attachment 150358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661266</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-01 23:06:47 -0700</bug_when>
    <thetext>Attachment 150358 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/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 24 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>661267</commentid>
    <comment_count>40</comment_count>
      <attachid>150359</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-07-01 23:16:46 -0700</bug_when>
    <thetext>Created attachment 150359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661279</commentid>
    <comment_count>41</comment_count>
      <attachid>150359</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-01 23:45:33 -0700</bug_when>
    <thetext>Comment on attachment 150359
Patch

Attachment 150359 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13129063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661299</commentid>
    <comment_count>42</comment_count>
      <attachid>150369</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-07-02 00:23:39 -0700</bug_when>
    <thetext>Created attachment 150369
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661310</commentid>
    <comment_count>43</comment_count>
      <attachid>150369</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-02 00:41:00 -0700</bug_when>
    <thetext>Comment on attachment 150369
Patch

Attachment 150369 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13129078</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661320</commentid>
    <comment_count>44</comment_count>
      <attachid>150376</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-07-02 01:01:58 -0700</bug_when>
    <thetext>Created attachment 150376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661330</commentid>
    <comment_count>45</comment_count>
      <attachid>150376</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-02 01:47:02 -0700</bug_when>
    <thetext>Comment on attachment 150376
Patch

Attachment 150376 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13118995</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661335</commentid>
    <comment_count>46</comment_count>
      <attachid>150382</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-07-02 02:12:05 -0700</bug_when>
    <thetext>Created attachment 150382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661343</commentid>
    <comment_count>47</comment_count>
      <attachid>150382</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-02 02:28:14 -0700</bug_when>
    <thetext>Comment on attachment 150382
Patch

Attachment 150382 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13136006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661348</commentid>
    <comment_count>48</comment_count>
      <attachid>150385</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-07-02 02:39:41 -0700</bug_when>
    <thetext>Created attachment 150385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661367</commentid>
    <comment_count>49</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-07-02 03:37:01 -0700</bug_when>
    <thetext>The main modifications of this patch are:
(1) Add &quot;m_columnNumber&quot; to JSC::Lexer (Lexer.cpp) as a counter of column. 
(2) Add &quot;m_columnNumber&quot; to JSC::Node (Nodes.cpp) to record the column of this Node.
(3) Add &quot;column&quot; for instruction &quot;op_debug&quot; (BytecodeGenerator.cpp).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663807</commentid>
    <comment_count>50</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-07-05 18:13:33 -0700</bug_when>
    <thetext>I tried compiling the proposed patch on ToT (r121930)  and died with the compilation error below.  Looks like some other code needs to have a column parameter added.  I was building to check performance implications of the patch.

In file included from /Volumes/Data/src/webkit.work/Source/WebKit/mac/WebView/WebFrame.mm:51:
/Volumes/Data/src/webkit.work/Source/WebKit/mac/WebView/WebScriptDebugger.h:57:18: error: &apos;WebScriptDebugger::callEvent&apos; hides overloaded virtual function [-Werror,-Woverloaded-virtual]
    virtual void callEvent(const JSC::DebuggerCallFrame&amp;, intptr_t sourceID, int lineNumber);
                 ^
/Volumes/Data/src/webkit.work/WebKitBuild/Release/JavaScriptCore.framework/PrivateHeaders/Debugger.h:47:22: note: hidden overloaded virtual function &apos;JSC::Debugger::callEvent&apos; declared here
        virtual void callEvent(const DebuggerCallFrame&amp;, intptr_t, int, int) { };
                     ^
In file included from /Volumes/Data/src/webkit.work/Source/WebKit/mac/WebView/WebFrame.mm:51:
/Volumes/Data/src/webkit.work/Source/WebKit/mac/WebView/WebScriptDebugger.h:58:18: error: &apos;WebScriptDebugger::atStatement&apos; hides overloaded virtual function [-Werror,-Woverloaded-virtual]
    virtual void atStatement(const JSC::DebuggerCallFrame&amp;, intptr_t sourceID, int lineNumber);
                 ^
/Volumes/Data/src/webkit.work/WebKitBuild/Release/JavaScriptCore.framework/PrivateHeaders/Debugger.h:46:22: note: hidden overloaded virtual function &apos;JSC::Debugger::atStatement&apos; declared here
        virtual void atStatement(const DebuggerCallFrame&amp;, intptr_t, int, int) { };
                     ^
In file included from /Volumes/Data/src/webkit.work/Source/WebKit/mac/WebView/WebFrame.mm:51:
/Volumes/Data/src/webkit.work/Source/WebKit/mac/WebView/WebScriptDebugger.h:59:18: error: &apos;WebScriptDebugger::returnEvent&apos; hides overloaded virtual function [-Werror,-Woverloaded-virtual]
    virtual void returnEvent(const JSC::DebuggerCallFrame&amp;, intptr_t sourceID, int lineNumber);
                 ^
/Volumes/Data/src/webkit.work/WebKitBuild/Release/JavaScriptCore.framework/PrivateHeaders/Debugger.h:48:22: note: hidden overloaded virtual function &apos;JSC::Debugger::returnEvent&apos; declared here
        virtual void returnEvent(const DebuggerCallFrame&amp;, intptr_t, int, int) { };
                     ^
In file included from /Volumes/Data/src/webkit.work/Source/WebKit/mac/WebView/WebFrame.mm:51:
/Volumes/Data/src/webkit.work/Source/WebKit/mac/WebView/WebScriptDebugger.h:60:18: error: &apos;WebScriptDebugger::exception&apos; hides overloaded virtual function [-Werror,-Woverloaded-virtual]
    virtual void exception(const JSC::DebuggerCallFrame&amp;, intptr_t sourceID, int lineNumber, bool hasHandler);
                 ^
/Volumes/Data/src/webkit.work/WebKitBuild/Release/JavaScriptCore.framework/PrivateHeaders/Debugger.h:45:22: note: hidden overloaded virtual function &apos;JSC::Debugger::exception&apos; declared here
        virtual void exception(const DebuggerCallFrame&amp;, intptr_t, int, int, bool) { };
                     ^
In file included from /Volumes/Data/src/webkit.work/Source/WebKit/mac/WebView/WebFrame.mm:51:
/Volumes/Data/src/webkit.work/Source/WebKit/mac/WebView/WebScriptDebugger.h:61:18: error: &apos;WebScriptDebugger::willExecuteProgram&apos; hides overloaded virtual function [-Werror,-Woverloaded-virtual]
    virtual void willExecuteProgram(const JSC::DebuggerCallFrame&amp;, intptr_t sourceID, int lineno);
                 ^
/Volumes/Data/src/webkit.work/WebKitBuild/Release/JavaScriptCore.framework/PrivateHeaders/Debugger.h:50:22: note: hidden overloaded virtual function &apos;JSC::Debugger::willExecuteProgram&apos; declared here
        virtual void willExecuteProgram(const DebuggerCallFrame&amp;, intptr_t, int, int) { };
                     ^
In file included from /Volumes/Data/src/webkit.work/Source/WebKit/mac/WebView/WebFrame.mm:51:
/Volumes/Data/src/webkit.work/Source/WebKit/mac/WebView/WebScriptDebugger.h:62:18: error: &apos;WebScriptDebugger::didExecuteProgram&apos; hides overloaded virtual function [-Werror,-Woverloaded-virtual]
    virtual void didExecuteProgram(const JSC::DebuggerCallFrame&amp;, intptr_t sourceID, int lineno);
                 ^
/Volumes/Data/src/webkit.work/WebKitBuild/Release/JavaScriptCore.framework/PrivateHeaders/Debugger.h:51:22: note: hidden overloaded virtual function &apos;JSC::Debugger::didExecuteProgram&apos; declared here
        virtual void didExecuteProgram(const DebuggerCallFrame&amp;, intptr_t, int, int) { };
                     ^
In file included from /Volumes/Data/src/webkit.work/Source/WebKit/mac/WebView/WebFrame.mm:51:
/Volumes/Data/src/webkit.work/Source/WebKit/mac/WebView/WebScriptDebugger.h:63:18: error: &apos;WebScriptDebugger::didReachBreakpoint&apos; hides overloaded virtual function [-Werror,-Woverloaded-virtual]
    virtual void didReachBreakpoint(const JSC::DebuggerCallFrame&amp;, intptr_t sourceID, int lineno);
                 ^
/Volumes/Data/src/webkit.work/WebKitBuild/Release/JavaScriptCore.framework/PrivateHeaders/Debugger.h:52:22: note: hidden overloaded virtual function &apos;JSC::Debugger::didReachBreakpoint&apos; declared here
        virtual void didReachBreakpoint(const DebuggerCallFrame&amp;, intptr_t, int, int) { };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663926</commentid>
    <comment_count>51</comment_count>
      <attachid>151028</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-07-06 00:56:51 -0700</bug_when>
    <thetext>Created attachment 151028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663934</commentid>
    <comment_count>52</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-07-06 01:18:55 -0700</bug_when>
    <thetext>(In reply to comment #51)
&gt; Created an attachment (id=151028) [details]
&gt; Patch

Hi Michael, this patch can help your porting to avoid to be broken.
I&apos;ve just added a series of old interface for Debugger to make it compatible with the code that use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>669941</commentid>
    <comment_count>53</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-07-15 00:45:42 -0700</bug_when>
    <thetext>In theory, my patch brings extra calculation only in &quot;parsing&quot; phase, since it adds a counter to record the column of &quot;token&quot;, and this extra calculation is a very small part of the calculation of &quot;parsing&quot;. For the generated bytecode, only instruction &quot;debug&quot; has one extra parameter.

With my local compiled Qt Browser, I did some times of SunSpider test. The results are fluctuating, below data are the ones with narrowest fluctuating range:
with my patch 208.8ms ±0.8%
without my patch 209.6ms ±0.6%

The feature of debugging with uglified JS code is very important now, since most JS code in live sites are uglified. I tried to implement this feature avoiding modification of JSC, but failed. It seems let JSC provide the &quot;column&quot; info is appropriate, since in &quot;parsing&quot; phase JSC &quot;knows&quot; the &quot;column&quot; info of every token, it just needs to be recorded. 

I&apos;d like to discuss the potential impact of my patch, since we must be careful when changing JSC. Welcome comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670574</commentid>
    <comment_count>54</comment_count>
      <attachid>151028</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-07-16 12:47:25 -0700</bug_when>
    <thetext>Comment on attachment 151028
Patch

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

Overall approach in JSC looks good. One comment below.

&gt; Source/JavaScriptCore/parser/Parser.cpp:1639
&gt; +        expr = context.makePostfixNode(m_lexer-&gt;lastLineNumber(), tokenColumn(), expr, OpPlusPlus, subExprStart, lastTokenEnd(), tokenEnd());

It&apos;s awkward to get the line number from the lexer, but get the column number from the current token. Let&apos;s get all the data from the current token instead.

The smallest change you can make to fix this is to pass a reference to the current token instead of two separate numbers.

It would be even better to rename JSTokenInfo to TokenLocation, put line, column, start, end, and divot all in TokenLocation, and pass just that one object to all clients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674264</commentid>
    <comment_count>55</comment_count>
      <attachid>153432</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-07-20 00:28:41 -0700</bug_when>
    <thetext>Created attachment 153432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674385</commentid>
    <comment_count>56</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-07-20 02:43:52 -0700</bug_when>
    <thetext>(In reply to comment #54)
&gt; (From update of attachment 151028 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151028&amp;action=review
&gt; 
&gt; Overall approach in JSC looks good. One comment below.
&gt; 
&gt; &gt; Source/JavaScriptCore/parser/Parser.cpp:1639
&gt; &gt; +        expr = context.makePostfixNode(m_lexer-&gt;lastLineNumber(), tokenColumn(), expr, OpPlusPlus, subExprStart, lastTokenEnd(), tokenEnd());
&gt; 
&gt; It&apos;s awkward to get the line number from the lexer, but get the column number from the current token. Let&apos;s get all the data from the current token instead.
&gt; 
&gt; The smallest change you can make to fix this is to pass a reference to the current token instead of two separate numbers.
&gt; 
&gt; It would be even better to rename JSTokenInfo to TokenLocation, put line, column, start, end, and divot all in TokenLocation, and pass just that one object to all clients.

Thank you for your comments. I&apos;ve updated a new patch according to your comments. There is only one exception that I didn&apos;t include divot in TokenLocation, since it will bring a lot of more modifications. I really want to keep the modification and risk of side-effect minimum, if the modification is acceptable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684057</commentid>
    <comment_count>57</comment_count>
      <attachid>155774</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-08-01 03:45:08 -0700</bug_when>
    <thetext>Created attachment 155774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684081</commentid>
    <comment_count>58</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-08-01 04:51:16 -0700</bug_when>
    <thetext>(In reply to comment #57)
&gt; Created an attachment (id=155774) [details]
&gt; Patch

update patch to catch up the newest code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684421</commentid>
    <comment_count>59</comment_count>
      <attachid>155774</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-08-01 11:58:31 -0700</bug_when>
    <thetext>Comment on attachment 155774
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684907</commentid>
    <comment_count>60</comment_count>
      <attachid>155774</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-01 19:31:56 -0700</bug_when>
    <thetext>Comment on attachment 155774
Patch

Rejecting attachment 155774 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
Kit/chromium/third_party/yasm/source/patched-yasm --revision 134927 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
48&gt;At revision 134927.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/13411701</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684942</commentid>
    <comment_count>61</comment_count>
      <attachid>155964</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-08-01 20:55:37 -0700</bug_when>
    <thetext>Created attachment 155964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684948</commentid>
    <comment_count>62</comment_count>
      <attachid>155964</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-08-01 21:05:25 -0700</bug_when>
    <thetext>Comment on attachment 155964
Patch

commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684964</commentid>
    <comment_count>63</comment_count>
      <attachid>155964</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-01 21:49:43 -0700</bug_when>
    <thetext>Comment on attachment 155964
Patch

Clearing flags on attachment: 155964

Committed r124406: &lt;http://trac.webkit.org/changeset/124406&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684965</commentid>
    <comment_count>64</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-01 21:49:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685020</commentid>
    <comment_count>65</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-01 23:39:56 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 92951</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685021</commentid>
    <comment_count>66</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-01 23:40:12 -0700</bug_when>
    <thetext>This has set the bots on fire:

http://build.webkit.org/results/Apple%20Lion%20Debug%20WK1%20(Tests)/r124406%20(1500)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685031</commentid>
    <comment_count>67</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-08-02 00:01:11 -0700</bug_when>
    <thetext>(In reply to comment #63)
&gt; (From update of attachment 155964 [details])
&gt; Clearing flags on attachment: 155964
&gt; 
&gt; Committed r124406: &lt;http://trac.webkit.org/changeset/124406&gt;

Please also change http://trac.webkit.org/browser/trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp?rev=124406#L5257 when landing again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685240</commentid>
    <comment_count>68</comment_count>
      <attachid>156045</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-08-02 05:24:22 -0700</bug_when>
    <thetext>Created attachment 156045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>685584</commentid>
    <comment_count>69</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-08-02 10:59:44 -0700</bug_when>
    <thetext>(In reply to comment #68)
&gt; Created an attachment (id=156045) [details]
&gt; Patch

What does this do to fix the crashes in the previous patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686197</commentid>
    <comment_count>70</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-08-02 20:40:38 -0700</bug_when>
    <thetext>(In reply to comment #57)
&gt; Created an attachment (id=155774) [details]
&gt; Patch

update patch to catch up the newest code.
(In reply to comment #69)
&gt; (In reply to comment #68)
&gt; &gt; Created an attachment (id=156045) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; What does this do to fix the crashes in the previous patch?

I need to verify on my local Mac build again. So far, I think the reason is &quot;JSC::Debugger&quot;, in my patch the interfaces like &quot;callEvent&quot; of &quot;JSC::Debugger&quot; are added one parameter. The class of Mac porting WebScriptDebugger derived from &quot;JSC::Debugger&quot; and override these interfaces. I missed the Mac porting, I should at least changed the interfaces of WebScriptDebugger and test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686577</commentid>
    <comment_count>71</comment_count>
      <attachid>156329</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-08-03 04:58:16 -0700</bug_when>
    <thetext>Created attachment 156329
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686582</commentid>
    <comment_count>72</comment_count>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-08-03 05:09:22 -0700</bug_when>
    <thetext>(In reply to comment #71)
&gt; Created an attachment (id=156329) [details]
&gt; Patch

Comparing to the patch which caused problem for Mac porting, there are two modifications:
(1) Add a new parameter to interfaces &quot;callEvent&quot;, &quot;atStatement&quot; ... of WebScriptDebugger, since WebScriptDebugger of Mac porting is derived from &quot;JSC::Debugger&quot; and these interfaces of &quot;JSC::Debugger&quot; were changed.

(2) Change the argument number of &quot;_llint_op_debug&quot; form 4 to 5, since debug byte-code command was added a new argument.
 
I&apos;m so sorry, my local porting doesn&apos;t support LLINT so I missed the &quot;_llint_op_debug&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686633</commentid>
    <comment_count>73</comment_count>
      <attachid>156329</attachid>
    <who name="Charles Wei">charles.wei</who>
    <bug_when>2012-08-03 06:22:34 -0700</bug_when>
    <thetext>Comment on attachment 156329
Patch

Commit it after the author had run the test against Mac build without regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686637</commentid>
    <comment_count>74</comment_count>
      <attachid>156329</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-03 06:26:09 -0700</bug_when>
    <thetext>Comment on attachment 156329
Patch

Rejecting attachment 156329 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/Source/WebKit/mac/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/13434011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687683</commentid>
    <comment_count>75</comment_count>
      <attachid>156577</attachid>
    <who name="Peter Wang">PeterHWang</who>
    <bug_when>2012-08-05 17:42:57 -0700</bug_when>
    <thetext>Created attachment 156577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687728</commentid>
    <comment_count>76</comment_count>
      <attachid>156577</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-05 20:17:03 -0700</bug_when>
    <thetext>Comment on attachment 156577
Patch

Clearing flags on attachment: 156577

Committed r124729: &lt;http://trac.webkit.org/changeset/124729&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687729</commentid>
    <comment_count>77</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-05 20:17:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689314</commentid>
    <comment_count>78</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-08-07 13:12:44 -0700</bug_when>
    <thetext>Appears that this may have broken the Mac Lion Debug bots:

inspector/debugger/script-formatter-breakpoints.html
inspector/debugger/pause-in-internal-script.html
inspector/debugger/watch-expressions-panel-switch.html
inspector/debugger/debugger-activation-crash2.html
inspector/debugger/debugger-set-breakpoint-regex.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143987</attachid>
            <date>2012-05-24 23:30:21 -0700</date>
            <delta_ts>2012-05-28 23:06:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120525143018.patch</filename>
            <type>text/plain</type>
            <size>11896</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2NDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWRjNDBlMGExZDM2MDEy
ZDYwY2UxODAyNmI1MzBjN2UxM2RlOGI5Ni4uZjc5MTA5YWZmOThmMjU1Mzk1NzEzMTllNmRkZWFh
ZmJjYWM5ZTEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA1LTI0ICBQZXRl
ciBXYW5nICA8cGV0ZXIud2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogW0pTQ10gaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2ludHMgYnkgbGluZTpjb2x1
bW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMDAz
CisgICAgICAgIFRoZSBSSU0gUFIgaHR0cHM6Ly9idWd6aWxsYS5xbnguY29tL2J1Z3ppbGxhL3No
b3dfYnVnLmNnaT9pZD0xNTQ2NzUgaXMgZGVwZW5kIG9uIHRoaXMgYnVnLgorICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkK
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkphdmFTY3JpcHRDYWxsRnJhbWU6OnVwZGF0ZVBvc2l0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
YnJlYWtwb2ludE9yZGVyU29ydEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0JyZWFrcG9pbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlSWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpkaWRFeGVjdXRlUHJvZ3JhbSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERl
YnVnU2VydmVyKToKKwogMjAxMi0wNS0wOCAgSmFzb24gTGl1ICA8amFzb24ubGl1QHRvcmNobW9i
aWxlLmNvbS5jbj4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gQXV0aCBjcmVkZW50aWFscyBzZXQg
aW4gcHJpdmF0ZSBtb2RlIGFyZSByZXVzZWQgaW4gcHVibGljIG1vZGUuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgKaW5kZXggYTU4MWM0ZmM3
YjI3ZDJmYWM3OTA2YjhhOWZiMzAxYzYzZmZiMGRkYy4uMzc2YjRiOTdmMDk0Nzc4ZjE1ZGQ0NmQ4
MjI1ZDBkNmIxOTc5ZjkzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SmF2YVNjcmlwdENhbGxGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0ph
dmFTY3JpcHRDYWxsRnJhbWUuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBpbnRw
dHJfdCBzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSUQ7IH0KICAgICBjb25zdCBU
ZXh0UG9zaXRpb24mIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0UG9zaXRpb247IH0K
KyAgICB2b2lkIHVwZGF0ZVBvc2l0aW9uKGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pIHsg
bV90ZXh0UG9zaXRpb24gPSBwb3NpdGlvbjsgfQogICAgIGludCBsaW5lKCkgY29uc3QgeyByZXR1
cm4gbV90ZXh0UG9zaXRpb24ubV9saW5lLnplcm9CYXNlZEludCgpOyB9CiAgICAgaW50IGNvbHVt
bigpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dFBvc2l0aW9uLm1fY29sdW1uLnplcm9CYXNlZEludCgp
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmNwcAppbmRleCAxZDYxMTdjZmRlYzIzMjE2NDUwNWVmZDlhNjQ3ZTVjZjBlMTU1ZDRhLi42ZDkx
NGRiNjRmODgxNTg2OWZmMjhkNGQ2YmM5ODYzN2Y2Zjg1ODQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC02MCw2ICs2MCw3IEBA
IFNjcmlwdERlYnVnU2VydmVyOjpTY3JpcHREZWJ1Z1NlcnZlcigpCiAgICAgLCBtX2JyZWFrcG9p
bnRzQWN0aXZhdGVkKHRydWUpCiAgICAgLCBtX3BhdXNlT25DYWxsRnJhbWUoMCkKICAgICAsIG1f
cmVjb21waWxlVGltZXIodGhpcywgJlNjcmlwdERlYnVnU2VydmVyOjpyZWNvbXBpbGVBbGxKU0Z1
bmN0aW9ucykKKyAgICAsIG1faGl0U2NyaXB0QnJlYWtwb2ludCgwLCAwLCAiIikKIHsKIH0KIApA
QCAtNjgsMjggKzY5LDU0IEBAIFNjcmlwdERlYnVnU2VydmVyOjp+U2NyaXB0RGVidWdTZXJ2ZXIo
KQogICAgIGRlbGV0ZUFsbFZhbHVlcyhtX3BhZ2VMaXN0ZW5lcnNNYXApOwogfQogCitzdGF0aWMg
Ym9vbCBicmVha3BvaW50T3JkZXJTb3J0RnVuY3Rpb24oY29uc3QgU2NyaXB0QnJlYWtwb2ludCYg
aGVhZFBvaW50LCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiByZWFyUG9pbnQpCit7CisgICAgaWYg
KGhlYWRQb2ludC5saW5lTnVtYmVyIDwgcmVhclBvaW50LmxpbmVOdW1iZXIpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIGlmIChoZWFkUG9pbnQubGluZU51bWJlciA+IHJlYXJQb2ludC5saW5l
TnVtYmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoaGVhZFBvaW50LmNvbHVt
bk51bWJlciA8IHJlYXJQb2ludC5jb2x1bW5OdW1iZXIpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmIChoZWFkUG9pbnQuY29sdW1uTnVtYmVyID4gcmVhclBvaW50LmNvbHVtbk51bWJlcikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBTdHJpbmcg
U2NyaXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwg
Y29uc3QgU2NyaXB0QnJlYWtwb2ludCYgc2NyaXB0QnJlYWtwb2ludCwgaW50KiBhY3R1YWxMaW5l
TnVtYmVyLCBpbnQqIGFjdHVhbENvbHVtbk51bWJlcikKIHsKICAgICBpbnRwdHJfdCBzb3VyY2VJ
RFZhbHVlID0gc291cmNlSUQudG9JbnRQdHIoKTsKICAgICBpZiAoIXNvdXJjZUlEVmFsdWUpCiAg
ICAgICAgIHJldHVybiAiIjsKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRFZhbHVlKTsKKwogICAg
IGlmIChpdCA9PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKLSAgICAgICAgaXQgPSBt
X3NvdXJjZUlkVG9CcmVha3BvaW50cy5zZXQoc291cmNlSURWYWx1ZSwgTGluZVRvQnJlYWtwb2lu
dE1hcCgpKS5pdGVyYXRvcjsKLSAgICBpZiAoaXQtPnNlY29uZC5jb250YWlucyhzY3JpcHRCcmVh
a3BvaW50LmxpbmVOdW1iZXIgKyAxKSkKLSAgICAgICAgcmV0dXJuICIiOwotICAgIGl0LT5zZWNv
bmQuc2V0KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEsIHNjcmlwdEJyZWFrcG9pbnQp
OworICAgICAgICBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLnNldChzb3VyY2VJRFZhbHVl
LCBMaW5lVG9CcmVha3BvaW50TWFwKCkpLmZpcnN0OworICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6
Oml0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5maW5kKHNjcmlwdEJyZWFrcG9pbnQubGlu
ZU51bWJlciArIDEpOworICAgIGlmIChicmVha3NJdCA9PSBpdC0+c2Vjb25kLmVuZCgpKQorICAg
ICAgICBicmVha3NJdCA9IGl0LT5zZWNvbmQuc2V0KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJl
ciArIDEsIEJyZWFrcG9pbnRzSW5MaW5lKCkpLmZpcnN0OworCisgICAgQnJlYWtwb2ludHNJbkxp
bmUmIGJyZWFrc1ZlY3RvciA9IGJyZWFrc0l0LT5zZWNvbmQ7CisgICAgdW5zaWduZWQgYnJlYWtz
Q291bnQgPSBicmVha3NWZWN0b3Iuc2l6ZSgpOworICAgIHVuc2lnbmVkIGk7CisgICAgZm9yIChp
ID0gMDsgaSA8IGJyZWFrc0NvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKGJyZWFrc1ZlY3Rvci5h
dChpKS5jb2x1bW5OdW1iZXIgPT0gc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXIpCisgICAg
ICAgICAgICByZXR1cm4gIiI7CisgICAgfQorICAgIGJyZWFrc1ZlY3Rvci5hcHBlbmQoc2NyaXB0
QnJlYWtwb2ludCk7CisgICAgc3RkOjpzb3J0KGJyZWFrc1ZlY3Rvci5iZWdpbigpLCBicmVha3NW
ZWN0b3IuZW5kKCksIGJyZWFrcG9pbnRPcmRlclNvcnRGdW5jdGlvbik7CisKICAgICAqYWN0dWFs
TGluZU51bWJlciA9IHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcjsKLSAgICAvLyBGSVhNRShX
SzUzMDAzKTogaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2ludHMgYnkgbGluZTpjb2x1bW4uCi0g
ICAgKmFjdHVhbENvbHVtbk51bWJlciA9IDA7Ci0gICAgcmV0dXJuIHNvdXJjZUlEICsgIjoiICsg
U3RyaW5nOjpudW1iZXIoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyKTsKKyAgICAqYWN0dWFs
Q29sdW1uTnVtYmVyID0gc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXI7CisgICAgcmV0dXJu
IHNvdXJjZUlEICsgIjoiICsgU3RyaW5nOjpudW1iZXIoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVt
YmVyKSArICI6IiArIFN0cmluZzo6bnVtYmVyKHNjcmlwdEJyZWFrcG9pbnQuY29sdW1uTnVtYmVy
KTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludChjb25zdCBT
dHJpbmcmIGJyZWFrcG9pbnRJZCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0b2tlbnM7CiAgICAg
YnJlYWtwb2ludElkLnNwbGl0KCI6IiwgdG9rZW5zKTsKLSAgICBpZiAodG9rZW5zLnNpemUoKSAh
PSAyKQorICAgIGlmICh0b2tlbnMuc2l6ZSgpICE9IDMpCiAgICAgICAgIHJldHVybjsKICAgICBi
b29sIHN1Y2Nlc3M7CiAgICAgaW50cHRyX3Qgc291cmNlSURWYWx1ZSA9IHRva2Vuc1swXS50b0lu
dFB0cigmc3VjY2Vzcyk7CkBAIC05OCw5ICsxMjUsMjEgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZl
cjo6cmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkKICAgICB1bnNp
Z25lZCBsaW5lTnVtYmVyID0gdG9rZW5zWzFdLnRvVUludCgmc3VjY2Vzcyk7CiAgICAgaWYgKCFz
dWNjZXNzKQogICAgICAgICByZXR1cm47CisgICAgdW5zaWduZWQgY29sdW1uTnVtYmVyID0gdG9r
ZW5zWzJdLnRvVUludCgmc3VjY2Vzcyk7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1
cm47CisKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zb3Vy
Y2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRFZhbHVlKTsKLSAgICBpZiAoaXQgIT0gbV9z
b3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIGl0LT5zZWNvbmQucmVtb3ZlKGxp
bmVOdW1iZXIgKyAxKTsKKyAgICBMaW5lVG9CcmVha3BvaW50TWFwOjppdGVyYXRvciBicmVha3NJ
dCA9IGl0LT5zZWNvbmQuZmluZChsaW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGJyZWFrc0l0ID09
IGl0LT5zZWNvbmQuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEJyZWFrcG9pbnRzSW5M
aW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25kOworICAgIHVuc2lnbmVkIGJyZWFr
c0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgYnJlYWtzQ291bnQ7IGkrKykgeworICAgICAgICBpZiAoYnJlYWtzVmVjdG9yLmF0KGkpLmNv
bHVtbk51bWJlciA9PSAoaW50KWNvbHVtbk51bWJlcikKKyAgICAgICAgICAgIGJyZWFrc1ZlY3Rv
ci5yZW1vdmUoaSk7CisgICAgfQogfQogCiBib29sIFNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVh
a3BvaW50KGludHB0cl90IHNvdXJjZUlELCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKSBj
b25zdApAQCAtMTE0LDE2ICsxNTMsNDEgQEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJl
YWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3MKICAgICBp
bnQgbGluZU51bWJlciA9IHBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpOwogICAgIGlmIChs
aW5lTnVtYmVyIDw9IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBMaW5lVG9CcmVha3Bv
aW50TWFwOjpjb25zdF9pdGVyYXRvciBicmVha0l0ID0gaXQtPnNlY29uZC5maW5kKGxpbmVOdW1i
ZXIpOwotICAgIGlmIChicmVha0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisKKyAgICBMaW5lVG9C
cmVha3BvaW50TWFwOjpjb25zdF9pdGVyYXRvciBicmVha3NJdCA9IGl0LT5zZWNvbmQuZmluZChs
aW5lTnVtYmVyKTsKKyAgICBpZiAoYnJlYWtzSXQgPT0gaXQtPnNlY29uZC5lbmQoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCisgICAgYm9vbCBoaXQgPSBmYWxzZTsKKyAgICBjb25zdCBCcmVh
a3BvaW50c0luTGluZSYgYnJlYWtzVmVjdG9yID0gYnJlYWtzSXQtPnNlY29uZDsKKyAgICB1bnNp
Z25lZCBicmVha3NDb3VudCA9IGJyZWFrc1ZlY3Rvci5zaXplKCk7CisgICAgdW5zaWduZWQgaTsK
KyAgICB1bnNpZ25lZCBoaXRCcmVha3NDb3VudCA9IG1fbGFzdEhpdFNjcmlwdEJyZWFrcG9pbnRz
LnNpemUoKTsKKyAgICB1bnNpZ25lZCBqOworCisgICAgZm9yIChpID0gMDsgaSA8IGJyZWFrc0Nv
dW50OyBpKyspIHsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IGhpdEJyZWFrc0NvdW50OyBqKysp
IHsKKyAgICAgICAgICAgIGlmIChicmVha3NWZWN0b3IuYXQoaSkuY29sdW1uTnVtYmVyID09IG1f
bGFzdEhpdFNjcmlwdEJyZWFrcG9pbnRzLmF0KGopLmNvbHVtbk51bWJlcgorICAgICAgICAgICAg
ICAgICYmIGJyZWFrc1ZlY3Rvci5hdChpKS5saW5lTnVtYmVyID09IG1fbGFzdEhpdFNjcmlwdEJy
ZWFrcG9pbnRzLmF0KGopLmxpbmVOdW1iZXIpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGogPT0gaGl0QnJlYWtzQ291bnQpIHsKKyAgICAgICAgICAgIG1f
bGFzdEhpdFNjcmlwdEJyZWFrcG9pbnRzLmFwcGVuZChicmVha3NWZWN0b3IuYXQoaSkpOworICAg
ICAgICAgICAgaGl0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorICAgIGlmICghaGl0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX2hpdFNjcmlw
dEJyZWFrcG9pbnQgPSBicmVha3NWZWN0b3IuYXQoaSk7CisKICAgICAvLyBBbiBlbXB0eSBjb25k
aXRpb24gY291bnRzIGFzIG5vIGNvbmRpdGlvbiB3aGljaCBpcyBlcXVpdmFsZW50IHRvICJ0cnVl
Ii4KLSAgICBpZiAoYnJlYWtJdC0+c2Vjb25kLmNvbmRpdGlvbi5pc0VtcHR5KCkpCisgICAgaWYg
KG1faGl0U2NyaXB0QnJlYWtwb2ludC5jb25kaXRpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIEpTVmFsdWUgZXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmVzdWx0ID0g
bV9jdXJyZW50Q2FsbEZyYW1lLT5ldmFsdWF0ZShzdHJpbmdUb1VTdHJpbmcoYnJlYWtJdC0+c2Vj
b25kLmNvbmRpdGlvbiksIGV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBtX2N1cnJl
bnRDYWxsRnJhbWUtPmV2YWx1YXRlKHN0cmluZ1RvVVN0cmluZyhtX2hpdFNjcmlwdEJyZWFrcG9p
bnQuY29uZGl0aW9uKSwgZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAg
IC8vIEFuIGVycm9uZW91cyBjb25kaXRpb24gY291bnRzIGFzICJmYWxzZSIuCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTM0MCw2ICs0MDQsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpk
aXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoSmF2YVNjcmlwdEV4ZWN1dGlvbkNhbGxiYWNrCiB2
b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNv
bnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNl
SUQsIGludCBsaW5lTnVtYmVyKQogewogICAgIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb24oT3Jk
aW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpm
aXJzdCgpKTsKKwogICAgIG1fY3VycmVudENhbGxGcmFtZSA9IEphdmFTY3JpcHRDYWxsRnJhbWU6
OmNyZWF0ZShkZWJ1Z2dlckNhbGxGcmFtZSwgbV9jdXJyZW50Q2FsbEZyYW1lLCBzb3VyY2VJRCwg
dGV4dFBvc2l0aW9uKTsKICAgICBwYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLmR5bmFt
aWNHbG9iYWxPYmplY3QoKSk7CiB9CkBAIC0zNTksMTYgKzQyNCwyMCBAQCB2b2lkIFNjcmlwdERl
YnVnU2VydmVyOjpwYXVzZUlmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2Jq
ZWN0KQogewogICAgIGlmIChtX3BhdXNlZCkKICAgICAgICAgcmV0dXJuOwotIAogICAgIGlmICgh
Z2V0TGlzdGVuZXJzRm9yR2xvYmFsT2JqZWN0KGR5bmFtaWNHbG9iYWxPYmplY3QpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBib29sIHBhdXNlTm93ID0gbV9wYXVzZU9uTmV4dFN0YXRlbWVudDsK
KyAgICBjb25zdCBUZXh0UG9zaXRpb24gcG9zaXRpb24gPSBtX2N1cnJlbnRDYWxsRnJhbWUtPnBv
c2l0aW9uKCk7CiAgICAgcGF1c2VOb3cgfD0gKG1fcGF1c2VPbkNhbGxGcmFtZSA9PSBtX2N1cnJl
bnRDYWxsRnJhbWUpOwotICAgIHBhdXNlTm93IHw9IGhhc0JyZWFrcG9pbnQobV9jdXJyZW50Q2Fs
bEZyYW1lLT5zb3VyY2VJRCgpLCBtX2N1cnJlbnRDYWxsRnJhbWUtPnBvc2l0aW9uKCkpOworICAg
IHBhdXNlTm93IHw9IGhhc0JyZWFrcG9pbnQobV9jdXJyZW50Q2FsbEZyYW1lLT5zb3VyY2VJRCgp
LCBwb3NpdGlvbik7CiAgICAgaWYgKCFwYXVzZU5vdykKICAgICAgICAgcmV0dXJuOwogCisgICAg
VGV4dFBvc2l0aW9uIGhpdFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21aZXJvQmFzZWRJbnQo
bV9oaXRTY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBPcmRpbmFsTnVtYmVyOjpmcm9tWmVyb0Jhc2VkSW50KG1faGl0U2NyaXB0QnJlYWtw
b2ludC5jb2x1bW5OdW1iZXIpKTsKKyAgICBtX2N1cnJlbnRDYWxsRnJhbWUtPnVwZGF0ZVBvc2l0
aW9uKGhpdFBvc2l0aW9uKTsKKwogICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9IDA7CiAgICAgbV9w
YXVzZU9uTmV4dFN0YXRlbWVudCA9IGZhbHNlOwogICAgIG1fcGF1c2VkID0gdHJ1ZTsKQEAgLTQx
Niw2ICs0ODUsMTAgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmV0dXJuRXZlbnQoY29uc3Qg
RGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLAogICAgIGlmIChtX2N1cnJlbnRD
YWxsRnJhbWUgPT0gbV9wYXVzZU9uQ2FsbEZyYW1lKQogICAgICAgICBtX3BhdXNlT25DYWxsRnJh
bWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlcigpOwogICAgIG1fY3VycmVudENhbGxGcmFt
ZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyKCk7CisKKyAgICBtX2hpdFNjcmlwdEJyZWFr
cG9pbnQubGluZU51bWJlciA9IDA7CisgICAgbV9oaXRTY3JpcHRCcmVha3BvaW50LmNvbHVtbk51
bWJlciAgPSAwOworICAgIG1fbGFzdEhpdFNjcmlwdEJyZWFrcG9pbnRzLmNsZWFyKCk7CiB9CiAK
IHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmV4Y2VwdGlvbihjb25zdCBEZWJ1Z2dlckNhbGxGcmFt
ZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwg
Ym9vbCBoYXNIYW5kbGVyKQpAQCAtNDQ2LDYgKzUxOSwxMCBAQCB2b2lkIFNjcmlwdERlYnVnU2Vy
dmVyOjpkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJD
YWxsRgogICAgIGlmIChtX2N1cnJlbnRDYWxsRnJhbWUgPT0gbV9wYXVzZU9uQ2FsbEZyYW1lKQog
ICAgICAgICBtX3BhdXNlT25DYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlcigp
OwogICAgIG1fY3VycmVudENhbGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyKCk7
CisKKyAgICBtX2hpdFNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciA9IDA7CisgICAgbV9oaXRT
Y3JpcHRCcmVha3BvaW50LmNvbHVtbk51bWJlciAgPSAwOworICAgIG1fbGFzdEhpdFNjcmlwdEJy
ZWFrcG9pbnRzLmNsZWFyKCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlYWNo
QnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGlu
dHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDBlY2Q1YTg3MDc2ZGMxZDVhYzcwMTEx
ODhhMjE5NTM2YmRjZmY2MmEuLmYxMWQyNTU1NWNiMjRiYjRlY2E0ZTdmN2EwMDZkNmJlOWFkM2Y1
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIu
aApAQCAtMTM0LDcgKzEzNCw4IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVh
Y2hCcmVha3BvaW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3Vy
Y2VJRCwgaW50IGxpbmVubyk7CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8UGFnZSosIExpc3RlbmVy
U2V0Kj4gUGFnZUxpc3RlbmVyc01hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8bG9uZywgU2NyaXB0
QnJlYWtwb2ludD4gTGluZVRvQnJlYWtwb2ludE1hcDsKKyAgICB0eXBlZGVmIFZlY3RvcjxTY3Jp
cHRCcmVha3BvaW50PiBCcmVha3BvaW50c0luTGluZTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8bG9u
ZywgQnJlYWtwb2ludHNJbkxpbmU+IExpbmVUb0JyZWFrcG9pbnRNYXA7CiAgICAgdHlwZWRlZiBI
YXNoTWFwPGludHB0cl90LCBMaW5lVG9CcmVha3BvaW50TWFwPiBTb3VyY2VJZFRvQnJlYWtwb2lu
dHNNYXA7CiAKICAgICBQYWdlTGlzdGVuZXJzTWFwIG1fcGFnZUxpc3RlbmVyc01hcDsKQEAgLTE0
OCw2ICsxNDksOSBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+
IG1fY3VycmVudENhbGxGcmFtZTsKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXAgbV9zb3Vy
Y2VJZFRvQnJlYWtwb2ludHM7CiAgICAgVGltZXI8U2NyaXB0RGVidWdTZXJ2ZXI+IG1fcmVjb21w
aWxlVGltZXI7CisKKyAgICBtdXRhYmxlIEJyZWFrcG9pbnRzSW5MaW5lIG1fbGFzdEhpdFNjcmlw
dEJyZWFrcG9pbnRzOworICAgIG11dGFibGUgU2NyaXB0QnJlYWtwb2ludCBtX2hpdFNjcmlwdEJy
ZWFrcG9pbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144450</attachid>
            <date>2012-05-28 23:06:30 -0700</date>
            <delta_ts>2012-05-28 23:19:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120529140626.patch</filename>
            <type>text/plain</type>
            <size>11971</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWVmNmE3ZmEzMDE5YWQ1
MzFhYjEzNWU2ZjczNDBkNjRlOWY5NzU0Yi4uODk1MjZhZDI5NWI3MjgyNzIyYzc3ZjliYjE1Yjdk
ZWNjMDg2ODFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA1LTI4ICBQZXRl
ciBXYW5nICA8cGV0ZXIud2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogW0pTQ10gaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2ludHMgYnkgbGluZTpjb2x1
bW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMDAz
CisKKyAgICAgICAgVGhlIFJJTSBQUiBodHRwczovL2J1Z3ppbGxhLnFueC5jb20vYnVnemlsbGEv
c2hvd19idWcuY2dpP2lkPTE1NDY3NSBpcyBkZXBlbmQgb24gdGhpcyBidWcuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgUm9iIEJ1aXMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmg6CisgICAgICAgIChX
ZWJDb3JlOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjp1cGRhdGVQb3NpdGlvbik6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RGVidWdTZXJ2ZXI6OlNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmJy
ZWFrcG9pbnRPcmRlclNvcnRGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpzZXRCcmVha3BvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdERlYnVnU2VydmVyOjpjbGVhckhpdEJyZWFrcG9pbnRzUmVjb3JkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpwYXVzZUlmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpyZXR1cm5FdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgIChTY3JpcHREZWJ1Z1NlcnZl
cik6CisKIDIwMTItMDUtMjggIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFtWOF0gQXZvaWQgcGFzc2luZyBOVUxMIHRvIGFuICdpc29sYXRlJyBwYXJhbWV0
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxs
RnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUu
aAppbmRleCBhNTgxYzRmYzdiMjdkMmZhYzc5MDZiOGE5ZmIzMDFjNjNmZmIwZGRjLi4zNzZiNGI5
N2YwOTQ3NzhmMTVkZDQ2ZDgyMjVkMGQ2YjE5NzlmOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oCkBAIC01Niw2ICs1Niw3IEBAIHB1
YmxpYzoKIAogICAgIGludHB0cl90IHNvdXJjZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJ
RDsgfQogICAgIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3RleHRQb3NpdGlvbjsgfQorICAgIHZvaWQgdXBkYXRlUG9zaXRpb24oY29uc3QgVGV4dFBvc2l0
aW9uJiBwb3NpdGlvbikgeyBtX3RleHRQb3NpdGlvbiA9IHBvc2l0aW9uOyB9CiAgICAgaW50IGxp
bmUoKSBjb25zdCB7IHJldHVybiBtX3RleHRQb3NpdGlvbi5tX2xpbmUuemVyb0Jhc2VkSW50KCk7
IH0KICAgICBpbnQgY29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0UG9zaXRpb24ubV9jb2x1
bW4uemVyb0Jhc2VkSW50KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDRkZWMxNWVkODM5MWM2OTg3ODFkN2I5ZTA2ZWUw
Y2IyMWYzNTEzNGEuLmJkZjg3M2M4MmM3YWU3NmVhYjUwOWVjNDQ5ZDc1NmFmODkxOGUxNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAK
QEAgLTYwLDYgKzYwLDcgQEAgU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdERlYnVnU2VydmVyKCkK
ICAgICAsIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQodHJ1ZSkKICAgICAsIG1fcGF1c2VPbkNhbGxG
cmFtZSgwKQogICAgICwgbV9yZWNvbXBpbGVUaW1lcih0aGlzLCAmU2NyaXB0RGVidWdTZXJ2ZXI6
OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKQorICAgICwgbV9oaXRTY3JpcHRCcmVha3BvaW50KDAs
IDAsICIiKQogewogfQogCkBAIC02NywyOCArNjgsNDggQEAgU2NyaXB0RGVidWdTZXJ2ZXI6On5T
Y3JpcHREZWJ1Z1NlcnZlcigpCiB7CiB9CiAKK3N0YXRpYyBib29sIGJyZWFrcG9pbnRPcmRlclNv
cnRGdW5jdGlvbihjb25zdCBTY3JpcHRCcmVha3BvaW50JiBoZWFkUG9pbnQsIGNvbnN0IFNjcmlw
dEJyZWFrcG9pbnQmIHJlYXJQb2ludCkKK3sKKyAgICBpZiAoKGhlYWRQb2ludC5saW5lTnVtYmVy
IDwgcmVhclBvaW50LmxpbmVOdW1iZXIpCisgICAgICAgIHx8IChoZWFkUG9pbnQubGluZU51bWJl
ciA9PSByZWFyUG9pbnQubGluZU51bWJlciAmJiBoZWFkUG9pbnQuY29sdW1uTnVtYmVyIDwgcmVh
clBvaW50LmNvbHVtbk51bWJlcikpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJu
IGZhbHNlOworfQorCiBTdHJpbmcgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQoY29u
c3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYgc2NyaXB0QnJlYWtw
b2ludCwgaW50KiBhY3R1YWxMaW5lTnVtYmVyLCBpbnQqIGFjdHVhbENvbHVtbk51bWJlcikKIHsK
ICAgICBpbnRwdHJfdCBzb3VyY2VJRFZhbHVlID0gc291cmNlSUQudG9JbnRQdHIoKTsKICAgICBp
ZiAoIXNvdXJjZUlEVmFsdWUpCiAgICAgICAgIHJldHVybiAiIjsKICAgICBTb3VyY2VJZFRvQnJl
YWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChz
b3VyY2VJRFZhbHVlKTsKKwogICAgIGlmIChpdCA9PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5l
bmQoKSkKLSAgICAgICAgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5zZXQoc291cmNlSURW
YWx1ZSwgTGluZVRvQnJlYWtwb2ludE1hcCgpKS5pdGVyYXRvcjsKLSAgICBpZiAoaXQtPnNlY29u
ZC5jb250YWlucyhzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIgKyAxKSkKLSAgICAgICAgcmV0
dXJuICIiOwotICAgIGl0LT5zZWNvbmQuc2V0KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciAr
IDEsIHNjcmlwdEJyZWFrcG9pbnQpOworICAgICAgICBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9p
bnRzLnNldChzb3VyY2VJRFZhbHVlLCBMaW5lVG9CcmVha3BvaW50TWFwKCkpLmZpcnN0OworICAg
IExpbmVUb0JyZWFrcG9pbnRNYXA6Oml0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5maW5k
KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEpOworICAgIGlmIChicmVha3NJdCA9PSBp
dC0+c2Vjb25kLmVuZCgpKQorICAgICAgICBicmVha3NJdCA9IGl0LT5zZWNvbmQuc2V0KHNjcmlw
dEJyZWFrcG9pbnQubGluZU51bWJlciArIDEsIEJyZWFrcG9pbnRzSW5MaW5lKCkpLmZpcnN0Owor
CisgICAgQnJlYWtwb2ludHNJbkxpbmUmIGJyZWFrc1ZlY3RvciA9IGJyZWFrc0l0LT5zZWNvbmQ7
CisgICAgdW5zaWduZWQgYnJlYWtzQ291bnQgPSBicmVha3NWZWN0b3Iuc2l6ZSgpOworICAgIHVu
c2lnbmVkIGk7CisgICAgZm9yIChpID0gMDsgaSA8IGJyZWFrc0NvdW50OyBpKyspIHsKKyAgICAg
ICAgaWYgKGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5OdW1iZXIgPT0gc2NyaXB0QnJlYWtwb2lu
dC5jb2x1bW5OdW1iZXIpCisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgfQorICAgIGJyZWFr
c1ZlY3Rvci5hcHBlbmQoc2NyaXB0QnJlYWtwb2ludCk7CisgICAgc3RkOjpzb3J0KGJyZWFrc1Zl
Y3Rvci5iZWdpbigpLCBicmVha3NWZWN0b3IuZW5kKCksIGJyZWFrcG9pbnRPcmRlclNvcnRGdW5j
dGlvbik7CisKICAgICAqYWN0dWFsTGluZU51bWJlciA9IHNjcmlwdEJyZWFrcG9pbnQubGluZU51
bWJlcjsKLSAgICAvLyBGSVhNRShXSzUzMDAzKTogaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2lu
dHMgYnkgbGluZTpjb2x1bW4uCi0gICAgKmFjdHVhbENvbHVtbk51bWJlciA9IDA7Ci0gICAgcmV0
dXJuIHNvdXJjZUlEICsgIjoiICsgU3RyaW5nOjpudW1iZXIoc2NyaXB0QnJlYWtwb2ludC5saW5l
TnVtYmVyKTsKKyAgICAqYWN0dWFsQ29sdW1uTnVtYmVyID0gc2NyaXB0QnJlYWtwb2ludC5jb2x1
bW5OdW1iZXI7CisgICAgcmV0dXJuIHNvdXJjZUlEICsgIjoiICsgU3RyaW5nOjpudW1iZXIoc2Ny
aXB0QnJlYWtwb2ludC5saW5lTnVtYmVyKSArICI6IiArIFN0cmluZzo6bnVtYmVyKHNjcmlwdEJy
ZWFrcG9pbnQuY29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVt
b3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkKIHsKICAgICBWZWN0b3I8
U3RyaW5nPiB0b2tlbnM7CiAgICAgYnJlYWtwb2ludElkLnNwbGl0KCI6IiwgdG9rZW5zKTsKLSAg
ICBpZiAodG9rZW5zLnNpemUoKSAhPSAyKQorICAgIGlmICh0b2tlbnMuc2l6ZSgpICE9IDMpCiAg
ICAgICAgIHJldHVybjsKICAgICBib29sIHN1Y2Nlc3M7CiAgICAgaW50cHRyX3Qgc291cmNlSURW
YWx1ZSA9IHRva2Vuc1swXS50b0ludFB0cigmc3VjY2Vzcyk7CkBAIC05Nyw5ICsxMTgsMjUgQEAg
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJy
ZWFrcG9pbnRJZCkKICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyID0gdG9rZW5zWzFdLnRvVUludCgm
c3VjY2Vzcyk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm47CisgICAgdW5zaWdu
ZWQgY29sdW1uTnVtYmVyID0gdG9rZW5zWzJdLnRvVUludCgmc3VjY2Vzcyk7CisgICAgaWYgKCFz
dWNjZXNzKQorICAgICAgICByZXR1cm47CisKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6
Oml0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRFZhbHVl
KTsKLSAgICBpZiAoaXQgIT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAg
IGl0LT5zZWNvbmQucmVtb3ZlKGxpbmVOdW1iZXIgKyAxKTsKKyAgICBpZiAoaXQgPT0gbV9zb3Vy
Y2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBMaW5lVG9CcmVh
a3BvaW50TWFwOjppdGVyYXRvciBicmVha3NJdCA9IGl0LT5zZWNvbmQuZmluZChsaW5lTnVtYmVy
ICsgMSk7CisgICAgaWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIEJyZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+
c2Vjb25kOworICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsK
KyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykgeworICAgICAg
ICBpZiAoYnJlYWtzVmVjdG9yLmF0KGkpLmNvbHVtbk51bWJlciA9PSAoaW50KWNvbHVtbk51bWJl
cikgeworICAgICAgICAgICAgYnJlYWtzVmVjdG9yLnJlbW92ZShpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQogfQogCiBib29sIFNjcmlwdERlYnVnU2VydmVyOjpoYXNC
cmVha3BvaW50KGludHB0cl90IHNvdXJjZUlELCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9u
KSBjb25zdApAQCAtMTEzLDE2ICsxNTAsNDMgQEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFz
QnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3MKICAg
ICBpbnQgbGluZU51bWJlciA9IHBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpOwogICAgIGlm
IChsaW5lTnVtYmVyIDw9IDApCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBMaW5lVG9CcmVh
a3BvaW50TWFwOjpjb25zdF9pdGVyYXRvciBicmVha0l0ID0gaXQtPnNlY29uZC5maW5kKGxpbmVO
dW1iZXIpOwotICAgIGlmIChicmVha0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisKKyAgICBMaW5l
VG9CcmVha3BvaW50TWFwOjpjb25zdF9pdGVyYXRvciBicmVha3NJdCA9IGl0LT5zZWNvbmQuZmlu
ZChsaW5lTnVtYmVyKTsKKyAgICBpZiAoYnJlYWtzSXQgPT0gaXQtPnNlY29uZC5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgYm9vbCBoaXQgPSBmYWxzZTsKKyAgICBjb25zdCBC
cmVha3BvaW50c0luTGluZSYgYnJlYWtzVmVjdG9yID0gYnJlYWtzSXQtPnNlY29uZDsKKyAgICB1
bnNpZ25lZCBicmVha3NDb3VudCA9IGJyZWFrc1ZlY3Rvci5zaXplKCk7CisgICAgdW5zaWduZWQg
aTsKKyAgICB1bnNpZ25lZCBoaXRCcmVha3NDb3VudCA9IG1fbGFzdEhpdFNjcmlwdEJyZWFrcG9p
bnRzLnNpemUoKTsKKyAgICB1bnNpZ25lZCBqOworCisgICAgZm9yIChpID0gMDsgaSA8IGJyZWFr
c0NvdW50OyBpKyspIHsKKyAgICAgICAgaW50IGNvbHVtbiA9IGJyZWFrc1ZlY3Rvci5hdChpKS5j
b2x1bW5OdW1iZXI7CisgICAgICAgIGludCBsaW5lID0gYnJlYWtzVmVjdG9yLmF0KGkpLmxpbmVO
dW1iZXI7CisgICAgICAgIGZvciAoaiA9IDA7IGogPCBoaXRCcmVha3NDb3VudDsgaisrKSB7Cisg
ICAgICAgICAgICBpZiAoY29sdW1uID09IG1fbGFzdEhpdFNjcmlwdEJyZWFrcG9pbnRzLmF0KGop
LmNvbHVtbk51bWJlcgorICAgICAgICAgICAgICAgICYmIGxpbmUgPT0gbV9sYXN0SGl0U2NyaXB0
QnJlYWtwb2ludHMuYXQoaikubGluZU51bWJlcikKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoaiA9PSBoaXRCcmVha3NDb3VudCkgeworICAgICAgICAgICAg
bV9sYXN0SGl0U2NyaXB0QnJlYWtwb2ludHMuYXBwZW5kKGJyZWFrc1ZlY3Rvci5hdChpKSk7Cisg
ICAgICAgICAgICBoaXQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9CisgICAgaWYgKCFoaXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIG1faGl0U2Ny
aXB0QnJlYWtwb2ludCA9IGJyZWFrc1ZlY3Rvci5hdChpKTsKKwogICAgIC8vIEFuIGVtcHR5IGNv
bmRpdGlvbiBjb3VudHMgYXMgbm8gY29uZGl0aW9uIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gInRy
dWUiLgotICAgIGlmIChicmVha0l0LT5zZWNvbmQuY29uZGl0aW9uLmlzRW1wdHkoKSkKKyAgICBp
ZiAobV9oaXRTY3JpcHRCcmVha3BvaW50LmNvbmRpdGlvbi5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCiAgICAgSlNWYWx1ZSBleGNlcHRpb247Ci0gICAgSlNWYWx1ZSByZXN1bHQg
PSBtX2N1cnJlbnRDYWxsRnJhbWUtPmV2YWx1YXRlKHN0cmluZ1RvVVN0cmluZyhicmVha0l0LT5z
ZWNvbmQuY29uZGl0aW9uKSwgZXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IG1fY3Vy
cmVudENhbGxGcmFtZS0+ZXZhbHVhdGUoc3RyaW5nVG9VU3RyaW5nKG1faGl0U2NyaXB0QnJlYWtw
b2ludC5jb25kaXRpb24pLCBleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pIHsKICAgICAg
ICAgLy8gQW4gZXJyb25lb3VzIGNvbmRpdGlvbiBjb3VudHMgYXMgImZhbHNlIi4KICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTMwLDYgKzE5NCwxNCBAQCBib29sIFNjcmlwdERlYnVnU2VydmVy
OjpoYXNCcmVha3BvaW50KGludHB0cl90IHNvdXJjZUlELCBjb25zdCBUZXh0UG9zaXRpb24mIHBv
cwogICAgIHJldHVybiByZXN1bHQudG9Cb29sZWFuKCk7CiB9CiAKKwordm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6Y2xlYXJIaXRCcmVha3BvaW50c1JlY29yZCgpCit7CisgICAgbV9oaXRTY3JpcHRC
cmVha3BvaW50LmxpbmVOdW1iZXIgPSAwOworICAgIG1faGl0U2NyaXB0QnJlYWtwb2ludC5jb2x1
bW5OdW1iZXIgPSAwOworICAgIG1fbGFzdEhpdFNjcmlwdEJyZWFrcG9pbnRzLmNsZWFyKCk7Cit9
CisKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNsZWFyQnJlYWtwb2ludHMoKQogewogICAgIG1f
c291cmNlSWRUb0JyZWFrcG9pbnRzLmNsZWFyKCk7CkBAIC0zNjMsMTEgKzQzNSwxNiBAQCB2b2lk
IFNjcmlwdERlYnVnU2VydmVyOjpwYXVzZUlmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBkeW5hbWlj
R2xvYmFsT2JqZWN0KQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIHBhdXNlTm93ID0gbV9w
YXVzZU9uTmV4dFN0YXRlbWVudDsKKyAgICBjb25zdCBUZXh0UG9zaXRpb24gcG9zaXRpb24gPSBt
X2N1cnJlbnRDYWxsRnJhbWUtPnBvc2l0aW9uKCk7CiAgICAgcGF1c2VOb3cgfD0gKG1fcGF1c2VP
bkNhbGxGcmFtZSA9PSBtX2N1cnJlbnRDYWxsRnJhbWUpOwotICAgIHBhdXNlTm93IHw9IGhhc0Jy
ZWFrcG9pbnQobV9jdXJyZW50Q2FsbEZyYW1lLT5zb3VyY2VJRCgpLCBtX2N1cnJlbnRDYWxsRnJh
bWUtPnBvc2l0aW9uKCkpOworICAgIHBhdXNlTm93IHw9IGhhc0JyZWFrcG9pbnQobV9jdXJyZW50
Q2FsbEZyYW1lLT5zb3VyY2VJRCgpLCBwb3NpdGlvbik7CiAgICAgaWYgKCFwYXVzZU5vdykKICAg
ICAgICAgcmV0dXJuOwogCisgICAgVGV4dFBvc2l0aW9uIGhpdFBvc2l0aW9uKE9yZGluYWxOdW1i
ZXI6OmZyb21aZXJvQmFzZWRJbnQobV9oaXRTY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRpbmFsTnVtYmVyOjpmcm9tWmVyb0Jhc2Vk
SW50KG1faGl0U2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXIpKTsKKyAgICBtX2N1cnJlbnRD
YWxsRnJhbWUtPnVwZGF0ZVBvc2l0aW9uKGhpdFBvc2l0aW9uKTsKKwogICAgIG1fcGF1c2VPbkNh
bGxGcmFtZSA9IDA7CiAgICAgbV9wYXVzZU9uTmV4dFN0YXRlbWVudCA9IGZhbHNlOwogICAgIG1f
cGF1c2VkID0gdHJ1ZTsKQEAgLTQxNSw2ICs0OTIsOCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVy
OjpyZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUs
CiAgICAgaWYgKG1fY3VycmVudENhbGxGcmFtZSA9PSBtX3BhdXNlT25DYWxsRnJhbWUpCiAgICAg
ICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyKCk7CiAg
ICAgbV9jdXJyZW50Q2FsbEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxsZXIoKTsKKwor
ICAgIGNsZWFySGl0QnJlYWtwb2ludHNSZWNvcmQoKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6ZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFt
ZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpCkBA
IC00NDUsNiArNTI0LDggQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dy
YW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEYKICAgICBpZiAobV9jdXJy
ZW50Q2FsbEZyYW1lID09IG1fcGF1c2VPbkNhbGxGcmFtZSkKICAgICAgICAgbV9wYXVzZU9uQ2Fs
bEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxsZXIoKTsKICAgICBtX2N1cnJlbnRDYWxs
RnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlcigpOworCisgICAgY2xlYXJIaXRCcmVh
a3BvaW50c1JlY29yZCgpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaWRSZWFjaEJy
ZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBmZDBhOGJjMzQ4ODMyM2RiNjFkODFiZmUx
NzNiYzRiNWI0M2EzNmFjLi45MTU2NDc1MDUxMjY3MDZjMmQ4MjEzYzI4ZjE4ZDQzY2Q4M2YwZTYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgK
QEAgLTYxLDYgKzYxLDcgQEAgY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXIgOiBwcm90ZWN0ZWQgSlND
OjpEZWJ1Z2dlciB7CiBwdWJsaWM6CiAgICAgU3RyaW5nIHNldEJyZWFrcG9pbnQoY29uc3QgU3Ry
aW5nJiBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYsIGludCogYWN0dWFsTGluZU51
bWJlciwgaW50KiBhY3R1YWxDb2x1bW5OdW1iZXIpOwogICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2lu
dChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCk7CisgICAgdm9pZCBjbGVhckhpdEJyZWFrcG9p
bnRzUmVjb3JkKCk7CiAgICAgdm9pZCBjbGVhckJyZWFrcG9pbnRzKCk7CiAgICAgdm9pZCBzZXRC
cmVha3BvaW50c0FjdGl2YXRlZChib29sIGFjdGl2YXRlZCk7CiAgICAgdm9pZCBhY3RpdmF0ZUJy
ZWFrcG9pbnRzKCkgeyBzZXRCcmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKTsgfQpAQCAtMTMzLDcg
KzEzNCw5IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRXhlY3V0ZVByb2dyYW0o
Y29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGlu
ZW5vKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0IEpTQzo6RGVi
dWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubyk7CiAKLSAgICB0
eXBlZGVmIEhhc2hNYXA8bG9uZywgU2NyaXB0QnJlYWtwb2ludD4gTGluZVRvQnJlYWtwb2ludE1h
cDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UGFnZSosIExpc3RlbmVyU2V0Kj4gUGFnZUxpc3RlbmVy
c01hcDsKKyAgICB0eXBlZGVmIFZlY3RvcjxTY3JpcHRCcmVha3BvaW50PiBCcmVha3BvaW50c0lu
TGluZTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8bG9uZywgQnJlYWtwb2ludHNJbkxpbmU+IExpbmVU
b0JyZWFrcG9pbnRNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludHB0cl90LCBMaW5lVG9CcmVh
a3BvaW50TWFwPiBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA7CiAKICAgICBib29sIG1fY2FsbGlu
Z0xpc3RlbmVyczsKQEAgLTE0Niw2ICsxNDksOSBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEph
dmFTY3JpcHRDYWxsRnJhbWU+IG1fY3VycmVudENhbGxGcmFtZTsKICAgICBTb3VyY2VJZFRvQnJl
YWtwb2ludHNNYXAgbV9zb3VyY2VJZFRvQnJlYWtwb2ludHM7CiAgICAgVGltZXI8U2NyaXB0RGVi
dWdTZXJ2ZXI+IG1fcmVjb21waWxlVGltZXI7CisKKyAgICBtdXRhYmxlIEJyZWFrcG9pbnRzSW5M
aW5lIG1fbGFzdEhpdFNjcmlwdEJyZWFrcG9pbnRzOworICAgIG11dGFibGUgU2NyaXB0QnJlYWtw
b2ludCBtX2hpdFNjcmlwdEJyZWFrcG9pbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144453</attachid>
            <date>2012-05-28 23:19:36 -0700</date>
            <delta_ts>2012-05-29 04:52:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120529141933.patch</filename>
            <type>text/plain</type>
            <size>11979</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWVmNmE3ZmEzMDE5YWQ1
MzFhYjEzNWU2ZjczNDBkNjRlOWY5NzU0Yi4uZTFlOWIyYzJiMGRhNmNkNTk1YWE3YTk5ZDk0Y2Nm
NGM3NzkxZTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA1LTI4ICBQZXRl
ciBXYW5nICA8cGV0ZXIud2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogW0pTQ10gaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2ludHMgYnkgbGluZTpjb2x1
bW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMDAz
CisKKyAgICAgICAgVGhlIFJJTSBQUiBodHRwczovL2J1Z3ppbGxhLnFueC5jb20vYnVnemlsbGEv
c2hvd19idWcuY2dpP2lkPTE1NDY3NSBpcyBkZXBlbmQgb24gdGhpcyBidWcuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgUm9iIEJ1aXMuCisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRDYWxsRnJhbWU6OnVwZGF0ZVBvc2l0aW9uKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6YnJlYWtwb2ludE9yZGVyU29ydEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0JyZWFrcG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNsZWFySGl0QnJlYWtwb2ludHNSZWNvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlSWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpkaWRFeGVjdXRlUHJvZ3JhbSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERl
YnVnU2VydmVyKToKKwogMjAxMi0wNS0yOCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW1Y4XSBBdm9pZCBwYXNzaW5nIE5VTEwgdG8gYW4gJ2lzb2xhdGUn
IHBhcmFtZXRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNj
cmlwdENhbGxGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENh
bGxGcmFtZS5oCmluZGV4IGE1ODFjNGZjN2IyN2QyZmFjNzkwNmI4YTlmYjMwMWM2M2ZmYjBkZGMu
LjM3NmI0Yjk3ZjA5NDc3OGYxNWRkNDZkODIyNWQwZDZiMTk3OWY5MzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgKQEAgLTU2LDYgKzU2
LDcgQEAgcHVibGljOgogCiAgICAgaW50cHRyX3Qgc291cmNlSUQoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZUlEOyB9CiAgICAgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dFBvc2l0aW9uOyB9CisgICAgdm9pZCB1cGRhdGVQb3NpdGlvbihjb25zdCBU
ZXh0UG9zaXRpb24mIHBvc2l0aW9uKSB7IG1fdGV4dFBvc2l0aW9uID0gcG9zaXRpb247IH0KICAg
ICBpbnQgbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dFBvc2l0aW9uLm1fbGluZS56ZXJvQmFz
ZWRJbnQoKTsgfQogICAgIGludCBjb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3RleHRQb3NpdGlv
bi5tX2NvbHVtbi56ZXJvQmFzZWRJbnQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggNGRlYzE1ZWQ4MzkxYzY5ODc4MWQ3
YjllMDZlZTBjYjIxZjM1MTM0YS4uYmRmODczYzgyYzdhZTc2ZWFiNTA5ZWM0NDlkNzU2YWY4OTE4
ZTE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmNwcApAQCAtNjAsNiArNjAsNyBAQCBTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0RGVidWdT
ZXJ2ZXIoKQogICAgICwgbV9icmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKQogICAgICwgbV9wYXVz
ZU9uQ2FsbEZyYW1lKDApCiAgICAgLCBtX3JlY29tcGlsZVRpbWVyKHRoaXMsICZTY3JpcHREZWJ1
Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMpCisgICAgLCBtX2hpdFNjcmlwdEJyZWFr
cG9pbnQoMCwgMCwgIiIpCiB7CiB9CiAKQEAgLTY3LDI4ICs2OCw0OCBAQCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6flNjcmlwdERlYnVnU2VydmVyKCkKIHsKIH0KIAorc3RhdGljIGJvb2wgYnJlYWtwb2lu
dE9yZGVyU29ydEZ1bmN0aW9uKGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmIGhlYWRQb2ludCwgY29u
c3QgU2NyaXB0QnJlYWtwb2ludCYgcmVhclBvaW50KQoreworICAgIGlmICgoaGVhZFBvaW50Lmxp
bmVOdW1iZXIgPCByZWFyUG9pbnQubGluZU51bWJlcikKKyAgICAgICAgfHwgKGhlYWRQb2ludC5s
aW5lTnVtYmVyID09IHJlYXJQb2ludC5saW5lTnVtYmVyICYmIGhlYWRQb2ludC5jb2x1bW5OdW1i
ZXIgPCByZWFyUG9pbnQuY29sdW1uTnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIFN0cmluZyBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtw
b2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiBzY3Jp
cHRCcmVha3BvaW50LCBpbnQqIGFjdHVhbExpbmVOdW1iZXIsIGludCogYWN0dWFsQ29sdW1uTnVt
YmVyKQogewogICAgIGludHB0cl90IHNvdXJjZUlEVmFsdWUgPSBzb3VyY2VJRC50b0ludFB0cigp
OwogICAgIGlmICghc291cmNlSURWYWx1ZSkKICAgICAgICAgcmV0dXJuICIiOwogICAgIFNvdXJj
ZUlkVG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50
cy5maW5kKHNvdXJjZUlEVmFsdWUpOworCiAgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFr
cG9pbnRzLmVuZCgpKQotICAgICAgICBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLnNldChz
b3VyY2VJRFZhbHVlLCBMaW5lVG9CcmVha3BvaW50TWFwKCkpLml0ZXJhdG9yOwotICAgIGlmIChp
dC0+c2Vjb25kLmNvbnRhaW5zKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEpKQotICAg
ICAgICByZXR1cm4gIiI7Ci0gICAgaXQtPnNlY29uZC5zZXQoc2NyaXB0QnJlYWtwb2ludC5saW5l
TnVtYmVyICsgMSwgc2NyaXB0QnJlYWtwb2ludCk7CisgICAgICAgIGl0ID0gbV9zb3VyY2VJZFRv
QnJlYWtwb2ludHMuc2V0KHNvdXJjZUlEVmFsdWUsIExpbmVUb0JyZWFrcG9pbnRNYXAoKSkuZmly
c3Q7CisgICAgTGluZVRvQnJlYWtwb2ludE1hcDo6aXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+c2Vj
b25kLmZpbmQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGJyZWFr
c0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisgICAgICAgIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5z
ZXQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSwgQnJlYWtwb2ludHNJbkxpbmUoKSku
Zmlyc3Q7CisKKyAgICBCcmVha3BvaW50c0luTGluZSYgYnJlYWtzVmVjdG9yID0gYnJlYWtzSXQt
PnNlY29uZDsKKyAgICB1bnNpZ25lZCBicmVha3NDb3VudCA9IGJyZWFrc1ZlY3Rvci5zaXplKCk7
CisgICAgdW5zaWduZWQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykg
eworICAgICAgICBpZiAoYnJlYWtzVmVjdG9yLmF0KGkpLmNvbHVtbk51bWJlciA9PSBzY3JpcHRC
cmVha3BvaW50LmNvbHVtbk51bWJlcikKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICB9Cisg
ICAgYnJlYWtzVmVjdG9yLmFwcGVuZChzY3JpcHRCcmVha3BvaW50KTsKKyAgICBzdGQ6OnNvcnQo
YnJlYWtzVmVjdG9yLmJlZ2luKCksIGJyZWFrc1ZlY3Rvci5lbmQoKSwgYnJlYWtwb2ludE9yZGVy
U29ydEZ1bmN0aW9uKTsKKwogICAgICphY3R1YWxMaW5lTnVtYmVyID0gc2NyaXB0QnJlYWtwb2lu
dC5saW5lTnVtYmVyOwotICAgIC8vIEZJWE1FKFdLNTMwMDMpOiBpbXBsZW1lbnQgc2V0dGluZyBi
cmVha3BvaW50cyBieSBsaW5lOmNvbHVtbi4KLSAgICAqYWN0dWFsQ29sdW1uTnVtYmVyID0gMDsK
LSAgICByZXR1cm4gc291cmNlSUQgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihzY3JpcHRCcmVha3Bv
aW50LmxpbmVOdW1iZXIpOworICAgICphY3R1YWxDb2x1bW5OdW1iZXIgPSBzY3JpcHRCcmVha3Bv
aW50LmNvbHVtbk51bWJlcjsKKyAgICByZXR1cm4gc291cmNlSUQgKyAiOiIgKyBTdHJpbmc6Om51
bWJlcihzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIpICsgIjoiICsgU3RyaW5nOjpudW1iZXIo
c2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXIpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2Vy
dmVyOjpyZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKQogewogICAg
IFZlY3RvcjxTdHJpbmc+IHRva2VuczsKICAgICBicmVha3BvaW50SWQuc3BsaXQoIjoiLCB0b2tl
bnMpOwotICAgIGlmICh0b2tlbnMuc2l6ZSgpICE9IDIpCisgICAgaWYgKHRva2Vucy5zaXplKCkg
IT0gMykKICAgICAgICAgcmV0dXJuOwogICAgIGJvb2wgc3VjY2VzczsKICAgICBpbnRwdHJfdCBz
b3VyY2VJRFZhbHVlID0gdG9rZW5zWzBdLnRvSW50UHRyKCZzdWNjZXNzKTsKQEAgLTk3LDkgKzEx
OCwyNSBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0
cmluZyYgYnJlYWtwb2ludElkKQogICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIgPSB0b2tlbnNbMV0u
dG9VSW50KCZzdWNjZXNzKTsKICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgIHJldHVybjsKKyAg
ICB1bnNpZ25lZCBjb2x1bW5OdW1iZXIgPSB0b2tlbnNbMl0udG9VSW50KCZzdWNjZXNzKTsKKyAg
ICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybjsKKwogICAgIFNvdXJjZUlkVG9CcmVha3Bv
aW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5maW5kKHNvdXJj
ZUlEVmFsdWUpOwotICAgIGlmIChpdCAhPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkK
LSAgICAgICAgaXQtPnNlY29uZC5yZW1vdmUobGluZU51bWJlciArIDEpOworICAgIGlmIChpdCA9
PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIExp
bmVUb0JyZWFrcG9pbnRNYXA6Oml0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5maW5kKGxp
bmVOdW1iZXIgKyAxKTsKKyAgICBpZiAoYnJlYWtzSXQgPT0gaXQtPnNlY29uZC5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQnJlYWtwb2ludHNJbkxpbmUmIGJyZWFrc1ZlY3RvciA9IGJy
ZWFrc0l0LT5zZWNvbmQ7CisgICAgdW5zaWduZWQgYnJlYWtzQ291bnQgPSBicmVha3NWZWN0b3Iu
c2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBicmVha3NDb3VudDsgaSsrKSB7
CisgICAgICAgIGlmIChicmVha3NWZWN0b3IuYXQoaSkuY29sdW1uTnVtYmVyID09IChpbnQpY29s
dW1uTnVtYmVyKSB7CisgICAgICAgICAgICBicmVha3NWZWN0b3IucmVtb3ZlKGkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIGJvb2wgU2NyaXB0RGVidWdTZXJ2
ZXI6Omhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYg
cG9zaXRpb24pIGNvbnN0CkBAIC0xMTMsMTYgKzE1MCw0MyBAQCBib29sIFNjcmlwdERlYnVnU2Vy
dmVyOjpoYXNCcmVha3BvaW50KGludHB0cl90IHNvdXJjZUlELCBjb25zdCBUZXh0UG9zaXRpb24m
IHBvcwogICAgIGludCBsaW5lTnVtYmVyID0gcG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCk7
CiAgICAgaWYgKGxpbmVOdW1iZXIgPD0gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIExp
bmVUb0JyZWFrcG9pbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGJyZWFrSXQgPSBpdC0+c2Vjb25kLmZp
bmQobGluZU51bWJlcik7Ci0gICAgaWYgKGJyZWFrSXQgPT0gaXQtPnNlY29uZC5lbmQoKSkKKwor
ICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnNl
Y29uZC5maW5kKGxpbmVOdW1iZXIpOworICAgIGlmIChicmVha3NJdCA9PSBpdC0+c2Vjb25kLmVu
ZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIGhpdCA9IGZhbHNlOworICAg
IGNvbnN0IEJyZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25k
OworICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKKyAgICB1
bnNpZ25lZCBpOworICAgIHVuc2lnbmVkIGhpdEJyZWFrc0NvdW50ID0gbV9sYXN0SGl0U2NyaXB0
QnJlYWtwb2ludHMuc2l6ZSgpOworICAgIHVuc2lnbmVkIGo7CisKKyAgICBmb3IgKGkgPSAwOyBp
IDwgYnJlYWtzQ291bnQ7IGkrKykgeworICAgICAgICBpbnQgY29sdW1uID0gYnJlYWtzVmVjdG9y
LmF0KGkpLmNvbHVtbk51bWJlcjsKKyAgICAgICAgaW50IGxpbmUgPSBicmVha3NWZWN0b3IuYXQo
aSkubGluZU51bWJlcjsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IGhpdEJyZWFrc0NvdW50OyBq
KyspIHsKKyAgICAgICAgICAgIGlmIChjb2x1bW4gPT0gbV9sYXN0SGl0U2NyaXB0QnJlYWtwb2lu
dHMuYXQoaikuY29sdW1uTnVtYmVyCisgICAgICAgICAgICAgICAgJiYgbGluZSA9PSBtX2xhc3RI
aXRTY3JpcHRCcmVha3BvaW50cy5hdChqKS5saW5lTnVtYmVyKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGlmIChqID09IGhpdEJyZWFrc0NvdW50KSB7CisgICAg
ICAgICAgICBtX2xhc3RIaXRTY3JpcHRCcmVha3BvaW50cy5hcHBlbmQoYnJlYWtzVmVjdG9yLmF0
KGkpKTsKKyAgICAgICAgICAgIGhpdCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBpZiAoIWhpdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAg
bV9oaXRTY3JpcHRCcmVha3BvaW50ID0gYnJlYWtzVmVjdG9yLmF0KGkpOworCiAgICAgLy8gQW4g
ZW1wdHkgY29uZGl0aW9uIGNvdW50cyBhcyBubyBjb25kaXRpb24gd2hpY2ggaXMgZXF1aXZhbGVu
dCB0byAidHJ1ZSIuCi0gICAgaWYgKGJyZWFrSXQtPnNlY29uZC5jb25kaXRpb24uaXNFbXB0eSgp
KQorICAgIGlmIChtX2hpdFNjcmlwdEJyZWFrcG9pbnQuY29uZGl0aW9uLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKLSAgICBKU1ZhbHVl
IHJlc3VsdCA9IG1fY3VycmVudENhbGxGcmFtZS0+ZXZhbHVhdGUoc3RyaW5nVG9VU3RyaW5nKGJy
ZWFrSXQtPnNlY29uZC5jb25kaXRpb24pLCBleGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5ldmFsdWF0ZShzdHJpbmdUb1VTdHJpbmcobV9oaXRTY3Jp
cHRCcmVha3BvaW50LmNvbmRpdGlvbiksIGV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikg
ewogICAgICAgICAvLyBBbiBlcnJvbmVvdXMgY29uZGl0aW9uIGNvdW50cyBhcyAiZmFsc2UiLgog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzAsNiArMTk0LDE0IEBAIGJvb2wgU2NyaXB0RGVi
dWdTZXJ2ZXI6Omhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3Np
dGlvbiYgcG9zCiAgICAgcmV0dXJuIHJlc3VsdC50b0Jvb2xlYW4oKTsKIH0KIAorCit2b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpjbGVhckhpdEJyZWFrcG9pbnRzUmVjb3JkKCkKK3sKKyAgICBtX2hp
dFNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciA9IDA7CisgICAgbV9oaXRTY3JpcHRCcmVha3Bv
aW50LmNvbHVtbk51bWJlciA9IDA7CisgICAgbV9sYXN0SGl0U2NyaXB0QnJlYWtwb2ludHMuY2xl
YXIoKTsKK30KKwogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2xlYXJCcmVha3BvaW50cygpCiB7
CiAgICAgbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuY2xlYXIoKTsKQEAgLTM2MywxMSArNDM1LDE2
IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlSWZOZWVkZWQoSlNHbG9iYWxPYmplY3Qq
IGR5bmFtaWNHbG9iYWxPYmplY3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgcGF1c2VO
b3cgPSBtX3BhdXNlT25OZXh0U3RhdGVtZW50OworICAgIGNvbnN0IFRleHRQb3NpdGlvbiBwb3Np
dGlvbiA9IG1fY3VycmVudENhbGxGcmFtZS0+cG9zaXRpb24oKTsKICAgICBwYXVzZU5vdyB8PSAo
bV9wYXVzZU9uQ2FsbEZyYW1lID09IG1fY3VycmVudENhbGxGcmFtZSk7Ci0gICAgcGF1c2VOb3cg
fD0gaGFzQnJlYWtwb2ludChtX2N1cnJlbnRDYWxsRnJhbWUtPnNvdXJjZUlEKCksIG1fY3VycmVu
dENhbGxGcmFtZS0+cG9zaXRpb24oKSk7CisgICAgcGF1c2VOb3cgfD0gaGFzQnJlYWtwb2ludCht
X2N1cnJlbnRDYWxsRnJhbWUtPnNvdXJjZUlEKCksIHBvc2l0aW9uKTsKICAgICBpZiAoIXBhdXNl
Tm93KQogICAgICAgICByZXR1cm47CiAKKyAgICBUZXh0UG9zaXRpb24gaGl0UG9zaXRpb24oT3Jk
aW5hbE51bWJlcjo6ZnJvbVplcm9CYXNlZEludChtX2hpdFNjcmlwdEJyZWFrcG9pbnQubGluZU51
bWJlciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGluYWxOdW1iZXI6OmZyb21a
ZXJvQmFzZWRJbnQobV9oaXRTY3JpcHRCcmVha3BvaW50LmNvbHVtbk51bWJlcikpOworICAgIG1f
Y3VycmVudENhbGxGcmFtZS0+dXBkYXRlUG9zaXRpb24oaGl0UG9zaXRpb24pOworCiAgICAgbV9w
YXVzZU9uQ2FsbEZyYW1lID0gMDsKICAgICBtX3BhdXNlT25OZXh0U3RhdGVtZW50ID0gZmFsc2U7
CiAgICAgbV9wYXVzZWQgPSB0cnVlOwpAQCAtNDE1LDYgKzQ5Miw4IEBAIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OnJldHVybkV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNh
bGxGcmFtZSwKICAgICBpZiAobV9jdXJyZW50Q2FsbEZyYW1lID09IG1fcGF1c2VPbkNhbGxGcmFt
ZSkKICAgICAgICAgbV9wYXVzZU9uQ2FsbEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxs
ZXIoKTsKICAgICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxl
cigpOworCisgICAgY2xlYXJIaXRCcmVha3BvaW50c1JlY29yZCgpOwogfQogCiB2b2lkIFNjcmlw
dERlYnVnU2VydmVyOjpleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFu
ZGxlcikKQEAgLTQ0NSw2ICs1MjQsOCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaWRFeGVj
dXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRgogICAgIGlm
IChtX2N1cnJlbnRDYWxsRnJhbWUgPT0gbV9wYXVzZU9uQ2FsbEZyYW1lKQogICAgICAgICBtX3Bh
dXNlT25DYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlcigpOwogICAgIG1fY3Vy
cmVudENhbGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyKCk7CisKKyAgICBjbGVh
ckhpdEJyZWFrcG9pbnRzUmVjb3JkKCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRp
ZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJh
bWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IGZkMGE4YmMzNDg4MzIzZGI2
MWQ4MWJmZTE3M2JjNGI1YjQzYTM2YWMuLjkxNTY0NzUwNTEyNjcwNmMyZDgyMTNjMjhmMThkNDNj
ZDgzZjBlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERl
YnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdT
ZXJ2ZXIuaApAQCAtNjEsNiArNjEsNyBAQCBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlciA6IHByb3Rl
Y3RlZCBKU0M6OkRlYnVnZ2VyIHsKIHB1YmxpYzoKICAgICBTdHJpbmcgc2V0QnJlYWtwb2ludChj
b25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiwgaW50KiBhY3R1
YWxMaW5lTnVtYmVyLCBpbnQqIGFjdHVhbENvbHVtbk51bWJlcik7CiAgICAgdm9pZCByZW1vdmVC
cmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKTsKKyAgICB2b2lkIGNsZWFySGl0
QnJlYWtwb2ludHNSZWNvcmQoKTsKICAgICB2b2lkIGNsZWFyQnJlYWtwb2ludHMoKTsKICAgICB2
b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZhdGVkKGJvb2wgYWN0aXZhdGVkKTsKICAgICB2b2lkIGFj
dGl2YXRlQnJlYWtwb2ludHMoKSB7IHNldEJyZWFrcG9pbnRzQWN0aXZhdGVkKHRydWUpOyB9CkBA
IC0xMzMsNyArMTM0LDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRl
UHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lbm8pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3Qg
SlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vKTsK
IAotICAgIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBTY3JpcHRCcmVha3BvaW50PiBMaW5lVG9CcmVh
a3BvaW50TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxQYWdlKiwgTGlzdGVuZXJTZXQqPiBQYWdl
TGlzdGVuZXJzTWFwOworICAgIHR5cGVkZWYgVmVjdG9yPFNjcmlwdEJyZWFrcG9pbnQ+IEJyZWFr
cG9pbnRzSW5MaW5lOworICAgIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBCcmVha3BvaW50c0luTGlu
ZT4gTGluZVRvQnJlYWtwb2ludE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIExp
bmVUb0JyZWFrcG9pbnRNYXA+IFNvdXJjZUlkVG9CcmVha3BvaW50c01hcDsKIAogICAgIGJvb2wg
bV9jYWxsaW5nTGlzdGVuZXJzOwpAQCAtMTQ2LDYgKzE0OSw5IEBAIHByb3RlY3RlZDoKICAgICBS
ZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gbV9jdXJyZW50Q2FsbEZyYW1lOwogICAgIFNvdXJj
ZUlkVG9CcmVha3BvaW50c01hcCBtX3NvdXJjZUlkVG9CcmVha3BvaW50czsKICAgICBUaW1lcjxT
Y3JpcHREZWJ1Z1NlcnZlcj4gbV9yZWNvbXBpbGVUaW1lcjsKKworICAgIG11dGFibGUgQnJlYWtw
b2ludHNJbkxpbmUgbV9sYXN0SGl0U2NyaXB0QnJlYWtwb2ludHM7CisgICAgbXV0YWJsZSBTY3Jp
cHRCcmVha3BvaW50IG1faGl0U2NyaXB0QnJlYWtwb2ludDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144524</attachid>
            <date>2012-05-29 04:53:18 -0700</date>
            <delta_ts>2012-06-05 01:54:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120529195311.patch</filename>
            <type>text/plain</type>
            <size>11895</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWVmNmE3ZmEzMDE5YWQ1
MzFhYjEzNWU2ZjczNDBkNjRlOWY5NzU0Yi4uZTFlOWIyYzJiMGRhNmNkNTk1YWE3YTk5ZDk0Y2Nm
NGM3NzkxZTNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTA1LTI4ICBQZXRl
ciBXYW5nICA8cGV0ZXIud2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogW0pTQ10gaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2ludHMgYnkgbGluZTpjb2x1
bW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMDAz
CisKKyAgICAgICAgVGhlIFJJTSBQUiBodHRwczovL2J1Z3ppbGxhLnFueC5jb20vYnVnemlsbGEv
c2hvd19idWcuY2dpP2lkPTE1NDY3NSBpcyBkZXBlbmQgb24gdGhpcyBidWcuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgUm9iIEJ1aXMuCisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkphdmFTY3JpcHRDYWxsRnJhbWU6OnVwZGF0ZVBvc2l0aW9uKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6YnJlYWtwb2ludE9yZGVyU29ydEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0JyZWFrcG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNsZWFySGl0QnJlYWtwb2ludHNSZWNvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlSWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpkaWRFeGVjdXRlUHJvZ3JhbSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERl
YnVnU2VydmVyKToKKwogMjAxMi0wNS0yOCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW1Y4XSBBdm9pZCBwYXNzaW5nIE5VTEwgdG8gYW4gJ2lzb2xhdGUn
IHBhcmFtZXRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNj
cmlwdENhbGxGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENh
bGxGcmFtZS5oCmluZGV4IGE1ODFjNGZjN2IyN2QyZmFjNzkwNmI4YTlmYjMwMWM2M2ZmYjBkZGMu
LjM3NmI0Yjk3ZjA5NDc3OGYxNWRkNDZkODIyNWQwZDZiMTk3OWY5MzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgKQEAgLTU2LDYgKzU2
LDcgQEAgcHVibGljOgogCiAgICAgaW50cHRyX3Qgc291cmNlSUQoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZUlEOyB9CiAgICAgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdGV4dFBvc2l0aW9uOyB9CisgICAgdm9pZCB1cGRhdGVQb3NpdGlvbihjb25zdCBU
ZXh0UG9zaXRpb24mIHBvc2l0aW9uKSB7IG1fdGV4dFBvc2l0aW9uID0gcG9zaXRpb247IH0KICAg
ICBpbnQgbGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dFBvc2l0aW9uLm1fbGluZS56ZXJvQmFz
ZWRJbnQoKTsgfQogICAgIGludCBjb2x1bW4oKSBjb25zdCB7IHJldHVybiBtX3RleHRQb3NpdGlv
bi5tX2NvbHVtbi56ZXJvQmFzZWRJbnQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggNGRlYzE1ZWQ4MzkxYzY5ODc4MWQ3
YjllMDZlZTBjYjIxZjM1MTM0YS4uMTFhZmEyOWFkOGRiZDU2MzA4ZDMyZTViZTNiNDZjN2I1ZDE3
YTFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmNwcApAQCAtNjAsNiArNjAsNyBAQCBTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0RGVidWdT
ZXJ2ZXIoKQogICAgICwgbV9icmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKQogICAgICwgbV9wYXVz
ZU9uQ2FsbEZyYW1lKDApCiAgICAgLCBtX3JlY29tcGlsZVRpbWVyKHRoaXMsICZTY3JpcHREZWJ1
Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMpCisgICAgLCBtX2hpdFNjcmlwdEJyZWFr
cG9pbnQoMCwgMCwgIiIpCiB7CiB9CiAKQEAgLTY3LDI4ICs2OCw0OCBAQCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6flNjcmlwdERlYnVnU2VydmVyKCkKIHsKIH0KIAorc3RhdGljIGJvb2wgYnJlYWtwb2lu
dE9yZGVyU29ydEZ1bmN0aW9uKGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmIGhlYWRQb2ludCwgY29u
c3QgU2NyaXB0QnJlYWtwb2ludCYgcmVhclBvaW50KQoreworICAgIGlmICgoaGVhZFBvaW50Lmxp
bmVOdW1iZXIgPCByZWFyUG9pbnQubGluZU51bWJlcikKKyAgICAgICAgfHwgKGhlYWRQb2ludC5s
aW5lTnVtYmVyID09IHJlYXJQb2ludC5saW5lTnVtYmVyICYmIGhlYWRQb2ludC5jb2x1bW5OdW1i
ZXIgPCByZWFyUG9pbnQuY29sdW1uTnVtYmVyKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKIFN0cmluZyBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtw
b2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiBzY3Jp
cHRCcmVha3BvaW50LCBpbnQqIGFjdHVhbExpbmVOdW1iZXIsIGludCogYWN0dWFsQ29sdW1uTnVt
YmVyKQogewogICAgIGludHB0cl90IHNvdXJjZUlEVmFsdWUgPSBzb3VyY2VJRC50b0ludFB0cigp
OwogICAgIGlmICghc291cmNlSURWYWx1ZSkKICAgICAgICAgcmV0dXJuICIiOwogICAgIFNvdXJj
ZUlkVG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50
cy5maW5kKHNvdXJjZUlEVmFsdWUpOworCiAgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFr
cG9pbnRzLmVuZCgpKQogICAgICAgICBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLnNldChz
b3VyY2VJRFZhbHVlLCBMaW5lVG9CcmVha3BvaW50TWFwKCkpLml0ZXJhdG9yOwotICAgIGlmIChp
dC0+c2Vjb25kLmNvbnRhaW5zKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEpKQotICAg
ICAgICByZXR1cm4gIiI7Ci0gICAgaXQtPnNlY29uZC5zZXQoc2NyaXB0QnJlYWtwb2ludC5saW5l
TnVtYmVyICsgMSwgc2NyaXB0QnJlYWtwb2ludCk7CisgICAgTGluZVRvQnJlYWtwb2ludE1hcDo6
aXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+c2Vjb25kLmZpbmQoc2NyaXB0QnJlYWtwb2ludC5saW5l
TnVtYmVyICsgMSk7CisgICAgaWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisgICAg
ICAgIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5zZXQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVy
ICsgMSwgQnJlYWtwb2ludHNJbkxpbmUoKSkuaXRlcmF0b3I7CisKKyAgICBCcmVha3BvaW50c0lu
TGluZSYgYnJlYWtzVmVjdG9yID0gYnJlYWtzSXQtPnNlY29uZDsKKyAgICB1bnNpZ25lZCBicmVh
a3NDb3VudCA9IGJyZWFrc1ZlY3Rvci5zaXplKCk7CisgICAgdW5zaWduZWQgaTsKKyAgICBmb3Ig
KGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykgeworICAgICAgICBpZiAoYnJlYWtzVmVjdG9y
LmF0KGkpLmNvbHVtbk51bWJlciA9PSBzY3JpcHRCcmVha3BvaW50LmNvbHVtbk51bWJlcikKKyAg
ICAgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisgICAgYnJlYWtzVmVjdG9yLmFwcGVuZChzY3Jp
cHRCcmVha3BvaW50KTsKKyAgICBzdGQ6OnNvcnQoYnJlYWtzVmVjdG9yLmJlZ2luKCksIGJyZWFr
c1ZlY3Rvci5lbmQoKSwgYnJlYWtwb2ludE9yZGVyU29ydEZ1bmN0aW9uKTsKKwogICAgICphY3R1
YWxMaW5lTnVtYmVyID0gc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyOwotICAgIC8vIEZJWE1F
KFdLNTMwMDMpOiBpbXBsZW1lbnQgc2V0dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbi4K
LSAgICAqYWN0dWFsQ29sdW1uTnVtYmVyID0gMDsKLSAgICByZXR1cm4gc291cmNlSUQgKyAiOiIg
KyBTdHJpbmc6Om51bWJlcihzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIpOworICAgICphY3R1
YWxDb2x1bW5OdW1iZXIgPSBzY3JpcHRCcmVha3BvaW50LmNvbHVtbk51bWJlcjsKKyAgICByZXR1
cm4gc291cmNlSUQgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihzY3JpcHRCcmVha3BvaW50LmxpbmVO
dW1iZXIpICsgIjoiICsgU3RyaW5nOjpudW1iZXIoc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1i
ZXIpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50KGNvbnN0
IFN0cmluZyYgYnJlYWtwb2ludElkKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHRva2VuczsKICAg
ICBicmVha3BvaW50SWQuc3BsaXQoIjoiLCB0b2tlbnMpOwotICAgIGlmICh0b2tlbnMuc2l6ZSgp
ICE9IDIpCisgICAgaWYgKHRva2Vucy5zaXplKCkgIT0gMykKICAgICAgICAgcmV0dXJuOwogICAg
IGJvb2wgc3VjY2VzczsKICAgICBpbnRwdHJfdCBzb3VyY2VJRFZhbHVlID0gdG9rZW5zWzBdLnRv
SW50UHRyKCZzdWNjZXNzKTsKQEAgLTk3LDkgKzExOCwyNSBAQCB2b2lkIFNjcmlwdERlYnVnU2Vy
dmVyOjpyZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKQogICAgIHVu
c2lnbmVkIGxpbmVOdW1iZXIgPSB0b2tlbnNbMV0udG9VSW50KCZzdWNjZXNzKTsKICAgICBpZiAo
IXN1Y2Nlc3MpCiAgICAgICAgIHJldHVybjsKKyAgICB1bnNpZ25lZCBjb2x1bW5OdW1iZXIgPSB0
b2tlbnNbMl0udG9VSW50KCZzdWNjZXNzKTsKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJl
dHVybjsKKwogICAgIFNvdXJjZUlkVG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX3Nv
dXJjZUlkVG9CcmVha3BvaW50cy5maW5kKHNvdXJjZUlEVmFsdWUpOwotICAgIGlmIChpdCAhPSBt
X3NvdXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKLSAgICAgICAgaXQtPnNlY29uZC5yZW1vdmUo
bGluZU51bWJlciArIDEpOworICAgIGlmIChpdCA9PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5l
bmQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6Oml0ZXJhdG9y
IGJyZWFrc0l0ID0gaXQtPnNlY29uZC5maW5kKGxpbmVOdW1iZXIgKyAxKTsKKyAgICBpZiAoYnJl
YWtzSXQgPT0gaXQtPnNlY29uZC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQnJlYWtw
b2ludHNJbkxpbmUmIGJyZWFrc1ZlY3RvciA9IGJyZWFrc0l0LT5zZWNvbmQ7CisgICAgdW5zaWdu
ZWQgYnJlYWtzQ291bnQgPSBicmVha3NWZWN0b3Iuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBicmVha3NDb3VudDsgaSsrKSB7CisgICAgICAgIGlmIChicmVha3NWZWN0b3Iu
YXQoaSkuY29sdW1uTnVtYmVyID09IChpbnQpY29sdW1uTnVtYmVyKSB7CisgICAgICAgICAgICBi
cmVha3NWZWN0b3IucmVtb3ZlKGkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9CiB9CiAKIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0JyZWFrcG9pbnQoaW50cHRyX3Qg
c291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CkBAIC0xMTMsMTYg
KzE1MCw0MyBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVha3BvaW50KGludHB0cl90
IHNvdXJjZUlELCBjb25zdCBUZXh0UG9zaXRpb24mIHBvcwogICAgIGludCBsaW5lTnVtYmVyID0g
cG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCk7CiAgICAgaWYgKGxpbmVOdW1iZXIgPD0gMCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6OmNvbnN0X2l0
ZXJhdG9yIGJyZWFrSXQgPSBpdC0+c2Vjb25kLmZpbmQobGluZU51bWJlcik7Ci0gICAgaWYgKGJy
ZWFrSXQgPT0gaXQtPnNlY29uZC5lbmQoKSkKKworICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6OmNv
bnN0X2l0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5maW5kKGxpbmVOdW1iZXIpOworICAg
IGlmIChicmVha3NJdCA9PSBpdC0+c2Vjb25kLmVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBib29sIGhpdCA9IGZhbHNlOworICAgIGNvbnN0IEJyZWFrcG9pbnRzSW5MaW5lJiBi
cmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25kOworICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50
ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKKyAgICB1bnNpZ25lZCBpOworICAgIHVuc2lnbmVkIGhp
dEJyZWFrc0NvdW50ID0gbV9sYXN0SGl0U2NyaXB0QnJlYWtwb2ludHMuc2l6ZSgpOworICAgIHVu
c2lnbmVkIGo7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykgeworICAg
ICAgICBpbnQgY29sdW1uID0gYnJlYWtzVmVjdG9yLmF0KGkpLmNvbHVtbk51bWJlcjsKKyAgICAg
ICAgaW50IGxpbmUgPSBicmVha3NWZWN0b3IuYXQoaSkubGluZU51bWJlcjsKKyAgICAgICAgZm9y
IChqID0gMDsgaiA8IGhpdEJyZWFrc0NvdW50OyBqKyspIHsKKyAgICAgICAgICAgIGlmIChjb2x1
bW4gPT0gbV9sYXN0SGl0U2NyaXB0QnJlYWtwb2ludHMuYXQoaikuY29sdW1uTnVtYmVyCisgICAg
ICAgICAgICAgICAgJiYgbGluZSA9PSBtX2xhc3RIaXRTY3JpcHRCcmVha3BvaW50cy5hdChqKS5s
aW5lTnVtYmVyKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlm
IChqID09IGhpdEJyZWFrc0NvdW50KSB7CisgICAgICAgICAgICBtX2xhc3RIaXRTY3JpcHRCcmVh
a3BvaW50cy5hcHBlbmQoYnJlYWtzVmVjdG9yLmF0KGkpKTsKKyAgICAgICAgICAgIGhpdCA9IHRy
dWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWhpdCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgbV9oaXRTY3JpcHRCcmVha3BvaW50ID0gYnJl
YWtzVmVjdG9yLmF0KGkpOworCiAgICAgLy8gQW4gZW1wdHkgY29uZGl0aW9uIGNvdW50cyBhcyBu
byBjb25kaXRpb24gd2hpY2ggaXMgZXF1aXZhbGVudCB0byAidHJ1ZSIuCi0gICAgaWYgKGJyZWFr
SXQtPnNlY29uZC5jb25kaXRpb24uaXNFbXB0eSgpKQorICAgIGlmIChtX2hpdFNjcmlwdEJyZWFr
cG9pbnQuY29uZGl0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBK
U1ZhbHVlIGV4Y2VwdGlvbjsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IG1fY3VycmVudENhbGxGcmFt
ZS0+ZXZhbHVhdGUoc3RyaW5nVG9VU3RyaW5nKGJyZWFrSXQtPnNlY29uZC5jb25kaXRpb24pLCBl
eGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0ID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5ldmFs
dWF0ZShzdHJpbmdUb1VTdHJpbmcobV9oaXRTY3JpcHRCcmVha3BvaW50LmNvbmRpdGlvbiksIGV4
Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAvLyBBbiBlcnJvbmVvdXMg
Y29uZGl0aW9uIGNvdW50cyBhcyAiZmFsc2UiLgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0x
MzAsNiArMTk0LDE0IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0JyZWFrcG9pbnQoaW50
cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zCiAgICAgcmV0dXJuIHJlc3Vs
dC50b0Jvb2xlYW4oKTsKIH0KIAorCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjbGVhckhpdEJy
ZWFrcG9pbnRzUmVjb3JkKCkKK3sKKyAgICBtX2hpdFNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJl
ciA9IDA7CisgICAgbV9oaXRTY3JpcHRCcmVha3BvaW50LmNvbHVtbk51bWJlciA9IDA7CisgICAg
bV9sYXN0SGl0U2NyaXB0QnJlYWtwb2ludHMuY2xlYXIoKTsKK30KKwogdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6Y2xlYXJCcmVha3BvaW50cygpCiB7CiAgICAgbV9zb3VyY2VJZFRvQnJlYWtwb2lu
dHMuY2xlYXIoKTsKQEAgLTM2MywxMSArNDM1LDE2IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6
OnBhdXNlSWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGJvb2wgcGF1c2VOb3cgPSBtX3BhdXNlT25OZXh0U3RhdGVtZW50
OworICAgIGNvbnN0IFRleHRQb3NpdGlvbiBwb3NpdGlvbiA9IG1fY3VycmVudENhbGxGcmFtZS0+
cG9zaXRpb24oKTsKICAgICBwYXVzZU5vdyB8PSAobV9wYXVzZU9uQ2FsbEZyYW1lID09IG1fY3Vy
cmVudENhbGxGcmFtZSk7Ci0gICAgcGF1c2VOb3cgfD0gaGFzQnJlYWtwb2ludChtX2N1cnJlbnRD
YWxsRnJhbWUtPnNvdXJjZUlEKCksIG1fY3VycmVudENhbGxGcmFtZS0+cG9zaXRpb24oKSk7Cisg
ICAgcGF1c2VOb3cgfD0gaGFzQnJlYWtwb2ludChtX2N1cnJlbnRDYWxsRnJhbWUtPnNvdXJjZUlE
KCksIHBvc2l0aW9uKTsKICAgICBpZiAoIXBhdXNlTm93KQogICAgICAgICByZXR1cm47CiAKKyAg
ICBUZXh0UG9zaXRpb24gaGl0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbVplcm9CYXNlZElu
dChtX2hpdFNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIE9yZGluYWxOdW1iZXI6OmZyb21aZXJvQmFzZWRJbnQobV9oaXRTY3JpcHRCcmVh
a3BvaW50LmNvbHVtbk51bWJlcikpOworICAgIG1fY3VycmVudENhbGxGcmFtZS0+dXBkYXRlUG9z
aXRpb24oaGl0UG9zaXRpb24pOworCiAgICAgbV9wYXVzZU9uQ2FsbEZyYW1lID0gMDsKICAgICBt
X3BhdXNlT25OZXh0U3RhdGVtZW50ID0gZmFsc2U7CiAgICAgbV9wYXVzZWQgPSB0cnVlOwpAQCAt
NDE1LDYgKzQ5Miw4IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwKICAgICBpZiAobV9jdXJyZW50
Q2FsbEZyYW1lID09IG1fcGF1c2VPbkNhbGxGcmFtZSkKICAgICAgICAgbV9wYXVzZU9uQ2FsbEZy
YW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxsZXIoKTsKICAgICBtX2N1cnJlbnRDYWxsRnJh
bWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlcigpOworCisgICAgY2xlYXJIaXRCcmVha3Bv
aW50c1JlY29yZCgpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpleGNlcHRpb24oY29u
c3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFuZGxlcikKQEAgLTQ0NSw2ICs1MjQsOCBAQCB2
b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNh
bGxGcmFtZSYgZGVidWdnZXJDYWxsRgogICAgIGlmIChtX2N1cnJlbnRDYWxsRnJhbWUgPT0gbV9w
YXVzZU9uQ2FsbEZyYW1lKQogICAgICAgICBtX3BhdXNlT25DYWxsRnJhbWUgPSBtX2N1cnJlbnRD
YWxsRnJhbWUtPmNhbGxlcigpOwogICAgIG1fY3VycmVudENhbGxGcmFtZSA9IG1fY3VycmVudENh
bGxGcmFtZS0+Y2FsbGVyKCk7CisKKyAgICBjbGVhckhpdEJyZWFrcG9pbnRzUmVjb3JkKCk7CiB9
CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1
Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQg
bGluZU51bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1Nl
cnZlci5oCmluZGV4IGZkMGE4YmMzNDg4MzIzZGI2MWQ4MWJmZTE3M2JjNGI1YjQzYTM2YWMuLjkx
NTY0NzUwNTEyNjcwNmMyZDgyMTNjMjhmMThkNDNjZDgzZjBlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtNjEsNiArNjEsNyBAQCBj
bGFzcyBTY3JpcHREZWJ1Z1NlcnZlciA6IHByb3RlY3RlZCBKU0M6OkRlYnVnZ2VyIHsKIHB1Ymxp
YzoKICAgICBTdHJpbmcgc2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25z
dCBTY3JpcHRCcmVha3BvaW50JiwgaW50KiBhY3R1YWxMaW5lTnVtYmVyLCBpbnQqIGFjdHVhbENv
bHVtbk51bWJlcik7CiAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJl
YWtwb2ludElkKTsKKyAgICB2b2lkIGNsZWFySGl0QnJlYWtwb2ludHNSZWNvcmQoKTsKICAgICB2
b2lkIGNsZWFyQnJlYWtwb2ludHMoKTsKICAgICB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZhdGVk
KGJvb2wgYWN0aXZhdGVkKTsKICAgICB2b2lkIGFjdGl2YXRlQnJlYWtwb2ludHMoKSB7IHNldEJy
ZWFrcG9pbnRzQWN0aXZhdGVkKHRydWUpOyB9CkBAIC0xMzMsNyArMTM0LDkgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2Vy
Q2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxsb25n
LCBTY3JpcHRCcmVha3BvaW50PiBMaW5lVG9CcmVha3BvaW50TWFwOworICAgIHR5cGVkZWYgSGFz
aE1hcDxQYWdlKiwgTGlzdGVuZXJTZXQqPiBQYWdlTGlzdGVuZXJzTWFwOworICAgIHR5cGVkZWYg
VmVjdG9yPFNjcmlwdEJyZWFrcG9pbnQ+IEJyZWFrcG9pbnRzSW5MaW5lOworICAgIHR5cGVkZWYg
SGFzaE1hcDxsb25nLCBCcmVha3BvaW50c0luTGluZT4gTGluZVRvQnJlYWtwb2ludE1hcDsKICAg
ICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIExpbmVUb0JyZWFrcG9pbnRNYXA+IFNvdXJjZUlk
VG9CcmVha3BvaW50c01hcDsKIAogICAgIGJvb2wgbV9jYWxsaW5nTGlzdGVuZXJzOwpAQCAtMTQ2
LDYgKzE0OSw5IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4g
bV9jdXJyZW50Q2FsbEZyYW1lOwogICAgIFNvdXJjZUlkVG9CcmVha3BvaW50c01hcCBtX3NvdXJj
ZUlkVG9CcmVha3BvaW50czsKICAgICBUaW1lcjxTY3JpcHREZWJ1Z1NlcnZlcj4gbV9yZWNvbXBp
bGVUaW1lcjsKKworICAgIG11dGFibGUgQnJlYWtwb2ludHNJbkxpbmUgbV9sYXN0SGl0U2NyaXB0
QnJlYWtwb2ludHM7CisgICAgbXV0YWJsZSBTY3JpcHRCcmVha3BvaW50IG1faGl0U2NyaXB0QnJl
YWtwb2ludDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145731</attachid>
            <date>2012-06-05 01:55:12 -0700</date>
            <delta_ts>2012-06-26 01:31:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120605165510.patch</filename>
            <type>text/plain</type>
            <size>12783</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4NzIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWVmNmE3ZmEzMDE5YWQ1
MzFhYjEzNWU2ZjczNDBkNjRlOWY5NzU0Yi4uNjQ2MDkzNWQ2OTFiMTBlYzIyNzI1OTM0MGQ3MDQy
NjJjN2IyMTM3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA1LTMxICBQZXRl
ciBXYW5nICA8cGV0ZXIud2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogW0pTQ10gaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2ludHMgYnkgbGluZTpjb2x1
bW4gCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzAw
MworCisgICAgICAgIFJJTSBQUiBodHRwczovL2J1Z3ppbGxhLnFueC5jb20vYnVnemlsbGEvc2hv
d19idWcuY2dpP2lkPTE1MjUwNyBkZXBlbmRzIG9uIHRoaXMgYnVnLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZXNlIHRlc3QgY2FzZXMgd2VyZSBl
bmFibGVkOgorICAgICAgICBodHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1zb3VyY2UtbWFw
cGluZy1kZWJ1Zy5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZy
YW1lLmg6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjp1cGRhdGVQb3Np
dGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSk6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OnN1
cHBvcnRzTmF0aXZlQnJlYWtwb2ludHMpOgorCiAyMDEyLTA1LTI4ICBLZW50YXJvIEhhcmEgIDxo
YXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbVjhdIEF2b2lkIHBhc3NpbmcgTlVMTCB0
byBhbiAnaXNvbGF0ZScgcGFyYW1ldGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgKaW5kZXggYTU4MWM0ZmM3YjI3ZDJmYWM3OTA2YjhhOWZi
MzAxYzYzZmZiMGRkYy4uMzc2YjRiOTdmMDk0Nzc4ZjE1ZGQ0NmQ4MjI1ZDBkNmIxOTc5ZjkzNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFt
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxsRnJhbWUu
aApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBpbnRwdHJfdCBzb3VyY2VJRCgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlSUQ7IH0KICAgICBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0UG9zaXRpb247IH0KKyAgICB2b2lkIHVwZGF0ZVBv
c2l0aW9uKGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pIHsgbV90ZXh0UG9zaXRpb24gPSBw
b3NpdGlvbjsgfQogICAgIGludCBsaW5lKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0UG9zaXRpb24u
bV9saW5lLnplcm9CYXNlZEludCgpOyB9CiAgICAgaW50IGNvbHVtbigpIGNvbnN0IHsgcmV0dXJu
IG1fdGV4dFBvc2l0aW9uLm1fY29sdW1uLnplcm9CYXNlZEludCgpOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCA0ZGVjMTVl
ZDgzOTFjNjk4NzgxZDdiOWUwNmVlMGNiMjFmMzUxMzRhLi5mNWYwMDIzYjkzMjkyNzdlOTQ0ZTIw
NjVlZmZiMTAyN2Q4MDA0YzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC02MCw2ICs2MCw3IEBAIFNjcmlwdERlYnVnU2VydmVy
OjpTY3JpcHREZWJ1Z1NlcnZlcigpCiAgICAgLCBtX2JyZWFrcG9pbnRzQWN0aXZhdGVkKHRydWUp
CiAgICAgLCBtX3BhdXNlT25DYWxsRnJhbWUoMCkKICAgICAsIG1fcmVjb21waWxlVGltZXIodGhp
cywgJlNjcmlwdERlYnVnU2VydmVyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucykKKyAgICAsIG1f
aGl0U2NyaXB0QnJlYWtwb2ludCgwLCAwLCAiIikKIHsKIH0KIApAQCAtNjcsNiArNjgsMTUgQEAg
U2NyaXB0RGVidWdTZXJ2ZXI6On5TY3JpcHREZWJ1Z1NlcnZlcigpCiB7CiB9CiAKK3N0YXRpYyBi
b29sIGJyZWFrcG9pbnRPcmRlclNvcnRGdW5jdGlvbihjb25zdCBTY3JpcHRCcmVha3BvaW50JiBo
ZWFkUG9pbnQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmIHJlYXJQb2ludCkKK3sKKyAgICBpZiAo
KGhlYWRQb2ludC5saW5lTnVtYmVyIDwgcmVhclBvaW50LmxpbmVOdW1iZXIpCisgICAgICAgIHx8
IChoZWFkUG9pbnQubGluZU51bWJlciA9PSByZWFyUG9pbnQubGluZU51bWJlciAmJiBoZWFkUG9p
bnQuY29sdW1uTnVtYmVyIDwgcmVhclBvaW50LmNvbHVtbk51bWJlcikpCisgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBTdHJpbmcgU2NyaXB0RGVidWdTZXJ2
ZXI6OnNldEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJl
YWtwb2ludCYgc2NyaXB0QnJlYWtwb2ludCwgaW50KiBhY3R1YWxMaW5lTnVtYmVyLCBpbnQqIGFj
dHVhbENvbHVtbk51bWJlcikKIHsKICAgICBpbnRwdHJfdCBzb3VyY2VJRFZhbHVlID0gc291cmNl
SUQudG9JbnRQdHIoKTsKQEAgLTc1LDIwICs4NSwyOSBAQCBTdHJpbmcgU2NyaXB0RGVidWdTZXJ2
ZXI6OnNldEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJl
YQogICAgIFNvdXJjZUlkVG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NvdXJjZUlk
VG9CcmVha3BvaW50cy5maW5kKHNvdXJjZUlEVmFsdWUpOwogICAgIGlmIChpdCA9PSBtX3NvdXJj
ZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKICAgICAgICAgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3Bv
aW50cy5zZXQoc291cmNlSURWYWx1ZSwgTGluZVRvQnJlYWtwb2ludE1hcCgpKS5pdGVyYXRvcjsK
LSAgICBpZiAoaXQtPnNlY29uZC5jb250YWlucyhzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIg
KyAxKSkKLSAgICAgICAgcmV0dXJuICIiOwotICAgIGl0LT5zZWNvbmQuc2V0KHNjcmlwdEJyZWFr
cG9pbnQubGluZU51bWJlciArIDEsIHNjcmlwdEJyZWFrcG9pbnQpOworICAgIExpbmVUb0JyZWFr
cG9pbnRNYXA6Oml0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5maW5kKHNjcmlwdEJyZWFr
cG9pbnQubGluZU51bWJlciArIDEpOworICAgIGlmIChicmVha3NJdCA9PSBpdC0+c2Vjb25kLmVu
ZCgpKQorICAgICAgICBicmVha3NJdCA9IGl0LT5zZWNvbmQuc2V0KHNjcmlwdEJyZWFrcG9pbnQu
bGluZU51bWJlciArIDEsIEJyZWFrcG9pbnRzSW5MaW5lKCkpLml0ZXJhdG9yOworCisgICAgQnJl
YWtwb2ludHNJbkxpbmUmIGJyZWFrc1ZlY3RvciA9IGJyZWFrc0l0LT5zZWNvbmQ7CisgICAgdW5z
aWduZWQgYnJlYWtzQ291bnQgPSBicmVha3NWZWN0b3Iuc2l6ZSgpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBicmVha3NDb3VudDsgaSsrKSB7CisgICAgICAgIGlmIChicmVha3NWZWN0
b3IuYXQoaSkuY29sdW1uTnVtYmVyID09IHNjcmlwdEJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKQor
ICAgICAgICAgICAgcmV0dXJuICIiOworICAgIH0KKyAgICBicmVha3NWZWN0b3IuYXBwZW5kKHNj
cmlwdEJyZWFrcG9pbnQpOworICAgIHN0ZDo6c29ydChicmVha3NWZWN0b3IuYmVnaW4oKSwgYnJl
YWtzVmVjdG9yLmVuZCgpLCBicmVha3BvaW50T3JkZXJTb3J0RnVuY3Rpb24pOworCiAgICAgKmFj
dHVhbExpbmVOdW1iZXIgPSBzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXI7Ci0gICAgLy8gRklY
TUUoV0s1MzAwMyk6IGltcGxlbWVudCBzZXR0aW5nIGJyZWFrcG9pbnRzIGJ5IGxpbmU6Y29sdW1u
LgotICAgICphY3R1YWxDb2x1bW5OdW1iZXIgPSAwOwotICAgIHJldHVybiBzb3VyY2VJRCArICI6
IiArIFN0cmluZzo6bnVtYmVyKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcik7CisgICAgKmFj
dHVhbENvbHVtbk51bWJlciA9IHNjcmlwdEJyZWFrcG9pbnQuY29sdW1uTnVtYmVyOworICAgIHJl
dHVybiBzb3VyY2VJRCArICI6IiArIFN0cmluZzo6bnVtYmVyKHNjcmlwdEJyZWFrcG9pbnQubGlu
ZU51bWJlcikgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihzY3JpcHRCcmVha3BvaW50LmNvbHVtbk51
bWJlcik7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnQoY29u
c3QgU3RyaW5nJiBicmVha3BvaW50SWQpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gdG9rZW5zOwog
ICAgIGJyZWFrcG9pbnRJZC5zcGxpdCgiOiIsIHRva2Vucyk7Ci0gICAgaWYgKHRva2Vucy5zaXpl
KCkgIT0gMikKKyAgICBpZiAodG9rZW5zLnNpemUoKSAhPSAzKQogICAgICAgICByZXR1cm47CiAg
ICAgYm9vbCBzdWNjZXNzOwogICAgIGludHB0cl90IHNvdXJjZUlEVmFsdWUgPSB0b2tlbnNbMF0u
dG9JbnRQdHIoJnN1Y2Nlc3MpOwpAQCAtOTcsOSArMTE2LDI1IEBAIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQpCiAgICAg
dW5zaWduZWQgbGluZU51bWJlciA9IHRva2Vuc1sxXS50b1VJbnQoJnN1Y2Nlc3MpOwogICAgIGlm
ICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuOworICAgIHVuc2lnbmVkIGNvbHVtbk51bWJlciA9
IHRva2Vuc1syXS50b1VJbnQoJnN1Y2Nlc3MpOworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAg
cmV0dXJuOworCiAgICAgU291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBpdCA9IG1f
c291cmNlSWRUb0JyZWFrcG9pbnRzLmZpbmQoc291cmNlSURWYWx1ZSk7Ci0gICAgaWYgKGl0ICE9
IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQotICAgICAgICBpdC0+c2Vjb25kLnJlbW92
ZShsaW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRz
LmVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgTGluZVRvQnJlYWtwb2ludE1hcDo6aXRlcmF0
b3IgYnJlYWtzSXQgPSBpdC0+c2Vjb25kLmZpbmQobGluZU51bWJlciArIDEpOworICAgIGlmIChi
cmVha3NJdCA9PSBpdC0+c2Vjb25kLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBCcmVh
a3BvaW50c0luTGluZSYgYnJlYWtzVmVjdG9yID0gYnJlYWtzSXQtPnNlY29uZDsKKyAgICB1bnNp
Z25lZCBicmVha3NDb3VudCA9IGJyZWFrc1ZlY3Rvci5zaXplKCk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGJyZWFrc0NvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKGJyZWFrc1ZlY3Rv
ci5hdChpKS5jb2x1bW5OdW1iZXIgPT0gc3RhdGljX2Nhc3Q8aW50Pihjb2x1bW5OdW1iZXIpKSB7
CisgICAgICAgICAgICBicmVha3NWZWN0b3IucmVtb3ZlKGkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9CiB9CiAKIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0JyZWFr
cG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pIGNv
bnN0CkBAIC0xMTMsMTYgKzE0OCw0MiBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVh
a3BvaW50KGludHB0cl90IHNvdXJjZUlELCBjb25zdCBUZXh0UG9zaXRpb24mIHBvcwogICAgIGlu
dCBsaW5lTnVtYmVyID0gcG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCk7CiAgICAgaWYgKGxp
bmVOdW1iZXIgPD0gMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIExpbmVUb0JyZWFrcG9p
bnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGJyZWFrSXQgPSBpdC0+c2Vjb25kLmZpbmQobGluZU51bWJl
cik7Ci0gICAgaWYgKGJyZWFrSXQgPT0gaXQtPnNlY29uZC5lbmQoKSkKKworICAgIExpbmVUb0Jy
ZWFrcG9pbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5maW5kKGxp
bmVOdW1iZXIpOworICAgIGlmIChicmVha3NJdCA9PSBpdC0+c2Vjb25kLmVuZCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBib29sIGhpdCA9IGZhbHNlOworICAgIGNvbnN0IEJyZWFr
cG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25kOworICAgIHVuc2ln
bmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKKyAgICB1bnNpZ25lZCBpOwor
ICAgIHVuc2lnbmVkIGhpdEJyZWFrc0NvdW50ID0gbV9sYXN0SGl0U2NyaXB0QnJlYWtwb2ludHMu
c2l6ZSgpOworICAgIGZvciAoaSA9IDA7IGkgPCBicmVha3NDb3VudDsgaSsrKSB7CisgICAgICAg
IGludCBjb2x1bW4gPSBicmVha3NWZWN0b3IuYXQoaSkuY29sdW1uTnVtYmVyOworICAgICAgICBp
bnQgbGluZSA9IGJyZWFrc1ZlY3Rvci5hdChpKS5saW5lTnVtYmVyOworICAgICAgICB1bnNpZ25l
ZCBqOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgaGl0QnJlYWtzQ291bnQ7IGorKykgeworICAg
ICAgICAgICAgaWYgKGNvbHVtbiA9PSBtX2xhc3RIaXRTY3JpcHRCcmVha3BvaW50cy5hdChqKS5j
b2x1bW5OdW1iZXIKKyAgICAgICAgICAgICAgICAmJiBsaW5lID09IG1fbGFzdEhpdFNjcmlwdEJy
ZWFrcG9pbnRzLmF0KGopLmxpbmVOdW1iZXIpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGogPT0gaGl0QnJlYWtzQ291bnQpIHsKKyAgICAgICAgICAgIG1f
bGFzdEhpdFNjcmlwdEJyZWFrcG9pbnRzLmFwcGVuZChicmVha3NWZWN0b3IuYXQoaSkpOworICAg
ICAgICAgICAgaGl0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorICAgIGlmICghaGl0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBtX2hpdFNjcmlw
dEJyZWFrcG9pbnQgPSBicmVha3NWZWN0b3IuYXQoaSk7CisKICAgICAvLyBBbiBlbXB0eSBjb25k
aXRpb24gY291bnRzIGFzIG5vIGNvbmRpdGlvbiB3aGljaCBpcyBlcXVpdmFsZW50IHRvICJ0cnVl
Ii4KLSAgICBpZiAoYnJlYWtJdC0+c2Vjb25kLmNvbmRpdGlvbi5pc0VtcHR5KCkpCisgICAgaWYg
KG1faGl0U2NyaXB0QnJlYWtwb2ludC5jb25kaXRpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIEpTVmFsdWUgZXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmVzdWx0ID0g
bV9jdXJyZW50Q2FsbEZyYW1lLT5ldmFsdWF0ZShzdHJpbmdUb1VTdHJpbmcoYnJlYWtJdC0+c2Vj
b25kLmNvbmRpdGlvbiksIGV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBtX2N1cnJl
bnRDYWxsRnJhbWUtPmV2YWx1YXRlKHN0cmluZ1RvVVN0cmluZyhtX2hpdFNjcmlwdEJyZWFrcG9p
bnQuY29uZGl0aW9uKSwgZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAg
IC8vIEFuIGVycm9uZW91cyBjb25kaXRpb24gY291bnRzIGFzICJmYWxzZSIuCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTEzMCw2ICsxOTEsMTQgQEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6
aGFzQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3MK
ICAgICByZXR1cm4gcmVzdWx0LnRvQm9vbGVhbigpOwogfQogCisKK3ZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OmNsZWFySGl0QnJlYWtwb2ludHNSZWNvcmQoKQoreworICAgIG1faGl0U2NyaXB0QnJl
YWtwb2ludC5saW5lTnVtYmVyID0gMDsKKyAgICBtX2hpdFNjcmlwdEJyZWFrcG9pbnQuY29sdW1u
TnVtYmVyID0gMDsKKyAgICBtX2xhc3RIaXRTY3JpcHRCcmVha3BvaW50cy5jbGVhcigpOworfQor
CiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjbGVhckJyZWFrcG9pbnRzKCkKIHsKICAgICBtX3Nv
dXJjZUlkVG9CcmVha3BvaW50cy5jbGVhcigpOwpAQCAtMzY0LDEwICs0MzMsMTggQEAgdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VJZk5lZWRlZChKU0dsb2JhbE9iamVjdCogZHluYW1pY0ds
b2JhbE9iamVjdCkKIAogICAgIGJvb2wgcGF1c2VOb3cgPSBtX3BhdXNlT25OZXh0U3RhdGVtZW50
OwogICAgIHBhdXNlTm93IHw9IChtX3BhdXNlT25DYWxsRnJhbWUgPT0gbV9jdXJyZW50Q2FsbEZy
YW1lKTsKLSAgICBwYXVzZU5vdyB8PSBoYXNCcmVha3BvaW50KG1fY3VycmVudENhbGxGcmFtZS0+
c291cmNlSUQoKSwgbV9jdXJyZW50Q2FsbEZyYW1lLT5wb3NpdGlvbigpKTsKKyAgICBib29sIGhp
dEJyZWFrID0gaGFzQnJlYWtwb2ludChtX2N1cnJlbnRDYWxsRnJhbWUtPnNvdXJjZUlEKCksIG1f
Y3VycmVudENhbGxGcmFtZS0+cG9zaXRpb24oKSk7CisgICAgcGF1c2VOb3cgfD0gaGl0QnJlYWs7
CiAgICAgaWYgKCFwYXVzZU5vdykKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKGhpdEJyZWFr
KSB7CisgICAgICAgIC8vIFRvIHNldCB0aGUgY29sdW1uIG51bWJlciBvZiBjdXJyZW50IHBvc2l0
aW9uIHNpbmNlIEpTQyBjYW4gb25seSBwcm92aWRlIHRoZSBsaW5lIG51bWJlciBvZiBicmVha3Bv
aW50LgorICAgICAgICBUZXh0UG9zaXRpb24gaGl0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJv
bVplcm9CYXNlZEludChtX2hpdFNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRpbmFsTnVtYmVyOjpmcm9tWmVyb0Jhc2VkSW50
KG1faGl0U2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXIpKTsKKyAgICAgICAgbV9jdXJyZW50
Q2FsbEZyYW1lLT51cGRhdGVQb3NpdGlvbihoaXRQb3NpdGlvbik7CisgICAgfQorCiAgICAgbV9w
YXVzZU9uQ2FsbEZyYW1lID0gMDsKICAgICBtX3BhdXNlT25OZXh0U3RhdGVtZW50ID0gZmFsc2U7
CiAgICAgbV9wYXVzZWQgPSB0cnVlOwpAQCAtNDE1LDYgKzQ5Miw4IEBAIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OnJldHVybkV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNh
bGxGcmFtZSwKICAgICBpZiAobV9jdXJyZW50Q2FsbEZyYW1lID09IG1fcGF1c2VPbkNhbGxGcmFt
ZSkKICAgICAgICAgbV9wYXVzZU9uQ2FsbEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxs
ZXIoKTsKICAgICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxl
cigpOworCisgICAgY2xlYXJIaXRCcmVha3BvaW50c1JlY29yZCgpOwogfQogCiB2b2lkIFNjcmlw
dERlYnVnU2VydmVyOjpleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFu
ZGxlcikKQEAgLTQ0NSw2ICs1MjQsOCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaWRFeGVj
dXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRgogICAgIGlm
IChtX2N1cnJlbnRDYWxsRnJhbWUgPT0gbV9wYXVzZU9uQ2FsbEZyYW1lKQogICAgICAgICBtX3Bh
dXNlT25DYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlcigpOwogICAgIG1fY3Vy
cmVudENhbGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyKCk7CisKKyAgICBjbGVh
ckhpdEJyZWFrcG9pbnRzUmVjb3JkKCk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRp
ZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJh
bWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IGZkMGE4YmMzNDg4MzIzZGI2
MWQ4MWJmZTE3M2JjNGI1YjQzYTM2YWMuLmE4MjQzMWQ4YjBiZmNmMjFlY2ZjNGY5MWVjZTc1MDIy
YzdlNmI3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERl
YnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdT
ZXJ2ZXIuaApAQCAtNjEsNiArNjEsNyBAQCBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlciA6IHByb3Rl
Y3RlZCBKU0M6OkRlYnVnZ2VyIHsKIHB1YmxpYzoKICAgICBTdHJpbmcgc2V0QnJlYWtwb2ludChj
b25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiwgaW50KiBhY3R1
YWxMaW5lTnVtYmVyLCBpbnQqIGFjdHVhbENvbHVtbk51bWJlcik7CiAgICAgdm9pZCByZW1vdmVC
cmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKTsKKyAgICB2b2lkIGNsZWFySGl0
QnJlYWtwb2ludHNSZWNvcmQoKTsKICAgICB2b2lkIGNsZWFyQnJlYWtwb2ludHMoKTsKICAgICB2
b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZhdGVkKGJvb2wgYWN0aXZhdGVkKTsKICAgICB2b2lkIGFj
dGl2YXRlQnJlYWtwb2ludHMoKSB7IHNldEJyZWFrcG9pbnRzQWN0aXZhdGVkKHRydWUpOyB9CkBA
IC0xMzMsNyArMTM0LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRl
UHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lbm8pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3Qg
SlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vKTsK
IAotICAgIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBTY3JpcHRCcmVha3BvaW50PiBMaW5lVG9CcmVh
a3BvaW50TWFwOworICAgIHR5cGVkZWYgVmVjdG9yPFNjcmlwdEJyZWFrcG9pbnQ+IEJyZWFrcG9p
bnRzSW5MaW5lOworICAgIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBCcmVha3BvaW50c0luTGluZT4g
TGluZVRvQnJlYWtwb2ludE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIExpbmVU
b0JyZWFrcG9pbnRNYXA+IFNvdXJjZUlkVG9CcmVha3BvaW50c01hcDsKIAogICAgIGJvb2wgbV9j
YWxsaW5nTGlzdGVuZXJzOwpAQCAtMTQ2LDYgKzE0OCw5IEBAIHByb3RlY3RlZDoKICAgICBSZWZQ
dHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gbV9jdXJyZW50Q2FsbEZyYW1lOwogICAgIFNvdXJjZUlk
VG9CcmVha3BvaW50c01hcCBtX3NvdXJjZUlkVG9CcmVha3BvaW50czsKICAgICBUaW1lcjxTY3Jp
cHREZWJ1Z1NlcnZlcj4gbV9yZWNvbXBpbGVUaW1lcjsKKworICAgIG11dGFibGUgQnJlYWtwb2lu
dHNJbkxpbmUgbV9sYXN0SGl0U2NyaXB0QnJlYWtwb2ludHM7CisgICAgbXV0YWJsZSBTY3JpcHRC
cmVha3BvaW50IG1faGl0U2NyaXB0QnJlYWtwb2ludDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IGQ5ZmQ4Zjg3ZDU3ZDgwMzEyYjJiMzg3
Njc1YjhiZTg0ZTU5OGM3YjkuLjhjMGU1NmRhNmUwOGM1Mjk1ZDZhNTY1YzRkN2JiNmU4ZTFhZjg5
ZTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMjYwLDEyICsyNjAsNiBAQCBmYXN0L3Rl
eHQvaHlwaGVuYXRlLWNoYXJhY3Rlci5odG1sCiBmYXN0L3RleHQvaHlwaGVucy5odG1sCiBmYXN0
L3RleHQvc29mdC1oeXBoZW4tNC5odG1sCiAKLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQzMzMyCi1pbnNwZWN0b3IvZGVidWdnZXIvZG9tLWJyZWFrcG9pbnRzLmh0
bWwKLWluc3BlY3Rvci9kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy5odG1sCi1p
bnNwZWN0b3IvZGVidWdnZXIvc3RlcC10aHJvdWdoLWV2ZW50LWxpc3RlbmVycy5odG1sCi1pbnNw
ZWN0b3IvZGVidWdnZXIveGhyLWJyZWFrcG9pbnRzLmh0bWwKLQogIyBKU0MgZG9lc24ndCBzdXBw
b3J0IGhlYXAgcHJvZmlsaW5nCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MDQ4NQogaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QtaW5zcGVjdC1kb20t
d3JhcHBlci5odG1sCkBAIC0yNzYsOSArMjcwLDYgQEAgaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAt
c25hcHNob3Qtc3VtbWFyeS1zaG93LXJhbmdlcy5odG1sCiAjIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MDMwMAogaW5zcGVjdG9yL2RlYnVnZ2VyL2xpdmUtZWRpdC5o
dG1sCiAKLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMDAzCi1o
dHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1zb3VyY2UtbWFwcGluZy1kZWJ1Zy5odG1sCi0K
ICNbUXRdIGluc3BlY3Rvci9zdHlsZXMvc3ZnLXN0eWxlLnhodG1sIGZhaWxzCiAjIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTA2OAogaW5zcGVjdG9yL3N0eWxlcy9z
dmctc3R5bGUueGh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149483</attachid>
            <date>2012-06-26 01:31:13 -0700</date>
            <delta_ts>2012-06-26 02:09:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120626163112.patch</filename>
            <type>text/plain</type>
            <size>10236</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDZkZjEwNDYxYzNhZWQw
NTE1ZDE4MDMxNDg2ZDMwNGRjZGMzNDk5YS4uMzk3OGU2NzgwNzUyOWMzZjMwZDBmZGIzMTMxMDFh
YmQ2MTg5NGYyMyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA2LTI2ICBQZXRl
ciBXYW5nICA8cGV0ZXIud2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogW0pTQ10gaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2ludHMgYnkgbGluZTpjb2x1
bW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMDAz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIGZvciB0aGlzIGJ1Zy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpzZXRCcmVh
a3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVh
a3BvaW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OnVwZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6Y3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbEZyYW1lQW5kUGF1
c2VJZk5lZWRlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoK
KyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToKKwogMjAxMi0wNi0yNiAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVmYWN0b3Jpbmc6IFNpbXBsaWZ5IEZv
cm1Db250cm9sbGVyIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGYyMjI3Yzc0NWNjOGEwMWJkMzhlYThmNGQwYWJj
NzUzOTNhYTAzOTguLmMzMDc0YjhlYmYwZjViN2Q3MjZlNDM0ZDg0ZjRkZDE5ZDk3YjE4ZjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAK
QEAgLTc1LDIwICs3NSwyOCBAQCBTdHJpbmcgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9p
bnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYQogICAgIFNvdXJjZUlk
VG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5m
aW5kKHNvdXJjZUlEVmFsdWUpOwogICAgIGlmIChpdCA9PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50
cy5lbmQoKSkKICAgICAgICAgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5zZXQoc291cmNl
SURWYWx1ZSwgTGluZVRvQnJlYWtwb2ludE1hcCgpKS5pdGVyYXRvcjsKLSAgICBpZiAoaXQtPnNl
Y29uZC5jb250YWlucyhzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIgKyAxKSkKLSAgICAgICAg
cmV0dXJuICIiOwotICAgIGl0LT5zZWNvbmQuc2V0KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJl
ciArIDEsIHNjcmlwdEJyZWFrcG9pbnQpOworICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6Oml0ZXJh
dG9yIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5maW5kKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJl
ciArIDEpOworICAgIGlmIChicmVha3NJdCA9PSBpdC0+c2Vjb25kLmVuZCgpKQorICAgICAgICBi
cmVha3NJdCA9IGl0LT5zZWNvbmQuc2V0KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEs
IEJyZWFrcG9pbnRzSW5MaW5lKCkpLml0ZXJhdG9yOworCisgICAgQnJlYWtwb2ludHNJbkxpbmUm
IGJyZWFrc1ZlY3RvciA9IGJyZWFrc0l0LT5zZWNvbmQ7CisgICAgdW5zaWduZWQgYnJlYWtzQ291
bnQgPSBicmVha3NWZWN0b3Iuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBi
cmVha3NDb3VudDsgaSsrKSB7CisgICAgICAgIGlmIChicmVha3NWZWN0b3IuYXQoaSkuY29sdW1u
TnVtYmVyID09IHNjcmlwdEJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKQorICAgICAgICAgICAgcmV0
dXJuICIiOworICAgIH0KKyAgICBicmVha3NWZWN0b3IuYXBwZW5kKHNjcmlwdEJyZWFrcG9pbnQp
OworCiAgICAgKmFjdHVhbExpbmVOdW1iZXIgPSBzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXI7
Ci0gICAgLy8gRklYTUUoV0s1MzAwMyk6IGltcGxlbWVudCBzZXR0aW5nIGJyZWFrcG9pbnRzIGJ5
IGxpbmU6Y29sdW1uLgotICAgICphY3R1YWxDb2x1bW5OdW1iZXIgPSAwOwotICAgIHJldHVybiBz
b3VyY2VJRCArICI6IiArIFN0cmluZzo6bnVtYmVyKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJl
cik7CisgICAgKmFjdHVhbENvbHVtbk51bWJlciA9IHNjcmlwdEJyZWFrcG9pbnQuY29sdW1uTnVt
YmVyOworICAgIHJldHVybiBzb3VyY2VJRCArICI6IiArIFN0cmluZzo6bnVtYmVyKHNjcmlwdEJy
ZWFrcG9pbnQubGluZU51bWJlcikgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihzY3JpcHRCcmVha3Bv
aW50LmNvbHVtbk51bWJlcik7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJy
ZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQpCiB7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gdG9rZW5zOwogICAgIGJyZWFrcG9pbnRJZC5zcGxpdCgiOiIsIHRva2Vucyk7Ci0gICAgaWYg
KHRva2Vucy5zaXplKCkgIT0gMikKKyAgICBpZiAodG9rZW5zLnNpemUoKSAhPSAzKQogICAgICAg
ICByZXR1cm47CiAgICAgYm9vbCBzdWNjZXNzOwogICAgIGludHB0cl90IHNvdXJjZUlEVmFsdWUg
PSB0b2tlbnNbMF0udG9JbnRQdHIoJnN1Y2Nlc3MpOwpAQCAtOTcsOSArMTA1LDYzIEBAIHZvaWQg
U2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3Bv
aW50SWQpCiAgICAgdW5zaWduZWQgbGluZU51bWJlciA9IHRva2Vuc1sxXS50b1VJbnQoJnN1Y2Nl
c3MpOwogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuOworICAgIHVuc2lnbmVkIGNv
bHVtbk51bWJlciA9IHRva2Vuc1syXS50b1VJbnQoJnN1Y2Nlc3MpOworICAgIGlmICghc3VjY2Vz
cykKKyAgICAgICAgcmV0dXJuOworCiAgICAgU291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOjppdGVy
YXRvciBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmZpbmQoc291cmNlSURWYWx1ZSk7Ci0g
ICAgaWYgKGl0ICE9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQotICAgICAgICBpdC0+
c2Vjb25kLnJlbW92ZShsaW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGl0ID09IG1fc291cmNlSWRU
b0JyZWFrcG9pbnRzLmVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgTGluZVRvQnJlYWtwb2lu
dE1hcDo6aXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+c2Vjb25kLmZpbmQobGluZU51bWJlciArIDEp
OworICAgIGlmIChicmVha3NJdCA9PSBpdC0+c2Vjb25kLmVuZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBCcmVha3BvaW50c0luTGluZSYgYnJlYWtzVmVjdG9yID0gYnJlYWtzSXQtPnNlY29u
ZDsKKyAgICB1bnNpZ25lZCBicmVha3NDb3VudCA9IGJyZWFrc1ZlY3Rvci5zaXplKCk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJyZWFrc0NvdW50OyBpKyspIHsKKyAgICAgICAgaWYg
KGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5OdW1iZXIgPT0gc3RhdGljX2Nhc3Q8aW50Pihjb2x1
bW5OdW1iZXIpKSB7CisgICAgICAgICAgICBicmVha3NWZWN0b3IucmVtb3ZlKGkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OnVwZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbihpbnRwdHJfdCBzb3VyY2VJRCwgaW50
IGxpbmUpCit7CisgICAgaWYgKGxpbmUgPCAwKQorICAgICAgICByZXR1cm47CisKKyAgICBTb3Vy
Y2VQcm92aWRlciogc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxTb3VyY2VQcm92aWRlcio+KHNv
dXJjZUlEKTsKKworICAgIGlmIChtX2N1cnJlbnRTb3VyY2VJRCAhPSBzb3VyY2VJRCkgeworICAg
ICAgICBTdHJpbmcgc291cmNlQ29kZSA9IHVzdHJpbmdUb1N0cmluZyhKU0M6OlVTdHJpbmcoY29u
c3RfY2FzdDxTdHJpbmdJbXBsKj4oc291cmNlLT5kYXRhKCkpKSk7CisgICAgICAgIG1fY3VycmVu
dFNvdXJjZUNvZGUuY2xlYXIoKTsKKyAgICAgICAgc291cmNlQ29kZS5zcGxpdCgiXG4iLCB0cnVl
LCBtX2N1cnJlbnRTb3VyY2VDb2RlKTsKKyAgICAgICAgbV9jdXJyZW50U291cmNlSUQgPSBzb3Vy
Y2VJRDsKKyAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51bWJlciA9IDA7
CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmNvbHVtbk51bWJlciA9IDA7Cisg
ICAgfQorCisgICAgaWYgKGxpbmUgIT0gbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51
bWJlcikgeworICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyID0g
bGluZTsKKyAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0g
MDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCBzdGFydExpbmUgPSBzb3VyY2Ut
PnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUuemVyb0Jhc2VkSW50KCk7CisgICAgaWYgKChtX2N1cnJl
bnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyIC0gc3RhcnRMaW5lIC0gMSkgPj0gbV9jdXJy
ZW50U291cmNlQ29kZS5zaXplKCkpCisgICAgICAgIHJldHVybjsKKyAgICBjb25zdCBTdHJpbmcm
IGNvZGVJbkxpbmUgPSBtX2N1cnJlbnRTb3VyY2VDb2RlW21fY3VycmVudFN0YXRlbWVudFBvc2l0
aW9uLmxpbmVOdW1iZXIgLSBzdGFydExpbmUgLSAxXTsKKyAgICBpZiAoY29kZUluTGluZS5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpbnQgbmV4dENvbHVtbiA9IGNvZGVJbkxpbmUu
ZmluZCgiOyIsIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmNvbHVtbk51bWJlcik7CisgICAg
aWYgKG5leHRDb2x1bW4gIT0gLTEpIHsKKyAgICAgICAgVUNoYXIgYyA9IGNvZGVJbkxpbmVbbmV4
dENvbHVtbiArIDFdOworICAgICAgICBpZiAoYyA9PSAnICcgfHwgYyA9PSAnXHQnKQorICAgICAg
ICAgICAgbmV4dENvbHVtbiArPSAxOworICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlv
bi5jb2x1bW5OdW1iZXIgPSBuZXh0Q29sdW1uICsgMTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9j
dXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0gMDsKIH0KIAogYm9vbCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgY29uc3QgVGV4
dFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKQEAgLTExMCwxOSArMTcyLDM3IEBAIGJvb2wgU2Ny
aXB0RGVidWdTZXJ2ZXI6Omhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRl
eHRQb3NpdGlvbiYgcG9zCiAgICAgU291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmZpbmQoc291cmNlSUQpOwogICAgIGlm
IChpdCA9PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIGludCBsaW5lTnVtYmVyID0gcG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCk7
Ci0gICAgaWYgKGxpbmVOdW1iZXIgPD0gMCkKKworICAgIGludCBsaW5lTnVtYmVyID0gcG9zaXRp
b24ubV9saW5lLnplcm9CYXNlZEludCgpOworICAgIGludCBjb2x1bW5OdW1iZXIgPSBwb3NpdGlv
bi5tX2NvbHVtbi56ZXJvQmFzZWRJbnQoKTsKKyAgICBpZiAobGluZU51bWJlciA8IDAgfHwgY29s
dW1uTnVtYmVyIDwgMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTGluZVRvQnJlYWtw
b2ludE1hcDo6Y29uc3RfaXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+c2Vjb25kLmZpbmQobGluZU51
bWJlciArIDEpOworICAgIGlmIChicmVha3NJdCA9PSBpdC0+c2Vjb25kLmVuZCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgTGluZVRvQnJlYWtwb2ludE1hcDo6Y29uc3RfaXRlcmF0b3Ig
YnJlYWtJdCA9IGl0LT5zZWNvbmQuZmluZChsaW5lTnVtYmVyKTsKLSAgICBpZiAoYnJlYWtJdCA9
PSBpdC0+c2Vjb25kLmVuZCgpKQorCisgICAgYm9vbCBoaXQgPSBmYWxzZTsKKyAgICBjb25zdCBC
cmVha3BvaW50c0luTGluZSYgYnJlYWtzVmVjdG9yID0gYnJlYWtzSXQtPnNlY29uZDsKKyAgICB1
bnNpZ25lZCBicmVha3NDb3VudCA9IGJyZWFrc1ZlY3Rvci5zaXplKCk7CisgICAgdW5zaWduZWQg
aTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykgeworICAgICAgICBpbnQg
YnJlYWtDb2x1bW4gPSBicmVha3NWZWN0b3IuYXQoaSkuY29sdW1uTnVtYmVyOworICAgICAgICBp
bnQgYnJlYWtMaW5lID0gYnJlYWtzVmVjdG9yLmF0KGkpLmxpbmVOdW1iZXI7CisgICAgICAgIGlm
IChsaW5lTnVtYmVyID09IGJyZWFrTGluZSAmJiBjb2x1bW5OdW1iZXIgPT0gYnJlYWtDb2x1bW4p
IHsKKyAgICAgICAgICAgIGhpdCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KKyAgICBpZiAoIWhpdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
QW4gZW1wdHkgY29uZGl0aW9uIGNvdW50cyBhcyBubyBjb25kaXRpb24gd2hpY2ggaXMgZXF1aXZh
bGVudCB0byAidHJ1ZSIuCi0gICAgaWYgKGJyZWFrSXQtPnNlY29uZC5jb25kaXRpb24uaXNFbXB0
eSgpKQorICAgIGlmIChicmVha3NWZWN0b3IuYXQoaSkuY29uZGl0aW9uLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKLSAgICBKU1ZhbHVl
IHJlc3VsdCA9IG1fY3VycmVudENhbGxGcmFtZS0+ZXZhbHVhdGUoc3RyaW5nVG9VU3RyaW5nKGJy
ZWFrSXQtPnNlY29uZC5jb25kaXRpb24pLCBleGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5ldmFsdWF0ZShzdHJpbmdUb1VTdHJpbmcoYnJlYWtzVmVj
dG9yLmF0KGkpLmNvbmRpdGlvbiksIGV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikgewog
ICAgICAgICAvLyBBbiBlcnJvbmVvdXMgY29uZGl0aW9uIGNvdW50cyBhcyAiZmFsc2UiLgogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNDksNyArNDI5LDkgQEAgdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6ZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKEphdmFTY3JpcHRFeGVjdXRpb25DYWxs
YmFjawogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlm
TmVlZGVkKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQogewotICAgIFRleHRQb3NpdGlvbiB0ZXh0UG9z
aXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1iZXIpLCBPcmRpbmFs
TnVtYmVyOjpmaXJzdCgpKTsKKyAgICB1cGRhdGVDdXJyZW50U3RhdGVtZW50UG9zaXRpb24oc291
cmNlSUQsIGxpbmVOdW1iZXIpOworCisgICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbihPcmRp
bmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24ubGlu
ZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZyb21aZXJvQmFzZWRJbnQobV9jdXJyZW50U3RhdGVt
ZW50UG9zaXRpb24uY29sdW1uTnVtYmVyKSk7CiAgICAgbV9jdXJyZW50Q2FsbEZyYW1lID0gSmF2
YVNjcmlwdENhbGxGcmFtZTo6Y3JlYXRlKGRlYnVnZ2VyQ2FsbEZyYW1lLCBtX2N1cnJlbnRDYWxs
RnJhbWUsIHNvdXJjZUlELCB0ZXh0UG9zaXRpb24pOwogICAgIHBhdXNlSWZOZWVkZWQoZGVidWdn
ZXJDYWxsRnJhbWUuZHluYW1pY0dsb2JhbE9iamVjdCgpKTsKIH0KQEAgLTM2MCw3ICs0NDIsOSBA
QCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVk
KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJgogICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uKE9yZGluYWxO
dW1iZXI6OmZyb21PbmVCYXNlZEludChsaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmlyc3Qo
KSk7CisgICAgdXBkYXRlQ3VycmVudFN0YXRlbWVudFBvc2l0aW9uKHNvdXJjZUlELCBsaW5lTnVt
YmVyKTsKKworICAgIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJv
bU9uZUJhc2VkSW50KG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIpLCBPcmRp
bmFsTnVtYmVyOjpmcm9tWmVyb0Jhc2VkSW50KG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmNv
bHVtbk51bWJlcikpOwogICAgIG1fY3VycmVudENhbGxGcmFtZS0+dXBkYXRlKGRlYnVnZ2VyQ2Fs
bEZyYW1lLCBzb3VyY2VJRCwgdGV4dFBvc2l0aW9uKTsKICAgICBwYXVzZUlmTmVlZGVkKGRlYnVn
Z2VyQ2FsbEZyYW1lLmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCA4NGZiYTVjNjc4ZmM3MjVk
ZjI4NjJlZTlmZjNiZTY1MTg0MTIxYWE2Li4yYTAwZWIwODYzYWRlMDY0Mzk3M2RmNDAxNjRhZmU2
NGE1MmU4NzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmgKQEAgLTEzOCw3ICsxMzgsMTAgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lbm8pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFr
cG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZW5vKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBTY3JpcHRCcmVha3BvaW50
PiBMaW5lVG9CcmVha3BvaW50TWFwOworICAgIHZvaWQgdXBkYXRlQ3VycmVudFN0YXRlbWVudFBv
c2l0aW9uKGludHB0cl90LCBpbnQpOworCisgICAgdHlwZWRlZiBWZWN0b3I8U2NyaXB0QnJlYWtw
b2ludD4gQnJlYWtwb2ludHNJbkxpbmU7CisgICAgdHlwZWRlZiBIYXNoTWFwPGxvbmcsIEJyZWFr
cG9pbnRzSW5MaW5lPiBMaW5lVG9CcmVha3BvaW50TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxp
bnRwdHJfdCwgTGluZVRvQnJlYWtwb2ludE1hcD4gU291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOwog
CiAgICAgYm9vbCBtX2NhbGxpbmdMaXN0ZW5lcnM7CkBAIC0xNTEsNiArMTU0LDEwIEBAIHByb3Rl
Y3RlZDoKICAgICBSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gbV9jdXJyZW50Q2FsbEZyYW1l
OwogICAgIFNvdXJjZUlkVG9CcmVha3BvaW50c01hcCBtX3NvdXJjZUlkVG9CcmVha3BvaW50czsK
ICAgICBUaW1lcjxTY3JpcHREZWJ1Z1NlcnZlcj4gbV9yZWNvbXBpbGVUaW1lcjsKKworICAgIFZl
Y3RvcjxTdHJpbmc+IG1fY3VycmVudFNvdXJjZUNvZGU7CisgICAgaW50cHRyX3QgbV9jdXJyZW50
U291cmNlSUQ7CisgICAgU2NyaXB0QnJlYWtwb2ludCBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlv
bjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149490</attachid>
            <date>2012-06-26 02:09:30 -0700</date>
            <delta_ts>2012-07-01 23:04:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120626170927.patch</filename>
            <type>text/plain</type>
            <size>10254</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDZkZjEwNDYxYzNhZWQw
NTE1ZDE4MDMxNDg2ZDMwNGRjZGMzNDk5YS4uMzk3OGU2NzgwNzUyOWMzZjMwZDBmZGIzMTMxMDFh
YmQ2MTg5NGYyMyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTA2LTI2ICBQZXRl
ciBXYW5nICA8cGV0ZXIud2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogW0pTQ10gaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2ludHMgYnkgbGluZTpjb2x1
bW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzMDAz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIGZvciB0aGlzIGJ1Zy4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpzZXRCcmVh
a3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVh
a3BvaW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OnVwZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6Y3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbEZyYW1lQW5kUGF1
c2VJZk5lZWRlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoK
KyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToKKwogMjAxMi0wNi0yNiAgS2VudCBUYW11cmEg
IDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVmYWN0b3Jpbmc6IFNpbXBsaWZ5IEZv
cm1Db250cm9sbGVyIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGYyMjI3Yzc0NWNjOGEwMWJkMzhlYThmNGQwYWJj
NzUzOTNhYTAzOTguLjhjZTYyMWUxZWNkYjFhYjYxODcxNWYwZDcwOTYyZGE1YjljMGViYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAK
QEAgLTc1LDIwICs3NSwyOCBAQCBTdHJpbmcgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9p
bnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYQogICAgIFNvdXJjZUlk
VG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5m
aW5kKHNvdXJjZUlEVmFsdWUpOwogICAgIGlmIChpdCA9PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50
cy5lbmQoKSkKICAgICAgICAgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5zZXQoc291cmNl
SURWYWx1ZSwgTGluZVRvQnJlYWtwb2ludE1hcCgpKS5pdGVyYXRvcjsKLSAgICBpZiAoaXQtPnNl
Y29uZC5jb250YWlucyhzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIgKyAxKSkKLSAgICAgICAg
cmV0dXJuICIiOwotICAgIGl0LT5zZWNvbmQuc2V0KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJl
ciArIDEsIHNjcmlwdEJyZWFrcG9pbnQpOworICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6Oml0ZXJh
dG9yIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5maW5kKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJl
ciArIDEpOworICAgIGlmIChicmVha3NJdCA9PSBpdC0+c2Vjb25kLmVuZCgpKQorICAgICAgICBi
cmVha3NJdCA9IGl0LT5zZWNvbmQuc2V0KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEs
IEJyZWFrcG9pbnRzSW5MaW5lKCkpLml0ZXJhdG9yOworCisgICAgQnJlYWtwb2ludHNJbkxpbmUm
IGJyZWFrc1ZlY3RvciA9IGJyZWFrc0l0LT5zZWNvbmQ7CisgICAgdW5zaWduZWQgYnJlYWtzQ291
bnQgPSBicmVha3NWZWN0b3Iuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBi
cmVha3NDb3VudDsgaSsrKSB7CisgICAgICAgIGlmIChicmVha3NWZWN0b3IuYXQoaSkuY29sdW1u
TnVtYmVyID09IHNjcmlwdEJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKQorICAgICAgICAgICAgcmV0
dXJuICIiOworICAgIH0KKyAgICBicmVha3NWZWN0b3IuYXBwZW5kKHNjcmlwdEJyZWFrcG9pbnQp
OworCiAgICAgKmFjdHVhbExpbmVOdW1iZXIgPSBzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXI7
Ci0gICAgLy8gRklYTUUoV0s1MzAwMyk6IGltcGxlbWVudCBzZXR0aW5nIGJyZWFrcG9pbnRzIGJ5
IGxpbmU6Y29sdW1uLgotICAgICphY3R1YWxDb2x1bW5OdW1iZXIgPSAwOwotICAgIHJldHVybiBz
b3VyY2VJRCArICI6IiArIFN0cmluZzo6bnVtYmVyKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJl
cik7CisgICAgKmFjdHVhbENvbHVtbk51bWJlciA9IHNjcmlwdEJyZWFrcG9pbnQuY29sdW1uTnVt
YmVyOworICAgIHJldHVybiBzb3VyY2VJRCArICI6IiArIFN0cmluZzo6bnVtYmVyKHNjcmlwdEJy
ZWFrcG9pbnQubGluZU51bWJlcikgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihzY3JpcHRCcmVha3Bv
aW50LmNvbHVtbk51bWJlcik7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJy
ZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQpCiB7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gdG9rZW5zOwogICAgIGJyZWFrcG9pbnRJZC5zcGxpdCgiOiIsIHRva2Vucyk7Ci0gICAgaWYg
KHRva2Vucy5zaXplKCkgIT0gMikKKyAgICBpZiAodG9rZW5zLnNpemUoKSAhPSAzKQogICAgICAg
ICByZXR1cm47CiAgICAgYm9vbCBzdWNjZXNzOwogICAgIGludHB0cl90IHNvdXJjZUlEVmFsdWUg
PSB0b2tlbnNbMF0udG9JbnRQdHIoJnN1Y2Nlc3MpOwpAQCAtOTcsOSArMTA1LDYzIEBAIHZvaWQg
U2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3Bv
aW50SWQpCiAgICAgdW5zaWduZWQgbGluZU51bWJlciA9IHRva2Vuc1sxXS50b1VJbnQoJnN1Y2Nl
c3MpOwogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuOworICAgIHVuc2lnbmVkIGNv
bHVtbk51bWJlciA9IHRva2Vuc1syXS50b1VJbnQoJnN1Y2Nlc3MpOworICAgIGlmICghc3VjY2Vz
cykKKyAgICAgICAgcmV0dXJuOworCiAgICAgU291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOjppdGVy
YXRvciBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmZpbmQoc291cmNlSURWYWx1ZSk7Ci0g
ICAgaWYgKGl0ICE9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQotICAgICAgICBpdC0+
c2Vjb25kLnJlbW92ZShsaW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGl0ID09IG1fc291cmNlSWRU
b0JyZWFrcG9pbnRzLmVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgTGluZVRvQnJlYWtwb2lu
dE1hcDo6aXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+c2Vjb25kLmZpbmQobGluZU51bWJlciArIDEp
OworICAgIGlmIChicmVha3NJdCA9PSBpdC0+c2Vjb25kLmVuZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBCcmVha3BvaW50c0luTGluZSYgYnJlYWtzVmVjdG9yID0gYnJlYWtzSXQtPnNlY29u
ZDsKKyAgICB1bnNpZ25lZCBicmVha3NDb3VudCA9IGJyZWFrc1ZlY3Rvci5zaXplKCk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJyZWFrc0NvdW50OyBpKyspIHsKKyAgICAgICAgaWYg
KGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5OdW1iZXIgPT0gc3RhdGljX2Nhc3Q8aW50Pihjb2x1
bW5OdW1iZXIpKSB7CisgICAgICAgICAgICBicmVha3NWZWN0b3IucmVtb3ZlKGkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OnVwZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbihpbnRwdHJfdCBzb3VyY2VJRCwgaW50
IGxpbmUpCit7CisgICAgaWYgKGxpbmUgPCAwKQorICAgICAgICByZXR1cm47CisKKyAgICBTb3Vy
Y2VQcm92aWRlciogc291cmNlID0gcmVpbnRlcnByZXRfY2FzdDxTb3VyY2VQcm92aWRlcio+KHNv
dXJjZUlEKTsKKworICAgIGlmIChtX2N1cnJlbnRTb3VyY2VJRCAhPSBzb3VyY2VJRCkgeworICAg
ICAgICBTdHJpbmcgc291cmNlQ29kZSA9IHVzdHJpbmdUb1N0cmluZyhKU0M6OlVTdHJpbmcoY29u
c3RfY2FzdDxTdHJpbmdJbXBsKj4oc291cmNlLT5kYXRhKCkpKSk7CisgICAgICAgIG1fY3VycmVu
dFNvdXJjZUNvZGUuY2xlYXIoKTsKKyAgICAgICAgc291cmNlQ29kZS5zcGxpdCgiXG4iLCB0cnVl
LCBtX2N1cnJlbnRTb3VyY2VDb2RlKTsKKyAgICAgICAgbV9jdXJyZW50U291cmNlSUQgPSBzb3Vy
Y2VJRDsKKyAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51bWJlciA9IDA7
CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmNvbHVtbk51bWJlciA9IDA7Cisg
ICAgfQorCisgICAgaWYgKGxpbmUgIT0gbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51
bWJlcikgeworICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyID0g
bGluZTsKKyAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0g
MDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGludCBzdGFydExpbmUgPSBzb3VyY2Ut
PnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUuemVyb0Jhc2VkSW50KCk7CisgICAgaWYgKChtX2N1cnJl
bnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyIC0gc3RhcnRMaW5lIC0gMSkgPj0gc3RhdGlj
X2Nhc3Q8aW50PihtX2N1cnJlbnRTb3VyY2VDb2RlLnNpemUoKSkpCisgICAgICAgIHJldHVybjsK
KyAgICBjb25zdCBTdHJpbmcmIGNvZGVJbkxpbmUgPSBtX2N1cnJlbnRTb3VyY2VDb2RlW21fY3Vy
cmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIgLSBzdGFydExpbmUgLSAxXTsKKyAgICBp
ZiAoY29kZUluTGluZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpbnQgbmV4dENv
bHVtbiA9IGNvZGVJbkxpbmUuZmluZCgiOyIsIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmNv
bHVtbk51bWJlcik7CisgICAgaWYgKG5leHRDb2x1bW4gIT0gLTEpIHsKKyAgICAgICAgVUNoYXIg
YyA9IGNvZGVJbkxpbmVbbmV4dENvbHVtbiArIDFdOworICAgICAgICBpZiAoYyA9PSAnICcgfHwg
YyA9PSAnXHQnKQorICAgICAgICAgICAgbmV4dENvbHVtbiArPSAxOworICAgICAgICBtX2N1cnJl
bnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIgPSBuZXh0Q29sdW1uICsgMTsKKyAgICB9
IGVsc2UKKyAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0g
MDsKIH0KIAogYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludChpbnRwdHJfdCBz
b3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikgY29uc3QKQEAgLTExMCwxOSAr
MTcyLDM3IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0JyZWFrcG9pbnQoaW50cHRyX3Qg
c291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zCiAgICAgU291cmNlSWRUb0JyZWFrcG9p
bnRzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmZpbmQo
c291cmNlSUQpOwogICAgIGlmIChpdCA9PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGludCBsaW5lTnVtYmVyID0gcG9zaXRpb24ubV9s
aW5lLm9uZUJhc2VkSW50KCk7Ci0gICAgaWYgKGxpbmVOdW1iZXIgPD0gMCkKKworICAgIGludCBs
aW5lTnVtYmVyID0gcG9zaXRpb24ubV9saW5lLnplcm9CYXNlZEludCgpOworICAgIGludCBjb2x1
bW5OdW1iZXIgPSBwb3NpdGlvbi5tX2NvbHVtbi56ZXJvQmFzZWRJbnQoKTsKKyAgICBpZiAobGlu
ZU51bWJlciA8IDAgfHwgY29sdW1uTnVtYmVyIDwgMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgTGluZVRvQnJlYWtwb2ludE1hcDo6Y29uc3RfaXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+
c2Vjb25kLmZpbmQobGluZU51bWJlciArIDEpOworICAgIGlmIChicmVha3NJdCA9PSBpdC0+c2Vj
b25kLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgTGluZVRvQnJlYWtwb2ludE1h
cDo6Y29uc3RfaXRlcmF0b3IgYnJlYWtJdCA9IGl0LT5zZWNvbmQuZmluZChsaW5lTnVtYmVyKTsK
LSAgICBpZiAoYnJlYWtJdCA9PSBpdC0+c2Vjb25kLmVuZCgpKQorCisgICAgYm9vbCBoaXQgPSBm
YWxzZTsKKyAgICBjb25zdCBCcmVha3BvaW50c0luTGluZSYgYnJlYWtzVmVjdG9yID0gYnJlYWtz
SXQtPnNlY29uZDsKKyAgICB1bnNpZ25lZCBicmVha3NDb3VudCA9IGJyZWFrc1ZlY3Rvci5zaXpl
KCk7CisgICAgdW5zaWduZWQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkr
KykgeworICAgICAgICBpbnQgYnJlYWtDb2x1bW4gPSBicmVha3NWZWN0b3IuYXQoaSkuY29sdW1u
TnVtYmVyOworICAgICAgICBpbnQgYnJlYWtMaW5lID0gYnJlYWtzVmVjdG9yLmF0KGkpLmxpbmVO
dW1iZXI7CisgICAgICAgIGlmIChsaW5lTnVtYmVyID09IGJyZWFrTGluZSAmJiBjb2x1bW5OdW1i
ZXIgPT0gYnJlYWtDb2x1bW4pIHsKKyAgICAgICAgICAgIGhpdCA9IHRydWU7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWhpdCkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgLy8gQW4gZW1wdHkgY29uZGl0aW9uIGNvdW50cyBhcyBubyBjb25kaXRp
b24gd2hpY2ggaXMgZXF1aXZhbGVudCB0byAidHJ1ZSIuCi0gICAgaWYgKGJyZWFrSXQtPnNlY29u
ZC5jb25kaXRpb24uaXNFbXB0eSgpKQorICAgIGlmIChicmVha3NWZWN0b3IuYXQoaSkuY29uZGl0
aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBKU1ZhbHVlIGV4Y2Vw
dGlvbjsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IG1fY3VycmVudENhbGxGcmFtZS0+ZXZhbHVhdGUo
c3RyaW5nVG9VU3RyaW5nKGJyZWFrSXQtPnNlY29uZC5jb25kaXRpb24pLCBleGNlcHRpb24pOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5ldmFsdWF0ZShzdHJpbmdU
b1VTdHJpbmcoYnJlYWtzVmVjdG9yLmF0KGkpLmNvbmRpdGlvbiksIGV4Y2VwdGlvbik7CiAgICAg
aWYgKGV4Y2VwdGlvbikgewogICAgICAgICAvLyBBbiBlcnJvbmVvdXMgY29uZGl0aW9uIGNvdW50
cyBhcyAiZmFsc2UiLgogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNDksNyArNDI5LDkgQEAg
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKEphdmFT
Y3JpcHRFeGVjdXRpb25DYWxsYmFjawogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjcmVhdGVD
YWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dl
ckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQogewotICAgIFRl
eHRQb3NpdGlvbiB0ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxp
bmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpmaXJzdCgpKTsKKyAgICB1cGRhdGVDdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24oc291cmNlSUQsIGxpbmVOdW1iZXIpOworCisgICAgVGV4dFBvc2l0aW9u
IHRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobV9jdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24ubGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZyb21aZXJvQmFzZWRJ
bnQobV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyKSk7CiAgICAgbV9jdXJy
ZW50Q2FsbEZyYW1lID0gSmF2YVNjcmlwdENhbGxGcmFtZTo6Y3JlYXRlKGRlYnVnZ2VyQ2FsbEZy
YW1lLCBtX2N1cnJlbnRDYWxsRnJhbWUsIHNvdXJjZUlELCB0ZXh0UG9zaXRpb24pOwogICAgIHBh
dXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUuZHluYW1pY0dsb2JhbE9iamVjdCgpKTsKIH0K
QEAgLTM2MCw3ICs0NDIsOSBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDYWxsRnJh
bWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJgogICAgIGlmICghbV9j
dXJyZW50Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBUZXh0UG9zaXRpb24gdGV4
dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChsaW5lTnVtYmVyKSwgT3Jk
aW5hbE51bWJlcjo6Zmlyc3QoKSk7CisgICAgdXBkYXRlQ3VycmVudFN0YXRlbWVudFBvc2l0aW9u
KHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKworICAgIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb24o
T3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9u
LmxpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpmcm9tWmVyb0Jhc2VkSW50KG1fY3VycmVudFN0
YXRlbWVudFBvc2l0aW9uLmNvbHVtbk51bWJlcikpOwogICAgIG1fY3VycmVudENhbGxGcmFtZS0+
dXBkYXRlKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgdGV4dFBvc2l0aW9uKTsKICAgICBw
YXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRl
eCA4NGZiYTVjNjc4ZmM3MjVkZjI4NjJlZTlmZjNiZTY1MTg0MTIxYWE2Li4yYTAwZWIwODYzYWRl
MDY0Mzk3M2RmNDAxNjRhZmU2NGE1MmU4NzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTEzOCw3ICsxMzgsMTAgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2Vy
Q2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pOwogICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxsb25n
LCBTY3JpcHRCcmVha3BvaW50PiBMaW5lVG9CcmVha3BvaW50TWFwOworICAgIHZvaWQgdXBkYXRl
Q3VycmVudFN0YXRlbWVudFBvc2l0aW9uKGludHB0cl90LCBpbnQpOworCisgICAgdHlwZWRlZiBW
ZWN0b3I8U2NyaXB0QnJlYWtwb2ludD4gQnJlYWtwb2ludHNJbkxpbmU7CisgICAgdHlwZWRlZiBI
YXNoTWFwPGxvbmcsIEJyZWFrcG9pbnRzSW5MaW5lPiBMaW5lVG9CcmVha3BvaW50TWFwOwogICAg
IHR5cGVkZWYgSGFzaE1hcDxpbnRwdHJfdCwgTGluZVRvQnJlYWtwb2ludE1hcD4gU291cmNlSWRU
b0JyZWFrcG9pbnRzTWFwOwogCiAgICAgYm9vbCBtX2NhbGxpbmdMaXN0ZW5lcnM7CkBAIC0xNTEs
NiArMTU0LDEwIEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8SmF2YVNjcmlwdENhbGxGcmFtZT4g
bV9jdXJyZW50Q2FsbEZyYW1lOwogICAgIFNvdXJjZUlkVG9CcmVha3BvaW50c01hcCBtX3NvdXJj
ZUlkVG9CcmVha3BvaW50czsKICAgICBUaW1lcjxTY3JpcHREZWJ1Z1NlcnZlcj4gbV9yZWNvbXBp
bGVUaW1lcjsKKworICAgIFZlY3RvcjxTdHJpbmc+IG1fY3VycmVudFNvdXJjZUNvZGU7CisgICAg
aW50cHRyX3QgbV9jdXJyZW50U291cmNlSUQ7CisgICAgU2NyaXB0QnJlYWtwb2ludCBtX2N1cnJl
bnRTdGF0ZW1lbnRQb3NpdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150358</attachid>
            <date>2012-07-01 23:04:52 -0700</date>
            <delta_ts>2012-07-01 23:16:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120702140446.patch</filename>
            <type>text/plain</type>
            <size>305840</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZTFmMzk3YmNhOGMzYjlmZWUwMjAyOGQ3ZDNjOWZkYWIzMjdjNzAwLi5lNWY4MjY1ODVhNDJlMjg1
OTRmYjlhZjMwM2NlMTQzZDYwYzBjZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NTcgQEAKKzIwMTItMDctMDEgIFBldGVyIFdhbmcgIDxwZXRlci53YW5nQHRvcmNobW9i
aWxlLmNvbS5jbj4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbSlNDXSBpbXBsZW1lbnQgc2V0
dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMwMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdCBjYXNlIGZvciB0aGlzIGJ1Zy4KKwor
ICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6cGFkT3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2sp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAo
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KToKKyAgICAgICAg
KEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDb25kaXRpb25hbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0
U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RW1wdHlTdGF0ZW1l
bnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclN0YXRlbWVudE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpJZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Oklm
RWxzZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRvV2hpbGVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpXaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkZvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvckluTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29udGludWVOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OlJldHVybk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OldpdGhOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpMYWJlbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRo
cm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJv
ZHlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRo
cm93RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmRlYnVnKToKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAg
ICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEFTVEJ1aWxkZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVDb21tYUV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMb2dp
Y2FsTm90KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVW5hcnlQbHVzKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVm9pZCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OnRoaXNFeHByKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVzb2x2
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZU9iamVjdExpdGVyYWwpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJheSk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZU51bWJlckV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVh
dGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCb29sZWFuKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTnVsbCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUJyYWNrZXRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVSZWdFeHAp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVOZXdFeHByKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uZGl0aW9uYWxFeHByKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQXNzaWduUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1
bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUdldHRlck9yU2V0
dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcmd1bWVudHNM
aXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUHJvcGVydHlMaXN0KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUV4cHJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVJZlN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUZvckxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JJbkxvb3ApOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFbXB0eVN0YXRlbWVudCk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVZhclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZVJldHVyblN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUJyZWFrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlQ29udGludWVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVU
cnlTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVTd2l0Y2hTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVXaGlsZVN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVdpdGhTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVUaHJvd1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZURlYnVnZ2VyKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uc3RT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRDb25zdERlY2wpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmFwcGVuZEJpbmFyeU9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUFzc2lnbm1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlVHlwZU9mTm9kZSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VEZWxldGVOb2RlKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjptYWtlQml0d2lzZU5vdE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlTXVs
dE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRGl2Tm9kZSk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VNb2ROb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6bWFrZUFkZE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlU3ViTm9kZSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VMZWZ0U2hpZnROb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZVJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6bWFrZVVSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
Om1ha2VCaXRPck5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQml0QW5kTm9k
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VCaXRYT3JOb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1h
a2VBc3NpZ25Ob2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlUG9zdGZpeE5vZGUpOgorICAgICAgICAq
IHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6Ojo6c2V0Q29kZSk6CisgICAgICAgIChK
U0M6Ojo6aW50ZXJuYWxTaGlmdCk6CisgICAgICAgIChKU0M6Ojo6c2hpZnQpOgorICAgICAgICAo
SlNDOjo6OmxleCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6Okxl
eGVyOjpjdXJyZW50Q29sdW1uTnVtYmVyKToKKyAgICAgICAgKExleGVyKToKKyAgICAgICAgKEpT
Qzo6OjpsZXhFeHBlY3RJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oOgorICAgICAgICAoSlNDOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKEpTQzo6RXhwcmVz
c2lvbk5vZGU6OkV4cHJlc3Npb25Ob2RlKToKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6
U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6Ok51bGxOb2RlOjpOdWxsTm9kZSk6CisgICAg
ICAgIChKU0M6OkJvb2xlYW5Ob2RlOjpCb29sZWFuTm9kZSk6CisgICAgICAgIChKU0M6Ok51bWJl
ck5vZGU6Ok51bWJlck5vZGUpOgorICAgICAgICAoSlNDOjpTdHJpbmdOb2RlOjpTdHJpbmdOb2Rl
KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTm9kZTo6UmVnRXhwTm9kZSk6CisgICAgICAgIChKU0M6
OlRoaXNOb2RlOjpUaGlzTm9kZSk6CisgICAgICAgIChKU0M6OlJlc29sdmVOb2RlOjpSZXNvbHZl
Tm9kZSk6CisgICAgICAgIChKU0M6OkFycmF5Tm9kZTo6QXJyYXlOb2RlKToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZSk6CisgICAgICAgIChKU0M6Ok9i
amVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZSk6CisgICAgICAgIChKU0M6OkJyYWNr
ZXRBY2Nlc3Nvck5vZGU6OkJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoSlNDOjpEb3RB
Y2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZSk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50TGlz
dE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoSlNDOjpOZXdFeHByTm9kZTo6TmV3
RXhwck5vZGUpOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0
aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OkZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2Rl
OjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJy
YWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoSlNDOjpDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAo
SlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZSk6
CisgICAgICAgIChKU0M6OlByZVBvc3RSZXNvbHZlTm9kZTo6UHJlUG9zdFJlc29sdmVOb2RlKToK
KyAgICAgICAgKEpTQzo6UG9zdGZpeFJlc29sdmVOb2RlOjpQb3N0Zml4UmVzb2x2ZU5vZGUpOgor
ICAgICAgICAoSlNDOjpQb3N0Zml4QnJhY2tldE5vZGU6OlBvc3RmaXhCcmFja2V0Tm9kZSk6Cisg
ICAgICAgIChKU0M6OlBvc3RmaXhEb3ROb2RlOjpQb3N0Zml4RG90Tm9kZSk6CisgICAgICAgIChK
U0M6OlBvc3RmaXhFcnJvck5vZGU6OlBvc3RmaXhFcnJvck5vZGUpOgorICAgICAgICAoSlNDOjpE
ZWxldGVSZXNvbHZlTm9kZTo6RGVsZXRlUmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpEZWxl
dGVCcmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVE
b3ROb2RlOjpEZWxldGVEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlVmFsdWVOb2RlOjpE
ZWxldGVWYWx1ZU5vZGUpOgorICAgICAgICAoSlNDOjpWb2lkTm9kZTo6Vm9pZE5vZGUpOgorICAg
ICAgICAoSlNDOjpUeXBlT2ZSZXNvbHZlTm9kZTo6VHlwZU9mUmVzb2x2ZU5vZGUpOgorICAgICAg
ICAoSlNDOjpUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6
OlByZWZpeFJlc29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlBy
ZWZpeEJyYWNrZXROb2RlOjpQcmVmaXhCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OlByZWZp
eERvdE5vZGU6OlByZWZpeERvdE5vZGUpOgorICAgICAgICAoSlNDOjpQcmVmaXhFcnJvck5vZGU6
OlByZWZpeEVycm9yTm9kZSk6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjpVbmFyeU9wTm9k
ZSk6CisgICAgICAgIChKU0M6OlVuYXJ5UGx1c05vZGU6OlVuYXJ5UGx1c05vZGUpOgorICAgICAg
ICAoSlNDOjpOZWdhdGVOb2RlOjpOZWdhdGVOb2RlKToKKyAgICAgICAgKEpTQzo6Qml0d2lzZU5v
dE5vZGU6OkJpdHdpc2VOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6TG9naWNhbE5vdE5vZGU6Okxv
Z2ljYWxOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUp
OgorICAgICAgICAoSlNDOjpNdWx0Tm9kZTo6TXVsdE5vZGUpOgorICAgICAgICAoSlNDOjpEaXZO
b2RlOjpEaXZOb2RlKToKKyAgICAgICAgKEpTQzo6TW9kTm9kZTo6TW9kTm9kZSk6CisgICAgICAg
IChKU0M6OkFkZE5vZGU6OkFkZE5vZGUpOgorICAgICAgICAoSlNDOjpTdWJOb2RlOjpTdWJOb2Rl
KToKKyAgICAgICAgKEpTQzo6TGVmdFNoaWZ0Tm9kZTo6TGVmdFNoaWZ0Tm9kZSk6CisgICAgICAg
IChKU0M6OlJpZ2h0U2hpZnROb2RlOjpSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OlVu
c2lnbmVkUmlnaHRTaGlmdE5vZGU6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAo
SlNDOjpMZXNzTm9kZTo6TGVzc05vZGUpOgorICAgICAgICAoSlNDOjpHcmVhdGVyTm9kZTo6R3Jl
YXRlck5vZGUpOgorICAgICAgICAoSlNDOjpMZXNzRXFOb2RlOjpMZXNzRXFOb2RlKToKKyAgICAg
ICAgKEpTQzo6R3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9kZSk6CisgICAgICAgIChKU0M6OlRo
cm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlKToKKyAgICAgICAgKEpT
Qzo6SW5zdGFuY2VPZk5vZGU6Okluc3RhbmNlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6SW5Ob2Rl
OjpJbk5vZGUpOgorICAgICAgICAoSlNDOjpFcXVhbE5vZGU6OkVxdWFsTm9kZSk6CisgICAgICAg
IChKU0M6Ok5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKToKKyAgICAgICAgKEpTQzo6U3RyaWN0
RXF1YWxOb2RlOjpTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoSlNDOjpOb3RTdHJpY3RFcXVh
bE5vZGU6Ok5vdFN0cmljdEVxdWFsTm9kZSk6CisgICAgICAgIChKU0M6OkJpdEFuZE5vZGU6OkJp
dEFuZE5vZGUpOgorICAgICAgICAoSlNDOjpCaXRPck5vZGU6OkJpdE9yTm9kZSk6CisgICAgICAg
IChKU0M6OkJpdFhPck5vZGU6OkJpdFhPck5vZGUpOgorICAgICAgICAoSlNDOjpMb2dpY2FsT3BO
b2RlOjpMb2dpY2FsT3BOb2RlKToKKyAgICAgICAgKEpTQzo6Q29uZGl0aW9uYWxOb2RlOjpDb25k
aXRpb25hbE5vZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRN
b2RpZnlSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjpBc3Np
Z25SZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6UmVh
ZE1vZGlmeUJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduQnJhY2tldE5vZGU6OkFz
c2lnbkJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90
Tm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkVycm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKToKKyAg
ICAgICAgKEpTQzo6Q29tbWFOb2RlOjpDb21tYU5vZGUpOgorICAgICAgICAoSlNDOjpDb25zdFN0
YXRlbWVudE5vZGU6OkNvbnN0U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6OkVtcHR5U3Rh
dGVtZW50Tm9kZTo6RW1wdHlTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJT
dGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpFeHBy
U3RhdGVtZW50Tm9kZTo6RXhwclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0
ZW1lbnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6SWZOb2RlOjpJZk5v
ZGUpOgorICAgICAgICAoSlNDOjpJZkVsc2VOb2RlOjpJZkVsc2VOb2RlKToKKyAgICAgICAgKEpT
Qzo6RG9XaGlsZU5vZGU6OkRvV2hpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6V2hpbGVOb2RlOjpX
aGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjpGb3JOb2RlKToKKyAgICAgICAgKEpT
Qzo6Q29udGludWVOb2RlOjpDb250aW51ZU5vZGUpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6
OkJyZWFrTm9kZSk6CisgICAgICAgIChKU0M6OlJldHVybk5vZGU6OlJldHVybk5vZGUpOgorICAg
ICAgICAoSlNDOjpXaXRoTm9kZTo6V2l0aE5vZGUpOgorICAgICAgICAoSlNDOjpMYWJlbE5vZGU6
OkxhYmVsTm9kZSk6CisgICAgICAgIChKU0M6OlRocm93Tm9kZTo6VGhyb3dOb2RlKToKKyAgICAg
ICAgKEpTQzo6VHJ5Tm9kZTo6VHJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmNFeHByTm9kZTo6
RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUp
OgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKToKKyAgICAgICAgKEpTQzo6
Q29uc3REZWNsTm9kZTo6Q29uc3REZWNsTm9kZSk6CisgICAgICAgIChKU0M6OkJsb2NrTm9kZTo6
QmxvY2tOb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjpGb3JJbk5vZGUpOgorICAgICAg
ICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OnNldExv
Yyk6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6U2NvcGVOb2RlKToKKyAgICAgICAgKEpTQzo6
UHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkV2YWxOb2RlOjpFdmFsTm9kZSk6CisgICAgICAgIChKU0M6
OkV2YWxOb2RlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpGdW5j
dGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlND
OjpOb2RlOjpjb2x1bW5Obyk6CisgICAgICAgIChFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChT
dGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6Y29sdW1uKToKKyAg
ICAgICAgKE51bGxOb2RlKToKKyAgICAgICAgKEJvb2xlYW5Ob2RlKToKKyAgICAgICAgKE51bWJl
ck5vZGUpOgorICAgICAgICAoU3RyaW5nTm9kZSk6CisgICAgICAgIChSZWdFeHBOb2RlKToKKyAg
ICAgICAgKFRoaXNOb2RlKToKKyAgICAgICAgKFJlc29sdmVOb2RlKToKKyAgICAgICAgKEFycmF5
Tm9kZSk6CisgICAgICAgIChQcm9wZXJ0eUxpc3ROb2RlKToKKyAgICAgICAgKE9iamVjdExpdGVy
YWxOb2RlKToKKyAgICAgICAgKEJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoRG90QWNj
ZXNzb3JOb2RlKToKKyAgICAgICAgKEFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoTmV3RXhw
ck5vZGUpOgorICAgICAgICAoRXZhbEZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoRnVuY3Rp
b25DYWxsVmFsdWVOb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKToKKyAg
ICAgICAgKEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbERv
dE5vZGUpOgorICAgICAgICAoQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKFByZVBvc3RSZXNvbHZlTm9kZSk6Cisg
ICAgICAgIChQb3N0Zml4UmVzb2x2ZU5vZGUpOgorICAgICAgICAoUG9zdGZpeEJyYWNrZXROb2Rl
KToKKyAgICAgICAgKFBvc3RmaXhEb3ROb2RlKToKKyAgICAgICAgKFBvc3RmaXhFcnJvck5vZGUp
OgorICAgICAgICAoRGVsZXRlUmVzb2x2ZU5vZGUpOgorICAgICAgICAoRGVsZXRlQnJhY2tldE5v
ZGUpOgorICAgICAgICAoRGVsZXRlRG90Tm9kZSk6CisgICAgICAgIChEZWxldGVWYWx1ZU5vZGUp
OgorICAgICAgICAoVm9pZE5vZGUpOgorICAgICAgICAoVHlwZU9mUmVzb2x2ZU5vZGUpOgorICAg
ICAgICAoVHlwZU9mVmFsdWVOb2RlKToKKyAgICAgICAgKFByZWZpeFJlc29sdmVOb2RlKToKKyAg
ICAgICAgKFByZWZpeEJyYWNrZXROb2RlKToKKyAgICAgICAgKFByZWZpeERvdE5vZGUpOgorICAg
ICAgICAoUHJlZml4RXJyb3JOb2RlKToKKyAgICAgICAgKFVuYXJ5T3BOb2RlKToKKyAgICAgICAg
KFVuYXJ5UGx1c05vZGUpOgorICAgICAgICAoTmVnYXRlTm9kZSk6CisgICAgICAgIChCaXR3aXNl
Tm90Tm9kZSk6CisgICAgICAgIChMb2dpY2FsTm90Tm9kZSk6CisgICAgICAgIChCaW5hcnlPcE5v
ZGUpOgorICAgICAgICAoTXVsdE5vZGUpOgorICAgICAgICAoRGl2Tm9kZSk6CisgICAgICAgIChN
b2ROb2RlKToKKyAgICAgICAgKEFkZE5vZGUpOgorICAgICAgICAoU3ViTm9kZSk6CisgICAgICAg
IChMZWZ0U2hpZnROb2RlKToKKyAgICAgICAgKFJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKFVu
c2lnbmVkUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAoTGVzc05vZGUpOgorICAgICAgICAoR3Jl
YXRlck5vZGUpOgorICAgICAgICAoTGVzc0VxTm9kZSk6CisgICAgICAgIChHcmVhdGVyRXFOb2Rl
KToKKyAgICAgICAgKFRocm93YWJsZUJpbmFyeU9wTm9kZSk6CisgICAgICAgIChJbnN0YW5jZU9m
Tm9kZSk6CisgICAgICAgIChJbk5vZGUpOgorICAgICAgICAoRXF1YWxOb2RlKToKKyAgICAgICAg
KE5vdEVxdWFsTm9kZSk6CisgICAgICAgIChTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoTm90
U3RyaWN0RXF1YWxOb2RlKToKKyAgICAgICAgKEJpdEFuZE5vZGUpOgorICAgICAgICAoQml0T3JO
b2RlKToKKyAgICAgICAgKEJpdFhPck5vZGUpOgorICAgICAgICAoTG9naWNhbE9wTm9kZSk6Cisg
ICAgICAgIChDb25kaXRpb25hbE5vZGUpOgorICAgICAgICAoUmVhZE1vZGlmeVJlc29sdmVOb2Rl
KToKKyAgICAgICAgKEFzc2lnblJlc29sdmVOb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlCcmFj
a2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25CcmFja2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25E
b3ROb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKEFzc2lnbkVy
cm9yTm9kZSk6CisgICAgICAgIChDb21tYU5vZGUpOgorICAgICAgICAoQ29uc3REZWNsTm9kZSk6
CisgICAgICAgIChDb25zdFN0YXRlbWVudE5vZGUpOgorICAgICAgICAoQmxvY2tOb2RlKToKKyAg
ICAgICAgKEVtcHR5U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChEZWJ1Z2dlclN0YXRlbWVudE5v
ZGUpOgorICAgICAgICAoRXhwclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoVmFyU3RhdGVtZW50
Tm9kZSk6CisgICAgICAgIChJZk5vZGUpOgorICAgICAgICAoSWZFbHNlTm9kZSk6CisgICAgICAg
IChEb1doaWxlTm9kZSk6CisgICAgICAgIChXaGlsZU5vZGUpOgorICAgICAgICAoRm9yTm9kZSk6
CisgICAgICAgIChGb3JJbk5vZGUpOgorICAgICAgICAoQ29udGludWVOb2RlKToKKyAgICAgICAg
KEJyZWFrTm9kZSk6CisgICAgICAgIChSZXR1cm5Ob2RlKToKKyAgICAgICAgKFdpdGhOb2RlKToK
KyAgICAgICAgKExhYmVsTm9kZSk6CisgICAgICAgIChUaHJvd05vZGUpOgorICAgICAgICAoVHJ5
Tm9kZSk6CisgICAgICAgIChTY29wZU5vZGUpOgorICAgICAgICAoUHJvZ3JhbU5vZGUpOgorICAg
ICAgICAoRXZhbE5vZGUpOgorICAgICAgICAoRnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAgICAgIChG
dW5jRXhwck5vZGUpOgorICAgICAgICAoRnVuY0RlY2xOb2RlKToKKyAgICAgICAgKFN3aXRjaE5v
ZGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6OnBhcnNl
VmFyRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29uc3REZWNsYXJhdGlvbik6
CisgICAgICAgIChKU0M6Ojo6cGFyc2VEb1doaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZVdoaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVZhckRlY2xhcmF0
aW9uTGlzdCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25zdERlY2xhcmF0aW9uTGlzdCk6Cisg
ICAgICAgIChKU0M6Ojo6cGFyc2VGb3JTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNl
QnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29udGludWVTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjo6OnBhcnNlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZVRocm93U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVdpdGhTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZVRyeVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VEZWJ1Z2dlclN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VCbG9ja1N0YXRlbWVudCk6CisgICAgICAg
IChKU0M6Ojo6cGFyc2VTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlRnVuY3Rpb25C
b2R5KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJl
c3Npb25PckxhYmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJlc3Npb25T
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlSWZTdGF0ZW1lbnQpOgorICAgICAgICAo
SlNDOjo6OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjo6OnBhcnNlQmluYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VPYmplY3RMaXRlcmFsKToK
KyAgICAgICAgKEpTQzo6OjpwYXJzZVN0cmljdE9iamVjdExpdGVyYWwpOgorICAgICAgICAoSlND
Ojo6OnBhcnNlQXJyYXlMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVByaW1hcnlFeHBy
ZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVVuYXJ5RXhw
cmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQYXJz
ZXI6OnRva2VuQ29sdW1uKToKKyAgICAgICAgKFBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNl
cjo6Z2V0VG9rZW5OYW1lKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZSk6CisgICAgICAgICogcGFy
c2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAoSlNDOjpKU1Rva2VuSW5mbzo6SlNUb2tlbklu
Zm8pOgorICAgICAgICAoSlNUb2tlbkluZm8pOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVj
a2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2Rl
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ29tbWFFeHByKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjptYWtlUHJlZml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6Om1ha2VQb3N0Zml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VU
eXBlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZURlbGV0ZU5vZGUp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlTmVnYXRlTm9kZSk6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VCaXR3aXNlTm90Tm9kZSk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpTeW50YXhD
aGVja2VyOjpjcmVhdGVVbmFyeVBsdXMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVWb2lkKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6dGhpc0V4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUFycmF5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlTnVtYmVyRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN0cmlu
Zyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJvb2xlYW4pOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOdWxsKToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQnJhY2tldEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZVJlZ0V4cCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU5ld0V4cHIpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDb25kaXRpb25hbEV4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVBc3NpZ25SZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQXJndW1lbnRzTGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZVByb3BlcnR5TGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OnNl
dFVzZXNBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5j
RGVjbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJsb2Nr
U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRXhwclN0YXRl
bWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUlmU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRm9yTG9vcCk6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUVtcHR5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlVmFyU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlQnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVD
b250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRy
eVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN3aXRjaFN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVdoaWxlU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlV2l0aFN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6CisgICAg
ICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRocm93U3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRGVidWdnZXIpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVDb25zdFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENo
ZWNrZXI6OmFwcGVuZENvbnN0RGVjbCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2Vy
Ojpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJh
dG9yU3RhY2tQb3ApOgorCiAyMDEyLTA2LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgSlNDIHNob3VsZCB0cnkgdG8gbWFrZSBwcm9maWxpbmcgZGV0ZXJtaW5p
c3RpYyBiZWNhdXNlIG90aGVyd2lzZSByZXByb2R1Y2luZyBmYWlsdXJlcyBpcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDQ2ZGYxMDQ2MWMzYWVkMDUxNWQxODAzMTQ4NmQzMDRkY2RjMzQ5OWEuLjc0NDcxMGJiZjc2
MjgwMWIzNDYxMmEzM2VhMTYwYzNlN2FlM2UxNDMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBA
QAorMjAxMi0wNy0wMSAgUGV0ZXIgV2FuZyAgPHBldGVyLndhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtKU0NdIGltcGxlbWVudCBzZXR0aW5nIGJyZWFr
cG9pbnRzIGJ5IGxpbmU6Y29sdW1uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MzAwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OnNldEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2
ZXI6OnJlbW92ZUJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ3VycmVudFN0YXRlbWVudFBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpjcmVhdGVDYWxsRnJhbWVBbmRQYXVz
ZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVD
YWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpjYWxsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OmF0U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpyZXR1
cm5FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZXhjZXB0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjp3aWxsRXhlY3V0ZVByb2dy
YW0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmRpZEV4ZWN1dGVQcm9n
cmFtKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpkaWRSZWFjaEJyZWFr
cG9pbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAg
ICAgIChTY3JpcHREZWJ1Z1NlcnZlcik6CisKIDIwMTItMDYtMjYgIEtlbnQgVGFtdXJhICA8dGtl
bnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlZmFjdG9yaW5nOiBTaW1wbGlmeSBGb3JtQ29u
dHJvbGxlciBpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApp
bmRleCBlMGNmZjE2NWE4OGM5MzNhNTg4MzAzODZjYjU4MThhNmZlN2ExMzFhLi41MjYyMmNkN2E4
YzViOTQxYzNmNTRlN2ExMDQ1NzEwMjE0NTRmNjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCkBAIC0xOTAsNyArMTkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIG1hY3JvKG9wX3Rocm93LCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX3Rocm93X3JlZmVyZW5j
ZV9lcnJvciwgMikgXAogICAgICAgICBcCi0gICAgICAgIG1hY3JvKG9wX2RlYnVnLCA0KSBcCisg
ICAgICAgIG1hY3JvKG9wX2RlYnVnLCA1KSBcCiAgICAgICAgIG1hY3JvKG9wX3Byb2ZpbGVfd2ls
bF9jYWxsLCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX3Byb2ZpbGVfZGlkX2NhbGwsIDIpIFwKICAg
ICAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA4OTY5YTdmMjViMjdlOWZjZTk2NTUwYWVkNTVm
MTI3M2MwNDdlMmZhLi4yOTdiMDA4MjNjMDEyNjYzZWQzYWRmMDY3N2ZmZWE5NmNiNDk4MDYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtMjAzNyw3ICsyMDM3LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFBvcFNjb3BlKCkKICAgICBtX2R5bmFtaWNTY29wZURlcHRoLS07CiB9CiAKLXZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2soRGVidWdIb29rSUQgZGVidWdIb29r
SUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREZWJ1Z0hvb2soRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGlu
dCBsYXN0TGluZSwgaW50IGNvbHVtbikKIHsKICNpZiBFTkFCTEUoREVCVUdfV0lUSF9CUkVBS1BP
SU5UKQogICAgIGlmIChkZWJ1Z0hvb2tJRCAhPSBEaWRSZWFjaEJyZWFrcG9pbnQpCkBAIC0yMDUw
LDYgKzIwNTAsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVidWdIb29rKERlYnVn
SG9va0lEIGRlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbgogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkZWJ1Z0hvb2tJRCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZpcnN0TGlu
ZSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGxhc3RMaW5lKTsKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoY29sdW1uKTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaEZp
bmFsbHlDb250ZXh0KFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jaykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRl
eCA4YjFkMWQ3NDRiYTJhOTJiNDQyNmY3MzBhMWRjMzhkMjNmN2IwNzg5Li5iMTRiNzBhZmYxZWUy
NjAyZDQzYzExNGMyOGRiNTRhMTdlNGZkM2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01MDYsNyArNTA2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXNoU2NvcGUo
UmVnaXN0ZXJJRCogc2NvcGUpOwogICAgICAgICB2b2lkIGVtaXRQb3BTY29wZSgpOwogCi0gICAg
ICAgIHZvaWQgZW1pdERlYnVnSG9vayhEZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxh
c3RMaW5lKTsKKyAgICAgICAgdm9pZCBlbWl0RGVidWdIb29rKERlYnVnSG9va0lELCBpbnQgZmly
c3RMaW5lLCBpbnQgbGFzdExpbmUsIGludCBjb2x1bW4pOwogCiAgICAgICAgIGludCBzY29wZURl
cHRoKCkgeyByZXR1cm4gbV9keW5hbWljU2NvcGVEZXB0aCArIG1fZmluYWxseURlcHRoOyB9CiAg
ICAgICAgIGJvb2wgaGFzRmluYWxpc2VyKCkgeyByZXR1cm4gbV9maW5hbGx5RGVwdGggIT0gMDsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCmluZGV4IGQyNDNlOGNlMDA4NDliNTUyZDk4ZGIwNTAxYzM2OWE0MTVkMmVkMGEuLmMx
YjdmNTRhYjViMGVjNmUwMDk2N2MwOTRlNmZhMjI1ZjQ0YTM5MTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTIwMiwx
OCArMjAyLDE4IEBAIGJvb2wgQXJyYXlOb2RlOjppc1NpbXBsZUFycmF5KCkgY29uc3QKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotQXJndW1lbnRMaXN0Tm9kZSogQXJyYXlOb2RlOjp0b0FyZ3VtZW50
TGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyKSBjb25zdAorQXJn
dW1lbnRMaXN0Tm9kZSogQXJyYXlOb2RlOjp0b0FyZ3VtZW50TGlzdChKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKSBjb25zdAogewogICAg
IEFTU0VSVCghbV9lbGlzaW9uICYmICFtX29wdGlvbmFsKTsKICAgICBFbGVtZW50Tm9kZSogcHRy
ID0gbV9lbGVtZW50OwogICAgIGlmICghcHRyKQogICAgICAgICByZXR1cm4gMDsKLSAgICBBcmd1
bWVudExpc3ROb2RlKiBoZWFkID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxp
bmVOdW1iZXIsIHB0ci0+dmFsdWUoKSk7CisgICAgQXJndW1lbnRMaXN0Tm9kZSogaGVhZCA9IG5l
dyAoZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IHB0ci0+dmFsdWUoKSk7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogdGFpbCA9IGhlYWQ7CiAgICAg
cHRyID0gcHRyLT5uZXh0KCk7CiAgICAgZm9yICg7IHB0cjsgcHRyID0gcHRyLT5uZXh0KCkpIHsK
ICAgICAgICAgQVNTRVJUKCFwdHItPmVsaXNpb24oKSk7Ci0gICAgICAgIHRhaWwgPSBuZXcgKGds
b2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgdGFpbCwgcHRyLT52YWx1ZSgp
KTsKKyAgICAgICAgdGFpbCA9IG5ldyAoZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIHRhaWwsIHB0ci0+dmFsdWUoKSk7CiAgICAgfQogICAgIHJl
dHVybiBoZWFkOwogfQpAQCAtNTM2LDcgKzUzNiw3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rp
b25DYWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
CiAgICAgICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CiAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHBy
LT5pc1NpbXBsZUFycmF5KCkpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+
bV9saXN0Tm9kZS0+bV9uZXh0LT5tX25leHQpOwotICAgICAgICAgICAgICAgICAgICBtX2FyZ3Mt
Pm1fbGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUt
Pm1fbmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLmdsb2JhbERhdGEoKSwg
MCk7CisgICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0
PEFycmF5Tm9kZSo+KG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3Vt
ZW50TGlzdChnZW5lcmF0b3IuZ2xvYmFsRGF0YSgpLCAwLCAwKTsKICAgICAgICAgICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShn
ZW5lcmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAg
ICAgICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwog
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlz
UmVnaXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKQEAgLTExMjgsNiArMTEyOCw4IEBAIFJlZ2lz
dGVySUQqIENvbmRpdGlvbmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVyCiAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVFbHNlID0gZ2VuZXJh
dG9yLm5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPExhYmVsPiBhZnRlckVsc2UgPSBnZW5lcmF0b3Iu
bmV3TGFiZWwoKTsKIAorICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBsaW5lTm8oKSwgbGluZU5vKCksIGNvbHVtbk5vKCkpOworCiAgICAgaWYgKG1fbG9n
aWNhbC0+aGFzQ29uZGl0aW9uQ29udGV4dENvZGVnZW4oKSkgewogICAgICAgICBSZWZQdHI8TGFi
ZWw+IGJlZm9yZVRoZW4gPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0KG1fbG9naWNhbCwgYmVmb3JlVGhlbi5nZXQoKSwg
YmVmb3JlRWxzZS5nZXQoKSwgdHJ1ZSk7CkBAIC0xMzg1LDcgKzEzODcsNyBAQCBSZWdpc3RlcklE
KiBDb25zdERlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRAogCiBSZWdpc3RlcklEKiBDb25zdFN0YXRlbWVudE5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdE5vZGUobV9uZXh0KTsKIH0KIApAQCAtMTQyOCw3ICsxNDMwLDcgQEAgUmVn
aXN0ZXJJRCogQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCogRW1wdHlTdGF0ZW1lbnROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAg
ICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMTQzNiw3ICsxNDM4LDcgQEAgUmVnaXN0ZXJJRCogRW1w
dHlTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXMKIAogUmVnaXN0ZXJJRCogRGVidWdnZXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZFJlYWNoQnJlYWtwb2ludCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZFJlYWNoQnJlYWtw
b2ludCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICByZXR1cm4gZHN0
OwogfQogCkBAIC0xNDQ1LDcgKzE0NDcsNyBAQCBSZWdpc3RlcklEKiBEZWJ1Z2dlclN0YXRlbWVu
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogUmVn
aXN0ZXJJRCogRXhwclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQVNTRVJUKG1fZXhwcik7Ci0g
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpKTsgCisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1
dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgcmV0
dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZXhwcik7CiB9CiAKQEAgLTE0NTQsNyArMTQ1
Niw3IEBAIFJlZ2lzdGVySUQqIEV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiBSZWdpc3RlcklEKiBWYXJTdGF0ZW1lbnRO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCopCiB7CiAgICAgQVNTRVJUKG1fZXhwcik7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2so
V2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5l
cmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxh
c3RMaW5lKCksIGNvbHVtbigpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhw
cik7CiB9CiAKQEAgLTE0NjIsNyArMTQ2NCw3IEBAIFJlZ2lzdGVySUQqIFZhclN0YXRlbWVudE5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAK
IFJlZ2lzdGVySUQqIElmTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY29sdW1uKCkpOwogICAgIAogICAgIFJlZlB0cjxMYWJlbD4gYWZ0ZXJUaGVuID0g
Z2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAKQEAgLTE0ODYsNyArMTQ4OCw3IEBAIFJlZ2lzdGVySUQq
IElmTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKIAogUmVnaXN0ZXJJRCogSWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50
LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIAogICAgIFJlZlB0cjxM
YWJlbD4gYmVmb3JlRWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxMYWJl
bD4gYWZ0ZXJFbHNlID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CkBAIC0xNTIyLDEyICsxNTI0LDEx
IEBAIFJlZ2lzdGVySUQqIERvV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBSZWZQdHI8TGFiZWw+IHRvcE9mTG9vcCA9
IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwodG9wT2ZMb29w
LmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdExvb3BIaW50KCk7Ci0gICAgZ2VuZXJhdG9yLmVt
aXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgp
KTsKICAgIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUoZHN0LCBtX3N0YXRlbWVudCk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5j
b250aW51ZVRhcmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSk7CisgICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxhc3RMaW5lKCksIGxh
c3RMaW5lKCksIGNvbHVtbigpKTsKICAgICBpZiAobV9leHByLT5oYXNDb25kaXRpb25Db250ZXh0
Q29kZWdlbigpKQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQo
bV9leHByLCB0b3BPZkxvb3AuZ2V0KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCBmYWxzZSk7CiAg
ICAgZWxzZSB7CkBAIC0xNTQ2LDcgKzE1NDcsNyBAQCBSZWdpc3RlcklEKiBXaGlsZU5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwog
ICAgIFJlZlB0cjxMYWJlbFNjb3BlPiBzY29wZSA9IGdlbmVyYXRvci5uZXdMYWJlbFNjb3BlKExh
YmVsU2NvcGU6Okxvb3ApOwogICAgIFJlZlB0cjxMYWJlbD4gdG9wT2ZMb29wID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIG1fZXhwci0+bGluZU5vKCks
IG1fZXhwci0+bGluZU5vKCksIG1fZXhwci0+Y29sdW1uTm8oKSk7CiAgICAgaWYgKG1fZXhwci0+
aGFzQ29uZGl0aW9uQ29udGV4dENvZGVnZW4oKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
SW5Db25kaXRpb25Db250ZXh0KG1fZXhwciwgdG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJlYWtU
YXJnZXQoKSwgdHJ1ZSk7CiAgICAgZWxzZSB7CkBAIC0xNTYwLDcgKzE1NjEsNyBAQCBSZWdpc3Rl
cklEKiBXaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkcwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50
KTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwot
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHIt
PmxpbmVObygpLCBtX2V4cHItPmxpbmVObygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigp
KTsKIAogICAgIGlmIChtX2V4cHItPmhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9v
cC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFyZ2V0KCksIGZhbHNlKTsKQEAgLTE1ODEsNyArMTU4Miw3
IEBAIFJlZ2lzdGVySUQqIEZvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNj
b3BlID0gZ2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CiAKLSAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAgaWYgKG1f
ZXhwcjEpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3Vs
dCgpLCBtX2V4cHIxKTsKQEAgLTE2MDIsNyArMTYwMyw3IEBAIFJlZ2lzdGVySUQqIEZvck5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZShk
c3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRp
bnVlVGFyZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1
bW4oKSk7CiAgICAgaWYgKG1fZXhwcjMpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5l
cmF0b3IuaWdub3JlZFJlc3VsdCgpLCBtX2V4cHIzKTsKIApAQCAtMTYyOSw3ICsxNjMwLDcgQEAg
UmVnaXN0ZXJJRCogRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKICAgICBpZiAoIW1fbGV4cHItPmlzTG9jYXRpb24oKSkK
ICAgICAgICAgcmV0dXJuIGVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGdlbmVyYXRvciwgIkxlZnQg
c2lkZSBvZiBmb3ItaW4gc3RhdGVtZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4iKTsKIAotICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwg
bGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0
ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBpZiAobV9p
bml0KQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQo
KSwgbV9pbml0KTsKQEAgLTE2OTIsNyArMTY5Myw3IEBAIFJlZ2lzdGVySUQqIEZvckluTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKICAg
ICBnZW5lcmF0b3IuZW1pdE5leHRQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lLCBiYXNlLmdldCgp
LCBpLmdldCgpLCBzaXplLmdldCgpLCBpdGVyLmdldCgpLCBsb29wU3RhcnQuZ2V0KCkpOwotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgZ2VuZXJh
dG9yLmVtaXRMYWJlbChzY29wZS0+YnJlYWtUYXJnZXQoKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0K
QEAgLTE3MDIsNyArMTcwMyw3IEBAIFJlZ2lzdGVySUQqIEZvckluTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAvLyBFQ01BIDEy
LjcKIFJlZ2lzdGVySUQqIENvbnRpbnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOwor
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExp
bmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIAogICAgIExhYmVsU2NvcGUqIHNjb3Bl
ID0gZ2VuZXJhdG9yLmNvbnRpbnVlVGFyZ2V0KG1faWRlbnQpOwogICAgIEFTU0VSVChzY29wZSk7
CkBAIC0xNzE2LDcgKzE3MTcsNyBAQCBSZWdpc3RlcklEKiBDb250aW51ZU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogLy8gRUNNQSAx
Mi44CiBSZWdpc3RlcklEKiBCcmVha05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAg
ICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5l
KCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICAKICAgICBMYWJlbFNjb3BlKiBzY29wZSA9
IGdlbmVyYXRvci5icmVha1RhcmdldChtX2lkZW50KTsKICAgICBBU1NFUlQoc2NvcGUpOwpAQCAt
MTcyOSw3ICsxNzMwLDcgQEAgUmVnaXN0ZXJJRCogQnJlYWtOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCog
UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwg
Y29sdW1uKCkpOwogICAgIEFTU0VSVChnZW5lcmF0b3IuY29kZVR5cGUoKSA9PSBGdW5jdGlvbkNv
ZGUpOwogCiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtMTc0
NSw3ICsxNzQ2LDcgQEAgUmVnaXN0ZXJJRCogUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRKdW1wU2NvcGVzKGwwLmdldCgpLCAwKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJl
bChsMC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2
ZUNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNv
bHVtbigpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOwogfQogCkBAIC0x
NzUzLDcgKzE3NTQsNyBAQCBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogCiBSZWdpc3RlcklEKiBX
aXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29s
dW1uKCkpOwogICAgIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoc2NvcGUuZ2V0KCksIG1fZXhw
cik7IC8vIHNjb3BlIG11c3QgYmUgcHJvdGVjdGVkIHVudGlsIHBvcHBlZApAQCAtMTkxOCw3ICsx
OTE5LDcgQEAgUmVnaXN0ZXJJRCogQ2FzZUJsb2NrTm9kZTo6ZW1pdEJ5dGVjb2RlRm9yQmxvY2so
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUKIAogUmVnaXN0ZXJJRCogU3dpdGNoTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkp
OwogICAgIAogICAgIFJlZlB0cjxMYWJlbFNjb3BlPiBzY29wZSA9IGdlbmVyYXRvci5uZXdMYWJl
bFNjb3BlKExhYmVsU2NvcGU6OlN3aXRjaCk7CiAKQEAgLTE5MzMsNyArMTkzNCw3IEBAIFJlZ2lz
dGVySUQqIFN3aXRjaE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkCiAKIFJlZ2lzdGVySUQqIExhYmVsTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAgQVNTRVJU
KCFnZW5lcmF0b3IuYnJlYWtUYXJnZXQobV9uYW1lKSk7CiAKQEAgLTE5NDgsNyArMTk0OSw3IEBA
IFJlZ2lzdGVySUQqIExhYmVsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAKIFJlZ2lzdGVySUQqIFRocm93Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsK
LSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVj
dXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAg
aWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICBkc3QgPSAwOwpA
QCAtMTk2NSw3ICsxOTY2LDcgQEAgUmVnaXN0ZXJJRCogVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICAvLyBOT1RF
OiBUaGUgY2F0Y2ggYW5kIGZpbmFsbHkgYmxvY2tzIG11c3QgYmUgbGFiZWxlZCBleHBsaWNpdGx5
LCBzbyB0aGUKICAgICAvLyBvcHRpbWl6ZXIga25vd3MgdGhleSBtYXkgYmUganVtcGVkIHRvIGZy
b20gYW55d2hlcmUuCiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29s
dW1uKCkpOwogCiAgICAgUmVmUHRyPExhYmVsPiB0cnlTdGFydExhYmVsID0gZ2VuZXJhdG9yLm5l
d0xhYmVsKCk7CiAgICAgaWYgKG1fZmluYWxseUJsb2NrKQpAQCAtMjAyMiwxMyArMjAyMywxMyBA
QCBpbmxpbmUgdm9pZCBTY29wZU5vZGU6OmVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaQogCiBSZWdpc3RlcklEKiBQcm9ncmFtTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewot
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5l
KCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
UHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKIAogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBkc3RSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAg
ICBnZW5lcmF0b3IuZW1pdExvYWQoZHN0UmVnaXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwog
ICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7
CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1
dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGdlbmVy
YXRvci5lbWl0RW5kKGRzdFJlZ2lzdGVyLmdldCgpKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTIw
MzcsMTMgKzIwMzgsMTMgQEAgUmVnaXN0ZXJJRCogUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAogUmVnaXN0ZXJJRCog
RXZhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKikKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVByb2dy
YW0sIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZVByb2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7
CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZHN0UmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdFJlZ2lzdGVyLmdldCgpLCBqc1Vu
ZGVmaW5lZCgpKTsKICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZHN0UmVn
aXN0ZXIuZ2V0KCkpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRXhlY3V0ZVBy
b2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigp
KTsKICAgICBnZW5lcmF0b3IuZW1pdEVuZChkc3RSZWdpc3Rlci5nZXQoKSk7CiAgICAgcmV0dXJu
IDA7CiB9CkBAIC0yMDUyLDcgKzIwNTMsNyBAQCBSZWdpc3RlcklEKiBFdmFsTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiBSZWdp
c3RlcklEKiBGdW5jdGlvbkJvZHlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2so
RGlkRW50ZXJDYWxsRnJhbWUsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2Vu
ZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSk7CiAKICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0
ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKQEAgLTIwNjgsNyArMjA2OSw3IEBAIFJl
Z2lzdGVySUQqIEZ1bmN0aW9uQm9keU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11
c3QgYXV0b21hdGljYWxseSBpbnNlcnQgb25lLgogICAgIGlmICghcmV0dXJuTm9kZSkgewogICAg
ICAgICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0
b3IudGhpc1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7
Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgZmly
c3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsTGVhdmVDYWxsRnJhbWUsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAg
ICAgICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAppbmRleCBhMjM3MzI5
MTg3ODAzZWRhOTU3YTM3ZDNhMGE5MDdhZmYwYjg5MjMyLi5hMDNmZGY5ZTRiMmQ0NDNhMmU5MzU0
MGU3NDQwNmIwOWYwYTc2MGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXIuaApAQCAtNDIsMTQgKzQyLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGV0YWNoKEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICAgICAgdmlydHVhbCB2b2lk
IHNvdXJjZVBhcnNlZChFeGVjU3RhdGUqLCBTb3VyY2VQcm92aWRlciosIGludCBlcnJvckxpbmVO
dW1iZXIsIGNvbnN0IFVTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNl
SUQsIGludCBsaW5lTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpID0gMDsKLSAgICAgICAgdmlydHVh
bCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291
cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZl
bnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVO
dW1iZXIpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0IERlYnVn
Z2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGJvb2wg
aGFzSGFuZGxlcikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3Qg
RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNhbGxFdmVudChjb25z
dCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlcikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuRXZlbnQo
Y29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIpID0gMDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4
ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJv
Z3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGlu
ZU51bWJlcikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hCcmVha3BvaW50KGNv
bnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVy
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVi
dWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEV4ZWN1dGVQcm9ncmFt
KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFj
aEJyZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpID0gMDsKIAogICAgICAgICB2b2lkIHJl
Y29tcGlsZUFsbEpTRnVuY3Rpb25zKEpTR2xvYmFsRGF0YSopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBiODYxMGU3YmZi
Yzg1ZTgxN2MxOWU5Y2Q4NjExMGI4MWJkNGU5MDFiLi4zMGQyODdmZDQ4MTBkNjVhY2MwMGI1Njc5
ZTU3ZWQwNDlhM2I4MGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTcxMiw5ICs3MTIsOSBAQCBORVZFUl9JTkxJTkUgYm9v
bCBJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKENhbGxGcmFtZSomIGNhbGxGcmFtZSwgSlNW
YWx1ZSBleAogICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPmR5bmFtaWNH
bG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkgewogICAgICAgICBEZWJ1Z2dlckNhbGxGcmFtZSBk
ZWJ1Z2dlckNhbGxGcmFtZShjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlKTsKICAgICAgICAgaWYg
KGNhbGxGcmFtZS0+Y2FsbGVlKCkpCi0gICAgICAgICAgICBkZWJ1Z2dlci0+cmV0dXJuRXZlbnQo
ZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlE
KCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmxhc3RMaW5lKCkpOworICAgICAgICAg
ICAgZGVidWdnZXItPnJldHVybkV2ZW50KGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LT5sYXN0TGluZSgpLCAwKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZGVidWdnZXItPmRp
ZEV4ZWN1dGVQcm9ncmFtKGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLT5zb3VyY2VJRCgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5sYXN0TGlu
ZSgpKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRFeGVjdXRlUHJvZ3JhbShkZWJ1Z2dlckNh
bGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bGFzdExpbmUoKSwgMCk7CiAgICAgfQogCiAgICAgLy8g
SWYgdGhpcyBjYWxsIGZyYW1lIGNyZWF0ZWQgYW4gYWN0aXZhdGlvbiBvciBhbiAnYXJndW1lbnRz
JyBvYmplY3QsIHRlYXIgaXQgb2ZmLgpAQCAtMTAzNiw3ICsxMDM2LDcgQEAgTkVWRVJfSU5MSU5F
IEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6dGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYgY2Fs
bEZyYW1lLCBKU1YKICAgICBpZiAoRGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1lLT5keW5h
bWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpIHsKICAgICAgICAgRGVidWdnZXJDYWxsRnJh
bWUgZGVidWdnZXJDYWxsRnJhbWUoY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSk7CiAgICAgICAg
IGJvb2wgaGFzSGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgZGVidWdnZXItPmV4Y2VwdGlvbihkZWJ1Z2dlckNhbGxG
cmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJsb2Nr
LT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLCBoYXNIYW5kbGVy
KTsKKyAgICAgICAgZGVidWdnZXItPmV4Y2VwdGlvbihkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJsb2NrLT5saW5lTnVtYmVy
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLCAwLCBoYXNIYW5kbGVyKTsKICAgICB9
CiAKICAgICAvLyBDYWxjdWxhdGUgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdlBDLCB1bndpbmRpbmcg
Y2FsbCBmcmFtZXMgYXMgbmVjZXNzYXJ5LgpAQCAtMTYyNCw3ICsxNjI0LDcgQEAgSlNWYWx1ZSBJ
bnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEpTVmFsdWUKICAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCi1O
RVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6ZGVidWcoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IERlYnVnSG9va0lEIGRlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCitO
RVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6ZGVidWcoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IERlYnVnSG9va0lEIGRlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUsIGlu
dCBjb2x1bW4pCiB7CiAgICAgRGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1lLT5keW5hbWlj
R2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7CiAgICAgaWYgKCFkZWJ1Z2dlcikKQEAgLTE2MzIs
MjIgKzE2MzIsMjIgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRlYnVnKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2sKIAogICAgIHN3aXRjaCAoZGVi
dWdIb29rSUQpIHsKICAgICAgICAgY2FzZSBEaWRFbnRlckNhbGxGcmFtZToKLSAgICAgICAgICAg
IGRlYnVnZ2VyLT5jYWxsRXZlbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5v
d25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgZmlyc3RMaW5lKTsKKyAgICAgICAgICAgIGRl
YnVnZ2VyLT5jYWxsRXZlbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25l
ckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgZmlyc3RMaW5lLCBjb2x1bW4pOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBjYXNlIFdpbGxMZWF2ZUNhbGxGcmFtZToKLSAgICAgICAgICAg
IGRlYnVnZ2VyLT5yZXR1cm5FdmVudChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkt
Pm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSk7CisgICAgICAgICAgICBk
ZWJ1Z2dlci0+cmV0dXJuRXZlbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5v
d25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgbGFzdExpbmUsIGNvbHVtbik7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgV2lsbEV4ZWN1dGVTdGF0ZW1lbnQ6Ci0gICAgICAg
ICAgICBkZWJ1Z2dlci0+YXRTdGF0ZW1lbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9j
aygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgZmlyc3RMaW5lKTsKKyAgICAgICAg
ICAgIGRlYnVnZ2VyLT5hdFN0YXRlbWVudChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJzdExpbmUsIGNvbHVtbik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgV2lsbEV4ZWN1dGVQcm9ncmFtOgotICAg
ICAgICAgICAgZGVidWdnZXItPndpbGxFeGVjdXRlUHJvZ3JhbShjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJzdExpbmUp
OworICAgICAgICAgICAgZGVidWdnZXItPndpbGxFeGVjdXRlUHJvZ3JhbShjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJz
dExpbmUsIGNvbHVtbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgRGlkRXhl
Y3V0ZVByb2dyYW06Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+ZGlkRXhlY3V0ZVByb2dyYW0oY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNl
SUQoKSwgbGFzdExpbmUpOworICAgICAgICAgICAgZGVidWdnZXItPmRpZEV4ZWN1dGVQcm9ncmFt
KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNv
dXJjZUlEKCksIGxhc3RMaW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBjYXNlIERpZFJlYWNoQnJlYWtwb2ludDoKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRSZWFj
aEJyZWFrcG9pbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1
dGFibGUoKS0+c291cmNlSUQoKSwgbGFzdExpbmUpOworICAgICAgICAgICAgZGVidWdnZXItPmRp
ZFJlYWNoQnJlYWtwb2ludChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVy
RXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSwgY29sdW1uKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCmluZGV4IGFkYjIzZjIzNzIzODRkYWY4ODNiMTRlZmY4YmFmNWRjNWZl
NmRmNDEuLjQ3ZDY2ODk4NTE1ZjIxOTFlNjU5MjVlMDI3Nzg3NGVlN2IwMDkwNmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC0yMjAs
NyArMjIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNhbXBsaW5nVG9vbCogc2FtcGxl
cigpIHsgcmV0dXJuIG1fc2FtcGxlci5nZXQoKTsgfQogCiAgICAgICAgIE5FVkVSX0lOTElORSBI
YW5kbGVySW5mbyogdGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYsIEpTVmFsdWUmLCB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCk7Ci0gICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxG
cmFtZSosIERlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAg
ICBORVZFUl9JTkxJTkUgdm9pZCBkZWJ1ZyhDYWxsRnJhbWUqLCBEZWJ1Z0hvb2tJRCwgaW50IGZp
cnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKTsKICAgICAgICAgc3RhdGljIGNvbnN0
IFVTdHJpbmcgZ2V0VHJhY2VMaW5lKENhbGxGcmFtZSosIFN0YWNrRnJhbWVDb2RlVHlwZSwgY29u
c3QgVVN0cmluZyYsIGludCk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lk
IGdldFN0YWNrVHJhY2UoSlNHbG9iYWxEYXRhKiwgVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1bHRz
KTsKICAgICAgICAgc3RhdGljIHZvaWQgYWRkU3RhY2tUcmFjZUlmTmVjZXNzYXJ5KENhbGxGcmFt
ZSosIEpTT2JqZWN0KiBlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAppbmRleCAyZTQ0OGRkNTJhYTk2MWQ5YjI0MWFjMDVkMDQ3ODJhMDYxNTM2ZDE0Li42YjRh
Nzc2NWM4YTdkNzMyOWRkZmZkYWNiZjlhMjk1MjYzYzYzNDEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTExNTksNiArMTE1OSw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX2RlYnVnKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc3R1YkNh
bGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJ
bW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsK
ICAgICBzdHViQ2FsbC5jYWxsKCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCA0Zjg1ODk1NTcyYzBlOWYzMjI5YWI0OTA4
MGI2ZWU1OTYxNGE4MjUxLi5mOTk3YjNlOGJkMTEyYTM3ODUzNjE0ZTk0ZDEzNzA5NjdiMDEzMDI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBA
IC0xNDgwLDYgKzE0ODAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiog
Y3VycmVudEluc3RydWN0aW9uKQogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJ
bW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQp
KTsKICAgICBzdHViQ2FsbC5jYWxsKCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAKaW5kZXggNmI4MDgyODg2OTY3NGIyMGU5NTQyOGU4NGRkMTg1OTU1OTk3
MjMxOC4uYzBkMTA5ZTFkOGYzYTAxODVjZWRjMmJmNzAyODI0ZDUwZDk3NjgwMCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTMzNjksOCArMzM2OSw5IEBAIERFRklO
RV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX2RlYnVnKQogICAgIGludCBkZWJ1Z0hvb2tJRCA9IHN0
YWNrRnJhbWUuYXJnc1swXS5pbnQzMigpOwogICAgIGludCBmaXJzdExpbmUgPSBzdGFja0ZyYW1l
LmFyZ3NbMV0uaW50MzIoKTsKICAgICBpbnQgbGFzdExpbmUgPSBzdGFja0ZyYW1lLmFyZ3NbMl0u
aW50MzIoKTsKKyAgICBpbnQgY29sdW1uID0gc3RhY2tGcmFtZS5hcmdzWzNdLmludDMyKCk7CiAK
LSAgICBzdGFja0ZyYW1lLmdsb2JhbERhdGEtPmludGVycHJldGVyLT5kZWJ1ZyhjYWxsRnJhbWUs
IHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExp
bmUpOworICAgIHN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPmRlYnVnKGNhbGxG
cmFtZSwgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBs
YXN0TGluZSwgY29sdW1uKTsKIH0KIAogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIHZtX3Ro
cm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCAwZWI2
MGNmODk5MmZmMDkyNDk5MTM0NDMyOGJmOTMxYTFiZjczNmU3Li40YzVmNjgyNWFmNTQ3NDE3NTc3
NDU5MDA3MGZkNjMzYWI2MWQ0MTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaApAQCAtMTEyLDggKzExMiw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
aW50ICBEb250QnVpbGRLZXl3b3JkcyA9IDA7CiAgICAgc3RhdGljIGNvbnN0IGludCAgRG9udEJ1
aWxkU3RyaW5ncyA9IDA7CiAKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpbmFyeU5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCB0b2tlbiwgc3RkOjpwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5
T3BJbmZvPiwgc3RkOjpwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPik7Ci0gICAg
RXhwcmVzc2lvbk5vZGUqIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZnVuYywgQXJndW1lbnRzTm9kZSogYXJncywgaW50IHN0YXJ0LCBpbnQgZGl2
b3QsIGludCBlbmQpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQmluYXJ5Tm9kZShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgaW50IHRva2VuLCBzdGQ6OnBhaXI8RXhwcmVzc2lv
bk5vZGUqLCBCaW5hcnlPcEluZm8+LCBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlP
cEluZm8+KTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVu
dHNOb2RlKiBhcmdzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CiAKICAgICBKU0M6
OlNvdXJjZUVsZW1lbnRzKiBjcmVhdGVTb3VyY2VFbGVtZW50cygpIHsgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBKU0M6OlNvdXJjZUVsZW1lbnRzKCk7IH0KIApAQCAtMTI0LDE2OCArMTI0LDE2
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZFRvQ29tbWEoQ29tbWFOb2RlKiBjb21tYU5v
ZGUsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IGNvbW1hTm9kZS0+YXBwZW5kKGV4cHIpOyB9CiAK
LSAgICBDb21tYU5vZGUqIGNyZWF0ZUNvbW1hRXhwcihpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIHJocykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIENvbW1hTm9kZShsaW5lTnVtYmVyLCBsaHMsIHJocyk7IH0KLQotICAgIEV4cHJlc3Npb25O
b2RlKiBtYWtlQXNzaWduTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQs
IE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgbGVmdEhhc0Fzc2lnbm1lbnRz
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5k
KTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZVByZWZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsK
LSAgICBFeHByZXNzaW9uTm9kZSogbWFrZVBvc3RmaXhOb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSosIE9wZXJhdG9yLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7Ci0g
ICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VUeXBlT2ZOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSopOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGVsZXRlTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7Ci0g
ICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VOZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSopOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0d2lzZU5vdE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VNdWx0
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSog
bWFrZURpdk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lv
bk5vZGUqIG1ha2VNb2ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlQWRkTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
LSAgICBFeHByZXNzaW9uTm9kZSogbWFrZVN1Yk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRYT3JOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0QW5kTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdE9y
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSog
bWFrZUxlZnRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhw
cmVzc2lvbk5vZGUqIG1ha2VSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZVVSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKLQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVMb2dpY2Fs
Tm90KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIExvZ2ljYWxOb3ROb2RlKGxpbmVOdW1iZXIsIGV4cHIpOyB9Ci0gICAgRXhw
cmVzc2lvbk5vZGUqIGNyZWF0ZVVuYXJ5UGx1cyhpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbmFyeVBsdXNOb2RlKGxpbmVO
dW1iZXIsIGV4cHIpOyB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVZvaWQoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgIENvbW1hTm9kZSogY3JlYXRlQ29tbWFF
eHByKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGhz
LCBFeHByZXNzaW9uTm9kZSogcmhzKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29tbWFO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLCByaHMpOyB9CisKKyAgICBFeHByZXNz
aW9uTm9kZSogbWFrZUFzc2lnbk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBi
b29sIGxlZnRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBpbnQgc3Rh
cnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VQcmVmaXhO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSosIE9w
ZXJhdG9yLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lvbk5v
ZGUqIG1ha2VQb3N0Zml4Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhw
cmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwor
ICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlVHlwZU9mTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZURl
bGV0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOworICAgIEV4cHJlc3Npb25Ob2RlKiBt
YWtlTmVnYXRlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lv
bk5vZGUqKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdHdpc2VOb3ROb2RlKGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSopOworICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlTXVsdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VEaXZOb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2Rl
KiBtYWtlTW9kTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUFkZE5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VT
dWJOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
bGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwor
ICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0WE9yTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdEFu
ZE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBs
ZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRPck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VMZWZ0U2hp
ZnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
bGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwor
ICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VV
UmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CisKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTG9naWNhbE5vdChpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBMb2dpY2FsTm90Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IGV4cHIpOyB9CisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVVuYXJ5UGx1cyhpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBVbmFyeVBsdXNOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
ZXhwcik7IH0KKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlVm9pZChpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCiAgICAgewogICAgICAgICBp
bmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBWb2lkTm9k
ZShsaW5lTnVtYmVyLCBleHByKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBW
b2lkTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIpOwogICAgIH0KLSAgICBFeHBy
ZXNzaW9uTm9kZSogdGhpc0V4cHIoaW50IGxpbmVOdW1iZXIpCisgICAgRXhwcmVzc2lvbk5vZGUq
IHRoaXNFeHByKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogICAgIHsKICAgICAg
ICAgdXNlc1RoaXMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUaGlzTm9k
ZShsaW5lTnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUaGlzTm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgIH0KLSAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlUmVzb2x2ZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGlu
dCBzdGFydCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlUmVzb2x2ZShpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBzdGFydCkK
ICAgICB7CiAgICAgICAgIGlmIChtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50
cyA9PSAqaWRlbnQpCiAgICAgICAgICAgICB1c2VzQXJndW1lbnRzKCk7Ci0gICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVzb2x2ZU5vZGUobGluZU51bWJlciwgKmlkZW50LCBzdGFy
dCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVzb2x2ZU5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCAqaWRlbnQsIHN0YXJ0KTsKICAgICB9Ci0gICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZU9iamVjdExpdGVyYWwoaW50IGxpbmVOdW1iZXIpIHsgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBPYmplY3RMaXRlcmFsTm9kZShsaW5lTnVtYmVyKTsgfQotICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVPYmplY3RMaXRlcmFsKGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eUxp
c3ROb2RlKiBwcm9wZXJ0aWVzKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgT2JqZWN0TGl0
ZXJhbE5vZGUobGluZU51bWJlciwgcHJvcGVydGllcyk7IH0KKyAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgeyBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE9iamVjdExpdGVyYWxOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcik7IH0KKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlT2JqZWN0TGl0ZXJhbChp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUHJvcGVydHlMaXN0Tm9kZSogcHJvcGVy
dGllcykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE9iamVjdExpdGVyYWxOb2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgcHJvcGVydGllcyk7IH0KIAotICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVBcnJheShpbnQgbGluZU51bWJlciwgaW50IGVsaXNpb25zKQorICAgIEV4cHJlc3Np
b25Ob2RlKiBjcmVhdGVBcnJheShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgaW50
IGVsaXNpb25zKQogICAgIHsKICAgICAgICAgaWYgKGVsaXNpb25zKQogICAgICAgICAgICAgaW5j
Q29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJyYXlOb2Rl
KGxpbmVOdW1iZXIsIGVsaXNpb25zKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBBcnJheU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBlbGlzaW9ucyk7CiAgICAgfQog
Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5KGludCBsaW5lTnVtYmVyLCBFbGVtZW50
Tm9kZSogZWxlbXMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcnJheU5vZGUobGluZU51
bWJlciwgZWxlbXMpOyB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5KGludCBsaW5l
TnVtYmVyLCBpbnQgZWxpc2lvbnMsIEVsZW1lbnROb2RlKiBlbGVtcykKKyAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEVsZW1l
bnROb2RlKiBlbGVtcykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIGVsZW1zKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVBcnJheShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgaW50IGVsaXNpb25zLCBF
bGVtZW50Tm9kZSogZWxlbXMpCiAgICAgewogICAgICAgICBpZiAoZWxpc2lvbnMpCiAgICAgICAg
ICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBB
cnJheU5vZGUobGluZU51bWJlciwgZWxpc2lvbnMsIGVsZW1zKTsKKyAgICAgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBBcnJheU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBlbGlz
aW9ucywgZWxlbXMpOwogICAgIH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTnVtYmVyRXhw
cihpbnQgbGluZU51bWJlciwgZG91YmxlIGQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51
bWJlckV4cHIoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGRvdWJsZSBkKQogICAg
IHsKICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgTnVtYmVyTm9kZShsaW5lTnVtYmVyLCBkKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBOdW1iZXJOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZCk7CiAgICAg
fQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVN0cmluZyhpbnQgbGluZU51bWJlciwgY29u
c3QgSWRlbnRpZmllciogc3RyaW5nKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVTdHJpbmco
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIHN0cmlu
ZykKICAgICB7CiAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIFN0cmluZ05vZGUobGluZU51bWJlciwgKnN0cmluZyk7CisgICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgU3RyaW5nTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsICpzdHJpbmcpOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVCb29sZWFu
KGludCBsaW5lTnVtYmVyLCBib29sIGIpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJvb2xl
YW4oaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGJvb2wgYikKICAgICB7CiAgICAg
ICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJv
b2xlYW5Ob2RlKGxpbmVOdW1iZXIsIGIpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEJvb2xlYW5Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgYik7CiAgICAgfQogCi0g
ICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bGwoaW50IGxpbmVOdW1iZXIpCisgICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZU51bGwoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiAg
ICAgewogICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBOdWxsTm9kZShsaW5lTnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBOdWxsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgIH0KIAotICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVCcmFja2V0QWNjZXNzKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHByb3BlcnR5LCBib29sIHByb3BlcnR5
SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVCcmFja2V0QWNjZXNzKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHByb3BlcnR5LCBi
b29sIHByb3BlcnR5SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5k
KQogICAgIHsKLSAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9nbG9i
YWxEYXRhKSBCcmFja2V0QWNjZXNzb3JOb2RlKGxpbmVOdW1iZXIsIGJhc2UsIHByb3BlcnR5LCBw
cm9wZXJ0eUhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogbm9k
ZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBCcmFja2V0QWNjZXNzb3JOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgYmFzZSwgcHJvcGVydHksIHByb3BlcnR5SGFzQXNzaWdubWVudHMpOwogICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAg
ICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RB
Y2Nlc3MoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyKiBwcm9wZXJ0eSwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZURvdEFjY2VzcyhpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBpbnQg
c3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIERvdEFjY2Vzc29yTm9k
ZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBEb3RBY2Nlc3Nvck5vZGUobGluZU51bWJlciwg
YmFzZSwgKnByb3BlcnR5KTsKKyAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3ICht
X2dsb2JhbERhdGEpIERvdEFjY2Vzc29yTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJh
c2UsICpwcm9wZXJ0eSk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0
LCBkaXZvdCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZVJlZ0V4cChpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYg
cGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MsIGludCBzdGFydCkKKyAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlUmVnRXhwKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBj
b25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50IHN0
YXJ0KQogICAgIHsKICAgICAgICAgaWYgKFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4udXN0cmlu
ZygpKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBSZWdFeHBOb2RlKiBub2RlID0g
bmV3IChtX2dsb2JhbERhdGEpIFJlZ0V4cE5vZGUobGluZU51bWJlciwgcGF0dGVybiwgZmxhZ3Mp
OworICAgICAgICBSZWdFeHBOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFJlZ0V4cE5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBwYXR0ZXJuLCBmbGFncyk7CiAgICAgICAgIGlu
dCBzaXplID0gcGF0dGVybi5sZW5ndGgoKSArIDI7IC8vICsgMiBmb3IgdGhlIHR3byAvJ3MKICAg
ICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIHN0YXJ0ICsgc2l6ZSwgc3Rh
cnQgKyBzaXplKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZU5ld0V4cHIoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
LCBBcmd1bWVudHNOb2RlKiBhcmd1bWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5k
KQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdFeHByKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQXJndW1lbnRzTm9kZSogYXJndW1l
bnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIE5ld0V4
cHJOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIE5ld0V4cHJOb2RlKGxpbmVOdW1iZXIs
IGV4cHIsIGFyZ3VtZW50cyk7CisgICAgICAgIE5ld0V4cHJOb2RlKiBub2RlID0gbmV3IChtX2ds
b2JhbERhdGEpIE5ld0V4cHJOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwciwgYXJn
dW1lbnRzKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90
LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9k
ZSogY3JlYXRlTmV3RXhwcihpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGlu
dCBzdGFydCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTmV3RXhwcihpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBz
dGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIE5ld0V4cHJOb2RlKiBub2RlID0gbmV3ICht
X2dsb2JhbERhdGEpIE5ld0V4cHJOb2RlKGxpbmVOdW1iZXIsIGV4cHIpOworICAgICAgICBOZXdF
eHByTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBOZXdFeHByTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIGV4cHIpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2Rl
LCBzdGFydCwgZW5kLCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBF
eHByZXNzaW9uTm9kZSogY3JlYXRlQ29uZGl0aW9uYWxFeHByKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogY29uZGl0aW9uLCBFeHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9k
ZSogcmhzKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVDb25kaXRpb25hbEV4cHIoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiByaHMpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbmRpdGlvbmFsTm9kZShsaW5lTnVtYmVyLCBjb25k
aXRpb24sIGxocywgcmhzKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBDb25k
aXRpb25hbE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIGxocywgcmhz
KTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXNzaWduUmVzb2x2ZShpbnQg
bGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaHMs
IGJvb2wgcmhzSGFzQXNzaWdubWVudCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisg
ICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFzc2lnblJlc29sdmUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSog
cmhzLCBib29sIHJoc0hhc0Fzc2lnbm1lbnQsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5k
KQogICAgIHsKICAgICAgICAgaWYgKHJocy0+aXNGdW5jRXhwck5vZGUoKSkKICAgICAgICAgICAg
IHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KHJocyktPmJvZHkoKS0+c2V0SW5mZXJyZWROYW1l
KGlkZW50KTsKLSAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwgaWRlbnQsIHJocywgcmhzSGFzQXNz
aWdubWVudCk7CisgICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChtX2dsb2Jh
bERhdGEpIEFzc2lnblJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgaWRlbnQs
IHJocywgcmhzSGFzQXNzaWdubWVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5v
ZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0g
ICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUZ1bmN0aW9uRXhwcihpbnQgbGluZU51bWJlciwgY29u
c3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVyTm9k
ZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBi
b2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZUZ1bmN0aW9uRXhwcihpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRl
bnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVyTm9kZSogcGFy
YW1ldGVycywgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3Rh
cnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCiAgICAgewotICAgICAgICBGdW5jRXhwck5vZGUqIHJl
c3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobGluZU51bWJlciwgKm5hbWUs
IGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJh
Y2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbWV0ZXJzKTsKLSAgICAgICAgYm9keS0+c2V0TG9j
KGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lKTsKKyAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1
bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4cHJOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgKm5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQ
b3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAg
Ym9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIEZ1bmN0aW9uQm9keU5vZGUqIGNy
ZWF0ZUZ1bmN0aW9uQm9keShpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmljdENvbnRleHQpCisg
ICAgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlRnVuY3Rpb25Cb2R5KGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBib29sIGluU3RyaWN0Q29udGV4dCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBp
blN0cmljdENvbnRleHQpOworICAgICAgICByZXR1cm4gRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRl
KG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBpblN0cmljdENvbnRleHQp
OwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVH
ZXR0ZXJPclNldHRlclByb3BlcnR5KGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGU6OlR5cGUg
dHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1zLCBGdW5j
dGlvbkJvZHlOb2RlKiBib2R5LCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywg
aW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKKyAgICB0ZW1wbGF0ZSA8Ym9vbD4g
UHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRp
ZmllciogbmFtZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1zLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5
LCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUs
IGludCBib2R5RW5kTGluZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKLSAgICAgICAg
Ym9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lKTsKKyAgICAgICAgYm9keS0+
c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAg
ICBib2R5LT5zZXRJbmZlcnJlZE5hbWUoKm5hbWUpOwotICAgICAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERhdGEsICpuYW1lLCBuZXcgKG1fZ2xvYmFs
RGF0YSkgRnVuY0V4cHJOb2RlKGxpbmVOdW1iZXIsIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1l
cy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVu
QnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbXMpLCB0eXBlKTsK
KyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxE
YXRhLCAqbmFtZSwgbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNFeHByTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIs
IGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJh
Y2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbXMpLCB0eXBlKTsKICAgICB9CiAgICAgCi0gICAg
dGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0
eShKU0dsb2JhbERhdGEqLCBpbnQgbGluZU51bWJlciwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUs
IGRvdWJsZSBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJv
ZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGlu
ZSwgaW50IGJvZHlFbmRMaW5lKQorICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNy
ZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoSlNHbG9iYWxEYXRhKiwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBkb3VibGUgbmFtZSwg
UGFyYW1ldGVyTm9kZSogcGFyYW1zLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBpbnQgb3BlbkJy
YWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5k
TGluZSkKICAgICB7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5k
TGluZSk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlOb2RlKG1f
Z2xvYmFsRGF0YSwgbmFtZSwgbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNFeHByTm9kZShsaW5lTnVt
YmVyLCBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBib2R5LCBt
X3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBi
b2R5U3RhcnRMaW5lKSwgcGFyYW1zKSwgdHlwZSk7CisgICAgICAgIGJvZHktPnNldExvYyhib2R5
U3RhcnRMaW5lLCBib2R5RW5kTGluZSwgY29sdW1uTnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCBuYW1lLCBuZXcgKG1f
Z2xvYmFsRGF0YSkgRnVuY0V4cHJOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbV9nbG9i
YWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2Rl
LT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGlu
ZSksIHBhcmFtcyksIHR5cGUpOwogICAgIH0KIAogICAgIEFyZ3VtZW50c05vZGUqIGNyZWF0ZUFy
Z3VtZW50cygpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudHNOb2RlKCk7IH0K
ICAgICBBcmd1bWVudHNOb2RlKiBjcmVhdGVBcmd1bWVudHMoQXJndW1lbnRMaXN0Tm9kZSogYXJn
cykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50c05vZGUoYXJncyk7IH0KLSAg
ICBBcmd1bWVudExpc3ROb2RlKiBjcmVhdGVBcmd1bWVudHNMaXN0KGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogYXJnKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRM
aXN0Tm9kZShsaW5lTnVtYmVyLCBhcmcpOyB9Ci0gICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRl
QXJndW1lbnRzTGlzdChpbnQgbGluZU51bWJlciwgQXJndW1lbnRMaXN0Tm9kZSogYXJncywgRXhw
cmVzc2lvbk5vZGUqIGFyZykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50TGlz
dE5vZGUobGluZU51bWJlciwgYXJncywgYXJnKTsgfQorICAgIEFyZ3VtZW50TGlzdE5vZGUqIGNy
ZWF0ZUFyZ3VtZW50c0xpc3QoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBhcmcpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudExpc3RO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgYXJnKTsgfQorICAgIEFyZ3VtZW50TGlzdE5v
ZGUqIGNyZWF0ZUFyZ3VtZW50c0xpc3QoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MsIEV4cHJlc3Npb25Ob2RlKiBhcmcpIHsgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgYXJncywgYXJnKTsgfQogCiAgICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3Jl
YXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9k
ZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUpCiAgICAgewpAQCAtMjk0LDggKzI5NCw4
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5v
ZGUobV9nbG9iYWxEYXRhLCAqcHJvcGVydHlOYW1lLCBub2RlLCB0eXBlKTsKICAgICB9CiAgICAg
dGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoSlNHbG9iYWxEYXRh
KiwgZG91YmxlIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9k
ZTo6VHlwZSB0eXBlKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlOb2RlKG1f
Z2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBub2RlLCB0eXBlKTsgfQotICAgIFByb3BlcnR5TGlz
dE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChpbnQgbGluZU51bWJlciwgUHJvcGVydHlOb2RlKiBw
cm9wZXJ0eSkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5TGlzdE5vZGUobGlu
ZU51bWJlciwgcHJvcGVydHkpOyB9Ci0gICAgUHJvcGVydHlMaXN0Tm9kZSogY3JlYXRlUHJvcGVy
dHlMaXN0KGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5LCBQcm9wZXJ0eUxp
c3ROb2RlKiB0YWlsKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlMaXN0Tm9k
ZShsaW5lTnVtYmVyLCBwcm9wZXJ0eSwgdGFpbCk7IH0KKyAgICBQcm9wZXJ0eUxpc3ROb2RlKiBj
cmVhdGVQcm9wZXJ0eUxpc3QoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFByb3Bl
cnR5Tm9kZSogcHJvcGVydHkpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eUxp
c3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgcHJvcGVydHkpOyB9CisgICAgUHJvcGVy
dHlMaXN0Tm9kZSogY3JlYXRlUHJvcGVydHlMaXN0KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5LCBQcm9wZXJ0eUxpc3ROb2RlKiB0YWlsKSB7
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlMaXN0Tm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIHByb3BlcnR5LCB0YWlsKTsgfQogCiAgICAgRWxlbWVudE5vZGUqIGNyZWF0
ZUVsZW1lbnRMaXN0KGludCBlbGlzaW9ucywgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBFbGVtZW50Tm9kZShlbGlzaW9ucywgZXhwcik7IH0KICAgICBF
bGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExpc3QoRWxlbWVudE5vZGUqIGVsZW1zLCBpbnQgZWxp
c2lvbnMsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
RWxlbWVudE5vZGUoZWxlbXMsIGVsaXNpb25zLCBleHByKTsgfQpAQCAtMzA5LDE5MSArMzA5LDE5
MSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFVzZXNBcmd1bWVudHMoRnVuY3Rpb25Cb2R5Tm9k
ZSogbm9kZSkgeyBub2RlLT5zZXRVc2VzQXJndW1lbnRzKCk7IH0KIAotICAgIFN0YXRlbWVudE5v
ZGUqIGNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlm
aWVyKiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0
ZXJzLCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExp
bmUsIGludCBib2R5RW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGdW5jRGVjbFN0
YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmll
ciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVy
cywgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5l
LCBpbnQgYm9keUVuZExpbmUpCiAgICAgewotICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0RlY2xOb2RlKGxpbmVOdW1iZXIsICpuYW1lLCBib2R5LCBt
X3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBi
b2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7CisgICAgICAgIEZ1bmNEZWNsTm9kZSogZGVjbCA9
IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRGVjbE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCAqbmFtZSwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywg
Y2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtZXRlcnMpOwogICAgICAgICBpZiAo
Km5hbWUgPT0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMpCiAgICAgICAg
ICAgICB1c2VzQXJndW1lbnRzKCk7CiAgICAgICAgIG1fc2NvcGUubV9mdW5jRGVjbGFyYXRpb25z
LT5kYXRhLmFwcGVuZChkZWNsLT5ib2R5KCkpOwotICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0
YXJ0TGluZSwgYm9keUVuZExpbmUpOworICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGlu
ZSwgYm9keUVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiBkZWNsOwogICAg
IH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJsb2NrU3RhdGVtZW50KGludCBsaW5lTnVt
YmVyLCBKU0M6OlNvdXJjZUVsZW1lbnRzKiBlbGVtZW50cywgaW50IHN0YXJ0TGluZSwgaW50IGVu
ZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQmxvY2tTdGF0ZW1lbnQoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEpTQzo6U291cmNlRWxlbWVudHMqIGVsZW1lbnRzLCBp
bnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIEJsb2NrTm9kZSogYmxv
Y2sgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQmxvY2tOb2RlKGxpbmVOdW1iZXIsIGVsZW1lbnRzKTsK
LSAgICAgICAgYmxvY2stPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICBCbG9j
a05vZGUqIGJsb2NrID0gbmV3IChtX2dsb2JhbERhdGEpIEJsb2NrTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGVsZW1lbnRzKTsKKyAgICAgICAgYmxvY2stPnNldExvYyhzdGFydExpbmUs
IGVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiBibG9jazsKICAgICB9CiAK
LSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVFeHByU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5v
ZGUqIGNyZWF0ZUV4cHJTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewotICAgICAg
ICBFeHByU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEV4cHJTdGF0
ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGV4cHIpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFy
dCwgZW5kKTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9i
YWxEYXRhKSBFeHByU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIp
OworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBjb2x1bW5OdW1iZXIpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUlm
U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0
ZW1lbnROb2RlKiB0cnVlQmxvY2ssIGludCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnRO
b2RlKiBjcmVhdGVJZlN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogdHJ1ZUJsb2NrLCBpbnQg
c3RhcnQsIGludCBlbmQpCiAgICAgewotICAgICAgICBJZk5vZGUqIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBJZk5vZGUobGluZU51bWJlciwgY29uZGl0aW9uLCB0cnVlQmxvY2spOwotICAg
ICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAgICAgICAgSWZOb2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgSWZOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29u
ZGl0aW9uLCB0cnVlQmxvY2spOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBj
b2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnVlQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZh
bHNlQmxvY2ssIGludCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVJ
ZlN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogdHJ1ZUJsb2NrLCBTdGF0ZW1lbnROb2RlKiBm
YWxzZUJsb2NrLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewotICAgICAgICBJZk5vZGUqIHJl
c3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBJZkVsc2VOb2RlKGxpbmVOdW1iZXIsIGNvbmRpdGlv
biwgdHJ1ZUJsb2NrLCBmYWxzZUJsb2NrKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQs
IGVuZCk7CisgICAgICAgIElmTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIElmRWxz
ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIHRydWVCbG9jaywgZmFs
c2VCbG9jayk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGNvbHVtbk51bWJl
cik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlRm9yTG9vcChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVy
LCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50cywgYm9vbCBiLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlRm9yTG9vcChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9u
LCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgYm9vbCBi
LCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewotICAgICAgICBGb3JOb2RlKiByZXN1bHQgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgRm9yTm9kZShsaW5lTnVtYmVyLCBpbml0aWFsaXplciwgY29uZGl0
aW9uLCBpdGVyLCBzdGF0ZW1lbnRzLCBiKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQs
IGVuZCk7CisgICAgICAgIEZvck5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgaW5pdGlhbGl6ZXIsIGNvbmRpdGlvbiwgaXRl
ciwgc3RhdGVtZW50cywgYik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGNv
bHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogaXRl
ciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBl
bmQsIGludCBpbml0U3RhcnQsIGludCBpbml0RW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGlu
ZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBFeHByZXNzaW9uTm9kZSog
aW5pdGlhbGl6ZXIsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1l
bnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCwgaW50IGluaXRTdGFydCwgaW50IGlu
aXRFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgRm9ySW5O
b2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9ySW5Ob2RlKG1fZ2xvYmFsRGF0YSwg
bGluZU51bWJlciwgKmlkZW50LCBpbml0aWFsaXplciwgaXRlciwgc3RhdGVtZW50cywgaW5pdFN0
YXJ0LCBpbml0U3RhcnQgLSBzdGFydCwgaW5pdEVuZCAtIGluaXRTdGFydCk7Ci0gICAgICAgIHJl
c3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIEZvckluTm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZvckluTm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgKmlkZW50LCBpbml0aWFsaXplciwgaXRlciwgc3RhdGVtZW50cywg
aW5pdFN0YXJ0LCBpbml0U3RhcnQgLSBzdGFydCwgaW5pdEVuZCAtIGluaXRTdGFydCk7CisgICAg
ICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAg
ICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBzdGFydCwgZGl2b3QgKyAxLCBlbmQp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZUZvckluTG9vcChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVz
c2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGludCBlU3RhcnQsIGlu
dCBlRGl2b3QsIGludCBlRW5kLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlRm9ySW5Mb29wKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3Rh
dGVtZW50cywgaW50IGVTdGFydCwgaW50IGVEaXZvdCwgaW50IGVFbmQsIGludCBzdGFydCwgaW50
IGVuZCkKICAgICB7Ci0gICAgICAgIEZvckluTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERh
dGEpIEZvckluTm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGxocywgaXRlciwgc3RhdGVt
ZW50cyk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQpOworICAgICAgICBGb3JJ
bk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JJbk5vZGUobV9nbG9iYWxEYXRh
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocywgaXRlciwgc3RhdGVtZW50cyk7CisgICAg
ICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRGl2b3QsIGVFbmQpOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUVtcHR5
U3RhdGVtZW50KGludCBsaW5lTnVtYmVyKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRW1w
dHlTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpOyB9CisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRl
RW1wdHlTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpIHsgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBFbXB0eVN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyKTsgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlVmFyU3RhdGVtZW50KGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAg
IFN0YXRlbWVudE5vZGUqIGNyZWF0ZVZhclN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkKICAg
ICB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIHJlc3VsdDsKICAgICAgICAgaWYgKCFleHByKQot
ICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEVtcHR5U3RhdGVtZW50Tm9k
ZShsaW5lTnVtYmVyKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBF
bXB0eVN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFZhclN0YXRlbWVudE5v
ZGUobGluZU51bWJlciwgZXhwcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQp
OworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFZhclN0YXRlbWVudE5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByKTsKKyAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnQsIGVuZCwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwg
aW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlUmV0
dXJuU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcmVzc2lvbiwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGlu
dCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgUmV0dXJuTm9kZSogcmVzdWx0ID0gbmV3IChtX2ds
b2JhbERhdGEpIFJldHVybk5vZGUobGluZU51bWJlciwgZXhwcmVzc2lvbik7CisgICAgICAgIFJl
dHVybk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZXR1cm5Ob2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgZXhwcmVzc2lvbik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0
aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
c3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBl
bmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAot
ICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJyZWFrU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBp
bnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGlu
ZSkKICAgICB7Ci0gICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEp
IEJyZWFrTm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIpOworICAgICAgICBCcmVha05vZGUq
IHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBCcmVha05vZGUobV9nbG9iYWxEYXRhLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1
bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGlu
ZSwgZW5kTGluZSk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwg
Y29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQgbGluZU51bWJlciwgY29uc3QgSWRl
bnRpZmllciogaWRlbnQsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQg
ZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBl
U3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAg
ICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEJyZWFrTm9kZShsaW5l
TnVtYmVyLCAqaWRlbnQpOworICAgICAgICBCcmVha05vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9i
YWxEYXRhKSBCcmVha05vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAqaWRlbnQpOwogICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0g
ICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJlc3Vs
dC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVDb250aW51ZVN0
YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExp
bmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNvbnRpbnVlU3RhdGVt
ZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQgZVN0YXJ0LCBpbnQgZUVu
ZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBDb250aW51ZU5v
ZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb250aW51ZU5vZGUobV9nbG9iYWxEYXRh
LCBsaW5lTnVtYmVyKTsKKyAgICAgICAgQ29udGludWVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgQ29udGludWVOb2RlKG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQs
IGVFbmQpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAg
ICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRl
Q29udGludWVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
LCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgZVN0YXJ0LCBpbnQg
ZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBDb250aW51
ZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb250aW51ZU5vZGUobGluZU51bWJl
ciwgKmlkZW50KTsKKyAgICAgICAgQ29udGludWVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgQ29udGludWVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgKmlkZW50KTsKICAg
ICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQpOwot
ICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlVHJ5U3RhdGVt
ZW50KGludCBsaW5lTnVtYmVyLCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRp
ZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZp
bmFsbHlCbG9jaywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlVHJ5U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBT
dGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIFN0YXRlbWVu
dE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jaywgaW50IHN0YXJ0
TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBUcnlOb2RlKiByZXN1bHQgPSBuZXcg
KG1fZ2xvYmFsRGF0YSkgVHJ5Tm9kZShsaW5lTnVtYmVyLCB0cnlCbG9jaywgKmlkZW50LCBjYXRj
aEJsb2NrLCBmaW5hbGx5QmxvY2spOworICAgICAgICBUcnlOb2RlKiByZXN1bHQgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgVHJ5Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHRyeUJsb2NrLCAq
aWRlbnQsIGNhdGNoQmxvY2ssIGZpbmFsbHlCbG9jayk7CiAgICAgICAgIGlmIChjYXRjaEJsb2Nr
KQogICAgICAgICAgICAgdXNlc0NhdGNoKCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0
TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGlu
ZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBT
dGF0ZW1lbnROb2RlKiBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByLCBDbGF1c2VMaXN0Tm9kZSogZmlyc3RDbGF1c2VzLCBDYXNlQ2xhdXNl
Tm9kZSogZGVmYXVsdENsYXVzZSwgQ2xhdXNlTGlzdE5vZGUqIHNlY29uZENsYXVzZXMsIGludCBz
dGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVN3aXRjaFN0
YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIENsYXVzZUxpc3ROb2RlKiBmaXJzdENsYXVzZXMsIENhc2VDbGF1c2VOb2RlKiBkZWZh
dWx0Q2xhdXNlLCBDbGF1c2VMaXN0Tm9kZSogc2Vjb25kQ2xhdXNlcywgaW50IHN0YXJ0TGluZSwg
aW50IGVuZExpbmUpCiAgICAgewogICAgICAgICBDYXNlQmxvY2tOb2RlKiBjYXNlcyA9IG5ldyAo
bV9nbG9iYWxEYXRhKSBDYXNlQmxvY2tOb2RlKGZpcnN0Q2xhdXNlcywgZGVmYXVsdENsYXVzZSwg
c2Vjb25kQ2xhdXNlcyk7Ci0gICAgICAgIFN3aXRjaE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9i
YWxEYXRhKSBTd2l0Y2hOb2RlKGxpbmVOdW1iZXIsIGV4cHIsIGNhc2VzKTsKLSAgICAgICAgcmVz
dWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgU3dpdGNoTm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFN3aXRjaE5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBleHByLCBjYXNlcyk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5k
TGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAg
ICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaGlsZVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0TGlu
ZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlV2hpbGVTdGF0ZW1lbnQo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBT
dGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAg
IHsKLSAgICAgICAgV2hpbGVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgV2hpbGVO
b2RlKGxpbmVOdW1iZXIsIGV4cHIsIHN0YXRlbWVudCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9j
KHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIFdoaWxlTm9kZSogcmVzdWx0ID0gbmV3ICht
X2dsb2JhbERhdGEpIFdoaWxlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIsIHN0
YXRlbWVudCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29s
dW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1l
bnROb2RlKiBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBTdGF0ZW1lbnRO
b2RlKiBzdGF0ZW1lbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnRMaW5lLCBpbnQg
ZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0g
ICAgICAgIERvV2hpbGVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRG9XaGlsZU5v
ZGUobGluZU51bWJlciwgc3RhdGVtZW50LCBleHByKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
c3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgRG9XaGlsZU5vZGUqIHJlc3VsdCA9IG5ldyAo
bV9nbG9iYWxEYXRhKSBEb1doaWxlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRl
bWVudCwgZXhwcik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwg
Y29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVMYWJlbFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgY29uc3QgSWRl
bnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0LCBpbnQg
ZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUxhYmVsU3RhdGVtZW50KGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgU3RhdGVtZW50
Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewotICAgICAgICBMYWJl
bE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBMYWJlbE5vZGUobGluZU51bWJlciwg
KmlkZW50LCBzdGF0ZW1lbnQpOworICAgICAgICBMYWJlbE5vZGUqIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBMYWJlbE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAqaWRlbnQsIHN0
YXRlbWVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGVu
ZCwgZW5kKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnRO
b2RlKiBjcmVhdGVXaXRoU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBz
dGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVdpdGhTdGF0
ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBzdGFydCwgaW50IGVuZCwgaW50IHN0
YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewogICAgICAgICB1c2VzV2l0aCgpOwotICAgICAg
ICBXaXRoTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFdpdGhOb2RlKGxpbmVOdW1i
ZXIsIGV4cHIsIHN0YXRlbWVudCwgZW5kLCBlbmQgLSBzdGFydCk7Ci0gICAgICAgIHJlc3VsdC0+
c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIFdpdGhOb2RlKiByZXN1bHQgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgV2l0aE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHBy
LCBzdGF0ZW1lbnQsIGVuZCwgZW5kIC0gc3RhcnQpOworICAgICAgICByZXN1bHQtPnNldExvYyhz
dGFydExpbmUsIGVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfSAgICAKICAgICAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVUaHJvd1N0YXRlbWVu
dChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVu
ZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRl
VGhyb3dTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBzdGFydExpbmUsIGludCBlbmRM
aW5lKQogICAgIHsKLSAgICAgICAgVGhyb3dOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgVGhyb3dOb2RlKGxpbmVOdW1iZXIsIGV4cHIpOwotICAgICAgICByZXN1bHQtPnNldExvYyhz
dGFydExpbmUsIGVuZExpbmUpOworICAgICAgICBUaHJvd05vZGUqIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBUaHJvd05vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByKTsKKyAg
ICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwog
ICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIHN0YXJ0LCBlbmQsIGVuZCk7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZURlYnVnZ2VyKGludCBsaW5lTnVtYmVyLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkK
KyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVEZWJ1Z2dlcihpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBE
ZWJ1Z2dlclN0YXRlbWVudE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBEZWJ1Z2dl
clN0YXRlbWVudE5vZGUobGluZU51bWJlcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0
TGluZSwgZW5kTGluZSk7CisgICAgICAgIERlYnVnZ2VyU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0g
bmV3IChtX2dsb2JhbERhdGEpIERlYnVnZ2VyU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNv
bHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIFN0
YXRlbWVudE5vZGUqIGNyZWF0ZUNvbnN0U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBDb25zdERl
Y2xOb2RlKiBkZWNscywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlQ29uc3RTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIENvbnN0RGVjbE5vZGUqIGRlY2xzLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAg
ICB7Ci0gICAgICAgIENvbnN0U3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERh
dGEpIENvbnN0U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBkZWNscyk7Ci0gICAgICAgIHJlc3Vs
dC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIENvbnN0U3RhdGVtZW50Tm9k
ZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnN0U3RhdGVtZW50Tm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGRlY2xzKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIAotICAgIENvbnN0RGVjbE5vZGUqIGFwcGVuZENvbnN0RGVjbChpbnQgbGluZU51bWJlciwg
Q29uc3REZWNsTm9kZSogdGFpbCwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRXhwcmVzc2lvbk5v
ZGUqIGluaXRpYWxpemVyKQorICAgIENvbnN0RGVjbE5vZGUqIGFwcGVuZENvbnN0RGVjbChpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgQ29uc3REZWNsTm9kZSogdGFpbCwgY29uc3Qg
SWRlbnRpZmllciogbmFtZSwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyKQogICAgIHsKLSAg
ICAgICAgQ29uc3REZWNsTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnN0RGVj
bE5vZGUobGluZU51bWJlciwgKm5hbWUsIGluaXRpYWxpemVyKTsKKyAgICAgICAgQ29uc3REZWNs
Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnN0RGVjbE5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCAqbmFtZSwgaW5pdGlhbGl6ZXIpOwogICAgICAgICBpZiAodGFpbCkK
ICAgICAgICAgICAgIHRhaWwtPm1fbmV4dCA9IHJlc3VsdDsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTUxMSw3ICs1MTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fc2NvcGUubV92YXJEZWNs
YXJhdGlvbnMtPmRhdGEuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGlkZW50LCBhdHRycykpOwogICAg
IH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjb21iaW5lQ29tbWFOb2RlcyhpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGxpc3QsIEV4cHJlc3Npb25Ob2RlKiBpbml0KQorICAgIEV4cHJl
c3Npb25Ob2RlKiBjb21iaW5lQ29tbWFOb2RlcyhpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxpc3QsIEV4cHJlc3Npb25Ob2RlKiBpbml0KQogICAgIHsK
ICAgICAgICAgaWYgKCFsaXN0KQogICAgICAgICAgICAgcmV0dXJuIGluaXQ7CkBAIC01MTksNyAr
NTE5LDcgQEAgcHVibGljOgogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q29tbWFOb2RlKj4obGlz
dCktPmFwcGVuZChpbml0KTsKICAgICAgICAgICAgIHJldHVybiBsaXN0OwogICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29tbWFOb2RlKGxpbmVOdW1iZXIsIGxp
c3QsIGluaXQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbW1hTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxpc3QsIGluaXQpOwogICAgIH0KIAogICAgIGludCBl
dmFsQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2V2YWxDb3VudDsgfQpAQCAtNTQ3LDEwICs1NDcs
MTAgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQob3BlcmFuZFN0YWNrRGVwdGggPj0gMCk7CiAg
ICAgICAgIG1fYmluYXJ5T3BlcmFuZFN0YWNrLnJlc2l6ZShtX2JpbmFyeU9wZXJhbmRTdGFjay5z
aXplKCkgLSBhbW91bnQpOwogICAgIH0KLSAgICB2b2lkIGFwcGVuZEJpbmFyeU9wZXJhdGlvbihp
bnQgbGluZU51bWJlciwgaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50JiwgY29uc3QgQmluYXJ5
T3BlcmFuZCYgbGhzLCBjb25zdCBCaW5hcnlPcGVyYW5kJiByaHMpCisgICAgdm9pZCBhcHBlbmRC
aW5hcnlPcGVyYXRpb24oaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGludCYgb3Bl
cmFuZFN0YWNrRGVwdGgsIGludCYsIGNvbnN0IEJpbmFyeU9wZXJhbmQmIGxocywgY29uc3QgQmlu
YXJ5T3BlcmFuZCYgcmhzKQogICAgIHsKICAgICAgICAgb3BlcmFuZFN0YWNrRGVwdGgrKzsKLSAg
ICAgICAgbV9iaW5hcnlPcGVyYW5kU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG1ha2VCaW5h
cnlOb2RlKGxpbmVOdW1iZXIsIG1fYmluYXJ5T3BlcmF0b3JTdGFjay5sYXN0KCkuZmlyc3QsIGxo
cywgcmhzKSwgQmluYXJ5T3BJbmZvKGxocy5zZWNvbmQsIHJocy5zZWNvbmQpKSk7CisgICAgICAg
IG1fYmluYXJ5T3BlcmFuZFN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihtYWtlQmluYXJ5Tm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIG1fYmluYXJ5T3BlcmF0b3JTdGFjay5sYXN0KCku
Zmlyc3QsIGxocywgcmhzKSwgQmluYXJ5T3BJbmZvKGxocy5zZWNvbmQsIHJocy5zZWNvbmQpKSk7
CiAgICAgfQogICAgIHZvaWQgb3BlcmF0b3JTdGFja0FwcGVuZChpbnQmIG9wZXJhdG9yU3RhY2tE
ZXB0aCwgaW50IG9wLCBpbnQgcHJlY2VkZW5jZSkKICAgICB7CkBAIC01OTIsOSArNTkyLDkgQEAg
cHVibGljOgogICAgICAgICBtX2Fzc2lnbm1lbnRJbmZvU3RhY2suYXBwZW5kKEFzc2lnbm1lbnRJ
bmZvKG5vZGUsIHN0YXJ0LCBkaXZvdCwgYXNzaWdubWVudENvdW50LCBvcCkpOwogICAgIH0KIAot
ICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBc3NpZ25tZW50KGludCBsaW5lTnVtYmVyLCBpbnQm
IGFzc2lnbm1lbnRTdGFja0RlcHRoLCBFeHByZXNzaW9uTm9kZSogcmhzLCBpbnQgaW5pdGlhbEFz
c2lnbm1lbnRDb3VudCwgaW50IGN1cnJlbnRBc3NpZ25tZW50Q291bnQsIGludCBsYXN0VG9rZW5F
bmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFzc2lnbm1lbnQoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIGludCYgYXNzaWdubWVudFN0YWNrRGVwdGgsIEV4cHJlc3Npb25O
b2RlKiByaHMsIGludCBpbml0aWFsQXNzaWdubWVudENvdW50LCBpbnQgY3VycmVudEFzc2lnbm1l
bnRDb3VudCwgaW50IGxhc3RUb2tlbkVuZCkKICAgICB7Ci0gICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiByZXN1bHQgPSBtYWtlQXNzaWduTm9kZShsaW5lTnVtYmVyLCBtX2Fzc2lnbm1lbnRJbmZvU3Rh
Y2subGFzdCgpLm1fbm9kZSwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX29wLCByaHMs
IG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9pbml0QXNzaWdubWVudHMgIT0gaW5pdGlh
bEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX2luaXRBc3Np
Z25tZW50cyAhPSBjdXJyZW50QXNzaWdubWVudENvdW50LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2su
bGFzdCgpLm1fc3RhcnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9kaXZvdCArIDEs
IGxhc3RUb2tlbkVuZCk7CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiByZXN1bHQgPSBtYWtlQXNz
aWduTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIG1fYXNzaWdubWVudEluZm9TdGFjay5s
YXN0KCkubV9ub2RlLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fb3AsIHJocywgbV9h
c3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX2luaXRBc3NpZ25tZW50cyAhPSBpbml0aWFsQXNz
aWdubWVudENvdW50LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1faW5pdEFzc2lnbm1l
bnRzICE9IGN1cnJlbnRBc3NpZ25tZW50Q291bnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0
KCkubV9zdGFydCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX2Rpdm90ICsgMSwgbGFz
dFRva2VuRW5kKTsKICAgICAgICAgbV9hc3NpZ25tZW50SW5mb1N0YWNrLnJlbW92ZUxhc3QoKTsK
ICAgICAgICAgYXNzaWdubWVudFN0YWNrRGVwdGgtLTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
QEAgLTYzNSw5ICs2MzUsOSBAQCBwcml2YXRlOgogICAgICAgICBtX2V2YWxDb3VudCsrOwogICAg
ICAgICBtX3Njb3BlLm1fZmVhdHVyZXMgfD0gRXZhbEZlYXR1cmU7CiAgICAgfQotICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVOdW1iZXIoaW50IGxpbmVOdW1iZXIsIGRvdWJsZSBkKQorICAgIEV4
cHJlc3Npb25Ob2RlKiBjcmVhdGVOdW1iZXIoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIGRvdWJsZSBkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBO
dW1iZXJOb2RlKGxpbmVOdW1iZXIsIGQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIE51bWJlck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBkKTsKICAgICB9CiAgICAg
CiAgICAgSlNHbG9iYWxEYXRhKiBtX2dsb2JhbERhdGE7CkBAIC02NTAsMzMgKzY1MCwzMyBAQCBw
cml2YXRlOgogICAgIGludCBtX2V2YWxDb3VudDsKIH07CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RC
dWlsZGVyOjptYWtlVHlwZU9mTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVR5cGVPZk5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQogewogICAgIGlm
IChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUg
PSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHIpOwotICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIFR5cGVPZlJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJlc29sdmUtPmlkZW50
aWZpZXIoKSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVHlwZU9mUmVzb2x2
ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCkpOwog
ICAgIH0KLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFR5cGVPZlZhbHVlTm9kZShsaW5l
TnVtYmVyLCBleHByKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFR5cGVPZlZhbHVl
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIpOwogfQogCi1FeHByZXNzaW9uTm9k
ZSogQVNUQnVpbGRlcjo6bWFrZURlbGV0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2Rl
KiBBU1RCdWlsZGVyOjptYWtlRGVsZXRlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5k
KQogewogICAgIGlmICghZXhwci0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIERlbGV0ZVZhbHVlTm9kZShsaW5lTnVtYmVyLCBleHByKTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEZWxldGVWYWx1ZU5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBleHByKTsKICAgICBpZiAoZXhwci0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAg
ICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihleHBy
KTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEZWxldGVSZXNvbHZlTm9kZShs
aW5lTnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBl
bmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlUmVz
b2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCks
IGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIGlmIChleHBy
LT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2Rl
KiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAg
ICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZUJyYWNrZXROb2RlKGxpbmVOdW1i
ZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGRpdm90LCBkaXZvdCAt
IHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
RGVsZXRlQnJhY2tldE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBicmFja2V0LT5iYXNl
KCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOwogICAgIH0KICAgICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAg
RG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihleHBy
KTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZURvdE5vZGUobGluZU51bWJl
ciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlRG90Tm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIo
KSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKIH0KIAotRXhwcmVzc2lvbk5v
ZGUqIEFTVEJ1aWxkZXI6Om1ha2VOZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogbikKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTmVnYXRlTm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIG4pCiB7CiAgICAg
aWYgKG4tPmlzTnVtYmVyKCkpIHsKICAgICAgICAgTnVtYmVyTm9kZSogbnVtYmVyTm9kZSA9IHN0
YXRpY19jYXN0PE51bWJlck5vZGUqPihuKTsKQEAgLTY4NCwxMjggKzY4NCwxMjggQEAgRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VOZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogbikKICAgICAgICAgcmV0dXJuIG51bWJlck5vZGU7CiAgICAgfQogCi0gICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOZWdhdGVOb2RlKGxpbmVOdW1iZXIsIG4pOworICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTmVnYXRlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIG4pOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdHdpc2VO
b3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKK0V4cHJlc3Npb25O
b2RlKiBBU1RCdWlsZGVyOjptYWtlQml0d2lzZU5vdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQogewogICAgIGlmIChleHByLT5pc051
bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIH50b0ludDMy
KHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByKS0+dmFsdWUoKSkpOwotICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgQml0d2lzZU5vdE5vZGUobGluZU51bWJlciwgZXhwcik7CisgICAg
ICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB+dG9JbnQz
MihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwciktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIEJpdHdpc2VOb3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgZXhwcik7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTXVsdE5vZGUo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRl
cjo6bWFrZU11bHROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAgZXhw
cjIgPSBleHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKIAogICAgIGlmIChleHByMS0+aXNOdW1iZXIo
KSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5l
TnVtYmVyLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpICogc3RhdGlj
X2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7CisgICAgICAgIHJldHVybiBjcmVh
dGVOdW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2Rl
Kj4oZXhwcjEpLT52YWx1ZSgpICogc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFs
dWUoKSk7CiAKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgc3RhdGljX2Nhc3Q8TnVtYmVy
Tm9kZSo+KGV4cHIxKS0+dmFsdWUoKSA9PSAxKQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIFVuYXJ5UGx1c05vZGUobGluZU51bWJlciwgZXhwcjIpOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBleHByMik7CiAKICAgICBpZiAoZXhwcjItPmlzTnVtYmVyKCkgJiYgc3RhdGljX2Nhc3Q8TnVt
YmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSA9PSAxKQotICAgICAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobGluZU51bWJlciwgZXhwcjEpOworICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBleHByMSk7CiAKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE11bHROb2RlKGxp
bmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBNdWx0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4
cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBB
U1RCdWlsZGVyOjptYWtlRGl2Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4
cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGl2Tm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBleHByMSA9IGV4cHIxLT5zdHJp
cFVuYXJ5UGx1cygpOwogICAgIGV4cHIyID0gZXhwcjItPnN0cmlwVW5hcnlQbHVzKCk7CiAKICAg
ICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJl
dHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4
cHIxKS0+dmFsdWUoKSAvIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkp
OwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGl2Tm9kZShsaW5lTnVtYmVyLCBleHBy
MSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVt
YmVyKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4
cHIxKS0+dmFsdWUoKSAvIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkp
OworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGl2Tm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJl
c3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTW9kTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTW9kTm9kZShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBleHByMSA9
IGV4cHIxLT5zdHJpcFVuYXJ5UGx1cygpOwogICAgIGV4cHIyID0gZXhwcjItPnN0cmlwVW5hcnlQ
bHVzKCk7CiAgICAgCiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJl
cigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIGZtb2Qoc3RhdGlj
X2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9k
ZSo+KGV4cHIyKS0+dmFsdWUoKSkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTW9k
Tm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAg
ICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZm1vZChz
dGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpLCBzdGF0aWNfY2FzdDxOdW1i
ZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBNb2ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBZGRO
b2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1
aWxkZXI6Om1ha2VBZGROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1i
ZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBzdGF0aWNfY2Fz
dDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpICsgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIyKS0+dmFsdWUoKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBZGROb2Rl
KGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAg
IHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0aWNfY2Fz
dDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpICsgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIyKS0+dmFsdWUoKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBZGROb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VTdWJOb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VTdWJOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAgZXhwcjIgPSBl
eHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKIAogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBl
eHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVy
LCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpIC0gc3RhdGljX2Nhc3Q8
TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBTdWJOb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50
cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpIC0gc3RhdGljX2Nhc3Q8
TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBTdWJOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VM
ZWZ0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5v
ZGUqIEFTVEJ1aWxkZXI6Om1ha2VMZWZ0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAm
JiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVt
YmVyLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpIDw8
ICh0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSAmIDB4
MWYpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExlZnRTaGlmdE5vZGUobGluZU51
bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nh
c3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPDwgKHRvVUludDMyKHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOworICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgTGVmdFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4
cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBB
U1RCdWlsZGVyOjptYWtlUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVJpZ2h0U2hpZnROb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChl
eHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihl
eHByMSktPnZhbHVlKCkpID4+ICh0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhw
cjIpLT52YWx1ZSgpKSAmIDB4MWYpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFJp
Z2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50
cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpID4+ICh0
b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSAmIDB4MWYp
KTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFJpZ2h0U2hpZnROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0K
IAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VVUmlnaHRTaGlmdE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFr
ZVVSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cykKIHsKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVy
KCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgdG9VSW50MzIoc3Rh
dGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOwotICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBl
eHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICByZXR1cm4gY3JlYXRl
TnVtYmVyKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVt
YmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJl
ck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOworICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2Rl
KiBBU1RCdWlsZGVyOjptYWtlQml0T3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRPck5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5p
c051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVt
YmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+
dmFsdWUoKSkgfCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVl
KCkpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdE9yTm9kZShsaW5lTnVtYmVy
LCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICByZXR1cm4gY3Jl
YXRlTnVtYmVyKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdG9JbnQzMihzdGF0aWNfY2FzdDxO
dW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSB8IHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVy
Tm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
Qml0T3JOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRB
bmROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFT
VEJ1aWxkZXI6Om1ha2VCaXRBbmROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+
aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB0b0lu
dDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpICYgdG9JbnQzMihz
dGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBCaXRBbmROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmln
aHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSkt
PnZhbHVlKCkpICYgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1
ZSgpKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCaXRBbmROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0K
IAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRYT3JOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRY
T3JOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQog
ewogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAg
ICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB0b0ludDMyKHN0YXRpY19jYXN0PE51
bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpIF4gdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJO
b2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBC
aXRYT3JOb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0
b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpIF4gdG9JbnQz
MihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7CisgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBCaXRYT3JOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
ZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUq
IEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZnVuYywgQXJndW1lbnRzTm9kZSogYXJncywgaW50IHN0YXJ0LCBpbnQgZGl2b3Qs
IGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBmdW5j
LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKIHsK
ICAgICBpZiAoIWZ1bmMtPmlzTG9jYXRpb24oKSkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUobGluZU51bWJlciwgZnVuYywgYXJncywgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBmdW5jLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIGlm
IChmdW5jLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUg
PSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGZ1bmMpOwogICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyID0gcmVzb2x2ZS0+aWRlbnRpZmllcigpOwogICAgICAgICBpZiAoaWRl
bnRpZmllciA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmV2YWwpIHsKICAgICAgICAg
ICAgIHVzZXNFdmFsKCk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEV2
YWxGdW5jdGlvbkNhbGxOb2RlKGxpbmVOdW1iZXIsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0
LCBlbmQgLSBkaXZvdCk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEV2
YWxGdW5jdGlvbkNhbGxOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgYXJncywgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlk
ZW50aWZpZXIsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBpZGVudGlmaWVyLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBz
dGFydCwgZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBpZiAoZnVuYy0+aXNCcmFja2V0QWNjZXNz
b3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRp
Y19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihmdW5jKTsKLSAgICAgICAgRnVuY3Rpb25DYWxs
QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsQnJhY2tl
dE5vZGUobGluZU51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwg
YXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgRnVuY3Rp
b25DYWxsQnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxs
QnJhY2tldE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJy
YWNrZXQtPnN1YnNjcmlwdCgpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOwogICAgICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgp
LCBicmFja2V0LT5lbmRPZmZzZXQoKSk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KQEAg
LTgxMywxMTggKzgxMywxMTggQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5j
dGlvbkNhbGxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSoKICAgICBEb3RBY2Nl
c3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwogICAg
IEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5vZGU7CiAgICAgaWYgKGRvdC0+aWRlbnRpZmllcigpID09
IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+Y2FsbCkKLSAgICAgICAgbm9kZSA9IG5ldyAo
bV9nbG9iYWxEYXRhKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJh
c2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQg
LSBkaXZvdCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ2FsbEZ1bmN0aW9u
Q2FsbERvdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5p
ZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAg
ICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5h
bWVzLT5hcHBseSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBBcHBseUZ1bmN0
aW9uQ2FsbERvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigp
LCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBub2Rl
ID0gbmV3IChtX2dsb2JhbERhdGEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBlbHNlCi0gICAgICAgIG5vZGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVtYmVyLCBkb3Qt
PmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBl
bmQgLSBkaXZvdCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25D
YWxsRG90Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlk
ZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAg
ICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZW5kT2Zmc2V0
KCkpOwogICAgIHJldHVybiBub2RlOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZUJpbmFyeU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCB0b2tlbiwgcGFpcjxFeHByZXNzaW9u
Tm9kZSosIEJpbmFyeU9wSW5mbz4gbGhzLCBwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJ
bmZvPiByaHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpbmFyeU5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGludCB0b2tlbiwgcGFpcjxFeHByZXNzaW9u
Tm9kZSosIEJpbmFyeU9wSW5mbz4gbGhzLCBwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJ
bmZvPiByaHMpCiB7CiAgICAgc3dpdGNoICh0b2tlbikgewogICAgIGNhc2UgT1I6Ci0gICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9naWNhbE9wTm9kZShsaW5lTnVtYmVyLCBsaHMu
Zmlyc3QsIHJocy5maXJzdCwgT3BMb2dpY2FsT3IpOworICAgICAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIExvZ2ljYWxPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmly
c3QsIHJocy5maXJzdCwgT3BMb2dpY2FsT3IpOwogCiAgICAgY2FzZSBBTkQ6Ci0gICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9naWNhbE9wTm9kZShsaW5lTnVtYmVyLCBsaHMuZmly
c3QsIHJocy5maXJzdCwgT3BMb2dpY2FsQW5kKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBMb2dpY2FsT3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0
LCByaHMuZmlyc3QsIE9wTG9naWNhbEFuZCk7CiAKICAgICBjYXNlIEJJVE9SOgotICAgICAgICBy
ZXR1cm4gbWFrZUJpdE9yTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhz
LnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VCaXRPck5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5o
YXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgQklUWE9SOgotICAgICAgICByZXR1cm4gbWFrZUJp
dFhPck5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFz
QXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlQml0WE9yTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1l
bnQpOwogCiAgICAgY2FzZSBCSVRBTkQ6Ci0gICAgICAgIHJldHVybiBtYWtlQml0QW5kTm9kZShs
aW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VCaXRBbmROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAg
ICBjYXNlIEVRRVE6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRXF1YWxOb2Rl
KGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1l
bnQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVxdWFsTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fz
c2lnbm1lbnQpOwogCiAgICAgY2FzZSBORToKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBOb3RFcXVhbE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5z
ZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
Tm90RXF1YWxOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmly
c3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIFNUUkVROgotICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN0cmljdEVxdWFsTm9kZShsaW5lTnVtYmVyLCBs
aHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBTdHJpY3RFcXVhbE5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50
KTsKIAogICAgIGNhc2UgU1RSTkVROgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IE5vdFN0cmljdEVxdWFsTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhz
LnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBOb3RTdHJpY3RFcXVhbE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3Qs
IHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgTFQ6Ci0g
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVzc05vZGUobGluZU51bWJlciwgbGhz
LmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVzc05vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAg
IGNhc2UgR1Q6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgR3JlYXRlck5vZGUo
bGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVu
dCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgR3JlYXRlck5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKIAogICAgIGNhc2UgTEU6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgTGVzc0VxTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNl
Y29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBM
ZXNzRXFOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3Qs
IHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIEdFOgotICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIEdyZWF0ZXJFcU5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0
LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgR3JlYXRlckVxTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAg
Y2FzZSBJTlNUQU5DRU9GOiB7Ci0gICAgICAgIEluc3RhbmNlT2ZOb2RlKiBub2RlID0gbmV3ICht
X2dsb2JhbERhdGEpIEluc3RhbmNlT2ZOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZp
cnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICBJbnN0YW5jZU9mTm9kZSog
bm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBJbnN0YW5jZU9mTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQp
OwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBsaHMuc2Vjb25kLnN0YXJ0LCBy
aHMuc2Vjb25kLnN0YXJ0LCByaHMuc2Vjb25kLmVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwog
ICAgIH0KIAogICAgIGNhc2UgSU5UT0tFTjogewotICAgICAgICBJbk5vZGUqIG5vZGUgPSBuZXcg
KG1fZ2xvYmFsRGF0YSkgSW5Ob2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBy
aHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICBJbk5vZGUqIG5vZGUgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgSW5Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCBy
aHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlv
bkxvY2F0aW9uKG5vZGUsIGxocy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuc3RhcnQsIHJocy5z
ZWNvbmQuZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCiAgICAgY2FzZSBMU0hJ
RlQ6Ci0gICAgICAgIHJldHVybiBtYWtlTGVmdFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmly
c3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJu
IG1ha2VMZWZ0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCBy
aHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIFJTSElGVDoK
LSAgICAgICAgcmV0dXJuIG1ha2VSaWdodFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3Qs
IHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1h
a2VSaWdodFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhz
LmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBVUlNISUZUOgot
ICAgICAgICByZXR1cm4gbWFrZVVSaWdodFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3Qs
IHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1h
a2VVUmlnaHRTaGlmdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJo
cy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgUExVUzoKLSAg
ICAgICAgcmV0dXJuIG1ha2VBZGROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0
LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZUFkZE5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29u
ZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgTUlOVVM6Ci0gICAgICAgIHJldHVybiBtYWtl
U3ViTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdWJOb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7
CiAKICAgICBjYXNlIFRJTUVTOgotICAgICAgICByZXR1cm4gbWFrZU11bHROb2RlKGxpbmVOdW1i
ZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAg
ICAgICByZXR1cm4gbWFrZU11bHROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZp
cnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIERJ
VklERToKLSAgICAgICAgcmV0dXJuIG1ha2VEaXZOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwg
cmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFr
ZURpdk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwg
cmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgTU9EOgotICAgICAgICByZXR1
cm4gbWFrZU1vZE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNv
bmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlTW9kTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2ln
bm1lbnQpOwogICAgIH0KICAgICBDUkFTSCgpOwogICAgIHJldHVybiAwOwogfQogCi1FeHByZXNz
aW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBsb2MsIE9wZXJhdG9yIG9wLCBFeHByZXNzaW9uTm9kZSogZXhwciwgYm9vbCBs
b2NIYXNBc3NpZ25tZW50cywgYm9vbCBleHBySGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50
IGRpdm90LCBpbnQgZW5kKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25O
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbG9j
LCBPcGVyYXRvciBvcCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGJvb2wgbG9jSGFzQXNzaWdubWVu
dHMsIGJvb2wgZXhwckhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVu
ZCkKIHsKICAgICBpZiAoIWxvYy0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIEFzc2lnbkVycm9yTm9kZShsaW5lTnVtYmVyLCBsb2MsIG9wLCBleHByLCBk
aXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIEFzc2lnbkVycm9yTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxv
Yywgb3AsIGV4cHIsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAKICAgICBp
ZiAobG9jLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUg
PSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGxvYyk7CiAgICAgICAgIGlmIChvcCA9PSBPcEVx
dWFsKSB7CiAgICAgICAgICAgICBpZiAoZXhwci0+aXNGdW5jRXhwck5vZGUoKSkKICAgICAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihleHByKS0+Ym9keSgpLT5zZXRJbmZl
cnJlZE5hbWUocmVzb2x2ZS0+aWRlbnRpZmllcigpKTsKLSAgICAgICAgICAgIEFzc2lnblJlc29s
dmVOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnblJlc29sdmVOb2RlKGxpbmVO
dW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzKTsK
KyAgICAgICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEp
IEFzc2lnblJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgcmVzb2x2ZS0+aWRl
bnRpZmllcigpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMpOwogICAgICAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICAgICAgcmV0
dXJuIG5vZGU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBS
ZWFkTW9kaWZ5UmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBv
cCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0g
ZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlSZXNv
bHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwg
b3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAt
IGRpdm90KTsKICAgICB9CiAgICAgaWYgKGxvYy0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsK
ICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNr
ZXRBY2Nlc3Nvck5vZGUqPihsb2MpOwogICAgICAgICBpZiAob3AgPT0gT3BFcXVhbCkKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduQnJhY2tldE5vZGUobGluZU51
bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgZXhwciwgbG9jSGFz
QXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tl
dC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBicmFja2V0LT5kaXZvdCgpKTsKLSAgICAgICAgUmVh
ZE1vZGlmeUJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlC
cmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlw
dCgpLCBvcCwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgQXNzaWduQnJhY2tldE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBleHByLCBsb2NIYXNBc3Np
Z25tZW50cywgZXhwckhhc0Fzc2lnbm1lbnRzLCBicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5k
aXZvdCgpIC0gc3RhcnQsIGVuZCAtIGJyYWNrZXQtPmRpdm90KCkpOworICAgICAgICBSZWFkTW9k
aWZ5QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1vZGlmeUJyYWNr
ZXROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0
LT5zdWJzY3JpcHQoKSwgb3AsIGV4cHIsIGxvY0hhc0Fzc2lnbm1lbnRzLCBleHBySGFzQXNzaWdu
bWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgICAgIG5vZGUt
PnNldFN1YmV4cHJlc3Npb25JbmZvKGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPmVuZE9mZnNl
dCgpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQpAQCAtOTMzLDU1ICs5MzMsNTUgQEAg
RXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogbG9jLAogICAgIGlmIChvcCA9PSBPcEVxdWFsKSB7CiAgICAgICAg
IGlmIChleHByLT5pc0Z1bmNFeHByTm9kZSgpKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RnVu
Y0V4cHJOb2RlKj4oZXhwciktPmJvZHkoKS0+c2V0SW5mZXJyZWROYW1lKGRvdC0+aWRlbnRpZmll
cigpKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25Eb3ROb2RlKGxp
bmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fz
c2lnbm1lbnRzLCBkb3QtPmRpdm90KCksIGRvdC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBkb3Qt
PmRpdm90KCkpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnbkRvdE5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVy
KCksIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZG90LT5kaXZvdCgpLCBkb3QtPmRpdm90KCkg
LSBzdGFydCwgZW5kIC0gZG90LT5kaXZvdCgpKTsKICAgICB9CiAKLSAgICBSZWFkTW9kaWZ5RG90
Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5RG90Tm9kZShsaW5lTnVt
YmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNz
aWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgUmVhZE1v
ZGlmeURvdE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1vZGlmeURvdE5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCks
IG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQg
LSBkaXZvdCk7CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBk
b3QtPmVuZE9mZnNldCgpKTsKICAgICByZXR1cm4gbm9kZTsKIH0KIAotRXhwcmVzc2lvbk5vZGUq
IEFTVEJ1aWxkZXI6Om1ha2VQcmVmaXhOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwciwgT3BlcmF0b3Igb3AsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VQcmVmaXhOb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3BlcmF0b3Igb3AsIGludCBz
dGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlmICghZXhwci0+aXNMb2NhdGlvbigp
KQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeEVycm9yTm9kZShsaW5l
TnVtYmVyLCBleHByLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhFcnJvck5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBleHByLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90KTsKIAogICAgIGlmIChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2
ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHIpOwotICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeFJlc29sdmVOb2RlKGxpbmVOdW1iZXIs
IHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4UmVzb2x2ZU5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wLCBk
aXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBpZiAoZXhwci0+
aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSog
YnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICAg
ICAgUHJlZml4QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4QnJh
Y2tldE5vZGUobGluZU51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQo
KSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIFByZWZp
eEJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeEJyYWNrZXROb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJz
Y3JpcHQoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgICAg
IG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPnN0
YXJ0T2Zmc2V0KCkpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAgICAgQVNTRVJUKGV4
cHItPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3Rh
dGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZXhwcik7Ci0gICAgUHJlZml4RG90Tm9kZSogbm9k
ZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CisgICAgUHJlZml4RG90Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQcmVm
aXhEb3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRl
bnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBu
b2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+c3RhcnRPZmZzZXQo
KSk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlUG9zdGZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVy
YXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSog
QVNUQnVpbGRlcjo6bWFrZVBvc3RmaXhOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3BlcmF0b3Igb3AsIGludCBzdGFydCwgaW50IGRp
dm90LCBpbnQgZW5kKQogewogICAgIGlmICghZXhwci0+aXNMb2NhdGlvbigpKQotICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhFcnJvck5vZGUobGluZU51bWJlciwgZXhw
ciwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeEVycm9yTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogCiAg
ICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVz
b2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJlc29sdmUt
PmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7Cisg
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeFJlc29sdmVOb2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRp
dm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICB9CiAgICAgaWYgKGV4cHItPmlzQnJhY2tl
dEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQg
PSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4oZXhwcik7Ci0gICAgICAgIFBvc3Rm
aXhCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4QnJhY2tldE5v
ZGUobGluZU51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgb3As
IGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIFBvc3RmaXhCcmFj
a2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4QnJhY2tldE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlw
dCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICAgICAgbm9k
ZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZW5kT2Zm
c2V0KCkpOwogICAgICAgICByZXR1cm4gbm9kZTsKIAogICAgIH0KICAgICBBU1NFUlQoZXhwci0+
aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNf
Y2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICBQb3N0Zml4RG90Tm9kZSogbm9kZSA9
IG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4RG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2Uo
KSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOworICAgIFBvc3RmaXhEb3ROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFBvc3Rm
aXhEb3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRl
bnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBu
b2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZW5kT2Zmc2V0KCkp
OwogICAgIHJldHVybiBub2RlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNw
cAppbmRleCAzYjAyMGY0ZjJiMWIwOTZhNzBhOTVhOWI1ODg4MjdiZDkwYjk4NTljLi5iZmQ3ZmQy
YzI0NzJiODM3YWZhZjkxOWY1MTgxYzMwZDRlN2I5MzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmNwcApAQCAtNDE3LDYgKzQxNyw3IEBAIHZvaWQgTGV4ZXI8VD46OnNldENv
ZGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJBcmVuYSogYXJlbmEpCiAgICAgbV9j
b2RlRW5kID0gbV9jb2RlU3RhcnQgKyBzb3VyY2UuZW5kT2Zmc2V0KCk7CiAgICAgbV9lcnJvciA9
IGZhbHNlOwogICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOworICAgIG1fY29sdW1uTnVtYmVyID0g
MDsKICAgICBtX2xleEVycm9yTWVzc2FnZSA9IFVTdHJpbmcoKTsKICAgICAKICAgICBtX2J1ZmZl
cjgucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbml0aWFsUmVhZEJ1ZmZlckNhcGFjaXR5KTsKQEAg
LTQzMyw2ICs0MzQsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHRlbXBsYXRlIDxpbnQgc2hp
ZnRBbW91bnQ+IEFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6aW50ZXJuYWxTaGlmdCgpCiB7
CiAgICAgbV9jb2RlICs9IHNoaWZ0QW1vdW50OworICAgIG1fY29sdW1uTnVtYmVyICs9IHNoaWZ0
QW1vdW50OwogICAgIG1fY3VycmVudCA9ICptX2NvZGU7CiB9CiAKQEAgLTQ0NCw2ICs0NDYsNyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VD46OnNoaWZ0KCkKICAgICArK21fY29kZTsKICAg
ICBpZiAoTElLRUxZKG1fY29kZSA8IG1fY29kZUVuZCkpCiAgICAgICAgIG1fY3VycmVudCA9ICpt
X2NvZGU7CisgICAgKyttX2NvbHVtbk51bWJlcjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CkBAIC0xMjAwLDYgKzEyMDMsNyBAQCBzdGFydDoKICAgICAgICAgcmV0dXJuIEVPRlRPSzsKICAg
ICAKICAgICB0b2tlbkluZm8tPnN0YXJ0T2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRv
a2VuSW5mby0+Y29sdW1uID0gbV9jb2x1bW5OdW1iZXI7CiAKICAgICBDaGFyYWN0ZXJUeXBlIHR5
cGU7CiAgICAgaWYgKExJS0VMWShpc0xhdGluMShtX2N1cnJlbnQpKSkKQEAgLTE1MjIsNiArMTUy
Niw3IEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIHNoaWZ0TGluZVRlcm1p
bmF0b3IoKTsKICAgICAgICAgbV9hdExpbmVTdGFydCA9IHRydWU7CiAgICAgICAgIG1fdGVybWlu
YXRvciA9IHRydWU7CisgICAgICAgIG1fY29sdW1uTnVtYmVyID0gMDsKICAgICAgICAgZ290byBz
dGFydDsKICAgICBjYXNlIENoYXJhY3RlckludmFsaWQ6CiAgICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gaW52YWxpZENoYXJhY3Rlck1lc3NhZ2UoKTsKQEAgLTE1NDQsNiArMTU0OSw3IEBAIGlu
U2luZ2xlTGluZUNvbW1lbnQ6CiAgICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwogICAgIG1fYXRM
aW5lU3RhcnQgPSB0cnVlOwogICAgIG1fdGVybWluYXRvciA9IHRydWU7CisgICAgbV9jb2x1bW5O
dW1iZXIgPSAwOwogICAgIGlmICghbGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkpCiAgICAgICAg
IGdvdG8gc3RhcnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCA0MWYx
Zjg1NTNlMWViMjVmNTQ0YmVlMTkzNWEyYWY0YmJkMDY5ZTY0Li4yOGI1M2JiZTdkOGZjNzZiYzBi
YTQ3ZjhkYjc2ZDc2NzhlYjA3Y2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5o
CkBAIC05MCw2ICs5MCw3IEBAIHB1YmxpYzoKICAgICBKU1Rva2VuVHlwZSBsZXgoSlNUb2tlbkRh
dGEqLCBKU1Rva2VuSW5mbyosIHVuc2lnbmVkLCBib29sIHN0cmljdE1vZGUpOwogICAgIGJvb2wg
bmV4dFRva2VuSXNDb2xvbigpOwogICAgIGludCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
bV9saW5lTnVtYmVyOyB9CisgICAgaW50IGN1cnJlbnRDb2x1bW5OdW1iZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvbHVtbk51bWJlcjsgfQogICAgIHZvaWQgc2V0TGFzdExpbmVOdW1iZXIoaW50IGxh
c3RMaW5lTnVtYmVyKSB7IG1fbGFzdExpbmVOdW1iZXIgPSBsYXN0TGluZU51bWJlcjsgfQogICAg
IGludCBsYXN0TGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdExpbmVOdW1iZXI7IH0K
ICAgICBib29sIHByZXZUZXJtaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gbV90ZXJtaW5hdG9yOyB9
CkBAIC0xNjYsNiArMTY3LDcgQEAgcHJpdmF0ZToKIAogICAgIGludCBtX2xpbmVOdW1iZXI7CiAg
ICAgaW50IG1fbGFzdExpbmVOdW1iZXI7CisgICAgaW50IG1fY29sdW1uTnVtYmVyOwogCiAgICAg
VmVjdG9yPExDaGFyPiBtX2J1ZmZlcjg7CiAgICAgVmVjdG9yPFVDaGFyPiBtX2J1ZmZlcjE2OwpA
QCAtMjg1LDYgKzI4Nyw3IEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46Omxl
eEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSwKICAgICAgICAgbV9jdXJy
ZW50ID0gMDsKIAogICAgIG1fY29kZSA9IHB0cjsKKyAgICBtX2NvbHVtbk51bWJlciA9IG1fY29s
dW1uTnVtYmVyICsgKG1fY29kZSAtIHN0YXJ0KTsKIAogICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRp
ZmllciBpZiBuZWVkZWQKICAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRL
ZXl3b3JkcykKQEAgLTI5NCw2ICsyOTcsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExl
eGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsCiAgICAg
dG9rZW5JbmZvLT5saW5lID0gbV9saW5lTnVtYmVyOwogICAgIHRva2VuSW5mby0+c3RhcnRPZmZz
ZXQgPSBzdGFydCAtIG1fY29kZVN0YXJ0OwogICAgIHRva2VuSW5mby0+ZW5kT2Zmc2V0ID0gY3Vy
cmVudE9mZnNldCgpOworICAgIHRva2VuSW5mby0+Y29sdW1uID0gbV9jb2x1bW5OdW1iZXI7CiAg
ICAgbV9sYXN0VG9rZW4gPSBJREVOVDsKICAgICByZXR1cm4gSURFTlQ7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGU0OTZk
MjM0MmIzNDAxZmE0YWU3NGUyNDYzOTRlYjk3YzMzYmNhMWYuLjJhZTJmOWUzZGU2MWFjOGIwMzdm
OWJjZGMwMWNjODU3ZjI5ZmUxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC00Miw2MCArNDIsNjEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGdsb2JhbERhdGEtPnBhcnNlckFyZW5hLT5kZXJlZldpdGhBcmVuYShhZG9wdFJl
Zih0aGlzKSk7CiAgICAgfQogCi0gICAgaW5saW5lIE5vZGU6Ok5vZGUoaW50IGxpbmVOdW1iZXIp
CisgICAgaW5saW5lIE5vZGU6Ok5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIp
CiAgICAgICAgIDogbV9saW5lTnVtYmVyKGxpbmVOdW1iZXIpCisgICAgICAgICwgbV9jb2x1bW5O
dW1iZXIoY29sdW1uTnVtYmVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRXhwcmVzc2lv
bk5vZGU6OkV4cHJlc3Npb25Ob2RlKGludCBsaW5lTnVtYmVyLCBSZXN1bHRUeXBlIHJlc3VsdFR5
cGUpCi0gICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBFeHByZXNzaW9uTm9k
ZTo6RXhwcmVzc2lvbk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFJlc3Vs
dFR5cGUgcmVzdWx0VHlwZSkKKyAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
cikKICAgICAgICAgLCBtX3Jlc3VsdFR5cGUocmVzdWx0VHlwZSkKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIFN0YXRlbWVudE5vZGU6OlN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIpCi0g
ICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBTdGF0ZW1lbnROb2RlOjpTdGF0
ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQorICAgICAgICA6IE5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fbGFzdExpbmUoLTEpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBOdWxsTm9kZTo6TnVsbE5vZGUoaW50IGxpbmVOdW1i
ZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVs
bFR5cGUoKSkKKyAgICBpbmxpbmUgTnVsbE5vZGU6Ok51bGxOb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVsbFR5cGUoKSkKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIEJvb2xlYW5Ob2RlOjpCb29sZWFuTm9kZShpbnQgbGluZU51bWJlciwgYm9vbCB2YWx1
ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29s
ZWFuVHlwZSgpKQorICAgIGlubGluZSBCb29sZWFuTm9kZTo6Qm9vbGVhbk5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGJvb2wgdmFsdWUpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgp
KQogICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBO
dW1iZXJOb2RlOjpOdW1iZXJOb2RlKGludCBsaW5lTnVtYmVyLCBkb3VibGUgdmFsdWUpCi0gICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgp
KQorICAgIGlubGluZSBOdW1iZXJOb2RlOjpOdW1iZXJOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBkb3VibGUgdmFsdWUpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCkpCiAgICAgICAg
ICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFN0cmluZ05vZGU6
OlN0cmluZ05vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIHZhbHVlKQotICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OnN0cmluZ1R5cGUo
KSkKKyAgICBpbmxpbmUgU3RyaW5nTm9kZTo6U3RyaW5nTm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgdmFsdWUpCisgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBl
KCkpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IFJlZ0V4cE5vZGU6OlJlZ0V4cE5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIm
IHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzKQotICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFJlZ0V4cE5vZGU6OlJlZ0V4cE5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNv
bnN0IElkZW50aWZpZXImIGZsYWdzKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX3BhdHRlcm4ocGF0dGVybikKICAgICAgICAg
LCBtX2ZsYWdzKGZsYWdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVGhpc05vZGU6OlRo
aXNOb2RlKGludCBsaW5lTnVtYmVyKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIFRoaXNOb2RlOjpUaGlzTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZXNvbHZlTm9kZTo6UmVzb2x2ZU5v
ZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBpbnQgc3RhcnRPZmZz
ZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmVz
b2x2ZU5vZGU6OlJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgaW50IHN0YXJ0T2Zmc2V0KQorICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2lkZW50KGlk
ZW50KQogICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRPZmZzZXQpCiAgICAgewpAQCAtMTE2
LDI0ICsxMTcsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGwtPm1fbmV4dCA9IHRoaXM7
CiAgICAgfQogCi0gICAgaW5saW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGludCBsaW5lTnVtYmVy
LCBpbnQgZWxpc2lvbikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAg
IGlubGluZSBBcnJheU5vZGU6OkFycmF5Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgaW50IGVsaXNpb24pCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZWxlbWVudCgwKQogICAgICAgICAsIG1fZWxpc2lv
bihlbGlzaW9uKQogICAgICAgICAsIG1fb3B0aW9uYWwodHJ1ZSkKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGludCBsaW5lTnVtYmVyLCBFbGVtZW50Tm9k
ZSogZWxlbWVudCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlu
bGluZSBBcnJheU5vZGU6OkFycmF5Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRWxlbWVudE5vZGUqIGVsZW1lbnQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogICAgICAg
ICAsIG1fZWxpc2lvbigwKQogICAgICAgICAsIG1fb3B0aW9uYWwoZmFsc2UpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBBcnJheU5vZGU6OkFycmF5Tm9kZShpbnQgbGluZU51bWJlciwgaW50
IGVsaXNpb24sIEVsZW1lbnROb2RlKiBlbGVtZW50KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQgZWxpc2lvbiwgRWxlbWVudE5vZGUqIGVsZW1lbnQp
CisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAg
ICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogICAgICAgICAsIG1fZWxpc2lvbihlbGlzaW9uKQog
ICAgICAgICAsIG1fb3B0aW9uYWwodHJ1ZSkKQEAgLTE1NCw1NyArMTU1LDU3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJvcGVydHlMaXN0Tm9kZTo6UHJv
cGVydHlMaXN0Tm9kZShpbnQgbGluZU51bWJlciwgUHJvcGVydHlOb2RlKiBub2RlKQotICAgICAg
ICA6IE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVy
dHlMaXN0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUHJvcGVydHlOb2Rl
KiBub2RlKQorICAgICAgICA6IE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAg
ICAsIG1fbm9kZShub2RlKQogICAgICAgICAsIG1fbmV4dCgwKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgUHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZShpbnQgbGluZU51bWJl
ciwgUHJvcGVydHlOb2RlKiBub2RlLCBQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0KQotICAgICAgICA6
IE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlM
aXN0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUHJvcGVydHlOb2RlKiBu
b2RlLCBQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0KQorICAgICAgICA6IE5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fbm9kZShub2RlKQogICAgICAgICAsIG1fbmV4dCgw
KQogICAgIHsKICAgICAgICAgbGlzdC0+bV9uZXh0ID0gdGhpczsKICAgICB9CiAKLSAgICBpbmxp
bmUgT2JqZWN0TGl0ZXJhbE5vZGU6Ok9iamVjdExpdGVyYWxOb2RlKGludCBsaW5lTnVtYmVyKQot
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIE9iamVjdExp
dGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIp
CiAgICAgICAgICwgbV9saXN0KDApCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBPYmplY3RM
aXRlcmFsTm9kZTo6T2JqZWN0TGl0ZXJhbE5vZGUoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5TGlz
dE5vZGUqIGxpc3QpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBp
bmxpbmUgT2JqZWN0TGl0ZXJhbE5vZGU6Ok9iamVjdExpdGVyYWxOb2RlKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0KQorICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2xpc3Qo
bGlzdCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJyYWNrZXRBY2Nlc3Nvck5vZGU6OkJy
YWNrZXRBY2Nlc3Nvck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBF
eHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKQot
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEJyYWNrZXRB
Y2Nlc3Nvck5vZGU6OkJyYWNrZXRBY2Nlc3Nvck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0
LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAg
ICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCiAgICAgICAgICwgbV9zdWJzY3JpcHRIYXNBc3Np
Z25tZW50cyhzdWJzY3JpcHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIERvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRG90QWNjZXNzb3JOb2RlOjpEb3RB
Y2Nlc3Nvck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAg
ICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFyZ3Vt
ZW50TGlzdE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByKQotICAgICAgICA6IE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXJndW1l
bnRMaXN0Tm9kZTo6QXJndW1lbnRMaXN0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgICAgICwgbV9leHByKGV4cHIp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcmd1bWVudExpc3ROb2RlOjpBcmd1bWVudExp
c3ROb2RlKGludCBsaW5lTnVtYmVyLCBBcmd1bWVudExpc3ROb2RlKiBsaXN0Tm9kZSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBB
cmd1bWVudExpc3ROb2RlOjpBcmd1bWVudExpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBBcmd1bWVudExpc3ROb2RlKiBsaXN0Tm9kZSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIpCisgICAgICAgIDogTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwg
bV9uZXh0KDApCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewpAQCAtMjIxLDQ1ICsyMjIs
NDUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBOZXdFeHBy
Tm9kZTo6TmV3RXhwck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQot
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIE5ld0V4cHJO
b2RlOjpOZXdFeHByTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fYXJncygwKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTmV3RXhwck5vZGU6Ok5ld0V4cHJOb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQXJndW1lbnRzTm9kZSogYXJncykKLSAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBOZXdFeHByTm9k
ZTo6TmV3RXhwck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdzKQorICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAg
ICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEV2YWxGdW5j
dGlvbkNhbGxOb2RlOjpFdmFsRnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51bWJlciwgQXJndW1l
bnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgRXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OkV2YWxGdW5jdGlvbkNhbGxOb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAg
ICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5jdGlv
bkNhbGxWYWx1ZU5vZGU6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6
RnVuY3Rpb25DYWxsVmFsdWVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwciwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAs
IG1fZXhwcihleHByKQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2Rl
KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSog
YXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1l
bnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwg
bV9hcmdzKGFyZ3MpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5jdGlvbkNhbGxCcmFj
a2V0Tm9kZTo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiBh
cmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBG
dW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9u
Tm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlU3Vi
RXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwg
bV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtMjY3LDgg
KzI2OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVu
Y3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2Rl
KiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGlu
ZSBGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2Uo
YmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQpAQCAtMjc2LDMxICsyNzcsMzEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxs
RG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJn
cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCi0gICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVtYmVyLCBiYXNlLCBpZGVu
dCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgaW5saW5lIENhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxE
b3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJn
dW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVt
YmVyLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisg
ICAgaW5saW5lIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAg
ICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBiYXNlLCBp
ZGVudCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBQcmVQb3N0UmVzb2x2ZU5vZGU6OlByZVBvc3RSZXNvbHZlTm9kZShpbnQg
bGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSkgLy8gY291bGQgYmUg
cmV1c2FibGUgZm9yIHByZT8KKyAgICBpbmxpbmUgUHJlUG9zdFJlc29sdmVOb2RlOjpQcmVQb3N0
UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSkgLy8gY291bGQgYmUgcmV1c2FibGUg
Zm9yIHByZT8KICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgUG9zdGZpeFJlc29sdmVOb2RlOjpQb3N0Zml4UmVzb2x2ZU5vZGUoaW50
IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAg
ICAgICAgOiBQcmVQb3N0UmVzb2x2ZU5vZGUobGluZU51bWJlciwgaWRlbnQsIGRpdm90LCBzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0KQorICAgIGlubGluZSBQb3N0Zml4UmVzb2x2ZU5vZGU6OlBvc3Rm
aXhSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IFByZVBvc3RSZXNvbHZl
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGlkZW50LCBkaXZvdCwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBQb3N0Zml4QnJhY2tldE5vZGU6OlBvc3RmaXhCcmFja2V0Tm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQs
IE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisg
ICAgaW5saW5lIFBvc3RmaXhCcmFja2V0Tm9kZTo6UG9zdGZpeEJyYWNrZXROb2RlKGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFz
ZShiYXNlKQogICAgICAgICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKQEAgLTMwOCw4ICszMDks
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFBvc3RmaXhE
b3ROb2RlOjpQb3N0Zml4RG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQb3N0Zml4RG90Tm9kZTo6UG9z
dGZpeERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAs
IFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0
KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCkBAIC0z
MTcsNjkgKzMxOCw2OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIFBvc3RmaXhFcnJvck5vZGU6OlBvc3RmaXhFcnJvck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQb3N0Zml4RXJyb3JOb2RlOjpQb3N0Zml4RXJy
b3JOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRp
dm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fZXhwcihleHByKQogICAg
ICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlbGV0
ZVJlc29sdmVOb2RlOjpEZWxldGVSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisg
ICAgaW5saW5lIERlbGV0ZVJlc29sdmVOb2RlOjpEZWxldGVSZXNvbHZlTm9kZShpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAg
ICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVsZXRl
QnJhY2tldE5vZGU6OkRlbGV0ZUJyYWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRGVsZXRlQnJhY2tldE5vZGU6OkRlbGV0
ZUJyYWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1f
YmFzZShiYXNlKQogICAgICAgICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIERlbGV0ZURvdE5vZGU6OkRlbGV0ZURvdE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRGVsZXRlRG90Tm9k
ZTo6RGVsZXRlRG90Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwg
bV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIERlbGV0ZVZhbHVlTm9kZTo6RGVsZXRlVmFsdWVOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBEZWxldGVWYWx1ZU5vZGU6OkRlbGV0ZVZhbHVlTm9kZShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1f
ZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVm9pZE5vZGU6OlZvaWROb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBWb2lkTm9kZTo6Vm9pZE5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBt
X2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFR5cGVPZlJlc29sdmVOb2Rl
OjpUeXBlT2ZSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6c3Ry
aW5nVHlwZSgpKQorICAgIGlubGluZSBUeXBlT2ZSZXNvbHZlTm9kZTo6VHlwZU9mUmVzb2x2ZU5v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
UmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVlTm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQorICAgIGlubGluZSBU
eXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAg
ICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVmaXhSZXNv
bHZlTm9kZTo6UHJlZml4UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBQcmVQb3N0UmVzb2x2ZU5vZGUo
bGluZU51bWJlciwgaWRlbnQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgIGlu
bGluZSBQcmVmaXhSZXNvbHZlTm9kZTo6UHJlZml4UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVy
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKKyAgICAgICAgOiBQcmVQb3N0UmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBpZGVudCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9vcGVy
YXRvcihvcGVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJlZml4QnJhY2tldE5vZGU6
OlByZWZpeEJyYWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
RXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUHJlZml4QnJhY2tldE5vZGU6OlBy
ZWZpeEJyYWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3Blciwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
CisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAg
ICAgICAsIFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJz
Y3JpcHQoc3Vic2NyaXB0KQpAQCAtMzg3LDggKzM4OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJlZml4RG90Tm9kZTo6UHJlZml4RG90Tm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBQcmVmaXhEb3ROb2RlOjpQcmVmaXhEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Np
b25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShi
YXNlKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCkBAIC0zOTYsNDQgKzM5Nyw0NCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFByZWZpeEVycm9yTm9kZTo6
UHJlZml4RXJyb3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3Bl
cmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBp
bmxpbmUgUHJlZml4RXJyb3JOb2RlOjpQcmVmaXhFcnJvck5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcGVyLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAg
ICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQp
CiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgVW5hcnlPcE5vZGU6OlVuYXJ5T3BOb2RlKGludCBsaW5l
TnVtYmVyLCBSZXN1bHRUeXBlIHR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGNvZGVJRCBv
cGNvZGVJRCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCB0eXBlKQorICAg
IGlubGluZSBVbmFyeU9wTm9kZTo6VW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIFJlc3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wY29kZUlE
IG9wY29kZUlEKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgdHlwZSkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX29wY29kZUlE
KG9wY29kZUlEKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVW5hcnlQbHVzTm9kZTo6VW5h
cnlQbHVzTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAg
IDogVW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHBy
LCBvcF90b19qc251bWJlcikKKyAgICBpbmxpbmUgVW5hcnlQbHVzTm9kZTo6VW5hcnlQbHVzTm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIp
CisgICAgICAgIDogVW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRU
eXBlOjpudW1iZXJUeXBlKCksIGV4cHIsIG9wX3RvX2pzbnVtYmVyKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgTmVnYXRlTm9kZTo6TmVnYXRlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogVW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0
VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByLCBvcF9uZWdhdGUpCisgICAgaW5saW5lIE5lZ2F0ZU5v
ZGU6Ok5lZ2F0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByKQorICAgICAgICA6IFVuYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByLCBvcF9uZWdhdGUpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBCaXR3aXNlTm90Tm9kZTo6Qml0d2lzZU5vdE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCkpCisgICAgaW5saW5lIEJpdHdpc2VO
b3ROb2RlOjpCaXR3aXNlTm90Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpKQogICAgICAgICAsIG1fZXhw
cihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTG9naWNhbE5vdE5vZGU6OkxvZ2lj
YWxOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAg
OiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHBy
LCBvcF9ub3QpCisgICAgaW5saW5lIExvZ2ljYWxOb3ROb2RlOjpMb2dpY2FsTm90Tm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAg
ICAgIDogVW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpi
b29sZWFuVHlwZSgpLCBleHByLCBvcF9ub3QpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBC
aW5hcnlPcE5vZGU6OkJpbmFyeU9wTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgQmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBt
X2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCiAgICAgICAgICwgbV9vcGNv
ZGVJRChvcGNvZGVJRCkKQEAgLTQ0MSw4ICs0NDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIEJpbmFyeU9wTm9kZTo6QmluYXJ5T3BOb2RlKGludCBsaW5l
TnVtYmVyLCBSZXN1bHRUeXBlIHR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIHR5cGUpCisgICAgaW5saW5l
IEJpbmFyeU9wTm9kZTo6QmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBSZXN1bHRUeXBlIHR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQor
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdHlwZSkK
ICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCiAgICAg
ICAgICwgbV9vcGNvZGVJRChvcGNvZGVJRCkKQEAgLTQ1MCwxNDAgKzQ1MSwxNDAgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBNdWx0Tm9kZTo6TXVsdE5vZGUo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxp
bmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9tdWws
IHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIE11bHROb2RlOjpNdWx0Tm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBC
aW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJU
eXBlKCksIGV4cHIxLCBleHByMiwgb3BfbXVsLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgRGl2Tm9kZTo6RGl2Tm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlw
ZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2RpdiwgcmlnaHRIYXNBc3NpZ25tZW50
cykKKyAgICBpbmxpbmUgRGl2Tm9kZTo6RGl2Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwg
b3BfZGl2LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKIAotICAgIGlubGlu
ZSBNb2ROb2RlOjpNb2ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAg
ICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4
cHIxLCBleHByMiwgb3BfbW9kLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBNb2RO
b2RlOjpNb2ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJl
c3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9tb2QsIHJpZ2h0SGFzQXNz
aWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBZGROb2RlOjpBZGROb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5l
TnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JBZGQoZXhwcjEtPnJlc3VsdERlc2NyaXB0b3IoKSwgZXhw
cjItPnJlc3VsdERlc2NyaXB0b3IoKSksIGV4cHIxLCBleHByMiwgb3BfYWRkLCByaWdodEhhc0Fz
c2lnbm1lbnRzKQorICAgIGlubGluZSBBZGROb2RlOjpBZGROb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmZvckFkZChleHByMS0+cmVzdWx0
RGVzY3JpcHRvcigpLCBleHByMi0+cmVzdWx0RGVzY3JpcHRvcigpKSwgZXhwcjEsIGV4cHIyLCBv
cF9hZGQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBT
dWJOb2RlOjpTdWJOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6
IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIx
LCBleHByMiwgb3Bfc3ViLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBTdWJOb2Rl
OjpTdWJOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3Vs
dFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9zdWIsIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBMZWZ0U2hpZnROb2RlOjpMZWZ0U2hp
ZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9w
Tm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9w
X2xzaGlmdCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTGVmdFNoaWZ0Tm9kZTo6
TGVmdFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBS
ZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2xzaGlmdCwgcmlnaHRIYXNB
c3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFJpZ2h0U2hpZnROb2RlOjpS
aWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBC
aW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4
cHIyLCBvcF9yc2hpZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIFJpZ2h0U2hp
ZnROb2RlOjpSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX3JzaGlmdCwg
cmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFVuc2lnbmVk
UmlnaHRTaGlmdE5vZGU6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5
cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF91cnNoaWZ0LCByaWdodEhhc0Fzc2ln
bm1lbnRzKQorICAgIGlubGluZSBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlOjpVbnNpZ25lZFJpZ2h0
U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3Vs
dFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF91cnNoaWZ0LCByaWdodEhhc0Fz
c2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTGVzc05vZGU6Okxlc3NOb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2xl
c3MsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIExlc3NOb2RlOjpMZXNzTm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAg
OiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpib29s
ZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2xlc3MsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBHcmVhdGVyTm9kZTo6R3JlYXRlck5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1i
ZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZ3JlYXRlciwg
cmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgR3JlYXRlck5vZGU6OkdyZWF0ZXJOb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAg
ICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJv
b2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZ3JlYXRlciwgcmlnaHRIYXNBc3NpZ25tZW50
cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIExlc3NFcU5vZGU6Okxlc3NFcU5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVO
dW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbGVzc2Vx
LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBMZXNzRXFOb2RlOjpMZXNzRXFOb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAg
ICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJv
b2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbGVzc2VxLCByaWdodEhhc0Fzc2lnbm1lbnRz
KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgR3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUo
bGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9n
cmVhdGVyZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEdyZWF0ZXJFcU5vZGU6
OkdyZWF0ZXJFcU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
UmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVyZXEsIHJp
Z2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBUaHJvd2FibGVC
aW5hcnlPcE5vZGU6OlRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQgbGluZU51bWJlciwgUmVzdWx0
VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
T3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBC
aW5hcnlPcE5vZGUobGluZU51bWJlciwgdHlwZSwgZXhwcjEsIGV4cHIyLCBvcGNvZGVJRCwgcmln
aHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgVGhyb3dhYmxlQmluYXJ5T3BOb2RlOjpUaHJv
d2FibGVCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFJlc3Vs
dFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IE9wY29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDog
QmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdHlwZSwgZXhwcjEsIGV4cHIy
LCBvcGNvZGVJRCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIFRocm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bj
b2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5h
cnlPcE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCBvcGNvZGVJRCwgcmlnaHRIYXNBc3Np
Z25tZW50cykKKyAgICBpbmxpbmUgVGhyb3dhYmxlQmluYXJ5T3BOb2RlOjpUaHJvd2FibGVCaW5h
cnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGV4cHIxLCBleHByMiwgb3Bjb2RlSUQsIHJpZ2h0SGFzQXNzaWdubWVudHMp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBJbnN0YW5jZU9mTm9kZTo6SW5zdGFuY2VPZk5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogVGhyb3dhYmxlQmlu
YXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBl
eHByMiwgb3BfaW5zdGFuY2VvZiwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgSW5z
dGFuY2VPZk5vZGU6Okluc3RhbmNlT2ZOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IFRocm93YWJsZUJpbmFyeU9wTm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBl
eHByMiwgb3BfaW5zdGFuY2VvZiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIEluTm9kZTo6SW5Ob2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQotICAgICAgICA6IFRocm93YWJsZUJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhw
cjIsIG9wX2luLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBJbk5vZGU6OkluTm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAg
ICAgOiBUaHJvd2FibGVCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHBy
MSwgZXhwcjIsIG9wX2luLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgRXF1YWxOb2RlOjpFcXVhbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xl
YW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAg
aW5saW5lIEVxdWFsTm9kZTo6RXF1YWxOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3Bf
ZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBOb3RF
cXVhbE5vZGU6Ok5vdEVxdWFsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAg
ICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUo
KSwgZXhwcjEsIGV4cHIyLCBvcF9uZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5l
IE5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3Bf
bmVxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3Ry
aWN0RXF1YWxOb2RlOjpTdHJpY3RFcXVhbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xl
YW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3Bfc3RyaWN0ZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMp
CisgICAgaW5saW5lIFN0cmljdEVxdWFsTm9kZTo6U3RyaWN0RXF1YWxOb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9w
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCks
IGV4cHIxLCBleHByMiwgb3Bfc3RyaWN0ZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBOb3RTdHJpY3RFcXVhbE5vZGU6Ok5vdFN0cmljdEVxdWFsTm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUo
bGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9u
c3RyaWN0ZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIE5vdFN0cmljdEVxdWFs
Tm9kZTo6Tm90U3RyaWN0RXF1YWxOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbnN0
cmljdGVxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
Qml0QW5kTm9kZTo6Qml0QW5kTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAg
ICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9iaXRhbmQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5l
IEJpdEFuZE5vZGU6OkJpdEFuZE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXRhbmQs
IHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCaXRPck5v
ZGU6OkJpdE9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBC
aW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4
cHIyLCBvcF9iaXRvciwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgQml0T3JOb2Rl
OjpCaXRPck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVz
dWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXRvciwgcmlnaHRIYXNBc3Np
Z25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJpdFhPck5vZGU6OkJpdFhPck5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2Rl
KGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfYml0
eG9yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBCaXRYT3JOb2RlOjpCaXRYT3JO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAg
ICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6
OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfYml0eG9yLCByaWdodEhhc0Fzc2lnbm1lbnRz
KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTG9naWNhbE9wTm9kZTo6TG9naWNhbE9wTm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIExvZ2ljYWxPcGVyYXRvciBvcGVyKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCkpCisgICAgaW5saW5lIExvZ2ljYWxP
cE5vZGU6OkxvZ2ljYWxPcE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBMb2dpY2FsT3BlcmF0
b3Igb3BlcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCkpCiAgICAgICAgICwgbV9leHByMShleHByMSkK
ICAgICAgICAgLCBtX2V4cHIyKGV4cHIyKQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIENvbmRpdGlvbmFsTm9kZTo6Q29uZGl0aW9uYWxOb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbG9naWNhbCwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bGluZU51bWJlcikKKyAgICBpbmxpbmUgQ29uZGl0aW9uYWxOb2RlOjpDb25kaXRpb25hbE5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2Fs
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMikKKyAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9s
b2dpY2FsKGxvZ2ljYWwpCiAgICAgICAgICwgbV9leHByMShleHByMSkKICAgICAgICAgLCBtX2V4
cHIyKGV4cHIyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeVJlc29sdmVO
b2RlOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIp
CisgICAgaW5saW5lIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6UmVhZE1vZGlmeVJlc29sdmVOb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3Jp
Z2h0KHJpZ2h0KQpAQCAtNTkyLDE2ICs1OTMsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25SZXNvbHZlTm9kZTo6QXNzaWduUmVzb2x2ZU5vZGUo
aW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSog
cmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBBc3NpZ25SZXNvbHZlTm9kZTo6QXNzaWduUmVzb2x2
ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
KyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAg
ICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQogICAgICAgICAs
IG1fcmlnaHRIYXNBc3NpZ25tZW50cyhyaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSog
c3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vi
c2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmVhZE1vZGlmeUJyYWNr
ZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBP
cGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNz
aWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4
cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1f
YmFzZShiYXNlKQogICAgICAgICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKQEAgLTYxMiw4ICs2
MTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2ln
bkJyYWNrZXROb2RlOjpBc3NpZ25CcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBB
c3NpZ25CcmFja2V0Tm9kZTo6QXNzaWduQnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2Ny
aXB0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRh
KGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQog
ICAgICAgICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKQEAgLTYyMyw4ICs2MjQsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6OkFz
c2lnbkRvdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5s
aW5lIEFzc2lnbkRvdE5vZGU6OkFzc2lnbkRvdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAg
ICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQpAQCAtNjMzLDgg
KzYzNCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVh
ZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9k
ZTo6UmVhZE1vZGlmeURvdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3Bl
ciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAg
LCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQpAQCAt
NjQ0LDggKzY0NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgQXNzaWduRXJyb3JOb2RlOjpBc3NpZ25FcnJvck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBsZWZ0LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQot
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFzc2lnbkVy
cm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJp
Z2h0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIp
CiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBl
bmRPZmZzZXQpCiAgICAgICAgICwgbV9sZWZ0KGxlZnQpCiAgICAgICAgICwgbV9vcGVyYXRvcihv
cGVyKQpAQCAtNjUzLDE1ICs2NTQsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBDb21tYU5vZGU6OkNvbW1hTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpCi0gICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQ29tbWFOb2RlOjpDb21tYU5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgICAgIG1fZXhwcmVzc2lvbnMuYXBwZW5kKGV4cHIx
KTsKICAgICAgICAgbV9leHByZXNzaW9ucy5hcHBlbmQoZXhwcjIpOwogICAgIH0KIAotICAgIGlu
bGluZSBDb25zdFN0YXRlbWVudE5vZGU6OkNvbnN0U3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJl
ciwgQ29uc3REZWNsTm9kZSogbmV4dCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIENvbnN0U3RhdGVtZW50Tm9kZTo6Q29uc3RTdGF0ZW1lbnROb2RlKGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBDb25zdERlY2xOb2RlKiBuZXh0KQorICAg
ICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAs
IG1fbmV4dChuZXh0KQogICAgIHsKICAgICB9CkBAIC02NzAsNTcgKzY3MSw1NyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEVtcHR5U3RhdGVtZW50Tm9kZTo6
RW1wdHlTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyKQotICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRW1wdHlTdGF0ZW1lbnROb2RlOjpFbXB0eVN0YXRl
bWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCisgICAgICAgIDogU3Rh
dGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBEZWJ1Z2dlclN0YXRlbWVudE5vZGU6OkRlYnVnZ2VyU3RhdGVtZW50Tm9kZShpbnQg
bGluZU51bWJlcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5s
aW5lIERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6RGVidWdnZXJTdGF0ZW1lbnROb2RlKGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgaW5saW5lIEV4cHJT
dGF0ZW1lbnROb2RlOjpFeHByU3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlu
bGluZSBFeHByU3RhdGVtZW50Tm9kZTo6RXhwclN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IFN0YXRl
bWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhwcihleHBy
KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVmFyU3RhdGVtZW50Tm9kZTo6VmFyU3RhdGVt
ZW50Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDog
U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBWYXJTdGF0ZW1lbnROb2RlOjpW
YXJTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogICAgIAotICAg
IGlubGluZSBJZk5vZGU6OklmTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNv
bmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaykKLSAgICAgICAgOiBTdGF0ZW1lbnROb2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIElmTm9kZTo6SWZOb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2Rl
KiBpZkJsb2NrKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIG1fY29uZGl0aW9uKGNvbmRpdGlvbikKICAgICAgICAgLCBtX2lmQmxv
Y2soaWZCbG9jaykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIElmRWxzZU5vZGU6OklmRWxz
ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVu
dE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5vZGUqIGVsc2VCbG9jaykKLSAgICAgICAgOiBJZk5v
ZGUobGluZU51bWJlciwgY29uZGl0aW9uLCBpZkJsb2NrKQorICAgIGlubGluZSBJZkVsc2VOb2Rl
OjpJZkVsc2VOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrLCBTdGF0ZW1lbnROb2RlKiBl
bHNlQmxvY2spCisgICAgICAgIDogSWZOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29u
ZGl0aW9uLCBpZkJsb2NrKQogICAgICAgICAsIG1fZWxzZUJsb2NrKGVsc2VCbG9jaykKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIERvV2hpbGVOb2RlOjpEb1doaWxlTm9kZShpbnQgbGluZU51
bWJlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAg
ICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIERvV2hpbGVOb2Rl
OjpEb1doaWxlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU3RhdGVtZW50
Tm9kZSogc3RhdGVtZW50LCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBTdGF0ZW1l
bnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX3N0YXRlbWVudChz
dGF0ZW1lbnQpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBXaGlsZU5vZGU6OldoaWxlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFdoaWxlTm9kZTo6V2hpbGVOb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9k
ZSogc3RhdGVtZW50KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fc3RhdGVtZW50KHN0
YXRlbWVudCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZvck5vZGU6OkZvck5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgYm9vbCBl
eHByMVdhc1ZhckRlY2wpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAg
IGlubGluZSBGb3JOb2RlOjpGb3JOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIzLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGJvb2wgZXhwcjFXYXNWYXJE
ZWNsKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQog
ICAgICAgICAsIG1fZXhwcjEoZXhwcjEpCiAgICAgICAgICwgbV9leHByMihleHByMikKICAgICAg
ICAgLCBtX2V4cHIzKGV4cHIzKQpAQCAtNzMwLDM4ICs3MzEsMzggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEFTU0VSVChzdGF0ZW1lbnQpOwogICAgIH0KIAotICAgIGlubGluZSBDb250aW51
ZU5vZGU6OkNvbnRpbnVlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVt
YmVyKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQ29u
dGludWVOb2RlOjpDb250aW51ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2lkZW50KGdsb2JhbERhdGEtPnByb3Bl
cnR5TmFtZXMtPm51bGxJZGVudGlmaWVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQ29u
dGludWVOb2RlOjpDb250aW51ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
Q29udGludWVOb2RlOjpDb250aW51ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewog
ICAgIH0KICAgICAKLSAgICBpbmxpbmUgQnJlYWtOb2RlOjpCcmVha05vZGUoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIEJyZWFrTm9kZTo6QnJlYWtOb2RlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCisgICAgICAgIDog
U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9pZGVu
dChnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcikKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIEJyZWFrTm9kZTo6QnJlYWtOb2RlKGludCBsaW5lTnVtYmVyLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIp
CisgICAgaW5saW5lIEJyZWFrTm9kZTo6QnJlYWtOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICAgICAgOiBTdGF0ZW1lbnRO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQog
ICAgIHsKICAgICB9CiAgICAgCi0gICAgaW5saW5lIFJldHVybk5vZGU6OlJldHVybk5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSkKLSAgICAgICAgOiBTdGF0ZW1lbnRO
b2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFJldHVybk5vZGU6OlJldHVybk5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSkKKyAgICAg
ICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBt
X3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgV2l0aE5vZGU6OldpdGhO
b2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSog
c3RhdGVtZW50LCB1aW50MzJfdCBkaXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCkKLSAg
ICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFdpdGhOb2RlOjpX
aXRoTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgdWludDMyX3QgZGl2b3QsIHVpbnQzMl90
IGV4cHJlc3Npb25MZW5ndGgpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9zdGF0ZW1l
bnQoc3RhdGVtZW50KQogICAgICAgICAsIG1fZGl2b3QoZGl2b3QpCkBAIC03NjksMjEgKzc3MCwy
MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIExhYmVsTm9k
ZTo6TGFiZWxOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBTdGF0
ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBMYWJlbE5vZGU6OkxhYmVsTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgU3RhdGVtZW50Tm9kZSogc3RhdGVt
ZW50KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQog
ICAgICAgICAsIG1fbmFtZShuYW1lKQogICAgICAgICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFRocm93Tm9kZTo6VGhyb3dOb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIFRocm93Tm9kZTo6VGhyb3dOb2RlKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBTdGF0
ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2V4cHIoZXhw
cikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFRyeU5vZGU6OlRyeU5vZGUoaW50IGxpbmVO
dW1iZXIsIFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBjb25zdCBJZGVudGlmaWVyJiBleGNlcHRp
b25JZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywgU3RhdGVtZW50Tm9kZSogZmluYWxs
eUJsb2NrKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
VHJ5Tm9kZTo6VHJ5Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU3RhdGVt
ZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2VwdGlvbklkZW50LCBTdGF0
ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spCisgICAg
ICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwg
bV90cnlCbG9jayh0cnlCbG9jaykKICAgICAgICAgLCBtX2V4Y2VwdGlvbklkZW50KGV4Y2VwdGlv
bklkZW50KQogICAgICAgICAsIG1fY2F0Y2hCbG9jayhjYXRjaEJsb2NrKQpAQCAtODA0LDE1ICs4
MDUsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGwtPm1fbmV4dCA9IHRoaXM7CiAgICAg
fQogCi0gICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGludCBsaW5lTnVtYmVy
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXIpCi0gICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5j
RXhwck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9ib2R5KGJvZHkpCiAgICAgewog
ICAgICAgICBtX2JvZHktPmZpbmlzaFBhcnNpbmcoc291cmNlLCBwYXJhbWV0ZXIsIGlkZW50KTsK
ICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUoaW50IGxpbmVO
dW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcikKLSAgICAg
ICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZ1bmNEZWNsTm9kZTo6
RnVuY0RlY2xOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXIpCisgICAgICAgIDogU3RhdGVtZW50Tm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9ib2R5KGJvZHkpCiAgICAg
ewogICAgICAgICBtX2JvZHktPmZpbmlzaFBhcnNpbmcoc291cmNlLCBwYXJhbWV0ZXIsIGlkZW50
KTsKQEAgLTg0NCwyOSArODQ1LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgU3dpdGNoTm9kZTo6U3dpdGNoTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIsIENhc2VCbG9ja05vZGUqIGJsb2NrKQotICAgICAgICA6IFN0YXRlbWVu
dE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgU3dpdGNoTm9kZTo6U3dpdGNoTm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIENhc2VC
bG9ja05vZGUqIGJsb2NrKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fYmxvY2soYmxv
Y2spCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDb25zdERlY2xOb2RlOjpDb25zdERlY2xO
b2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5v
ZGUqIGluaXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgQ29uc3REZWNsTm9kZTo6Q29uc3REZWNsTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBpbml0KQor
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAg
ICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fbmV4dCgwKQogICAgICAgICAsIG1faW5p
dChpbml0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQmxvY2tOb2RlOjpCbG9ja05vZGUo
aW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBzdGF0ZW1lbnRzKQotICAgICAgICA6IFN0
YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQmxvY2tOb2RlOjpCbG9ja05vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBzdGF0ZW1l
bnRzKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQog
ICAgICAgICAsIG1fc3RhdGVtZW50cyhzdGF0ZW1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBp
bmxpbmUgRm9ySW5Ob2RlOjpGb3JJbk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGwsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0
ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbCwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkKKyAgICAgICAg
OiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2lk
ZW50KGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyKQogICAgICAgICAs
IG1faW5pdCgwKQogICAgICAgICAsIG1fbGV4cHIobCkKQEAgLTg3NiwxNyArODc3LDE3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJ
bk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBpbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIs
IFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGlu
dCBlbmRPZmZzZXQpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlu
bGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhw
cmVzc2lvbk5vZGUqIGluLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3Rh
dGVtZW50LCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCkKKyAgICAg
ICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBt
X2lkZW50KGlkZW50KQogICAgICAgICAsIG1faW5pdCgwKQotICAgICAgICAsIG1fbGV4cHIobmV3
IChnbG9iYWxEYXRhKSBSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBpZGVudCwgZGl2b3QgLSBzdGFy
dE9mZnNldCkpCisgICAgICAgICwgbV9sZXhwcihuZXcgKGdsb2JhbERhdGEpIFJlc29sdmVOb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgaWRlbnQsIGRpdm90IC0gc3RhcnRPZmZzZXQpKQog
ICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkK
ICAgICAgICAgLCBtX2lkZW50SXNWYXJEZWNsKHRydWUpCiAgICAgewogICAgICAgICBpZiAoaW4p
IHsKLSAgICAgICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChnbG9iYWxEYXRh
KSBBc3NpZ25SZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBpZGVudCwgaW4sIHRydWUpOworICAgICAg
ICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKGdsb2JhbERhdGEpIEFzc2lnblJl
c29sdmVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgaWRlbnQsIGluLCB0cnVlKTsKICAg
ICAgICAgICAgIG5vZGUtPnNldEV4Y2VwdGlvblNvdXJjZUNvZGUoZGl2b3QsIGRpdm90IC0gc3Rh
cnRPZmZzZXQsIGVuZE9mZnNldCAtIGRpdm90KTsKICAgICAgICAgICAgIG1faW5pdCA9IG5vZGU7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggYzMy
ZTRjNzNhMjRlYmViMjMzY2Q1ZTAxZmZmZDYzYTQ4Njg1Yzg4Ni4uM2I1MWYwN2Y1ZjVjOTg5Y2Nh
ZTA1YWYwOTYxZmMyMDgwOWFjZThkZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5jcHAKQEAgLTUyLDEwICs1MiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0YXRlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotdm9pZCBTdGF0ZW1lbnROb2RlOjpzZXRMb2MoaW50IGZpcnN0TGluZSwg
aW50IGxhc3RMaW5lKQordm9pZCBTdGF0ZW1lbnROb2RlOjpzZXRMb2MoaW50IGZpcnN0TGluZSwg
aW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKQogewogICAgIG1fbGluZU51bWJlciA9IGZpcnN0TGlu
ZTsKICAgICBtX2xhc3RMaW5lID0gbGFzdExpbmU7CisgICAgbV9jb2x1bW5OdW1iZXIgPSBjb2x1
bW47CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTb3VyY2VFbGVtZW50
cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzUsOCArNzYsOCBAQCBTdGF0
ZW1lbnROb2RlKiBTb3VyY2VFbGVtZW50czo6c2luZ2xlU3RhdGVtZW50KCkgY29uc3QKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNjb3BlTm9kZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCi1TY29wZU5vZGU6OlNjb3BlTm9kZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIGludCBsaW5lTnVtYmVyLCBib29sIGluU3RyaWN0Q29udGV4dCkKLSAgICA6IFN0YXRl
bWVudE5vZGUobGluZU51bWJlcikKK1Njb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGJvb2wgaW5TdHJp
Y3RDb250ZXh0KQorICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIp
CiAgICAgLCBQYXJzZXJBcmVuYVJlZkNvdW50ZWQoZ2xvYmFsRGF0YSkKICAgICAsIG1fZmVhdHVy
ZXMoaW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiBOb0ZlYXR1cmVzKQogICAg
ICwgbV9udW1Db25zdGFudHMoMCkKQEAgLTg0LDggKzg1LDggQEAgU2NvcGVOb2RlOjpTY29wZU5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmlj
dENvbnQKIHsKIH0KIAotU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBpbnQgbGluZU51bWJlciwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgQ29kZUZlYXR1cmVzIGZlYXR1
cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQotICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQor
U2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBTb3VyY2VF
bGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVu
Y1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgQ29kZUZlYXR1cmVzIGZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCiAgICAgLCBQYXJzZXJBcmVuYVJlZkNvdW50ZWQoZ2xvYmFsRGF0YSkK
ICAgICAsIG1fZmVhdHVyZXMoZmVhdHVyZXMpCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCkBAIC0x
MDcsMTQgKzEwOCwxNCBAQCBTdGF0ZW1lbnROb2RlKiBTY29wZU5vZGU6OnNpbmdsZVN0YXRlbWVu
dCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9ncmFtTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgUHJvZ3JhbU5vZGU6OlBy
b2dyYW1Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIFNvdXJj
ZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBm
dW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKLSAg
ICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBzb3VyY2UsIGNoaWxkcmVuLCB2
YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0
YW50cykKK2lubGluZSBQcm9ncmFtTm9kZTo6UHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU291cmNlRWxlbWVudHMq
IGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywg
SWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorICAgIDogU2NvcGVO
b2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlLCBjaGlsZHJl
biwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1D
b25zdGFudHMpCiB7CiB9CiAKLVBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpj
cmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxl
bWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNT
dGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorUGFzc1Jl
ZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTb3VyY2VFbGVtZW50cyog
Y2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJ
ZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiB7Ci0gICAgUmVmUHRy
PFByb2dyYW1Ob2RlPiBub2RlID0gbmV3IFByb2dyYW1Ob2RlKGdsb2JhbERhdGEsIGxpbmVOdW1i
ZXIsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCAgY2FwdHVyZWRWYXJpYWJsZXMsIHNv
dXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBu
b2RlID0gbmV3IFByb2dyYW1Ob2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssICBjYXB0dXJlZFZhcmlhYmxlcywgc291
cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIAogICAgIEFTU0VSVChub2RlLT5tX2FyZW5h
Lmxhc3QoKSA9PSBub2RlKTsKICAgICBub2RlLT5tX2FyZW5hLnJlbW92ZUxhc3QoKTsKQEAgLTEy
NSwxNCArMTI2LDE0IEBAIFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVh
dGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQogCi1pbmxpbmUgRXZhbE5vZGU6OkV2YWxOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
aW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0
YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFy
aWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cykKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVy
LCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxl
cywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKK2lubGluZSBFdmFsTm9kZTo6RXZhbE5vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
U291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3Rh
Y2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KQorICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
c291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMs
IGZlYXR1cmVzLCBudW1Db25zdGFudHMpCiB7CiB9CiAKLVBhc3NSZWZQdHI8RXZhbE5vZGU+IEV2
YWxOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwg
U291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3Rh
Y2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KQorUGFzc1JlZlB0cjxFdmFsTm9kZT4gRXZhbE5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTb3VyY2VFbGVtZW50
cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNr
LCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiB7Ci0gICAgUmVm
UHRyPEV2YWxOb2RlPiBub2RlID0gbmV3IEV2YWxOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIs
IGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNl
LCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKKyAgICBSZWZQdHI8RXZhbE5vZGU+IG5vZGUgPSBu
ZXcgRXZhbE5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjaGlsZHJl
biwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVy
ZXMsIG51bUNvbnN0YW50cyk7CiAKICAgICBBU1NFUlQobm9kZS0+bV9hcmVuYS5sYXN0KCkgPT0g
bm9kZSk7CiAgICAgbm9kZS0+bV9hcmVuYS5yZW1vdmVMYXN0KCk7CkBAIC0xNDksMTMgKzE1MCwx
MyBAQCBGdW5jdGlvblBhcmFtZXRlcnM6OkZ1bmN0aW9uUGFyYW1ldGVycyhQYXJhbWV0ZXJOb2Rl
KiBmaXJzdFBhcmFtZXRlcikKICAgICAgICAgYXBwZW5kKHBhcmFtZXRlci0+aWRlbnQoKSk7CiB9
CiAKLWlubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQotICAg
IDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCkKK2lu
bGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGJvb2wgaW5TdHJpY3RD
b250ZXh0KQorICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgaW5TdHJpY3RDb250ZXh0KQogewogfQogCi1pbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6
RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVy
LCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25T
dGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzKQotICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIHNvdXJjZUNv
ZGUsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVh
dHVyZXMsIG51bUNvbnN0YW50cykKK2lubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJv
ZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBG
dW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVz
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGlu
dCBudW1Db25zdGFudHMpCisgICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBzb3VyY2VDb2RlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywg
Y2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCiB7CiB9CiAKQEAgLTE3
MiwxNCArMTczLDE0IEBAIHZvaWQgRnVuY3Rpb25Cb2R5Tm9kZTo6ZmluaXNoUGFyc2luZyhQYXNz
UmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4gcGFyYW1ldGVycywKICAgICBtX2lkZW50ID0gaWRl
bnQ7CiB9CiAKLUZ1bmN0aW9uQm9keU5vZGUqIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBib29sIGluU3RyaWN0Q29udGV4
dCkKK0Z1bmN0aW9uQm9keU5vZGUqIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBib29sIGlu
U3RyaWN0Q29udGV4dCkKIHsKLSAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFs
RGF0YSwgbGluZU51bWJlciwgaW5TdHJpY3RDb250ZXh0KTsKKyAgICByZXR1cm4gbmV3IEZ1bmN0
aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBpblN0cmlj
dENvbnRleHQpOwogfQogCi1QYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IEZ1bmN0aW9uQm9k
eU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBT
b3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFj
ayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3Rh
bnRzKQorUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVh
dGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0
aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cykKIHsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gbm9kZSA9IG5ldyBG
dW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNoaWxkcmVuLCB2YXJTdGFj
aywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNlQ29kZSwgZmVhdHVyZXMsIG51
bUNvbnN0YW50cyk7CisgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IG5vZGUgPSBuZXcgRnVu
Y3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNoaWxk
cmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNlQ29kZSwg
ZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAKICAgICBBU1NFUlQobm9kZS0+bV9hcmVuYS5sYXN0
KCkgPT0gbm9kZSk7CiAgICAgbm9kZS0+bV9hcmVuYS5yZW1vdmVMYXN0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggNWM5MGJiOWZlNjYzNjBlOTJhOTk3YWRiNjRiM2Vl
Nzk2MzczMjI2Ni4uYjA0ODE3OTI4NTI1MzU4ZDFkOTJiMjJkYjQ5YjE4MDhkYWYwODI3NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTMwLDcgKzEzMCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgTm9kZSA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxl
IHsKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIE5vZGUoaW50KTsKKyAgICAgICAgTm9kZShpbnQs
IGludCk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfk5vZGUoKSB7IH0KQEAgLTEz
OSwxMyArMTM5LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGludCBsaW5lTm8oKSBj
b25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KIAorICAgICAgICBpbnQgY29sdW1uTm8oKSBj
b25zdCB7IHJldHVybiBtX2NvbHVtbk51bWJlcjsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICBpbnQgbV9saW5lTnVtYmVyOworICAgICAgICBpbnQgbV9jb2x1bW5OdW1iZXI7CiAgICAgfTsK
IAogICAgIGNsYXNzIEV4cHJlc3Npb25Ob2RlIDogcHVibGljIE5vZGUgewogICAgIHByb3RlY3Rl
ZDoKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUoaW50LCBSZXN1bHRUeXBlID0gUmVzdWx0VHlwZTo6
dW5rbm93blR5cGUoKSk7CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKGludCwgaW50LCBSZXN1bHRU
eXBlID0gUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSk7CiAKICAgICBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc051bWJlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xNzUs
MTIgKzE3OCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFN0YXRlbWVudE5vZGUg
OiBwdWJsaWMgTm9kZSB7CiAgICAgcHJvdGVjdGVkOgotICAgICAgICBTdGF0ZW1lbnROb2RlKGlu
dCk7CisgICAgICAgIFN0YXRlbWVudE5vZGUoaW50LCBpbnQpOwogCiAgICAgcHVibGljOgotICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldExvYyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFz
dExpbmUpOworICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldExvYyhpbnQgZmlyc3RM
aW5lLCBpbnQgbGFzdExpbmUsIGludCBjb2x1bW4pOwogICAgICAgICBpbnQgZmlyc3RMaW5lKCkg
Y29uc3QgeyByZXR1cm4gbGluZU5vKCk7IH0KICAgICAgICAgaW50IGxhc3RMaW5lKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXN0TGluZTsgfQorICAgICAgICBpbnQgY29sdW1uKCkgY29uc3QgeyByZXR1
cm4gY29sdW1uTm8oKTt9CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzRW1wdHlTdGF0ZW1lbnQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZXR1cm5O
b2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE5NCw3ICsxOTgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIE51bGxOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIE51bGxOb2RlKGludCk7CisgICAgICAgIE51bGxOb2RlKGlu
dCwgaW50KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTIwNCw3
ICsyMDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJvb2xlYW5Ob2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJvb2xlYW5Ob2RlKGlu
dCwgYm9vbCB2YWx1ZSk7CisgICAgICAgIEJvb2xlYW5Ob2RlKGludCwgaW50LCBib29sIHZhbHVl
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTIxNiw3ICsyMjAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE51bWJlck5vZGUgOiBwdWJsaWMgRXhw
cmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTnVtYmVyTm9kZShpbnQsIGRvdWJs
ZSB2YWx1ZSk7CisgICAgICAgIE51bWJlck5vZGUoaW50LCBpbnQsIGRvdWJsZSB2YWx1ZSk7CiAK
ICAgICAgICAgZG91YmxlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgICAg
ICB2b2lkIHNldFZhbHVlKGRvdWJsZSB2YWx1ZSkgeyBtX3ZhbHVlID0gdmFsdWU7IH0KQEAgLTIz
Miw3ICsyMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFN0cmluZ05vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgU3RyaW5nTm9kZShp
bnQsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgU3RyaW5nTm9kZShpbnQsIGludCwgY29u
c3QgSWRlbnRpZmllciYpOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIHZhbHVlKCkgeyBy
ZXR1cm4gbV92YWx1ZTsgfQogCkBAIC0zNDIsNyArMzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBSZWdFeHBOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVnRXhwTm9kZShp
bnQsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzKTsK
KyAgICAgICAgUmVnRXhwTm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwg
Y29uc3QgSWRlbnRpZmllciYgZmxhZ3MpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOwpAQCAtMzUzLDcgKzM1Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
VGhpc05vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
VGhpc05vZGUoaW50KTsKKyAgICAgICAgVGhpc05vZGUoaW50LCBpbnQpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMzYxLDcgKzM2NSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwg
aW50IHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgUmVzb2x2ZU5vZGUoaW50LCBpbnQsIGNvbnN0IElk
ZW50aWZpZXImLCBpbnQgc3RhcnRPZmZzZXQpOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CiAKQEAgLTM5MywxMSArMzk3
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJyYXlOb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFycmF5Tm9kZShpbnQsIGludCBl
bGlzaW9uKTsKLSAgICAgICAgQXJyYXlOb2RlKGludCwgRWxlbWVudE5vZGUqKTsKLSAgICAgICAg
QXJyYXlOb2RlKGludCwgaW50IGVsaXNpb24sIEVsZW1lbnROb2RlKik7CisgICAgICAgIEFycmF5
Tm9kZShpbnQsIGludCwgaW50IGVsaXNpb24pOworICAgICAgICBBcnJheU5vZGUoaW50LCBpbnQs
IEVsZW1lbnROb2RlKik7CisgICAgICAgIEFycmF5Tm9kZShpbnQsIGludCwgaW50IGVsaXNpb24s
IEVsZW1lbnROb2RlKik7CiAKLSAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogdG9Bcmd1bWVudExp
c3QoSlNHbG9iYWxEYXRhKiwgaW50KSBjb25zdDsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSog
dG9Bcmd1bWVudExpc3QoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQpIGNvbnN0OwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNDI4LDggKzQzMiw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgUHJvcGVydHlMaXN0Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFByb3BlcnR5TGlzdE5vZGUoaW50LCBQcm9wZXJ0eU5vZGUqKTsK
LSAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShpbnQsIFByb3BlcnR5Tm9kZSosIFByb3BlcnR5TGlz
dE5vZGUqKTsKKyAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShpbnQsIGludCwgUHJvcGVydHlOb2Rl
Kik7CisgICAgICAgIFByb3BlcnR5TGlzdE5vZGUoaW50LCBpbnQsIFByb3BlcnR5Tm9kZSosIFBy
b3BlcnR5TGlzdE5vZGUqKTsKIAogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CiAKQEAgLTQ0MCw4ICs0
NDQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE9iamVjdExpdGVyYWxOb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE9iamVjdExpdGVy
YWxOb2RlKGludCk7Ci0gICAgICAgIE9iamVjdExpdGVyYWxOb2RlKGludCwgUHJvcGVydHlMaXN0
Tm9kZSopOworICAgICAgICBPYmplY3RMaXRlcmFsTm9kZShpbnQsIGludCk7CisgICAgICAgIE9i
amVjdExpdGVyYWxOb2RlKGludCwgaW50LCBQcm9wZXJ0eUxpc3ROb2RlKik7CiAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC00NTEsNyArNDU1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgCiAgICAgY2xhc3MgQnJhY2tldEFjY2Vzc29yTm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
RXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cyk7
CisgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1l
bnRzKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFzZTsgfQogICAgICAgICBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0KCkgY29uc3QgeyByZXR1
cm4gbV9zdWJzY3JpcHQ7IH0KQEAgLTQ2OSw3ICs0NzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIERvdEFjY2Vzc29yTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGlj
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERvdEFjY2Vz
c29yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJik7Cisg
ICAgICAgIERvdEFjY2Vzc29yTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYmFzZTsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQpAQCAtNDg2LDggKzQ5MCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgQXJndW1lbnRMaXN0Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEFyZ3VtZW50TGlzdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSop
OwotICAgICAgICBBcmd1bWVudExpc3ROb2RlKGludCwgQXJndW1lbnRMaXN0Tm9kZSosIEV4cHJl
c3Npb25Ob2RlKik7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUoaW50LCBpbnQsIEV4cHJlc3Np
b25Ob2RlKik7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUoaW50LCBpbnQsIEFyZ3VtZW50TGlz
dE5vZGUqLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG1f
bmV4dDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKQEAgLTUwNiw4ICs1MTAsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE5ld0V4cHJOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgTmV3RXhwck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOwotICAgICAgICBOZXdF
eHByTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSopOworICAgICAgICBO
ZXdFeHByTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgTmV3RXhwck5v
ZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSopOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTE4LDcgKzUyMiw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgot
ICAgICAgICBFdmFsRnVuY3Rpb25DYWxsTm9kZShpbnQsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAg
ICAgIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGludCwgaW50LCBBcmd1bWVudHNOb2RlKiwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTI4LDcgKzUzMiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsVmFsdWVOb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1
YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUq
LCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoaW50LCBp
bnQsIEV4cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTUzOSw3ICs1NDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25O
b2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1l
bnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKKyAgICAgICAgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoaW50LCBpbnQsIGNv
bnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwpAQCAtNTUyLDcgKzU1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IAogICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25O
b2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
RXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRnVu
Y3Rpb25DYWxsQnJhY2tldE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHBy
ZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTY0LDcgKzU2OCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9k
ZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5v
ZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJn
dW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAg
LTU3Nyw3ICs1ODEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENhbGxGdW5jdGlv
bkNhbGxEb3ROb2RlIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIENhbGxGdW5j
dGlvbkNhbGxEb3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CkBAIC01ODUsNyArNTg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAg
Y2xhc3MgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5v
ZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGludCwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
OworICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU5Myw3ICs1OTcsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIFByZVBvc3RSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIFByZVBvc3RSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAg
ICAgIFByZVBvc3RSZXNvbHZlTm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKQEAgLTYw
MSw3ICs2MDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFBvc3RmaXhSZXNvbHZl
Tm9kZSA6IHB1YmxpYyBQcmVQb3N0UmVzb2x2ZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
UG9zdGZpeFJlc29sdmVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7Cisg
ICAgICAgIFBvc3RmaXhSZXNvbHZlTm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIE9w
ZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02MTEs
NyArNjE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQb3N0Zml4QnJhY2tldE5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQb3N0Zml4QnJhY2tldE5vZGUoaW50LCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
KyAgICAgICAgUG9zdGZpeEJyYWNrZXROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTYyMyw3ICs2MjcsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIFBvc3RmaXhEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBw
dWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAg
UG9zdGZpeERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCk7CisgICAgICAgIFBvc3RmaXhEb3ROb2RlKGludCwgaW50LCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02MzUsNyArNjM5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBQb3N0Zml4RXJyb3JOb2RlIDogcHVibGljIEV4cHJlc3Npb25O
b2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgUG9zdGZpeEVycm9yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
KyAgICAgICAgUG9zdGZpeEVycm9yTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqLCBPcGVy
YXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjQ2LDcg
KzY1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVsZXRlUmVzb2x2ZU5vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7
CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElkZW50
aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCk7CisgICAgICAgIERlbGV0ZVJlc29sdmVOb2RlKGludCwgaW50LCBjb25zdCBJZGVu
dGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjU2
LDcgKzY2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVsZXRlQnJhY2tldE5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVCcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIERlbGV0
ZUJyYWNrZXROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpA
QCAtNjY3LDcgKzY3MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVsZXRlRG90
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlbGV0ZURvdE5vZGUoaW50LCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRGVsZXRlRG90Tm9kZShp
bnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02NzgsNyArNjgyLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWxldGVWYWx1ZU5vZGUgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVsZXRlVmFsdWVOb2RlKGludCwgRXhw
cmVzc2lvbk5vZGUqKTsKKyAgICAgICAgRGVsZXRlVmFsdWVOb2RlKGludCwgaW50LCBFeHByZXNz
aW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjg4
LDcgKzY5Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVm9pZE5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVm9pZE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSopOworICAgICAgICBWb2lkTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5v
ZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTY5OCw3ICs3
MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFR5cGVPZlJlc29sdmVOb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFR5cGVPZlJlc29s
dmVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBUeXBlT2ZSZXNvbHZlTm9k
ZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CiAKQEAgLTcxMCw3ICs3
MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFR5cGVPZlZhbHVlTm9kZSA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBUeXBlT2ZWYWx1ZU5v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBUeXBlT2ZWYWx1ZU5vZGUoaW50LCBp
bnQsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CkBAIC03MjAsNyArNzI0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVm
aXhSZXNvbHZlTm9kZSA6IHB1YmxpYyBQcmVQb3N0UmVzb2x2ZU5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgUHJlZml4UmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0
b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KTsKKyAgICAgICAgUHJlZml4UmVzb2x2ZU5vZGUoaW50LCBpbnQsIGNvbnN0IElkZW50aWZp
ZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpA
QCAtNzMwLDcgKzczNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlZml4QnJh
Y2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVQcmVmaXhl
ZFN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFByZWZpeEJyYWNrZXRO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQs
IE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7CisgICAgICAgIFByZWZpeEJyYWNrZXROb2RlKGludCwgaW50LCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTc0Miw3ICs3NDYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFByZWZpeERvdE5vZGUgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFByZWZpeERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFByZWZpeERvdE5vZGUo
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0
b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTc1NCw3ICs3
NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFByZWZpeEVycm9yTm9kZSA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFByZWZpeEVycm9yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwg
T3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlZml4RXJyb3JOb2RlKGludCwgaW50LCBFeHByZXNzaW9u
Tm9kZSosIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CkBAIC03NjUsNyArNzY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBVbmFyeU9w
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBVbmFy
eU9wTm9kZShpbnQsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiwgT3Bjb2RlSUQpOworICAg
ICAgICBVbmFyeU9wTm9kZShpbnQsIGludCwgUmVzdWx0VHlwZSwgRXhwcmVzc2lvbk5vZGUqLCBP
cGNvZGVJRCk7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHBy
KCkgeyByZXR1cm4gbV9leHByOyB9CkBAIC03ODIsNyArNzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBVbmFyeVBsdXNOb2RlIDogcHVibGljIFVuYXJ5T3BOb2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFVuYXJ5UGx1c05vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAg
ICAgICBVbmFyeVBsdXNOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBFeHByZXNzaW9uTm9kZSogc3RyaXBVbmFyeVBsdXMoKSB7
IHJldHVybiBleHByKCk7IH0KQEAgLTc5MCwxMiArNzk0LDEyIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgTmVnYXRlTm9kZSA6IHB1YmxpYyBVbmFyeU9wTm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBOZWdhdGVOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgTmVn
YXRlTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqKTsKICAgICB9OwogCiAgICAgY2xhc3Mg
Qml0d2lzZU5vdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgQml0d2lzZU5vdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBCaXR3
aXNlTm90Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIoKSB7IHJldHVybiBtX2V4cHI7IH0KQEAgLTgw
OSw3ICs4MTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAKICAgICBjbGFzcyBMb2dpY2FsTm90Tm9k
ZSA6IHB1YmxpYyBVbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBMb2dpY2FsTm90
Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIExvZ2ljYWxOb3ROb2RlKGludCwg
aW50LCBFeHByZXNzaW9uTm9kZSopOwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZW1pdEJ5
dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwqIHRydWVU
YXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgYm9vbCBmYWxsVGhyb3VnaE1lYW5zVHJ1ZSk7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBoYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpIGNvbnN0IHsg
cmV0dXJuIGV4cHIoKS0+aGFzQ29uZGl0aW9uQ29udGV4dENvZGVnZW4oKTsgfQpAQCAtODE3LDgg
KzgyMSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQmluYXJ5T3BOb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpbmFyeU9wTm9kZShp
bnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJ
RCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICAgICAgQmluYXJ5T3BOb2RlKGludCwg
UmVzdWx0VHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBCaW5hcnlPcE5v
ZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQmluYXJ5T3BO
b2RlKGludCwgaW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdFN0cmNhdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbiwgUmVnaXN0ZXJJRCogbGhzID0gMCwgUmVhZE1vZGlm
eVJlc29sdmVOb2RlKiBlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZSA9IDApOwogCkBAIC04NDIsNzIg
Kzg0Niw3MiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE11bHROb2RlIDogcHVibGlj
IEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBNdWx0Tm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOworICAgICAgICBNdWx0Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAg
ICAgfTsKIAogICAgIGNsYXNzIERpdk5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIERpdk5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgRGl2
Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIE1vZE5v
ZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE1vZE5vZGUo
aW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTW9kTm9kZShpbnQsIGludCwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEFkZE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFkZE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAg
ICAgICAgQWRkTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICAgICAgdmlydHVh
bCBib29sIGlzQWRkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKICAgICBjbGFz
cyBTdWJOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBT
dWJOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIFN1Yk5vZGUoaW50LCBpbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N1YnRyYWN0KCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKICAgICBjbGFzcyBMZWZ0U2hpZnROb2RlIDogcHVi
bGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBMZWZ0U2hpZnROb2RlKGlu
dCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIExlZnRTaGlmdE5vZGUoaW50LCBpbnQsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBSaWdodFNoaWZ0Tm9kZSA6IHB1YmxpYyBC
aW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmlnaHRTaGlmdE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgUmlnaHRTaGlmdE5vZGUoaW50LCBpbnQsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlIDogcHVi
bGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBVbnNpZ25lZFJpZ2h0U2hp
ZnROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIFVuc2lnbmVkUmlnaHRTaGlmdE5v
ZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBMZXNzTm9k
ZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTGVzc05vZGUo
aW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTGVzc05vZGUoaW50LCBpbnQsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBHcmVhdGVyTm9kZSA6IHB1YmxpYyBCaW5hcnlP
cE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgR3JlYXRlck5vZGUoaW50LCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKKyAgICAgICAgR3JlYXRlck5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAg
IH07CiAKICAgICBjbGFzcyBMZXNzRXFOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBMZXNzRXFOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAg
IExlc3NFcU5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFz
cyBHcmVhdGVyRXFOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBHcmVhdGVyRXFOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEdyZWF0ZXJF
cU5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBUaHJv
d2FibGVCaW5hcnlPcE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlLCBwdWJsaWMgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BO
b2RlKGludCwgUmVzdWx0VHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgICAgICBU
aHJvd2FibGVCaW5hcnlPcE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAg
ICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQsIGludCwgUmVzdWx0VHlwZSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpOworICAgICAgICBUaHJvd2FibGVCaW5hcnlPcE5vZGUoaW50LCBpbnQs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKTsKQEAgLTkxNSw3ICs5MTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBj
bGFzcyBJbnN0YW5jZU9mTm9kZSA6IHB1YmxpYyBUaHJvd2FibGVCaW5hcnlPcE5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgSW5zdGFuY2VPZk5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAg
ICAgICAgSW5zdGFuY2VPZk5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTIzLDEyICs5MjcsMTIgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBJbk5vZGUgOiBwdWJsaWMgVGhyb3dhYmxlQmluYXJ5T3BO
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEluTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwor
ICAgICAgICBJbk5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBj
bGFzcyBFcXVhbE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEVxdWFsTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBFcXVhbE5vZGUoaW50
LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpAQCAtOTM2LDEyICs5NDAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBO
b3RFcXVhbE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IE5vdEVxdWFsTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBOb3RFcXVhbE5vZGUo
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBTdHJpY3RFcXVh
bE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFN0cmlj
dEVxdWFsTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBTdHJpY3RFcXVhbE5vZGUo
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOwpAQCAtOTQ5LDI4ICs5NTMsMjggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBOb3RTdHJpY3RFcXVhbE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIE5vdFN0cmljdEVxdWFsTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAg
ICBOb3RTdHJpY3RFcXVhbE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAK
ICAgICBjbGFzcyBCaXRBbmROb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBCaXRBbmROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJpdEFu
ZE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBCaXRP
ck5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdE9y
Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBCaXRPck5vZGUoaW50LCBpbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBCaXRYT3JOb2RlIDogcHVibGljIEJp
bmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBCaXRYT3JOb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CisgICAgICAgIEJpdFhPck5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwog
ICAgIH07CiAKICAgICAvLyBtX2V4cHIxICYmIG1fZXhwcjIsIG1fZXhwcjEgfHwgbV9leHByMgog
ICAgIGNsYXNzIExvZ2ljYWxPcE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1
YmxpYzoKLSAgICAgICAgTG9naWNhbE9wTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBMb2dpY2FsT3BlcmF0b3IpOworICAgICAgICBMb2dpY2Fs
T3BOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgTG9naWNhbE9wZXJhdG9yKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTk4NSw3ICs5ODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBUaGUgdGVy
bmFyeSBvcGVyYXRvciwgIm1fbG9naWNhbCA/IG1fZXhwcjEgOiBtX2V4cHIyIgogICAgIGNsYXNz
IENvbmRpdGlvbmFsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBDb25kaXRpb25hbE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogbG9naWNhbCwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpOworICAgICAgICBDb25k
aXRpb25hbE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2FsLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMik7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7CkBAIC05OTcsNyArMTAwMSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgUmVhZE1vZGlmeVJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
LCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAg
UmVhZE1vZGlmeVJlc29sdmVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBF
eHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAg
ICAgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiwgT3Bl
cmF0b3IsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTAxMSw3ICsxMDE1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25SZXNvbHZlTm9kZSA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEFzc2lnblJlc29sdmVOb2RlKGludCwgY29uc3QgSWRlbnRpZmll
ciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAg
ICAgICAgQXNzaWduUmVzb2x2ZU5vZGUoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXImLCBFeHBy
ZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDI0LDcgKzEwMjgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIFJlYWRNb2RpZnlCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUq
IHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KTsKKyAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGludCwgaW50LCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIEV4cHJl
c3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CkBAIC0xMDM5LDcgKzEwNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFzc2ln
bkJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNzaWduQnJhY2tldE5vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXNzaWduQnJhY2tldE5vZGUoaW50LCBpbnQsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHByZXNzaW9u
Tm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAt
MTA1Myw3ICsxMDU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25Eb3RO
b2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNzaWduRG90Tm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXNzaWduRG90Tm9kZShpbnQsIGludCwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSog
cmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwpAQCAtMTA2Niw3ICsxMDcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBSZWFkTW9kaWZ5RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVi
bGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJl
YWRNb2RpZnlEb3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KTsKKyAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CkBAIC0xMDgwLDcgKzEwODQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIEFzc2lnbkVycm9yTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGlj
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFzc2lnbkVy
cm9yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7CisgICAgICAgIEFzc2lnbkVycm9yTm9kZShpbnQsIGludCwgRXhwcmVzc2lv
bk5vZGUqIGxlZnQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwOTQsNyArMTA5OCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29tbWFOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
LCBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29t
bWFOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIp
OworICAgICAgICBDb21tYU5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyKTsKIAogICAgICAgICB1c2luZyBQYXJzZXJBcmVuYURlbGV0YWJs
ZTo6b3BlcmF0b3IgbmV3OwogCkBAIC0xMTA5LDcgKzExMTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAKICAgICBjbGFzcyBDb25zdERlY2xOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIENvbnN0RGVjbE5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVy
JiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgQ29uc3REZWNsTm9kZShpbnQsIGludCwgY29u
c3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICAgICAgYm9vbCBoYXNJbml0
aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIG1faW5pdDsgfQogICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCgpIHsgcmV0dXJuIG1faWRlbnQ7IH0KQEAgLTExMjksNyArMTEzMyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29uc3RTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0
YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29uc3RTdGF0ZW1lbnROb2RlKGlu
dCwgQ29uc3REZWNsTm9kZSogbmV4dCk7CisgICAgICAgIENvbnN0U3RhdGVtZW50Tm9kZShpbnQs
IGludCwgQ29uc3REZWNsTm9kZSogbmV4dCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CkBAIC0xMTU0LDcgKzExNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIEJsb2NrTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEJsb2NrTm9kZShpbnQsIFNvdXJjZUVsZW1lbnRzKiA9IDApOworICAgICAgICBCbG9ja05v
ZGUoaW50LCBpbnQsIFNvdXJjZUVsZW1lbnRzKiA9IDApOwogCiAgICAgICAgIFN0YXRlbWVudE5v
ZGUqIHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0OwogICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0
U3RhdGVtZW50KCkgY29uc3Q7CkBAIC0xMTY5LDcgKzExNzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEVtcHR5U3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEVtcHR5U3RhdGVtZW50Tm9kZShpbnQpOworICAgICAgICBF
bXB0eVN0YXRlbWVudE5vZGUoaW50LCBpbnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApOwpAQCAtMTE3OSw3ICsxMTgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAg
ICAgY2xhc3MgRGVidWdnZXJTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnROb2RlKGludCk7CisgICAgICAg
IERlYnVnZ2VyU3RhdGVtZW50Tm9kZShpbnQsIGludCk7CiAgICAgICAgIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTExODcsNyArMTE5MSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgRXhwclN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBFeHByU3RhdGVtZW50Tm9kZShpbnQsIEV4cHJlc3Np
b25Ob2RlKik7CisgICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKGludCwgaW50LCBFeHByZXNzaW9u
Tm9kZSopOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHByKCkgY29uc3QgeyByZXR1cm4g
bV9leHByOyB9CiAKQEAgLTEyMDEsOCArMTIwNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgVmFyU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFZhclN0YXRlbWVudE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOyAgICAg
ICAgCi0KKyAgICAgICAgVmFyU3RhdGVtZW50Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUq
KTsKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CiAKQEAgLTEyMTEsNyArMTIx
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWZOb2RlIDogcHVibGljIFN0YXRl
bWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSWZOb2RlKGludCwgRXhwcmVzc2lvbk5v
ZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jayk7CisgICAgICAgIElmTm9kZShp
bnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9j
ayk7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyMjIsNyAr
MTIyNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWZFbHNlTm9kZSA6IHB1Ymxp
YyBJZk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSWZFbHNlTm9kZShpbnQsIEV4cHJlc3Np
b25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5vZGUq
IGVsc2VCbG9jayk7CisgICAgICAgIElmRWxzZU5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5vZGUqIGVsc2VC
bG9jayk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjMyLDcg
KzEyMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERvV2hpbGVOb2RlIDogcHVi
bGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRG9XaGlsZU5vZGUoaW50
LCBTdGF0ZW1lbnROb2RlKiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgRG9XaGlsZU5vZGUo
aW50LCBpbnQsIFN0YXRlbWVudE5vZGUqLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTI0Myw3ICsxMjQ2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBXaGlsZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBXaGlsZU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSosIFN0YXRl
bWVudE5vZGUqKTsKKyAgICAgICAgV2hpbGVOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSos
IFN0YXRlbWVudE5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
QEAgLTEyNTQsNyArMTI1Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRm9yTm9k
ZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZvck5vZGUo
aW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIzLCBTdGF0ZW1lbnROb2RlKiwgYm9vbCBleHByMVdhc1ZhckRlY2wpOwor
ICAgICAgICBGb3JOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIzLCBTdGF0ZW1lbnROb2RlKiwgYm9v
bCBleHByMVdhc1ZhckRlY2wpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
OwpAQCAtMTI2OCw4ICsxMjcxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGb3JJ
bk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZvckluTm9kZShKU0dsb2JhbERhdGEqLCBpbnQs
IEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7Ci0gICAg
ICAgIEZvckluTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGNvbnN0IElkZW50aWZpZXImLCBFeHBy
ZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIGludCBkaXZvdCwg
aW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRm9ySW5Ob2RlKEpTR2xv
YmFsRGF0YSosIGludCwgaW50LCBFeHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3Rh
dGVtZW50Tm9kZSopOworICAgICAgICBGb3JJbk5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQs
IGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3Rh
dGVtZW50Tm9kZSosIGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyODQsOCArMTI4Nyw4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29udGludWVOb2RlIDogcHVibGljIFN0
YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGlj
OgotICAgICAgICBDb250aW51ZU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50KTsKLSAgICAgICAgQ29u
dGludWVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBDb250aW51ZU5vZGUo
SlNHbG9iYWxEYXRhKiwgaW50LCBpbnQpOworICAgICAgICBDb250aW51ZU5vZGUoaW50LCBpbnQs
IGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApOwpAQCAtMTI5NSw4ICsxMjk4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBCcmVha05vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJyZWFrTm9kZShKU0dsb2JhbERh
dGEqLCBpbnQpOwotICAgICAgICBCcmVha05vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJik7Cisg
ICAgICAgIEJyZWFrTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCk7CisgICAgICAgIEJyZWFr
Tm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMzA2LDcgKzEzMDksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIFJldHVybk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVi
bGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJldHVy
bk5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogdmFsdWUpOworICAgICAgICBSZXR1cm5Ob2RlKGlu
dCwgaW50LCBFeHByZXNzaW9uTm9kZSogdmFsdWUpOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KIApAQCAtMTMyMCw3ICsxMzIzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBXaXRoTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdpdGhOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqLCBT
dGF0ZW1lbnROb2RlKiwgdWludDMyX3QgZGl2b3QsIHVpbnQzMl90IGV4cHJlc3Npb25MZW5ndGgp
OworICAgICAgICBXaXRoTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnRO
b2RlKiwgdWludDMyX3QgZGl2b3QsIHVpbnQzMl90IGV4cHJlc3Npb25MZW5ndGgpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTMzMyw3ICsxMzM2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBMYWJlbE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9k
ZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IExhYmVsTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqKTsK
KyAgICAgICAgTGFiZWxOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBTdGF0
ZW1lbnROb2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0x
MzQ0LDcgKzEzNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFRocm93Tm9kZSA6
IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgVGhyb3dOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAg
ICAgICAgVGhyb3dOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTM1NCw3ICsxMzU3LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBUcnlOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgVHJ5Tm9kZShpbnQsIFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBj
b25zdCBJZGVudGlmaWVyJiBleGNlcHRpb25JZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9j
aywgU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrKTsKKyAgICAgICAgVHJ5Tm9kZShpbnQsIGlu
dCwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2VwdGlvbklk
ZW50LCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5Qmxv
Y2spOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTM4Myw4ICsx
Mzg2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFj
a3M6OlZhclN0YWNrIFZhclN0YWNrOwogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tz
OjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAgICAgU2NvcGVOb2RlKEpTR2xv
YmFsRGF0YSosIGludCwgYm9vbCBpblN0cmljdENvbnRleHQpOwotICAgICAgICBTY29wZU5vZGUo
SlNHbG9iYWxEYXRhKiwgaW50LCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNlRWxlbWVudHMqLCBW
YXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgQ29kZUZlYXR1cmVzLCBp
bnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIGludCwg
aW50LCBib29sIGluU3RyaWN0Q29udGV4dCk7CisgICAgICAgIFNjb3BlTm9kZShKU0dsb2JhbERh
dGEqLCBpbnQsIGludCwgY29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3Rh
Y2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIENvZGVGZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cyk7CiAKICAgICAgICAgdXNpbmcgUGFyc2VyQXJlbmFSZWZDb3VudGVkOjpvcGVy
YXRvciBuZXc7CiAKQEAgLTE0NDYsMTIgKzE0NDksMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgUHJvZ3JhbU5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzRnVuY3Rpb25Ob2RlID0gZmFsc2U7Ci0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgaW50LCBT
b3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQm
LCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEq
LCBpbnQsIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJ
ZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNv
bnN0YW50cyk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0g
ZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAgICAgICBQcm9ncmFtTm9kZShKU0dsb2JhbERhdGEq
LCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRp
ZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFu
dHMpOworICAgICAgICBQcm9ncmFtTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCwgU291cmNl
RWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29u
c3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwogICAgIH07CkBAIC0xNDU5LDEyICsxNDYyLDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIEV2YWxOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVi
bGljOgogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0Z1bmN0aW9uTm9kZSA9IGZhbHNlOwot
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmFsTm9kZT4gY3JlYXRlKEpTR2xvYmFsRGF0YSos
IGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlm
aWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cyk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2YWxOb2RlPiBjcmVhdGUoSlNHbG9iYWxE
YXRhKiwgaW50LCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNr
KiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBu
dW1Db25zdGFudHMpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlv
biA9IGZhbHNlOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRXZhbE5vZGUoSlNHbG9iYWxEYXRh
KiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50
aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3Rh
bnRzKTsKKyAgICAgICAgRXZhbE5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQsIFNvdXJjZUVs
ZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKICAgICB9OwpAQCAtMTQ4MSw4ICsxNDg0LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAg
IHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSB0cnVl
OwotICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlKEpTR2xvYmFsRGF0YSos
IGludCwgYm9vbCBpc1N0cmljdE1vZGUpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGdW5j
dGlvbkJvZHlOb2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyos
IFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VD
b2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgc3RhdGljIEZ1
bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCwgYm9vbCBpc1N0
cmljdE1vZGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBj
cmVhdGUoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sq
LCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2Rl
RmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVy
cyogcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5nZXQoKTsgfQogICAg
ICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMt
PnNpemUoKTsgfQpAQCAtMTQ5OSw4ICsxNTAyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IHRydWU7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgYm9vbCBpblN0
cmljdENvbnRleHQpOwotICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSosIGlu
dCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVy
U2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7
CisgICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQsIGJvb2wg
aW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEq
LCBpbnQsIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJ
ZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNv
bnN0YW50cyk7CiAKICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50OwogICAgICAgICBJZGVudGlm
aWVyIG1faW5mZXJyZWROYW1lOwpAQCAtMTUwOSw3ICsxNTEyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgRnVuY0V4cHJOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIEZ1
bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsK
KyAgICAgICAgRnVuY0V4cHJOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rp
b25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOwogCiAg
ICAgICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KIApAQCAt
MTUyMyw3ICsxNTI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jRGVjbE5v
ZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jRGVj
bE5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNv
dXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOworICAgICAgICBGdW5jRGVjbE5vZGUoaW50
LCBpbnQsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbkJvZHlOb2RlKiwgY29uc3QgU291cmNl
Q29kZSYsIFBhcmFtZXRlck5vZGUqID0gMCk7CiAKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSog
Ym9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogCkBAIC0xNTc0LDcgKzE1NzcsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIFN3aXRjaE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBTd2l0Y2hOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqLCBD
YXNlQmxvY2tOb2RlKik7CisgICAgICAgIFN3aXRjaE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25O
b2RlKiwgQ2FzZUJsb2NrTm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGQ4OGE5YThi
NzZiZWRlOGEwOTJhZTdmYjJjNWZiZGM1YWQ1OGZhMzkuLmRmNGJjOTUwYzE1NDU5N2ZkNTE4NzU4
NjdmMDEyNTZjMTZmNmJmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKQEAgLTE3Miw2ICsxNzIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVZhckRlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VS
VChtYXRjaChWQVIpKTsKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwog
ICAgIGludCBzdGFydCA9IHRva2VuTGluZSgpOwogICAgIGludCBlbmQgPSAwOwogICAgIGludCBz
Y3JhdGNoOwpAQCAtMTgyLDIwICsxODMsMjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xhcmF0aW8KICAg
ICBmYWlsSWZUcnVlKG1fZXJyb3IpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7
CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVmFyU3RhdGVtZW50KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIHZhckRlY2xzLCBzdGFydCwgZW5kKTsKKyAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVWYXJTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5D
b2x1bW4sIHZhckRlY2xzLCBzdGFydCwgZW5kKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb25zdERlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0
KQogewogICAgIEFTU0VSVChtYXRjaChDT05TVFRPS0VOKSk7CisgICAgaW50IGtleVRva2VuQ29s
dW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBpbnQgc3RhcnQgPSB0b2tlbkxpbmUoKTsKICAgICBp
bnQgZW5kID0gMDsKICAgICBUcmVlQ29uc3REZWNsTGlzdCBjb25zdERlY2xzID0gcGFyc2VDb25z
dERlY2xhcmF0aW9uTGlzdChjb250ZXh0KTsKICAgICBmYWlsSWZUcnVlKG1fZXJyb3IpOwogICAg
IGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlQ29uc3RTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uc3REZWNs
cywgc3RhcnQsIGVuZCk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29uc3RTdGF0ZW1lbnQo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGNvbnN0RGVjbHMsIHN0
YXJ0LCBlbmQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMjEwLDYg
KzIxMiw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VEb1doaWxlU3RhdGVtCiAgICAgZW5kTG9vcCgpOwogICAgIGZh
aWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKKyAg
ICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGNvbnN1bWVPckZhaWwo
V0hJTEUpOwogICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKICAgICBUcmVlRXhwcmVzc2lv
biBleHByID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwpAQCAtMjE3LDEzICsyMjAsMTQgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZURvV2hpbGVTdGF0ZW0KICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwog
ICAgIGlmIChtYXRjaChTRU1JQ09MT04pKQogICAgICAgICBuZXh0KCk7IC8vIEFsd2F5cyBwZXJm
b3JtcyBhdXRvbWF0aWMgc2VtaWNvbG9uIGluc2VydGlvbi4KLSAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVEb1doaWxlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHN0YXRlbWVu
dCwgZXhwciwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVE
b1doaWxlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1u
LCBzdGF0ZW1lbnQsIGV4cHIsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0
ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlV2hpbGVTdGF0ZW1lbnQoVHJlZUJ1aWxkZXIm
IGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFdISUxFKSk7CisgICAgaW50IGtleVRva2Vu
Q29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7
CiAgICAgbmV4dCgpOwogICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKQEAgLTIzNiw3ICsy
NDAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlV2hpbGVTdGF0ZW1lbgogICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVt
ZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICBlbmRMb29wKCk7CiAg
ICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaGls
ZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBzdGF0ZW1lbnQsIHN0
YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlV2hpbGVTdGF0ZW1l
bnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGV4cHIsIHN0YXRl
bWVudCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KQEAgLTI0NSw2ICsyNDksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xhcmF0aQogICAgIFRy
ZWVFeHByZXNzaW9uIHZhckRlY2xzID0gMDsKICAgICBkbyB7CiAgICAgICAgIGRlY2xhcmF0aW9u
cysrOworICAgICAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgICAg
ICBuZXh0KCk7CiAgICAgICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICAgICAgCkBAIC0yNjYs
MTEgKzI3MSwxMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xhcmF0aQogICAgICAgICAgICAgbGFzdElu
aXRpYWxpemVyID0gaW5pdGlhbGl6ZXI7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShpbml0aWFs
aXplcik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBj
b250ZXh0LmNyZWF0ZUFzc2lnblJlc29sdmUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgKm5h
bWUsIGluaXRpYWxpemVyLCBpbml0aWFsQXNzaWdubWVudHMgIT0gbV9hc3NpZ25tZW50Q291bnQs
IHZhclN0YXJ0LCB2YXJEaXZvdCwgbGFzdFRva2VuRW5kKCkpOworICAgICAgICAgICAgVHJlZUV4
cHJlc3Npb24gbm9kZSA9IGNvbnRleHQuY3JlYXRlQXNzaWduUmVzb2x2ZShtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgKm5hbWUsIGluaXRpYWxpemVyLCBpbml0aWFs
QXNzaWdubWVudHMgIT0gbV9hc3NpZ25tZW50Q291bnQsIHZhclN0YXJ0LCB2YXJEaXZvdCwgbGFz
dFRva2VuRW5kKCkpOwogICAgICAgICAgICAgaWYgKCF2YXJEZWNscykKICAgICAgICAgICAgICAg
ICB2YXJEZWNscyA9IG5vZGU7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdmFy
RGVjbHMgPSBjb250ZXh0LmNvbWJpbmVDb21tYU5vZGVzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHZhckRlY2xzLCBub2RlKTsKKyAgICAgICAgICAgICAgICB2YXJEZWNscyA9IGNvbnRleHQu
Y29tYmluZUNvbW1hTm9kZXMobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1
bW4sIHZhckRlY2xzLCBub2RlKTsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKG1hdGNoKENPTU1B
KSk7CiAgICAgcmV0dXJuIHZhckRlY2xzOwpAQCAtMjgzLDYgKzI4OCw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNvbnN0RGVjbExpc3QgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlQ29uc3REZWNsCiAgICAgVHJlZUNvbnN0RGVjbExpc3QgY29uc3REZWNscyA9IDA7CiAgICAg
VHJlZUNvbnN0RGVjbExpc3QgdGFpbCA9IDA7CiAgICAgZG8geworICAgICAgICBpbnQga2V5VG9r
ZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIG1hdGNo
T3JGYWlsKElERU5UKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbmFtZSA9IG1fdG9rZW4u
bV9kYXRhLmlkZW50OwpAQCAtMjk1LDcgKzMwMSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUNvbnN0RGVjbExpc3QgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29uc3REZWNs
CiAgICAgICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsgLy8gY29u
c3VtZSAnPScKICAgICAgICAgICAgIGluaXRpYWxpemVyID0gcGFyc2VBc3NpZ25tZW50RXhwcmVz
c2lvbihjb250ZXh0KTsKICAgICAgICAgfQotICAgICAgICB0YWlsID0gY29udGV4dC5hcHBlbmRD
b25zdERlY2wobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdGFpbCwgbmFtZSwgaW5pdGlhbGl6
ZXIpOworICAgICAgICB0YWlsID0gY29udGV4dC5hcHBlbmRDb25zdERlY2wobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIHRhaWwsIG5hbWUsIGluaXRpYWxpemVyKTsK
ICAgICAgICAgaWYgKCFjb25zdERlY2xzKQogICAgICAgICAgICAgY29uc3REZWNscyA9IHRhaWw7
CiAgICAgfSB3aGlsZSAobWF0Y2goQ09NTUEpKTsKQEAgLTMwNiw2ICszMTIsNyBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0YXRlbWVudChUcmVlQnVpbGRl
ciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goRk9SKSk7CisgICAgaW50IGtleVRva2Vu
Q29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7
CiAgICAgbmV4dCgpOwogICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKQEAgLTM1NSw3ICsz
NjIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAgICAgICBlbmRMb29wKCk7CiAgICAg
ICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVGb3JJbkxvb3AobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZm9ySW5UYXJn
ZXQsIGZvckluSW5pdGlhbGl6ZXIsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgaW5Mb2Nh
dGlvbiwgZXhwckVuZCwgaW5pdFN0YXJ0LCBpbml0RW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwor
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJbkxvb3AobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGZvckluVGFyZ2V0LCBmb3JJbkluaXRpYWxpemVyLCBl
eHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGluTG9jYXRpb24sIGV4cHJFbmQsIGluaXRTdGFy
dCwgaW5pdEVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICB9CiAgICAgCiAgICAgaWYgKCFt
YXRjaChTRU1JQ09MT04pKSB7CkBAIC0zOTEsNyArMzk4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0YXRl
bWVudCgKICAgICAgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChj
b250ZXh0LCB1bnVzZWQpOwogICAgICAgICBlbmRMb29wKCk7CiAgICAgICAgIGZhaWxJZkZhbHNl
KHN0YXRlbWVudCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckxvb3AobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgZGVjbHMsIGNvbmRpdGlvbiwgaW5jcmVtZW50LCBzdGF0ZW1l
bnQsIGhhc0RlY2xhcmF0aW9uLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGb3JMb29wKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2Vu
Q29sdW1uLCBkZWNscywgY29uZGl0aW9uLCBpbmNyZW1lbnQsIHN0YXRlbWVudCwgaGFzRGVjbGFy
YXRpb24sIHN0YXJ0TGluZSwgZW5kTGluZSk7CiAgICAgfQogICAgIAogICAgIC8vIEZvci1pbiBs
b29wCkBAIC00MDgsMTMgKzQxNSwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAgIGVu
ZExvb3AoKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIAotICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUZvckluTG9vcChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBkZWNscywg
ZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBkZWNsc0VuZCwgZXhwckVuZCwgc3RhcnRMaW5l
LCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJbkxvb3AobV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGRlY2xzLCBleHByLCBzdGF0ZW1lbnQs
IGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJyZWFrU3RhdGVtZW50
KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChCUkVBSykpOworICAg
IGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgaW50IHN0YXJ0Q29sID0g
dG9rZW5TdGFydCgpOwogICAgIGludCBlbmRDb2wgPSB0b2tlbkVuZCgpOwogICAgIGludCBzdGFy
dExpbmUgPSB0b2tlbkxpbmUoKTsKQEAgLTQyMyw3ICs0MzEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQnJlYWtT
dGF0ZW1lbgogICAgIAogICAgIGlmIChhdXRvU2VtaUNvbG9uKCkpIHsKICAgICAgICAgZmFpbElm
RmFsc2VXaXRoTWVzc2FnZShicmVha0lzVmFsaWQoKSwgIidicmVhaycgaXMgb25seSB2YWxpZCBp
bnNpZGUgYSBzd2l0Y2ggb3IgbG9vcCBzdGF0ZW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlQnJlYWtTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RhcnRD
b2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlQnJlYWtTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5D
b2x1bW4sIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiAgICAgfQogICAg
IG1hdGNoT3JGYWlsKElERU5UKTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9r
ZW4ubV9kYXRhLmlkZW50OwpAQCAtNDMyLDEzICs0NDAsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJyZWFrU3Rh
dGVtZW4KICAgICBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogICAgIGZhaWxJ
ZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQnJlYWtT
dGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgaWRlbnQsIHN0YXJ0Q29sLCBlbmRD
b2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQnJlYWtT
dGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGlkZW50
LCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnRpbnVlU3RhdGVtZW50KFRyZWVCdWls
ZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChDT05USU5VRSkpOworICAgIGludCBr
ZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgaW50IHN0YXJ0Q29sID0gdG9rZW5T
dGFydCgpOwogICAgIGludCBlbmRDb2wgPSB0b2tlbkVuZCgpOwogICAgIGludCBzdGFydExpbmUg
PSB0b2tlbkxpbmUoKTsKQEAgLTQ0Nyw3ICs0NTYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29udGludWVTdGF0
ZQogICAgIAogICAgIGlmIChhdXRvU2VtaUNvbG9uKCkpIHsKICAgICAgICAgZmFpbElmRmFsc2VX
aXRoTWVzc2FnZShjb250aW51ZUlzVmFsaWQoKSwgIidjb250aW51ZScgaXMgb25seSB2YWxpZCBp
bnNpZGUgYSBsb29wIHN0YXRlbWVudCIpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVD
b250aW51ZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBzdGFydENvbCwgZW5k
Q29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVD
b250aW51ZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVt
biwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICB9CiAgICAgbWF0
Y2hPckZhaWwoSURFTlQpOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5t
X2RhdGEuaWRlbnQ7CkBAIC00NTgsMTMgKzQ2NywxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29udGludWVTdGF0
ZQogICAgIGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgZmFpbElmRmFs
c2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDb250aW51ZVN0
YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBpZGVudCwgc3RhcnRDb2wsIGVuZENv
bCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDb250aW51
ZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgaWRl
bnQsIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUmV0dXJuU3RhdGVtZW50KFRyZWVCdWls
ZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChSRVRVUk4pKTsKKyAgICBpbnQga2V5
VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGZhaWxJZkZhbHNlKGN1cnJlbnRTY29w
ZSgpLT5pc0Z1bmN0aW9uKCkpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAg
ICBpbnQgZW5kTGluZSA9IHN0YXJ0TGluZTsKQEAgLTQ3NywyMCArNDg3LDIxIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VSZXR1cm5TdGF0ZW1lCiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIGVuZExp
bmUgID0gdG9rZW5MaW5lKCk7CiAgICAgaWYgKGF1dG9TZW1pQ29sb24oKSkKLSAgICAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIDAsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZVJldHVyblN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBr
ZXlUb2tlbkNvbHVtbiwgMCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICBU
cmVlRXhwcmVzc2lvbiBleHByID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJ
ZkZhbHNlKGV4cHIpOwogICAgIGVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgIGlmIChtYXRjaChT
RU1JQ09MT04pKQogICAgICAgICBlbmRMaW5lICA9IHRva2VuTGluZSgpOwogICAgIGZhaWxJZkZh
bHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3Rh
dGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIHN0YXJ0LCBlbmQsIHN0YXJ0
TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBleHByLCBzdGFydCwg
ZW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZVRocm93U3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewog
ICAgIEFTU0VSVChtYXRjaChUSFJPVykpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2Vu
Q29sdW1uKCk7CiAgICAgaW50IGVTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICBpbnQgc3RhcnRM
aW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwpAQCAtNTAzLDEzICs1MTQsMTQgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVRocm93U3RhdGVtZW4KICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAg
IGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlVGhyb3dTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgZVN0
YXJ0LCBlRW5kLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZVRocm93U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1u
LCBleHByLCBlU3RhcnQsIGVFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlV2l0aFN0YXRlbWVudChUcmVlQnVpbGRl
ciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goV0lUSCkpOworICAgIGludCBrZXlUb2tl
bkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgZmFpbElmVHJ1ZVdpdGhNZXNzYWdlKHN0cmlj
dE1vZGUoKSwgIid3aXRoJyBzdGF0ZW1lbnRzIGFyZSBub3QgdmFsaWQgaW4gc3RyaWN0IG1vZGUi
KTsKICAgICBjdXJyZW50U2NvcGUoKS0+c2V0TmVlZHNGdWxsQWN0aXZhdGlvbigpOwogICAgIGlu
dCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKQEAgLTUyNiwxMyArNTM4LDE0IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VXaXRoU3RhdGVtZW50CiAgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRl
bWVudChjb250ZXh0LCB1bnVzZWQpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAg
Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlV2l0aFN0YXRlbWVudChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBleHByLCBzdGF0ZW1lbnQsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGlu
ZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlV2l0aFN0YXRlbWVudChtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZXhwciwgc3RhdGVtZW50LCBzdGFydCwgZW5k
LCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZVN3aXRjaFN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAg
ICBBU1NFUlQobWF0Y2goU1dJVENIKSk7CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5D
b2x1bW4oKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwog
ICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKQEAgLTU1Myw3ICs1NjYsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlU3dpdGNoU3RhdGVtZQogICAgIGVuZFN3aXRjaCgpOwogICAgIGNvbnN1bWVPckZhaWwoQ0xP
U0VCUkFDRSk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlU3dpdGNoU3RhdGVtZW50
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIGZpcnN0Q2xhdXNlcywgZGVmYXVsdENs
YXVzZSwgc2Vjb25kQ2xhdXNlcywgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5
VG9rZW5Db2x1bW4sIGV4cHIsIGZpcnN0Q2xhdXNlcywgZGVmYXVsdENsYXVzZSwgc2Vjb25kQ2xh
dXNlcywgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICAKIH0KIApAQCAtNjM3LDIwICs2NTAsMjEg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZVRyeVN0YXRlbWVudCgKICAgICAgICAgZmFpbElmRmFsc2UoZmluYWxseUJs
b2NrKTsKICAgICB9CiAgICAgZmFpbElmRmFsc2UoY2F0Y2hCbG9jayB8fCBmaW5hbGx5QmxvY2sp
OwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVRyeVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCB0cnlCbG9jaywgaWRlbnQsIGNhdGNoQmxvY2ssIGZpbmFsbHlCbG9jaywgZmly
c3RMaW5lLCBsYXN0TGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVHJ5U3RhdGVtZW50
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHRyeUJsb2NrLCBpZGVu
dCwgY2F0Y2hCbG9jaywgZmluYWxseUJsb2NrLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZWJ1Z2dlclN0YXRlbWVu
dChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goREVCVUdHRVIpKTsK
KyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBzdGFydExp
bmUgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQgZW5kTGluZSA9IHN0YXJ0TGluZTsKICAgICBuZXh0
KCk7CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIHN0YXJ0TGluZSA9IHRva2Vu
TGluZSgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlRGVidWdnZXIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RhcnRMaW5l
LCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVEZWJ1Z2dlcihtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTY2MSwxMyArNjc1LDEzIEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VCbG9ja1N0YXRlbWVuCiAgICAgbmV4dCgpOwogICAgIGlmIChtYXRjaChDTE9TRUJS
QUNFKSkgewogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJs
b2NrU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIDAsIHN0YXJ0LCBtX2xhc3RM
aW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgMCwgc3RhcnQsIG1fbGFzdExpbmUp
OwogICAgIH0KICAgICBUcmVlU291cmNlRWxlbWVudHMgc3VidHJlZSA9IHBhcnNlU291cmNlRWxl
bWVudHM8RG9udENoZWNrRm9yU3RyaWN0TW9kZT4oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uo
c3VidHJlZSk7CiAgICAgbWF0Y2hPckZhaWwoQ0xPU0VCUkFDRSk7CiAgICAgbmV4dCgpOwotICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2NrU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIHN1YnRyZWUsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVCbG9ja1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVt
bigpLCBzdWJ0cmVlLCBzdGFydCwgbV9sYXN0TGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CkBAIC02OTAsNyArNzA0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudChUcmUK
ICAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihjb250ZXh0KTsKICAgICBj
YXNlIFNFTUlDT0xPTjoKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVFbXB0eVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlRW1wdHlTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgdG9rZW5Db2x1bW4oKSk7CiAgICAgY2FzZSBJRjoKICAgICAgICAgcmV0dXJuIHBhcnNl
SWZTdGF0ZW1lbnQoY29udGV4dCk7CiAgICAgY2FzZSBETzoKQEAgLTc1OSwxMiArNzczLDEyIEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25Cb2R5
KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkKLSAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIHN0cmljdE1vZGUoKSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1
bmN0aW9uQm9keShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBzdHJp
Y3RNb2RlKCkpOwogICAgIERlcHRoTWFuYWdlciBzdGF0ZW1lbnREZXB0aCgmbV9zdGF0ZW1lbnRE
ZXB0aCk7CiAgICAgbV9zdGF0ZW1lbnREZXB0aCA9IDA7CiAgICAgdHlwZW5hbWUgVHJlZUJ1aWxk
ZXI6OkZ1bmN0aW9uQm9keUJ1aWxkZXIgYm9keUJ1aWxkZXIoY29uc3RfY2FzdDxKU0dsb2JhbERh
dGEqPihtX2dsb2JhbERhdGEpLCBtX2xleGVyLmdldCgpKTsKICAgICBmYWlsSWZGYWxzZShwYXJz
ZVNvdXJjZUVsZW1lbnRzPENoZWNrRm9yU3RyaWN0TW9kZT4oYm9keUJ1aWxkZXIpKTsKLSAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgc3RyaWN0TW9kZSgpKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHko
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgc3RyaWN0TW9kZSgpKTsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTc5NCw3ICs4MDgsNyBAQCB0
ZW1wbGF0ZSA8RnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBib29sIG5hbWVJc0lu
Q29udGFpbmluZ1Njb3BlLCBjbGFzcwogICAgIGlmIChjb25zdCBTb3VyY2VQcm92aWRlckNhY2hl
SXRlbSogY2FjaGVkSW5mbyA9IFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5jdGlvbkNhY2hlID8gZmlu
ZENhY2hlZEZ1bmN0aW9uSW5mbyhvcGVuQnJhY2VQb3MpIDogMCkgewogICAgICAgICAvLyBJZiB3
ZSdyZSBpbiBhIHN0cmljdCBjb250ZXh0LCB0aGUgY2FjaGVkIGZ1bmN0aW9uIGluZm8gbXVzdCBz
YXkgaXQgd2FzIHN0cmljdCB0b28uCiAgICAgICAgIEFTU0VSVCghc3RyaWN0TW9kZSgpIHx8IGNh
Y2hlZEluZm8tPnN0cmljdE1vZGUpOwotICAgICAgICBib2R5ID0gY29udGV4dC5jcmVhdGVGdW5j
dGlvbkJvZHkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY2FjaGVkSW5mby0+c3RyaWN0TW9k
ZSk7CisgICAgICAgIGJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlKTsK
ICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGdW5jdGlvbkluZm8oY2Fj
aGVkSW5mbyk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRy
ZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pKTsKQEAgLTg1NCw3ICs4NjgsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRnVuY3Rpb25EZWNsYQogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5m
bzxGdW5jdGlvbk5lZWRzTmFtZSwgdHJ1ZT4oY29udGV4dCwgbmFtZSwgcGFyYW1ldGVycywgYm9k
eSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSkpOwogICAgIGZh
aWxJZkZhbHNlKG5hbWUpOwogICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZGVjbGFyZVZhcmlhYmxl
KG5hbWUpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVudChtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCBuYW1lLCBib2R5LCBwYXJhbWV0ZXJzLCBvcGVuQnJhY2VQ
b3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOworICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHRva2VuQ29sdW1uKCksIG5hbWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZVBvcywg
Y2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CiB9CiAKIHN0cnVjdCBM
YWJlbEluZm8gewpAQCAtODgyLDYgKzg5Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uT3JMCiAg
ICAgZG8gewogICAgICAgICBpbnQgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgICAgIGludCBz
dGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICAgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9r
ZW5Db2x1bW4oKTsKICAgICAgICAgaWYgKCFuZXh0VG9rZW5Jc0NvbG9uKCkpIHsKICAgICAgICAg
ICAgIC8vIElmIHdlIGhpdCB0aGlzIHBhdGggd2UncmUgbWFraW5nIGEgZXhwcmVzc2lvbiBzdGF0
ZW1lbnQsIHdoaWNoCiAgICAgICAgICAgICAvLyBieSBkZWZpbml0aW9uIGNhbid0IG1ha2UgdXNl
IG9mIGNvbnRpbnVlL2JyZWFrIHNvIHdlIGNhbiBqdXN0CkBAIC04ODksNyArOTA0LDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUV4cHJlc3Npb25PckwKICAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIGV4cHJlc3Np
b24gPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShl
eHByZXNzaW9uKTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGV4cHJlc3Npb24sIHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAg
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBleHByZXNzaW9uLCBzdGFydExpbmUsIG1fbGFz
dExpbmUpOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90
b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIGludCBlbmQgPSB0b2tlbkVuZCgpOwpAQCAtOTI4
LDcgKzk0Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uT3JMCiAgICAgZmFpbElmRmFsc2Uoc3Rh
dGVtZW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxhYmVscy5zaXplKCk7IGkrKykg
ewogICAgICAgICBjb25zdCBMYWJlbEluZm8mIGluZm8gPSBsYWJlbHNbbGFiZWxzLnNpemUoKSAt
IGkgLSAxXTsKLSAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5jcmVhdGVMYWJlbFN0YXRlbWVu
dChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBpbmZvLm1faWRlbnQsIHN0YXRlbWVudCwgaW5m
by5tX3N0YXJ0LCBpbmZvLm1fZW5kKTsKKyAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5jcmVh
dGVMYWJlbFN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigp
LCBpbmZvLm1faWRlbnQsIHN0YXRlbWVudCwgaW5mby5tX3N0YXJ0LCBpbmZvLm1fZW5kKTsKICAg
ICB9CiAgICAgcmV0dXJuIHN0YXRlbWVudDsKIH0KQEAgLTkzNywxNyArOTUyLDE4IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lvblN0YXRlbWVudChU
cmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7
CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBUcmVlRXhwcmVz
c2lvbiBleHByZXNzaW9uID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZh
bHNlKGV4cHJlc3Npb24pOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBleHByZXNzaW9uLCBzdGFydExpbmUsIG1fbGFzdExpbmUpOworICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9r
ZW5Db2x1bW4sIGV4cHJlc3Npb24sIHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKElGKSk7Ci0gICAgCisgICAgaW50IGtl
eVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBpbnQgc3RhcnQgPSB0b2tlbkxpbmUo
KTsKICAgICBuZXh0KCk7CiAgICAgCkBAIC05NjMsNyArOTc5LDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlmU3Rh
dGVtZW50KFQKICAgICBmYWlsSWZGYWxzZSh0cnVlQmxvY2spOwogICAgIAogICAgIGlmICghbWF0
Y2goRUxTRSkpCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBzdGFydCwgZW5kKTsK
KyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBzdGFydCwg
ZW5kKTsKICAgICAKICAgICBWZWN0b3I8VHJlZUV4cHJlc3Npb24+IGV4cHJTdGFjazsKICAgICBW
ZWN0b3I8cGFpcjxpbnQsIGludD4gPiBwb3NTdGFjazsKQEAgLTEwMDMsNyArMTAxOSw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VJZlN0YXRlbWVudChUCiAgICAgICAgIHN0YXRlbWVudFN0YWNrLnJlbW92ZUxhc3Qo
KTsKICAgICAgICAgcGFpcjxpbnQsIGludD4gcG9zID0gcG9zU3RhY2subGFzdCgpOwogICAgICAg
ICBwb3NTdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgICAgIHN0YXRlbWVudFN0YWNrLmFwcGVuZChj
b250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGNvbmRp
dGlvbiwgdHJ1ZUJsb2NrLCBwb3MuZmlyc3QsIHBvcy5zZWNvbmQpKTsKKyAgICAgICAgc3RhdGVt
ZW50U3RhY2suYXBwZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHBvcy5maXJz
dCwgcG9zLnNlY29uZCkpOwogICAgIH0KICAgICAKICAgICB3aGlsZSAoIWV4cHJTdGFjay5pc0Vt
cHR5KCkpIHsKQEAgLTEwMTUsMTYgKzEwMzEsMTcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlmU3RhdGVtZW50KFQK
ICAgICAgICAgc3RhdGVtZW50U3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICBwYWlyPGludCwg
aW50PiBwb3MgPSBwb3NTdGFjay5sYXN0KCk7CiAgICAgICAgIHBvc1N0YWNrLnJlbW92ZUxhc3Qo
KTsKLSAgICAgICAgc3RhdGVtZW50U3RhY2suYXBwZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1l
bnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIGZhbHNl
QmxvY2ssIHBvcy5maXJzdCwgcG9zLnNlY29uZCkpOworICAgICAgICBzdGF0ZW1lbnRTdGFjay5h
cHBlbmQoY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCB0b2tlbkNvbHVtbigpLCBjb25kaXRpb24sIHRydWVCbG9jaywgZmFsc2VCbG9jaywgcG9zLmZp
cnN0LCBwb3Muc2Vjb25kKSk7CiAgICAgfQogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUlmU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGNvbmRpdGlvbiwgdHJ1ZUJs
b2NrLCBzdGF0ZW1lbnRTdGFjay5sYXN0KCksIHN0YXJ0LCBlbmQpOworICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29s
dW1uKCksIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBzdGF0ZW1lbnRTdGFjay5sYXN0KCksIHN0YXJ0
LCBlbmQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VF
eHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIGZhaWxJZlN0YWNrT3ZlcmZs
b3coKTsKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIFRyZWVF
eHByZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAg
IGZhaWxJZkZhbHNlKG5vZGUpOwogICAgIGlmICghbWF0Y2goQ09NTUEpKQpAQCAtMTAzNCw3ICsx
MDUxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uKFQKICAgICBtX25vbkxIU0NvdW50Kys7CiAg
ICAgVHJlZUV4cHJlc3Npb24gcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRl
eHQpOwogICAgIGZhaWxJZkZhbHNlKHJpZ2h0KTsKLSAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
Q29tbWEgY29tbWFOb2RlID0gY29udGV4dC5jcmVhdGVDb21tYUV4cHIobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgbm9kZSwgcmlnaHQpOworICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpDb21t
YSBjb21tYU5vZGUgPSBjb250ZXh0LmNyZWF0ZUNvbW1hRXhwcihtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgbm9kZSwgcmlnaHQpOwogICAgIHdoaWxlIChtYXRjaChD
T01NQSkpIHsKICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAg
ICAgICAgIHJpZ2h0ID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTEw
NDksNiArMTA2Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVuCiB7CiAgICAgZmFpbElmU3Rh
Y2tPdmVyZmxvdygpOwogICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICBpbnQga2V5
VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBpbml0aWFsQXNzaWdubWVudENv
dW50ID0gbV9hc3NpZ25tZW50Q291bnQ7CiAgICAgaW50IGluaXRpYWxOb25MSFNDb3VudCA9IG1f
bm9uTEhTQ291bnQ7CiAgICAgVHJlZUV4cHJlc3Npb24gbGhzID0gcGFyc2VDb25kaXRpb25hbEV4
cHJlc3Npb24oY29udGV4dCk7CkBAIC0xMDc4LDcgKzEwOTYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFz
c2lnbm1lbgogICAgICAgICB9CiAgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsr
OwogICAgICAgICBoYWRBc3NpZ25tZW50ID0gdHJ1ZTsKLSAgICAgICAgY29udGV4dC5hc3NpZ25t
ZW50U3RhY2tBcHBlbmQoYXNzaWdubWVudFN0YWNrLCBsaHMsIHN0YXJ0LCB0b2tlblN0YXJ0KCks
IG1fYXNzaWdubWVudENvdW50LCBvcCk7CisgICAgICAgIGNvbnRleHQuYXNzaWdubWVudFN0YWNr
QXBwZW5kKGFzc2lnbm1lbnRTdGFjaywgbGhzLCBzdGFydCwga2V5VG9rZW5Db2x1bW4sIG1fYXNz
aWdubWVudENvdW50LCBvcCk7CiAgICAgICAgIHN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgICAg
ICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVp
bGRTdHJpbmdzKTsKQEAgLTExMDEsNyArMTExOSw3IEBAIGVuZDoKICAgICAgICAgcmV0dXJuIGxo
czsKICAgICAKICAgICB3aGlsZSAoYXNzaWdubWVudFN0YWNrKQotICAgICAgICBsaHMgPSBjb250
ZXh0LmNyZWF0ZUFzc2lnbm1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgYXNzaWdubWVu
dFN0YWNrLCBsaHMsIGluaXRpYWxBc3NpZ25tZW50Q291bnQsIG1fYXNzaWdubWVudENvdW50LCBs
YXN0VG9rZW5FbmQoKSk7CisgICAgICAgIGxocyA9IGNvbnRleHQuY3JlYXRlQXNzaWdubWVudCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgYXNzaWdubWVudFN0YWNr
LCBsaHMsIGluaXRpYWxBc3NpZ25tZW50Q291bnQsIG1fYXNzaWdubWVudENvdW50LCBsYXN0VG9r
ZW5FbmQoKSk7CiAgICAgCiAgICAgcmV0dXJuIGxoczsKIH0KQEAgLTExMDksNiArMTEyNyw3IEBA
IGVuZDoKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbmRpdGlv
bmFsRXhwcmVzc2lvbihUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKKyAgICBpbnQga2V5VG9rZW5D
b2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIFRyZWVFeHByZXNzaW9uIGNvbmQgPSBwYXJzZUJp
bmFyeUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoY29uZCk7CiAgICAgaWYg
KCFtYXRjaChRVUVTVElPTikpCkBAIC0xMTIxLDcgKzExNDAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbmRp
dGlvbmFsRQogICAgIAogICAgIFRyZWVFeHByZXNzaW9uIHJocyA9IHBhcnNlQXNzaWdubWVudEV4
cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UocmhzKTsKLSAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVDb25kaXRpb25hbEV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29u
ZCwgbGhzLCByaHMpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbmRpdGlvbmFsRXhwciht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgY29uZCwgbGhzLCByaHMp
OwogfQogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0
b2tlbikKQEAgLTExNjUsNyArMTE4NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQmluYXJ5RXhwcmVzCiAgICAg
ICAgICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3BlcmFuZCByaHMgPSBjb250ZXh0
LmdldEZyb21PcGVyYW5kU3RhY2soLTEpOwogICAgICAgICAgICAgdHlwZW5hbWUgVHJlZUJ1aWxk
ZXI6OkJpbmFyeU9wZXJhbmQgbGhzID0gY29udGV4dC5nZXRGcm9tT3BlcmFuZFN0YWNrKC0yKTsK
ICAgICAgICAgICAgIGNvbnRleHQuc2hyaW5rT3BlcmFuZFN0YWNrQnkob3BlcmFuZFN0YWNrRGVw
dGgsIDIpOwotICAgICAgICAgICAgY29udGV4dC5hcHBlbmRCaW5hcnlPcGVyYXRpb24obV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgb3BlcmFuZFN0YWNrRGVwdGgsIG9wZXJhdG9yU3RhY2tEZXB0
aCwgbGhzLCByaHMpOworICAgICAgICAgICAgY29udGV4dC5hcHBlbmRCaW5hcnlPcGVyYXRpb24o
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgb3BlcmFuZFN0YWNrRGVw
dGgsIG9wZXJhdG9yU3RhY2tEZXB0aCwgbGhzLCByaHMpOwogICAgICAgICAgICAgY29udGV4dC5v
cGVyYXRvclN0YWNrUG9wKG9wZXJhdG9yU3RhY2tEZXB0aCk7CiAgICAgICAgIH0KICAgICAgICAg
Y29udGV4dC5vcGVyYXRvclN0YWNrQXBwZW5kKG9wZXJhdG9yU3RhY2tEZXB0aCwgb3BlcmF0b3JU
b2tlbiwgcHJlY2VkZW5jZSk7CkBAIC0xMTc2LDcgKzExOTUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJpbmFy
eUV4cHJlcwogICAgICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3BlcmFuZCByaHMg
PSBjb250ZXh0LmdldEZyb21PcGVyYW5kU3RhY2soLTEpOwogICAgICAgICB0eXBlbmFtZSBUcmVl
QnVpbGRlcjo6QmluYXJ5T3BlcmFuZCBsaHMgPSBjb250ZXh0LmdldEZyb21PcGVyYW5kU3RhY2so
LTIpOwogICAgICAgICBjb250ZXh0LnNocmlua09wZXJhbmRTdGFja0J5KG9wZXJhbmRTdGFja0Rl
cHRoLCAyKTsKLSAgICAgICAgY29udGV4dC5hcHBlbmRCaW5hcnlPcGVyYXRpb24obV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwgb3BlcmFuZFN0YWNrRGVwdGgsIG9wZXJhdG9yU3RhY2tEZXB0aCwg
bGhzLCByaHMpOworICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9wZXJhdGlvbihtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBvcGVyYW5kU3RhY2tEZXB0aCwgb3Bl
cmF0b3JTdGFja0RlcHRoLCBsaHMsIHJocyk7CiAgICAgICAgIGNvbnRleHQub3BlcmF0b3JTdGFj
a1BvcChvcGVyYXRvclN0YWNrRGVwdGgpOwogICAgIH0KICAgICByZXR1cm4gY29udGV4dC5wb3BP
cGVyYW5kU3RhY2sob3BlcmFuZFN0YWNrRGVwdGgpOwpAQCAtMTIyOCw4ICsxMjQ3LDggQEAgdGVt
cGxhdGUgPGJvb2wgY29tcGxldGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFy
c2VyPExleGVyVHlwZT46OnBhcnMKICAgICAgICAgbmV4dCgpOwogICAgICAgICBmYWlsSWZGYWxz
ZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgZmFsc2U+KGNvbnRl
eHQsIGFjY2Vzc29yTmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJy
YWNlUG9zLCBib2R5U3RhcnRMaW5lKSkpOwogICAgICAgICBpZiAoc3RyaW5nUHJvcGVydHlOYW1l
KQotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQudGVtcGxhdGUgY3JlYXRlR2V0dGVyT3JTZXR0
ZXJQcm9wZXJ0eTxjb21wbGV0ZT4obV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdHlwZSwgc3Ry
aW5nUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJh
Y2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOwotICAgICAgICByZXR1cm4gY29udGV4
dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihjb25zdF9j
YXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xvYmFsRGF0YSksIG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHR5cGUsIG51bWVyaWNQcm9wZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFj
ZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgICAg
ICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5
PGNvbXBsZXRlPihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCB0eXBl
LCBzdHJpbmdQcm9wZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xv
c2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgICAgIHJldHVybiBj
b250ZXh0LnRlbXBsYXRlIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8Y29tcGxldGU+KGNv
bnN0X2Nhc3Q8SlNHbG9iYWxEYXRhKj4obV9nbG9iYWxEYXRhKSwgbV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgdHlwZSwgbnVtZXJpY1Byb3BlcnR5TmFtZSwgcGFyYW1l
dGVycywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBt
X2xhc3RMaW5lKTsKICAgICB9CiAgICAgY2FzZSBOVU1CRVI6IHsKICAgICAgICAgZG91YmxlIHBy
b3BlcnR5TmFtZSA9IG1fdG9rZW4ubV9kYXRhLmRvdWJsZVZhbHVlOwpAQCAtMTI1Nyw3ICsxMjc2
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VPYmplY3RMaXRlcmEKICAgICAKICAgICBpZiAobWF0Y2goQ0xPU0VC
UkFDRSkpIHsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVP
YmplY3RMaXRlcmFsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCkpOworICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRv
a2VuQ29sdW1uKCkpOwogICAgIH0KICAgICAKICAgICBUcmVlUHJvcGVydHkgcHJvcGVydHkgPSBw
YXJzZVByb3BlcnR5PGZhbHNlPihjb250ZXh0KTsKQEAgLTEyNjksNyArMTI4OCw3IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlT2JqZWN0TGl0ZXJhCiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIob2xkTGlu
ZU51bWJlcik7CiAgICAgICAgIHJldHVybiBwYXJzZVN0cmljdE9iamVjdExpdGVyYWwoY29udGV4
dCk7CiAgICAgfQotICAgIFRyZWVQcm9wZXJ0eUxpc3QgcHJvcGVydHlMaXN0ID0gY29udGV4dC5j
cmVhdGVQcm9wZXJ0eUxpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHkpOwor
ICAgIFRyZWVQcm9wZXJ0eUxpc3QgcHJvcGVydHlMaXN0ID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0
eUxpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgcHJvcGVydHkp
OwogICAgIFRyZWVQcm9wZXJ0eUxpc3QgdGFpbCA9IHByb3BlcnR5TGlzdDsKICAgICB3aGlsZSAo
bWF0Y2goQ09NTUEpKSB7CiAgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmlu
Z3MpOwpAQCAtMTI4NSwxNCArMTMwNCwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU9iamVjdExpdGVyYQogICAg
ICAgICAgICAgbV9sZXhlci0+c2V0TGluZU51bWJlcihvbGRMaW5lTnVtYmVyKTsKICAgICAgICAg
ICAgIHJldHVybiBwYXJzZVN0cmljdE9iamVjdExpdGVyYWwoY29udGV4dCk7CiAgICAgICAgIH0K
LSAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIHByb3BlcnR5LCB0YWlsKTsKKyAgICAgICAgdGFpbCA9IGNvbnRleHQuY3Jl
YXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCks
IHByb3BlcnR5LCB0YWlsKTsKICAgICB9CiAgICAgCiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJS
QUNFKTsKICAgICAKICAgICBtX25vbkxIU0NvdW50ID0gb2xkTm9uTEhTQ291bnQ7CiAgICAgCi0g
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBwcm9wZXJ0eUxpc3QpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExp
dGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgcHJvcGVydHlM
aXN0KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTEzMDQsNyArMTMy
Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlU3RyaWN0T2JqZWN0CiAKICAgICBpZiAobWF0Y2goQ0xPU0VCUkFD
RSkpIHsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVPYmpl
Y3RMaXRlcmFsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCkpOworICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2Vu
Q29sdW1uKCkpOwogICAgIH0KICAgICAKICAgICBUcmVlUHJvcGVydHkgcHJvcGVydHkgPSBwYXJz
ZVByb3BlcnR5PHRydWU+KGNvbnRleHQpOwpAQCAtMTMxNiw3ICsxMzM1LDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VTdHJpY3RPYmplY3QKICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCkKICAgICAg
ICAgb2JqZWN0VmFsaWRhdG9yLmFkZChjb250ZXh0LmdldE5hbWUocHJvcGVydHkpLmltcGwoKSwg
Y29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSk7CiAgICAgCi0gICAgVHJlZVByb3BlcnR5TGlzdCBw
cm9wZXJ0eUxpc3QgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBwcm9wZXJ0eSk7CisgICAgVHJlZVByb3BlcnR5TGlzdCBwcm9wZXJ0eUxpc3Qg
PSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0
b2tlbkNvbHVtbigpLCBwcm9wZXJ0eSk7CiAgICAgVHJlZVByb3BlcnR5TGlzdCB0YWlsID0gcHJv
cGVydHlMaXN0OwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAgbmV4dCgpOwpA
QCAtMTMzNCwxNCArMTM1MywxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0cmljdE9iamVjdAogICAgICAgICAg
ICAgICAgIHByb3BlcnR5RW50cnkuaXRlcmF0b3ItPnNlY29uZCB8PSBjb250ZXh0LmdldFR5cGUo
cHJvcGVydHkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHRhaWwgPSBjb250
ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBwcm9wZXJ0
eSwgdGFpbCk7CisgICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBwcm9wZXJ0eSwgdGFpbCk7CiAg
ICAgfQogICAgIAogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDRSk7CiAKICAgICBtX25vbkxI
U0NvdW50ID0gb2xkTm9uTEhTQ291bnQ7CiAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVPYmpl
Y3RMaXRlcmFsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5TGlzdCk7CisgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCB0b2tlbkNvbHVtbigpLCBwcm9wZXJ0eUxpc3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgpAQCAtMTM1OCw3ICsxMzc3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJheUxpdGVy
YWwKICAgICB9CiAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0tFVCkpIHsKICAgICAgICAgbmV4dChU
cmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUFycmF5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGVsaXNpb25zKTsKKyAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9r
ZW5Db2x1bW4oKSwgZWxpc2lvbnMpOwogICAgIH0KICAgICAKICAgICBUcmVlRXhwcmVzc2lvbiBl
bGVtID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTEzNzcsNyArMTM5
Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlQXJyYXlMaXRlcmFsCiAgICAgICAgIAogICAgICAgICBpZiAobWF0
Y2goQ0xPU0VCUkFDS0VUKSkgewogICAgICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1
aWxkU3RyaW5ncyk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCBlbGlzaW9ucywgZWxlbWVudExpc3QpOworICAgICAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
dG9rZW5Db2x1bW4oKSwgZWxpc2lvbnMsIGVsZW1lbnRMaXN0KTsKICAgICAgICAgfQogICAgICAg
ICBUcmVlRXhwcmVzc2lvbiBlbGVtID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0
KTsKICAgICAgICAgZmFpbElmRmFsc2UoZWxlbSk7CkBAIC0xMzg4LDcgKzE0MDcsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUFycmF5TGl0ZXJhbAogICAgIAogICAgIG1fbm9uTEhTQ291bnQgPSBvbGROb25MSFND
b3VudDsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBlbGVtZW50TGlzdCk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJy
YXkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZWxlbWVudExpc3Qp
OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMTQxMyw3ICsxNDMyLDcg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmUKICAgICB9CiAgICAgY2FzZSBUSElTVE9LRU46IHsK
ICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC50aGlzRXhwcihtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQudGhpc0V4cHIobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSk7CiAgICAgfQogICAgIGNhc2Ug
SURFTlQ6IHsKICAgICAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOwpAQCAtMTQyMSwyOSAr
MTQ0MCwyOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHByZQogICAgICAgICBuZXh0KCk7CiAgICAg
ICAgIGN1cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwgbV9nbG9iYWxEYXRhLT5wcm9w
ZXJ0eU5hbWVzLT5ldmFsID09ICppZGVudCk7CiAgICAgICAgIG1fbGFzdElkZW50aWZpZXIgPSBp
ZGVudDsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmVzb2x2ZShtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBpZGVudCwgc3RhcnQpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVSZXNvbHZlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGlkZW50
LCBzdGFydCk7CiAgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7CiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIG5leHQoKTsKLSAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlU3RyaW5nKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGlkZW50KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlU3RyaW5nKG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGlkZW50KTsKICAgICB9CiAgICAgY2Fz
ZSBOVU1CRVI6IHsKICAgICAgICAgZG91YmxlIGQgPSBtX3Rva2VuLm1fZGF0YS5kb3VibGVWYWx1
ZTsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVOdW1iZXJF
eHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGQpOworICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVOdW1iZXJFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1u
KCksIGQpOwogICAgIH0KICAgICBjYXNlIE5VTExUT0tFTjogewogICAgICAgICBuZXh0KCk7Ci0g
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU51bGwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU51bGwobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgdG9rZW5Db2x1bW4oKSk7CiAgICAgfQogICAgIGNhc2UgVFJVRVRPS0VOOiB7CiAg
ICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQm9vbGVhbihtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlQm9vbGVhbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCB0cnVl
KTsKICAgICB9CiAgICAgY2FzZSBGQUxTRVRPS0VOOiB7CiAgICAgICAgIG5leHQoKTsKLSAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQm9vbGVhbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCBmYWxzZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJvb2xlYW4obV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZmFsc2UpOwogICAgIH0KICAgICBjYXNl
IERJVkVRVUFMOgogICAgIGNhc2UgRElWSURFOiB7CkBAIC0xNDU3LDcgKzE0NzYsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVByaW1hcnlFeHByZQogICAgICAgICAKICAgICAgICAgaW50IHN0YXJ0ID0gdG9rZW5T
dGFydCgpOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIFRyZWVFeHByZXNzaW9uIHJlID0gY29u
dGV4dC5jcmVhdGVSZWdFeHAobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgKnBhdHRlcm4sICpm
bGFncywgc3RhcnQpOworICAgICAgICBUcmVlRXhwcmVzc2lvbiByZSA9IGNvbnRleHQuY3JlYXRl
UmVnRXhwKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksICpwYXR0ZXJu
LCAqZmxhZ3MsIHN0YXJ0KTsKICAgICAgICAgaWYgKCFyZSkgewogICAgICAgICAgICAgY29uc3Qg
Y2hhciogeWFyckVycm9yTXNnID0gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi0+dXN0cmluZygp
KTsKICAgICAgICAgICAgIEFTU0VSVCghbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkpOwpAQCAtMTQ4
MSwxMyArMTUwMCwxMyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVBcmd1bWVu
dHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJndW1lbnRzKFRyZQogICAgIFRyZWVFeHByZXNz
aW9uIGZpcnN0QXJnID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBm
YWlsSWZGYWxzZShmaXJzdEFyZyk7CiAgICAgCi0gICAgVHJlZUFyZ3VtZW50c0xpc3QgYXJnTGlz
dCA9IGNvbnRleHQuY3JlYXRlQXJndW1lbnRzTGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCBmaXJzdEFyZyk7CisgICAgVHJlZUFyZ3VtZW50c0xpc3QgYXJnTGlzdCA9IGNvbnRleHQuY3Jl
YXRlQXJndW1lbnRzTGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigp
LCBmaXJzdEFyZyk7CiAgICAgVHJlZUFyZ3VtZW50c0xpc3QgdGFpbCA9IGFyZ0xpc3Q7CiAgICAg
d2hpbGUgKG1hdGNoKENPTU1BKSkgewogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVp
bGRTdHJpbmdzKTsKICAgICAgICAgVHJlZUV4cHJlc3Npb24gYXJnID0gcGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UoYXJnKTsKLSAgICAgICAg
dGFpbCA9IGNvbnRleHQuY3JlYXRlQXJndW1lbnRzTGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCB0YWlsLCBhcmcpOworICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVBcmd1bWVudHNM
aXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHRhaWwsIGFyZyk7
CiAgICAgfQogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlQXJndW1lbnRzKGFyZ0xpc3QpOwpAQCAtMTUxNCw3ICsxNTMzLDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgaW50IGJvZHlTdGFydExpbmUgPSAwOwogICAgICAg
ICBuZXh0KCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbzxGdW5jdGlv
bk5vUmVxdWlyZW1lbnRzLCBmYWxzZT4oY29udGV4dCwgbmFtZSwgcGFyYW1ldGVycywgYm9keSwg
b3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSkpOwotICAgICAgICBi
YXNlID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBi
b2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKKyAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRl
RnVuY3Rpb25FeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIG5h
bWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0
YXJ0TGluZSwgbV9sYXN0TGluZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGJhc2UgPSBwYXJzZVBy
aW1hcnlFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIApAQCAtMTUyOSw3ICsxNTQ4LDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgIGludCBpbml0aWFsQXNzaWdubWVudHMg
PSBtX2Fzc2lnbm1lbnRDb3VudDsKICAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIHByb3BlcnR5
ID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICAgICAgZmFpbElmRmFsc2UocHJv
cGVydHkpOwotICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlQnJhY2tldEFjY2Vzcyht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBwcm9wZXJ0eSwgaW5pdGlhbEFzc2lnbm1l
bnRzICE9IG1fYXNzaWdubWVudENvdW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQs
IHRva2VuRW5kKCkpOworICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlQnJhY2tldEFj
Y2VzcyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBiYXNlLCBwcm9w
ZXJ0eSwgaW5pdGlhbEFzc2lnbm1lbnRzICE9IG1fYXNzaWdubWVudENvdW50LCBleHByZXNzaW9u
U3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kKCkpOwogICAgICAgICAgICAgY29uc3VtZU9y
RmFpbChDTE9TRUJSQUNLRVQpOwogICAgICAgICAgICAgbV9ub25MSFNDb3VudCA9IG5vbkxIU0Nv
dW50OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTQyLDEyICsxNTYxLDEyIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICAgICAgaW50IGV4cHJFbmQgPSBsYXN0VG9rZW5F
bmQoKTsKICAgICAgICAgICAgICAgICBUcmVlQXJndW1lbnRzIGFyZ3VtZW50cyA9IHBhcnNlQXJn
dW1lbnRzKGNvbnRleHQpOwogICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGFyZ3VtZW50cyk7
Ci0gICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3RXhwcihtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCBiYXNlLCBhcmd1bWVudHMsIHN0YXJ0LCBleHByRW5kLCBsYXN0VG9r
ZW5FbmQoKSk7ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVh
dGVOZXdFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGJhc2Us
IGFyZ3VtZW50cywgc3RhcnQsIGV4cHJFbmQsIGxhc3RUb2tlbkVuZCgpKTsKICAgICAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaW50IGV4cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5F
bmQoKTsKICAgICAgICAgICAgICAgICBUcmVlQXJndW1lbnRzIGFyZ3VtZW50cyA9IHBhcnNlQXJn
dW1lbnRzKGNvbnRleHQpOwogICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGFyZ3VtZW50cyk7
Ci0gICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQubWFrZUZ1bmN0aW9uQ2FsbE5vZGUobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgYmFzZSwgYXJndW1lbnRzLCBleHByZXNzaW9uU3RhcnQs
IGV4cHJlc3Npb25FbmQsIGxhc3RUb2tlbkVuZCgpKTsKKyAgICAgICAgICAgICAgICBiYXNlID0g
Y29udGV4dC5tYWtlRnVuY3Rpb25DYWxsTm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0
b2tlbkNvbHVtbigpLCBiYXNlLCBhcmd1bWVudHMsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lv
bkVuZCwgbGFzdFRva2VuRW5kKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9ub25M
SFNDb3VudCA9IG5vbkxIU0NvdW50OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTU3LDcgKzE1
NzYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgaW50IGV4cHJlc3Np
b25FbmQgPSBsYXN0VG9rZW5FbmQoKTsKICAgICAgICAgICAgIG5leHRFeHBlY3RJZGVudGlmaWVy
KExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzIHwgVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZEtl
eXdvcmRzKTsKICAgICAgICAgICAgIG1hdGNoT3JGYWlsKElERU5UKTsKLSAgICAgICAgICAgIGJh
c2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2VzcyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBi
YXNlLCBtX3Rva2VuLm1fZGF0YS5pZGVudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5k
LCB0b2tlbkVuZCgpKTsKKyAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2Vz
cyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBiYXNlLCBtX3Rva2Vu
Lm1fZGF0YS5pZGVudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZCgp
KTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC0xNTY3LDcgKzE1ODYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgIH0KIGVuZE1l
bWJlckV4cHJlc3Npb246CiAgICAgd2hpbGUgKG5ld0NvdW50LS0pCi0gICAgICAgIGJhc2UgPSBj
b250ZXh0LmNyZWF0ZU5ld0V4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgYmFzZSwgc3Rh
cnQsIGxhc3RUb2tlbkVuZCgpKTsKKyAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3RXhw
cihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBiYXNlLCBzdGFydCwg
bGFzdFRva2VuRW5kKCkpOwogICAgIHJldHVybiBiYXNlOwogfQogCkBAIC0xNjAwLDcgKzE2MTks
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgICAgIG1fbm9uTEhTQ291bnQrKzsKLSAgICAgICAgY29udGV4dC5hcHBlbmRVbmFyeVRva2Vu
KHRva2VuU3RhY2tEZXB0aCwgbV90b2tlbi5tX3R5cGUsIHRva2VuU3RhcnQoKSk7CisgICAgICAg
IGNvbnRleHQuYXBwZW5kVW5hcnlUb2tlbih0b2tlblN0YWNrRGVwdGgsIG1fdG9rZW4ubV90eXBl
LCB0b2tlbkNvbHVtbigpKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBtX25vblRyaXZpYWxF
eHByZXNzaW9uQ291bnQrKzsKICAgICB9CkBAIC0xNjE3LDcgKzE2MzYsNyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZVVuYXJ5RXhwcmVzcwogICAgIGNhc2UgUExVU1BMVVM6CiAgICAgICAgIG1fbm9uVHJpdmlhbEV4
cHJlc3Npb25Db3VudCsrOwogICAgICAgICBtX25vbkxIU0NvdW50Kys7Ci0gICAgICAgIGV4cHIg
PSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHBy
LCBPcFBsdXNQbHVzLCBzdWJFeHByU3RhcnQsIGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpKTsK
KyAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGV4cHIsIE9wUGx1c1BsdXMsIHN1YkV4cHJTdGFydCwg
bGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOwogICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsr
OwogICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3RXaXRoTmFtZUFuZE1lc3NhZ2UoaXNFdmFsT3JB
cmd1bWVudHMsICInIiwgbV9sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAiJyBjYW5ub3QgYmUgbW9k
aWZpZWQgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KHJlcXVp
cmVzTEV4cHIpOwpAQCAtMTYyNiw3ICsxNjQ1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MK
ICAgICBjYXNlIE1JTlVTTUlOVVM6CiAgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3Vu
dCsrOwogICAgICAgICBtX25vbkxIU0NvdW50Kys7Ci0gICAgICAgIGV4cHIgPSBjb250ZXh0Lm1h
a2VQb3N0Zml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBPcE1pbnVzTWlu
dXMsIHN1YkV4cHJTdGFydCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOworICAgICAgICBl
eHByID0gY29udGV4dC5tYWtlUG9zdGZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
dG9rZW5Db2x1bW4oKSwgZXhwciwgT3BNaW51c01pbnVzLCBzdWJFeHByU3RhcnQsIGxhc3RUb2tl
bkVuZCgpLCB0b2tlbkVuZCgpKTsKICAgICAgICAgbV9hc3NpZ25tZW50Q291bnQrKzsKICAgICAg
ICAgZmFpbElmVHJ1ZUlmU3RyaWN0V2l0aE5hbWVBbmRNZXNzYWdlKGlzRXZhbE9yQXJndW1lbnRz
LCAiJyIsIG1fbGFzdElkZW50aWZpZXItPmltcGwoKSwgIicgY2Fubm90IGJlIG1vZGlmaWVkIGlu
IHN0cmljdCBtb2RlIik7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChyZXF1aXJlc0xFeHBy
KTsKQEAgLTE2NDQsMzYgKzE2NjMsMzYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICB3
aGlsZSAodG9rZW5TdGFja0RlcHRoKSB7CiAgICAgICAgIHN3aXRjaCAoY29udGV4dC51bmFyeVRv
a2VuU3RhY2tMYXN0VHlwZSh0b2tlblN0YWNrRGVwdGgpKSB7CiAgICAgICAgIGNhc2UgRVhDTEFN
QVRJT046Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVMb2dpY2FsTm90KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQu
Y3JlYXRlTG9naWNhbE5vdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigp
LCBleHByKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRJTERFOgotICAgICAg
ICAgICAgZXhwciA9IGNvbnRleHQubWFrZUJpdHdpc2VOb3ROb2RlKG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIGV4cHIpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZUJpdHdpc2VO
b3ROb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGV4cHIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTUlOVVM6Ci0gICAgICAgICAgICBleHBy
ID0gY29udGV4dC5tYWtlTmVnYXRlTm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHBy
KTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VOZWdhdGVOb2RlKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgUExVUzoKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0ZVVu
YXJ5UGx1cyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByKTsKKyAgICAgICAgICAgIGV4
cHIgPSBjb250ZXh0LmNyZWF0ZVVuYXJ5UGx1cyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0
b2tlbkNvbHVtbigpLCBleHByKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBM
VVNQTFVTOgogICAgICAgICBjYXNlIEFVVE9QTFVTUExVUzoKLSAgICAgICAgICAgIGV4cHIgPSBj
b250ZXh0Lm1ha2VQcmVmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIE9w
UGx1c1BsdXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0
aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5t
YWtlUHJlZml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBl
eHByLCBPcFBsdXNQbHVzLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0
YWNrRGVwdGgpLCBzdWJFeHByU3RhcnQgKyAxLCBlbmQpOwogICAgICAgICAgICAgbV9hc3NpZ25t
ZW50Q291bnQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1JTlVTTUlOVVM6
CiAgICAgICAgIGNhc2UgQVVUT01JTlVTTUlOVVM6Ci0gICAgICAgICAgICBleHByID0gY29udGV4
dC5tYWtlUHJlZml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBPcE1pbnVz
TWludXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCks
IHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtl
UHJlZml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBleHBy
LCBPcE1pbnVzTWludXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3Rh
Y2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CiAgICAgICAgICAgICBtX2Fzc2lnbm1l
bnRDb3VudCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVFlQRU9GOgotICAg
ICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVR5cGVPZk5vZGUobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgZXhwcik7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlVHlwZU9mTm9k
ZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBleHByKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZPSURUT0tFTjoKLSAgICAgICAgICAgIGV4cHIg
PSBjb250ZXh0LmNyZWF0ZVZvaWQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7Cisg
ICAgICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVWb2lkKG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIHRva2VuQ29sdW1uKCksIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgREVMRVRFVE9LRU46CiAgICAgICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3RXaXRoTmFt
ZUFuZE1lc3NhZ2UoY29udGV4dC5pc1Jlc29sdmUoZXhwciksICJDYW5ub3QgZGVsZXRlIHVucXVh
bGlmaWVkIHByb3BlcnR5IiwgbV9sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAiaW4gc3RyaWN0IG1v
ZGUiKTsKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VEZWxldGVOb2RlKG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0
KHRva2VuU3RhY2tEZXB0aCksIGVuZCwgZW5kKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0
Lm1ha2VEZWxldGVOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCks
IGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCks
IGVuZCwgZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgc29tZXRoaW5nIGhhcyBnb25lIGhvcnJpYmx5IGhvcnJp
Ymx5IHdyb25nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBjMmExMWQ2
NjViNzkxM2VjNWY2NDMxYzA2MzZjMWE4YTZkZDZhMDE2Li44ZTZjMTBiODU1NzdkZjBiNzBjNmI4
YWM3NDI4NWQ3MGE2OGU1MzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
QEAgLTU1NCw3ICs1NTQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9p
bmZvLmVuZE9mZnNldDsKICAgICB9CiAgICAgCi0gICAgY29uc3QgY2hhciogZ2V0VG9rZW5OYW1l
KEpTVG9rZW5UeXBlIHRvaykgCisgICAgQUxXQVlTX0lOTElORSBpbnQgdG9rZW5Db2x1bW4oKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9pbmZvLmNvbHVtbjsKKyAgICB9CisKKyAg
ICBjb25zdCBjaGFyKiBnZXRUb2tlbk5hbWUoSlNUb2tlblR5cGUgdG9rKQogICAgIHsKICAgICAg
ICAgc3dpdGNoICh0b2spIHsKICAgICAgICAgY2FzZSBOVUxMVE9LRU46IApAQCAtMTAwNSw2ICsx
MDEwLDcgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2Uo
SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmoKICAgICBpZiAobV9zb3VyY2VFbGVtZW50
cykgewogICAgICAgICByZXN1bHQgPSBQYXJzZWROb2RlOjpjcmVhdGUoJmxleGljYWxHbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2xleGVyLT5jdXJyZW50Q29sdW1uTnVtYmVyKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX3NvdXJjZUVsZW1lbnRzLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV92YXJEZWNsYXJhdGlvbnMgPyAmbV92YXJEZWNsYXJhdGlvbnMt
PmRhdGEgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mdW5jRGVj
bGFyYXRpb25zID8gJm1fZnVuY0RlY2xhcmF0aW9ucy0+ZGF0YSA6IDAsCkBAIC0xMDEyLDcgKzEw
MTgsNyBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShK
U0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iagogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKm1fc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9mZWF0dXJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbnVt
Q29uc3RhbnRzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2MobV9zb3VyY2UtPmZpcnN0TGluZSgp
LCBtX2xhc3RMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2MobV9zb3VyY2UtPmZpcnN0TGlu
ZSgpLCBtX2xhc3RMaW5lLCBtX2xleGVyLT5jdXJyZW50Q29sdW1uTnVtYmVyKCkpOwogICAgIH0g
ZWxzZSBpZiAobGV4aWNhbEdsb2JhbE9iamVjdCkgewogICAgICAgICAvLyBXZSBjYW4gbmV2ZXIg
c2VlIGEgc3ludGF4IGVycm9yIHdoZW4gcmVwYXJzaW5nIGEgZnVuY3Rpb24sIHNpbmNlIHdlIHNo
b3VsZCBoYXZlCiAgICAgICAgIC8vIHJlcG9ydGVkIHRoZSBlcnJvciB3aGVuIHBhcnNpbmcgdGhl
IGNvbnRhaW5pbmcgcHJvZ3JhbSBvciBldmFsIGNvZGUuIFNvIGlmIHdlJ3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAppbmRleCBhMWVhNzUxYWMyMGE3OTJm
ZjRjNWU2MjFhMDFiYzc3NDllYTNhOWJmLi42M2IzZmI4MWU5ZDM0NzBhMzQ3ZWIyMzZkMzkwZDMx
YjI1ZjBjNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
clRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5z
LmgKQEAgLTE0MSwxMCArMTQxLDExIEBAIHVuaW9uIEpTVG9rZW5EYXRhIHsKIH07CiAKIHN0cnVj
dCBKU1Rva2VuSW5mbyB7Ci0gICAgSlNUb2tlbkluZm8oKSA6IGxpbmUoMCkgeyB9CisgICAgSlNU
b2tlbkluZm8oKSA6IGxpbmUoMCksIGNvbHVtbigwKSB7IH0KICAgICBpbnQgbGluZTsKICAgICBp
bnQgc3RhcnRPZmZzZXQ7CiAgICAgaW50IGVuZE9mZnNldDsKKyAgICBpbnQgY29sdW1uOwogfTsK
IAogc3RydWN0IEpTVG9rZW4gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaAppbmRleCBjMmM5Mzc1NmRlMDNhYmNhMjk1ZGUxM2FjOGVlMTM4MWM3ZDQwYzQ4
Li5jMzNiYTA2Y2M0MGE0MGZlYmVmMDg5M2Y1NGM5MTllMGU3YzhhM2UwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtMTE5LDQyICsxMTksNDIg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBEb250QnVpbGRTdHJpbmdzID0g
TGV4ZXJGbGFnc0RvbnRCdWlsZFN0cmluZ3M7CiAKICAgICBpbnQgY3JlYXRlU291cmNlRWxlbWVu
dHMoKSB7IHJldHVybiAxOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZUZ1bmN0aW9uQ2FsbE5v
ZGUoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQ2FsbEV4cHI7IH0KKyAg
ICBFeHByZXNzaW9uVHlwZSBtYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIENhbGxFeHByOyB9CiAgICAgdm9pZCBhcHBlbmRUb0Nv
bW1hKEV4cHJlc3Npb25UeXBlJiBiYXNlLCBFeHByZXNzaW9uVHlwZSByaWdodCkgeyBiYXNlID0g
cmlnaHQ7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVDb21tYUV4cHIoaW50LCBFeHByZXNz
aW9uVHlwZSwgRXhwcmVzc2lvblR5cGUgcmlnaHQpIHsgcmV0dXJuIHJpZ2h0OyB9Ci0gICAgRXhw
cmVzc2lvblR5cGUgbWFrZUFzc2lnbk5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3Is
IEV4cHJlc3Npb25UeXBlLCBib29sLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3Np
Z25tZW50RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQcmVmaXhOb2RlKGludCwgRXhw
cmVzc2lvblR5cGUsIE9wZXJhdG9yLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQcmVFeHByOyB9
Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZVBvc3RmaXhOb2RlKGludCwgRXhwcmVzc2lvblR5cGUs
IE9wZXJhdG9yLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQb3N0RXhwcjsgfQotICAgIEV4cHJl
c3Npb25UeXBlIG1ha2VUeXBlT2ZOb2RlKGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFR5
cGVvZkV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlRGVsZXRlTm9kZShpbnQsIEV4cHJl
c3Npb25UeXBlLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEZWxldGVFeHByOyB9Ci0gICAgRXhw
cmVzc2lvblR5cGUgbWFrZU5lZ2F0ZU5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4g
VW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZUJpdHdpc2VOb3ROb2RlKGludCwg
RXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZUxvZ2ljYWxOb3QoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHBy
OyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlVW5hcnlQbHVzKGludCwgRXhwcmVzc2lvblR5
cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVZvaWQo
aW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lv
blR5cGUgdGhpc0V4cHIoaW50KSB7IHJldHVybiBUaGlzRXhwcjsgfQotICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZVJlc29sdmUoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiBS
ZXNvbHZlRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVjdExpdGVyYWwoaW50
KSB7IHJldHVybiBPYmplY3RMaXRlcmFsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZUNvbW1hRXhwcihpbnQsIGludCwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlIHJpZ2h0
KSB7IHJldHVybiByaWdodDsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VBc3NpZ25Ob2RlKGlu
dCwgaW50LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIEV4cHJlc3Npb25UeXBlLCBib29sLCBi
b29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQorICAgIEV4cHJl
c3Npb25UeXBlIG1ha2VQcmVmaXhOb2RlKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0
b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFByZUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlw
ZSBtYWtlUG9zdGZpeE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gUG9zdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtl
VHlwZU9mTm9kZShpbnQsIGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFR5cGVvZkV4cHI7
IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlRGVsZXRlTm9kZShpbnQsIGludCwgRXhwcmVzc2lv
blR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERlbGV0ZUV4cHI7IH0KKyAgICBFeHByZXNz
aW9uVHlwZSBtYWtlTmVnYXRlTm9kZShpbnQsIGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJu
IFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VCaXR3aXNlTm90Tm9kZShpbnQs
IGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZUxvZ2ljYWxOb3QoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVy
biBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVVbmFyeVBsdXMoaW50LCBp
bnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVWb2lkKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlF
eHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgdGhpc0V4cHIoaW50LCBpbnQpIHsgcmV0dXJuIFRo
aXNFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVzb2x2ZShpbnQsIGludCwgY29u
c3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gUmVzb2x2ZUV4cHI7IH0KICAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVPYmplY3RMaXRlcmFsKGludCwgaW50KSB7IHJldHVybiBPYmplY3RMaXRl
cmFsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5KGludCwgaW50KSB7IHJl
dHVybiBBcnJheUxpdGVyYWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlT2JqZWN0
TGl0ZXJhbChpbnQsIGludCwgaW50KSB7IHJldHVybiBPYmplY3RMaXRlcmFsRXhwcjsgfQogICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFycmF5
TGl0ZXJhbEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdW1iZXJFeHByKGludCwg
ZG91YmxlKSB7IHJldHVybiBOdW1iZXJFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
U3RyaW5nKGludCwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIFN0cmluZ0V4cHI7IH0KLSAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGludCwgYm9vbCkgeyByZXR1cm4gQm9vbEV4
cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGludCkgeyByZXR1cm4gTnVsbEV4
cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKGludCwgRXhwcmVz
c2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBC
cmFja2V0RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2VzcyhpbnQsIEV4
cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
RG90RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChpbnQsIGNvbnN0IElk
ZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImLCBpbnQpIHsgcmV0dXJuIFlhcnI6
OmNoZWNrU3ludGF4KHBhdHRlcm4udXN0cmluZygpKSA/IDAgOiBSZWdFeHBFeHByOyB9Ci0gICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihpbnQsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVOZXdFeHByKGludCwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHBy
OyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29uZGl0aW9uYWxFeHByKGludCwgRXhwcmVz
c2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gQ29uZGl0
aW9uYWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXNzaWduUmVzb2x2ZShpbnQs
IGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5j
dGlvbkV4cHIoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9uQm9k
eShpbnQsIGJvb2wpIHsgcmV0dXJuIDE7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJh
eShpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KKyAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVOdW1iZXJFeHByKGludCwgaW50LCBkb3VibGUpIHsgcmV0dXJu
IE51bWJlckV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVTdHJpbmcoaW50LCBpbnQs
IGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVybiBTdHJpbmdFeHByOyB9CisgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlQm9vbGVhbihpbnQsIGludCwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0K
KyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGludCwgaW50KSB7IHJldHVybiBOdWxsRXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoaW50LCBpbnQsIEV4
cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gQnJhY2tldEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nlc3MoaW50
LCBpbnQsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gRG90RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChpbnQs
IGludCwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYsIGludCkg
eyByZXR1cm4gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi51c3RyaW5nKCkpID8gMCA6IFJlZ0V4
cEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGludCwgaW50LCBFeHBy
ZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CisgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihpbnQsIGludCwgRXhwcmVzc2lvblR5cGUsIGlu
dCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29u
ZGl0aW9uYWxFeHByKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIEV4
cHJlc3Npb25UeXBlKSB7IHJldHVybiBDb25kaXRpb25hbEV4cHI7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVBc3NpZ25SZXNvbHZlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRXhw
cmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHBy
OyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGludCwgaW50LCBjb25z
dCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRnVu
Y3Rpb25FeHByOyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uQm9keShpbnQsIGludCwgYm9vbCkg
eyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiAxOyB9CiAg
ICAgaW50IGNyZWF0ZUFyZ3VtZW50cyhpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRl
QXJndW1lbnRzTGlzdChpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVBcmd1
bWVudHNMaXN0KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQXJn
dW1lbnRzTGlzdChpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICB0ZW1wbGF0
ZSA8Ym9vbCBjb21wbGV0ZT4gUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmll
ciogbmFtZSwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIGlm
ICghY29tcGxldGUpCkBAIC0xNjgsOCArMTY4LDggQEAgcHVibGljOgogICAgICAgICAgICAgcmV0
dXJuIFByb3BlcnR5KHR5cGUpOwogICAgICAgICByZXR1cm4gUHJvcGVydHkoJmdsb2JhbERhdGEt
PnBhcnNlckFyZW5hLT5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIoZ2xv
YmFsRGF0YSwgbmFtZSksIHR5cGUpOwogICAgIH0KLSAgICBpbnQgY3JlYXRlUHJvcGVydHlMaXN0
KGludCwgUHJvcGVydHkpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlUHJvcGVydHlMaXN0
KGludCwgUHJvcGVydHksIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVQcm9wZXJ0
eUxpc3QoaW50LCBpbnQsIFByb3BlcnR5KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVBy
b3BlcnR5TGlzdChpbnQsIGludCwgUHJvcGVydHksIGludCkgeyByZXR1cm4gMTsgfQogICAgIGlu
dCBjcmVhdGVFbGVtZW50TGlzdChpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVh
dGVFbGVtZW50TGlzdChpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0
ZUZvcm1hbFBhcmFtZXRlckxpc3QoY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIDE7IH0KQEAg
LTE3Nyw0MCArMTc3LDQwIEBAIHB1YmxpYzoKICAgICBpbnQgY3JlYXRlQ2xhdXNlKGludCwgaW50
KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUNsYXVzZUxpc3QoaW50KSB7IHJldHVybiAx
OyB9CiAgICAgaW50IGNyZWF0ZUNsYXVzZUxpc3QoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAg
ICB2b2lkIHNldFVzZXNBcmd1bWVudHMoaW50KSB7IH0KLSAgICBpbnQgY3JlYXRlRnVuY0RlY2xT
dGF0ZW1lbnQoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCbG9ja1N0YXRlbWVudChpbnQsIGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRXhwclN0YXRlbWVudChp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlSWZTdGF0ZW1l
bnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICB2b2lkIHNldFVz
ZXNBcmd1bWVudHMoaW50LCBpbnQpIHsgfQorICAgIGludCBjcmVhdGVGdW5jRGVjbFN0YXRlbWVu
dChpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQmxvY2tTdGF0ZW1lbnQoaW50LCBpbnQs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRXhwclN0YXRlbWVu
dChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVJ
ZlN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0g
ICAgaW50IGNyZWF0ZUZvckxvb3AoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwg
aW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUZvckluTG9vcChpbnQsIGNvbnN0IElk
ZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRm9ySW5Mb29wKGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3Jl
YXRlRW1wdHlTdGF0ZW1lbnQoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVZhclN0
YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRl
UmV0dXJuU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KLSAgICBpbnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50LCBjb25zdCBJ
ZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNy
ZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAx
OyB9Ci0gICAgaW50IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGludCwgY29uc3QgSWRlbnRpZmll
ciosIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVUcnlT
dGF0ZW1lbnQoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlU3dpdGNoU3RhdGVtZW50KGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVXaGls
ZVN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGlu
dCBjcmVhdGVXaXRoU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGludCwgaW50LCBp
bnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUxhYmVsU3RhdGVtZW50
KGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAg
ICBpbnQgY3JlYXRlVGhyb3dTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVEZWJ1Z2dlcihpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUNvbnN0U3RhdGVtZW50KGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQotICAgIGludCBhcHBlbmRDb25zdERlY2woaW50LCBpbnQsIGNvbnN0
IElkZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJp
Y3Q+IFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoaW50LCBQcm9wZXJ0eU5v
ZGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCkKKyAgICBpbnQgY3JlYXRlSWZTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUZvckxvb3AoaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0K
KyAgICBpbnQgY3JlYXRlRm9ySW5Mb29wKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAx
OyB9CisgICAgaW50IGNyZWF0ZUZvckluTG9vcChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRW1wdHlT
dGF0ZW1lbnQoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlVmFyU3RhdGVt
ZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0
ZVJldHVyblN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChp
bnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQorICAgIGludCBjcmVhdGVDb250aW51ZVN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50
KGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9CisgICAgaW50IGNyZWF0ZVRyeVN0YXRlbWVudChpbnQsIGludCwgaW50LCBjb25zdCBJ
ZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNy
ZWF0ZVN3aXRjaFN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVXaGlsZVN0YXRlbWVudChpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVdpdGhTdGF0
ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KKyAgICBpbnQgY3JlYXRlRG9XaGlsZVN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUxhYmVsU3RhdGVtZW50KGludCwg
aW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAg
IGludCBjcmVhdGVUaHJvd1N0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRGVidWdnZXIoaW50LCBpbnQsIGludCwg
aW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUNvbnN0U3RhdGVtZW50KGludCwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGFwcGVuZENvbnN0RGVjbChp
bnQsIGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiAxOyB9CisgICAg
dGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3Bl
cnR5KGludCwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciog
bmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChuYW1lKTsKICAgICAgICAgaWYgKCFzdHJpY3QpCiAgICAgICAgICAgICByZXR1cm4gUHJvcGVy
dHkodHlwZSk7CiAgICAgICAgIHJldHVybiBQcm9wZXJ0eShuYW1lLCB0eXBlKTsKICAgICB9Ci0g
ICAgdGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclBy
b3BlcnR5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUg
dHlwZSwgZG91YmxlIG5hbWUsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpCisgICAgdGVt
cGxhdGUgPGJvb2wgc3RyaWN0PiBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50LCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0
eXBlLCBkb3VibGUgbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkKICAgICB7CiAg
ICAgICAgIGlmICghc3RyaWN0KQogICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwpA
QCAtMjE5LDcgKzIxOSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kU3RhdGVtZW50KGlu
dCwgaW50KSB7IH0KICAgICB2b2lkIGFkZFZhcihjb25zdCBJZGVudGlmaWVyKiwgYm9vbCkgeyB9
Ci0gICAgaW50IGNvbWJpbmVDb21tYU5vZGVzKGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0K
KyAgICBpbnQgY29tYmluZUNvbW1hTm9kZXMoaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAx
OyB9CiAgICAgaW50IGV2YWxDb3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2b2lkIGFw
cGVuZEJpbmFyeUV4cHJlc3Npb25JbmZvKGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCBleHBy
LCBpbnQsIGludCwgaW50LCBib29sKQogICAgIHsKQEAgLTIzNSw3ICsyMzUsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBvcGVyYXRvclN0YWNrSGFzSGlnaGVyUHJlY2VkZW5jZShpbnQmLCBpbnQpIHsg
cmV0dXJuIHRydWU7IH0KICAgICBCaW5hcnlPcGVyYW5kIGdldEZyb21PcGVyYW5kU3RhY2soaW50
KSB7IHJldHVybiBtX3RvcEJpbmFyeUV4cHI7IH0KICAgICB2b2lkIHNocmlua09wZXJhbmRTdGFj
a0J5KGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCBhbW91bnQpIHsgb3BlcmFuZFN0YWNrRGVw
dGggLT0gYW1vdW50OyB9Ci0gICAgdm9pZCBhcHBlbmRCaW5hcnlPcGVyYXRpb24oaW50LCBpbnQm
IG9wZXJhbmRTdGFja0RlcHRoLCBpbnQmLCBCaW5hcnlPcGVyYW5kLCBCaW5hcnlPcGVyYW5kKSB7
IG9wZXJhbmRTdGFja0RlcHRoKys7IH0KKyAgICB2b2lkIGFwcGVuZEJpbmFyeU9wZXJhdGlvbihp
bnQsIGludCwgaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50JiwgQmluYXJ5T3BlcmFuZCwgQmlu
YXJ5T3BlcmFuZCkgeyBvcGVyYW5kU3RhY2tEZXB0aCsrOyB9CiAgICAgdm9pZCBvcGVyYXRvclN0
YWNrQXBwZW5kKGludCYgb3BlcmF0b3JTdGFja0RlcHRoLCBpbnQsIGludCkgeyBvcGVyYXRvclN0
YWNrRGVwdGgrKzsgfQogICAgIGludCBwb3BPcGVyYW5kU3RhY2soaW50JikgeyBpbnQgcmVzID0g
bV90b3BCaW5hcnlFeHByOyBtX3RvcEJpbmFyeUV4cHIgPSAwOyByZXR1cm4gcmVzOyB9CiAgICAg
CkBAIC0yNDUsNyArMjQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5hcnlUb2tlblN0YWNrUmVt
b3ZlTGFzdChpbnQmIHN0YWNrRGVwdGgpIHsgc3RhY2tEZXB0aCA9IDA7IH0KICAgICAKICAgICB2
b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQsIGludCwgaW50LCBpbnQsIGludCwgT3BlcmF0
b3IpIHsgfQotICAgIGludCBjcmVhdGVBc3NpZ25tZW50KGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0
ZUFzc2lnbm1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOyByZXR1cm4gMTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGdldE5hbWUo
Y29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7IEFTU0VSVChwcm9wZXJ0eS5uYW1lKTsg
cmV0dXJuICpwcm9wZXJ0eS5uYW1lOyB9CiAgICAgUHJvcGVydHlOb2RlOjpUeXBlIGdldFR5cGUo
Y29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eS50eXBlOyB9
CiAgICAgYm9vbCBpc1Jlc29sdmUoRXhwcmVzc2lvblR5cGUgZXhwcikgY29uc3QgeyByZXR1cm4g
ZXhwciA9PSBSZXNvbHZlRXhwciB8fCBleHByID09IFJlc29sdmVFdmFsRXhwcjsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGYy
MjI3Yzc0NWNjOGEwMWJkMzhlYThmNGQwYWJjNzUzOTNhYTAzOTguLmQzYTkyYTdjNDc1NzczNTFl
ZGIwYzA2ZmUyMTM4YjZjMzU5MDMxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTc1LDIwICs3NSwyOCBAQCBTdHJpbmcgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29u
c3QgU2NyaXB0QnJlYQogICAgIFNvdXJjZUlkVG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3IgaXQg
PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5maW5kKHNvdXJjZUlEVmFsdWUpOwogICAgIGlmIChp
dCA9PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKICAgICAgICAgaXQgPSBtX3NvdXJj
ZUlkVG9CcmVha3BvaW50cy5zZXQoc291cmNlSURWYWx1ZSwgTGluZVRvQnJlYWtwb2ludE1hcCgp
KS5pdGVyYXRvcjsKLSAgICBpZiAoaXQtPnNlY29uZC5jb250YWlucyhzY3JpcHRCcmVha3BvaW50
LmxpbmVOdW1iZXIgKyAxKSkKLSAgICAgICAgcmV0dXJuICIiOwotICAgIGl0LT5zZWNvbmQuc2V0
KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEsIHNjcmlwdEJyZWFrcG9pbnQpOworICAg
IExpbmVUb0JyZWFrcG9pbnRNYXA6Oml0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5maW5k
KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEpOworICAgIGlmIChicmVha3NJdCA9PSBp
dC0+c2Vjb25kLmVuZCgpKQorICAgICAgICBicmVha3NJdCA9IGl0LT5zZWNvbmQuc2V0KHNjcmlw
dEJyZWFrcG9pbnQubGluZU51bWJlciArIDEsIEJyZWFrcG9pbnRzSW5MaW5lKCkpLml0ZXJhdG9y
OworCisgICAgQnJlYWtwb2ludHNJbkxpbmUmIGJyZWFrc1ZlY3RvciA9IGJyZWFrc0l0LT5zZWNv
bmQ7CisgICAgdW5zaWduZWQgYnJlYWtzQ291bnQgPSBicmVha3NWZWN0b3Iuc2l6ZSgpOworICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBicmVha3NDb3VudDsgaSsrKSB7CisgICAgICAgIGlm
IChicmVha3NWZWN0b3IuYXQoaSkuY29sdW1uTnVtYmVyID09IHNjcmlwdEJyZWFrcG9pbnQuY29s
dW1uTnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuICIiOworICAgIH0KKyAgICBicmVha3NWZWN0
b3IuYXBwZW5kKHNjcmlwdEJyZWFrcG9pbnQpOworCiAgICAgKmFjdHVhbExpbmVOdW1iZXIgPSBz
Y3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXI7Ci0gICAgLy8gRklYTUUoV0s1MzAwMyk6IGltcGxl
bWVudCBzZXR0aW5nIGJyZWFrcG9pbnRzIGJ5IGxpbmU6Y29sdW1uLgotICAgICphY3R1YWxDb2x1
bW5OdW1iZXIgPSAwOwotICAgIHJldHVybiBzb3VyY2VJRCArICI6IiArIFN0cmluZzo6bnVtYmVy
KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcik7CisgICAgKmFjdHVhbENvbHVtbk51bWJlciA9
IHNjcmlwdEJyZWFrcG9pbnQuY29sdW1uTnVtYmVyOworICAgIHJldHVybiBzb3VyY2VJRCArICI6
IiArIFN0cmluZzo6bnVtYmVyKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcikgKyAiOiIgKyBT
dHJpbmc6Om51bWJlcihzY3JpcHRCcmVha3BvaW50LmNvbHVtbk51bWJlcik7CiB9CiAKIHZvaWQg
U2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3Bv
aW50SWQpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gdG9rZW5zOwogICAgIGJyZWFrcG9pbnRJZC5z
cGxpdCgiOiIsIHRva2Vucyk7Ci0gICAgaWYgKHRva2Vucy5zaXplKCkgIT0gMikKKyAgICBpZiAo
dG9rZW5zLnNpemUoKSAhPSAzKQogICAgICAgICByZXR1cm47CiAgICAgYm9vbCBzdWNjZXNzOwog
ICAgIGludHB0cl90IHNvdXJjZUlEVmFsdWUgPSB0b2tlbnNbMF0udG9JbnRQdHIoJnN1Y2Nlc3Mp
OwpAQCAtOTcsOSArMTA1LDYzIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJyZWFr
cG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQpCiAgICAgdW5zaWduZWQgbGluZU51bWJl
ciA9IHRva2Vuc1sxXS50b1VJbnQoJnN1Y2Nlc3MpOwogICAgIGlmICghc3VjY2VzcykKICAgICAg
ICAgcmV0dXJuOworICAgIHVuc2lnbmVkIGNvbHVtbk51bWJlciA9IHRva2Vuc1syXS50b1VJbnQo
JnN1Y2Nlc3MpOworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuOworCiAgICAgU291
cmNlSWRUb0JyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9p
bnRzLmZpbmQoc291cmNlSURWYWx1ZSk7Ci0gICAgaWYgKGl0ICE9IG1fc291cmNlSWRUb0JyZWFr
cG9pbnRzLmVuZCgpKQotICAgICAgICBpdC0+c2Vjb25kLnJlbW92ZShsaW5lTnVtYmVyICsgMSk7
CisgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgTGluZVRvQnJlYWtwb2ludE1hcDo6aXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+
c2Vjb25kLmZpbmQobGluZU51bWJlciArIDEpOworICAgIGlmIChicmVha3NJdCA9PSBpdC0+c2Vj
b25kLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBCcmVha3BvaW50c0luTGluZSYgYnJl
YWtzVmVjdG9yID0gYnJlYWtzSXQtPnNlY29uZDsKKyAgICB1bnNpZ25lZCBicmVha3NDb3VudCA9
IGJyZWFrc1ZlY3Rvci5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJyZWFr
c0NvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5OdW1i
ZXIgPT0gc3RhdGljX2Nhc3Q8aW50Pihjb2x1bW5OdW1iZXIpKSB7CisgICAgICAgICAgICBicmVh
a3NWZWN0b3IucmVtb3ZlKGkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9
Cit9CisKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQb3Np
dGlvbihpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmUpCit7CisgICAgaWYgKGxpbmUgPCAwKQor
ICAgICAgICByZXR1cm47CisKKyAgICBTb3VyY2VQcm92aWRlciogc291cmNlID0gcmVpbnRlcnBy
ZXRfY2FzdDxTb3VyY2VQcm92aWRlcio+KHNvdXJjZUlEKTsKKworICAgIGlmIChtX2N1cnJlbnRT
b3VyY2VJRCAhPSBzb3VyY2VJRCkgeworICAgICAgICBTdHJpbmcgc291cmNlQ29kZSA9IHVzdHJp
bmdUb1N0cmluZyhKU0M6OlVTdHJpbmcoY29uc3RfY2FzdDxTdHJpbmdJbXBsKj4oc291cmNlLT5k
YXRhKCkpKSk7CisgICAgICAgIG1fY3VycmVudFNvdXJjZUNvZGUuY2xlYXIoKTsKKyAgICAgICAg
c291cmNlQ29kZS5zcGxpdCgiXG4iLCB0cnVlLCBtX2N1cnJlbnRTb3VyY2VDb2RlKTsKKyAgICAg
ICAgbV9jdXJyZW50U291cmNlSUQgPSBzb3VyY2VJRDsKKyAgICAgICAgbV9jdXJyZW50U3RhdGVt
ZW50UG9zaXRpb24ubGluZU51bWJlciA9IDA7CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBv
c2l0aW9uLmNvbHVtbk51bWJlciA9IDA7CisgICAgfQorCisgICAgaWYgKGxpbmUgIT0gbV9jdXJy
ZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51bWJlcikgeworICAgICAgICBtX2N1cnJlbnRTdGF0
ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyID0gbGluZTsKKyAgICAgICAgbV9jdXJyZW50U3RhdGVt
ZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGludCBzdGFydExpbmUgPSBzb3VyY2UtPnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUuemVyb0Jh
c2VkSW50KCk7CisgICAgaWYgKChtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVy
IC0gc3RhcnRMaW5lIC0gMSkgPj0gc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTb3VyY2VDb2Rl
LnNpemUoKSkpCisgICAgICAgIHJldHVybjsKKyAgICBjb25zdCBTdHJpbmcmIGNvZGVJbkxpbmUg
PSBtX2N1cnJlbnRTb3VyY2VDb2RlW21fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1i
ZXIgLSBzdGFydExpbmUgLSAxXTsKKyAgICBpZiAoY29kZUluTGluZS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBpbnQgbmV4dENvbHVtbiA9IGNvZGVJbkxpbmUuZmluZCgiOyIsIG1f
Y3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmNvbHVtbk51bWJlcik7CisgICAgaWYgKG5leHRDb2x1
bW4gIT0gLTEpIHsKKyAgICAgICAgVUNoYXIgYyA9IGNvZGVJbkxpbmVbbmV4dENvbHVtbiArIDFd
OworICAgICAgICBpZiAoYyA9PSAnICcgfHwgYyA9PSAnXHQnKQorICAgICAgICAgICAgbmV4dENv
bHVtbiArPSAxOworICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1i
ZXIgPSBuZXh0Q29sdW1uICsgMTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9jdXJyZW50U3RhdGVt
ZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0gMDsKIH0KIAogYm9vbCBTY3JpcHREZWJ1Z1NlcnZl
cjo6aGFzQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiBw
b3NpdGlvbikgY29uc3QKQEAgLTExMCwxOSArMTcyLDM3IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2
ZXI6Omhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYg
cG9zCiAgICAgU291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1f
c291cmNlSWRUb0JyZWFrcG9pbnRzLmZpbmQoc291cmNlSUQpOwogICAgIGlmIChpdCA9PSBtX3Nv
dXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlu
dCBsaW5lTnVtYmVyID0gcG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCk7Ci0gICAgaWYgKGxp
bmVOdW1iZXIgPD0gMCkKKworICAgIGludCBsaW5lTnVtYmVyID0gcG9zaXRpb24ubV9saW5lLnpl
cm9CYXNlZEludCgpOworICAgIGludCBjb2x1bW5OdW1iZXIgPSBwb3NpdGlvbi5tX2NvbHVtbi56
ZXJvQmFzZWRJbnQoKTsKKyAgICBpZiAobGluZU51bWJlciA8IDAgfHwgY29sdW1uTnVtYmVyIDwg
MCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTGluZVRvQnJlYWtwb2ludE1hcDo6Y29u
c3RfaXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+c2Vjb25kLmZpbmQobGluZU51bWJlciArIDEpOwor
ICAgIGlmIChicmVha3NJdCA9PSBpdC0+c2Vjb25kLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgTGluZVRvQnJlYWtwb2ludE1hcDo6Y29uc3RfaXRlcmF0b3IgYnJlYWtJdCA9IGl0
LT5zZWNvbmQuZmluZChsaW5lTnVtYmVyKTsKLSAgICBpZiAoYnJlYWtJdCA9PSBpdC0+c2Vjb25k
LmVuZCgpKQorCisgICAgYm9vbCBoaXQgPSBmYWxzZTsKKyAgICBjb25zdCBCcmVha3BvaW50c0lu
TGluZSYgYnJlYWtzVmVjdG9yID0gYnJlYWtzSXQtPnNlY29uZDsKKyAgICB1bnNpZ25lZCBicmVh
a3NDb3VudCA9IGJyZWFrc1ZlY3Rvci5zaXplKCk7CisgICAgdW5zaWduZWQgaTsKKyAgICBmb3Ig
KGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykgeworICAgICAgICBpbnQgYnJlYWtDb2x1bW4g
PSBicmVha3NWZWN0b3IuYXQoaSkuY29sdW1uTnVtYmVyOworICAgICAgICBpbnQgYnJlYWtMaW5l
ID0gYnJlYWtzVmVjdG9yLmF0KGkpLmxpbmVOdW1iZXI7CisgICAgICAgIGlmIChsaW5lTnVtYmVy
ID09IGJyZWFrTGluZSAmJiBjb2x1bW5OdW1iZXIgPT0gYnJlYWtDb2x1bW4pIHsKKyAgICAgICAg
ICAgIGhpdCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBpZiAoIWhpdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQW4gZW1wdHkgY29u
ZGl0aW9uIGNvdW50cyBhcyBubyBjb25kaXRpb24gd2hpY2ggaXMgZXF1aXZhbGVudCB0byAidHJ1
ZSIuCi0gICAgaWYgKGJyZWFrSXQtPnNlY29uZC5jb25kaXRpb24uaXNFbXB0eSgpKQorICAgIGlm
IChicmVha3NWZWN0b3IuYXQoaSkuY29uZGl0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IG1f
Y3VycmVudENhbGxGcmFtZS0+ZXZhbHVhdGUoc3RyaW5nVG9VU3RyaW5nKGJyZWFrSXQtPnNlY29u
ZC5jb25kaXRpb24pLCBleGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0ID0gbV9jdXJyZW50
Q2FsbEZyYW1lLT5ldmFsdWF0ZShzdHJpbmdUb1VTdHJpbmcoYnJlYWtzVmVjdG9yLmF0KGkpLmNv
bmRpdGlvbiksIGV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAvLyBB
biBlcnJvbmVvdXMgY29uZGl0aW9uIGNvdW50cyBhcyAiZmFsc2UiLgogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0zNDcsMjAgKzQyNywyMCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNw
YXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoSmF2YVNjcmlwdEV4ZWN1dGlvbkNhbGxiYWNrCiAgICAg
bV9jYWxsaW5nTGlzdGVuZXJzID0gZmFsc2U7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6
OmNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUm
IGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2
b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNv
bnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNl
SUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewotICAgIFRleHRQb3NpdGlv
biB0ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1iZXIp
LCBPcmRpbmFsTnVtYmVyOjpmaXJzdCgpKTsKKyAgICBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9u
KE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChsaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJl
cjo6ZnJvbVplcm9CYXNlZEludChjb2x1bW5OdW1iZXIpKTsKICAgICBtX2N1cnJlbnRDYWxsRnJh
bWUgPSBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpjcmVhdGUoZGVidWdnZXJDYWxsRnJhbWUsIG1fY3Vy
cmVudENhbGxGcmFtZSwgc291cmNlSUQsIHRleHRQb3NpdGlvbik7CiAgICAgcGF1c2VJZk5lZWRl
ZChkZWJ1Z2dlckNhbGxGcmFtZS5keW5hbWljR2xvYmFsT2JqZWN0KCkpOwogfQogCi12b2lkIFNj
cmlwdERlYnVnU2VydmVyOjp1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IERl
YnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGlu
dCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbEZyYW1lQW5k
UGF1c2VJZk5lZWRlZChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUs
IGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsK
ICAgICBBU1NFUlQobV9jdXJyZW50Q2FsbEZyYW1lKTsKICAgICBpZiAoIW1fY3VycmVudENhbGxG
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbihP
cmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6
OmZpcnN0KCkpOworICAgIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6
ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpmcm9tWmVyb0Jhc2Vk
SW50KGNvbHVtbk51bWJlcikpOwogICAgIG1fY3VycmVudENhbGxGcmFtZS0+dXBkYXRlKGRlYnVn
Z2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgdGV4dFBvc2l0aW9uKTsKICAgICBwYXVzZUlmTmVlZGVk
KGRlYnVnZ2VyQ2FsbEZyYW1lLmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CiB9CkBAIC0zOTksMjQg
KzQ3OSwyNCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpwYXVzZUlmTmVlZGVkKEpTR2xvYmFs
T2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KQogICAgIG1fcGF1c2VkID0gZmFsc2U7CiB9CiAK
LXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFt
ZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikK
K3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFt
ZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAoIW1fcGF1c2VkKQotICAgICAgICBjcmVhdGVD
YWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGlu
ZU51bWJlcik7CisgICAgICAgIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdn
ZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogfQogCi12
b2lkIFNjcmlwdERlYnVnU2VydmVyOjphdFN0YXRlbWVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFt
ZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikK
K3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmF0U3RhdGVtZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZy
YW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIGlmICghbV9wYXVzZWQpCi0gICAgICAgIHVwZGF0
ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBs
aW5lTnVtYmVyKTsKKyAgICAgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1
Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiB9CiAK
LXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZy
YW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVy
KQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmV0dXJuRXZlbnQoY29uc3QgRGVidWdnZXJDYWxs
RnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICByZXR1
cm47CiAKLSAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZy
YW1lLCBzb3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJ
Zk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcik7CiAKICAgICAvLyBkZXRhY2ggbWF5IGhhdmUgYmVlbiBjYWxsZWQgZHVyaW5nIHBhdXNl
SWZOZWVkZWQKICAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkKQEAgLTQyOCw3ICs1MDgsNyBA
QCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxG
cmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsCiAgICAgbV9jdXJyZW50Q2FsbEZyYW1lID0gbV9jdXJy
ZW50Q2FsbEZyYW1lLT5jYWxsZXIoKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZXhj
ZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpCit2b2lkIFNjcmlw
dERlYnVnU2VydmVyOjpleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIGJvb2wgaGFzSGFuZGxlcikKIHsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTQzNiwyMSArNTE2LDIxIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmV4Y2Vw
dGlvbihjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGluCiAgICAg
aWYgKG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9PSBQYXVzZU9uQWxsRXhjZXB0aW9ucyB8fCAo
bV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlID09IFBhdXNlT25VbmNhdWdodEV4Y2VwdGlvbnMgJiYg
IWhhc0hhbmRsZXIpKQogICAgICAgICBtX3BhdXNlT25OZXh0U3RhdGVtZW50ID0gdHJ1ZTsKIAot
ICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNv
dXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVk
KGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsK
IH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6d2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERl
YnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGlu
dCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6d2lsbEV4ZWN1dGVQcm9ncmFt
KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291
cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIGlmICghbV9w
YXVzZWQpCi0gICAgICAgIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJD
YWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICAgICAgY3JlYXRlQ2FsbEZyYW1l
QW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcik7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZEV4ZWN1dGVQ
cm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlk
RXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1l
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7
CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVDYWxsRnJh
bWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJl
cik7CisgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFt
ZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAKICAgICAvLyBUcmVhdCBz
dGVwcGluZyBvdmVyIHRoZSBlbmQgb2YgYSBwcm9ncmFtIGxpa2Ugc3RlcHBpbmcgb3V0LgogICAg
IGlmIChtX2N1cnJlbnRDYWxsRnJhbWUgPT0gbV9wYXVzZU9uQ2FsbEZyYW1lKQpAQCAtNDU4LDEz
ICs1MzgsMTMgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0oY29u
c3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEYKICAgICBtX2N1cnJlbnRDYWxsRnJh
bWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlcigpOwogfQogCi12b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVn
Z2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIpCiB7CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICByZXR1cm47
CiAKICAgICBtX3BhdXNlT25OZXh0U3RhdGVtZW50ID0gdHJ1ZTsKLSAgICB1cGRhdGVDYWxsRnJh
bWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJl
cik7CisgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFt
ZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiB9CiAKIHZvaWQgU2NyaXB0
RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCA4NGZiYTVjNjc4ZmM3
MjVkZjI4NjJlZTlmZjNiZTY1MTg0MTIxYWE2Li45ZDhkZGU3NDMwMGFhOGI2ZGMzNzRiZTBkMGNk
ZjE4ZTYzZDJhMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERl
YnVnU2VydmVyLmgKQEAgLTEyMywyMiArMTIzLDI1IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGRp
c3BhdGNoRGlkUGFyc2VTb3VyY2UoY29uc3QgTGlzdGVuZXJTZXQmIGxpc3RlbmVycywgSlNDOjpT
b3VyY2VQcm92aWRlciosIGJvb2wgaXNDb250ZW50U2NyaXB0KTsKICAgICB2b2lkIGRpc3BhdGNo
RmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzLCBKU0M6OlNv
dXJjZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2Up
OwogCi0gICAgdm9pZCBjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IEpTQzo6
RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOwot
ICAgIHZvaWQgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBKU0M6OkRlYnVn
Z2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKTsKKyAgICB2
b2lkIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNh
bGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlcik7CisgICAgdm9pZCB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IEpT
Qzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIpOwogICAgIHZvaWQgcGF1c2VJZk5lZWRlZChKU0M6OkpTR2xvYmFs
T2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2go
SlNDOjpKU0dsb2JhbE9iamVjdCopOwogCiAgICAgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5lLCBjb25z
dCBKU0M6OlVTdHJpbmcmIGVycm9yTXNnKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsbEV2ZW50KGNv
bnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVO
dW1iZXIpOwotICAgIHZpcnR1YWwgdm9pZCBhdFN0YXRlbWVudChjb25zdCBKU0M6OkRlYnVnZ2Vy
Q2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBmaXJzdExpbmUpOwotICAgIHZpcnR1
YWwgdm9pZCByZXR1cm5FdmVudChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhjZXB0aW9u
KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIsIGJvb2wgaGFzSGFuZGxlcik7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxFeGVjdXRl
UHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lbm8pOwotICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBK
U0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNh
bGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vKTsKLQotICAgIHR5cGVkZWYg
SGFzaE1hcDxsb25nLCBTY3JpcHRCcmVha3BvaW50PiBMaW5lVG9CcmVha3BvaW50TWFwOworICAg
IHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CisgICAg
dmlydHVhbCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGZpcnN0TGluZSwgaW50IGNvbHVtbk51bWJlcik7CisgICAg
dmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOworICAg
IHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCBo
YXNIYW5kbGVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpT
Qzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubywgaW50
IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0
IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubywg
aW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChj
b25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5l
bm8sIGludCBjb2x1bW5OdW1iZXIpOworCisgICAgdm9pZCB1cGRhdGVDdXJyZW50U3RhdGVtZW50
UG9zaXRpb24oaW50cHRyX3QsIGludCk7CisKKyAgICB0eXBlZGVmIFZlY3RvcjxTY3JpcHRCcmVh
a3BvaW50PiBCcmVha3BvaW50c0luTGluZTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8bG9uZywgQnJl
YWtwb2ludHNJbkxpbmU+IExpbmVUb0JyZWFrcG9pbnRNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFw
PGludHB0cl90LCBMaW5lVG9CcmVha3BvaW50TWFwPiBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA7
CiAKICAgICBib29sIG1fY2FsbGluZ0xpc3RlbmVyczsKQEAgLTE1MSw2ICsxNTQsMTAgQEAgcHJv
dGVjdGVkOgogICAgIFJlZlB0cjxKYXZhU2NyaXB0Q2FsbEZyYW1lPiBtX2N1cnJlbnRDYWxsRnJh
bWU7CiAgICAgU291cmNlSWRUb0JyZWFrcG9pbnRzTWFwIG1fc291cmNlSWRUb0JyZWFrcG9pbnRz
OwogICAgIFRpbWVyPFNjcmlwdERlYnVnU2VydmVyPiBtX3JlY29tcGlsZVRpbWVyOworCisgICAg
VmVjdG9yPFN0cmluZz4gbV9jdXJyZW50U291cmNlQ29kZTsKKyAgICBpbnRwdHJfdCBtX2N1cnJl
bnRTb3VyY2VJRDsKKyAgICBTY3JpcHRCcmVha3BvaW50IG1fY3VycmVudFN0YXRlbWVudFBvc2l0
aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150359</attachid>
            <date>2012-07-01 23:16:46 -0700</date>
            <delta_ts>2012-07-02 00:23:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120702141640.patch</filename>
            <type>text/plain</type>
            <size>305857</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZTFmMzk3YmNhOGMzYjlmZWUwMjAyOGQ3ZDNjOWZkYWIzMjdjNzAwLi5lNWY4MjY1ODVhNDJlMjg1
OTRmYjlhZjMwM2NlMTQzZDYwYzBjZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NTcgQEAKKzIwMTItMDctMDEgIFBldGVyIFdhbmcgIDxwZXRlci53YW5nQHRvcmNobW9i
aWxlLmNvbS5jbj4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbSlNDXSBpbXBsZW1lbnQgc2V0
dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMwMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdCBjYXNlIGZvciB0aGlzIGJ1Zy4KKwor
ICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6cGFkT3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2sp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAo
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KToKKyAgICAgICAg
KEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDb25kaXRpb25hbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0
U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RW1wdHlTdGF0ZW1l
bnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclN0YXRlbWVudE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpJZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Oklm
RWxzZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRvV2hpbGVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpXaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkZvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvckluTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29udGludWVOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OlJldHVybk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OldpdGhOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpMYWJlbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRo
cm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJv
ZHlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRo
cm93RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmRlYnVnKToKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAg
ICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEFTVEJ1aWxkZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVDb21tYUV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMb2dp
Y2FsTm90KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVW5hcnlQbHVzKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVm9pZCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OnRoaXNFeHByKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVzb2x2
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZU9iamVjdExpdGVyYWwpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJheSk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZU51bWJlckV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVh
dGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCb29sZWFuKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTnVsbCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUJyYWNrZXRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVSZWdFeHAp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVOZXdFeHByKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uZGl0aW9uYWxFeHByKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQXNzaWduUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1
bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUdldHRlck9yU2V0
dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcmd1bWVudHNM
aXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUHJvcGVydHlMaXN0KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUV4cHJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVJZlN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUZvckxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JJbkxvb3ApOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFbXB0eVN0YXRlbWVudCk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVZhclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZVJldHVyblN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUJyZWFrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlQ29udGludWVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVU
cnlTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVTd2l0Y2hTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVXaGlsZVN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVdpdGhTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVUaHJvd1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZURlYnVnZ2VyKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uc3RT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRDb25zdERlY2wpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmFwcGVuZEJpbmFyeU9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUFzc2lnbm1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlVHlwZU9mTm9kZSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VEZWxldGVOb2RlKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjptYWtlQml0d2lzZU5vdE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlTXVs
dE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRGl2Tm9kZSk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VNb2ROb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6bWFrZUFkZE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlU3ViTm9kZSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VMZWZ0U2hpZnROb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZVJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6bWFrZVVSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
Om1ha2VCaXRPck5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQml0QW5kTm9k
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VCaXRYT3JOb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1h
a2VBc3NpZ25Ob2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlUG9zdGZpeE5vZGUpOgorICAgICAgICAq
IHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6Ojo6c2V0Q29kZSk6CisgICAgICAgIChK
U0M6Ojo6aW50ZXJuYWxTaGlmdCk6CisgICAgICAgIChKU0M6Ojo6c2hpZnQpOgorICAgICAgICAo
SlNDOjo6OmxleCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6Okxl
eGVyOjpjdXJyZW50Q29sdW1uTnVtYmVyKToKKyAgICAgICAgKExleGVyKToKKyAgICAgICAgKEpT
Qzo6OjpsZXhFeHBlY3RJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oOgorICAgICAgICAoSlNDOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKEpTQzo6RXhwcmVz
c2lvbk5vZGU6OkV4cHJlc3Npb25Ob2RlKToKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6
U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6Ok51bGxOb2RlOjpOdWxsTm9kZSk6CisgICAg
ICAgIChKU0M6OkJvb2xlYW5Ob2RlOjpCb29sZWFuTm9kZSk6CisgICAgICAgIChKU0M6Ok51bWJl
ck5vZGU6Ok51bWJlck5vZGUpOgorICAgICAgICAoSlNDOjpTdHJpbmdOb2RlOjpTdHJpbmdOb2Rl
KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTm9kZTo6UmVnRXhwTm9kZSk6CisgICAgICAgIChKU0M6
OlRoaXNOb2RlOjpUaGlzTm9kZSk6CisgICAgICAgIChKU0M6OlJlc29sdmVOb2RlOjpSZXNvbHZl
Tm9kZSk6CisgICAgICAgIChKU0M6OkFycmF5Tm9kZTo6QXJyYXlOb2RlKToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZSk6CisgICAgICAgIChKU0M6Ok9i
amVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZSk6CisgICAgICAgIChKU0M6OkJyYWNr
ZXRBY2Nlc3Nvck5vZGU6OkJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoSlNDOjpEb3RB
Y2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZSk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50TGlz
dE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoSlNDOjpOZXdFeHByTm9kZTo6TmV3
RXhwck5vZGUpOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0
aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OkZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2Rl
OjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJy
YWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoSlNDOjpDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAo
SlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZSk6
CisgICAgICAgIChKU0M6OlByZVBvc3RSZXNvbHZlTm9kZTo6UHJlUG9zdFJlc29sdmVOb2RlKToK
KyAgICAgICAgKEpTQzo6UG9zdGZpeFJlc29sdmVOb2RlOjpQb3N0Zml4UmVzb2x2ZU5vZGUpOgor
ICAgICAgICAoSlNDOjpQb3N0Zml4QnJhY2tldE5vZGU6OlBvc3RmaXhCcmFja2V0Tm9kZSk6Cisg
ICAgICAgIChKU0M6OlBvc3RmaXhEb3ROb2RlOjpQb3N0Zml4RG90Tm9kZSk6CisgICAgICAgIChK
U0M6OlBvc3RmaXhFcnJvck5vZGU6OlBvc3RmaXhFcnJvck5vZGUpOgorICAgICAgICAoSlNDOjpE
ZWxldGVSZXNvbHZlTm9kZTo6RGVsZXRlUmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpEZWxl
dGVCcmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVE
b3ROb2RlOjpEZWxldGVEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlVmFsdWVOb2RlOjpE
ZWxldGVWYWx1ZU5vZGUpOgorICAgICAgICAoSlNDOjpWb2lkTm9kZTo6Vm9pZE5vZGUpOgorICAg
ICAgICAoSlNDOjpUeXBlT2ZSZXNvbHZlTm9kZTo6VHlwZU9mUmVzb2x2ZU5vZGUpOgorICAgICAg
ICAoSlNDOjpUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6
OlByZWZpeFJlc29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlBy
ZWZpeEJyYWNrZXROb2RlOjpQcmVmaXhCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OlByZWZp
eERvdE5vZGU6OlByZWZpeERvdE5vZGUpOgorICAgICAgICAoSlNDOjpQcmVmaXhFcnJvck5vZGU6
OlByZWZpeEVycm9yTm9kZSk6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjpVbmFyeU9wTm9k
ZSk6CisgICAgICAgIChKU0M6OlVuYXJ5UGx1c05vZGU6OlVuYXJ5UGx1c05vZGUpOgorICAgICAg
ICAoSlNDOjpOZWdhdGVOb2RlOjpOZWdhdGVOb2RlKToKKyAgICAgICAgKEpTQzo6Qml0d2lzZU5v
dE5vZGU6OkJpdHdpc2VOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6TG9naWNhbE5vdE5vZGU6Okxv
Z2ljYWxOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUp
OgorICAgICAgICAoSlNDOjpNdWx0Tm9kZTo6TXVsdE5vZGUpOgorICAgICAgICAoSlNDOjpEaXZO
b2RlOjpEaXZOb2RlKToKKyAgICAgICAgKEpTQzo6TW9kTm9kZTo6TW9kTm9kZSk6CisgICAgICAg
IChKU0M6OkFkZE5vZGU6OkFkZE5vZGUpOgorICAgICAgICAoSlNDOjpTdWJOb2RlOjpTdWJOb2Rl
KToKKyAgICAgICAgKEpTQzo6TGVmdFNoaWZ0Tm9kZTo6TGVmdFNoaWZ0Tm9kZSk6CisgICAgICAg
IChKU0M6OlJpZ2h0U2hpZnROb2RlOjpSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OlVu
c2lnbmVkUmlnaHRTaGlmdE5vZGU6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAo
SlNDOjpMZXNzTm9kZTo6TGVzc05vZGUpOgorICAgICAgICAoSlNDOjpHcmVhdGVyTm9kZTo6R3Jl
YXRlck5vZGUpOgorICAgICAgICAoSlNDOjpMZXNzRXFOb2RlOjpMZXNzRXFOb2RlKToKKyAgICAg
ICAgKEpTQzo6R3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9kZSk6CisgICAgICAgIChKU0M6OlRo
cm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlKToKKyAgICAgICAgKEpT
Qzo6SW5zdGFuY2VPZk5vZGU6Okluc3RhbmNlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6SW5Ob2Rl
OjpJbk5vZGUpOgorICAgICAgICAoSlNDOjpFcXVhbE5vZGU6OkVxdWFsTm9kZSk6CisgICAgICAg
IChKU0M6Ok5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKToKKyAgICAgICAgKEpTQzo6U3RyaWN0
RXF1YWxOb2RlOjpTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoSlNDOjpOb3RTdHJpY3RFcXVh
bE5vZGU6Ok5vdFN0cmljdEVxdWFsTm9kZSk6CisgICAgICAgIChKU0M6OkJpdEFuZE5vZGU6OkJp
dEFuZE5vZGUpOgorICAgICAgICAoSlNDOjpCaXRPck5vZGU6OkJpdE9yTm9kZSk6CisgICAgICAg
IChKU0M6OkJpdFhPck5vZGU6OkJpdFhPck5vZGUpOgorICAgICAgICAoSlNDOjpMb2dpY2FsT3BO
b2RlOjpMb2dpY2FsT3BOb2RlKToKKyAgICAgICAgKEpTQzo6Q29uZGl0aW9uYWxOb2RlOjpDb25k
aXRpb25hbE5vZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRN
b2RpZnlSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjpBc3Np
Z25SZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6UmVh
ZE1vZGlmeUJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduQnJhY2tldE5vZGU6OkFz
c2lnbkJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90
Tm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkVycm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKToKKyAg
ICAgICAgKEpTQzo6Q29tbWFOb2RlOjpDb21tYU5vZGUpOgorICAgICAgICAoSlNDOjpDb25zdFN0
YXRlbWVudE5vZGU6OkNvbnN0U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6OkVtcHR5U3Rh
dGVtZW50Tm9kZTo6RW1wdHlTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJT
dGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpFeHBy
U3RhdGVtZW50Tm9kZTo6RXhwclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0
ZW1lbnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6SWZOb2RlOjpJZk5v
ZGUpOgorICAgICAgICAoSlNDOjpJZkVsc2VOb2RlOjpJZkVsc2VOb2RlKToKKyAgICAgICAgKEpT
Qzo6RG9XaGlsZU5vZGU6OkRvV2hpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6V2hpbGVOb2RlOjpX
aGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjpGb3JOb2RlKToKKyAgICAgICAgKEpT
Qzo6Q29udGludWVOb2RlOjpDb250aW51ZU5vZGUpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6
OkJyZWFrTm9kZSk6CisgICAgICAgIChKU0M6OlJldHVybk5vZGU6OlJldHVybk5vZGUpOgorICAg
ICAgICAoSlNDOjpXaXRoTm9kZTo6V2l0aE5vZGUpOgorICAgICAgICAoSlNDOjpMYWJlbE5vZGU6
OkxhYmVsTm9kZSk6CisgICAgICAgIChKU0M6OlRocm93Tm9kZTo6VGhyb3dOb2RlKToKKyAgICAg
ICAgKEpTQzo6VHJ5Tm9kZTo6VHJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmNFeHByTm9kZTo6
RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUp
OgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKToKKyAgICAgICAgKEpTQzo6
Q29uc3REZWNsTm9kZTo6Q29uc3REZWNsTm9kZSk6CisgICAgICAgIChKU0M6OkJsb2NrTm9kZTo6
QmxvY2tOb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjpGb3JJbk5vZGUpOgorICAgICAg
ICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OnNldExv
Yyk6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6U2NvcGVOb2RlKToKKyAgICAgICAgKEpTQzo6
UHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkV2YWxOb2RlOjpFdmFsTm9kZSk6CisgICAgICAgIChKU0M6
OkV2YWxOb2RlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpGdW5j
dGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlND
OjpOb2RlOjpjb2x1bW5Obyk6CisgICAgICAgIChFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChT
dGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6Y29sdW1uKToKKyAg
ICAgICAgKE51bGxOb2RlKToKKyAgICAgICAgKEJvb2xlYW5Ob2RlKToKKyAgICAgICAgKE51bWJl
ck5vZGUpOgorICAgICAgICAoU3RyaW5nTm9kZSk6CisgICAgICAgIChSZWdFeHBOb2RlKToKKyAg
ICAgICAgKFRoaXNOb2RlKToKKyAgICAgICAgKFJlc29sdmVOb2RlKToKKyAgICAgICAgKEFycmF5
Tm9kZSk6CisgICAgICAgIChQcm9wZXJ0eUxpc3ROb2RlKToKKyAgICAgICAgKE9iamVjdExpdGVy
YWxOb2RlKToKKyAgICAgICAgKEJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoRG90QWNj
ZXNzb3JOb2RlKToKKyAgICAgICAgKEFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoTmV3RXhw
ck5vZGUpOgorICAgICAgICAoRXZhbEZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoRnVuY3Rp
b25DYWxsVmFsdWVOb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKToKKyAg
ICAgICAgKEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbERv
dE5vZGUpOgorICAgICAgICAoQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKFByZVBvc3RSZXNvbHZlTm9kZSk6Cisg
ICAgICAgIChQb3N0Zml4UmVzb2x2ZU5vZGUpOgorICAgICAgICAoUG9zdGZpeEJyYWNrZXROb2Rl
KToKKyAgICAgICAgKFBvc3RmaXhEb3ROb2RlKToKKyAgICAgICAgKFBvc3RmaXhFcnJvck5vZGUp
OgorICAgICAgICAoRGVsZXRlUmVzb2x2ZU5vZGUpOgorICAgICAgICAoRGVsZXRlQnJhY2tldE5v
ZGUpOgorICAgICAgICAoRGVsZXRlRG90Tm9kZSk6CisgICAgICAgIChEZWxldGVWYWx1ZU5vZGUp
OgorICAgICAgICAoVm9pZE5vZGUpOgorICAgICAgICAoVHlwZU9mUmVzb2x2ZU5vZGUpOgorICAg
ICAgICAoVHlwZU9mVmFsdWVOb2RlKToKKyAgICAgICAgKFByZWZpeFJlc29sdmVOb2RlKToKKyAg
ICAgICAgKFByZWZpeEJyYWNrZXROb2RlKToKKyAgICAgICAgKFByZWZpeERvdE5vZGUpOgorICAg
ICAgICAoUHJlZml4RXJyb3JOb2RlKToKKyAgICAgICAgKFVuYXJ5T3BOb2RlKToKKyAgICAgICAg
KFVuYXJ5UGx1c05vZGUpOgorICAgICAgICAoTmVnYXRlTm9kZSk6CisgICAgICAgIChCaXR3aXNl
Tm90Tm9kZSk6CisgICAgICAgIChMb2dpY2FsTm90Tm9kZSk6CisgICAgICAgIChCaW5hcnlPcE5v
ZGUpOgorICAgICAgICAoTXVsdE5vZGUpOgorICAgICAgICAoRGl2Tm9kZSk6CisgICAgICAgIChN
b2ROb2RlKToKKyAgICAgICAgKEFkZE5vZGUpOgorICAgICAgICAoU3ViTm9kZSk6CisgICAgICAg
IChMZWZ0U2hpZnROb2RlKToKKyAgICAgICAgKFJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKFVu
c2lnbmVkUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAoTGVzc05vZGUpOgorICAgICAgICAoR3Jl
YXRlck5vZGUpOgorICAgICAgICAoTGVzc0VxTm9kZSk6CisgICAgICAgIChHcmVhdGVyRXFOb2Rl
KToKKyAgICAgICAgKFRocm93YWJsZUJpbmFyeU9wTm9kZSk6CisgICAgICAgIChJbnN0YW5jZU9m
Tm9kZSk6CisgICAgICAgIChJbk5vZGUpOgorICAgICAgICAoRXF1YWxOb2RlKToKKyAgICAgICAg
KE5vdEVxdWFsTm9kZSk6CisgICAgICAgIChTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoTm90
U3RyaWN0RXF1YWxOb2RlKToKKyAgICAgICAgKEJpdEFuZE5vZGUpOgorICAgICAgICAoQml0T3JO
b2RlKToKKyAgICAgICAgKEJpdFhPck5vZGUpOgorICAgICAgICAoTG9naWNhbE9wTm9kZSk6Cisg
ICAgICAgIChDb25kaXRpb25hbE5vZGUpOgorICAgICAgICAoUmVhZE1vZGlmeVJlc29sdmVOb2Rl
KToKKyAgICAgICAgKEFzc2lnblJlc29sdmVOb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlCcmFj
a2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25CcmFja2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25E
b3ROb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKEFzc2lnbkVy
cm9yTm9kZSk6CisgICAgICAgIChDb21tYU5vZGUpOgorICAgICAgICAoQ29uc3REZWNsTm9kZSk6
CisgICAgICAgIChDb25zdFN0YXRlbWVudE5vZGUpOgorICAgICAgICAoQmxvY2tOb2RlKToKKyAg
ICAgICAgKEVtcHR5U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChEZWJ1Z2dlclN0YXRlbWVudE5v
ZGUpOgorICAgICAgICAoRXhwclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoVmFyU3RhdGVtZW50
Tm9kZSk6CisgICAgICAgIChJZk5vZGUpOgorICAgICAgICAoSWZFbHNlTm9kZSk6CisgICAgICAg
IChEb1doaWxlTm9kZSk6CisgICAgICAgIChXaGlsZU5vZGUpOgorICAgICAgICAoRm9yTm9kZSk6
CisgICAgICAgIChGb3JJbk5vZGUpOgorICAgICAgICAoQ29udGludWVOb2RlKToKKyAgICAgICAg
KEJyZWFrTm9kZSk6CisgICAgICAgIChSZXR1cm5Ob2RlKToKKyAgICAgICAgKFdpdGhOb2RlKToK
KyAgICAgICAgKExhYmVsTm9kZSk6CisgICAgICAgIChUaHJvd05vZGUpOgorICAgICAgICAoVHJ5
Tm9kZSk6CisgICAgICAgIChTY29wZU5vZGUpOgorICAgICAgICAoUHJvZ3JhbU5vZGUpOgorICAg
ICAgICAoRXZhbE5vZGUpOgorICAgICAgICAoRnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAgICAgIChG
dW5jRXhwck5vZGUpOgorICAgICAgICAoRnVuY0RlY2xOb2RlKToKKyAgICAgICAgKFN3aXRjaE5v
ZGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6OnBhcnNl
VmFyRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29uc3REZWNsYXJhdGlvbik6
CisgICAgICAgIChKU0M6Ojo6cGFyc2VEb1doaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZVdoaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVZhckRlY2xhcmF0
aW9uTGlzdCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25zdERlY2xhcmF0aW9uTGlzdCk6Cisg
ICAgICAgIChKU0M6Ojo6cGFyc2VGb3JTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNl
QnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29udGludWVTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjo6OnBhcnNlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZVRocm93U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVdpdGhTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZVRyeVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VEZWJ1Z2dlclN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VCbG9ja1N0YXRlbWVudCk6CisgICAgICAg
IChKU0M6Ojo6cGFyc2VTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlRnVuY3Rpb25C
b2R5KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJl
c3Npb25PckxhYmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJlc3Npb25T
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlSWZTdGF0ZW1lbnQpOgorICAgICAgICAo
SlNDOjo6OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjo6OnBhcnNlQmluYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VPYmplY3RMaXRlcmFsKToK
KyAgICAgICAgKEpTQzo6OjpwYXJzZVN0cmljdE9iamVjdExpdGVyYWwpOgorICAgICAgICAoSlND
Ojo6OnBhcnNlQXJyYXlMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVByaW1hcnlFeHBy
ZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVVuYXJ5RXhw
cmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQYXJz
ZXI6OnRva2VuQ29sdW1uKToKKyAgICAgICAgKFBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNl
cjo6Z2V0VG9rZW5OYW1lKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZSk6CisgICAgICAgICogcGFy
c2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAoSlNDOjpKU1Rva2VuSW5mbzo6SlNUb2tlbklu
Zm8pOgorICAgICAgICAoSlNUb2tlbkluZm8pOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVj
a2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2Rl
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ29tbWFFeHByKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjptYWtlUHJlZml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6Om1ha2VQb3N0Zml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VU
eXBlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZURlbGV0ZU5vZGUp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlTmVnYXRlTm9kZSk6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VCaXR3aXNlTm90Tm9kZSk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpTeW50YXhD
aGVja2VyOjpjcmVhdGVVbmFyeVBsdXMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVWb2lkKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6dGhpc0V4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUFycmF5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlTnVtYmVyRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN0cmlu
Zyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJvb2xlYW4pOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOdWxsKToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQnJhY2tldEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZVJlZ0V4cCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU5ld0V4cHIpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDb25kaXRpb25hbEV4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVBc3NpZ25SZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQXJndW1lbnRzTGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZVByb3BlcnR5TGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OnNl
dFVzZXNBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5j
RGVjbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJsb2Nr
U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRXhwclN0YXRl
bWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUlmU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRm9yTG9vcCk6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUVtcHR5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlVmFyU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlQnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVD
b250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRy
eVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN3aXRjaFN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVdoaWxlU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlV2l0aFN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6CisgICAg
ICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRocm93U3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRGVidWdnZXIpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVDb25zdFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENo
ZWNrZXI6OmFwcGVuZENvbnN0RGVjbCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2Vy
Ojpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJh
dG9yU3RhY2tQb3ApOgorCiAyMDEyLTA2LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgSlNDIHNob3VsZCB0cnkgdG8gbWFrZSBwcm9maWxpbmcgZGV0ZXJtaW5p
c3RpYyBiZWNhdXNlIG90aGVyd2lzZSByZXByb2R1Y2luZyBmYWlsdXJlcyBpcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDQ2ZGYxMDQ2MWMzYWVkMDUxNWQxODAzMTQ4NmQzMDRkY2RjMzQ5OWEuLmIxNWFjYjgxNjE1
YmRjNmQ5NzMwZmY3NDIwNWJmN2QxNWQ4N2UxOGMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBA
QAorMjAxMi0wNy0wMSAgUGV0ZXIgV2FuZyAgPHBldGVyLndhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtKU0NdIGltcGxlbWVudCBzZXR0aW5nIGJyZWFr
cG9pbnRzIGJ5IGxpbmU6Y29sdW1uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MzAwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0IGNhc2UgZm9yIHRoaXMgYnVnLiAoT09QUyEpCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6Omhh
c0JyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNyZWF0
ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpleGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OndpbGxFeGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZl
cjo6ZGlkRXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2
ZXI6OmRpZFJlYWNoQnJlYWtwb2ludCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToKKwogMjAxMi0wNi0yNiAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVmYWN0b3Jpbmc6
IFNpbXBsaWZ5IEZvcm1Db250cm9sbGVyIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCmluZGV4IGUwY2ZmMTY1YTg4YzkzM2E1ODgzMDM4NmNiNTgxOGE2ZmU3
YTEzMWEuLjUyNjIyY2Q3YThjNWI5NDFjM2Y1NGU3YTEwNDU3MTAyMTQ1NGY2MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKQEAgLTE5MCw3ICsxOTAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfdGhyb3csIDIpIFwKICAgICAgICAgbWFjcm8o
b3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yLCAyKSBcCiAgICAgICAgIFwKLSAgICAgICAgbWFjcm8o
b3BfZGVidWcsIDQpIFwKKyAgICAgICAgbWFjcm8ob3BfZGVidWcsIDUpIFwKICAgICAgICAgbWFj
cm8ob3BfcHJvZmlsZV93aWxsX2NhbGwsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfcHJvZmlsZV9k
aWRfY2FsbCwgMikgXAogICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDg5NjlhN2YyNWIy
N2U5ZmNlOTY1NTBhZWQ1NWYxMjczYzA0N2UyZmEuLjI5N2IwMDgyM2MwMTI2NjNlZDNhZGYwNjc3
ZmZlYTk2Y2I0OTgwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yMDM3LDcgKzIwMzcsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UG9wU2NvcGUoKQogICAgIG1fZHluYW1pY1Njb3Bl
RGVwdGgtLTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1
Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQordm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwg
aW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKQogewogI2lmIEVOQUJMRShE
RUJVR19XSVRIX0JSRUFLUE9JTlQpCiAgICAgaWYgKGRlYnVnSG9va0lEICE9IERpZFJlYWNoQnJl
YWtwb2ludCkKQEAgLTIwNTAsNiArMjA1MCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREZWJ1Z0hvb2soRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGluCiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRlYnVnSG9va0lEKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZmlyc3RMaW5lKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGFzdExpbmUp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjb2x1bW4pOwogfQogCiB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpwdXNoRmluYWxseUNvbnRleHQoU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2Nr
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCmluZGV4IDhiMWQxZDc0NGJhMmE5MmI0NDI2ZjczMGExZGMzOGQyM2Y3YjA3
ODkuLmIxNGI3MGFmZjFlZTI2MDJkNDNjMTE0YzI4ZGI1NGExN2U0ZmQzYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKQEAgLTUwNiw3ICs1MDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1c2hTY29wZShSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQgZW1pdFBv
cFNjb3BlKCk7CiAKLSAgICAgICAgdm9pZCBlbWl0RGVidWdIb29rKERlYnVnSG9va0lELCBpbnQg
Zmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAgICB2b2lkIGVtaXREZWJ1Z0hvb2soRGVi
dWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVtbik7CiAKICAg
ICAgICAgaW50IHNjb3BlRGVwdGgoKSB7IHJldHVybiBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9m
aW5hbGx5RGVwdGg7IH0KICAgICAgICAgYm9vbCBoYXNGaW5hbGlzZXIoKSB7IHJldHVybiBtX2Zp
bmFsbHlEZXB0aCAhPSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDI0M2U4Y2UwMDg0OWI1NTJkOThkYjA1MDFj
MzY5YTQxNWQyZWQwYS4uYzFiN2Y1NGFiNWIwZWM2ZTAwOTY3YzA5NGU2ZmEyMjVmNDRhMzkxMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcApAQCAtMjAyLDE4ICsyMDIsMTggQEAgYm9vbCBBcnJheU5vZGU6OmlzU2ltcGxlQXJy
YXkoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1Bcmd1bWVudExpc3ROb2RlKiBBcnJh
eU5vZGU6OnRvQXJndW1lbnRMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVO
dW1iZXIpIGNvbnN0CitBcmd1bWVudExpc3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2VsaXNpb24gJiYgIW1fb3B0aW9uYWwpOwogICAg
IEVsZW1lbnROb2RlKiBwdHIgPSBtX2VsZW1lbnQ7CiAgICAgaWYgKCFwdHIpCiAgICAgICAgIHJl
dHVybiAwOwotICAgIEFyZ3VtZW50TGlzdE5vZGUqIGhlYWQgPSBuZXcgKGdsb2JhbERhdGEpIEFy
Z3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgcHRyLT52YWx1ZSgpKTsKKyAgICBBcmd1bWVudExp
c3ROb2RlKiBoZWFkID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgcHRyLT52YWx1ZSgpKTsKICAgICBBcmd1bWVudExpc3ROb2RlKiB0
YWlsID0gaGVhZDsKICAgICBwdHIgPSBwdHItPm5leHQoKTsKICAgICBmb3IgKDsgcHRyOyBwdHIg
PSBwdHItPm5leHQoKSkgewogICAgICAgICBBU1NFUlQoIXB0ci0+ZWxpc2lvbigpKTsKLSAgICAg
ICAgdGFpbCA9IG5ldyAoZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVtYmVyLCB0
YWlsLCBwdHItPnZhbHVlKCkpOworICAgICAgICB0YWlsID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1
bWVudExpc3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdGFpbCwgcHRyLT52YWx1ZSgp
KTsKICAgICB9CiAgICAgcmV0dXJuIGhlYWQ7CiB9CkBAIC01MzYsNyArNTM2LDcgQEAgUmVnaXN0
ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9kZSo+KG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50TGlzdChnZW5lcmF0
b3IuZ2xvYmFsRGF0YSgpLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3RO
b2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQt
Pm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci5nbG9iYWxEYXRhKCksIDAsIDApOwog
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQo
KSk7CiAgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwpAQCAtMTEyOCw2
ICsxMTI4LDggQEAgUmVnaXN0ZXJJRCogQ29uZGl0aW9uYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKICAgICBSZWZQdHI8TGFiZWw+IGJl
Zm9yZUVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGFmdGVy
RWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogCisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxpbmVObygpLCBsaW5lTm8oKSwgY29sdW1uTm8oKSk7
CisKICAgICBpZiAobV9sb2dpY2FsLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKSB7CiAg
ICAgICAgIFJlZlB0cjxMYWJlbD4gYmVmb3JlVGhlbiA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9sb2dpY2FsLCBi
ZWZvcmVUaGVuLmdldCgpLCBiZWZvcmVFbHNlLmdldCgpLCB0cnVlKTsKQEAgLTEzODUsNyArMTM4
Nyw3IEBAIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIFJlZ2lzdGVySUQqIENvbnN0U3RhdGVt
ZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShtX25leHQpOwogfQogCkBAIC0xNDI4
LDcgKzE0MzAsNyBAQCBSZWdpc3RlcklEKiBCbG9ja05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogCiBSZWdpc3RlcklEKiBFbXB0
eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0xNDM2LDcgKzE0MzgsNyBA
QCBSZWdpc3RlcklEKiBFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpcwogCiBSZWdpc3RlcklEKiBEZWJ1Z2dlclN0YXRlbWVu
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkUmVhY2hCcmVha3Bv
aW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soRGlkUmVhY2hCcmVha3BvaW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkp
OwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTE0NDUsNyArMTQ0Nyw3IEBAIFJlZ2lzdGVySUQq
IERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlCiBSZWdpc3RlcklEKiBFeHByU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBB
U1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOyAKKyAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNv
bHVtbigpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9leHByKTsKIH0K
IApAQCAtMTQ1NCw3ICsxNDU2LDcgQEAgUmVnaXN0ZXJJRCogRXhwclN0YXRlbWVudE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIFJlZ2lzdGVy
SUQqIFZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKICAgICBBU1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50
LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdE5vZGUobV9leHByKTsKIH0KIApAQCAtMTQ2Miw3ICsxNDY0LDcgQEAgUmVnaXN0ZXJJ
RCogVmFyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGUKIAogUmVnaXN0ZXJJRCogSWZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQs
IGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPExh
YmVsPiBhZnRlclRoZW4gPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIApAQCAtMTQ4Niw3ICsxNDg4
LDcgQEAgUmVnaXN0ZXJJRCogSWZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiBSZWdpc3RlcklEKiBJZkVsc2VOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAg
ICAgCiAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVFbHNlID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
CiAgICAgUmVmUHRyPExhYmVsPiBhZnRlckVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKQEAg
LTE1MjIsMTIgKzE1MjQsMTEgQEAgUmVnaXN0ZXJJRCogRG9XaGlsZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgIFJlZlB0cjxM
YWJlbD4gdG9wT2ZMb29wID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbCh0b3BPZkxvb3AuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TG9vcEhpbnQoKTsK
LSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCkpOwogICAgCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9
IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxp
bmVObygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGlmIChtX2V4cHItPmhh
c0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUlu
Q29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFy
Z2V0KCksIGZhbHNlKTsKICAgICBlbHNlIHsKQEAgLTE1NDYsNyArMTU0Nyw3IEBAIFJlZ2lzdGVy
SUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3BlID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CiAgICAgUmVmUHRyPExhYmVsPiB0b3BP
Zkxvb3AgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxpbmVO
bygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
bV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5jb2x1bW5ObygpKTsK
ICAgICBpZiAobV9leHByLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKQogICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxvb3AuZ2V0
KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCB0cnVlKTsKICAgICBlbHNlIHsKQEAgLTE1NjAsNyAr
MTU2MSw3IEBAIFJlZ2lzdGVySUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29u
dGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIG1fZXhwci0+bGluZU5vKCksIG1fZXhwci0+bGluZU5vKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAgaWYgKG1fZXhwci0+aGFzQ29uZGl0aW9uQ29udGV4
dENvZGVnZW4oKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0
KG1fZXhwciwgdG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgZmFsc2UpOwpA
QCAtMTU4MSw3ICsxNTgyLDcgQEAgUmVnaXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBSZWZQ
dHI8TGFiZWxTY29wZT4gc2NvcGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3Bl
OjpMb29wKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAKICAgICBpZiAobV9leHByMSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjEpOwpAQCAtMTYwMiw3ICsxNjAzLDcgQEAgUmVn
aXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRM
YWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICBpZiAobV9leHByMykKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjMpOwogCkBAIC0x
NjI5LDcgKzE2MzAsNyBAQCBSZWdpc3RlcklEKiBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAgIGlmICghbV9sZXhw
ci0+aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gZW1pdFRocm93UmVmZXJlbmNlRXJyb3Io
Z2VuZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGZvci1pbiBzdGF0ZW1lbnQgaXMgbm90IGEgcmVmZXJl
bmNlLiIpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigp
KTsKIAogICAgIGlmIChtX2luaXQpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpLCBtX2luaXQpOwpAQCAtMTY5Miw3ICsxNjkzLDcgQEAgUmVnaXN0
ZXJJRCogRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHMKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRp
bnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TmV4dFByb3BlcnR5TmFtZShwcm9wZXJ0
eU5hbWUsIGJhc2UuZ2V0KCksIGkuZ2V0KCksIHNpemUuZ2V0KCksIGl0ZXIuZ2V0KCksIGxvb3BT
dGFydC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0
ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVt
bigpKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKICAg
ICByZXR1cm4gZHN0OwogfQpAQCAtMTcwMiw3ICsxNzAzLDcgQEAgUmVnaXN0ZXJJRCogRm9ySW5O
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHMKIC8vIEVDTUEgMTIuNwogUmVnaXN0ZXJJRCogQ29udGludWVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAg
TGFiZWxTY29wZSogc2NvcGUgPSBnZW5lcmF0b3IuY29udGludWVUYXJnZXQobV9pZGVudCk7CiAg
ICAgQVNTRVJUKHNjb3BlKTsKQEAgLTE3MTYsNyArMTcxNyw3IEBAIFJlZ2lzdGVySUQqIENvbnRp
bnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqCiAvLyBFQ01BIDEyLjgKIFJlZ2lzdGVySUQqIEJyZWFrTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIAogICAgIExh
YmVsU2NvcGUqIHNjb3BlID0gZ2VuZXJhdG9yLmJyZWFrVGFyZ2V0KG1faWRlbnQpOwogICAgIEFT
U0VSVChzY29wZSk7CkBAIC0xNzI5LDcgKzE3MzAsNyBAQCBSZWdpc3RlcklEKiBCcmVha05vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
cwogCiBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgQVNTRVJUKGdlbmVyYXRvci5jb2RlVHlw
ZSgpID09IEZ1bmN0aW9uQ29kZSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpCkBAIC0xNzQ1LDcgKzE3NDYsNyBAQCBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAog
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBTY29wZXMobDAuZ2V0KCksIDApOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKGwwLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFJldHVy
bihyMCk7CiB9CiAKQEAgLTE3NTMsNyArMTc1NCw3IEBAIFJlZ2lzdGVySUQqIFJldHVybk5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
CiAKIFJlZ2lzdGVySUQqIFdpdGhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNj
b3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShz
Y29wZS5nZXQoKSwgbV9leHByKTsgLy8gc2NvcGUgbXVzdCBiZSBwcm90ZWN0ZWQgdW50aWwgcG9w
cGVkCkBAIC0xOTE4LDcgKzE5MTksNyBAQCBSZWdpc3RlcklEKiBDYXNlQmxvY2tOb2RlOjplbWl0
Qnl0ZWNvZGVGb3JCbG9jayhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogCiBSZWdp
c3RlcklEKiBTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdp
bGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0
TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3BlID0g
Z2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6U3dpdGNoKTsKIApAQCAtMTkzMyw3
ICsxOTM0LDcgQEAgUmVnaXN0ZXJJRCogU3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAogUmVnaXN0ZXJJRCogTGFiZWxO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAKICAgICBBU1NFUlQoIWdlbmVyYXRvci5icmVha1RhcmdldChtX25hbWUpKTsKIApAQCAt
MTk0OCw3ICsxOTQ5LDcgQEAgUmVnaXN0ZXJJRCogTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCog
VGhyb3dOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBj
b2x1bW4oKSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAg
ICAgICAgIGRzdCA9IDA7CkBAIC0xOTY1LDcgKzE5NjYsNyBAQCBSZWdpc3RlcklEKiBUcnlOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogICAgIC8vIE5PVEU6IFRoZSBjYXRjaCBhbmQgZmluYWxseSBibG9ja3MgbXVzdCBiZSBs
YWJlbGVkIGV4cGxpY2l0bHksIHNvIHRoZQogICAgIC8vIG9wdGltaXplciBrbm93cyB0aGV5IG1h
eSBiZSBqdW1wZWQgdG8gZnJvbSBhbnl3aGVyZS4KIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBSZWZQdHI8TGFiZWw+IHRyeVN0YXJ0TGFi
ZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBpZiAobV9maW5hbGx5QmxvY2spCkBAIC0y
MDIyLDEzICsyMDIzLDEzIEBAIGlubGluZSB2b2lkIFNjb3BlTm9kZTo6ZW1pdFN0YXRlbWVudHNC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAKIFJlZ2lzdGVySUQq
IFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQ
cm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1u
KCkpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRzdFJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0TG9hZChkc3RSZWdpc3Rlci5nZXQoKSwg
anNVbmRlZmluZWQoKSk7CiAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGRz
dFJlZ2lzdGVyLmdldCgpKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1
dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1
bW4oKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFbmQoZHN0UmVnaXN0ZXIuZ2V0KCkpOwogICAgIHJl
dHVybiAwOwogfQpAQCAtMjAzNywxMyArMjAzOCwxMyBAQCBSZWdpc3RlcklEKiBQcm9ncmFtTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
KQogCiBSZWdpc3RlcklEKiBFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCksIGNvbHVtbigpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkc3RSZWdpc3RlciA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQoZHN0UmVn
aXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUo
Z2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY29sdW1uKCkpOwogICAgIGdlbmVyYXRvci5lbWl0RW5kKGRzdFJlZ2lzdGVyLmdl
dCgpKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTIwNTIsNyArMjA1Myw3IEBAIFJlZ2lzdGVySUQq
IEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCopCiAKIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQm9keU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1lLCBmaXJz
dExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNv
ZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAogICAgIFN0YXRlbWVu
dE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOwpAQCAtMjA2
OCw3ICsyMDY5LDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAvLyBJZiB0aGVyZSBp
cyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCiAgICAgaWYgKCFy
ZXR1cm5Ob2RlKSB7CiAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3Ry
dWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgw
LCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExl
YXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5oCmluZGV4IGEyMzczMjkxODc4MDNlZGE5NTdhMzdkM2EwYTkwN2FmZjBiODkyMzIuLmEwM2Zk
ZjllNGIyZDQ0M2EyZTkzNTQwZTc0NDA2YjA5ZjBhNzYwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC00MiwxNCArNDIsMTQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3QqKTsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEV4ZWNTdGF0ZSosIFNvdXJjZVByb3ZpZGVy
KiwgaW50IGVycm9yTGluZU51bWJlciwgY29uc3QgVVN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUm
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFuZGxlcikgPSAw
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmV0dXJu
RXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihjb25zdCBEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgYm9vbCBoYXNIYW5kbGVyKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBh
dFN0YXRlbWVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgY2FsbEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCByZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgPSAwOwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qg
c291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxFeGVjdXRl
UHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3Vy
Y2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgPSAwOwog
CiAgICAgICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoSlNHbG9iYWxEYXRhKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CmluZGV4IGI4NjEwZTdiZmJjODVlODE3YzE5ZTljZDg2MTEwYjgxYmQ0ZTkwMWIuLjMwZDI4N2Zk
NDgxMGQ2NWFjYzAwYjU2NzllNTdlZDA0OWEzYjgwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNzEyLDkgKzcxMiw5IEBA
IE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUoQ2FsbEZyYW1l
KiYgY2FsbEZyYW1lLCBKU1ZhbHVlIGV4CiAgICAgaWYgKERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNh
bGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKSB7CiAgICAgICAgIERl
YnVnZ2VyQ2FsbEZyYW1lIGRlYnVnZ2VyQ2FsbEZyYW1lKGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFs
dWUpOwogICAgICAgICBpZiAoY2FsbEZyYW1lLT5jYWxsZWUoKSkKLSAgICAgICAgICAgIGRlYnVn
Z2VyLT5yZXR1cm5FdmVudChkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bGFzdExp
bmUoKSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+cmV0dXJuRXZlbnQoZGVidWdnZXJDYWxsRnJh
bWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCktPmxhc3RMaW5lKCksIDApOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBkZWJ1Z2dlci0+ZGlkRXhlY3V0ZVByb2dyYW0oZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCktPmxhc3RMaW5lKCkpOworICAgICAgICAgICAgZGVidWdnZXItPmRpZEV4ZWN1dGVQ
cm9ncmFtKGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5z
b3VyY2VJRCgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5sYXN0TGluZSgpLCAwKTsK
ICAgICB9CiAKICAgICAvLyBJZiB0aGlzIGNhbGwgZnJhbWUgY3JlYXRlZCBhbiBhY3RpdmF0aW9u
IG9yIGFuICdhcmd1bWVudHMnIG9iamVjdCwgdGVhciBpdCBvZmYuCkBAIC0xMDM2LDcgKzEwMzYs
NyBAQCBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0aHJvd0V4Y2VwdGlv
bihDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVgogICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIg
PSBjYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkgewogICAgICAg
ICBEZWJ1Z2dlckNhbGxGcmFtZSBkZWJ1Z2dlckNhbGxGcmFtZShjYWxsRnJhbWUsIGV4Y2VwdGlv
blZhbHVlKTsKICAgICAgICAgYm9vbCBoYXNIYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICBkZWJ1Z2dlci0+ZXhjZXB0
aW9uKGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3Vy
Y2VJRCgpLCBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCksIGhhc0hhbmRsZXIpOworICAgICAgICBkZWJ1Z2dlci0+ZXhjZXB0aW9uKGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBjb2Rl
QmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCksIDAsIGhh
c0hhbmRsZXIpOwogICAgIH0KIAogICAgIC8vIENhbGN1bGF0ZSBhbiBleGNlcHRpb24gaGFuZGxl
ciB2UEMsIHVud2luZGluZyBjYWxsIGZyYW1lcyBhcyBuZWNlc3NhcnkuCkBAIC0xNjI0LDcgKzE2
MjQsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFs
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZQogICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KHJlc3VsdCk7CiB9CiAKLU5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUs
IGludCBsYXN0TGluZSkKK05FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUs
IGludCBsYXN0TGluZSwgaW50IGNvbHVtbikKIHsKICAgICBEZWJ1Z2dlciogZGVidWdnZXIgPSBj
YWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKICAgICBpZiAoIWRl
YnVnZ2VyKQpAQCAtMTYzMiwyMiArMTYzMiwyMiBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnBy
ZXRlcjo6ZGVidWcoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIERlYnVnSG9va0lEIGRlYnVnSG9vawog
CiAgICAgc3dpdGNoIChkZWJ1Z0hvb2tJRCkgewogICAgICAgICBjYXNlIERpZEVudGVyQ2FsbEZy
YW1lOgotICAgICAgICAgICAgZGVidWdnZXItPmNhbGxFdmVudChjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJzdExpbmUp
OworICAgICAgICAgICAgZGVidWdnZXItPmNhbGxFdmVudChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJzdExpbmUsIGNv
bHVtbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgV2lsbExlYXZlQ2FsbEZy
YW1lOgotICAgICAgICAgICAgZGVidWdnZXItPnJldHVybkV2ZW50KGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5l
KTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5yZXR1cm5FdmVudChjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSwg
Y29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBXaWxsRXhlY3V0ZVN0
YXRlbWVudDoKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5hdFN0YXRlbWVudChjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJz
dExpbmUpOworICAgICAgICAgICAgZGVidWdnZXItPmF0U3RhdGVtZW50KGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGZpcnN0
TGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBXaWxsRXhl
Y3V0ZVByb2dyYW06Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+d2lsbEV4ZWN1dGVQcm9ncmFtKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJj
ZUlEKCksIGZpcnN0TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+d2lsbEV4ZWN1dGVQcm9n
cmFtKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkt
PnNvdXJjZUlEKCksIGZpcnN0TGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgY2FzZSBEaWRFeGVjdXRlUHJvZ3JhbToKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRF
eGVjdXRlUHJvZ3JhbShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhl
Y3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+
ZGlkRXhlY3V0ZVByb2dyYW0oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25l
ckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgbGFzdExpbmUsIGNvbHVtbik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGNhc2UgRGlkUmVhY2hCcmVha3BvaW50OgotICAgICAgICAgICAg
ZGVidWdnZXItPmRpZFJlYWNoQnJlYWtwb2ludChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSk7CisgICAgICAg
ICAgICBkZWJ1Z2dlci0+ZGlkUmVhY2hCcmVha3BvaW50KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5lLCBjb2x1
bW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWRiMjNmMjM3MjM4NGRhZjg4
M2IxNGVmZjhiYWY1ZGM1ZmU2ZGY0MS4uNDdkNjY4OTg1MTVmMjE5MWU2NTkyNWUwMjc3ODc0ZWU3
YjAwOTA2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgKQEAgLTIyMCw3ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU2Ft
cGxpbmdUb29sKiBzYW1wbGVyKCkgeyByZXR1cm4gbV9zYW1wbGVyLmdldCgpOyB9CiAKICAgICAg
ICAgTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiB0aHJvd0V4Y2VwdGlvbihDYWxsRnJhbWUqJiwg
SlNWYWx1ZSYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgTkVWRVJfSU5MSU5F
IHZvaWQgZGVidWcoQ2FsbEZyYW1lKiwgRGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBs
YXN0TGluZSk7CisgICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERl
YnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUsIGludCBjb2x1bW4pOwogICAg
ICAgICBzdGF0aWMgY29uc3QgVVN0cmluZyBnZXRUcmFjZUxpbmUoQ2FsbEZyYW1lKiwgU3RhY2tG
cmFtZUNvZGVUeXBlLCBjb25zdCBVU3RyaW5nJiwgaW50KTsKICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZ2V0U3RhY2tUcmFjZShKU0dsb2JhbERhdGEqLCBWZWN0b3I8U3Rh
Y2tGcmFtZT4mIHJlc3VsdHMpOwogICAgICAgICBzdGF0aWMgdm9pZCBhZGRTdGFja1RyYWNlSWZO
ZWNlc3NhcnkoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDJlNDQ4ZGQ1MmFhOTYxZDliMjQxYWMwNWQwNDc4
MmEwNjE1MzZkMTQuLjZiNGE3NzY1YzhhN2Q3MzI5ZGRmZmRhY2JmOWEyOTUyNjNjNjM0MTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTE1OSw2ICsxMTU5
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJ
bW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsK
KyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9u
WzRdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmNhbGwoKTsKICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDRmODU4OTU1
NzJjMGU5ZjMyMjlhYjQ5MDgwYjZlZTU5NjE0YTgyNTEuLmY5OTdiM2U4YmQxMTJhMzc4NTM2MTRl
OTRkMTM3MDk2N2IwMTMwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKQEAgLTE0ODAsNiArMTQ4MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2Rl
YnVnKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsK
ICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kKSk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0
aW9uWzRdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmNhbGwoKTsKICNlbmRpZgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRleCA2YjgwODI4ODY5Njc0YjIwZTk1
NDI4ZTg0ZGQxODU5NTU5OTcyMzE4Li5jMGQxMDllMWQ4ZjNhMDE4NWNlZGMyYmY3MDI4MjRkNTBk
OTc2ODAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtMzM2OSw4
ICszMzY5LDkgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfZGVidWcpCiAgICAgaW50
IGRlYnVnSG9va0lEID0gc3RhY2tGcmFtZS5hcmdzWzBdLmludDMyKCk7CiAgICAgaW50IGZpcnN0
TGluZSA9IHN0YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpOwogICAgIGludCBsYXN0TGluZSA9IHN0
YWNrRnJhbWUuYXJnc1syXS5pbnQzMigpOworICAgIGludCBjb2x1bW4gPSBzdGFja0ZyYW1lLmFy
Z3NbM10uaW50MzIoKTsKIAotICAgIHN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXIt
PmRlYnVnKGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwg
Zmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgc3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5pbnRlcnBy
ZXRlci0+ZGVidWcoY2FsbEZyYW1lLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29r
SUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lLCBjb2x1bW4pOwogfQogCiBERUZJTkVfU1RVQl9GVU5D
VElPTih2b2lkKiwgdm1fdGhyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCmluZGV4IDBlYjYwY2Y4OTkyZmYwOTI0OTkxMzQ0MzI4YmY5MzFhMWJmNzM2ZTcuLjRj
NWY2ODI1YWY1NDc0MTc1Nzc0NTkwMDcwZmQ2MzNhYjYxZDQxODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0xMTIsOCArMTEyLDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCBpbnQgIERvbnRCdWlsZEtleXdvcmRzID0gMDsKICAgICBzdGF0aWMg
Y29uc3QgaW50ICBEb250QnVpbGRTdHJpbmdzID0gMDsKIAotICAgIEV4cHJlc3Npb25Ob2RlKiBt
YWtlQmluYXJ5Tm9kZShpbnQgbGluZU51bWJlciwgaW50IHRva2VuLCBzdGQ6OnBhaXI8RXhwcmVz
c2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+LCBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5h
cnlPcEluZm8+KTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBp
bnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VC
aW5hcnlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQgdG9rZW4sIHN0
ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4sIHN0ZDo6cGFpcjxFeHByZXNz
aW9uTm9kZSosIEJpbmFyeU9wSW5mbz4pOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRnVuY3Rp
b25DYWxsTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGZ1bmMsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQg
ZW5kKTsKIAogICAgIEpTQzo6U291cmNlRWxlbWVudHMqIGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkg
eyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEpTQzo6U291cmNlRWxlbWVudHMoKTsgfQogCkBA
IC0xMjQsMTY4ICsxMjQsMTY4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kVG9Db21tYShD
b21tYU5vZGUqIGNvbW1hTm9kZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgY29tbWFOb2RlLT5h
cHBlbmQoZXhwcik7IH0KIAotICAgIENvbW1hTm9kZSogY3JlYXRlQ29tbWFFeHByKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogcmhzKSB7IHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29tbWFOb2RlKGxpbmVOdW1iZXIsIGxocywgcmhzKTsgfQot
Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VBc3NpZ25Ob2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBs
ZWZ0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBp
bnQgZGl2b3QsIGludCBlbmQpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlUHJlZml4Tm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQg
ZGl2b3QsIGludCBlbmQpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlUG9zdGZpeE5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRp
dm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZVR5cGVPZk5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VEZWxl
dGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSosIGludCBzdGFydCwgaW50IGRp
dm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZU5lZ2F0ZU5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXR3
aXNlTm90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqKTsKLSAgICBFeHByZXNz
aW9uTm9kZSogbWFrZU11bHROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVm
dCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAg
IEV4cHJlc3Npb25Ob2RlKiBtYWtlRGl2Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZU1vZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VBZGROb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlU3ViTm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdFhPck5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSog
cmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1h
a2VCaXRBbmROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlQml0T3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVm
dCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAg
IEV4cHJlc3Npb25Ob2RlKiBtYWtlTGVmdFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZVJpZ2h0U2hpZnROb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlVVJpZ2h0U2hp
ZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotCi0gICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZUxvZ2ljYWxOb3QoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9naWNhbE5vdE5vZGUobGluZU51bWJlciwg
ZXhwcik7IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlVW5hcnlQbHVzKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVu
YXJ5UGx1c05vZGUobGluZU51bWJlciwgZXhwcik7IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlVm9pZChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgQ29tbWFO
b2RlKiBjcmVhdGVDb21tYUV4cHIoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiByaHMpIHsgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBDb21tYU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMsIHJocyk7
IH0KKworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQXNzaWduTm9kZShpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIE9wZXJhdG9yLCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgbGVmdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZVByZWZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsK
KyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVBvc3RmaXhOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCBpbnQgc3RhcnQsIGludCBk
aXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VUeXBlT2ZOb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSopOworICAgIEV4cHJl
c3Npb25Ob2RlKiBtYWtlRGVsZXRlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAg
RXhwcmVzc2lvbk5vZGUqIG1ha2VOZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSopOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0d2lz
ZU5vdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
Kik7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VNdWx0Tm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZURp
dk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBs
ZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VNb2ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQWRkTm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHBy
ZXNzaW9uTm9kZSogbWFrZVN1Yk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRYT3JOb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlQml0QW5kTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdE9yTm9kZShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Np
b25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZUxlZnRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VSaWdodFNoaWZ0Tm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHBy
ZXNzaW9uTm9kZSogbWFrZVVSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKworICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVMb2dp
Y2FsTm90KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxOb3ROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgZXhwcik7IH0KKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlVW5h
cnlQbHVzKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBleHByKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVWb2lk
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikK
ICAgICB7CiAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIFZvaWROb2RlKGxpbmVOdW1iZXIsIGV4cHIpOworICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIFZvaWROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcik7
CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2RlKiB0aGlzRXhwcihpbnQgbGluZU51bWJlcikKKyAg
ICBFeHByZXNzaW9uTm9kZSogdGhpc0V4cHIoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpCiAgICAgewogICAgICAgICB1c2VzVGhpcygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIFRoaXNOb2RlKGxpbmVOdW1iZXIpOworICAgICAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIFRoaXNOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAgICAgfQotICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVSZXNvbHZlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCwgaW50IHN0YXJ0KQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVSZXNv
bHZlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCwgaW50IHN0YXJ0KQogICAgIHsKICAgICAgICAgaWYgKG1fZ2xvYmFsRGF0YS0+cHJvcGVy
dHlOYW1lcy0+YXJndW1lbnRzID09ICppZGVudCkKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMo
KTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBSZXNvbHZlTm9kZShsaW5lTnVt
YmVyLCAqaWRlbnQsIHN0YXJ0KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBS
ZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICppZGVudCwgc3RhcnQpOwogICAg
IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQgbGluZU51bWJl
cikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE9iamVjdExpdGVyYWxOb2RlKGxpbmVOdW1i
ZXIpOyB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU9iamVjdExpdGVyYWwoaW50IGxpbmVO
dW1iZXIsIFByb3BlcnR5TGlzdE5vZGUqIHByb3BlcnRpZXMpIHsgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBPYmplY3RMaXRlcmFsTm9kZShsaW5lTnVtYmVyLCBwcm9wZXJ0aWVzKTsgfQorICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVPYmplY3RMaXRlcmFsKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgT2JqZWN0TGl0ZXJhbE5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVPYmplY3RMaXRlcmFsKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBQcm9wZXJ0
eUxpc3ROb2RlKiBwcm9wZXJ0aWVzKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgT2JqZWN0
TGl0ZXJhbE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBwcm9wZXJ0aWVzKTsgfQogCi0g
ICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5KGludCBsaW5lTnVtYmVyLCBpbnQgZWxpc2lv
bnMpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5KGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBpbnQgZWxpc2lvbnMpCiAgICAgewogICAgICAgICBpZiAoZWxpc2lvbnMp
CiAgICAgICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBBcnJheU5vZGUobGluZU51bWJlciwgZWxpc2lvbnMpOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGVs
aXNpb25zKTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxp
bmVOdW1iZXIsIEVsZW1lbnROb2RlKiBlbGVtcykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IEFycmF5Tm9kZShsaW5lTnVtYmVyLCBlbGVtcyk7IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIGludCBlbGlzaW9ucywgRWxlbWVudE5vZGUqIGVsZW1z
KQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJheShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgRWxlbWVudE5vZGUqIGVsZW1zKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgQXJyYXlOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZWxlbXMpOyB9CisgICAgRXhw
cmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBpbnQgZWxpc2lvbnMsIEVsZW1lbnROb2RlKiBlbGVtcykKICAgICB7CiAgICAgICAgIGlmIChl
bGlzaW9ucykKICAgICAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5lTnVtYmVyLCBlbGlzaW9ucywgZWxlbXMpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGVsaXNpb25zLCBlbGVtcyk7CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVOdW1iZXJFeHByKGludCBsaW5lTnVtYmVyLCBkb3VibGUgZCkKKyAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlTnVtYmVyRXhwcihpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgZG91YmxlIGQpCiAgICAgewogICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdW1iZXJOb2RlKGxpbmVOdW1iZXIsIGQpOworICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bWJlck5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBkKTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlU3RyaW5nKGlu
dCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBzdHJpbmcpCisgICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZVN0cmluZyhpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3Qg
SWRlbnRpZmllciogc3RyaW5nKQogICAgIHsKICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgU3RyaW5nTm9kZShsaW5lTnVtYmVyLCAqc3Ry
aW5nKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBTdHJpbmdOb2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgKnN0cmluZyk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZUJvb2xlYW4oaW50IGxpbmVOdW1iZXIsIGJvb2wgYikKKyAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlQm9vbGVhbihpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9v
bCBiKQogICAgIHsKICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgQm9vbGVhbk5vZGUobGluZU51bWJlciwgYik7CisgICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgQm9vbGVhbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBiKTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTnVsbChpbnQgbGluZU51
bWJlcikKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTnVsbChpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bGxOb2RlKGxpbmVOdW1iZXIpOworICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bGxOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
cik7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogcHJvcGVy
dHksIGJvb2wgcHJvcGVydHlIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGlu
dCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9u
Tm9kZSogcHJvcGVydHksIGJvb2wgcHJvcGVydHlIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBp
bnQgZGl2b3QsIGludCBlbmQpCiAgICAgewotICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBu
b2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEJyYWNrZXRBY2Nlc3Nvck5vZGUobGluZU51bWJlciwg
YmFzZSwgcHJvcGVydHksIHByb3BlcnR5SGFzQXNzaWdubWVudHMpOworICAgICAgICBCcmFja2V0
QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEJyYWNrZXRBY2Nlc3Nvck5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBiYXNlLCBwcm9wZXJ0eSwgcHJvcGVydHlIYXNB
c3NpZ25tZW50cyk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBk
aXZvdCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZURvdEFjY2VzcyhpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50
IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRG90QWNjZXNzKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciogcHJvcGVydHksIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogICAgIHsKLSAgICAg
ICAgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIERvdEFjY2Vzc29y
Tm9kZShsaW5lTnVtYmVyLCBiYXNlLCAqcHJvcGVydHkpOworICAgICAgICBEb3RBY2Nlc3Nvck5v
ZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRG90QWNjZXNzb3JOb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgYmFzZSwgKnByb3BlcnR5KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9j
YXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAg
ICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlUmVnRXhwKGludCBsaW5lTnVtYmVyLCBj
b25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50IHN0
YXJ0KQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVSZWdFeHAoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZp
ZXImIGZsYWdzLCBpbnQgc3RhcnQpCiAgICAgewogICAgICAgICBpZiAoWWFycjo6Y2hlY2tTeW50
YXgocGF0dGVybi51c3RyaW5nKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIFJl
Z0V4cE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVnRXhwTm9kZShsaW5lTnVtYmVy
LCBwYXR0ZXJuLCBmbGFncyk7CisgICAgICAgIFJlZ0V4cE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgUmVnRXhwTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHBhdHRlcm4sIGZs
YWdzKTsKICAgICAgICAgaW50IHNpemUgPSBwYXR0ZXJuLmxlbmd0aCgpICsgMjsgLy8gKyAyIGZv
ciB0aGUgdHdvIC8ncwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwg
c3RhcnQgKyBzaXplLCBzdGFydCArIHNpemUpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9
CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTmV3RXhwcihpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3VtZW50cywgaW50IHN0YXJ0LCBp
bnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU5ld0V4cHIoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1
bWVudHNOb2RlKiBhcmd1bWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogICAg
IHsKLSAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTmV3RXhw
ck5vZGUobGluZU51bWJlciwgZXhwciwgYXJndW1lbnRzKTsKKyAgICAgICAgTmV3RXhwck5vZGUq
IG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTmV3RXhwck5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBleHByLCBhcmd1bWVudHMpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihu
b2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAot
ICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdFeHByKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBj
cmVhdGVOZXdFeHByKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgTmV3RXhwck5v
ZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTmV3RXhwck5vZGUobGluZU51bWJlciwgZXhw
cik7CisgICAgICAgIE5ld0V4cHJOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIE5ld0V4
cHJOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcik7CiAgICAgICAgIHNldEV4Y2Vw
dGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBlbmQsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2Rl
OwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVDb25kaXRpb25hbEV4cHIoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIEV4cHJlc3Npb25Ob2RlKiBs
aHMsIEV4cHJlc3Npb25Ob2RlKiByaHMpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUNvbmRp
dGlvbmFsRXhwcihpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGNvbmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIHJocykK
ICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uZGl0aW9uYWxOb2Rl
KGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgbGhzLCByaHMpOworICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIENvbmRpdGlvbmFsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNv
bmRpdGlvbiwgbGhzLCByaHMpOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVB
c3NpZ25SZXNvbHZlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhw
cmVzc2lvbk5vZGUqIHJocywgYm9vbCByaHNIYXNBc3NpZ25tZW50LCBpbnQgc3RhcnQsIGludCBk
aXZvdCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXNzaWduUmVzb2x2ZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEV4cHJlc3Npb25Ob2RlKiByaHMsIGJvb2wgcmhzSGFzQXNzaWdubWVudCwgaW50IHN0YXJ0LCBp
bnQgZGl2b3QsIGludCBlbmQpCiAgICAgewogICAgICAgICBpZiAocmhzLT5pc0Z1bmNFeHByTm9k
ZSgpKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4ocmhzKS0+Ym9keSgp
LT5zZXRJbmZlcnJlZE5hbWUoaWRlbnQpOwotICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9k
ZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25SZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBpZGVu
dCwgcmhzLCByaHNIYXNBc3NpZ25tZW50KTsKKyAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5v
ZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBpZGVudCwgcmhzLCByaHNIYXNBc3NpZ25tZW50KTsKICAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4g
bm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rpb25FeHByKGlu
dCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBi
b2R5LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJzLCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xv
c2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKKyAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rpb25FeHByKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBQ
YXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJzLCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFj
ZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKICAgICB7Ci0gICAgICAg
IEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNFeHByTm9kZShs
aW5lTnVtYmVyLCAqbmFtZSwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5C
cmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtZXRlcnMpOwotICAg
ICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUpOworICAgICAgICBG
dW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCAqbmFtZSwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHBy
ZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFt
ZXRlcnMpOworICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUs
IGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgRnVu
Y3Rpb25Cb2R5Tm9kZSogY3JlYXRlRnVuY3Rpb25Cb2R5KGludCBsaW5lTnVtYmVyLCBib29sIGlu
U3RyaWN0Q29udGV4dCkKKyAgICBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGVGdW5jdGlvbkJvZHko
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX2dsb2JhbERh
dGEsIGxpbmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCk7CisgICAgICAgIHJldHVybiBGdW5jdGlv
bkJvZHlOb2RlOjpjcmVhdGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IGluU3RyaWN0Q29udGV4dCk7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlIDxib29sPiBQcm9w
ZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoaW50IGxpbmVOdW1iZXIsIFBy
b3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBQYXJhbWV0ZXJO
b2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGlu
dCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQorICAg
IHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVy
dHkoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFByb3BlcnR5Tm9kZTo6VHlwZSB0
eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0
aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBp
bnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQogICAgIHsKICAgICAgICAgQVNTRVJU
KG5hbWUpOwotICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUp
OworICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUsIGNvbHVt
bk51bWJlcik7CiAgICAgICAgIGJvZHktPnNldEluZmVycmVkTmFtZSgqbmFtZSk7Ci0gICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwgKm5h
bWUsIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobGluZU51bWJlciwgbV9nbG9iYWxE
YXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5z
dWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSks
IHBhcmFtcyksIHR5cGUpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3Bl
cnR5Tm9kZShtX2dsb2JhbERhdGEsICpuYW1lLCBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4cHJO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVz
LT5udWxsSWRlbnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5C
cmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtcyksIHR5cGUpOwog
ICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0
ZXJPclNldHRlclByb3BlcnR5KEpTR2xvYmFsRGF0YSosIGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0
eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVu
Y3Rpb25Cb2R5Tm9kZSogYm9keSwgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3Ms
IGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCisgICAgdGVtcGxhdGUgPGJvb2w+
IFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShKU0dsb2JhbERhdGEq
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUHJvcGVydHlOb2RlOjpUeXBlIHR5
cGUsIGRvdWJsZSBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUq
IGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0
TGluZSwgaW50IGJvZHlFbmRMaW5lKQogICAgIHsKLSAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlT
dGFydExpbmUsIGJvZHlFbmRMaW5lKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCBuYW1lLCBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVu
Y0V4cHJOb2RlKGxpbmVOdW1iZXIsIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElk
ZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3Ms
IGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbXMpLCB0eXBlKTsKKyAgICAgICAg
Ym9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERh
dGEsIG5hbWUsIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBi
b2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNl
UG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1zKSwgdHlwZSk7CiAgICAgfQogCiAgICAgQXJndW1l
bnRzTm9kZSogY3JlYXRlQXJndW1lbnRzKCkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFy
Z3VtZW50c05vZGUoKTsgfQogICAgIEFyZ3VtZW50c05vZGUqIGNyZWF0ZUFyZ3VtZW50cyhBcmd1
bWVudExpc3ROb2RlKiBhcmdzKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRz
Tm9kZShhcmdzKTsgfQotICAgIEFyZ3VtZW50TGlzdE5vZGUqIGNyZWF0ZUFyZ3VtZW50c0xpc3Qo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBhcmcpIHsgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxpbmVOdW1iZXIsIGFyZyk7IH0KLSAgICBBcmd1bWVu
dExpc3ROb2RlKiBjcmVhdGVBcmd1bWVudHNMaXN0KGludCBsaW5lTnVtYmVyLCBBcmd1bWVudExp
c3ROb2RlKiBhcmdzLCBFeHByZXNzaW9uTm9kZSogYXJnKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVtYmVyLCBhcmdzLCBhcmcpOyB9CisgICAgQXJn
dW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRzTGlzdChpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGFyZykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEFyZ3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBhcmcpOyB9Cisg
ICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRzTGlzdChpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgQXJndW1lbnRMaXN0Tm9kZSogYXJncywgRXhwcmVzc2lvbk5vZGUq
IGFyZykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBhcmdzLCBhcmcpOyB9CiAKICAgICB0ZW1wbGF0ZSA8Ym9vbD4g
UHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5h
bWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSkKICAgICB7
CkBAIC0yOTQsOCArMjk0LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERhdGEsICpwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5
cGUpOwogICAgIH0KICAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9w
ZXJ0eShKU0dsb2JhbERhdGEqLCBkb3VibGUgcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSog
bm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUpOyB9
Ci0gICAgUHJvcGVydHlMaXN0Tm9kZSogY3JlYXRlUHJvcGVydHlMaXN0KGludCBsaW5lTnVtYmVy
LCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJv
cGVydHlMaXN0Tm9kZShsaW5lTnVtYmVyLCBwcm9wZXJ0eSk7IH0KLSAgICBQcm9wZXJ0eUxpc3RO
b2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5Tm9kZSogcHJv
cGVydHksIFByb3BlcnR5TGlzdE5vZGUqIHRhaWwpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBQcm9wZXJ0eUxpc3ROb2RlKGxpbmVOdW1iZXIsIHByb3BlcnR5LCB0YWlsKTsgfQorICAgIFBy
b3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0eSkgeyByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIFByb3BlcnR5TGlzdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBwcm9wZXJ0
eSk7IH0KKyAgICBQcm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFByb3BlcnR5Tm9kZSogcHJvcGVydHksIFByb3BlcnR5
TGlzdE5vZGUqIHRhaWwpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eUxpc3RO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgcHJvcGVydHksIHRhaWwpOyB9CiAKICAgICBF
bGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExpc3QoaW50IGVsaXNpb25zLCBFeHByZXNzaW9uTm9k
ZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVsZW1lbnROb2RlKGVsaXNpb25z
LCBleHByKTsgfQogICAgIEVsZW1lbnROb2RlKiBjcmVhdGVFbGVtZW50TGlzdChFbGVtZW50Tm9k
ZSogZWxlbXMsIGludCBlbGlzaW9ucywgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBFbGVtZW50Tm9kZShlbGVtcywgZWxpc2lvbnMsIGV4cHIpOyB9CkBA
IC0zMDksMTkxICszMDksMTkxIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50
cyhGdW5jdGlvbkJvZHlOb2RlKiBub2RlKSB7IG5vZGUtPnNldFVzZXNBcmd1bWVudHMoKTsgfQog
Ci0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFt
ZXRlck5vZGUqIHBhcmFtZXRlcnMsIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9z
LCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0
ZXJOb2RlKiBwYXJhbWV0ZXJzLCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywg
aW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKICAgICB7Ci0gICAgICAgIEZ1bmNE
ZWNsTm9kZSogZGVjbCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRGVjbE5vZGUobGluZU51bWJl
ciwgKm5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3Ms
IGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgRnVu
Y0RlY2xOb2RlKiBkZWNsID0gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNEZWNsTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Np
b24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVy
cyk7CiAgICAgICAgIGlmICgqbmFtZSA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFy
Z3VtZW50cykKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKICAgICAgICAgbV9zY29wZS5t
X2Z1bmNEZWNsYXJhdGlvbnMtPmRhdGEuYXBwZW5kKGRlY2wtPmJvZHkoKSk7Ci0gICAgICAgIGJv
ZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSk7CisgICAgICAgIGJvZHktPnNl
dExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAg
cmV0dXJuIGRlY2w7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQmxvY2tTdGF0
ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEpTQzo6U291cmNlRWxlbWVudHMqIGVsZW1lbnRzLCBpbnQg
c3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCbG9ja1N0
YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgSlNDOjpTb3VyY2VFbGVt
ZW50cyogZWxlbWVudHMsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAg
ICAgQmxvY2tOb2RlKiBibG9jayA9IG5ldyAobV9nbG9iYWxEYXRhKSBCbG9ja05vZGUobGluZU51
bWJlciwgZWxlbWVudHMpOwotICAgICAgICBibG9jay0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGlu
ZSk7CisgICAgICAgIEJsb2NrTm9kZSogYmxvY2sgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQmxvY2tO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZWxlbWVudHMpOworICAgICAgICBibG9jay0+
c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJu
IGJsb2NrOwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUV4cHJTdGF0ZW1lbnQo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQp
CisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRXhwclN0YXRlbWVudChpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVu
ZCkKICAgICB7Ci0gICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgRXhwclN0YXRlbWVudE5vZGUobGluZU51bWJlciwgZXhwcik7Ci0gICAgICAgIHJl
c3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQpOworICAgICAgICBFeHByU3RhdGVtZW50Tm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEV4cHJTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgZXhwcik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGNv
bHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlSWZTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5k
KQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2Rl
KiB0cnVlQmxvY2ssIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIElmTm9kZSog
cmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIElmTm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24s
IHRydWVCbG9jayk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQpOworICAgICAg
ICBJZk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBJZk5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBjb25kaXRpb24sIHRydWVCbG9jayk7CisgICAgICAgIHJlc3VsdC0+c2V0
TG9jKHN0YXJ0LCBlbmQsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlSWZTdGF0ZW1lbnQoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywg
U3RhdGVtZW50Tm9kZSogZmFsc2VCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnVlQmxvY2ss
IFN0YXRlbWVudE5vZGUqIGZhbHNlQmxvY2ssIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0g
ICAgICAgIElmTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIElmRWxzZU5vZGUobGlu
ZU51bWJlciwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIGZhbHNlQmxvY2spOwotICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAgICAgICAgSWZOb2RlKiByZXN1bHQgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgSWZFbHNlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlv
biwgdHJ1ZUJsb2NrLCBmYWxzZUJsb2NrKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQs
IGVuZCwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAg
ICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JMb29wKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogaW5pdGlhbGl6ZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIEV4cHJlc3Npb25O
b2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBib29sIGIsIGludCBzdGFydCwg
aW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JMb29wKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIsIEV4cHJlc3Np
b25Ob2RlKiBjb25kaXRpb24sIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBz
dGF0ZW1lbnRzLCBib29sIGIsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIEZv
ck5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JOb2RlKGxpbmVOdW1iZXIsIGlu
aXRpYWxpemVyLCBjb25kaXRpb24sIGl0ZXIsIHN0YXRlbWVudHMsIGIpOwotICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAgICAgICAgRm9yTm9kZSogcmVzdWx0ID0gbmV3ICht
X2dsb2JhbERhdGEpIEZvck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBpbml0aWFsaXpl
ciwgY29uZGl0aW9uLCBpdGVyLCBzdGF0ZW1lbnRzLCBiKTsKKyAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnQsIGVuZCwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoaW50IGxpbmVOdW1iZXIs
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIsIEV4
cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgc3RhcnQs
IGludCBkaXZvdCwgaW50IGVuZCwgaW50IGluaXRTdGFydCwgaW50IGluaXRFbmQsIGludCBzdGFy
dExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQs
IEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplciwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRl
bWVudE5vZGUqIHN0YXRlbWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCBpbnQg
aW5pdFN0YXJ0LCBpbnQgaW5pdEVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAg
ewotICAgICAgICBGb3JJbk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JJbk5v
ZGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCAqaWRlbnQsIGluaXRpYWxpemVyLCBpdGVyLCBz
dGF0ZW1lbnRzLCBpbml0U3RhcnQsIGluaXRTdGFydCAtIHN0YXJ0LCBpbml0RW5kIC0gaW5pdFN0
YXJ0KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAg
ICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9ySW5Ob2RlKG1fZ2xv
YmFsRGF0YSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAqaWRlbnQsIGluaXRpYWxpemVyLCBp
dGVyLCBzdGF0ZW1lbnRzLCBpbml0U3RhcnQsIGluaXRTdGFydCAtIHN0YXJ0LCBpbml0RW5kIC0g
aW5pdFN0YXJ0KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBj
b2x1bW5OdW1iZXIpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIHN0YXJ0
LCBkaXZvdCArIDEsIGVuZCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50
cywgaW50IGVTdGFydCwgaW50IGVEaXZvdCwgaW50IGVFbmQsIGludCBzdGFydCwgaW50IGVuZCkK
KyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBT
dGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgZVN0YXJ0LCBpbnQgZURpdm90LCBpbnQgZUVu
ZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9ySW5Ob2RlKG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlciwg
bGhzLCBpdGVyLCBzdGF0ZW1lbnRzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVu
ZCk7CisgICAgICAgIEZvckluTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZvcklu
Tm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLCBpdGVyLCBz
dGF0ZW1lbnRzKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgY29sdW1uTnVt
YmVyKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVEaXZv
dCwgZUVuZCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlRW1wdHlTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIpIHsgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBFbXB0eVN0YXRlbWVudE5vZGUobGluZU51bWJlcik7IH0KKyAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVFbXB0eVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVtcHR5U3RhdGVtZW50Tm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOyB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVW
YXJTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3Rh
cnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlVmFyU3RhdGVtZW50KGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0
YXJ0LCBpbnQgZW5kKQogICAgIHsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogcmVzdWx0OwogICAg
ICAgICBpZiAoIWV4cHIpCi0gICAgICAgICAgICByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
RW1wdHlTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpOworICAgICAgICAgICAgcmVzdWx0ID0gbmV3
IChtX2dsb2JhbERhdGEpIEVtcHR5U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgVmFyU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBleHByKTsKLSAgICAgICAgcmVzdWx0LT5z
ZXRMb2Moc3RhcnQsIGVuZCk7CisgICAgICAgICAgICByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgVmFyU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIpOworICAg
ICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVJldHVyblN0
YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHJlc3Npb24sIGludCBl
U3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1l
bnROb2RlKiBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwg
aW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBSZXR1cm5Ob2RlKiBy
ZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmV0dXJuTm9kZShsaW5lTnVtYmVyLCBleHByZXNz
aW9uKTsKKyAgICAgICAgUmV0dXJuTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFJl
dHVybk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByZXNzaW9uKTsKICAgICAgICAg
c2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQpOwotICAgICAg
ICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXN1bHQtPnNl
dExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQnJlYWtTdGF0ZW1lbnQo
aW50IGxpbmVOdW1iZXIsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQg
ZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFy
dExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQnJlYWtOb2RlKiByZXN1bHQgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgQnJlYWtOb2RlKG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlcik7Cisg
ICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEJyZWFrTm9kZSht
X2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHNldEV4Y2Vw
dGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0
LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3Rh
cnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJyZWFrU3RhdGVtZW50KGludCBsaW5l
TnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgaW50IGVTdGFydCwgaW50IGVFbmQsIGlu
dCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJyZWFr
U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRM
aW5lKQogICAgIHsKLSAgICAgICAgQnJlYWtOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgQnJlYWtOb2RlKGxpbmVOdW1iZXIsICppZGVudCk7CisgICAgICAgIEJyZWFrTm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEJyZWFrTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsICppZGVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0
LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5l
KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1i
ZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgZVN0YXJ0LCBpbnQg
ZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3Jl
YXRlQ29udGludWVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGlu
dCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0g
ICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnRpbnVl
Tm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIpOworICAgICAgICBDb250aW51ZU5vZGUqIHJl
c3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb250aW51ZU5vZGUobV9nbG9iYWxEYXRhLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1
bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGlu
ZSwgZW5kTGluZSk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwg
Y29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVDb250aW51ZVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBp
bnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVDb250aW51ZVN0YXRlbWVudChp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQs
IGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7
Ci0gICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnRp
bnVlTm9kZShsaW5lTnVtYmVyLCAqaWRlbnQpOworICAgICAgICBDb250aW51ZU5vZGUqIHJlc3Vs
dCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb250aW51ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCAqaWRlbnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFy
dCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGlu
ZSk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVt
YmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2Rl
KiBjcmVhdGVUcnlTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIFN0YXRlbWVudE5vZGUqIHRyeUJs
b2NrLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywg
U3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkK
KyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVUcnlTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywgU3RhdGVtZW50Tm9kZSogZmluYWxs
eUJsb2NrLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIFRyeU5v
ZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBUcnlOb2RlKGxpbmVOdW1iZXIsIHRyeUJs
b2NrLCAqaWRlbnQsIGNhdGNoQmxvY2ssIGZpbmFsbHlCbG9jayk7CisgICAgICAgIFRyeU5vZGUq
IHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBUcnlOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgdHJ5QmxvY2ssICppZGVudCwgY2F0Y2hCbG9jaywgZmluYWxseUJsb2NrKTsKICAgICAg
ICAgaWYgKGNhdGNoQmxvY2spCiAgICAgICAgICAgICB1c2VzQ2F0Y2goKTsKLSAgICAgICAgcmVz
dWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
c3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVN3aXRjaFN0YXRlbWVudChpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIENsYXVzZUxpc3ROb2RlKiBmaXJzdENs
YXVzZXMsIENhc2VDbGF1c2VOb2RlKiBkZWZhdWx0Q2xhdXNlLCBDbGF1c2VMaXN0Tm9kZSogc2Vj
b25kQ2xhdXNlcywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlU3dpdGNoU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwciwgQ2xhdXNlTGlzdE5vZGUqIGZpcnN0Q2xhdXNlcywgQ2Fz
ZUNsYXVzZU5vZGUqIGRlZmF1bHRDbGF1c2UsIENsYXVzZUxpc3ROb2RlKiBzZWNvbmRDbGF1c2Vz
LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAgICAgICAgIENhc2VCbG9ja05v
ZGUqIGNhc2VzID0gbmV3IChtX2dsb2JhbERhdGEpIENhc2VCbG9ja05vZGUoZmlyc3RDbGF1c2Vz
LCBkZWZhdWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2VzKTsKLSAgICAgICAgU3dpdGNoTm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFN3aXRjaE5vZGUobGluZU51bWJlciwgZXhwciwgY2Fz
ZXMpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAg
ICBTd2l0Y2hOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgU3dpdGNoTm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIsIGNhc2VzKTsKKyAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVdoaWxlU3RhdGVtZW50KGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVt
ZW50LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVh
dGVXaGlsZVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0TGluZSwg
aW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBXaGlsZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBXaGlsZU5vZGUobGluZU51bWJlciwgZXhwciwgc3RhdGVtZW50KTsKLSAgICAg
ICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgV2hpbGVOb2Rl
KiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgV2hpbGVOb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgZXhwciwgc3RhdGVtZW50KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQoaW50IGxpbmVO
dW1iZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGlu
dCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZURvV2hp
bGVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFN0YXRlbWVudE5v
ZGUqIHN0YXRlbWVudCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydExpbmUsIGludCBl
bmRMaW5lKQogICAgIHsKLSAgICAgICAgRG9XaGlsZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9i
YWxEYXRhKSBEb1doaWxlTm9kZShsaW5lTnVtYmVyLCBzdGF0ZW1lbnQsIGV4cHIpOwotICAgICAg
ICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICBEb1doaWxlTm9k
ZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIERvV2hpbGVOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgc3RhdGVtZW50LCBleHByKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3Rh
cnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUxhYmVsU3RhdGVtZW50KGludCBsaW5l
TnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50
LCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlTGFiZWxTdGF0
ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50LCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBzdGFydCwgaW50IGVuZCkKICAg
ICB7Ci0gICAgICAgIExhYmVsTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIExhYmVs
Tm9kZShsaW5lTnVtYmVyLCAqaWRlbnQsIHN0YXRlbWVudCk7CisgICAgICAgIExhYmVsTm9kZSog
cmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIExhYmVsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsICppZGVudCwgc3RhdGVtZW50KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24o
cmVzdWx0LCBzdGFydCwgZW5kLCBlbmQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVdpdGhTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBzdGFy
dCwgaW50IGVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlV2l0aFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0
LCBpbnQgZW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAgICAgICAgIHVz
ZXNXaXRoKCk7Ci0gICAgICAgIFdpdGhOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
V2l0aE5vZGUobGluZU51bWJlciwgZXhwciwgc3RhdGVtZW50LCBlbmQsIGVuZCAtIHN0YXJ0KTsK
LSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgV2l0
aE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBXaXRoTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGV4cHIsIHN0YXRlbWVudCwgZW5kLCBlbmQgLSBzdGFydCk7CisgICAgICAg
IHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9ICAgIAogICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZVRocm93U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwg
aW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVUaHJvd1N0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCwgaW50IHN0
YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBUaHJvd05vZGUqIHJlc3VsdCA9
IG5ldyAobV9nbG9iYWxEYXRhKSBUaHJvd05vZGUobGluZU51bWJlciwgZXhwcik7Ci0gICAgICAg
IHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIFRocm93Tm9kZSog
cmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFRocm93Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIGV4cHIpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUs
IGNvbHVtbk51bWJlcik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3Rh
cnQsIGVuZCwgZW5kKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlRGVidWdnZXIoaW50IGxpbmVOdW1iZXIsIGludCBzdGFydExp
bmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZURlYnVnZ2VyKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkK
ICAgICB7Ci0gICAgICAgIERlYnVnZ2VyU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2ds
b2JhbERhdGEpIERlYnVnZ2VyU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKTsKLSAgICAgICAgcmVz
dWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgRGVidWdnZXJTdGF0ZW1l
bnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVidWdnZXJTdGF0ZW1lbnROb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0
TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29uc3RTdGF0ZW1lbnQoaW50IGxp
bmVOdW1iZXIsIENvbnN0RGVjbE5vZGUqIGRlY2xzLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGlu
ZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVDb25zdFN0YXRlbWVudChpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgQ29uc3REZWNsTm9kZSogZGVjbHMsIGludCBzdGFydExpbmUs
IGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQ29uc3RTdGF0ZW1lbnROb2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3RTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGRlY2xz
KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAg
Q29uc3RTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3RTdGF0
ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZGVjbHMpOworICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgQ29uc3REZWNsTm9kZSogYXBwZW5kQ29uc3REZWNs
KGludCBsaW5lTnVtYmVyLCBDb25zdERlY2xOb2RlKiB0YWlsLCBjb25zdCBJZGVudGlmaWVyKiBu
YW1lLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIpCisgICAgQ29uc3REZWNsTm9kZSogYXBw
ZW5kQ29uc3REZWNsKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBDb25zdERlY2xO
b2RlKiB0YWlsLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBFeHByZXNzaW9uTm9kZSogaW5pdGlh
bGl6ZXIpCiAgICAgewotICAgICAgICBDb25zdERlY2xOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgQ29uc3REZWNsTm9kZShsaW5lTnVtYmVyLCAqbmFtZSwgaW5pdGlhbGl6ZXIpOwor
ICAgICAgICBDb25zdERlY2xOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3RE
ZWNsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICpuYW1lLCBpbml0aWFsaXplcik7CiAg
ICAgICAgIGlmICh0YWlsKQogICAgICAgICAgICAgdGFpbC0+bV9uZXh0ID0gcmVzdWx0OwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTExLDcgKzUxMSw3IEBAIHB1YmxpYzoKICAgICAgICAg
bV9zY29wZS5tX3ZhckRlY2xhcmF0aW9ucy0+ZGF0YS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaWRl
bnQsIGF0dHJzKSk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNvbWJpbmVDb21tYU5v
ZGVzKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGlzdCwgRXhwcmVzc2lvbk5vZGUq
IGluaXQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNvbWJpbmVDb21tYU5vZGVzKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGlzdCwgRXhwcmVzc2lvbk5v
ZGUqIGluaXQpCiAgICAgewogICAgICAgICBpZiAoIWxpc3QpCiAgICAgICAgICAgICByZXR1cm4g
aW5pdDsKQEAgLTUxOSw3ICs1MTksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxDb21tYU5vZGUqPihsaXN0KS0+YXBwZW5kKGluaXQpOwogICAgICAgICAgICAgcmV0dXJuIGxp
c3Q7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBDb21tYU5v
ZGUobGluZU51bWJlciwgbGlzdCwgaW5pdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgQ29tbWFOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGlzdCwgaW5pdCk7CiAg
ICAgfQogCiAgICAgaW50IGV2YWxDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbENvdW50OyB9
CkBAIC01NDcsMTAgKzU0NywxMCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChvcGVyYW5kU3Rh
Y2tEZXB0aCA+PSAwKTsKICAgICAgICAgbV9iaW5hcnlPcGVyYW5kU3RhY2sucmVzaXplKG1fYmlu
YXJ5T3BlcmFuZFN0YWNrLnNpemUoKSAtIGFtb3VudCk7CiAgICAgfQotICAgIHZvaWQgYXBwZW5k
QmluYXJ5T3BlcmF0aW9uKGludCBsaW5lTnVtYmVyLCBpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBp
bnQmLCBjb25zdCBCaW5hcnlPcGVyYW5kJiBsaHMsIGNvbnN0IEJpbmFyeU9wZXJhbmQmIHJocykK
KyAgICB2b2lkIGFwcGVuZEJpbmFyeU9wZXJhdGlvbihpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50JiwgY29uc3QgQmluYXJ5T3BlcmFu
ZCYgbGhzLCBjb25zdCBCaW5hcnlPcGVyYW5kJiByaHMpCiAgICAgewogICAgICAgICBvcGVyYW5k
U3RhY2tEZXB0aCsrOwotICAgICAgICBtX2JpbmFyeU9wZXJhbmRTdGFjay5hcHBlbmQoc3RkOjpt
YWtlX3BhaXIobWFrZUJpbmFyeU5vZGUobGluZU51bWJlciwgbV9iaW5hcnlPcGVyYXRvclN0YWNr
Lmxhc3QoKS5maXJzdCwgbGhzLCByaHMpLCBCaW5hcnlPcEluZm8obGhzLnNlY29uZCwgcmhzLnNl
Y29uZCkpKTsKKyAgICAgICAgbV9iaW5hcnlPcGVyYW5kU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKG1ha2VCaW5hcnlOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbV9iaW5hcnlPcGVy
YXRvclN0YWNrLmxhc3QoKS5maXJzdCwgbGhzLCByaHMpLCBCaW5hcnlPcEluZm8obGhzLnNlY29u
ZCwgcmhzLnNlY29uZCkpKTsKICAgICB9CiAgICAgdm9pZCBvcGVyYXRvclN0YWNrQXBwZW5kKGlu
dCYgb3BlcmF0b3JTdGFja0RlcHRoLCBpbnQgb3AsIGludCBwcmVjZWRlbmNlKQogICAgIHsKQEAg
LTU5Miw5ICs1OTIsOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzaWdubWVudEluZm9TdGFjay5h
cHBlbmQoQXNzaWdubWVudEluZm8obm9kZSwgc3RhcnQsIGRpdm90LCBhc3NpZ25tZW50Q291bnQs
IG9wKSk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFzc2lnbm1lbnQoaW50
IGxpbmVOdW1iZXIsIGludCYgYXNzaWdubWVudFN0YWNrRGVwdGgsIEV4cHJlc3Npb25Ob2RlKiBy
aHMsIGludCBpbml0aWFsQXNzaWdubWVudENvdW50LCBpbnQgY3VycmVudEFzc2lnbm1lbnRDb3Vu
dCwgaW50IGxhc3RUb2tlbkVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXNzaWdubWVu
dChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgaW50JiBhc3NpZ25tZW50U3RhY2tE
ZXB0aCwgRXhwcmVzc2lvbk5vZGUqIHJocywgaW50IGluaXRpYWxBc3NpZ25tZW50Q291bnQsIGlu
dCBjdXJyZW50QXNzaWdubWVudENvdW50LCBpbnQgbGFzdFRva2VuRW5kKQogICAgIHsKLSAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIHJlc3VsdCA9IG1ha2VBc3NpZ25Ob2RlKGxpbmVOdW1iZXIsIG1f
YXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9ub2RlLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2su
bGFzdCgpLm1fb3AsIHJocywgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX2luaXRBc3Np
Z25tZW50cyAhPSBpbml0aWFsQXNzaWdubWVudENvdW50LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2su
bGFzdCgpLm1faW5pdEFzc2lnbm1lbnRzICE9IGN1cnJlbnRBc3NpZ25tZW50Q291bnQsIG1fYXNz
aWdubWVudEluZm9TdGFjay5sYXN0KCkubV9zdGFydCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxh
c3QoKS5tX2Rpdm90ICsgMSwgbGFzdFRva2VuRW5kKTsKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IHJlc3VsdCA9IG1ha2VBc3NpZ25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbV9hc3Np
Z25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX25vZGUsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0
KCkubV9vcCwgcmhzLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1faW5pdEFzc2lnbm1l
bnRzICE9IGluaXRpYWxBc3NpZ25tZW50Q291bnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0
KCkubV9pbml0QXNzaWdubWVudHMgIT0gY3VycmVudEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25t
ZW50SW5mb1N0YWNrLmxhc3QoKS5tX3N0YXJ0LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgp
Lm1fZGl2b3QgKyAxLCBsYXN0VG9rZW5FbmQpOwogICAgICAgICBtX2Fzc2lnbm1lbnRJbmZvU3Rh
Y2sucmVtb3ZlTGFzdCgpOwogICAgICAgICBhc3NpZ25tZW50U3RhY2tEZXB0aC0tOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtNjM1LDkgKzYzNSw5IEBAIHByaXZhdGU6CiAgICAgICAgIG1f
ZXZhbENvdW50Kys7CiAgICAgICAgIG1fc2NvcGUubV9mZWF0dXJlcyB8PSBFdmFsRmVhdHVyZTsK
ICAgICB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bWJlcihpbnQgbGluZU51bWJlciwg
ZG91YmxlIGQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bWJlcihpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgZG91YmxlIGQpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIE51bWJlck5vZGUobGluZU51bWJlciwgZCk7CisgICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgTnVtYmVyTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IGQpOwogICAgIH0KICAgICAKICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKQEAgLTY1
MCwzMyArNjUwLDMzIEBAIHByaXZhdGU6CiAgICAgaW50IG1fZXZhbENvdW50OwogfTsKIAotRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VUeXBlT2ZOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwcikKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlVHlw
ZU9mTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIpCiB7CiAgICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNv
bHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZXhwcik7Ci0gICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVHlwZU9mUmVzb2x2ZU5vZGUobGluZU51bWJl
ciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBUeXBlT2ZSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHJlc29sdmUt
PmlkZW50aWZpZXIoKSk7CiAgICAgfQotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVHlw
ZU9mVmFsdWVOb2RlKGxpbmVOdW1iZXIsIGV4cHIpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgVHlwZU9mVmFsdWVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcik7CiB9
CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGVsZXRlTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5k
KQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VEZWxldGVOb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBp
bnQgZGl2b3QsIGludCBlbmQpCiB7CiAgICAgaWYgKCFleHByLT5pc0xvY2F0aW9uKCkpCi0gICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlVmFsdWVOb2RlKGxpbmVOdW1iZXIs
IGV4cHIpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZVZhbHVlTm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIpOwogICAgIGlmIChleHByLT5pc1Jlc29s
dmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxS
ZXNvbHZlTm9kZSo+KGV4cHIpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERl
bGV0ZVJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBEZWxldGVSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHJlc29s
dmUtPmlkZW50aWZpZXIoKSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAg
ICB9CiAgICAgaWYgKGV4cHItPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJy
YWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JO
b2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlQnJh
Y2tldE5vZGUobGluZU51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQo
KSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBEZWxldGVCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGRpdm90LCBkaXZvdCAt
IHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIEFTU0VSVChleHByLT5pc0RvdEFjY2Vz
c29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFj
Y2Vzc29yTm9kZSo+KGV4cHIpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRl
RG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRpdm90
LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBEZWxldGVEb3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZG90LT5iYXNlKCks
IGRvdC0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwog
fQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBuKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VOZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogbikKIHsKICAgICBpZiAobi0+aXNOdW1iZXIoKSkgewogICAgICAgICBOdW1iZXJOb2Rl
KiBudW1iZXJOb2RlID0gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KG4pOwpAQCAtNjg0LDEyOCAr
Njg0LDEyOCBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBuKQogICAgICAgICByZXR1cm4gbnVtYmVyTm9k
ZTsKICAgICB9CiAKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE5lZ2F0ZU5vZGUobGlu
ZU51bWJlciwgbik7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOZWdhdGVOb2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbik7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWls
ZGVyOjptYWtlQml0d2lzZU5vdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXR3aXNlTm90Tm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCiB7CiAg
ICAgaWYgKGV4cHItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGlu
ZU51bWJlciwgfnRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIpLT52YWx1ZSgp
KSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCaXR3aXNlTm90Tm9kZShsaW5lTnVt
YmVyLCBleHByKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIH50b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByKS0+dmFsdWUo
KSkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0d2lzZU5vdE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBleHByKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxk
ZXI6Om1ha2VNdWx0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Np
b25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTXVsdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgZXhwcjEgPSBleHByMS0+c3RyaXBVbmFy
eVBsdXMoKTsKICAgICBleHByMiA9IGV4cHIyLT5zdHJpcFVuYXJ5UGx1cygpOwogCiAgICAgaWYg
KGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4g
Y3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSkt
PnZhbHVlKCkgKiBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgKiBzdGF0aWNfY2FzdDxOdW1iZXJO
b2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKIAogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBz
dGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpID09IDEpCi0gICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVtYmVyLCBleHByMik7
CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIyKTsKIAogICAgIGlmIChleHByMi0+aXNOdW1iZXIoKSAm
JiBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpID09IDEpCi0gICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVtYmVyLCBleHBy
MSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIxKTsKIAotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgTXVsdE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE11bHROb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAot
RXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VEaXZOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VEaXZOb2RlKGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGV4
cHIxID0gZXhwcjEtPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAgZXhwcjIgPSBleHByMi0+c3RyaXBV
bmFyeVBsdXMoKTsKIAogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1i
ZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBzdGF0aWNfY2Fz
dDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpIC8gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIyKS0+dmFsdWUoKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEaXZOb2Rl
KGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAg
IHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0aWNfY2Fz
dDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpIC8gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIyKS0+dmFsdWUoKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEaXZOb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VNb2ROb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VNb2ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAgZXhwcjIgPSBl
eHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKICAgICAKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkg
JiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51
bWJlciwgZm1vZChzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpLCBzdGF0
aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBNb2ROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBmbW9kKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCks
IHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIE1vZE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHBy
MSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZUFkZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHBy
ZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFkZE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigp
ICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVO
dW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgKyBzdGF0aWNf
Y2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKLSAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIEFkZE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgKyBzdGF0aWNf
Y2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKKyAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIEFkZE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIs
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZVN1Yk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9k
ZSogQVNUQnVpbGRlcjo6bWFrZVN1Yk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgZXhwcjEgPSBleHByMS0+c3RyaXBVbmFyeVBsdXMo
KTsKICAgICBleHByMiA9IGV4cHIyLT5zdHJpcFVuYXJ5UGx1cygpOwogCiAgICAgaWYgKGV4cHIx
LT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRl
TnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVl
KCkgLSBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKLSAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIFN1Yk5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVl
KCkgLSBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKKyAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIFN1Yk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBl
eHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSog
QVNUQnVpbGRlcjo6bWFrZUxlZnRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUxlZnRTaGlmdE5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4
cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3Jl
YXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4
cHIxKS0+dmFsdWUoKSkgPDwgKHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHBy
MiktPnZhbHVlKCkpICYgMHgxZikpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVm
dFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMp
OworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
dG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA8PCAodG9V
SW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7
CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMZWZ0U2hpZnROb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAot
RXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUmln
aHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQot
ICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nh
c3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOwotICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgUmlnaHRTaGlmdE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIx
KS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMikt
PnZhbHVlKCkpICYgMHgxZikpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmlnaHRT
aGlmdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVVSaWdo
dFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2Rl
KiBBU1RCdWlsZGVyOjptYWtlVVJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAm
JiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVt
YmVyLCB0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA+
PiAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAw
eDFmKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbnNpZ25lZFJpZ2h0U2hpZnRO
b2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAg
ICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0b1VJbnQz
MihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA+PiAodG9VSW50MzIo
c3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7CisgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0K
IAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRPck5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdE9y
Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsK
ICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAg
IHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1i
ZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSB8IHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9k
ZSo+KGV4cHIyKS0+dmFsdWUoKSkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0
T3JOb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0b0lu
dDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpIHwgdG9JbnQzMihz
dGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7CisgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBCaXRPck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHBy
MSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZUJpdEFuZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitF
eHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdEFuZE5vZGUoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051
bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVy
KGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFs
dWUoKSkgJiB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkp
KTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdEFuZE5vZGUobGluZU51bWJlciwg
ZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVt
YmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgJiB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5v
ZGUqPihleHByMiktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJp
dEFuZE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdFhP
ck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZUJpdFhPck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5p
c051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50
MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgXiB0b0ludDMyKHN0
YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIEJpdFhPck5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+
dmFsdWUoKSkgXiB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVl
KCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdFhPck5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQog
Ci1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQg
c3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlRnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGZ1bmMsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGludCBzdGFydCwgaW50IGRp
dm90LCBpbnQgZW5kKQogewogICAgIGlmICghZnVuYy0+aXNMb2NhdGlvbigpKQotICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShsaW5lTnVtYmVy
LCBmdW5jLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGZ1bmMsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQg
LSBkaXZvdCk7CiAgICAgaWYgKGZ1bmMtPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNv
bHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZnVuYyk7CiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIgPSByZXNvbHZlLT5pZGVudGlmaWVyKCk7
CiAgICAgICAgIGlmIChpZGVudGlmaWVyID09IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+
ZXZhbCkgewogICAgICAgICAgICAgdXNlc0V2YWwoKTsKLSAgICAgICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUobGluZU51bWJlciwgYXJncywgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsUmVzb2x2ZU5v
ZGUobGluZU51bWJlciwgaWRlbnRpZmllciwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVu
ZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNh
bGxSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGlkZW50aWZpZXIsIGFyZ3Ms
IGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIGlmIChmdW5j
LT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2Rl
KiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwotICAg
ICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBG
dW5jdGlvbkNhbGxCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNr
ZXQtPnN1YnNjcmlwdCgpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3Qp
OworICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxE
YXRhKSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJy
YWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGFyZ3MsIGRpdm90LCBkaXZvdCAt
IHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZv
KGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPmVuZE9mZnNldCgpKTsKICAgICAgICAgcmV0dXJu
IG5vZGU7CiAgICAgfQpAQCAtODEzLDExOCArODEzLDExOCBAQCBFeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKgogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JO
b2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZTsKICAgICBpZiAoZG90
LT5pZGVudGlmaWVyKCkgPT0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5jYWxsKQotICAg
ICAgICBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxp
bmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRp
dm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxE
YXRhKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGRv
dC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQs
IGVuZCAtIGRpdm90KTsKICAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX2dsb2Jh
bERhdGEtPnByb3BlcnR5TmFtZXMtPmFwcGx5KQotICAgICAgICBub2RlID0gbmV3IChtX2dsb2Jh
bERhdGEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwg
ZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZv
dCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXBwbHlGdW5jdGlvbkNhbGxE
b3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIGVs
c2UKLSAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxEb3ROb2Rl
KGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9i
YWxEYXRhKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZG90
LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3Qo
KSwgZG90LT5lbmRPZmZzZXQoKSk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLUV4cHJlc3Npb25O
b2RlKiBBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZShpbnQgbGluZU51bWJlciwgaW50IHRva2Vu
LCBwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiBsaHMsIHBhaXI8RXhwcmVzc2lv
bk5vZGUqLCBCaW5hcnlPcEluZm8+IHJocykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlQmluYXJ5Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgaW50IHRva2Vu
LCBwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiBsaHMsIHBhaXI8RXhwcmVzc2lv
bk5vZGUqLCBCaW5hcnlPcEluZm8+IHJocykKIHsKICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAg
Y2FzZSBPUjoKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMb2dpY2FsT3BOb2Rl
KGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxPcik7CisgICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9naWNhbE9wTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxPcik7CiAKICAgICBjYXNl
IEFORDoKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMb2dpY2FsT3BOb2RlKGxp
bmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxBbmQpOworICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxPcE5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgT3BMb2dpY2FsQW5kKTsKIAogICAgIGNhc2Ug
QklUT1I6Ci0gICAgICAgIHJldHVybiBtYWtlQml0T3JOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJz
dCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4g
bWFrZUJpdE9yTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZp
cnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBCSVRYT1I6Ci0gICAg
ICAgIHJldHVybiBtYWtlQml0WE9yTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJz
dCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VCaXRYT3JO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5z
ZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIEJJVEFORDoKLSAgICAgICAgcmV0dXJu
IG1ha2VCaXRBbmROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vj
b25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZUJpdEFuZE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKIAogICAgIGNhc2UgRVFFUToKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBFcXVhbE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5z
ZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
RXF1YWxOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3Qs
IHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIE5FOgotICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIE5vdEVxdWFsTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3Qs
IHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBOb3RFcXVhbE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBs
aHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNh
c2UgU1RSRVE6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgU3RyaWN0RXF1YWxO
b2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2ln
bm1lbnQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN0cmljdEVxdWFsTm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vj
b25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBTVFJORVE6Ci0gICAgICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgTm90U3RyaWN0RXF1YWxOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJz
dCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIE5vdFN0cmljdEVxdWFsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwog
CiAgICAgY2FzZSBMVDoKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMZXNzTm9k
ZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25t
ZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMZXNzTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fz
c2lnbm1lbnQpOwogCiAgICAgY2FzZSBHVDoKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBHcmVhdGVyTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNl
Y29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBH
cmVhdGVyTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0
LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBMRToKLSAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMZXNzRXFOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwg
cmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIExlc3NFcU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMu
Zmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2Ug
R0U6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgR3JlYXRlckVxTm9kZShsaW5l
TnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsK
KyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBHcmVhdGVyRXFOb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNz
aWdubWVudCk7CiAKICAgICBjYXNlIElOU1RBTkNFT0Y6IHsKLSAgICAgICAgSW5zdGFuY2VPZk5v
ZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSW5zdGFuY2VPZk5vZGUobGluZU51bWJlciwg
bGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAg
IEluc3RhbmNlT2ZOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEluc3RhbmNlT2ZOb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNv
bmQuaGFzQXNzaWdubWVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIGxo
cy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuZW5kKTsKICAgICAg
ICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCiAgICAgY2FzZSBJTlRPS0VOOiB7Ci0gICAgICAgIElu
Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBJbk5vZGUobGluZU51bWJlciwgbGhzLmZp
cnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIEluTm9k
ZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBJbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKICAg
ICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgbGhzLnNlY29uZC5zdGFydCwgcmhzLnNl
Y29uZC5zdGFydCwgcmhzLnNlY29uZC5lbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9
CiAKICAgICBjYXNlIExTSElGVDoKLSAgICAgICAgcmV0dXJuIG1ha2VMZWZ0U2hpZnROb2RlKGxp
bmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQp
OworICAgICAgICByZXR1cm4gbWFrZUxlZnRTaGlmdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAog
ICAgIGNhc2UgUlNISUZUOgotICAgICAgICByZXR1cm4gbWFrZVJpZ2h0U2hpZnROb2RlKGxpbmVO
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwor
ICAgICAgICByZXR1cm4gbWFrZVJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAg
ICBjYXNlIFVSU0hJRlQ6Ci0gICAgICAgIHJldHVybiBtYWtlVVJpZ2h0U2hpZnROb2RlKGxpbmVO
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwor
ICAgICAgICByZXR1cm4gbWFrZVVSaWdodFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAg
ICAgY2FzZSBQTFVTOgotICAgICAgICByZXR1cm4gbWFrZUFkZE5vZGUobGluZU51bWJlciwgbGhz
LmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJl
dHVybiBtYWtlQWRkTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhz
LmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBNSU5VUzoKLSAg
ICAgICAgcmV0dXJuIG1ha2VTdWJOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0
LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZVN1Yk5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29u
ZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgVElNRVM6Ci0gICAgICAgIHJldHVybiBtYWtl
TXVsdE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFz
QXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlTXVsdE5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50
KTsKIAogICAgIGNhc2UgRElWSURFOgotICAgICAgICByZXR1cm4gbWFrZURpdk5vZGUobGluZU51
bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7Cisg
ICAgICAgIHJldHVybiBtYWtlRGl2Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5m
aXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBN
T0Q6Ci0gICAgICAgIHJldHVybiBtYWtlTW9kTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJo
cy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VN
b2ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJo
cy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAgICAgfQogICAgIENSQVNIKCk7CiAgICAgcmV0dXJu
IDA7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxvYywgT3BlcmF0b3Igb3AsIEV4cHJlc3Npb25O
b2RlKiBleHByLCBib29sIGxvY0hhc0Fzc2lnbm1lbnRzLCBib29sIGV4cHJIYXNBc3NpZ25tZW50
cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNUQnVp
bGRlcjo6bWFrZUFzc2lnbk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBsb2MsIE9wZXJhdG9yIG9wLCBFeHByZXNzaW9uTm9kZSogZXhwciwgYm9v
bCBsb2NIYXNBc3NpZ25tZW50cywgYm9vbCBleHBySGFzQXNzaWdubWVudHMsIGludCBzdGFydCwg
aW50IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlmICghbG9jLT5pc0xvY2F0aW9uKCkpCi0gICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduRXJyb3JOb2RlKGxpbmVOdW1iZXIs
IGxvYywgb3AsIGV4cHIsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduRXJyb3JOb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgbG9jLCBvcCwgZXhwciwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAt
IGRpdm90KTsKIAogICAgIGlmIChsb2MtPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNv
bHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4obG9jKTsKICAgICAg
ICAgaWYgKG9wID09IE9wRXF1YWwpIHsKICAgICAgICAgICAgIGlmIChleHByLT5pc0Z1bmNFeHBy
Tm9kZSgpKQogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGV4cHIp
LT5ib2R5KCktPnNldEluZmVycmVkTmFtZShyZXNvbHZlLT5pZGVudGlmaWVyKCkpOwotICAgICAg
ICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWdu
UmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBleHByLCBleHBy
SGFzQXNzaWdubWVudHMpOworICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cyk7CiAg
ICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7
CiAgICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCByZXNvbHZl
LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZv
dCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgcmVzb2x2
ZS0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2
b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBpZiAobG9jLT5pc0JyYWNrZXRB
Y2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0g
c3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGxvYyk7CiAgICAgICAgIGlmIChvcCA9
PSBPcEVxdWFsKQotICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25C
cmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlw
dCgpLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhhc0Fzc2lnbm1lbnRzLCBicmFja2V0
LT5kaXZvdCgpLCBicmFja2V0LT5kaXZvdCgpIC0gc3RhcnQsIGVuZCAtIGJyYWNrZXQtPmRpdm90
KCkpOwotICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwg
YnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhh
c0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25CcmFja2V0Tm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCks
IGV4cHIsIGxvY0hhc0Fzc2lnbm1lbnRzLCBleHBySGFzQXNzaWdubWVudHMsIGJyYWNrZXQtPmRp
dm90KCksIGJyYWNrZXQtPmRpdm90KCkgLSBzdGFydCwgZW5kIC0gYnJhY2tldC0+ZGl2b3QoKSk7
CisgICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRh
KSBSZWFkTW9kaWZ5QnJhY2tldE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBicmFja2V0
LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZXhwciwgbG9jSGFzQXNzaWdubWVu
dHMsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
KTsKICAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwg
YnJhY2tldC0+ZW5kT2Zmc2V0KCkpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CkBAIC05
MzMsNTUgKzkzMyw1NSBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsb2MsCiAgICAgaWYgKG9wID09IE9w
RXF1YWwpIHsKICAgICAgICAgaWYgKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihleHByKS0+Ym9keSgpLT5zZXRJbmZlcnJlZE5h
bWUoZG90LT5pZGVudGlmaWVyKCkpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IEFzc2lnbkRvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigp
LCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdCgpIC0g
c3RhcnQsIGVuZCAtIGRvdC0+ZGl2b3QoKSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgQXNzaWduRG90Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGRvdC0+YmFzZSgp
LCBkb3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkb3QtPmRpdm90
KCksIGRvdC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBkb3QtPmRpdm90KCkpOwogICAgIH0KIAot
ICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2Rp
ZnlEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3As
IGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90KTsKKyAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBS
ZWFkTW9kaWZ5RG90Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGRvdC0+YmFzZSgpLCBk
b3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRp
dm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5m
byhkb3QtPmRpdm90KCksIGRvdC0+ZW5kT2Zmc2V0KCkpOwogICAgIHJldHVybiBub2RlOwogfQog
Ci1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2
b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBP
cGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiB7CiAgICAgaWYgKCFl
eHByLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJl
Zml4RXJyb3JOb2RlKGxpbmVOdW1iZXIsIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeEVy
cm9yTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3Qg
LSBzdGFydCwgZW5kIC0gZGl2b3QpOwogCiAgICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkg
ewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2Rl
Kj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4UmVzb2x2
ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90
IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBQcmVmaXhSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHJlc29sdmUtPmlk
ZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAg
fQogICAgIGlmIChleHByLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFj
a2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9k
ZSo+KGV4cHIpOwotICAgICAgICBQcmVmaXhCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9i
YWxEYXRhKSBQcmVmaXhCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJy
YWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
KTsKKyAgICAgICAgUHJlZml4QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
UHJlZml4QnJhY2tldE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBicmFja2V0LT5iYXNl
KCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAt
IGRpdm90KTsKICAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2
b3QoKSwgYnJhY2tldC0+c3RhcnRPZmZzZXQoKSk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAg
IH0KICAgICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNz
b3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICBQ
cmVmaXhEb3ROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeERvdE5vZGUobGlu
ZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90
IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICBQcmVmaXhEb3ROb2RlKiBub2RlID0gbmV3ICht
X2dsb2JhbERhdGEpIFByZWZpeERvdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBkb3Qt
PmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5k
IC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwg
ZG90LT5zdGFydE9mZnNldCgpKTsKICAgICByZXR1cm4gbm9kZTsKIH0KIAotRXhwcmVzc2lvbk5v
ZGUqIEFTVEJ1aWxkZXI6Om1ha2VQb3N0Zml4Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkK
K0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUG9zdGZpeE5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwg
aW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiB7CiAgICAgaWYgKCFleHByLT5pc0xvY2F0
aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeEVycm9yTm9k
ZShsaW5lTnVtYmVyLCBleHByLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4RXJyb3JOb2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwciwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBl
bmQgLSBkaXZvdCk7CiAKICAgICBpZiAoZXhwci0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAg
IFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihleHByKTsK
LSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4UmVzb2x2ZU5vZGUobGlu
ZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQs
IGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4
UmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVy
KCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBp
ZiAoZXhwci0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vz
c29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihleHBy
KTsKLSAgICAgICAgUG9zdGZpeEJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEp
IFBvc3RmaXhCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQt
PnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAg
ICAgICAgUG9zdGZpeEJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFBvc3Rm
aXhCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwg
YnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOwogICAgICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgp
LCBicmFja2V0LT5lbmRPZmZzZXQoKSk7CiAgICAgICAgIHJldHVybiBub2RlOwogCiAgICAgfQog
ICAgIEFTU0VSVChleHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5v
ZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgIFBvc3Rm
aXhEb3ROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhEb3ROb2RlKGxpbmVO
dW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAt
IHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgUG9zdGZpeERvdE5vZGUqIG5vZGUgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgUG9zdGZpeERvdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBkb3Qt
PmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5k
IC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwg
ZG90LT5lbmRPZmZzZXQoKSk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDNiMDIwZjRmMmIxYjA5NmE3MGE5NWE5YjU4ODgyN2Jk
OTBiOTg1OWMuLmJmZDdmZDJjMjQ3MmI4MzdhZmFmOTE5ZjUxODFjMzBkNGU3YjkzNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC00MTcsNiArNDE3LDcgQEAgdm9p
ZCBMZXhlcjxUPjo6c2V0Q29kZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckFyZW5h
KiBhcmVuYSkKICAgICBtX2NvZGVFbmQgPSBtX2NvZGVTdGFydCArIHNvdXJjZS5lbmRPZmZzZXQo
KTsKICAgICBtX2Vycm9yID0gZmFsc2U7CiAgICAgbV9hdExpbmVTdGFydCA9IHRydWU7CisgICAg
bV9jb2x1bW5OdW1iZXIgPSAwOwogICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gVVN0cmluZygpOwog
ICAgIAogICAgIG1fYnVmZmVyOC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGluaXRpYWxSZWFkQnVm
ZmVyQ2FwYWNpdHkpOwpAQCAtNDMzLDYgKzQzNCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
dGVtcGxhdGUgPGludCBzaGlmdEFtb3VudD4gQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+Ojpp
bnRlcm5hbFNoaWZ0KCkKIHsKICAgICBtX2NvZGUgKz0gc2hpZnRBbW91bnQ7CisgICAgbV9jb2x1
bW5OdW1iZXIgKz0gc2hpZnRBbW91bnQ7CiAgICAgbV9jdXJyZW50ID0gKm1fY29kZTsKIH0KIApA
QCAtNDQ0LDYgKzQ0Niw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6c2hpZnQoKQog
ICAgICsrbV9jb2RlOwogICAgIGlmIChMSUtFTFkobV9jb2RlIDwgbV9jb2RlRW5kKSkKICAgICAg
ICAgbV9jdXJyZW50ID0gKm1fY29kZTsKKyAgICArK21fY29sdW1uTnVtYmVyOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTEyMDAsNiArMTIwMyw3IEBAIHN0YXJ0OgogICAgICAgICBy
ZXR1cm4gRU9GVE9LOwogICAgIAogICAgIHRva2VuSW5mby0+c3RhcnRPZmZzZXQgPSBjdXJyZW50
T2Zmc2V0KCk7CisgICAgdG9rZW5JbmZvLT5jb2x1bW4gPSBtX2NvbHVtbk51bWJlcjsKIAogICAg
IENoYXJhY3RlclR5cGUgdHlwZTsKICAgICBpZiAoTElLRUxZKGlzTGF0aW4xKG1fY3VycmVudCkp
KQpAQCAtMTUyMiw2ICsxNTI2LDcgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAg
ICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwogICAgICAgICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsK
ICAgICAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKKyAgICAgICAgbV9jb2x1bW5OdW1iZXIgPSAw
OwogICAgICAgICBnb3RvIHN0YXJ0OwogICAgIGNhc2UgQ2hhcmFjdGVySW52YWxpZDoKICAgICAg
ICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBpbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgpOwpAQCAtMTU0
NCw2ICsxNTQ5LDcgQEAgaW5TaW5nbGVMaW5lQ29tbWVudDoKICAgICBzaGlmdExpbmVUZXJtaW5h
dG9yKCk7CiAgICAgbV9hdExpbmVTdGFydCA9IHRydWU7CiAgICAgbV90ZXJtaW5hdG9yID0gdHJ1
ZTsKKyAgICBtX2NvbHVtbk51bWJlciA9IDA7CiAgICAgaWYgKCFsYXN0VG9rZW5XYXNSZXN0cktl
eXdvcmQoKSkKICAgICAgICAgZ290byBzdGFydDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5oCmluZGV4IDQxZjFmODU1M2UxZWIyNWY1NDRiZWUxOTM1YTJhZjRiYmQwNjllNjQuLjI4
YjUzYmJlN2Q4ZmM3NmJjMGJhNDdmOGRiNzZkNzY3OGViMDdjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmgKQEAgLTkwLDYgKzkwLDcgQEAgcHVibGljOgogICAgIEpTVG9rZW5U
eXBlIGxleChKU1Rva2VuRGF0YSosIEpTVG9rZW5JbmZvKiwgdW5zaWduZWQsIGJvb2wgc3RyaWN0
TW9kZSk7CiAgICAgYm9vbCBuZXh0VG9rZW5Jc0NvbG9uKCk7CiAgICAgaW50IGxpbmVOdW1iZXIo
KSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KKyAgICBpbnQgY3VycmVudENvbHVtbk51
bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1uTnVtYmVyOyB9CiAgICAgdm9pZCBzZXRMYXN0
TGluZU51bWJlcihpbnQgbGFzdExpbmVOdW1iZXIpIHsgbV9sYXN0TGluZU51bWJlciA9IGxhc3RM
aW5lTnVtYmVyOyB9CiAgICAgaW50IGxhc3RMaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9s
YXN0TGluZU51bWJlcjsgfQogICAgIGJvb2wgcHJldlRlcm1pbmF0b3IoKSBjb25zdCB7IHJldHVy
biBtX3Rlcm1pbmF0b3I7IH0KQEAgLTE2Niw2ICsxNjcsNyBAQCBwcml2YXRlOgogCiAgICAgaW50
IG1fbGluZU51bWJlcjsKICAgICBpbnQgbV9sYXN0TGluZU51bWJlcjsKKyAgICBpbnQgbV9jb2x1
bW5OdW1iZXI7CiAKICAgICBWZWN0b3I8TENoYXI+IG1fYnVmZmVyODsKICAgICBWZWN0b3I8VUNo
YXI+IG1fYnVmZmVyMTY7CkBAIC0yODUsNiArMjg3LDcgQEAgQUxXQVlTX0lOTElORSBKU1Rva2Vu
VHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5EYXRh
LAogICAgICAgICBtX2N1cnJlbnQgPSAwOwogCiAgICAgbV9jb2RlID0gcHRyOworICAgIG1fY29s
dW1uTnVtYmVyID0gbV9jb2x1bW5OdW1iZXIgKyAobV9jb2RlIC0gc3RhcnQpOwogCiAgICAgLy8g
Q3JlYXRlIHRoZSBpZGVudGlmaWVyIGlmIG5lZWRlZAogICAgIGlmIChsZXhlckZsYWdzICYgTGV4
ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQpAQCAtMjk0LDYgKzI5Nyw3IEBAIEFMV0FZU19JTkxJ
TkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbkRhdGEq
IHRva2VuRGF0YSwKICAgICB0b2tlbkluZm8tPmxpbmUgPSBtX2xpbmVOdW1iZXI7CiAgICAgdG9r
ZW5JbmZvLT5zdGFydE9mZnNldCA9IHN0YXJ0IC0gbV9jb2RlU3RhcnQ7CiAgICAgdG9rZW5JbmZv
LT5lbmRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7CisgICAgdG9rZW5JbmZvLT5jb2x1bW4gPSBt
X2NvbHVtbk51bWJlcjsKICAgICBtX2xhc3RUb2tlbiA9IElERU5UOwogICAgIHJldHVybiBJREVO
VDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNv
bnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0
b3JzLmgKaW5kZXggZTQ5NmQyMzQyYjM0MDFmYTRhZTc0ZTI0NjM5NGViOTdjMzNiY2ExZi4uMmFl
MmY5ZTNkZTYxYWM4YjAzN2Y5YmNkYzAxY2M4NTdmMjlmZTFjYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKQEAgLTQyLDYwICs0Miw2MSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZ2xvYmFsRGF0YS0+cGFyc2VyQXJlbmEtPmRlcmVm
V2l0aEFyZW5hKGFkb3B0UmVmKHRoaXMpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgTm9kZTo6Tm9k
ZShpbnQgbGluZU51bWJlcikKKyAgICBpbmxpbmUgTm9kZTo6Tm9kZShpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlcikKICAgICAgICAgOiBtX2xpbmVOdW1iZXIobGluZU51bWJlcikKKyAg
ICAgICAgLCBtX2NvbHVtbk51bWJlcihjb2x1bW5OdW1iZXIpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBFeHByZXNzaW9uTm9kZTo6RXhwcmVzc2lvbk5vZGUoaW50IGxpbmVOdW1iZXIsIFJl
c3VsdFR5cGUgcmVzdWx0VHlwZSkKLSAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5s
aW5lIEV4cHJlc3Npb25Ob2RlOjpFeHByZXNzaW9uTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgUmVzdWx0VHlwZSByZXN1bHRUeXBlKQorICAgICAgICA6IE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fcmVzdWx0VHlwZShyZXN1bHRUeXBlKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3RhdGVtZW50Tm9kZTo6U3RhdGVtZW50Tm9kZShp
bnQgbGluZU51bWJlcikKLSAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFN0
YXRlbWVudE5vZGU6OlN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpCisgICAgICAgIDogTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwg
bV9sYXN0TGluZSgtMSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE51bGxOb2RlOjpOdWxs
Tm9kZShpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
LCBSZXN1bHRUeXBlOjpudWxsVHlwZSgpKQorICAgIGlubGluZSBOdWxsTm9kZTo6TnVsbE5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCisgICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpudWxsVHlwZSgpKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgQm9vbGVhbk5vZGU6OkJvb2xlYW5Ob2RlKGludCBsaW5l
TnVtYmVyLCBib29sIHZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIs
IFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCkpCisgICAgaW5saW5lIEJvb2xlYW5Ob2RlOjpCb29s
ZWFuTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCB2YWx1ZSkKKyAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5
cGU6OmJvb2xlYW5UeXBlKCkpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIE51bWJlck5vZGU6Ok51bWJlck5vZGUoaW50IGxpbmVOdW1iZXIsIGRv
dWJsZSB2YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRU
eXBlOjpudW1iZXJUeXBlKCkpCisgICAgaW5saW5lIE51bWJlck5vZGU6Ok51bWJlck5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGRvdWJsZSB2YWx1ZSkKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJl
clR5cGUoKSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKLSAgICBp
bmxpbmUgU3RyaW5nTm9kZTo6U3RyaW5nTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRp
ZmllciYgdmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0
VHlwZTo6c3RyaW5nVHlwZSgpKQorICAgIGlubGluZSBTdHJpbmdOb2RlOjpTdHJpbmdOb2RlKGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiB2YWx1ZSkK
KyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3Vs
dFR5cGU6OnN0cmluZ1R5cGUoKSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgUmVnRXhwTm9kZTo6UmVnRXhwTm9kZShpbnQgbGluZU51bWJlciwg
Y29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MpCi0gICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmVnRXhwTm9kZTo6
UmVnRXhwTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRp
ZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MpCisgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fcGF0dGVybihw
YXR0ZXJuKQogICAgICAgICAsIG1fZmxhZ3MoZmxhZ3MpCiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBUaGlzTm9kZTo6VGhpc05vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgVGhpc05vZGU6OlRoaXNOb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFJlc29s
dmVOb2RlOjpSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGludCBzdGFydE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBSZXNvbHZlTm9kZTo6UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBpbnQgc3RhcnRPZmZzZXQp
CisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAg
ICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9zdGFydE9mZnNldChzdGFydE9mZnNl
dCkKICAgICB7CkBAIC0xMTYsMjQgKzExNywyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
bC0+bV9uZXh0ID0gdGhpczsKICAgICB9CiAKLSAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBlbGlzaW9uKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQgZWxpc2lvbikKKyAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9lbGVtZW50KDApCiAg
ICAgICAgICwgbV9lbGlzaW9uKGVsaXNpb24pCiAgICAgICAgICwgbV9vcHRpb25hbCh0cnVlKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5vZGUoaW50IGxpbmVO
dW1iZXIsIEVsZW1lbnROb2RlKiBlbGVtZW50KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBFbGVtZW50Tm9kZSogZWxlbWVudCkKKyAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9lbGVtZW50
KGVsZW1lbnQpCiAgICAgICAgICwgbV9lbGlzaW9uKDApCiAgICAgICAgICwgbV9vcHRpb25hbChm
YWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGlu
dCBsaW5lTnVtYmVyLCBpbnQgZWxpc2lvbiwgRWxlbWVudE5vZGUqIGVsZW1lbnQpCi0gICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJh
eU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGludCBlbGlzaW9uLCBFbGVt
ZW50Tm9kZSogZWxlbWVudCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgICAgICwgbV9l
bGlzaW9uKGVsaXNpb24pCiAgICAgICAgICwgbV9vcHRpb25hbCh0cnVlKQpAQCAtMTU0LDU3ICsx
NTUsNTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcm9w
ZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5v
ZGUqIG5vZGUpCi0gICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcm9wZXJ0
eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBQcm9wZXJ0eU5vZGUqIG5vZGUpCisgICAgICAgIDogTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpCiAgICAgICAgICwgbV9ub2RlKG5vZGUpCiAgICAgICAgICwgbV9uZXh0KDApCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBQcm9wZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3RO
b2RlKGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGUqIG5vZGUsIFByb3BlcnR5TGlzdE5vZGUq
IGxpc3QpCi0gICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcm9wZXJ0eUxp
c3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBQcm9wZXJ0eU5vZGUqIG5vZGUsIFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpCisgICAgICAgIDog
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9ub2RlKG5vZGUpCiAg
ICAgICAgICwgbV9uZXh0KDApCiAgICAgewogICAgICAgICBsaXN0LT5tX25leHQgPSB0aGlzOwog
ICAgIH0KIAotICAgIGlubGluZSBPYmplY3RMaXRlcmFsTm9kZTo6T2JqZWN0TGl0ZXJhbE5vZGUo
aW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgT2JqZWN0TGl0ZXJhbE5vZGU6Ok9iamVjdExpdGVyYWxOb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2xpc3QoMCkKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIE9iamVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZShpbnQgbGluZU51
bWJlciwgUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyKQorICAgIGlubGluZSBPYmplY3RMaXRlcmFsTm9kZTo6T2JqZWN0TGl0ZXJhbE5v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFByb3BlcnR5TGlzdE5vZGUqIGxp
c3QpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQog
ICAgICAgICAsIG1fbGlzdChsaXN0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQnJhY2tl
dEFjY2Vzc29yTm9kZTo6QnJhY2tldEFjY2Vzc29yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vic2NyaXB0
SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgQnJhY2tldEFjY2Vzc29yTm9kZTo6QnJhY2tldEFjY2Vzc29yTm9kZShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Np
b25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMpCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1f
YmFzZShiYXNlKQogICAgICAgICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKICAgICAgICAgLCBt
X3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgRG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBEb3RB
Y2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAg
LCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgQXJndW1lbnRMaXN0Tm9kZTo6QXJndW1lbnRMaXN0Tm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBBcmd1bWVudExpc3ROb2RlOjpBcmd1bWVudExpc3ROb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX25leHQoMCkKICAgICAg
ICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFyZ3VtZW50TGlz
dE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUoaW50IGxpbmVOdW1iZXIsIEFyZ3VtZW50TGlzdE5vZGUq
IGxpc3ROb2RlLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBOb2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIEFyZ3VtZW50TGlzdE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEFyZ3VtZW50TGlzdE5vZGUqIGxpc3ROb2RlLCBF
eHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcikKICAgICAgICAgLCBtX25leHQoMCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7
CkBAIC0yMjEsNDUgKzIyMiw0NSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIE5ld0V4cHJOb2RlOjpOZXdFeHByTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgTmV3RXhwck5vZGU6Ok5ld0V4cHJOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAg
ICAgICwgbV9hcmdzKDApCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBOZXdFeHByTm9kZTo6
TmV3RXhwck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVu
dHNOb2RlKiBhcmdzKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAg
aW5saW5lIE5ld0V4cHJOb2RlOjpOZXdFeHByTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3MpCisgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAs
IG1fZXhwcihleHByKQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgRXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OkV2YWxGdW5jdGlvbkNhbGxOb2RlKGludCBs
aW5lTnVtYmVyLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0
aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQXJndW1lbnRzTm9kZSogYXJncywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
Ci0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRnVuY3Rp
b25DYWxsVmFsdWVOb2RlOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdz
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAg
ICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6RnVuY3Rp
b25DYWxsUmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6RnVuY3Rpb25DYWxsUmVz
b2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9pZGVudChp
ZGVudCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQs
IEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFj
a2V0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQor
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAg
ICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJz
Y3JpcHQpCkBAIC0yNjcsOCArMjY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRo
cm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQog
ICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCkBAIC0yNzYs
MzEgKzI3NywzMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBB
cmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVO
dW1iZXIsIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkK
KyAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3RO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAg
ICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBiYXNlLCBp
ZGVudCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxs
RG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBGdW5jdGlvbkNh
bGxEb3ROb2RlKGxpbmVOdW1iZXIsIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBs
eUZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9k
ZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpCisgICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFByZVBvc3RSZXNvbHZlTm9kZTo6UHJlUG9z
dFJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0g
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlw
ZSgpKSAvLyBjb3VsZCBiZSByZXVzYWJsZSBmb3IgcHJlPworICAgIGlubGluZSBQcmVQb3N0UmVz
b2x2ZU5vZGU6OlByZVBvc3RSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpKSAvLyBj
b3VsZCBiZSByZXVzYWJsZSBmb3IgcHJlPwogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1faWRlbnQoaWRl
bnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQb3N0Zml4UmVzb2x2ZU5vZGU6OlBvc3Rm
aXhSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9w
ZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IFByZVBvc3RSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBp
ZGVudCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgaW5saW5lIFBvc3RmaXhS
ZXNvbHZlTm9kZTo6UG9zdGZpeFJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAg
IDogUHJlUG9zdFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgaWRlbnQsIGRp
dm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFBvc3RmaXhCcmFja2V0Tm9kZTo6UG9zdGZpeEJy
YWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUG9zdGZpeEJyYWNrZXROb2RlOjpQb3N0Zml4QnJh
Y2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwg
VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQp
CiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0
KQpAQCAtMzA4LDggKzMwOSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgUG9zdGZpeERvdE5vZGU6OlBvc3RmaXhEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9w
ZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFBv
c3RmaXhEb3ROb2RlOjpQb3N0Zml4RG90Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVy
YXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9p
ZGVudChpZGVudCkKQEAgLTMxNyw2OSArMzE4LDY5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgUG9zdGZpeEVycm9yTm9kZTo6UG9zdGZpeEVycm9yTm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wZXIsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFBvc3RmaXhFcnJv
ck5vZGU6OlBvc3RmaXhFcnJvck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlU3Vi
RXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwg
bV9leHByKGV4cHIpCiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgRGVsZXRlUmVzb2x2ZU5vZGU6OkRlbGV0ZVJlc29sdmVOb2RlKGludCBsaW5l
TnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRGVsZXRlUmVzb2x2ZU5vZGU6OkRlbGV0ZVJlc29s
dmVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBEZWxldGVCcmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
LSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBEZWxldGVC
cmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
KyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAg
ICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2Ny
aXB0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVsZXRlRG90Tm9kZTo6RGVsZXRlRG90
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlu
bGluZSBEZWxldGVEb3ROb2RlOjpEZWxldGVEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAg
ICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVsZXRlVmFsdWVOb2RlOjpEZWxldGVWYWx1ZU5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIERlbGV0ZVZhbHVlTm9kZTo6RGVsZXRl
VmFsdWVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBW
b2lkTm9kZTo6Vm9pZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQot
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFZvaWROb2Rl
OjpWb2lkTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
VHlwZU9mUmVzb2x2ZU5vZGU6OlR5cGVPZlJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
LCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCisgICAgaW5saW5lIFR5cGVPZlJlc29sdmVOb2Rl
OjpUeXBlT2ZSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV9p
ZGVudChpZGVudCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFR5cGVPZlZhbHVlTm9kZTo6
VHlwZU9mVmFsdWVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBl
KCkpCisgICAgaW5saW5lIFR5cGVPZlZhbHVlTm9kZTo6VHlwZU9mVmFsdWVOb2RlKGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OnN0
cmluZ1R5cGUoKSkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIFByZWZpeFJlc29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9kZShpbnQgbGluZU51bWJl
ciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IFBy
ZVBvc3RSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBpZGVudCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBl
bmRPZmZzZXQpCisgICAgaW5saW5lIFByZWZpeFJlc29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IFByZVBvc3RSZXNvbHZlTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGlkZW50LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkK
ICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQ
cmVmaXhCcmFja2V0Tm9kZTo6UHJlZml4QnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVy
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcmVm
aXhCcmFja2V0Tm9kZTo6UHJlZml4QnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0
LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0
YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkK
ICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCkBAIC0zODcsOCArMzg4LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVmaXhEb3ROb2RlOjpQ
cmVmaXhEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFByZWZpeERvdE5vZGU6OlByZWZpeERvdE5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZVBy
ZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAg
ICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKQEAgLTM5Niw0
NCArMzk3LDQ0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
UHJlZml4RXJyb3JOb2RlOjpQcmVmaXhFcnJvck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByLCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyKQorICAgIGlubGluZSBQcmVmaXhFcnJvck5vZGU6OlByZWZpeEVycm9yTm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9w
ZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX29w
ZXJhdG9yKG9wZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBVbmFyeU9wTm9kZTo6VW5h
cnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIE9wY29kZUlEIG9wY29kZUlEKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIsIHR5cGUpCisgICAgaW5saW5lIFVuYXJ5T3BOb2RlOjpVbmFyeU9wTm9kZShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9k
ZSogZXhwciwgT3Bjb2RlSUQgb3Bjb2RlSUQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCB0eXBlKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAg
ICAgICAsIG1fb3Bjb2RlSUQob3Bjb2RlSUQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBV
bmFyeVBsdXNOb2RlOjpVbmFyeVBsdXNOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcikKLSAgICAgICAgOiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpu
dW1iZXJUeXBlKCksIGV4cHIsIG9wX3RvX2pzbnVtYmVyKQorICAgIGlubGluZSBVbmFyeVBsdXNO
b2RlOjpVbmFyeVBsdXNOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwciwgb3BfdG9fanNudW1iZXIp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBOZWdhdGVOb2RlOjpOZWdhdGVOb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBVbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIsIG9wX25lZ2F0ZSkKKyAg
ICBpbmxpbmUgTmVnYXRlTm9kZTo6TmVnYXRlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogVW5hcnlPcE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIsIG9w
X25lZ2F0ZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJpdHdpc2VOb3ROb2RlOjpCaXR3
aXNlTm90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSkKKyAg
ICBpbmxpbmUgQml0d2lzZU5vdE5vZGU6OkJpdHdpc2VOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCkp
CiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBMb2dp
Y2FsTm90Tm9kZTo6TG9naWNhbE5vdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByKQotICAgICAgICA6IFVuYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJv
b2xlYW5UeXBlKCksIGV4cHIsIG9wX25vdCkKKyAgICBpbmxpbmUgTG9naWNhbE5vdE5vZGU6Okxv
Z2ljYWxOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcikKKyAgICAgICAgOiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIsIG9wX25vdCkKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIEJpbmFyeU9wTm9kZTo6QmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQg
b3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBCaW5hcnlPcE5vZGU6OkJpbmFyeU9wTm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIG1fZXhwcjEoZXhwcjEpCiAgICAgICAgICwgbV9leHByMihleHByMikK
ICAgICAgICAgLCBtX29wY29kZUlEKG9wY29kZUlEKQpAQCAtNDQxLDggKzQ0Miw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQmluYXJ5T3BOb2RlOjpCaW5h
cnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwg
dHlwZSkKKyAgICBpbmxpbmUgQmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCB0eXBlKQogICAgICAgICAsIG1fZXhwcjEoZXhwcjEpCiAgICAgICAgICwgbV9l
eHByMihleHByMikKICAgICAgICAgLCBtX29wY29kZUlEKG9wY29kZUlEKQpAQCAtNDUwLDE0MCAr
NDUxLDE0MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE11
bHROb2RlOjpNdWx0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAg
OiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHBy
MSwgZXhwcjIsIG9wX211bCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTXVsdE5v
ZGU6Ok11bHROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJl
c3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9tdWwsIHJpZ2h0SGFzQXNz
aWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBEaXZOb2RlOjpEaXZOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5l
TnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZGl2LCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBEaXZOb2RlOjpEaXZOb2RlKGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFy
eU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUo
KSwgZXhwcjEsIGV4cHIyLCBvcF9kaXYsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAg
IH0KIAogCi0gICAgaW5saW5lIE1vZE5vZGU6Ok1vZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6
Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9tb2QsIHJpZ2h0SGFzQXNzaWdubWVudHMp
CisgICAgaW5saW5lIE1vZE5vZGU6Ok1vZE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9w
X21vZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFk
ZE5vZGU6OkFkZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDog
QmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckFkZChleHByMS0+cmVzdWx0
RGVzY3JpcHRvcigpLCBleHByMi0+cmVzdWx0RGVzY3JpcHRvcigpKSwgZXhwcjEsIGV4cHIyLCBv
cF9hZGQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEFkZE5vZGU6OkFkZE5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAg
IDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Zm9y
QWRkKGV4cHIxLT5yZXN1bHREZXNjcmlwdG9yKCksIGV4cHIyLT5yZXN1bHREZXNjcmlwdG9yKCkp
LCBleHByMSwgZXhwcjIsIG9wX2FkZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIFN1Yk5vZGU6OlN1Yk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51
bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9zdWIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisg
ICAgaW5saW5lIFN1Yk5vZGU6OlN1Yk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3N1
YiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIExlZnRT
aGlmdE5vZGU6OkxlZnRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0g
ICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCks
IGV4cHIxLCBleHByMiwgb3BfbHNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGlu
ZSBMZWZ0U2hpZnROb2RlOjpMZWZ0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3Bf
bHNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
UmlnaHRTaGlmdE5vZGU6OlJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JC
aXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX3JzaGlmdCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAg
ICBpbmxpbmUgUmlnaHRTaGlmdE5vZGU6OlJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBl
eHByMiwgb3BfcnNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZTo6VW5zaWduZWRSaWdodFNoaWZ0Tm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGlu
ZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3Vyc2hp
ZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIFVuc2lnbmVkUmlnaHRTaGlmdE5v
ZGU6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3Vy
c2hpZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBM
ZXNzTm9kZTo6TGVzc05vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAg
IDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4
cHIxLCBleHByMiwgb3BfbGVzcywgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTGVz
c05vZGU6Okxlc3NOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbGVzcywgcmlnaHRI
YXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEdyZWF0ZXJOb2RlOjpH
cmVhdGVyTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5h
cnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4
cHIyLCBvcF9ncmVhdGVyLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBHcmVhdGVy
Tm9kZTo6R3JlYXRlck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVyLCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTGVzc0VxTm9k
ZTo6TGVzc0VxTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBC
aW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEs
IGV4cHIyLCBvcF9sZXNzZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIExlc3NF
cU5vZGU6Okxlc3NFcU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9sZXNzZXEsIHJp
Z2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBHcmVhdGVyRXFO
b2RlOjpHcmVhdGVyRXFOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAg
ICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBl
eHByMSwgZXhwcjIsIG9wX2dyZWF0ZXJlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxp
bmUgR3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIs
IG9wX2dyZWF0ZXJlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIFRocm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGludCBs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlIHR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCB0eXBlLCBleHByMSwgZXhw
cjIsIG9wY29kZUlELCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBUaHJvd2FibGVC
aW5hcnlPcE5vZGU6OlRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgUmVzdWx0VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0
eXBlLCBleHByMSwgZXhwcjIsIG9wY29kZUlELCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgVGhyb3dhYmxlQmluYXJ5T3BOb2RlOjpUaHJvd2FibGVCaW5h
cnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIG9wY29k
ZUlELCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBUaHJvd2FibGVCaW5hcnlPcE5v
ZGU6OlRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlE
IG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCBvcGNvZGVJRCwgcmln
aHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEluc3RhbmNlT2ZO
b2RlOjpJbnN0YW5jZU9mTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAg
ICAgOiBUaHJvd2FibGVCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVh
blR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9pbnN0YW5jZW9mLCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorICAgIGlubGluZSBJbnN0YW5jZU9mTm9kZTo6SW5zdGFuY2VPZk5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogVGhyb3dhYmxl
QmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVh
blR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9pbnN0YW5jZW9mLCByaWdodEhhc0Fzc2lnbm1lbnRz
KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgSW5Ob2RlOjpJbk5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxpbmVO
dW1iZXIsIGV4cHIxLCBleHByMiwgb3BfaW4sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5s
aW5lIEluTm9kZTo6SW5Ob2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQorICAgICAgICA6IFRocm93YWJsZUJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGV4cHIxLCBleHByMiwgb3BfaW4sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBFcXVhbE5vZGU6OkVxdWFsTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwg
UmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9lcSwgcmlnaHRIYXNB
c3NpZ25tZW50cykKKyAgICBpbmxpbmUgRXF1YWxOb2RlOjpFcXVhbE5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9lcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIE5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRU
eXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX25lcSwgcmlnaHRIYXNBc3NpZ25t
ZW50cykKKyAgICBpbmxpbmUgTm90RXF1YWxOb2RlOjpOb3RFcXVhbE5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9uZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBTdHJpY3RFcXVhbE5vZGU6OlN0cmljdEVxdWFsTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwg
UmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9zdHJpY3RlcSwgcmln
aHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgU3RyaWN0RXF1YWxOb2RlOjpTdHJpY3RFcXVh
bE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisg
ICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlw
ZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9zdHJpY3RlcSwgcmlnaHRIYXNBc3Np
Z25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE5vdFN0cmljdEVxdWFsTm9kZTo6
Tm90U3RyaWN0RXF1YWxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAg
ICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBl
eHByMSwgZXhwcjIsIG9wX25zdHJpY3RlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxp
bmUgTm90U3RyaWN0RXF1YWxOb2RlOjpOb3RTdHJpY3RFcXVhbE5vZGUoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhw
cjEsIGV4cHIyLCBvcF9uc3RyaWN0ZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBCaXRBbmROb2RlOjpCaXRBbmROb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRU
eXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdGFuZCwgcmlnaHRIYXNBc3NpZ25t
ZW50cykKKyAgICBpbmxpbmUgQml0QW5kTm9kZTo6Qml0QW5kTm9kZShpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwg
ZXhwcjIsIG9wX2JpdGFuZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIEJpdE9yTm9kZTo6Qml0T3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JC
aXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdG9yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAg
IGlubGluZSBCaXRPck5vZGU6OkJpdE9yTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2Jp
dG9yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQml0
WE9yTm9kZTo6Qml0WE9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAg
ICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhw
cjEsIGV4cHIyLCBvcF9iaXR4b3IsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEJp
dFhPck5vZGU6OkJpdFhPck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXR4b3IsIHJp
Z2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBMb2dpY2FsT3BO
b2RlOjpMb2dpY2FsT3BOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgTG9naWNhbE9wZXJhdG9yIG9wZXIpCi0gICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSkKKyAg
ICBpbmxpbmUgTG9naWNhbE9wTm9kZTo6TG9naWNhbE9wTm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIExvZ2ljYWxPcGVyYXRvciBvcGVyKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSkKICAgICAgICAg
LCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCiAgICAgICAgICwgbV9v
cGVyYXRvcihvcGVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQ29uZGl0aW9uYWxOb2Rl
OjpDb25kaXRpb25hbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2Fs
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMikKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBDb25kaXRpb25hbE5vZGU6
OkNvbmRpdGlvbmFsTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGxvZ2ljYWwsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
cikKICAgICAgICAgLCBtX2xvZ2ljYWwobG9naWNhbCkKICAgICAgICAgLCBtX2V4cHIxKGV4cHIx
KQogICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBS
ZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZShpbnQgbGluZU51bWJl
ciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2Rl
KiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmVhZE1vZGlmeVJlc29sdmVOb2RlOjpSZWFk
TW9kaWZ5UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2lkZW50KGlkZW50
KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQpCkBAIC01OTIsMTYgKzU5MywxNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnblJlc29sdmVOb2RlOjpB
c3NpZ25SZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFzc2lnblJlc29sdmVO
b2RlOjpBc3NpZ25SZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcikKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fcmlnaHQo
cmlnaHQpCiAgICAgICAgICwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVu
dHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OlJl
YWRNb2RpZnlCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGlu
ZSBSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OlJlYWRNb2RpZnlCcmFja2V0Tm9kZShpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25O
b2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAg
ICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2Ny
aXB0KQpAQCAtNjEyLDggKzYxMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgQXNzaWduQnJhY2tldE5vZGU6OkFzc2lnbkJyYWNrZXROb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIEFzc2lnbkJyYWNrZXROb2RlOjpBc3NpZ25CcmFja2V0Tm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJl
c3Npb25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3Jp
cHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAg
ICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtNjIz
LDggKzYyNCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
QXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGlu
ZU51bWJlcikKKyAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRlbnQo
aWRlbnQpCkBAIC02MzMsOCArNjM0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
T3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1f
aWRlbnQoaWRlbnQpCkBAIC02NDQsOCArNjQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25FcnJvck5vZGU6OkFzc2lnbkVycm9yTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Np
b25Ob2RlKiByaWdodCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgQXNzaWduRXJyb3JOb2RlOjpBc3NpZ25FcnJvck5vZGUoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBPcGVyYXRvciBvcGVyLCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2xlZnQobGVmdCkKICAgICAg
ICAgLCBtX29wZXJhdG9yKG9wZXIpCkBAIC02NTMsMTUgKzY1NCwxNSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENvbW1hTm9kZTo6Q29tbWFOb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMikK
LSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBDb21tYU5v
ZGU6OkNvbW1hTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKICAgICAgICAgbV9leHByZXNz
aW9ucy5hcHBlbmQoZXhwcjEpOwogICAgICAgICBtX2V4cHJlc3Npb25zLmFwcGVuZChleHByMik7
CiAgICAgfQogCi0gICAgaW5saW5lIENvbnN0U3RhdGVtZW50Tm9kZTo6Q29uc3RTdGF0ZW1lbnRO
b2RlKGludCBsaW5lTnVtYmVyLCBDb25zdERlY2xOb2RlKiBuZXh0KQotICAgICAgICA6IFN0YXRl
bWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQ29uc3RTdGF0ZW1lbnROb2RlOjpDb25z
dFN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIENvbnN0RGVj
bE5vZGUqIG5leHQpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCiAgICAgICAgICwgbV9uZXh0KG5leHQpCiAgICAgewogICAgIH0KQEAgLTY3MCw1NyAr
NjcxLDU3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRW1w
dHlTdGF0ZW1lbnROb2RlOjpFbXB0eVN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAg
ICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBFbXB0eVN0YXRlbWVu
dE5vZGU6OkVtcHR5U3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
cikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6RGVidWdnZXJT
dGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGlu
ZU51bWJlcikKKyAgICBpbmxpbmUgRGVidWdnZXJTdGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRl
bWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCisgICAgICAgIDogU3Rh
dGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgIH0KICAgICAK
LSAgICBpbmxpbmUgRXhwclN0YXRlbWVudE5vZGU6OkV4cHJTdGF0ZW1lbnROb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIEV4cHJTdGF0ZW1lbnROb2RlOjpFeHByU3RhdGVtZW50Tm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIp
CisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAg
ICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBWYXJTdGF0ZW1l
bnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFZh
clN0YXRlbWVudE5vZGU6OlZhclN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsK
ICAgICB9CiAgICAgCi0gICAgaW5saW5lIElmTm9kZTo6SWZOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrKQotICAgICAg
ICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgSWZOb2RlOjpJZk5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRp
b24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2spCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9jb25kaXRpb24oY29uZGl0aW9uKQog
ICAgICAgICAsIG1faWZCbG9jayhpZkJsb2NrKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
SWZFbHNlTm9kZTo6SWZFbHNlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNv
bmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2Nr
KQotICAgICAgICA6IElmTm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24sIGlmQmxvY2spCisgICAg
aW5saW5lIElmRWxzZU5vZGU6OklmRWxzZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ss
IFN0YXRlbWVudE5vZGUqIGVsc2VCbG9jaykKKyAgICAgICAgOiBJZk5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBjb25kaXRpb24sIGlmQmxvY2spCiAgICAgICAgICwgbV9lbHNlQmxvY2so
ZWxzZUJsb2NrKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRG9XaGlsZU5vZGU6OkRvV2hp
bGVOb2RlKGludCBsaW5lTnVtYmVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIEV4cHJlc3Np
b25Ob2RlKiBleHByKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBp
bmxpbmUgRG9XaGlsZU5vZGU6OkRvV2hpbGVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByKQor
ICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAg
ICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIFdoaWxlTm9kZTo6V2hpbGVOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQotICAgICAg
ICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgV2hpbGVOb2RlOjpXaGls
ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAg
ICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRm9y
Tm9kZTo6Rm9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIEV4cHJlc3Npb25Ob2RlKiBleHByMywgU3RhdGVtZW50Tm9kZSog
c3RhdGVtZW50LCBib29sIGV4cHIxV2FzVmFyRGVjbCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZvck5vZGU6OkZvck5vZGUoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwg
Ym9vbCBleHByMVdhc1ZhckRlY2wpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9leHByMShleHByMSkKICAgICAgICAgLCBtX2V4
cHIyKGV4cHIyKQogICAgICAgICAsIG1fZXhwcjMoZXhwcjMpCkBAIC03MzAsMzggKzczMSwzOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQVNTRVJUKHN0YXRlbWVudCk7CiAgICAgfQogCi0g
ICAgaW5saW5lIENvbnRpbnVlTm9kZTo6Q29udGludWVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNvbnRpbnVlTm9kZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQorICAgICAgICA6IFN0
YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1faWRlbnQo
Z2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNvbnRpbnVlTm9kZShpbnQgbGluZU51bWJlciwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNvbnRpbnVlTm9kZShpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgICAgIDog
U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9pZGVu
dChpZGVudCkKICAgICB7CiAgICAgfQogICAgIAotICAgIGlubGluZSBCcmVha05vZGU6OkJyZWFr
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyKQotICAgICAgICA6
IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQnJlYWtOb2RlOjpCcmVha05v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikK
ICAgICAgICAgLCBtX2lkZW50KGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlm
aWVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQnJlYWtOb2RlOjpCcmVha05vZGUoaW50
IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQotICAgICAgICA6IFN0YXRlbWVu
dE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQnJlYWtOb2RlOjpCcmVha05vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAg
ICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAs
IG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgUmV0dXJuTm9k
ZTo6UmV0dXJuTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIHZhbHVlKQotICAg
ICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmV0dXJuTm9kZTo6
UmV0dXJuTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIHZhbHVlKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBXaXRoTm9kZTo6V2l0aE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
LCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIHVpbnQzMl90IGRpdm90LCB1aW50MzJfdCBleHBy
ZXNzaW9uTGVuZ3RoKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBp
bmxpbmUgV2l0aE5vZGU6OldpdGhOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCB1aW50MzJf
dCBkaXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCkKKyAgICAgICAgOiBTdGF0ZW1lbnRO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAg
ICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCiAgICAgICAgICwgbV9kaXZvdChkaXZvdCkK
QEAgLTc2OSwyMSArNzcwLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgTGFiZWxOb2RlOjpMYWJlbE5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkKLSAgICAgICAgOiBTdGF0ZW1l
bnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIExhYmVsTm9kZTo6TGFiZWxOb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBTdGF0
ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV9zdGF0
ZW1lbnQoc3RhdGVtZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVGhyb3dOb2RlOjpU
aHJvd05vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6
IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgVGhyb3dOb2RlOjpUaHJvd05v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAg
ICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVHJ5Tm9kZTo6
VHJ5Tm9kZShpbnQgbGluZU51bWJlciwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElk
ZW50aWZpZXImIGV4Y2VwdGlvbklkZW50LCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0
ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBUcnlOb2RlOjpUcnlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciYgZXhj
ZXB0aW9uSWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZp
bmFsbHlCbG9jaykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcikKICAgICAgICAgLCBtX3RyeUJsb2NrKHRyeUJsb2NrKQogICAgICAgICAsIG1fZXhjZXB0
aW9uSWRlbnQoZXhjZXB0aW9uSWRlbnQpCiAgICAgICAgICwgbV9jYXRjaEJsb2NrKGNhdGNoQmxv
Y2spCkBAIC04MDQsMTUgKzgwNSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbC0+bV9u
ZXh0ID0gdGhpczsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5v
ZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbkJvZHlO
b2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5vZGUqIHBhcmFt
ZXRlcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBG
dW5jRXhwck5vZGU6OkZ1bmNFeHByTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQorICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2Jv
ZHkoYm9keSkKICAgICB7CiAgICAgICAgIG1fYm9keS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIHBh
cmFtZXRlciwgaWRlbnQpOwogICAgIH0KIAotICAgIGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNE
ZWNsTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9u
Qm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSog
cGFyYW1ldGVyKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgRnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcikKKyAgICAg
ICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBt
X2JvZHkoYm9keSkKICAgICB7CiAgICAgICAgIG1fYm9keS0+ZmluaXNoUGFyc2luZyhzb3VyY2Us
IHBhcmFtZXRlciwgaWRlbnQpOwpAQCAtODQ0LDI5ICs4NDUsMjkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBTd2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQ2FzZUJsb2NrTm9kZSogYmxvY2spCi0g
ICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBTd2l0Y2hOb2Rl
OjpTd2l0Y2hOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwciwgQ2FzZUJsb2NrTm9kZSogYmxvY2spCisgICAgICAgIDogU3RhdGVtZW50Tm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAg
ICAgICwgbV9ibG9jayhibG9jaykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENvbnN0RGVj
bE5vZGU6OkNvbnN0RGVjbE5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBDb25zdERlY2xOb2RlOjpDb25zdERlY2xOb2RlKGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVz
c2lvbk5vZGUqIGluaXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9uZXh0KDAp
CiAgICAgICAgICwgbV9pbml0KGluaXQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCbG9j
a05vZGU6OkJsb2NrTm9kZShpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIHN0YXRlbWVu
dHMpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBCbG9j
a05vZGU6OkJsb2NrTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU291cmNl
RWxlbWVudHMqIHN0YXRlbWVudHMpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9zdGF0ZW1lbnRzKHN0YXRlbWVudHMpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbCwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkKLSAgICAgICAgOiBTdGF0ZW1l
bnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZvckluTm9kZTo6Rm9ySW5Ob2RlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBsLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3Rh
dGVtZW50KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
KQogICAgICAgICAsIG1faWRlbnQoZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50
aWZpZXIpCiAgICAgICAgICwgbV9pbml0KDApCiAgICAgICAgICwgbV9sZXhwcihsKQpAQCAtODc2
LDE3ICs4NzcsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBGb3JJbk5vZGU6OkZvckluTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5l
TnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluLCBFeHBy
ZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgZGl2b3QsIGlu
dCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIEZvckluTm9kZTo6Rm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBT
dGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQg
ZW5kT2Zmc2V0KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9pbml0KDApCi0gICAg
ICAgICwgbV9sZXhwcihuZXcgKGdsb2JhbERhdGEpIFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlk
ZW50LCBkaXZvdCAtIHN0YXJ0T2Zmc2V0KSkKKyAgICAgICAgLCBtX2xleHByKG5ldyAoZ2xvYmFs
RGF0YSkgUmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBpZGVudCwgZGl2b3Qg
LSBzdGFydE9mZnNldCkpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9zdGF0
ZW1lbnQoc3RhdGVtZW50KQogICAgICAgICAsIG1faWRlbnRJc1ZhckRlY2wodHJ1ZSkKICAgICB7
CiAgICAgICAgIGlmIChpbikgewotICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUg
PSBuZXcgKGdsb2JhbERhdGEpIEFzc2lnblJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50LCBp
biwgdHJ1ZSk7CisgICAgICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAoZ2xv
YmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBpZGVu
dCwgaW4sIHRydWUpOwogICAgICAgICAgICAgbm9kZS0+c2V0RXhjZXB0aW9uU291cmNlQ29kZShk
aXZvdCwgZGl2b3QgLSBzdGFydE9mZnNldCwgZW5kT2Zmc2V0IC0gZGl2b3QpOwogICAgICAgICAg
ICAgbV9pbml0ID0gbm9kZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmNwcAppbmRleCBjMzJlNGM3M2EyNGViZWIyMzNjZDVlMDFmZmZkNjNhNDg2ODVjODg2Li4z
YjUxZjA3ZjVmNWM5ODljY2FlMDVhZjA5NjFmYzIwODA5YWNlOGRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtNTIsMTAgKzUyLDExIEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3RhdGVtZW50Tm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lkIFN0YXRlbWVudE5vZGU6OnNldExv
YyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCit2b2lkIFN0YXRlbWVudE5vZGU6OnNldExv
YyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUsIGludCBjb2x1bW4pCiB7CiAgICAgbV9saW5l
TnVtYmVyID0gZmlyc3RMaW5lOwogICAgIG1fbGFzdExpbmUgPSBsYXN0TGluZTsKKyAgICBtX2Nv
bHVtbk51bWJlciA9IGNvbHVtbjsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIFNvdXJjZUVsZW1lbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03
NSw4ICs3Niw4IEBAIFN0YXRlbWVudE5vZGUqIFNvdXJjZUVsZW1lbnRzOjpzaW5nbGVTdGF0ZW1l
bnQoKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU2NvcGVOb2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVNjb3BlTm9kZTo6U2NvcGVOb2RlKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250
ZXh0KQotICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorU2NvcGVOb2RlOjpTY29wZU5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgYm9vbCBpblN0cmljdENvbnRleHQpCisgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICAsIFBhcnNlckFyZW5hUmVmQ291bnRlZChnbG9iYWxEYXRh
KQogICAgICwgbV9mZWF0dXJlcyhpblN0cmljdENvbnRleHQgPyBTdHJpY3RNb2RlRmVhdHVyZSA6
IE5vRmVhdHVyZXMpCiAgICAgLCBtX251bUNvbnN0YW50cygwKQpAQCAtODQsOCArODUsOCBAQCBT
Y29wZU5vZGU6OlNjb3BlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVt
YmVyLCBib29sIGluU3RyaWN0Q29udAogewogfQogCi1TY29wZU5vZGU6OlNjb3BlTm9kZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5j
dGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBD
b2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCi0gICAgOiBTdGF0ZW1lbnRO
b2RlKGxpbmVOdW1iZXIpCitTY29wZU5vZGU6OlNjb3BlTm9kZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBG
dW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVz
LCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCisgICAgOiBTdGF0ZW1l
bnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAsIFBhcnNlckFyZW5hUmVmQ291
bnRlZChnbG9iYWxEYXRhKQogICAgICwgbV9mZWF0dXJlcyhmZWF0dXJlcykKICAgICAsIG1fc291
cmNlKHNvdXJjZSkKQEAgLTEwNywxNCArMTA4LDE0IEBAIFN0YXRlbWVudE5vZGUqIFNjb3BlTm9k
ZTo6c2luZ2xlU3RhdGVtZW50KCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIFByb2dyYW1Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGlu
ZSBQcm9ncmFtTm9kZTo6UHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQg
bGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ss
IEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJs
ZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQg
bnVtQ29uc3RhbnRzKQotICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIHNv
dXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBm
ZWF0dXJlcywgbnVtQ29uc3RhbnRzKQoraW5saW5lIFByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25T
dGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFu
dHMpCisgICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxl
cywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKIHsKIH0KIAotUGFzc1JlZlB0cjxQcm9ncmFtTm9k
ZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5l
TnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVu
Y3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1D
b25zdGFudHMpCitQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0
YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cykKIHsKLSAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IG5vZGUgPSBuZXcgUHJvZ3JhbU5vZGUoZ2xv
YmFsRGF0YSwgbGluZU51bWJlciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssICBjYXB0
dXJlZFZhcmlhYmxlcywgc291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKKyAgICBSZWZQ
dHI8UHJvZ3JhbU5vZGU+IG5vZGUgPSBuZXcgUHJvZ3JhbU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgIGNhcHR1
cmVkVmFyaWFibGVzLCBzb3VyY2UsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOwogCiAgICAgQVNT
RVJUKG5vZGUtPm1fYXJlbmEubGFzdCgpID09IG5vZGUpOwogICAgIG5vZGUtPm1fYXJlbmEucmVt
b3ZlTGFzdCgpOwpAQCAtMTI1LDE0ICsxMjYsMTQgQEAgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4g
UHJvZ3JhbU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnUK
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBFdmFsTm9kZTo6RXZhbE5vZGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVu
LCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmll
clNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZl
YXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQotICAgIDogU2NvcGVOb2RlKGdsb2Jh
bERhdGEsIGxpbmVOdW1iZXIsIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ss
IGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQoraW5saW5lIEV2YWxO
b2RlOjpFdmFsTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJT
dGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZh
cmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMs
IGludCBudW1Db25zdGFudHMpCisgICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBj
YXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKIHsKIH0KIAotUGFzc1Jl
ZlB0cjxFdmFsTm9kZT4gRXZhbE5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJT
dGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZh
cmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMs
IGludCBudW1Db25zdGFudHMpCitQYXNzUmVmUHRyPEV2YWxOb2RlPiBFdmFsTm9kZTo6Y3JlYXRl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlv
blN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cykKIHsKLSAgICBSZWZQdHI8RXZhbE5vZGU+IG5vZGUgPSBuZXcgRXZhbE5vZGUoZ2xvYmFs
RGF0YSwgbGluZU51bWJlciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVk
VmFyaWFibGVzLCBzb3VyY2UsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOworICAgIFJlZlB0cjxF
dmFsTm9kZT4gbm9kZSA9IG5ldyBFdmFsTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxl
cywgc291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIAogICAgIEFTU0VSVChub2RlLT5t
X2FyZW5hLmxhc3QoKSA9PSBub2RlKTsKICAgICBub2RlLT5tX2FyZW5hLnJlbW92ZUxhc3QoKTsK
QEAgLTE0OSwxMyArMTUwLDEzIEBAIEZ1bmN0aW9uUGFyYW1ldGVyczo6RnVuY3Rpb25QYXJhbWV0
ZXJzKFBhcmFtZXRlck5vZGUqIGZpcnN0UGFyYW1ldGVyKQogICAgICAgICBhcHBlbmQocGFyYW1l
dGVyLT5pZGVudCgpKTsKIH0KIAotaW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9k
eU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0
cmljdENvbnRleHQpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgaW5T
dHJpY3RDb250ZXh0KQoraW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgYm9vbCBpblN0cmljdENvbnRleHQpCisgICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBpblN0cmljdENvbnRleHQpCiB7CiB9CiAKLWlubGluZSBG
dW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgaW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZh
clN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVk
VmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVh
dHVyZXMsIGludCBudW1Db25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGlu
ZU51bWJlciwgc291cmNlQ29kZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1
cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQoraW5saW5lIEZ1bmN0aW9uQm9k
eU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJT
dGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYg
Y2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0
dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxE
YXRhLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2YXJT
dGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50
cykKIHsKIH0KIApAQCAtMTcyLDE0ICsxNzMsMTQgQEAgdm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpm
aW5pc2hQYXJzaW5nKFBhc3NSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzLAog
ICAgIG1faWRlbnQgPSBpZGVudDsKIH0KIAotRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5
Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGJv
b2wgaW5TdHJpY3RDb250ZXh0KQorRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6
Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQogewotICAgIHJldHVybiBuZXcgRnVuY3Rp
b25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBpblN0cmljdENvbnRleHQpOworICAg
IHJldHVybiBuZXcgRnVuY3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGluU3RyaWN0Q29udGV4dCk7CiB9CiAKLVBhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5
Tm9kZT4gRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
aW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0
YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFy
aWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVy
ZXMsIGludCBudW1Db25zdGFudHMpCitQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IEZ1bmN0
aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNr
KiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0
dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVz
IGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogewotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlO
b2RlPiBub2RlID0gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwg
Y2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2VD
b2RlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9k
ZT4gbm9kZSA9IG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFi
bGVzLCBzb3VyY2VDb2RlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIAogICAgIEFTU0VSVChu
b2RlLT5tX2FyZW5hLmxhc3QoKSA9PSBub2RlKTsKICAgICBub2RlLT5tX2FyZW5hLnJlbW92ZUxh
c3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA1YzkwYmI5ZmU2NjM2
MGU5MmE5OTdhZGI2NGIzZWU3OTYzNzMyMjY2Li5iMDQ4MTc5Mjg1MjUzNThkMWQ5MmIyMmRiNDli
MTgwOGRhZjA4Mjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xMzAs
NyArMTMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOb2RlIDogcHVibGljIFBh
cnNlckFyZW5hRnJlZWFibGUgewogICAgIHByb3RlY3RlZDoKLSAgICAgICAgTm9kZShpbnQpOwor
ICAgICAgICBOb2RlKGludCwgaW50KTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+
Tm9kZSgpIHsgfQpAQCAtMTM5LDEzICsxMzksMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgaW50IGxpbmVObygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51bWJlcjsgfQogCisgICAgICAg
IGludCBjb2x1bW5ObygpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1uTnVtYmVyOyB9CisKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIGludCBtX2xpbmVOdW1iZXI7CisgICAgICAgIGludCBtX2NvbHVt
bk51bWJlcjsKICAgICB9OwogCiAgICAgY2xhc3MgRXhwcmVzc2lvbk5vZGUgOiBwdWJsaWMgTm9k
ZSB7CiAgICAgcHJvdGVjdGVkOgotICAgICAgICBFeHByZXNzaW9uTm9kZShpbnQsIFJlc3VsdFR5
cGUgPSBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpKTsKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUo
aW50LCBpbnQsIFJlc3VsdFR5cGUgPSBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpKTsKIAogICAg
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KQEAgLTE3NSwxMiArMTc4LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAg
IFN0YXRlbWVudE5vZGUoaW50KTsKKyAgICAgICAgU3RhdGVtZW50Tm9kZShpbnQsIGludCk7CiAK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TG9jKGludCBm
aXJzdExpbmUsIGludCBsYXN0TGluZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0TG9jKGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVtbik7CiAgICAgICAg
IGludCBmaXJzdExpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lTm8oKTsgfQogICAgICAgICBpbnQg
bGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CisgICAgICAgIGludCBjb2x1
bW4oKSBjb25zdCB7IHJldHVybiBjb2x1bW5ObygpO30KIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNFbXB0eVN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc1JldHVybk5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTk0LDcg
KzE5OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTnVsbE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTnVsbE5vZGUoaW50KTsKKyAg
ICAgICAgTnVsbE5vZGUoaW50LCBpbnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOwpAQCAtMjA0LDcgKzIwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
Qm9vbGVhbk5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQm9vbGVhbk5vZGUoaW50LCBib29sIHZhbHVlKTsKKyAgICAgICAgQm9vbGVhbk5vZGUoaW50
LCBpbnQsIGJvb2wgdmFsdWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
OwpAQCAtMjE2LDcgKzIyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTnVtYmVy
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBOdW1i
ZXJOb2RlKGludCwgZG91YmxlIHZhbHVlKTsKKyAgICAgICAgTnVtYmVyTm9kZShpbnQsIGludCwg
ZG91YmxlIHZhbHVlKTsKIAogICAgICAgICBkb3VibGUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlOyB9CiAgICAgICAgIHZvaWQgc2V0VmFsdWUoZG91YmxlIHZhbHVlKSB7IG1fdmFsdWUg
PSB2YWx1ZTsgfQpAQCAtMjMyLDcgKzIzNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgU3RyaW5nTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBTdHJpbmdOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBTdHJpbmdO
b2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAKQEAgLTM0Miw3ICszNDYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlZ0V4cE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAg
ICAgICBSZWdFeHBOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRl
bnRpZmllciYgZmxhZ3MpOworICAgICAgICBSZWdFeHBOb2RlKGludCwgaW50LCBjb25zdCBJZGVu
dGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncyk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0zNTMsNyArMzU3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBUaGlzTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBUaGlzTm9kZShpbnQpOworICAgICAgICBUaGlzTm9kZShpbnQsIGlu
dCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0zNjEsNyArMzY1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZXNvbHZlTm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBSZXNvbHZlTm9kZShpbnQsIGNv
bnN0IElkZW50aWZpZXImLCBpbnQgc3RhcnRPZmZzZXQpOworICAgICAgICBSZXNvbHZlTm9kZShp
bnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIGludCBzdGFydE9mZnNldCk7CiAKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0K
IApAQCAtMzkzLDExICszOTcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcnJh
eU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXJy
YXlOb2RlKGludCwgaW50IGVsaXNpb24pOwotICAgICAgICBBcnJheU5vZGUoaW50LCBFbGVtZW50
Tm9kZSopOwotICAgICAgICBBcnJheU5vZGUoaW50LCBpbnQgZWxpc2lvbiwgRWxlbWVudE5vZGUq
KTsKKyAgICAgICAgQXJyYXlOb2RlKGludCwgaW50LCBpbnQgZWxpc2lvbik7CisgICAgICAgIEFy
cmF5Tm9kZShpbnQsIGludCwgRWxlbWVudE5vZGUqKTsKKyAgICAgICAgQXJyYXlOb2RlKGludCwg
aW50LCBpbnQgZWxpc2lvbiwgRWxlbWVudE5vZGUqKTsKIAotICAgICAgICBBcmd1bWVudExpc3RO
b2RlKiB0b0FyZ3VtZW50TGlzdChKU0dsb2JhbERhdGEqLCBpbnQpIGNvbnN0OworICAgICAgICBB
cmd1bWVudExpc3ROb2RlKiB0b0FyZ3VtZW50TGlzdChKU0dsb2JhbERhdGEqLCBpbnQsIGludCkg
Y29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC00MjgsOCAr
NDMyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcm9wZXJ0eUxpc3ROb2RlIDog
cHVibGljIE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShpbnQs
IFByb3BlcnR5Tm9kZSopOwotICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKGludCwgUHJvcGVydHlO
b2RlKiwgUHJvcGVydHlMaXN0Tm9kZSopOworICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKGludCwg
aW50LCBQcm9wZXJ0eU5vZGUqKTsKKyAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShpbnQsIGludCwg
UHJvcGVydHlOb2RlKiwgUHJvcGVydHlMaXN0Tm9kZSopOwogCiAgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KTsKIApAQCAtNDQwLDggKzQ0NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgT2Jq
ZWN0TGl0ZXJhbE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgT2JqZWN0TGl0ZXJhbE5vZGUoaW50KTsKLSAgICAgICAgT2JqZWN0TGl0ZXJhbE5vZGUo
aW50LCBQcm9wZXJ0eUxpc3ROb2RlKik7CisgICAgICAgIE9iamVjdExpdGVyYWxOb2RlKGludCwg
aW50KTsKKyAgICAgICAgT2JqZWN0TGl0ZXJhbE5vZGUoaW50LCBpbnQsIFByb3BlcnR5TGlzdE5v
ZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTQ1MSw3ICs0
NTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBCcmFja2V0QWNjZXNzb3JO
b2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBib29sIHN1YnNjcmlw
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZShpbnQsIGludCwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vi
c2NyaXB0SGFzQXNzaWdubWVudHMpOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkg
Y29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBtX3N1YnNjcmlwdDsgfQpAQCAtNDY5LDcgKzQ3Myw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRG90QWNjZXNzb3JOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgRG90QWNjZXNzb3JOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImKTsKKyAgICAgICAgRG90QWNjZXNzb3JOb2RlKGludCwgaW50LCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CkBAIC00ODYsOCAr
NDkwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcmd1bWVudExpc3ROb2RlIDog
cHVibGljIE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShpbnQs
IEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgICAgIEFyZ3VtZW50TGlzdE5vZGUoaW50LCBBcmd1bWVu
dExpc3ROb2RlKiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShp
bnQsIGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShpbnQs
IGludCwgQXJndW1lbnRMaXN0Tm9kZSosIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICAgICAgQXJn
dW1lbnRMaXN0Tm9kZSogbV9uZXh0OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwpA
QCAtNTA2LDggKzUxMCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTmV3RXhwck5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7CiAgICAgcHVibGljOgotICAgICAgICBOZXdFeHByTm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
Kik7Ci0gICAgICAgIE5ld0V4cHJOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNO
b2RlKik7CisgICAgICAgIE5ld0V4cHJOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwor
ICAgICAgICBOZXdFeHByTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNO
b2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01MTgsNyAr
NTIyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFdmFsRnVuY3Rpb25DYWxsTm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRh
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGludCwgQXJndW1l
bnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKKyAgICAgICAgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUoaW50LCBpbnQsIEFyZ3Vt
ZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01
MjgsNyArNTMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxW
YWx1ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSosIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIEZ1bmN0aW9uQ2Fs
bFZhbHVlTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKiwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTM5LDcgKzU0Myw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElk
ZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxSZXNvbHZl
Tm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01NTIsNyArNTU2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7
CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2Rl
KiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShpbnQsIGludCwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05vZGUqLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01NjQsNyArNTY4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAg
RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwpAQCAtNTc3LDcgKzU4MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
KyAgICAgICAgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU4NSw3ICs1ODksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAKICAgICBjbGFzcyBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMg
RnVuY3Rpb25DYWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBBcHBseUZ1bmN0aW9u
Q2FsbERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYs
IEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQs
IGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNO
b2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTkzLDcg
KzU5Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlUG9zdFJlc29sdmVOb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlUG9zdFJlc29sdmVOb2RlKGludCwgY29uc3QgSWRl
bnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlUG9zdFJlc29sdmVOb2RlKGludCwgaW50LCBjb25zdCBJ
ZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBtX2lkZW50OwpAQCAtNjAxLDcgKzYwNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgUG9zdGZpeFJlc29sdmVOb2RlIDogcHVibGljIFByZVBvc3RSZXNvbHZlTm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBQb3N0Zml4UmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVy
JiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUG9zdGZpeFJlc29sdmVOb2RlKGludCwgaW50LCBjb25z
dCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKTsKQEAgLTYxMSw3ICs2MTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IFBvc3RmaXhCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93
YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBvc3RmaXhCcmFj
a2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2Ny
aXB0LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpOworICAgICAgICBQb3N0Zml4QnJhY2tldE5vZGUoaW50LCBpbnQsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjIzLDcgKzYyNyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUG9zdGZpeERvdE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgotICAgICAgICBQb3N0Zml4RG90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUG9zdGZpeERvdE5vZGUo
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0
b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTYzNSw3ICs2
MzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFBvc3RmaXhFcnJvck5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7
CiAgICAgcHVibGljOgotICAgICAgICBQb3N0Zml4RXJyb3JOb2RlKGludCwgRXhwcmVzc2lvbk5v
ZGUqLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpOworICAgICAgICBQb3N0Zml4RXJyb3JOb2RlKGludCwgaW50LCBFeHBy
ZXNzaW9uTm9kZSosIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CkBAIC02NDYsNyArNjUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBE
ZWxldGVSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlbGV0ZVJlc29sdmVOb2Rl
KGludCwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRGVsZXRlUmVzb2x2ZU5vZGUoaW50
LCBpbnQsIGNvbnN0IElkZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CkBAIC02NTYsNyArNjYwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBEZWxldGVCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlbGV0ZUJyYWNrZXRO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KTsKKyAgICAgICAgRGVsZXRlQnJhY2tldE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CkBAIC02NjcsNyArNjcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBEZWxldGVEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVsZXRlRG90Tm9k
ZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAg
ICBEZWxldGVEb3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTY3
OCw3ICs2ODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERlbGV0ZVZhbHVlTm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVW
YWx1ZU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBEZWxldGVWYWx1ZU5vZGUo
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CkBAIC02ODgsNyArNjkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBWb2lkTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBWb2lkTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIFZvaWROb2RlKGludCwg
aW50LCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpAQCAtNjk4LDcgKzcwMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVHlw
ZU9mUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgVHlwZU9mUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAg
IFR5cGVPZlJlc29sdmVOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7
IH0KIApAQCAtNzEwLDcgKzcxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVHlw
ZU9mVmFsdWVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIFR5cGVPZlZhbHVlTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIFR5cGVP
ZlZhbHVlTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTcyMCw3ICs3MjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIFByZWZpeFJlc29sdmVOb2RlIDogcHVibGljIFByZVBvc3RSZXNvbHZlTm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBQcmVmaXhSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElk
ZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQcmVmaXhSZXNvbHZlTm9kZShpbnQsIGlu
dCwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CkBAIC03MzAsNyArNzM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBQcmVmaXhCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGlj
IFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgUHJlZml4QnJhY2tldE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlZml4QnJhY2tldE5vZGUo
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0
LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAt
NzQyLDcgKzc0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlZml4RG90Tm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVByZWZpeGVkU3ViRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlZml4RG90Tm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAg
ICAgUHJlZml4RG90Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpAQCAtNzU0LDcgKzc1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJl
Zml4RXJyb3JOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlZml4RXJyb3JOb2RlKGludCwg
RXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQcmVmaXhFcnJvck5vZGUoaW50
LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTc2NSw3ICs3NjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIFVuYXJ5T3BOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFVuYXJ5T3BOb2RlKGludCwgUmVzdWx0VHlwZSwgRXhwcmVzc2lvbk5vZGUq
LCBPcGNvZGVJRCk7CisgICAgICAgIFVuYXJ5T3BOb2RlKGludCwgaW50LCBSZXN1bHRUeXBlLCBF
eHByZXNzaW9uTm9kZSosIE9wY29kZUlEKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIGV4cHIoKSB7IHJldHVybiBtX2V4cHI7IH0KQEAgLTc4Miw3ICs3ODYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFVuYXJ5UGx1c05vZGUgOiBwdWJsaWMgVW5h
cnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVW5hcnlQbHVzTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKik7CisgICAgICAgIFVuYXJ5UGx1c05vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25O
b2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIEV4cHJlc3Npb25Ob2RlKiBz
dHJpcFVuYXJ5UGx1cygpIHsgcmV0dXJuIGV4cHIoKTsgfQpAQCAtNzkwLDEyICs3OTQsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOZWdhdGVOb2RlIDogcHVibGljIFVuYXJ5T3BO
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5lZ2F0ZU5vZGUoaW50LCBFeHByZXNzaW9uTm9k
ZSopOworICAgICAgICBOZWdhdGVOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwogICAg
IH07CiAKICAgICBjbGFzcyBCaXR3aXNlTm90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBCaXR3aXNlTm90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
Kik7CisgICAgICAgIEJpdHdpc2VOb3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwog
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwcigpIHsgcmV0dXJu
IG1fZXhwcjsgfQpAQCAtODA5LDcgKzgxMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogIAogICAgIGNs
YXNzIExvZ2ljYWxOb3ROb2RlIDogcHVibGljIFVuYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIExvZ2ljYWxOb3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgTG9n
aWNhbE5vdE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKik7CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBMYWJlbCogdHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBib29sIGZhbGxUaHJv
dWdoTWVhbnNUcnVlKTsKICAgICAgICAgdmlydHVhbCBib29sIGhhc0NvbmRpdGlvbkNvbnRleHRD
b2RlZ2VuKCkgY29uc3QgeyByZXR1cm4gZXhwcigpLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdl
bigpOyB9CkBAIC04MTcsOCArODIxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBC
aW5hcnlPcE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQmluYXJ5T3BOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgICAgICBC
aW5hcnlPcE5vZGUoaW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgICAgIEJpbmFyeU9wTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwor
ICAgICAgICBCaW5hcnlPcE5vZGUoaW50LCBpbnQsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0U3RyY2F0KEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uLCBSZWdpc3RlcklEKiBs
aHMgPSAwLCBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUqIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lID0g
MCk7CiAKQEAgLTg0Miw3MiArODQ2LDcyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
TXVsdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE11
bHROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIE11bHROb2RlKGludCwgaW50LCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgRGl2Tm9kZSA6IHB1YmxpYyBCaW5h
cnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGl2Tm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOworICAgICAgICBEaXZOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9Owog
CiAgICAgY2xhc3MgTW9kTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgTW9kTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBNb2ROb2RlKGlu
dCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgQWRkTm9kZSA6IHB1
YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQWRkTm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICBBZGROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBZGQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgfTsKIAogICAgIGNsYXNzIFN1Yk5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFN1Yk5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgU3Vi
Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlz
U3VidHJhY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAogICAgIGNsYXNzIExl
ZnRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IExlZnRTaGlmdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTGVmdFNoaWZ0Tm9k
ZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIFJpZ2h0U2hp
ZnROb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBSaWdo
dFNoaWZ0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBSaWdodFNoaWZ0Tm9kZShp
bnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIFVuc2lnbmVkUmln
aHRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IFVuc2lnbmVkUmlnaHRTaGlmdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgVW5z
aWduZWRSaWdodFNoaWZ0Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAog
ICAgIGNsYXNzIExlc3NOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBMZXNzTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBMZXNzTm9kZShp
bnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEdyZWF0ZXJOb2Rl
IDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBHcmVhdGVyTm9k
ZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBHcmVhdGVyTm9kZShpbnQsIGludCwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIExlc3NFcU5vZGUgOiBwdWJsaWMgQmlu
YXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExlc3NFcU5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKKyAgICAgICAgTGVzc0VxTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAg
ICAgfTsKIAogICAgIGNsYXNzIEdyZWF0ZXJFcU5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEdyZWF0ZXJFcU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
KyAgICAgICAgR3JlYXRlckVxTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsK
IAogICAgIGNsYXNzIFRocm93YWJsZUJpbmFyeU9wTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUs
IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBU
aHJvd2FibGVCaW5hcnlPcE5vZGUoaW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7Ci0gICAgICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKKyAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGludCwgaW50LCBSZXN1
bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bj
b2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIFRocm93YWJsZUJpbmFy
eU9wTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTE1LDcgKzkxOSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIAogICAgIGNsYXNzIEluc3RhbmNlT2ZOb2RlIDogcHVibGljIFRocm93YWJsZUJp
bmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBJbnN0YW5jZU9mTm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICBJbnN0YW5jZU9mTm9kZShpbnQsIGludCwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05MjMsMTIg
KzkyNywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEluTm9kZSA6IHB1YmxpYyBU
aHJvd2FibGVCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSW5Ob2RlKGludCwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CisgICAgICAgIEluTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CiAgICAgfTsKIAogICAgIGNsYXNzIEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgRXF1YWxOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAg
ICAgIEVxdWFsTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05MzYsMTIgKzk0MCwxMiBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIE5vdEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgTm90RXF1YWxOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAg
ICAgIE5vdEVxdWFsTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAg
IGNsYXNzIFN0cmljdEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgU3RyaWN0RXF1YWxOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAg
IFN0cmljdEVxdWFsTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05NDksMjggKzk1MywyOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIE5vdFN0cmljdEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5v
ZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTm90U3RyaWN0RXF1YWxOb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CisgICAgICAgIE5vdFN0cmljdEVxdWFsTm9kZShpbnQsIGludCwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEJpdEFuZE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BO
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdEFuZE5vZGUoaW50LCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKKyAgICAgICAgQml0QW5kTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsK
IAogICAgIGNsYXNzIEJpdE9yTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgQml0T3JOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJpdE9y
Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEJpdFhP
ck5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdFhP
ck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQml0WE9yTm9kZShpbnQsIGludCwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIC8vIG1fZXhwcjEgJiYgbV9leHByMiwgbV9l
eHByMSB8fCBtX2V4cHIyCiAgICAgY2xhc3MgTG9naWNhbE9wTm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBMb2dpY2FsT3BOb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIExvZ2ljYWxPcGVyYXRvcik7
CisgICAgICAgIExvZ2ljYWxPcE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBMb2dpY2FsT3BlcmF0b3IpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTg1LDcgKzk4OSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIC8vIFRoZSB0ZXJuYXJ5IG9wZXJhdG9yLCAibV9sb2dpY2FsID8gbV9leHByMSA6IG1f
ZXhwcjIiCiAgICAgY2xhc3MgQ29uZGl0aW9uYWxOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENvbmRpdGlvbmFsTm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
Mik7CisgICAgICAgIENvbmRpdGlvbmFsTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGxv
Z2ljYWwsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTk5Nyw3ICsxMDAxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlm
aWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpOworICAgICAgICBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoaW50LCBpbnQsIGNvbnN0
IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CkBAIC0xMDExLDcgKzEwMTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFzc2ln
blJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUoaW50
LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZShpbnQsIGludCwgY29uc3Qg
SWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwMjQsNyAr
MTAyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVhZE1vZGlmeUJyYWNrZXRO
b2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lv
bkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGludCwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9y
LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUo
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0
LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2ln
bm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwMzksNyArMTA0Myw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgQXNzaWduQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1
YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBBc3Np
Z25CcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSog
c3Vic2NyaXB0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdu
bWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBBc3NpZ25CcmFja2V0
Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJz
Y3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50
cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CkBAIC0xMDUzLDcgKzEwNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIEFzc2lnbkRvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBBc3NpZ25Eb3ROb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9u
Tm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBBc3NpZ25E
b3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDY2LDcgKzEwNzAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlYWRNb2RpZnlEb3ROb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1
YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShpbnQs
IGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwODAsNyArMTA4NCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXNzaWduRXJyb3JOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgQXNzaWduRXJyb3JOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIE9wZXJh
dG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXNzaWduRXJyb3JOb2RlKGlu
dCwgaW50LCBFeHByZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTA5NCw3
ICsxMDk4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb21tYU5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBQYXJzZXJBcmVuYURlbGV0YWJsZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBDb21tYU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMik7CisgICAgICAgIENvbW1hTm9kZShpbnQsIGludCwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpOwogCiAgICAgICAgIHVzaW5nIFBh
cnNlckFyZW5hRGVsZXRhYmxlOjpvcGVyYXRvciBuZXc7CiAKQEAgLTExMDksNyArMTExMyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIENvbnN0RGVjbE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29uc3REZWNsTm9kZShpbnQs
IGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBDb25zdERlY2xO
b2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAg
ICAgICBib29sIGhhc0luaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9pbml0OyB9CiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50KCkgeyByZXR1cm4gbV9pZGVudDsgfQpAQCAtMTEy
OSw3ICsxMTMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zdFN0YXRlbWVu
dE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDb25z
dFN0YXRlbWVudE5vZGUoaW50LCBDb25zdERlY2xOb2RlKiBuZXh0KTsKKyAgICAgICAgQ29uc3RT
dGF0ZW1lbnROb2RlKGludCwgaW50LCBDb25zdERlY2xOb2RlKiBuZXh0KTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTExNTQsNyArMTE1OCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgQmxvY2tOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgQmxvY2tOb2RlKGludCwgU291cmNlRWxlbWVudHMqID0gMCk7
CisgICAgICAgIEJsb2NrTm9kZShpbnQsIGludCwgU291cmNlRWxlbWVudHMqID0gMCk7CiAKICAg
ICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50KCkgY29uc3Q7CiAgICAgICAgIFN0
YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnQoKSBjb25zdDsKQEAgLTExNjksNyArMTE3Myw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRW1wdHlTdGF0ZW1lbnROb2RlIDogcHVibGlj
IFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRW1wdHlTdGF0ZW1lbnROb2Rl
KGludCk7CisgICAgICAgIEVtcHR5U3RhdGVtZW50Tm9kZShpbnQsIGludCk7CiAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMTc5LDcgKzExODMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBEZWJ1Z2dlclN0YXRlbWVudE5vZGUgOiBwdWJsaWMg
U3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5v
ZGUoaW50KTsKKyAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnROb2RlKGludCwgaW50KTsKICAgICAg
ICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTE4Nyw3ICsxMTkx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFeHByU3RhdGVtZW50Tm9kZSA6IHB1
YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV4cHJTdGF0ZW1lbnRO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUoaW50
LCBpbnQsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIo
KSBjb25zdCB7IHJldHVybiBtX2V4cHI7IH0KIApAQCAtMTIwMSw4ICsxMjA1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBWYXJTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVu
dE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVmFyU3RhdGVtZW50Tm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKik7ICAgICAgICAKLQorICAgICAgICBWYXJTdGF0ZW1lbnROb2RlKGludCwgaW50
LCBFeHByZXNzaW9uTm9kZSopOwogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
IApAQCAtMTIxMSw3ICsxMjE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZk5v
ZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBJZk5vZGUo
aW50LCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrKTsK
KyAgICAgICAgSWZOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0
ZW1lbnROb2RlKiBpZkJsb2NrKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpAQCAtMTIyMiw3ICsxMjI1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJ
ZkVsc2VOb2RlIDogcHVibGljIElmTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBJZkVsc2VO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9j
aywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2NrKTsKKyAgICAgICAgSWZFbHNlTm9kZShpbnQsIGlu
dCwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3Rh
dGVtZW50Tm9kZSogZWxzZUJsb2NrKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTEyMzIsNyArMTIzNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
RG9XaGlsZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBEb1doaWxlTm9kZShpbnQsIFN0YXRlbWVudE5vZGUqLCBFeHByZXNzaW9uTm9kZSopOworICAg
ICAgICBEb1doaWxlTm9kZShpbnQsIGludCwgU3RhdGVtZW50Tm9kZSosIEV4cHJlc3Npb25Ob2Rl
Kik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjQzLDcgKzEy
NDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFdoaWxlTm9kZSA6IHB1YmxpYyBT
dGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdoaWxlTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSopOworICAgICAgICBXaGlsZU5vZGUoaW50LCBpbnQs
IEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwpAQCAtMTI1NCw3ICsxMjU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBGb3JOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgRm9yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0YXRlbWVudE5vZGUqLCBib29sIGV4
cHIxV2FzVmFyRGVjbCk7CisgICAgICAgIEZvck5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0
YXRlbWVudE5vZGUqLCBib29sIGV4cHIxV2FzVmFyRGVjbCk7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjY4LDggKzEyNzEsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEZvckluTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRm9ySW5Ob2RlKEpT
R2xvYmFsRGF0YSosIGludCwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRl
bWVudE5vZGUqKTsKLSAgICAgICAgRm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSosIGludCwgY29uc3Qg
SWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnRO
b2RlKiwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpOworICAgICAg
ICBGb3JJbk5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiwgRXhw
cmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7CisgICAgICAgIEZvckluTm9kZShKU0dsb2Jh
bERhdGEqLCBpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgRXhw
cmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQs
IGludCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpA
QCAtMTI4NCw4ICsxMjg3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb250aW51
ZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENvbnRpbnVlTm9kZShKU0dsb2JhbERhdGEqLCBp
bnQpOwotICAgICAgICBDb250aW51ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAg
ICAgIENvbnRpbnVlTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCk7CisgICAgICAgIENvbnRp
bnVlTm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjk1LDggKzEyOTgsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIEJyZWFrTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBw
dWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQnJl
YWtOb2RlKEpTR2xvYmFsRGF0YSosIGludCk7Ci0gICAgICAgIEJyZWFrTm9kZShpbnQsIGNvbnN0
IElkZW50aWZpZXImKTsKKyAgICAgICAgQnJlYWtOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgaW50
KTsKKyAgICAgICAgQnJlYWtOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAg
ICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEzMDYsNyArMTMw
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmV0dXJuTm9kZSA6IHB1YmxpYyBT
dGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgUmV0dXJuTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSk7CisgICAg
ICAgIFJldHVybk5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSk7CiAKICAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQogCkBAIC0xMzIw
LDcgKzEzMjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFdpdGhOb2RlIDogcHVi
bGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgV2l0aE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqLCB1aW50MzJfdCBkaXZvdCwgdWludDMyX3Qg
ZXhwcmVzc2lvbkxlbmd0aCk7CisgICAgICAgIFdpdGhOb2RlKGludCwgaW50LCBFeHByZXNzaW9u
Tm9kZSosIFN0YXRlbWVudE5vZGUqLCB1aW50MzJfdCBkaXZvdCwgdWludDMyX3QgZXhwcmVzc2lv
bkxlbmd0aCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMzMz
LDcgKzEzMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIExhYmVsTm9kZSA6IHB1
YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgTGFiZWxOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwg
U3RhdGVtZW50Tm9kZSopOworICAgICAgICBMYWJlbE5vZGUoaW50LCBpbnQsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKQEAgLTEzNDQsNyArMTM0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgVGhyb3dOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBUaHJvd05vZGUoaW50LCBFeHBy
ZXNzaW9uTm9kZSopOworICAgICAgICBUaHJvd05vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2Rl
Kik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMzU0LDcgKzEz
NTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFRyeU5vZGUgOiBwdWJsaWMgU3Rh
dGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBUcnlOb2RlKGludCwgU3RhdGVtZW50
Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2VwdGlvbklkZW50LCBTdGF0ZW1l
bnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spOworICAgICAg
ICBUcnlOb2RlKGludCwgaW50LCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRp
ZmllciYgZXhjZXB0aW9uSWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVu
dE5vZGUqIGZpbmFsbHlCbG9jayk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CkBAIC0xMzgzLDggKzEzODYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRl
ZiBEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2sgVmFyU3RhY2s7CiAgICAgICAgIHR5cGVkZWYg
RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgRnVuY3Rpb25TdGFjazsKIAotICAgICAg
ICBTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBib29sIGluU3RyaWN0Q29udGV4dCk7Ci0g
ICAgICAgIFNjb3BlTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGNvbnN0IFNvdXJjZUNvZGUmLCBT
b3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQm
LCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBTY29wZU5vZGUoSlNH
bG9iYWxEYXRhKiwgaW50LCBpbnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgU2Nv
cGVOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgaW50LCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNl
RWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgQ29k
ZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB1c2luZyBQYXJzZXJBcmVu
YVJlZkNvdW50ZWQ6Om9wZXJhdG9yIG5ldzsKIApAQCAtMTQ0NiwxMiArMTQ0OSwxMiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBQcm9ncmFtTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSBm
YWxzZTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IGNyZWF0ZShKU0ds
b2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNr
KiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBu
dW1Db25zdGFudHMpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gY3Jl
YXRlKEpTR2xvYmFsRGF0YSosIGludCwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwg
RnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBz
Y29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFByb2dyYW1O
b2RlKEpTR2xvYmFsRGF0YSosIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0
aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJl
cywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIFByb2dyYW1Ob2RlKEpTR2xvYmFsRGF0YSos
IGludCwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElk
ZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzKTsKIAogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CiAgICAgfTsKQEAgLTE0NTksMTIgKzE0
NjIsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRXZhbE5vZGUgOiBwdWJsaWMgU2Nv
cGVOb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzRnVuY3Rp
b25Ob2RlID0gZmFsc2U7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2YWxOb2RlPiBjcmVh
dGUoSlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rp
b25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZhbE5vZGU+
IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFj
ayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENv
ZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAgICAgICBFdmFs
Tm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5j
dGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVy
ZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBFdmFsTm9kZShKU0dsb2JhbERhdGEqLCBp
bnQsIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVu
dGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cyk7CiAKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogICAgIH07CkBAIC0xNDgxLDggKzE0ODQs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvbkJvZHlOb2RlIDogcHVibGlj
IFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0Z1
bmN0aW9uTm9kZSA9IHRydWU7Ci0gICAgICAgIHN0YXRpYyBGdW5jdGlvbkJvZHlOb2RlKiBjcmVh
dGUoSlNHbG9iYWxEYXRhKiwgaW50LCBib29sIGlzU3RyaWN0TW9kZSk7Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQs
IFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNl
dCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwor
ICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlKEpTR2xvYmFsRGF0YSosIGlu
dCwgaW50LCBib29sIGlzU3RyaWN0TW9kZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1
bmN0aW9uQm9keU5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCwgU291cmNlRWxl
bWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3Qg
U291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAg
RnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLmdldCgpOyB9CiAgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyYW1ldGVycy0+c2l6ZSgpOyB9CkBAIC0xNDk5LDggKzE1MDIsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gdHJ1
ZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRh
KiwgaW50LCBib29sIGluU3RyaWN0Q29udGV4dCk7Ci0gICAgICAgIEZ1bmN0aW9uQm9keU5vZGUo
SlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25T
dGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBp
bnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEq
LCBpbnQsIGludCwgYm9vbCBpblN0cmljdENvbnRleHQpOworICAgICAgICBGdW5jdGlvbkJvZHlO
b2RlKEpTR2xvYmFsRGF0YSosIGludCwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwg
RnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7
CiAgICAgICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7CkBAIC0xNTA5LDcgKzE1MTIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmNFeHByTm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jRXhwck5vZGUoaW50LCBjb25z
dCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJh
bWV0ZXJOb2RlKiA9IDApOworICAgICAgICBGdW5jRXhwck5vZGUoaW50LCBpbnQsIGNvbnN0IElk
ZW50aWZpZXImLCBGdW5jdGlvbkJvZHlOb2RlKiwgY29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRl
ck5vZGUqID0gMCk7CiAKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSgpIHsgcmV0dXJu
IG1fYm9keTsgfQogCkBAIC0xNTIzLDcgKzE1MjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIEZ1bmNEZWNsTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIEZ1bmNEZWNsTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbkJv
ZHlOb2RlKiwgY29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRlck5vZGUqID0gMCk7CisgICAgICAg
IEZ1bmNEZWNsTm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uQm9keU5v
ZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsKIAogICAgICAgICBG
dW5jdGlvbkJvZHlOb2RlKiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9CiAKQEAgLTE1NzQsNyAr
MTU3Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3dpdGNoTm9kZSA6IHB1Ymxp
YyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFN3aXRjaE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSosIENhc2VCbG9ja05vZGUqKTsKKyAgICAgICAgU3dpdGNoTm9kZShpbnQs
IGludCwgRXhwcmVzc2lvbk5vZGUqLCBDYXNlQmxvY2tOb2RlKik7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKaW5kZXggZDg4YTlhOGI3NmJlZGU4YTA5MmFlN2ZiMmM1ZmJkYzVhZDU4ZmEzOS4uZGY0YmM5
NTBjMTU0NTk3ZmQ1MTg3NTg2N2YwMTI1NmMxNmY2YmY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTcyLDYgKzE3Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRl
eHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFZBUikpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9
IHRva2VuQ29sdW1uKCk7CiAgICAgaW50IHN0YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVu
ZCA9IDA7CiAgICAgaW50IHNjcmF0Y2g7CkBAIC0xODIsMjAgKzE4MywyMSBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
VmFyRGVjbGFyYXRpbwogICAgIGZhaWxJZlRydWUobV9lcnJvcik7CiAgICAgZmFpbElmRmFsc2Uo
YXV0b1NlbWlDb2xvbigpKTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVWYXJTdGF0
ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdmFyRGVjbHMsIHN0YXJ0LCBlbmQpOwor
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVZhclN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgdmFyRGVjbHMsIHN0YXJ0LCBlbmQpOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnN0RGVjbGFyYXRpb24oVHJl
ZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKENPTlNUVE9LRU4pKTsKKyAg
ICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBzdGFydCA9IHRv
a2VuTGluZSgpOwogICAgIGludCBlbmQgPSAwOwogICAgIFRyZWVDb25zdERlY2xMaXN0IGNvbnN0
RGVjbHMgPSBwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0KGNvbnRleHQpOwogICAgIGZhaWxJZlRy
dWUobV9lcnJvcik7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKICAgICAKLSAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVDb25zdFN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBjb25zdERlY2xzLCBzdGFydCwgZW5kKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVDb25zdFN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVt
biwgY29uc3REZWNscywgc3RhcnQsIGVuZCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+CkBAIC0yMTAsNiArMjEyLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURvV2hpbGVTdGF0ZW0KICAgICBl
bmRMb29wKCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICBpbnQgZW5kTGluZSA9
IHRva2VuTGluZSgpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAg
ICAgY29uc3VtZU9yRmFpbChXSElMRSk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwog
ICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CkBAIC0y
MTcsMTMgKzIyMCwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRG9XaGlsZVN0YXRlbQogICAgIGNvbnN1bWVPckZh
aWwoQ0xPU0VQQVJFTik7CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIG5leHQo
KTsgLy8gQWx3YXlzIHBlcmZvcm1zIGF1dG9tYXRpYyBzZW1pY29sb24gaW5zZXJ0aW9uLgotICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgc3RhdGVtZW50LCBleHByLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwga2V5VG9rZW5Db2x1bW4sIHN0YXRlbWVudCwgZXhwciwgc3RhcnRMaW5lLCBlbmRMaW5lKTsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaGlsZVN0YXRl
bWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goV0hJTEUpKTsK
KyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBzdGFydExp
bmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFS
RU4pOwpAQCAtMjM2LDcgKzI0MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaGlsZVN0YXRlbWVuCiAgICAgVHJl
ZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOwog
ICAgIGVuZExvb3AoKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwotICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZVdoaWxlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4
cHIsIHN0YXRlbWVudCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVXaGlsZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNv
bHVtbiwgZXhwciwgc3RhdGVtZW50LCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMjQ1LDYgKzI0OSw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFy
RGVjbGFyYXRpCiAgICAgVHJlZUV4cHJlc3Npb24gdmFyRGVjbHMgPSAwOwogICAgIGRvIHsKICAg
ICAgICAgZGVjbGFyYXRpb25zKys7CisgICAgICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2Vu
Q29sdW1uKCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwog
ICAgICAgICAKQEAgLTI2NiwxMSArMjcxLDExIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpCiAg
ICAgICAgICAgICBsYXN0SW5pdGlhbGl6ZXIgPSBpbml0aWFsaXplcjsKICAgICAgICAgICAgIGZh
aWxJZkZhbHNlKGluaXRpYWxpemVyKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgVHJlZUV4
cHJlc3Npb24gbm9kZSA9IGNvbnRleHQuY3JlYXRlQXNzaWduUmVzb2x2ZShtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCAqbmFtZSwgaW5pdGlhbGl6ZXIsIGluaXRpYWxBc3NpZ25tZW50cyAhPSBt
X2Fzc2lnbm1lbnRDb3VudCwgdmFyU3RhcnQsIHZhckRpdm90LCBsYXN0VG9rZW5FbmQoKSk7Cisg
ICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gY29udGV4dC5jcmVhdGVBc3NpZ25SZXNv
bHZlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCAqbmFtZSwgaW5p
dGlhbGl6ZXIsIGluaXRpYWxBc3NpZ25tZW50cyAhPSBtX2Fzc2lnbm1lbnRDb3VudCwgdmFyU3Rh
cnQsIHZhckRpdm90LCBsYXN0VG9rZW5FbmQoKSk7CiAgICAgICAgICAgICBpZiAoIXZhckRlY2xz
KQogICAgICAgICAgICAgICAgIHZhckRlY2xzID0gbm9kZTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICB2YXJEZWNscyA9IGNvbnRleHQuY29tYmluZUNvbW1hTm9kZXMobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgdmFyRGVjbHMsIG5vZGUpOworICAgICAgICAgICAgICAgIHZh
ckRlY2xzID0gY29udGV4dC5jb21iaW5lQ29tbWFOb2RlcyhtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBrZXlUb2tlbkNvbHVtbiwgdmFyRGVjbHMsIG5vZGUpOwogICAgICAgICB9CiAgICAgfSB3
aGlsZSAobWF0Y2goQ09NTUEpKTsKICAgICByZXR1cm4gdmFyRGVjbHM7CkBAIC0yODMsNiArMjg4
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ29uc3REZWNsTGlzdCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb25zdERlY2wKICAgICBUcmVlQ29uc3REZWNsTGlzdCBjb25z
dERlY2xzID0gMDsKICAgICBUcmVlQ29uc3REZWNsTGlzdCB0YWlsID0gMDsKICAgICBkbyB7Cisg
ICAgICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgICAgIG5leHQo
KTsKICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVy
KiBuYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CkBAIC0yOTUsNyArMzAxLDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ29uc3REZWNsTGlzdCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VDb25zdERlY2wKICAgICAgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWls
ZFN0cmluZ3MpOyAvLyBjb25zdW1lICc9JwogICAgICAgICAgICAgaW5pdGlhbGl6ZXIgPSBwYXJz
ZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICB9Ci0gICAgICAgIHRhaWwg
PSBjb250ZXh0LmFwcGVuZENvbnN0RGVjbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0YWls
LCBuYW1lLCBpbml0aWFsaXplcik7CisgICAgICAgIHRhaWwgPSBjb250ZXh0LmFwcGVuZENvbnN0
RGVjbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgdGFpbCwgbmFt
ZSwgaW5pdGlhbGl6ZXIpOwogICAgICAgICBpZiAoIWNvbnN0RGVjbHMpCiAgICAgICAgICAgICBj
b25zdERlY2xzID0gdGFpbDsKICAgICB9IHdoaWxlIChtYXRjaChDT01NQSkpOwpAQCAtMzA2LDYg
KzMxMiw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3Rh
dGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChGT1IpKTsK
KyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBzdGFydExp
bmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFS
RU4pOwpAQCAtMzU1LDcgKzM2Miw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgICAg
IGVuZExvb3AoKTsKICAgICAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICAgICAgCi0g
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBmb3JJblRhcmdldCwgZm9ySW5Jbml0aWFsaXplciwgZXhwciwgc3RhdGVtZW50LCBk
ZWNsc1N0YXJ0LCBpbkxvY2F0aW9uLCBleHByRW5kLCBpbml0U3RhcnQsIGluaXRFbmQsIHN0YXJ0
TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZm9ySW5UYXJnZXQsIGZv
ckluSW5pdGlhbGl6ZXIsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgaW5Mb2NhdGlvbiwg
ZXhwckVuZCwgaW5pdFN0YXJ0LCBpbml0RW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIH0K
ICAgICAKICAgICBpZiAoIW1hdGNoKFNFTUlDT0xPTikpIHsKQEAgLTM5MSw3ICszOTgsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAgICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9
IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CiAgICAgICAgIGVuZExvb3AoKTsKICAg
ICAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRm9yTG9vcChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBkZWNscywgY29uZGl0aW9uLCBp
bmNyZW1lbnQsIHN0YXRlbWVudCwgaGFzRGVjbGFyYXRpb24sIHN0YXJ0TGluZSwgZW5kTGluZSk7
CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckxvb3AobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGRlY2xzLCBjb25kaXRpb24sIGluY3JlbWVudCwgc3Rh
dGVtZW50LCBoYXNEZWNsYXJhdGlvbiwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICB9CiAgICAg
CiAgICAgLy8gRm9yLWluIGxvb3AKQEAgLTQwOCwxMyArNDE1LDE0IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JT
dGF0ZW1lbnQoCiAgICAgZW5kTG9vcCgpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAg
ICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIGRlY2xzLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBl
eHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZv
ckluTG9vcChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZGVjbHMs
IGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgZGVjbHNFbmQsIGV4cHJFbmQsIHN0YXJ0TGlu
ZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlQnJlYWtTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1h
dGNoKEJSRUFLKSk7CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAg
ICBpbnQgc3RhcnRDb2wgPSB0b2tlblN0YXJ0KCk7CiAgICAgaW50IGVuZENvbCA9IHRva2VuRW5k
KCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwpAQCAtNDIzLDcgKzQzMSw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VCcmVha1N0YXRlbWVuCiAgICAgCiAgICAgaWYgKGF1dG9TZW1pQ29sb24oKSkg
ewogICAgICAgICBmYWlsSWZGYWxzZVdpdGhNZXNzYWdlKGJyZWFrSXNWYWxpZCgpLCAiJ2JyZWFr
JyBpcyBvbmx5IHZhbGlkIGluc2lkZSBhIHN3aXRjaCBvciBsb29wIHN0YXRlbWVudCIpOwotICAg
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCcmVha1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVCcmVha1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRM
aW5lKTsKICAgICB9CiAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CkBAIC00MzIsMTMgKzQ0MCwxNCBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlQnJlYWtTdGF0ZW1lbgogICAgIGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBu
ZXh0KCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVCcmVha1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBpZGVu
dCwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVCcmVha1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlU
b2tlbkNvbHVtbiwgaWRlbnQsIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29udGludWVT
dGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKENPTlRJ
TlVFKSk7CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBpbnQg
c3RhcnRDb2wgPSB0b2tlblN0YXJ0KCk7CiAgICAgaW50IGVuZENvbCA9IHRva2VuRW5kKCk7CiAg
ICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwpAQCAtNDQ3LDcgKzQ1Niw3IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VDb250aW51ZVN0YXRlCiAgICAgCiAgICAgaWYgKGF1dG9TZW1pQ29sb24oKSkgewogICAg
ICAgICBmYWlsSWZGYWxzZVdpdGhNZXNzYWdlKGNvbnRpbnVlSXNWYWxpZCgpLCAiJ2NvbnRpbnVl
JyBpcyBvbmx5IHZhbGlkIGluc2lkZSBhIGxvb3Agc3RhdGVtZW50Iik7Ci0gICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGtleVRva2VuQ29sdW1uLCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUp
OwogICAgIH0KICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAgY29uc3QgSWRlbnRpZmllciog
aWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKQEAgLTQ1OCwxMyArNDY3LDE0IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VDb250aW51ZVN0YXRlCiAgICAgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQo
KTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwotICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGlkZW50
LCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtl
eVRva2VuQ29sdW1uLCBpZGVudCwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5l
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VSZXR1cm5T
dGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFJFVFVS
TikpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgZmFpbElm
RmFsc2UoY3VycmVudFNjb3BlKCktPmlzRnVuY3Rpb24oKSk7CiAgICAgaW50IHN0YXJ0TGluZSA9
IHRva2VuTGluZSgpOwogICAgIGludCBlbmRMaW5lID0gc3RhcnRMaW5lOwpAQCAtNDc3LDIwICs0
ODcsMjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVJldHVyblN0YXRlbWUKICAgICBpZiAobWF0Y2goU0VNSUNPTE9O
KSkKICAgICAgICAgZW5kTGluZSAgPSB0b2tlbkxpbmUoKTsKICAgICBpZiAoYXV0b1NlbWlDb2xv
bigpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgMCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsK
KyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCAwLCBzdGFydCwgZW5kLCBzdGFydExpbmUs
IGVuZExpbmUpOwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29u
dGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcik7CiAgICAgZW5kID0gbGFzdFRva2VuRW5kKCk7
CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIGVuZExpbmUgID0gdG9rZW5MaW5l
KCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwg
c3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVSZXR1cm5TdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1
bW4sIGV4cHIsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVGhyb3dTdGF0ZW1lbnQoVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFRIUk9XKSk7CisgICAgaW50IGtleVRv
a2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBpbnQgZVN0YXJ0ID0gdG9rZW5TdGFydCgp
OwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CkBAIC01MDMs
MTMgKzUxNCwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVGhyb3dTdGF0ZW1lbgogICAgIGludCBlbmRMaW5lID0g
dG9rZW5MaW5lKCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKICAgICAKLSAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVUaHJvd1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBleHByLCBlU3RhcnQsIGVFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlVGhyb3dTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwga2V5VG9rZW5Db2x1bW4sIGV4cHIsIGVTdGFydCwgZUVuZCwgc3RhcnRMaW5lLCBlbmRMaW5l
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaXRoU3Rh
dGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChXSVRIKSk7
CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBmYWlsSWZUcnVl
V2l0aE1lc3NhZ2Uoc3RyaWN0TW9kZSgpLCAiJ3dpdGgnIHN0YXRlbWVudHMgYXJlIG5vdCB2YWxp
ZCBpbiBzdHJpY3QgbW9kZSIpOwogICAgIGN1cnJlbnRTY29wZSgpLT5zZXROZWVkc0Z1bGxBY3Rp
dmF0aW9uKCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwpAQCAtNTI2LDEzICs1
MzgsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVdpdGhTdGF0ZW1lbnQKICAgICBUcmVlU3RhdGVtZW50IHN0YXRl
bWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CiAgICAgZmFpbElmRmFsc2Uo
c3RhdGVtZW50KTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaXRoU3RhdGVtZW50
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIHN0YXRlbWVudCwgc3RhcnQsIGVuZCwg
c3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaXRoU3RhdGVt
ZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBleHByLCBzdGF0
ZW1lbnQsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0
ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3dpdGNoU3RhdGVtZW50KFRyZWVCdWlsZGVy
JiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChTV0lUQ0gpKTsKKyAgICBpbnQga2V5VG9r
ZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUo
KTsKICAgICBuZXh0KCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwpAQCAtNTUzLDcg
KzU2Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VTd2l0Y2hTdGF0ZW1lCiAgICAgZW5kU3dpdGNoKCk7CiAgICAg
Y29uc3VtZU9yRmFpbChDTE9TRUJSQUNFKTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVTd2l0Y2hTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgZmlyc3RD
bGF1c2VzLCBkZWZhdWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2VzLCBzdGFydExpbmUsIGVuZExpbmUp
OworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVN3aXRjaFN0YXRlbWVudChtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZXhwciwgZmlyc3RDbGF1c2VzLCBkZWZhdWx0
Q2xhdXNlLCBzZWNvbmRDbGF1c2VzLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIAogfQogCkBA
IC02MzcsMjAgKzY1MCwyMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0
ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVHJ5U3RhdGVtZW50KAogICAgICAgICBmYWls
SWZGYWxzZShmaW5hbGx5QmxvY2spOwogICAgIH0KICAgICBmYWlsSWZGYWxzZShjYXRjaEJsb2Nr
IHx8IGZpbmFsbHlCbG9jayk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVHJ5U3RhdGVtZW50
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRyeUJsb2NrLCBpZGVudCwgY2F0Y2hCbG9jaywg
ZmluYWxseUJsb2NrLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVUcnlTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4o
KSwgdHJ5QmxvY2ssIGlkZW50LCBjYXRjaEJsb2NrLCBmaW5hbGx5QmxvY2ssIGZpcnN0TGluZSwg
bGFzdExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZURlYnVnZ2VyU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVCht
YXRjaChERUJVR0dFUikpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7
CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIGludCBlbmRMaW5lID0gc3Rh
cnRMaW5lOwogICAgIG5leHQoKTsKICAgICBpZiAobWF0Y2goU0VNSUNPTE9OKSkKICAgICAgICAg
c3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigp
KTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVEZWJ1Z2dlcihtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZURl
YnVnZ2VyKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBzdGFydExp
bmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtNjYx
LDEzICs2NzUsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJsb2NrU3RhdGVtZW4KICAgICBuZXh0KCk7CiAgICAg
aWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
MCwgc3RhcnQsIG1fbGFzdExpbmUpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCbG9j
a1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCAwLCBz
dGFydCwgbV9sYXN0TGluZSk7CiAgICAgfQogICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdWJ0cmVl
ID0gcGFyc2VTb3VyY2VFbGVtZW50czxEb250Q2hlY2tGb3JTdHJpY3RNb2RlPihjb250ZXh0KTsK
ICAgICBmYWlsSWZGYWxzZShzdWJ0cmVlKTsKICAgICBtYXRjaE9yRmFpbChDTE9TRUJSQUNFKTsK
ICAgICBuZXh0KCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3VidHJlZSwgc3RhcnQsIG1fbGFzdExpbmUpOworICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2NrU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIHRva2VuQ29sdW1uKCksIHN1YnRyZWUsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTY5MCw3ICs3MDQsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlU3RhdGVtZW50KFRyZQogICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9u
KGNvbnRleHQpOwogICAgIGNhc2UgU0VNSUNPTE9OOgogICAgICAgICBuZXh0KCk7Ci0gICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUVtcHR5U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCkpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFbXB0eVN0YXRlbWVudChtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpKTsKICAgICBjYXNlIElGOgogICAg
ICAgICByZXR1cm4gcGFyc2VJZlN0YXRlbWVudChjb250ZXh0KTsKICAgICBjYXNlIERPOgpAQCAt
NzU5LDEyICs3NzMsMTIgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgaWYgKG1hdGNo
KENMT1NFQlJBQ0UpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHko
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RyaWN0TW9kZSgpKTsKKyAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRv
a2VuQ29sdW1uKCksIHN0cmljdE1vZGUoKSk7CiAgICAgRGVwdGhNYW5hZ2VyIHN0YXRlbWVudERl
cHRoKCZtX3N0YXRlbWVudERlcHRoKTsKICAgICBtX3N0YXRlbWVudERlcHRoID0gMDsKICAgICB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6RnVuY3Rpb25Cb2R5QnVpbGRlciBib2R5QnVpbGRlcihjb25z
dF9jYXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xvYmFsRGF0YSksIG1fbGV4ZXIuZ2V0KCkpOwogICAg
IGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHM8Q2hlY2tGb3JTdHJpY3RNb2RlPihib2R5
QnVpbGRlcikpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBzdHJpY3RNb2RlKCkpOworICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigp
LCBzdHJpY3RNb2RlKCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAt
Nzk0LDcgKzgwOCw3IEBAIHRlbXBsYXRlIDxGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVu
dHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIGNsYXNzCiAgICAgaWYgKGNvbnN0IFNv
dXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBjYWNoZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1
bmN0aW9uQ2FjaGUgPyBmaW5kQ2FjaGVkRnVuY3Rpb25JbmZvKG9wZW5CcmFjZVBvcykgOiAwKSB7
CiAgICAgICAgIC8vIElmIHdlJ3JlIGluIGEgc3RyaWN0IGNvbnRleHQsIHRoZSBjYWNoZWQgZnVu
Y3Rpb24gaW5mbyBtdXN0IHNheSBpdCB3YXMgc3RyaWN0IHRvby4KICAgICAgICAgQVNTRVJUKCFz
dHJpY3RNb2RlKCkgfHwgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7Ci0gICAgICAgIGJvZHkgPSBj
b250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjYWNo
ZWRJbmZvLT5zdHJpY3RNb2RlKTsKKyAgICAgICAgYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rp
b25Cb2R5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGNhY2hlZElu
Zm8tPnN0cmljdE1vZGUpOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9y
ZUZ1bmN0aW9uSW5mbyhjYWNoZWRJbmZvKTsKICAgICAgICAgZmFpbElmRmFsc2UocG9wU2NvcGUo
ZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbykpOwpAQCAt
ODU0LDcgKzg2OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhCiAgICAgZmFpbElmRmFsc2Uo
KHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTmVlZHNOYW1lLCB0cnVlPihjb250ZXh0LCBuYW1l
LCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFy
dExpbmUpKSk7CiAgICAgZmFpbElmRmFsc2UobmFtZSk7CiAgICAgZmFpbElmRmFsc2VJZlN0cmlj
dChkZWNsYXJlVmFyaWFibGUobmFtZSkpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmNE
ZWNsU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIG5hbWUsIGJvZHksIHBhcmFt
ZXRlcnMsIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0
TGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgbmFtZSwgYm9keSwgcGFyYW1ldGVy
cywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5l
KTsKIH0KIAogc3RydWN0IExhYmVsSW5mbyB7CkBAIC04ODIsNiArODk2LDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUV4cHJlc3Npb25PckwKICAgICBkbyB7CiAgICAgICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQo
KTsKICAgICAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgICAgICBpbnQga2V5
VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgICAgICBpZiAoIW5leHRUb2tlbklzQ29s
b24oKSkgewogICAgICAgICAgICAgLy8gSWYgd2UgaGl0IHRoaXMgcGF0aCB3ZSdyZSBtYWtpbmcg
YSBleHByZXNzaW9uIHN0YXRlbWVudCwgd2hpY2gKICAgICAgICAgICAgIC8vIGJ5IGRlZmluaXRp
b24gY2FuJ3QgbWFrZSB1c2Ugb2YgY29udGludWUvYnJlYWsgc28gd2UgY2FuIGp1c3QKQEAgLTg4
OSw3ICs5MDQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lvbk9yTAogICAgICAgICAgICAgVHJlZUV4
cHJlc3Npb24gZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKGV4cHJlc3Npb24pOwogICAgICAgICAgICAgZmFpbElmRmFsc2UoYXV0
b1NlbWlDb2xvbigpKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0
ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcmVzc2lvbiwgc3RhcnRMaW5lLCBt
X2xhc3RMaW5lKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1l
bnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGV4cHJlc3Npb24s
IHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CiAgICAgICAgIH0KICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgaW50IGVuZCA9IHRv
a2VuRW5kKCk7CkBAIC05MjgsNyArOTQzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb25PckwKICAg
ICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGFi
ZWxzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGNvbnN0IExhYmVsSW5mbyYgaW5mbyA9IGxhYmVs
c1tsYWJlbHMuc2l6ZSgpIC0gaSAtIDFdOwotICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmNy
ZWF0ZUxhYmVsU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGluZm8ubV9pZGVu
dCwgc3RhdGVtZW50LCBpbmZvLm1fc3RhcnQsIGluZm8ubV9lbmQpOworICAgICAgICBzdGF0ZW1l
bnQgPSBjb250ZXh0LmNyZWF0ZUxhYmVsU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHRva2VuQ29sdW1uKCksIGluZm8ubV9pZGVudCwgc3RhdGVtZW50LCBpbmZvLm1fc3RhcnQs
IGluZm8ubV9lbmQpOwogICAgIH0KICAgICByZXR1cm4gc3RhdGVtZW50OwogfQpAQCAtOTM3LDE3
ICs5NTIsMTggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBy
ZXNzaW9uU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIGludCBzdGFydExp
bmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigp
OwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb24oY29udGV4
dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcmVzc2lvbik7CiAgICAgZmFpbElmRmFsc2UoYXV0b1Nl
bWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHJlc3Npb24sIHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7
CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZXhwcmVzc2lvbiwgc3RhcnRMaW5lLCBtX2xhc3RM
aW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJZlN0
YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goSUYpKTsK
LSAgICAKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBz
dGFydCA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICAKQEAgLTk2Myw3ICs5NzksNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVAogICAgIGZhaWxJZkZhbHNlKHRydWVCbG9jayk7CiAg
ICAgCiAgICAgaWYgKCFtYXRjaChFTFNFKSkKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
SWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxv
Y2ssIHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJZlN0YXRlbWVu
dChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgY29uZGl0aW9uLCB0
cnVlQmxvY2ssIHN0YXJ0LCBlbmQpOwogICAgIAogICAgIFZlY3RvcjxUcmVlRXhwcmVzc2lvbj4g
ZXhwclN0YWNrOwogICAgIFZlY3RvcjxwYWlyPGludCwgaW50PiA+IHBvc1N0YWNrOwpAQCAtMTAw
Myw3ICsxMDE5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlmU3RhdGVtZW50KFQKICAgICAgICAgc3RhdGVtZW50
U3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICBwYWlyPGludCwgaW50PiBwb3MgPSBwb3NTdGFj
ay5sYXN0KCk7CiAgICAgICAgIHBvc1N0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgc3RhdGVt
ZW50U3RhY2suYXBwZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHBvcy5maXJzdCwgcG9zLnNlY29uZCkp
OworICAgICAgICBzdGF0ZW1lbnRTdGFjay5hcHBlbmQoY29udGV4dC5jcmVhdGVJZlN0YXRlbWVu
dChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBjb25kaXRpb24sIHRy
dWVCbG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vjb25kKSk7CiAgICAgfQogICAgIAogICAgIHdoaWxl
ICghZXhwclN0YWNrLmlzRW1wdHkoKSkgewpAQCAtMTAxNSwxNiArMTAzMSwxNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSWZTdGF0ZW1lbnQoVAogICAgICAgICBzdGF0ZW1lbnRTdGFjay5yZW1vdmVMYXN0KCk7CiAg
ICAgICAgIHBhaXI8aW50LCBpbnQ+IHBvcyA9IHBvc1N0YWNrLmxhc3QoKTsKICAgICAgICAgcG9z
U3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICBzdGF0ZW1lbnRTdGFjay5hcHBlbmQoY29udGV4
dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjb25kaXRpb24s
IHRydWVCbG9jaywgZmFsc2VCbG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vjb25kKSk7CisgICAgICAg
IHN0YXRlbWVudFN0YWNrLmFwcGVuZChjb250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBm
YWxzZUJsb2NrLCBwb3MuZmlyc3QsIHBvcy5zZWNvbmQpKTsKICAgICB9CiAgICAgCi0gICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
Y29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXRlbWVudFN0YWNrLmxhc3QoKSwgc3RhcnQsIGVuZCk7
CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXRlbWVudFN0
YWNrLmxhc3QoKSwgc3RhcnQsIGVuZCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAg
ZmFpbElmU3RhY2tPdmVyZmxvdygpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29s
dW1uKCk7CiAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Np
b24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uobm9kZSk7CiAgICAgaWYgKCFtYXRjaChDT01N
QSkpCkBAIC0xMDM0LDcgKzEwNTEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb24oVAogICAgIG1f
bm9uTEhTQ291bnQrKzsKICAgICBUcmVlRXhwcmVzc2lvbiByaWdodCA9IHBhcnNlQXNzaWdubWVu
dEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UocmlnaHQpOwotICAgIHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpDb21tYSBjb21tYU5vZGUgPSBjb250ZXh0LmNyZWF0ZUNvbW1hRXhw
cihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBub2RlLCByaWdodCk7CisgICAgdHlwZW5hbWUg
VHJlZUJ1aWxkZXI6OkNvbW1hIGNvbW1hTm9kZSA9IGNvbnRleHQuY3JlYXRlQ29tbWFFeHByKG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBub2RlLCByaWdodCk7CiAg
ICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250
QnVpbGRTdHJpbmdzKTsKICAgICAgICAgcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9u
KGNvbnRleHQpOwpAQCAtMTA0OSw2ICsxMDY2LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW4K
IHsKICAgICBmYWlsSWZTdGFja092ZXJmbG93KCk7CiAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFy
dCgpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgaW50IGlu
aXRpYWxBc3NpZ25tZW50Q291bnQgPSBtX2Fzc2lnbm1lbnRDb3VudDsKICAgICBpbnQgaW5pdGlh
bE5vbkxIU0NvdW50ID0gbV9ub25MSFNDb3VudDsKICAgICBUcmVlRXhwcmVzc2lvbiBsaHMgPSBw
YXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTEwNzgsNyArMTA5Niw3IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlQXNzaWdubWVuCiAgICAgICAgIH0KICAgICAgICAgbV9ub25Ucml2aWFs
RXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgIGhhZEFzc2lnbm1lbnQgPSB0cnVlOwotICAgICAg
ICBjb250ZXh0LmFzc2lnbm1lbnRTdGFja0FwcGVuZChhc3NpZ25tZW50U3RhY2ssIGxocywgc3Rh
cnQsIHRva2VuU3RhcnQoKSwgbV9hc3NpZ25tZW50Q291bnQsIG9wKTsKKyAgICAgICAgY29udGV4
dC5hc3NpZ25tZW50U3RhY2tBcHBlbmQoYXNzaWdubWVudFN0YWNrLCBsaHMsIHN0YXJ0LCBrZXlU
b2tlbkNvbHVtbiwgbV9hc3NpZ25tZW50Q291bnQsIG9wKTsKICAgICAgICAgc3RhcnQgPSB0b2tl
blN0YXJ0KCk7CiAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgIG5leHQoVHJl
ZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwpAQCAtMTEwMSw3ICsxMTE5LDcgQEAgZW5kOgog
ICAgICAgICByZXR1cm4gbGhzOwogICAgIAogICAgIHdoaWxlIChhc3NpZ25tZW50U3RhY2spCi0g
ICAgICAgIGxocyA9IGNvbnRleHQuY3JlYXRlQXNzaWdubWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBhc3NpZ25tZW50U3RhY2ssIGxocywgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9h
c3NpZ25tZW50Q291bnQsIGxhc3RUb2tlbkVuZCgpKTsKKyAgICAgICAgbGhzID0gY29udGV4dC5j
cmVhdGVBc3NpZ25tZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1u
LCBhc3NpZ25tZW50U3RhY2ssIGxocywgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25t
ZW50Q291bnQsIGxhc3RUb2tlbkVuZCgpKTsKICAgICAKICAgICByZXR1cm4gbGhzOwogfQpAQCAt
MTEwOSw2ICsxMTI3LDcgQEAgZW5kOgogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewor
ICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgVHJlZUV4cHJlc3Np
b24gY29uZCA9IHBhcnNlQmluYXJ5RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxz
ZShjb25kKTsKICAgICBpZiAoIW1hdGNoKFFVRVNUSU9OKSkKQEAgLTExMjEsNyArMTE0MCw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlQ29uZGl0aW9uYWxFCiAgICAgCiAgICAgVHJlZUV4cHJlc3Npb24gcmhzID0g
cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShyaHMp
OwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbmRpdGlvbmFsRXhwcihtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBjb25kLCBsaHMsIHJocyk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
Q29uZGl0aW9uYWxFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1u
LCBjb25kLCBsaHMsIHJocyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNVbmFy
eU9wKEpTVG9rZW5UeXBlIHRva2VuKQpAQCAtMTE2NSw3ICsxMTg0LDcgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VC
aW5hcnlFeHByZXMKICAgICAgICAgICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpCaW5hcnlPcGVy
YW5kIHJocyA9IGNvbnRleHQuZ2V0RnJvbU9wZXJhbmRTdGFjaygtMSk7CiAgICAgICAgICAgICB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3BlcmFuZCBsaHMgPSBjb250ZXh0LmdldEZyb21P
cGVyYW5kU3RhY2soLTIpOwogICAgICAgICAgICAgY29udGV4dC5zaHJpbmtPcGVyYW5kU3RhY2tC
eShvcGVyYW5kU3RhY2tEZXB0aCwgMik7Ci0gICAgICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFy
eU9wZXJhdGlvbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBvcGVyYW5kU3RhY2tEZXB0aCwg
b3BlcmF0b3JTdGFja0RlcHRoLCBsaHMsIHJocyk7CisgICAgICAgICAgICBjb250ZXh0LmFwcGVu
ZEJpbmFyeU9wZXJhdGlvbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigp
LCBvcGVyYW5kU3RhY2tEZXB0aCwgb3BlcmF0b3JTdGFja0RlcHRoLCBsaHMsIHJocyk7CiAgICAg
ICAgICAgICBjb250ZXh0Lm9wZXJhdG9yU3RhY2tQb3Aob3BlcmF0b3JTdGFja0RlcHRoKTsKICAg
ICAgICAgfQogICAgICAgICBjb250ZXh0Lm9wZXJhdG9yU3RhY2tBcHBlbmQob3BlcmF0b3JTdGFj
a0RlcHRoLCBvcGVyYXRvclRva2VuLCBwcmVjZWRlbmNlKTsKQEAgLTExNzYsNyArMTE5NSw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlQmluYXJ5RXhwcmVzCiAgICAgICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpC
aW5hcnlPcGVyYW5kIHJocyA9IGNvbnRleHQuZ2V0RnJvbU9wZXJhbmRTdGFjaygtMSk7CiAgICAg
ICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpCaW5hcnlPcGVyYW5kIGxocyA9IGNvbnRleHQuZ2V0
RnJvbU9wZXJhbmRTdGFjaygtMik7CiAgICAgICAgIGNvbnRleHQuc2hyaW5rT3BlcmFuZFN0YWNr
Qnkob3BlcmFuZFN0YWNrRGVwdGgsIDIpOwotICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9w
ZXJhdGlvbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBvcGVyYW5kU3RhY2tEZXB0aCwgb3Bl
cmF0b3JTdGFja0RlcHRoLCBsaHMsIHJocyk7CisgICAgICAgIGNvbnRleHQuYXBwZW5kQmluYXJ5
T3BlcmF0aW9uKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIG9wZXJh
bmRTdGFja0RlcHRoLCBvcGVyYXRvclN0YWNrRGVwdGgsIGxocywgcmhzKTsKICAgICAgICAgY29u
dGV4dC5vcGVyYXRvclN0YWNrUG9wKG9wZXJhdG9yU3RhY2tEZXB0aCk7CiAgICAgfQogICAgIHJl
dHVybiBjb250ZXh0LnBvcE9wZXJhbmRTdGFjayhvcGVyYW5kU3RhY2tEZXB0aCk7CkBAIC0xMjI4
LDggKzEyNDcsOCBAQCB0ZW1wbGF0ZSA8Ym9vbCBjb21wbGV0ZSwgY2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFycwogICAgICAgICBuZXh0KCk7CiAg
ICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbzxGdW5jdGlvbk5vUmVxdWlyZW1l
bnRzLCBmYWxzZT4oY29udGV4dCwgYWNjZXNzb3JOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVu
QnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7CiAgICAgICAgIGlmIChz
dHJpbmdQcm9wZXJ0eU5hbWUpCi0gICAgICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBj
cmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCB0eXBlLCBzdHJpbmdQcm9wZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5C
cmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7Ci0gICAg
ICAgIHJldHVybiBjb250ZXh0LnRlbXBsYXRlIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8
Y29tcGxldGU+KGNvbnN0X2Nhc3Q8SlNHbG9iYWxEYXRhKj4obV9nbG9iYWxEYXRhKSwgbV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgdHlwZSwgbnVtZXJpY1Byb3BlcnR5TmFtZSwgcGFyYW1ldGVy
cywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xh
c3RMaW5lKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnRlbXBsYXRlIGNyZWF0ZUdldHRl
ck9yU2V0dGVyUHJvcGVydHk8Y29tcGxldGU+KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRv
a2VuQ29sdW1uKCksIHR5cGUsIHN0cmluZ1Byb3BlcnR5TmFtZSwgcGFyYW1ldGVycywgYm9keSwg
b3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsK
KyAgICAgICAgcmV0dXJuIGNvbnRleHQudGVtcGxhdGUgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9w
ZXJ0eTxjb21wbGV0ZT4oY29uc3RfY2FzdDxKU0dsb2JhbERhdGEqPihtX2dsb2JhbERhdGEpLCBt
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCB0eXBlLCBudW1lcmljUHJv
cGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3Ms
IGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOwogICAgIH0KICAgICBjYXNlIE5VTUJFUjogewog
ICAgICAgICBkb3VibGUgcHJvcGVydHlOYW1lID0gbV90b2tlbi5tX2RhdGEuZG91YmxlVmFsdWU7
CkBAIC0xMjU3LDcgKzEyNzYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU9iamVjdExpdGVyYQogICAgIAogICAg
IGlmIChtYXRjaChDTE9TRUJSQUNFKSkgewogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSk7
CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSk7CiAgICAgfQogICAgIAogICAgIFRyZWVQcm9w
ZXJ0eSBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8ZmFsc2U+KGNvbnRleHQpOwpAQCAtMTI2OSw3
ICsxMjg4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VPYmplY3RMaXRlcmEKICAgICAgICAgbV9sZXhlci0+c2V0
TGluZU51bWJlcihvbGRMaW5lTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHBhcnNlU3RyaWN0T2Jq
ZWN0TGl0ZXJhbChjb250ZXh0KTsKICAgICB9Ci0gICAgVHJlZVByb3BlcnR5TGlzdCBwcm9wZXJ0
eUxpc3QgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBwcm9wZXJ0eSk7CisgICAgVHJlZVByb3BlcnR5TGlzdCBwcm9wZXJ0eUxpc3QgPSBjb250
ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNv
bHVtbigpLCBwcm9wZXJ0eSk7CiAgICAgVHJlZVByb3BlcnR5TGlzdCB0YWlsID0gcHJvcGVydHlM
aXN0OwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAgbmV4dChUcmVlQnVpbGRl
cjo6RG9udEJ1aWxkU3RyaW5ncyk7CkBAIC0xMjg1LDE0ICsxMzA0LDE0IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
T2JqZWN0TGl0ZXJhCiAgICAgICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG9sZExpbmVO
dW1iZXIpOwogICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3RyaWN0T2JqZWN0TGl0ZXJhbChjb250
ZXh0KTsKICAgICAgICAgfQotICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxp
c3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHksIHRhaWwpOworICAgICAgICB0
YWlsID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgdG9rZW5Db2x1bW4oKSwgcHJvcGVydHksIHRhaWwpOwogICAgIH0KICAgICAKICAgICBjb25z
dW1lT3JGYWlsKENMT1NFQlJBQ0UpOwogICAgIAogICAgIG1fbm9uTEhTQ291bnQgPSBvbGROb25M
SFNDb3VudDsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5TGlzdCk7CisgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNv
bHVtbigpLCBwcm9wZXJ0eUxpc3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgpAQCAtMTMwNCw3ICsxMzIzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdHJpY3RPYmplY3QKIAogICAgIGlm
IChtYXRjaChDTE9TRUJSQUNFKSkgewogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSk7Cisg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSk7CiAgICAgfQogICAgIAogICAgIFRyZWVQcm9wZXJ0
eSBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8dHJ1ZT4oY29udGV4dCk7CkBAIC0xMzE2LDcgKzEz
MzUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVN0cmljdE9iamVjdAogICAgIGlmICghbV9zeW50YXhBbHJlYWR5
VmFsaWRhdGVkKQogICAgICAgICBvYmplY3RWYWxpZGF0b3IuYWRkKGNvbnRleHQuZ2V0TmFtZShw
cm9wZXJ0eSkuaW1wbCgpLCBjb250ZXh0LmdldFR5cGUocHJvcGVydHkpKTsKICAgICAKLSAgICBU
cmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5KTsKKyAgICBUcmVlUHJvcGVydHlM
aXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHByb3BlcnR5KTsKICAgICBUcmVlUHJvcGVy
dHlMaXN0IHRhaWwgPSBwcm9wZXJ0eUxpc3Q7CiAgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewog
ICAgICAgICBuZXh0KCk7CkBAIC0xMzM0LDE0ICsxMzUzLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RyaWN0
T2JqZWN0CiAgICAgICAgICAgICAgICAgcHJvcGVydHlFbnRyeS5pdGVyYXRvci0+c2Vjb25kIHw9
IGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAg
ICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIHByb3BlcnR5LCB0YWlsKTsKKyAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRl
UHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHBy
b3BlcnR5LCB0YWlsKTsKICAgICB9CiAgICAgCiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNF
KTsKIAogICAgIG1fbm9uTEhTQ291bnQgPSBvbGROb25MSFNDb3VudDsKIAotICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJv
cGVydHlMaXN0KTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHByb3BlcnR5TGlzdCk7CiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0xMzU4LDcgKzEzNzcsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUFycmF5TGl0ZXJhbAogICAgIH0KICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDS0VUKSkg
ewogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKLSAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZWxp
c2lvbnMpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBlbGlzaW9ucyk7CiAgICAgfQogICAgIAogICAg
IFRyZWVFeHByZXNzaW9uIGVsZW0gPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQp
OwpAQCAtMTM3Nyw3ICsxMzk2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJheUxpdGVyYWwKICAgICAgICAg
CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNLRVQpKSB7CiAgICAgICAgICAgICBuZXh0KFRy
ZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUFycmF5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGVsaXNpb25zLCBlbGVtZW50
TGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBlbGlzaW9ucywgZWxlbWVudExpc3QpOwog
ICAgICAgICB9CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGVsZW0gPSBwYXJzZUFzc2lnbm1lbnRF
eHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShlbGVtKTsKQEAgLTEzODgs
NyArMTQwNyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJyYXlMaXRlcmFsCiAgICAgCiAgICAgbV9ub25MSFND
b3VudCA9IG9sZE5vbkxIU0NvdW50OwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFy
cmF5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGVsZW1lbnRMaXN0KTsKKyAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVt
bigpLCBlbGVtZW50TGlzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBA
IC0xNDEzLDcgKzE0MzIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHByZQogICAgIH0KICAgICBj
YXNlIFRISVNUT0tFTjogewogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0
LnRoaXNFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCkpOworICAgICAgICByZXR1cm4gY29u
dGV4dC50aGlzRXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpKTsK
ICAgICB9CiAgICAgY2FzZSBJREVOVDogewogICAgICAgICBpbnQgc3RhcnQgPSB0b2tlblN0YXJ0
KCk7CkBAIC0xNDIxLDI5ICsxNDQwLDI5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAgICAg
ICAgIG5leHQoKTsKICAgICAgICAgY3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBt
X2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmlkZW50KTsKICAgICAgICAgbV9s
YXN0SWRlbnRpZmllciA9IGlkZW50OwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXNv
bHZlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGlkZW50LCBzdGFydCk7CisgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZVJlc29sdmUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9r
ZW5Db2x1bW4oKSwgaWRlbnQsIHN0YXJ0KTsKICAgICB9CiAgICAgY2FzZSBTVFJJTkc6IHsKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAg
ICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVTdHJpbmcobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgaWRlbnQpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVTdHJpbmcobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgaWRlbnQp
OwogICAgIH0KICAgICBjYXNlIE5VTUJFUjogewogICAgICAgICBkb3VibGUgZCA9IG1fdG9rZW4u
bV9kYXRhLmRvdWJsZVZhbHVlOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZU51bWJlckV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZCk7CisgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU51bWJlckV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgdG9rZW5Db2x1bW4oKSwgZCk7CiAgICAgfQogICAgIGNhc2UgTlVMTFRPS0VOOiB7CiAg
ICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTnVsbChtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTnVsbCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpKTsKICAgICB9CiAgICAgY2Fz
ZSBUUlVFVE9LRU46IHsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVCb29sZWFuKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRydWUpOworICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVCb29sZWFuKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRv
a2VuQ29sdW1uKCksIHRydWUpOwogICAgIH0KICAgICBjYXNlIEZBTFNFVE9LRU46IHsKICAgICAg
ICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCb29sZWFuKG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
Qm9vbGVhbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBmYWxzZSk7
CiAgICAgfQogICAgIGNhc2UgRElWRVFVQUw6CiAgICAgY2FzZSBESVZJREU6IHsKQEAgLTE0NTcs
NyArMTQ3Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAgICAgICAgIAogICAgICAgICBp
bnQgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgVHJlZUV4
cHJlc3Npb24gcmUgPSBjb250ZXh0LmNyZWF0ZVJlZ0V4cChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCAqcGF0dGVybiwgKmZsYWdzLCBzdGFydCk7CisgICAgICAgIFRyZWVFeHByZXNzaW9uIHJl
ID0gY29udGV4dC5jcmVhdGVSZWdFeHAobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5D
b2x1bW4oKSwgKnBhdHRlcm4sICpmbGFncywgc3RhcnQpOwogICAgICAgICBpZiAoIXJlKSB7CiAg
ICAgICAgICAgICBjb25zdCBjaGFyKiB5YXJyRXJyb3JNc2cgPSBZYXJyOjpjaGVja1N5bnRheChw
YXR0ZXJuLT51c3RyaW5nKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFtX2Vycm9yTWVzc2FnZS5p
c051bGwoKSk7CkBAIC0xNDgxLDEzICsxNTAwLDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUFyZ3VtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcmd1bWVudHMoVHJl
CiAgICAgVHJlZUV4cHJlc3Npb24gZmlyc3RBcmcgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9u
KGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGZpcnN0QXJnKTsKICAgICAKLSAgICBUcmVlQXJn
dW1lbnRzTGlzdCBhcmdMaXN0ID0gY29udGV4dC5jcmVhdGVBcmd1bWVudHNMaXN0KG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIGZpcnN0QXJnKTsKKyAgICBUcmVlQXJndW1lbnRzTGlzdCBhcmdM
aXN0ID0gY29udGV4dC5jcmVhdGVBcmd1bWVudHNMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHRva2VuQ29sdW1uKCksIGZpcnN0QXJnKTsKICAgICBUcmVlQXJndW1lbnRzTGlzdCB0YWls
ID0gYXJnTGlzdDsKICAgICB3aGlsZSAobWF0Y2goQ09NTUEpKSB7CiAgICAgICAgIG5leHQoVHJl
ZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwogICAgICAgICBUcmVlRXhwcmVzc2lvbiBhcmcg
PSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxz
ZShhcmcpOwotICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVBcmd1bWVudHNMaXN0KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRhaWwsIGFyZyk7CisgICAgICAgIHRhaWwgPSBjb250ZXh0
LmNyZWF0ZUFyZ3VtZW50c0xpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1
bW4oKSwgdGFpbCwgYXJnKTsKICAgICB9CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsK
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcmd1bWVudHMoYXJnTGlzdCk7CkBAIC0xNTE0LDcg
KzE1MzMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICBpbnQgYm9keVN0YXJ0
TGluZSA9IDA7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVu
Y3Rpb25JbmZvPEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIGZhbHNlPihjb250ZXh0LCBuYW1lLCBw
YXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExp
bmUpKSk7Ci0gICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBuYW1lLCBib2R5LCBwYXJhbWV0ZXJzLCBvcGVuQnJhY2VQb3Ms
IGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOworICAgICAgICBiYXNl
ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
dG9rZW5Db2x1bW4oKSwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBjbG9z
ZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKICAgICB9IGVsc2UKICAgICAg
ICAgYmFzZSA9IHBhcnNlUHJpbWFyeUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgCkBAIC0xNTI5
LDcgKzE1NDgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgaW50IGlu
aXRpYWxBc3NpZ25tZW50cyA9IG1fYXNzaWdubWVudENvdW50OwogICAgICAgICAgICAgVHJlZUV4
cHJlc3Npb24gcHJvcGVydHkgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgICAg
ICBmYWlsSWZGYWxzZShwcm9wZXJ0eSk7Ci0gICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVh
dGVCcmFja2V0QWNjZXNzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGJhc2UsIHByb3BlcnR5
LCBpbml0aWFsQXNzaWdubWVudHMgIT0gbV9hc3NpZ25tZW50Q291bnQsIGV4cHJlc3Npb25TdGFy
dCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQoKSk7CisgICAgICAgICAgICBiYXNlID0gY29udGV4
dC5jcmVhdGVCcmFja2V0QWNjZXNzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29s
dW1uKCksIGJhc2UsIHByb3BlcnR5LCBpbml0aWFsQXNzaWdubWVudHMgIT0gbV9hc3NpZ25tZW50
Q291bnQsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQoKSk7CiAgICAg
ICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0tFVCk7CiAgICAgICAgICAgICBtX25vbkxI
U0NvdW50ID0gbm9uTEhTQ291bnQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1NDIsMTIgKzE1
NjEsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICBpbnQgZXhw
ckVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAgICAgICAgIFRyZWVBcmd1bWVudHMgYXJn
dW1lbnRzID0gcGFyc2VBcmd1bWVudHMoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgZmFpbElm
RmFsc2UoYXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVO
ZXdFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGJhc2UsIGFyZ3VtZW50cywgc3RhcnQs
IGV4cHJFbmQsIGxhc3RUb2tlbkVuZCgpKTsgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGJh
c2UgPSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9r
ZW5Db2x1bW4oKSwgYmFzZSwgYXJndW1lbnRzLCBzdGFydCwgZXhwckVuZCwgbGFzdFRva2VuRW5k
KCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpbnQgZXhwcmVzc2lv
bkVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAgICAgICAgIFRyZWVBcmd1bWVudHMgYXJn
dW1lbnRzID0gcGFyc2VBcmd1bWVudHMoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgZmFpbElm
RmFsc2UoYXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5tYWtlRnVu
Y3Rpb25DYWxsTm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBhcmd1bWVudHMs
IGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgbGFzdFRva2VuRW5kKCkpOworICAgICAg
ICAgICAgICAgIGJhc2UgPSBjb250ZXh0Lm1ha2VGdW5jdGlvbkNhbGxOb2RlKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGJhc2UsIGFyZ3VtZW50cywgZXhwcmVzc2lv
blN0YXJ0LCBleHByZXNzaW9uRW5kLCBsYXN0VG9rZW5FbmQoKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBtX25vbkxIU0NvdW50ID0gbm9uTEhTQ291bnQ7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTE1NTcsNyArMTU3Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAg
ICAgICBpbnQgZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAgICAgbmV4
dEV4cGVjdElkZW50aWZpZXIoTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMgfCBUcmVlQnVp
bGRlcjo6RG9udEJ1aWxkS2V5d29yZHMpOwogICAgICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQp
OwotICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRG90QWNjZXNzKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlkZW50LCBleHByZXNzaW9uU3Rh
cnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kKCkpOworICAgICAgICAgICAgYmFzZSA9IGNvbnRl
eHQuY3JlYXRlRG90QWNjZXNzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1u
KCksIGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlkZW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Np
b25FbmQsIHRva2VuRW5kKCkpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTE1NjcsNyArMTU4Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhw
cmVzCiAgICAgfQogZW5kTWVtYmVyRXhwcmVzc2lvbjoKICAgICB3aGlsZSAobmV3Q291bnQtLSkK
LSAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3RXhwcihtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBiYXNlLCBzdGFydCwgbGFzdFRva2VuRW5kKCkpOworICAgICAgICBiYXNlID0gY29u
dGV4dC5jcmVhdGVOZXdFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1u
KCksIGJhc2UsIHN0YXJ0LCBsYXN0VG9rZW5FbmQoKSk7CiAgICAgcmV0dXJuIGJhc2U7CiB9CiAK
QEAgLTE2MDAsNyArMTYxOSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgbV9ub25MSFNDb3VudCsrOwotICAgICAgICBjb250ZXh0
LmFwcGVuZFVuYXJ5VG9rZW4odG9rZW5TdGFja0RlcHRoLCBtX3Rva2VuLm1fdHlwZSwgdG9rZW5T
dGFydCgpKTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRVbmFyeVRva2VuKHRva2VuU3RhY2tEZXB0
aCwgbV90b2tlbi5tX3R5cGUsIHRva2VuQ29sdW1uKCkpOwogICAgICAgICBuZXh0KCk7CiAgICAg
ICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgIH0KQEAgLTE2MTcsNyArMTYz
Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgY2FzZSBQTFVTUExVUzoKICAgICAg
ICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgIG1fbm9uTEhTQ291bnQr
KzsKLSAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIGV4cHIsIE9wUGx1c1BsdXMsIHN1YkV4cHJTdGFydCwgbGFzdFRva2VuRW5k
KCksIHRva2VuRW5kKCkpOworICAgICAgICBleHByID0gY29udGV4dC5tYWtlUG9zdGZpeE5vZGUo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZXhwciwgT3BQbHVzUGx1
cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CiAgICAgICAgIG1f
YXNzaWdubWVudENvdW50Kys7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdFdpdGhOYW1lQW5k
TWVzc2FnZShpc0V2YWxPckFyZ3VtZW50cywgIiciLCBtX2xhc3RJZGVudGlmaWVyLT5pbXBsKCks
ICInIGNhbm5vdCBiZSBtb2RpZmllZCBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBmYWlsSWZU
cnVlSWZTdHJpY3QocmVxdWlyZXNMRXhwcik7CkBAIC0xNjI2LDcgKzE2NDUsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVVuYXJ5RXhwcmVzcwogICAgIGNhc2UgTUlOVVNNSU5VUzoKICAgICAgICAgbV9ub25Ucml2
aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgIG1fbm9uTEhTQ291bnQrKzsKLSAgICAgICAg
ZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IGV4cHIsIE9wTWludXNNaW51cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5F
bmQoKSk7CisgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZShtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBleHByLCBPcE1pbnVzTWludXMsIHN1YkV4
cHJTdGFydCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOwogICAgICAgICBtX2Fzc2lnbm1l
bnRDb3VudCsrOwogICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3RXaXRoTmFtZUFuZE1lc3NhZ2Uo
aXNFdmFsT3JBcmd1bWVudHMsICInIiwgbV9sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAiJyBjYW5u
b3QgYmUgbW9kaWZpZWQgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgZmFpbElmVHJ1ZUlmU3Ry
aWN0KHJlcXVpcmVzTEV4cHIpOwpAQCAtMTY0NCwzNiArMTY2MywzNiBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVu
YXJ5RXhwcmVzcwogICAgIHdoaWxlICh0b2tlblN0YWNrRGVwdGgpIHsKICAgICAgICAgc3dpdGNo
IChjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RUeXBlKHRva2VuU3RhY2tEZXB0aCkpIHsKICAg
ICAgICAgY2FzZSBFWENMQU1BVElPTjoKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0
ZUxvZ2ljYWxOb3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7CisgICAgICAgICAg
ICBleHByID0gY29udGV4dC5jcmVhdGVMb2dpY2FsTm90KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHRva2VuQ29sdW1uKCksIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgVElMREU6Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlQml0d2lzZU5vdE5vZGUo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7CisgICAgICAgICAgICBleHByID0gY29u
dGV4dC5tYWtlQml0d2lzZU5vdE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5D
b2x1bW4oKSwgZXhwcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNSU5VUzoK
LSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VOZWdhdGVOb2RlKG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIGV4cHIpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZU5lZ2F0
ZU5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZXhwcik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQTFVTOgotICAgICAgICAgICAgZXhwciA9
IGNvbnRleHQuY3JlYXRlVW5hcnlQbHVzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIp
OworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlVW5hcnlQbHVzKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgUExVU1BMVVM6CiAgICAgICAgIGNhc2UgQVVUT1BMVVNQTFVTOgotICAg
ICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgZXhwciwgT3BQbHVzUGx1cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3Rh
cnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKKyAgICAgICAgICAg
IGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IHRva2VuQ29sdW1uKCksIGV4cHIsIE9wUGx1c1BsdXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNr
TGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CiAgICAg
ICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgTUlOVVNNSU5VUzoKICAgICAgICAgY2FzZSBBVVRPTUlOVVNNSU5VUzoKLSAgICAgICAg
ICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGV4cHIsIE9wTWludXNNaW51cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQo
dG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKKyAgICAgICAgICAgIGV4
cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRv
a2VuQ29sdW1uKCksIGV4cHIsIE9wTWludXNNaW51cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tM
YXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKICAgICAg
ICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBUWVBFT0Y6Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlVHlwZU9mTm9kZSht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250
ZXh0Lm1ha2VUeXBlT2ZOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1u
KCksIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVk9JRFRPS0VOOgot
ICAgICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlVm9pZChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBleHByKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0ZVZvaWQobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZXhwcik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBERUxFVEVUT0tFTjoKICAgICAgICAgICAgIGZhaWxJZlRy
dWVJZlN0cmljdFdpdGhOYW1lQW5kTWVzc2FnZShjb250ZXh0LmlzUmVzb2x2ZShleHByKSwgIkNh
bm5vdCBkZWxldGUgdW5xdWFsaWZpZWQgcHJvcGVydHkiLCBtX2xhc3RJZGVudGlmaWVyLT5pbXBs
KCksICJpbiBzdHJpY3QgbW9kZSIpOwotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZURl
bGV0ZU5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgY29udGV4dC51bmFyeVRv
a2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgZW5kLCBlbmQpOworICAgICAgICAg
ICAgZXhwciA9IGNvbnRleHQubWFrZURlbGV0ZU5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgdG9rZW5Db2x1bW4oKSwgZXhwciwgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQo
dG9rZW5TdGFja0RlcHRoKSwgZW5kLCBlbmQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBJZiB3ZSBnZXQgaGVyZSBzb21ldGhpbmcgaGFzIGdv
bmUgaG9ycmlibHkgaG9ycmlibHkgd3JvbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCmluZGV4IGMyYTExZDY2NWI3OTEzZWM1ZjY0MzFjMDYzNmMxYThhNmRkNmEwMTYuLjhlNmMx
MGI4NTU3N2RmMGI3MGM2YjhhYzc0Mjg1ZDcwYTY4ZTUzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaApAQCAtNTU0LDcgKzU1NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gbV90b2tlbi5tX2luZm8uZW5kT2Zmc2V0OwogICAgIH0KICAgICAKLSAgICBjb25zdCBj
aGFyKiBnZXRUb2tlbk5hbWUoSlNUb2tlblR5cGUgdG9rKSAKKyAgICBBTFdBWVNfSU5MSU5FIGlu
dCB0b2tlbkNvbHVtbigpCisgICAgeworICAgICAgICByZXR1cm4gbV90b2tlbi5tX2luZm8uY29s
dW1uOworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIGdldFRva2VuTmFtZShKU1Rva2VuVHlwZSB0
b2spCiAgICAgewogICAgICAgICBzd2l0Y2ggKHRvaykgewogICAgICAgICBjYXNlIE5VTExUT0tF
TjogCkBAIC0xMDA1LDYgKzEwMTAsNyBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iagogICAgIGlm
IChtX3NvdXJjZUVsZW1lbnRzKSB7CiAgICAgICAgIHJlc3VsdCA9IFBhcnNlZE5vZGU6OmNyZWF0
ZSgmbGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4ZXItPmN1cnJlbnRDb2x1bW5OdW1iZXIoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc291cmNlRWxlbWVudHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhckRlY2xhcmF0aW9ucyA/ICZt
X3ZhckRlY2xhcmF0aW9ucy0+ZGF0YSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2Z1bmNEZWNsYXJhdGlvbnMgPyAmbV9mdW5jRGVjbGFyYXRpb25zLT5kYXRhIDog
MCwKQEAgLTEwMTIsNyArMTAxOCw3IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbV9zb3VyY2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2ZlYXR1cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9udW1Db25zdGFudHMpOwotICAgICAgICByZXN1bHQtPnNldExvYyhtX3Nv
dXJjZS0+Zmlyc3RMaW5lKCksIG1fbGFzdExpbmUpOworICAgICAgICByZXN1bHQtPnNldExvYyht
X3NvdXJjZS0+Zmlyc3RMaW5lKCksIG1fbGFzdExpbmUsIG1fbGV4ZXItPmN1cnJlbnRDb2x1bW5O
dW1iZXIoKSk7CiAgICAgfSBlbHNlIGlmIChsZXhpY2FsR2xvYmFsT2JqZWN0KSB7CiAgICAgICAg
IC8vIFdlIGNhbiBuZXZlciBzZWUgYSBzeW50YXggZXJyb3Igd2hlbiByZXBhcnNpbmcgYSBmdW5j
dGlvbiwgc2luY2Ugd2Ugc2hvdWxkIGhhdmUKICAgICAgICAgLy8gcmVwb3J0ZWQgdGhlIGVycm9y
IHdoZW4gcGFyc2luZyB0aGUgY29udGFpbmluZyBwcm9ncmFtIG9yIGV2YWwgY29kZS4gU28gaWYg
d2UncmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9r
ZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCmluZGV4
IGExZWE3NTFhYzIwYTc5MmZmNGM1ZTYyMWEwMWJjNzc0OWVhM2E5YmYuLjYzYjNmYjgxZTlkMzQ3
MGEzNDdlYjIzNmQzOTBkMzFiMjVmMGM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTQxLDEwICsxNDEsMTEgQEAgdW5pb24gSlNUb2tlbkRh
dGEgewogfTsKIAogc3RydWN0IEpTVG9rZW5JbmZvIHsKLSAgICBKU1Rva2VuSW5mbygpIDogbGlu
ZSgwKSB7IH0KKyAgICBKU1Rva2VuSW5mbygpIDogbGluZSgwKSwgY29sdW1uKDApIHsgfQogICAg
IGludCBsaW5lOwogICAgIGludCBzdGFydE9mZnNldDsKICAgICBpbnQgZW5kT2Zmc2V0OworICAg
IGludCBjb2x1bW47CiB9OwogCiBzdHJ1Y3QgSlNUb2tlbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IGMyYzkzNzU2ZGUwM2FiY2EyOTVkZTEz
YWM4ZWUxMzgxYzdkNDBjNDguLmMzM2JhMDZjYzQwYTQwZmViZWYwODkzZjU0YzkxOWUwZTdjOGEz
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBA
IC0xMTksNDIgKzExOSw0MiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERv
bnRCdWlsZFN0cmluZ3MgPSBMZXhlckZsYWdzRG9udEJ1aWxkU3RyaW5nczsKIAogICAgIGludCBj
cmVhdGVTb3VyY2VFbGVtZW50cygpIHsgcmV0dXJuIDE7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBt
YWtlRnVuY3Rpb25DYWxsTm9kZShpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biBDYWxsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQ2FsbEV4cHI7IH0KICAg
ICB2b2lkIGFwcGVuZFRvQ29tbWEoRXhwcmVzc2lvblR5cGUmIGJhc2UsIEV4cHJlc3Npb25UeXBl
IHJpZ2h0KSB7IGJhc2UgPSByaWdodDsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbW1h
RXhwcihpbnQsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSByaWdodCkgeyByZXR1cm4g
cmlnaHQ7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlQXNzaWduTm9kZShpbnQsIEV4cHJlc3Np
b25UeXBlLCBPcGVyYXRvciwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGJvb2wsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZVBy
ZWZpeE5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIFByZUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlUG9zdGZpeE5vZGUoaW50
LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFBvc3RF
eHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZVR5cGVPZk5vZGUoaW50LCBFeHByZXNzaW9u
VHlwZSkgeyByZXR1cm4gVHlwZW9mRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VEZWxl
dGVOb2RlKGludCwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERlbGV0
ZUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlTmVnYXRlTm9kZShpbnQsIEV4cHJlc3Np
b25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlQml0
d2lzZU5vdE5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0g
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTG9naWNhbE5vdChpbnQsIEV4cHJlc3Npb25UeXBlKSB7
IHJldHVybiBVbmFyeUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVVbmFyeVBsdXMo
aW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlVm9pZChpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7
IH0KLSAgICBFeHByZXNzaW9uVHlwZSB0aGlzRXhwcihpbnQpIHsgcmV0dXJuIFRoaXNFeHByOyB9
Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVzb2x2ZShpbnQsIGNvbnN0IElkZW50aWZpZXIq
LCBpbnQpIHsgcmV0dXJuIFJlc29sdmVFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
T2JqZWN0TGl0ZXJhbChpbnQpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9CisgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlQ29tbWFFeHByKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSwgRXhw
cmVzc2lvblR5cGUgcmlnaHQpIHsgcmV0dXJuIHJpZ2h0OyB9CisgICAgRXhwcmVzc2lvblR5cGUg
bWFrZUFzc2lnbk5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgRXhwcmVz
c2lvblR5cGUsIGJvb2wsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRF
eHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVByZWZpeE5vZGUoaW50LCBpbnQsIEV4cHJl
c3Npb25UeXBlLCBPcGVyYXRvciwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gUHJlRXhwcjsgfQor
ICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQb3N0Zml4Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvblR5
cGUsIE9wZXJhdG9yLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQb3N0RXhwcjsgfQorICAgIEV4
cHJlc3Npb25UeXBlIG1ha2VUeXBlT2ZOb2RlKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSkgeyBy
ZXR1cm4gVHlwZW9mRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VEZWxldGVOb2RlKGlu
dCwgaW50LCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRGVsZXRlRXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VOZWdhdGVOb2RlKGludCwgaW50LCBFeHByZXNz
aW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZUJp
dHdpc2VOb3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHBy
OyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTG9naWNhbE5vdChpbnQsIGludCwgRXhwcmVz
c2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZVVuYXJ5UGx1cyhpbnQsIGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsg
fQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVZvaWQoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBl
KSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSB0aGlzRXhwcihpbnQs
IGludCkgeyByZXR1cm4gVGhpc0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZXNv
bHZlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiBSZXNvbHZlRXhw
cjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVjdExpdGVyYWwoaW50LCBpbnQpIHsg
cmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJy
YXkoaW50LCBpbnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVPYmplY3RMaXRlcmFsKGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE9iamVjdExp
dGVyYWxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyYXkoaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZU51bWJlckV4cHIoaW50LCBkb3VibGUpIHsgcmV0dXJuIE51bWJlckV4cHI7IH0KLSAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVTdHJpbmcoaW50LCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4g
U3RyaW5nRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oaW50LCBib29s
KSB7IHJldHVybiBCb29sRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoaW50
KSB7IHJldHVybiBOdWxsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJyYWNrZXRB
Y2Nlc3MoaW50LCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
RG90QWNjZXNzKGludCwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVn
RXhwKGludCwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYsIGlu
dCkgeyByZXR1cm4gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi51c3RyaW5nKCkpID8gMCA6IFJl
Z0V4cEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGludCwgRXhwcmVz
c2lvblR5cGUsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQotICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoaW50LCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQp
IHsgcmV0dXJuIE5ld0V4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVDb25kaXRpb25h
bEV4cHIoaW50LCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBl
KSB7IHJldHVybiBDb25kaXRpb25hbEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVB
c3NpZ25SZXNvbHZlKGludCwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBib29s
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQotICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBpbnQg
Y3JlYXRlRnVuY3Rpb25Cb2R5KGludCwgYm9vbCkgeyByZXR1cm4gMTsgfQorICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZUFycmF5KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQXJyYXlMaXRl
cmFsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bWJlckV4cHIoaW50LCBpbnQs
IGRvdWJsZSkgeyByZXR1cm4gTnVtYmVyRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZVN0cmluZyhpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIFN0cmluZ0V4cHI7
IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGludCwgaW50LCBib29sKSB7IHJl
dHVybiBCb29sRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoaW50LCBpbnQp
IHsgcmV0dXJuIE51bGxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFj
Y2VzcyhpbnQsIGludCwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQs
IGludCwgaW50KSB7IHJldHVybiBCcmFja2V0RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZURvdEFjY2VzcyhpbnQsIGludCwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IElkZW50aWZpZXIq
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlUmVnRXhwKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJ
ZGVudGlmaWVyJiwgaW50KSB7IHJldHVybiBZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnVzdHJp
bmcoKSkgPyAwIDogUmVnRXhwRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4
cHIoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IE5ld0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGludCwgaW50LCBF
eHByZXNzaW9uVHlwZSwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KKyAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVDb25kaXRpb25hbEV4cHIoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlLCBF
eHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIENvbmRpdGlvbmFsRXhwcjsg
fQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFzc2lnblJlc29sdmUoaW50LCBpbnQsIGNvbnN0
IElkZW50aWZpZXImLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gQXNzaWdubWVudEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4
cHIoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50KSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25Cb2R5
KGludCwgaW50LCBib29sKSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygp
IHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKGludCkgeyByZXR1cm4gMTsg
fQotICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGludCwgaW50KSB7IHJldHVybiAxOyB9CiAg
ICAgaW50IGNyZWF0ZUFyZ3VtZW50c0xpc3QoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQor
ICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQogICAgIHRlbXBsYXRlIDxib29sIGNvbXBsZXRlPiBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0
eShjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlKQog
ICAgIHsKICAgICAgICAgaWYgKCFjb21wbGV0ZSkKQEAgLTE2OCw4ICsxNjgsOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CiAgICAgICAgIHJldHVybiBQcm9w
ZXJ0eSgmZ2xvYmFsRGF0YS0+cGFyc2VyQXJlbmEtPmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1l
cmljSWRlbnRpZmllcihnbG9iYWxEYXRhLCBuYW1lKSwgdHlwZSk7CiAgICAgfQotICAgIGludCBj
cmVhdGVQcm9wZXJ0eUxpc3QoaW50LCBQcm9wZXJ0eSkgeyByZXR1cm4gMTsgfQotICAgIGludCBj
cmVhdGVQcm9wZXJ0eUxpc3QoaW50LCBQcm9wZXJ0eSwgaW50KSB7IHJldHVybiAxOyB9CisgICAg
aW50IGNyZWF0ZVByb3BlcnR5TGlzdChpbnQsIGludCwgUHJvcGVydHkpIHsgcmV0dXJuIDE7IH0K
KyAgICBpbnQgY3JlYXRlUHJvcGVydHlMaXN0KGludCwgaW50LCBQcm9wZXJ0eSwgaW50KSB7IHJl
dHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUVsZW1lbnRMaXN0KGludCwgaW50KSB7IHJldHVybiAx
OyB9CiAgICAgaW50IGNyZWF0ZUVsZW1lbnRMaXN0KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KICAgICBpbnQgY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChjb25zdCBJZGVudGlmaWVyJikg
eyByZXR1cm4gMTsgfQpAQCAtMTc3LDQwICsxNzcsNDAgQEAgcHVibGljOgogICAgIGludCBjcmVh
dGVDbGF1c2UoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlz
dChpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQsIGludCkg
eyByZXR1cm4gMTsgfQotICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cyhpbnQpIHsgfQotICAgIGlu
dCBjcmVhdGVGdW5jRGVjbFN0YXRlbWVudChpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUJsb2Nr
U3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVh
dGVFeHByU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGlu
dCBjcmVhdGVJZlN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsg
fQorICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cyhpbnQsIGludCkgeyB9CisgICAgaW50IGNyZWF0
ZUZ1bmNEZWNsU3RhdGVtZW50KGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVCbG9ja1N0
YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBj
cmVhdGVFeHByU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9
CiAgICAgaW50IGNyZWF0ZUlmU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRm9yTG9vcChpbnQsIGludCwgaW50LCBpbnQs
IGludCwgYm9vbCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRm9ySW5M
b29wKGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVGb3JJbkxv
b3AoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQotICAgIGludCBjcmVhdGVFbXB0eVN0YXRlbWVudChpbnQpIHsgcmV0dXJuIDE7IH0KLSAg
ICBpbnQgY3JlYXRlVmFyU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsg
fQotICAgIGludCBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCcmVha1N0YXRl
bWVudChpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50
LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0g
ICAgaW50IGNyZWF0ZVRyeVN0YXRlbWVudChpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVTd2l0Y2hTdGF0
ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0g
ICAgaW50IGNyZWF0ZVdoaWxlU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVdpdGhTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZURvV2hpbGVTdGF0
ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3Jl
YXRlTGFiZWxTdGF0ZW1lbnQoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVUaHJvd1N0YXRlbWVudChpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZURlYnVnZ2VyKGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29uc3RTdGF0ZW1lbnQo
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGFwcGVuZENvbnN0RGVj
bChpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gMTsgfQotICAgIHRl
bXBsYXRlIDxib29sIHN0cmljdD4gUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0
eShpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KQorICAgIGludCBjcmVhdGVJZlN0YXRlbWVudChp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQg
Y3JlYXRlRm9yTG9vcChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVGb3JJbkxvb3AoaW50LCBpbnQsIGNvbnN0
IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRm9ySW5Mb29wKGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAg
IGludCBjcmVhdGVFbXB0eVN0YXRlbWVudChpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGlu
dCBjcmVhdGVWYXJTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KKyAgICBpbnQgY3JlYXRlUmV0dXJuU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0
ZUJyZWFrU3RhdGVtZW50KGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRl
Q29udGludWVTdGF0ZW1lbnQoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlVHJ5U3RhdGVtZW50KGludCwg
aW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KKyAgICBpbnQgY3JlYXRlU3dpdGNoU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVdoaWxlU3Rh
dGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBp
bnQgY3JlYXRlV2l0aFN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlTGFi
ZWxTdGF0ZW1lbnQoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50KSB7
IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVRocm93U3RhdGVtZW50KGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVEZWJ1Z2dl
cihpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29uc3RT
dGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQg
YXBwZW5kQ29uc3REZWNsKGludCwgaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsg
cmV0dXJuIDE7IH0KKyAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdl
dHRlck9yU2V0dGVyUHJvcGVydHkoaW50LCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBj
b25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KQogICAg
IHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwogICAgICAgICBpZiAoIXN0cmljdCkKICAgICAgICAg
ICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICAgICAgcmV0dXJuIFByb3BlcnR5KG5hbWUs
IHR5cGUpOwogICAgIH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0
ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQsIFBy
b3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBkb3VibGUgbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCkKKyAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdldHRl
ck9yU2V0dGVyUHJvcGVydHkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQsIGludCwgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50KQogICAgIHsKICAgICAgICAgaWYgKCFzdHJpY3QpCiAgICAgICAgICAgICByZXR1cm4g
UHJvcGVydHkodHlwZSk7CkBAIC0yMTksNyArMjE5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBh
cHBlbmRTdGF0ZW1lbnQoaW50LCBpbnQpIHsgfQogICAgIHZvaWQgYWRkVmFyKGNvbnN0IElkZW50
aWZpZXIqLCBib29sKSB7IH0KLSAgICBpbnQgY29tYmluZUNvbW1hTm9kZXMoaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjb21iaW5lQ29tbWFOb2RlcyhpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgZXZhbENvdW50KCkgY29uc3QgeyByZXR1cm4g
MDsgfQogICAgIHZvaWQgYXBwZW5kQmluYXJ5RXhwcmVzc2lvbkluZm8oaW50JiBvcGVyYW5kU3Rh
Y2tEZXB0aCwgaW50IGV4cHIsIGludCwgaW50LCBpbnQsIGJvb2wpCiAgICAgewpAQCAtMjM1LDcg
KzIzNSw3IEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yU3RhY2tIYXNIaWdoZXJQcmVjZWRl
bmNlKGludCYsIGludCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIEJpbmFyeU9wZXJhbmQgZ2V0RnJv
bU9wZXJhbmRTdGFjayhpbnQpIHsgcmV0dXJuIG1fdG9wQmluYXJ5RXhwcjsgfQogICAgIHZvaWQg
c2hyaW5rT3BlcmFuZFN0YWNrQnkoaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50IGFtb3VudCkg
eyBvcGVyYW5kU3RhY2tEZXB0aCAtPSBhbW91bnQ7IH0KLSAgICB2b2lkIGFwcGVuZEJpbmFyeU9w
ZXJhdGlvbihpbnQsIGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCYsIEJpbmFyeU9wZXJhbmQs
IEJpbmFyeU9wZXJhbmQpIHsgb3BlcmFuZFN0YWNrRGVwdGgrKzsgfQorICAgIHZvaWQgYXBwZW5k
QmluYXJ5T3BlcmF0aW9uKGludCwgaW50LCBpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQmLCBC
aW5hcnlPcGVyYW5kLCBCaW5hcnlPcGVyYW5kKSB7IG9wZXJhbmRTdGFja0RlcHRoKys7IH0KICAg
ICB2b2lkIG9wZXJhdG9yU3RhY2tBcHBlbmQoaW50JiBvcGVyYXRvclN0YWNrRGVwdGgsIGludCwg
aW50KSB7IG9wZXJhdG9yU3RhY2tEZXB0aCsrOyB9CiAgICAgaW50IHBvcE9wZXJhbmRTdGFjayhp
bnQmKSB7IGludCByZXMgPSBtX3RvcEJpbmFyeUV4cHI7IG1fdG9wQmluYXJ5RXhwciA9IDA7IHJl
dHVybiByZXM7IH0KICAgICAKQEAgLTI0NSw3ICsyNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1
bmFyeVRva2VuU3RhY2tSZW1vdmVMYXN0KGludCYgc3RhY2tEZXB0aCkgeyBzdGFja0RlcHRoID0g
MDsgfQogICAgIAogICAgIHZvaWQgYXNzaWdubWVudFN0YWNrQXBwZW5kKGludCwgaW50LCBpbnQs
IGludCwgaW50LCBPcGVyYXRvcikgeyB9Ci0gICAgaW50IGNyZWF0ZUFzc2lnbm1lbnQoaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDE7
IH0KKyAgICBpbnQgY3JlYXRlQXNzaWdubWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAxOyB9CiAgICAgY29uc3QgSWRl
bnRpZmllciYgZ2V0TmFtZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsgQVNTRVJU
KHByb3BlcnR5Lm5hbWUpOyByZXR1cm4gKnByb3BlcnR5Lm5hbWU7IH0KICAgICBQcm9wZXJ0eU5v
ZGU6OlR5cGUgZ2V0VHlwZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsgcmV0dXJu
IHByb3BlcnR5LnR5cGU7IH0KICAgICBib29sIGlzUmVzb2x2ZShFeHByZXNzaW9uVHlwZSBleHBy
KSBjb25zdCB7IHJldHVybiBleHByID09IFJlc29sdmVFeHByIHx8IGV4cHIgPT0gUmVzb2x2ZUV2
YWxFeHByOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKaW5kZXggZjIyMjdjNzQ1Y2M4YTAxYmQzOGVhOGY0ZDBhYmM3NTM5M2FhMDM5OC4u
ZDNhOTJhN2M0NzU3NzM1MWVkYjBjMDZmZTIxMzhiNmMzNTkwMzFhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNzUsMjAgKzc1
LDI4IEBAIFN0cmluZyBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludChjb25zdCBTdHJp
bmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVhCiAgICAgU291cmNlSWRUb0JyZWFrcG9pbnRz
TWFwOjppdGVyYXRvciBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmZpbmQoc291cmNlSURW
YWx1ZSk7CiAgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQogICAg
ICAgICBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLnNldChzb3VyY2VJRFZhbHVlLCBMaW5l
VG9CcmVha3BvaW50TWFwKCkpLml0ZXJhdG9yOwotICAgIGlmIChpdC0+c2Vjb25kLmNvbnRhaW5z
KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEpKQotICAgICAgICByZXR1cm4gIiI7Ci0g
ICAgaXQtPnNlY29uZC5zZXQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSwgc2NyaXB0
QnJlYWtwb2ludCk7CisgICAgTGluZVRvQnJlYWtwb2ludE1hcDo6aXRlcmF0b3IgYnJlYWtzSXQg
PSBpdC0+c2Vjb25kLmZpbmQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSk7CisgICAg
aWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisgICAgICAgIGJyZWFrc0l0ID0gaXQt
PnNlY29uZC5zZXQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSwgQnJlYWtwb2ludHNJ
bkxpbmUoKSkuaXRlcmF0b3I7CisKKyAgICBCcmVha3BvaW50c0luTGluZSYgYnJlYWtzVmVjdG9y
ID0gYnJlYWtzSXQtPnNlY29uZDsKKyAgICB1bnNpZ25lZCBicmVha3NDb3VudCA9IGJyZWFrc1Zl
Y3Rvci5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJyZWFrc0NvdW50OyBp
KyspIHsKKyAgICAgICAgaWYgKGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5OdW1iZXIgPT0gc2Ny
aXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXIpCisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAg
fQorICAgIGJyZWFrc1ZlY3Rvci5hcHBlbmQoc2NyaXB0QnJlYWtwb2ludCk7CisKICAgICAqYWN0
dWFsTGluZU51bWJlciA9IHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcjsKLSAgICAvLyBGSVhN
RShXSzUzMDAzKTogaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2ludHMgYnkgbGluZTpjb2x1bW4u
Ci0gICAgKmFjdHVhbENvbHVtbk51bWJlciA9IDA7Ci0gICAgcmV0dXJuIHNvdXJjZUlEICsgIjoi
ICsgU3RyaW5nOjpudW1iZXIoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyKTsKKyAgICAqYWN0
dWFsQ29sdW1uTnVtYmVyID0gc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXI7CisgICAgcmV0
dXJuIHNvdXJjZUlEICsgIjoiICsgU3RyaW5nOjpudW1iZXIoc2NyaXB0QnJlYWtwb2ludC5saW5l
TnVtYmVyKSArICI6IiArIFN0cmluZzo6bnVtYmVyKHNjcmlwdEJyZWFrcG9pbnQuY29sdW1uTnVt
YmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludChjb25z
dCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0b2tlbnM7CiAg
ICAgYnJlYWtwb2ludElkLnNwbGl0KCI6IiwgdG9rZW5zKTsKLSAgICBpZiAodG9rZW5zLnNpemUo
KSAhPSAyKQorICAgIGlmICh0b2tlbnMuc2l6ZSgpICE9IDMpCiAgICAgICAgIHJldHVybjsKICAg
ICBib29sIHN1Y2Nlc3M7CiAgICAgaW50cHRyX3Qgc291cmNlSURWYWx1ZSA9IHRva2Vuc1swXS50
b0ludFB0cigmc3VjY2Vzcyk7CkBAIC05Nyw5ICsxMDUsNjMgQEAgdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6cmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkKICAgICB1
bnNpZ25lZCBsaW5lTnVtYmVyID0gdG9rZW5zWzFdLnRvVUludCgmc3VjY2Vzcyk7CiAgICAgaWYg
KCFzdWNjZXNzKQogICAgICAgICByZXR1cm47CisgICAgdW5zaWduZWQgY29sdW1uTnVtYmVyID0g
dG9rZW5zWzJdLnRvVUludCgmc3VjY2Vzcyk7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICBy
ZXR1cm47CisKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9z
b3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRFZhbHVlKTsKLSAgICBpZiAoaXQgIT0g
bV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIGl0LT5zZWNvbmQucmVtb3Zl
KGxpbmVOdW1iZXIgKyAxKTsKKyAgICBpZiAoaXQgPT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMu
ZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBMaW5lVG9CcmVha3BvaW50TWFwOjppdGVyYXRv
ciBicmVha3NJdCA9IGl0LT5zZWNvbmQuZmluZChsaW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGJy
ZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEJyZWFr
cG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25kOworICAgIHVuc2ln
bmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykgeworICAgICAgICBpZiAoYnJlYWtzVmVjdG9y
LmF0KGkpLmNvbHVtbk51bWJlciA9PSBzdGF0aWNfY2FzdDxpbnQ+KGNvbHVtbk51bWJlcikpIHsK
KyAgICAgICAgICAgIGJyZWFrc1ZlY3Rvci5yZW1vdmUoaSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ3Vy
cmVudFN0YXRlbWVudFBvc2l0aW9uKGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZSkKK3sKKyAg
ICBpZiAobGluZSA8IDApCisgICAgICAgIHJldHVybjsKKworICAgIFNvdXJjZVByb3ZpZGVyKiBz
b3VyY2UgPSByZWludGVycHJldF9jYXN0PFNvdXJjZVByb3ZpZGVyKj4oc291cmNlSUQpOworCisg
ICAgaWYgKG1fY3VycmVudFNvdXJjZUlEICE9IHNvdXJjZUlEKSB7CisgICAgICAgIFN0cmluZyBz
b3VyY2VDb2RlID0gdXN0cmluZ1RvU3RyaW5nKEpTQzo6VVN0cmluZyhjb25zdF9jYXN0PFN0cmlu
Z0ltcGwqPihzb3VyY2UtPmRhdGEoKSkpKTsKKyAgICAgICAgbV9jdXJyZW50U291cmNlQ29kZS5j
bGVhcigpOworICAgICAgICBzb3VyY2VDb2RlLnNwbGl0KCJcbiIsIHRydWUsIG1fY3VycmVudFNv
dXJjZUNvZGUpOworICAgICAgICBtX2N1cnJlbnRTb3VyY2VJRCA9IHNvdXJjZUlEOworICAgICAg
ICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyID0gMDsKKyAgICAgICAgbV9j
dXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0gMDsKKyAgICB9CisKKyAgICBp
ZiAobGluZSAhPSBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyKSB7CisgICAg
ICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIgPSBsaW5lOworICAgICAg
ICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIgPSAwOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaW50IHN0YXJ0TGluZSA9IHNvdXJjZS0+c3RhcnRQb3NpdGlv
bigpLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsKKyAgICBpZiAoKG1fY3VycmVudFN0YXRlbWVudFBv
c2l0aW9uLmxpbmVOdW1iZXIgLSBzdGFydExpbmUgLSAxKSA+PSBzdGF0aWNfY2FzdDxpbnQ+KG1f
Y3VycmVudFNvdXJjZUNvZGUuc2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbnN0IFN0
cmluZyYgY29kZUluTGluZSA9IG1fY3VycmVudFNvdXJjZUNvZGVbbV9jdXJyZW50U3RhdGVtZW50
UG9zaXRpb24ubGluZU51bWJlciAtIHN0YXJ0TGluZSAtIDFdOworICAgIGlmIChjb2RlSW5MaW5l
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGludCBuZXh0Q29sdW1uID0gY29kZUlu
TGluZS5maW5kKCI7IiwgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyKTsK
KyAgICBpZiAobmV4dENvbHVtbiAhPSAtMSkgeworICAgICAgICBVQ2hhciBjID0gY29kZUluTGlu
ZVtuZXh0Q29sdW1uICsgMV07CisgICAgICAgIGlmIChjID09ICcgJyB8fCBjID09ICdcdCcpCisg
ICAgICAgICAgICBuZXh0Q29sdW1uICs9IDE7CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBv
c2l0aW9uLmNvbHVtbk51bWJlciA9IG5leHRDb2x1bW4gKyAxOworICAgIH0gZWxzZQorICAgICAg
ICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIgPSAwOwogfQogCiBib29s
IFNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVha3BvaW50KGludHB0cl90IHNvdXJjZUlELCBjb25z
dCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdApAQCAtMTEwLDE5ICsxNzIsMzcgQEAgYm9v
bCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgY29u
c3QgVGV4dFBvc2l0aW9uJiBwb3MKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRCk7CiAg
ICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaW50IGxpbmVOdW1iZXIgPSBwb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJ
bnQoKTsKLSAgICBpZiAobGluZU51bWJlciA8PSAwKQorCisgICAgaW50IGxpbmVOdW1iZXIgPSBw
b3NpdGlvbi5tX2xpbmUuemVyb0Jhc2VkSW50KCk7CisgICAgaW50IGNvbHVtbk51bWJlciA9IHBv
c2l0aW9uLm1fY29sdW1uLnplcm9CYXNlZEludCgpOworICAgIGlmIChsaW5lTnVtYmVyIDwgMCB8
fCBjb2x1bW5OdW1iZXIgPCAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBMaW5lVG9C
cmVha3BvaW50TWFwOjpjb25zdF9pdGVyYXRvciBicmVha3NJdCA9IGl0LT5zZWNvbmQuZmluZChs
aW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBMaW5lVG9CcmVha3BvaW50TWFwOjpjb25zdF9pdGVy
YXRvciBicmVha0l0ID0gaXQtPnNlY29uZC5maW5kKGxpbmVOdW1iZXIpOwotICAgIGlmIChicmVh
a0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisKKyAgICBib29sIGhpdCA9IGZhbHNlOworICAgIGNv
bnN0IEJyZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25kOwor
ICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKKyAgICB1bnNp
Z25lZCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBicmVha3NDb3VudDsgaSsrKSB7CisgICAgICAg
IGludCBicmVha0NvbHVtbiA9IGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5OdW1iZXI7CisgICAg
ICAgIGludCBicmVha0xpbmUgPSBicmVha3NWZWN0b3IuYXQoaSkubGluZU51bWJlcjsKKyAgICAg
ICAgaWYgKGxpbmVOdW1iZXIgPT0gYnJlYWtMaW5lICYmIGNvbHVtbk51bWJlciA9PSBicmVha0Nv
bHVtbikgeworICAgICAgICAgICAgaGl0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorICAgIGlmICghaGl0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAvLyBBbiBlbXB0eSBjb25kaXRpb24gY291bnRzIGFzIG5vIGNvbmRpdGlvbiB3aGljaCBpcyBl
cXVpdmFsZW50IHRvICJ0cnVlIi4KLSAgICBpZiAoYnJlYWtJdC0+c2Vjb25kLmNvbmRpdGlvbi5p
c0VtcHR5KCkpCisgICAgaWYgKGJyZWFrc1ZlY3Rvci5hdChpKS5jb25kaXRpb24uaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEpTVmFsdWUgZXhjZXB0aW9uOwotICAgIEpT
VmFsdWUgcmVzdWx0ID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5ldmFsdWF0ZShzdHJpbmdUb1VTdHJp
bmcoYnJlYWtJdC0+c2Vjb25kLmNvbmRpdGlvbiksIGV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmV2YWx1YXRlKHN0cmluZ1RvVVN0cmluZyhicmVh
a3NWZWN0b3IuYXQoaSkuY29uZGl0aW9uKSwgZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9u
KSB7CiAgICAgICAgIC8vIEFuIGVycm9uZW91cyBjb25kaXRpb24gY291bnRzIGFzICJmYWxzZSIu
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0NywyMCArNDI3LDIwIEBAIHZvaWQgU2NyaXB0
RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhKYXZhU2NyaXB0RXhlY3V0
aW9uQ2FsbGJhY2sKICAgICBtX2NhbGxpbmdMaXN0ZW5lcnMgPSBmYWxzZTsKIH0KIAotdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6Y3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBE
ZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNyZWF0ZUNhbGxGcmFtZUFu
ZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1l
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7
Ci0gICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZpcnN0KCkpOworICAgIFRleHRQb3Np
dGlvbiB0ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1i
ZXIpLCBPcmRpbmFsTnVtYmVyOjpmcm9tWmVyb0Jhc2VkSW50KGNvbHVtbk51bWJlcikpOwogICAg
IG1fY3VycmVudENhbGxGcmFtZSA9IEphdmFTY3JpcHRDYWxsRnJhbWU6OmNyZWF0ZShkZWJ1Z2dl
ckNhbGxGcmFtZSwgbV9jdXJyZW50Q2FsbEZyYW1lLCBzb3VyY2VJRCwgdGV4dFBvc2l0aW9uKTsK
ICAgICBwYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLmR5bmFtaWNHbG9iYWxPYmplY3Qo
KSk7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNl
SWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp1
cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBk
ZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyKQogewogICAgIEFTU0VSVChtX2N1cnJlbnRDYWxsRnJhbWUpOwogICAgIGlm
ICghbV9jdXJyZW50Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBUZXh0UG9zaXRp
b24gdGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChsaW5lTnVtYmVy
KSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSk7CisgICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlv
bihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1i
ZXI6OmZyb21aZXJvQmFzZWRJbnQoY29sdW1uTnVtYmVyKSk7CiAgICAgbV9jdXJyZW50Q2FsbEZy
YW1lLT51cGRhdGUoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCB0ZXh0UG9zaXRpb24pOwog
ICAgIHBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUuZHluYW1pY0dsb2JhbE9iamVjdCgp
KTsKIH0KQEAgLTM5OSwyNCArNDc5LDI0IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNl
SWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QpCiAgICAgbV9wYXVz
ZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbEV2ZW50KGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbEV2ZW50KGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIGlmICghbV9wYXVzZWQp
Ci0gICAgICAgIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJh
bWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICAgICAgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1
c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcik7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmF0U3RhdGVtZW50KGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQoY29u
c3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7CiAgICAgaWYgKCFtX3BhdXNl
ZCkKLSAgICAgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxG
cmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAgICB1cGRhdGVDYWxsRnJhbWVBbmRQ
YXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmV0dXJuRXZlbnQoY29u
c3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZXR1cm5FdmVudChj
b25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAobV9wYXVz
ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVk
ZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVD
YWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIAogICAgIC8vIGRldGFjaCBtYXkgaGF2ZSBiZWVuIGNh
bGxlZCBkdXJpbmcgcGF1c2VJZk5lZWRlZAogICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQpA
QCAtNDI4LDcgKzUwOCw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KGNv
bnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwKICAgICBtX2N1cnJlbnRD
YWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlcigpOwogfQogCi12b2lkIFNjcmlw
dERlYnVnU2VydmVyOjpleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFu
ZGxlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmV4Y2VwdGlvbihjb25zdCBEZWJ1Z2dlckNh
bGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCBoYXNIYW5kbGVyKQogewogICAgIGlmIChtX3Bh
dXNlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM2LDIxICs1MTYsMjEgQEAgdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6ZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNh
bGxGcmFtZSwgaW4KICAgICBpZiAobV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlID09IFBhdXNlT25B
bGxFeGNlcHRpb25zIHx8IChtX3BhdXNlT25FeGNlcHRpb25zU3RhdGUgPT0gUGF1c2VPblVuY2F1
Z2h0RXhjZXB0aW9ucyAmJiAhaGFzSGFuZGxlcikpCiAgICAgICAgIG1fcGF1c2VPbk5leHRTdGF0
ZW1lbnQgPSB0cnVlOwogCi0gICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1
Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgIHVwZGF0ZUNhbGxGcmFt
ZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpOwogfQogCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjp3aWxsRXhlY3V0
ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp3
aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZy
YW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIp
CiB7CiAgICAgaWYgKCFtX3BhdXNlZCkKLSAgICAgICAgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJ
Zk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAg
ICBjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3Vy
Y2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlw
dERlYnVnU2VydmVyOjpkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYg
ZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNv
dXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVk
KGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsK
IAogICAgIC8vIFRyZWF0IHN0ZXBwaW5nIG92ZXIgdGhlIGVuZCBvZiBhIHByb2dyYW0gbGlrZSBz
dGVwcGluZyBvdXQuCiAgICAgaWYgKG1fY3VycmVudENhbGxGcmFtZSA9PSBtX3BhdXNlT25DYWxs
RnJhbWUpCkBAIC00NTgsMTMgKzUzOCwxMyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaWRF
eGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRgogICAg
IG1fY3VycmVudENhbGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyKCk7CiB9CiAK
LXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dl
ckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGlu
ZU51bWJlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlYWNoQnJlYWtwb2ludChjb25z
dCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAobV9wYXVzZWQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGF1c2VPbk5leHRTdGF0ZW1lbnQgPSB0cnVlOwot
ICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNv
dXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVk
KGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsK
IH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29u
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCmlu
ZGV4IDg0ZmJhNWM2NzhmYzcyNWRmMjg2MmVlOWZmM2JlNjUxODQxMjFhYTYuLjlkOGRkZTc0MzAw
YWE4YjZkYzM3NGJlMGQwY2RmMThlNjNkMmEwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMTIzLDIyICsxMjMsMjUgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYg
bGlzdGVuZXJzLCBKU0M6OlNvdXJjZVByb3ZpZGVyKiwgYm9vbCBpc0NvbnRlbnRTY3JpcHQpOwog
ICAgIHZvaWQgZGlzcGF0Y2hGYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBs
aXN0ZW5lcnMsIEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSk7CiAKLSAgICB2b2lkIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZO
ZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlcik7Ci0gICAgdm9pZCB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVk
KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpOworICAgIHZvaWQgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25z
dCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2b2lkIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNl
SWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CiAgICAgdm9pZCBwYXVzZUlmTmVl
ZGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QpOwogCiAgICAgdmly
dHVhbCB2b2lkIGRldGFjaChKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc291cmNlUGFyc2VkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTb3VyY2VQcm92aWRlciosIGlu
dCBlcnJvckxpbmUsIGNvbnN0IEpTQzo6VVN0cmluZyYgZXJyb3JNc2cpOwotICAgIHZpcnR1YWwg
dm9pZCBjYWxsRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZU51bWJlcik7Ci0gICAgdmlydHVhbCB2b2lkIGF0U3RhdGVtZW50KGNv
bnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGZpcnN0
TGluZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0IEpTQzo6RGVidWdnZXJD
YWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOwotICAgIHZpcnR1
YWwgdm9pZCBleGNlcHRpb24oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90
IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgYm9vbCBoYXNIYW5kbGVyKTsKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubyk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEV4ZWN1
dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVubyk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25z
dCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8p
OwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPGxvbmcsIFNjcmlwdEJyZWFrcG9pbnQ+IExpbmVUb0Jy
ZWFrcG9pbnRNYXA7CisgICAgdmlydHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBKU0M6OkRlYnVn
Z2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgSlNDOjpEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgZmlyc3RMaW5lLCBpbnQgY29s
dW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuRXZlbnQoY29uc3QgSlNDOjpEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihjb25zdCBKU0M6OkRlYnVn
Z2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhlY3V0
ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZW5vLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRXhl
Y3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVhY2hCcmVha3BvaW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBz
b3VyY2VJRCwgaW50IGxpbmVubywgaW50IGNvbHVtbk51bWJlcik7CisKKyAgICB2b2lkIHVwZGF0
ZUN1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbihpbnRwdHJfdCwgaW50KTsKKworICAgIHR5cGVkZWYg
VmVjdG9yPFNjcmlwdEJyZWFrcG9pbnQ+IEJyZWFrcG9pbnRzSW5MaW5lOworICAgIHR5cGVkZWYg
SGFzaE1hcDxsb25nLCBCcmVha3BvaW50c0luTGluZT4gTGluZVRvQnJlYWtwb2ludE1hcDsKICAg
ICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIExpbmVUb0JyZWFrcG9pbnRNYXA+IFNvdXJjZUlk
VG9CcmVha3BvaW50c01hcDsKIAogICAgIGJvb2wgbV9jYWxsaW5nTGlzdGVuZXJzOwpAQCAtMTUx
LDYgKzE1NCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+
IG1fY3VycmVudENhbGxGcmFtZTsKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXAgbV9zb3Vy
Y2VJZFRvQnJlYWtwb2ludHM7CiAgICAgVGltZXI8U2NyaXB0RGVidWdTZXJ2ZXI+IG1fcmVjb21w
aWxlVGltZXI7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2N1cnJlbnRTb3VyY2VDb2RlOworICAg
IGludHB0cl90IG1fY3VycmVudFNvdXJjZUlEOworICAgIFNjcmlwdEJyZWFrcG9pbnQgbV9jdXJy
ZW50U3RhdGVtZW50UG9zaXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150369</attachid>
            <date>2012-07-02 00:23:39 -0700</date>
            <delta_ts>2012-07-02 01:01:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120702152331.patch</filename>
            <type>text/plain</type>
            <size>306001</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZTFmMzk3YmNhOGMzYjlmZWUwMjAyOGQ3ZDNjOWZkYWIzMjdjNzAwLi5lNWY4MjY1ODVhNDJlMjg1
OTRmYjlhZjMwM2NlMTQzZDYwYzBjZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NTcgQEAKKzIwMTItMDctMDEgIFBldGVyIFdhbmcgIDxwZXRlci53YW5nQHRvcmNobW9i
aWxlLmNvbS5jbj4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbSlNDXSBpbXBsZW1lbnQgc2V0
dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMwMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdCBjYXNlIGZvciB0aGlzIGJ1Zy4KKwor
ICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6cGFkT3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2sp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAo
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KToKKyAgICAgICAg
KEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDb25kaXRpb25hbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0
U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RW1wdHlTdGF0ZW1l
bnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclN0YXRlbWVudE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpJZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Oklm
RWxzZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRvV2hpbGVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpXaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkZvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvckluTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29udGludWVOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OlJldHVybk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OldpdGhOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpMYWJlbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRo
cm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJv
ZHlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRo
cm93RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmRlYnVnKToKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAg
ICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEFTVEJ1aWxkZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVDb21tYUV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMb2dp
Y2FsTm90KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVW5hcnlQbHVzKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVm9pZCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OnRoaXNFeHByKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVzb2x2
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZU9iamVjdExpdGVyYWwpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJheSk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZU51bWJlckV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVh
dGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCb29sZWFuKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTnVsbCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUJyYWNrZXRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVSZWdFeHAp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVOZXdFeHByKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uZGl0aW9uYWxFeHByKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQXNzaWduUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1
bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUdldHRlck9yU2V0
dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcmd1bWVudHNM
aXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUHJvcGVydHlMaXN0KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUV4cHJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVJZlN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUZvckxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JJbkxvb3ApOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFbXB0eVN0YXRlbWVudCk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVZhclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZVJldHVyblN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUJyZWFrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlQ29udGludWVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVU
cnlTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVTd2l0Y2hTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVXaGlsZVN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVdpdGhTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVUaHJvd1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZURlYnVnZ2VyKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uc3RT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRDb25zdERlY2wpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmFwcGVuZEJpbmFyeU9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUFzc2lnbm1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlVHlwZU9mTm9kZSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VEZWxldGVOb2RlKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjptYWtlQml0d2lzZU5vdE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlTXVs
dE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRGl2Tm9kZSk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VNb2ROb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6bWFrZUFkZE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlU3ViTm9kZSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VMZWZ0U2hpZnROb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZVJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6bWFrZVVSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
Om1ha2VCaXRPck5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQml0QW5kTm9k
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VCaXRYT3JOb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1h
a2VBc3NpZ25Ob2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlUG9zdGZpeE5vZGUpOgorICAgICAgICAq
IHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6Ojo6c2V0Q29kZSk6CisgICAgICAgIChK
U0M6Ojo6aW50ZXJuYWxTaGlmdCk6CisgICAgICAgIChKU0M6Ojo6c2hpZnQpOgorICAgICAgICAo
SlNDOjo6OmxleCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6Okxl
eGVyOjpjdXJyZW50Q29sdW1uTnVtYmVyKToKKyAgICAgICAgKExleGVyKToKKyAgICAgICAgKEpT
Qzo6OjpsZXhFeHBlY3RJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oOgorICAgICAgICAoSlNDOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKEpTQzo6RXhwcmVz
c2lvbk5vZGU6OkV4cHJlc3Npb25Ob2RlKToKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6
U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6Ok51bGxOb2RlOjpOdWxsTm9kZSk6CisgICAg
ICAgIChKU0M6OkJvb2xlYW5Ob2RlOjpCb29sZWFuTm9kZSk6CisgICAgICAgIChKU0M6Ok51bWJl
ck5vZGU6Ok51bWJlck5vZGUpOgorICAgICAgICAoSlNDOjpTdHJpbmdOb2RlOjpTdHJpbmdOb2Rl
KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTm9kZTo6UmVnRXhwTm9kZSk6CisgICAgICAgIChKU0M6
OlRoaXNOb2RlOjpUaGlzTm9kZSk6CisgICAgICAgIChKU0M6OlJlc29sdmVOb2RlOjpSZXNvbHZl
Tm9kZSk6CisgICAgICAgIChKU0M6OkFycmF5Tm9kZTo6QXJyYXlOb2RlKToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZSk6CisgICAgICAgIChKU0M6Ok9i
amVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZSk6CisgICAgICAgIChKU0M6OkJyYWNr
ZXRBY2Nlc3Nvck5vZGU6OkJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoSlNDOjpEb3RB
Y2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZSk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50TGlz
dE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoSlNDOjpOZXdFeHByTm9kZTo6TmV3
RXhwck5vZGUpOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0
aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OkZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2Rl
OjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJy
YWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoSlNDOjpDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAo
SlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZSk6
CisgICAgICAgIChKU0M6OlByZVBvc3RSZXNvbHZlTm9kZTo6UHJlUG9zdFJlc29sdmVOb2RlKToK
KyAgICAgICAgKEpTQzo6UG9zdGZpeFJlc29sdmVOb2RlOjpQb3N0Zml4UmVzb2x2ZU5vZGUpOgor
ICAgICAgICAoSlNDOjpQb3N0Zml4QnJhY2tldE5vZGU6OlBvc3RmaXhCcmFja2V0Tm9kZSk6Cisg
ICAgICAgIChKU0M6OlBvc3RmaXhEb3ROb2RlOjpQb3N0Zml4RG90Tm9kZSk6CisgICAgICAgIChK
U0M6OlBvc3RmaXhFcnJvck5vZGU6OlBvc3RmaXhFcnJvck5vZGUpOgorICAgICAgICAoSlNDOjpE
ZWxldGVSZXNvbHZlTm9kZTo6RGVsZXRlUmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpEZWxl
dGVCcmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVE
b3ROb2RlOjpEZWxldGVEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlVmFsdWVOb2RlOjpE
ZWxldGVWYWx1ZU5vZGUpOgorICAgICAgICAoSlNDOjpWb2lkTm9kZTo6Vm9pZE5vZGUpOgorICAg
ICAgICAoSlNDOjpUeXBlT2ZSZXNvbHZlTm9kZTo6VHlwZU9mUmVzb2x2ZU5vZGUpOgorICAgICAg
ICAoSlNDOjpUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6
OlByZWZpeFJlc29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlBy
ZWZpeEJyYWNrZXROb2RlOjpQcmVmaXhCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OlByZWZp
eERvdE5vZGU6OlByZWZpeERvdE5vZGUpOgorICAgICAgICAoSlNDOjpQcmVmaXhFcnJvck5vZGU6
OlByZWZpeEVycm9yTm9kZSk6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjpVbmFyeU9wTm9k
ZSk6CisgICAgICAgIChKU0M6OlVuYXJ5UGx1c05vZGU6OlVuYXJ5UGx1c05vZGUpOgorICAgICAg
ICAoSlNDOjpOZWdhdGVOb2RlOjpOZWdhdGVOb2RlKToKKyAgICAgICAgKEpTQzo6Qml0d2lzZU5v
dE5vZGU6OkJpdHdpc2VOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6TG9naWNhbE5vdE5vZGU6Okxv
Z2ljYWxOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUp
OgorICAgICAgICAoSlNDOjpNdWx0Tm9kZTo6TXVsdE5vZGUpOgorICAgICAgICAoSlNDOjpEaXZO
b2RlOjpEaXZOb2RlKToKKyAgICAgICAgKEpTQzo6TW9kTm9kZTo6TW9kTm9kZSk6CisgICAgICAg
IChKU0M6OkFkZE5vZGU6OkFkZE5vZGUpOgorICAgICAgICAoSlNDOjpTdWJOb2RlOjpTdWJOb2Rl
KToKKyAgICAgICAgKEpTQzo6TGVmdFNoaWZ0Tm9kZTo6TGVmdFNoaWZ0Tm9kZSk6CisgICAgICAg
IChKU0M6OlJpZ2h0U2hpZnROb2RlOjpSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OlVu
c2lnbmVkUmlnaHRTaGlmdE5vZGU6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAo
SlNDOjpMZXNzTm9kZTo6TGVzc05vZGUpOgorICAgICAgICAoSlNDOjpHcmVhdGVyTm9kZTo6R3Jl
YXRlck5vZGUpOgorICAgICAgICAoSlNDOjpMZXNzRXFOb2RlOjpMZXNzRXFOb2RlKToKKyAgICAg
ICAgKEpTQzo6R3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9kZSk6CisgICAgICAgIChKU0M6OlRo
cm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlKToKKyAgICAgICAgKEpT
Qzo6SW5zdGFuY2VPZk5vZGU6Okluc3RhbmNlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6SW5Ob2Rl
OjpJbk5vZGUpOgorICAgICAgICAoSlNDOjpFcXVhbE5vZGU6OkVxdWFsTm9kZSk6CisgICAgICAg
IChKU0M6Ok5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKToKKyAgICAgICAgKEpTQzo6U3RyaWN0
RXF1YWxOb2RlOjpTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoSlNDOjpOb3RTdHJpY3RFcXVh
bE5vZGU6Ok5vdFN0cmljdEVxdWFsTm9kZSk6CisgICAgICAgIChKU0M6OkJpdEFuZE5vZGU6OkJp
dEFuZE5vZGUpOgorICAgICAgICAoSlNDOjpCaXRPck5vZGU6OkJpdE9yTm9kZSk6CisgICAgICAg
IChKU0M6OkJpdFhPck5vZGU6OkJpdFhPck5vZGUpOgorICAgICAgICAoSlNDOjpMb2dpY2FsT3BO
b2RlOjpMb2dpY2FsT3BOb2RlKToKKyAgICAgICAgKEpTQzo6Q29uZGl0aW9uYWxOb2RlOjpDb25k
aXRpb25hbE5vZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRN
b2RpZnlSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjpBc3Np
Z25SZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6UmVh
ZE1vZGlmeUJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduQnJhY2tldE5vZGU6OkFz
c2lnbkJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90
Tm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkVycm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKToKKyAg
ICAgICAgKEpTQzo6Q29tbWFOb2RlOjpDb21tYU5vZGUpOgorICAgICAgICAoSlNDOjpDb25zdFN0
YXRlbWVudE5vZGU6OkNvbnN0U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6OkVtcHR5U3Rh
dGVtZW50Tm9kZTo6RW1wdHlTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJT
dGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpFeHBy
U3RhdGVtZW50Tm9kZTo6RXhwclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0
ZW1lbnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6SWZOb2RlOjpJZk5v
ZGUpOgorICAgICAgICAoSlNDOjpJZkVsc2VOb2RlOjpJZkVsc2VOb2RlKToKKyAgICAgICAgKEpT
Qzo6RG9XaGlsZU5vZGU6OkRvV2hpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6V2hpbGVOb2RlOjpX
aGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjpGb3JOb2RlKToKKyAgICAgICAgKEpT
Qzo6Q29udGludWVOb2RlOjpDb250aW51ZU5vZGUpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6
OkJyZWFrTm9kZSk6CisgICAgICAgIChKU0M6OlJldHVybk5vZGU6OlJldHVybk5vZGUpOgorICAg
ICAgICAoSlNDOjpXaXRoTm9kZTo6V2l0aE5vZGUpOgorICAgICAgICAoSlNDOjpMYWJlbE5vZGU6
OkxhYmVsTm9kZSk6CisgICAgICAgIChKU0M6OlRocm93Tm9kZTo6VGhyb3dOb2RlKToKKyAgICAg
ICAgKEpTQzo6VHJ5Tm9kZTo6VHJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmNFeHByTm9kZTo6
RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUp
OgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKToKKyAgICAgICAgKEpTQzo6
Q29uc3REZWNsTm9kZTo6Q29uc3REZWNsTm9kZSk6CisgICAgICAgIChKU0M6OkJsb2NrTm9kZTo6
QmxvY2tOb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjpGb3JJbk5vZGUpOgorICAgICAg
ICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OnNldExv
Yyk6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6U2NvcGVOb2RlKToKKyAgICAgICAgKEpTQzo6
UHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkV2YWxOb2RlOjpFdmFsTm9kZSk6CisgICAgICAgIChKU0M6
OkV2YWxOb2RlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpGdW5j
dGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlND
OjpOb2RlOjpjb2x1bW5Obyk6CisgICAgICAgIChFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChT
dGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6Y29sdW1uKToKKyAg
ICAgICAgKE51bGxOb2RlKToKKyAgICAgICAgKEJvb2xlYW5Ob2RlKToKKyAgICAgICAgKE51bWJl
ck5vZGUpOgorICAgICAgICAoU3RyaW5nTm9kZSk6CisgICAgICAgIChSZWdFeHBOb2RlKToKKyAg
ICAgICAgKFRoaXNOb2RlKToKKyAgICAgICAgKFJlc29sdmVOb2RlKToKKyAgICAgICAgKEFycmF5
Tm9kZSk6CisgICAgICAgIChQcm9wZXJ0eUxpc3ROb2RlKToKKyAgICAgICAgKE9iamVjdExpdGVy
YWxOb2RlKToKKyAgICAgICAgKEJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoRG90QWNj
ZXNzb3JOb2RlKToKKyAgICAgICAgKEFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoTmV3RXhw
ck5vZGUpOgorICAgICAgICAoRXZhbEZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoRnVuY3Rp
b25DYWxsVmFsdWVOb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKToKKyAg
ICAgICAgKEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbERv
dE5vZGUpOgorICAgICAgICAoQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKFByZVBvc3RSZXNvbHZlTm9kZSk6Cisg
ICAgICAgIChQb3N0Zml4UmVzb2x2ZU5vZGUpOgorICAgICAgICAoUG9zdGZpeEJyYWNrZXROb2Rl
KToKKyAgICAgICAgKFBvc3RmaXhEb3ROb2RlKToKKyAgICAgICAgKFBvc3RmaXhFcnJvck5vZGUp
OgorICAgICAgICAoRGVsZXRlUmVzb2x2ZU5vZGUpOgorICAgICAgICAoRGVsZXRlQnJhY2tldE5v
ZGUpOgorICAgICAgICAoRGVsZXRlRG90Tm9kZSk6CisgICAgICAgIChEZWxldGVWYWx1ZU5vZGUp
OgorICAgICAgICAoVm9pZE5vZGUpOgorICAgICAgICAoVHlwZU9mUmVzb2x2ZU5vZGUpOgorICAg
ICAgICAoVHlwZU9mVmFsdWVOb2RlKToKKyAgICAgICAgKFByZWZpeFJlc29sdmVOb2RlKToKKyAg
ICAgICAgKFByZWZpeEJyYWNrZXROb2RlKToKKyAgICAgICAgKFByZWZpeERvdE5vZGUpOgorICAg
ICAgICAoUHJlZml4RXJyb3JOb2RlKToKKyAgICAgICAgKFVuYXJ5T3BOb2RlKToKKyAgICAgICAg
KFVuYXJ5UGx1c05vZGUpOgorICAgICAgICAoTmVnYXRlTm9kZSk6CisgICAgICAgIChCaXR3aXNl
Tm90Tm9kZSk6CisgICAgICAgIChMb2dpY2FsTm90Tm9kZSk6CisgICAgICAgIChCaW5hcnlPcE5v
ZGUpOgorICAgICAgICAoTXVsdE5vZGUpOgorICAgICAgICAoRGl2Tm9kZSk6CisgICAgICAgIChN
b2ROb2RlKToKKyAgICAgICAgKEFkZE5vZGUpOgorICAgICAgICAoU3ViTm9kZSk6CisgICAgICAg
IChMZWZ0U2hpZnROb2RlKToKKyAgICAgICAgKFJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKFVu
c2lnbmVkUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAoTGVzc05vZGUpOgorICAgICAgICAoR3Jl
YXRlck5vZGUpOgorICAgICAgICAoTGVzc0VxTm9kZSk6CisgICAgICAgIChHcmVhdGVyRXFOb2Rl
KToKKyAgICAgICAgKFRocm93YWJsZUJpbmFyeU9wTm9kZSk6CisgICAgICAgIChJbnN0YW5jZU9m
Tm9kZSk6CisgICAgICAgIChJbk5vZGUpOgorICAgICAgICAoRXF1YWxOb2RlKToKKyAgICAgICAg
KE5vdEVxdWFsTm9kZSk6CisgICAgICAgIChTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoTm90
U3RyaWN0RXF1YWxOb2RlKToKKyAgICAgICAgKEJpdEFuZE5vZGUpOgorICAgICAgICAoQml0T3JO
b2RlKToKKyAgICAgICAgKEJpdFhPck5vZGUpOgorICAgICAgICAoTG9naWNhbE9wTm9kZSk6Cisg
ICAgICAgIChDb25kaXRpb25hbE5vZGUpOgorICAgICAgICAoUmVhZE1vZGlmeVJlc29sdmVOb2Rl
KToKKyAgICAgICAgKEFzc2lnblJlc29sdmVOb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlCcmFj
a2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25CcmFja2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25E
b3ROb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKEFzc2lnbkVy
cm9yTm9kZSk6CisgICAgICAgIChDb21tYU5vZGUpOgorICAgICAgICAoQ29uc3REZWNsTm9kZSk6
CisgICAgICAgIChDb25zdFN0YXRlbWVudE5vZGUpOgorICAgICAgICAoQmxvY2tOb2RlKToKKyAg
ICAgICAgKEVtcHR5U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChEZWJ1Z2dlclN0YXRlbWVudE5v
ZGUpOgorICAgICAgICAoRXhwclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoVmFyU3RhdGVtZW50
Tm9kZSk6CisgICAgICAgIChJZk5vZGUpOgorICAgICAgICAoSWZFbHNlTm9kZSk6CisgICAgICAg
IChEb1doaWxlTm9kZSk6CisgICAgICAgIChXaGlsZU5vZGUpOgorICAgICAgICAoRm9yTm9kZSk6
CisgICAgICAgIChGb3JJbk5vZGUpOgorICAgICAgICAoQ29udGludWVOb2RlKToKKyAgICAgICAg
KEJyZWFrTm9kZSk6CisgICAgICAgIChSZXR1cm5Ob2RlKToKKyAgICAgICAgKFdpdGhOb2RlKToK
KyAgICAgICAgKExhYmVsTm9kZSk6CisgICAgICAgIChUaHJvd05vZGUpOgorICAgICAgICAoVHJ5
Tm9kZSk6CisgICAgICAgIChTY29wZU5vZGUpOgorICAgICAgICAoUHJvZ3JhbU5vZGUpOgorICAg
ICAgICAoRXZhbE5vZGUpOgorICAgICAgICAoRnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAgICAgIChG
dW5jRXhwck5vZGUpOgorICAgICAgICAoRnVuY0RlY2xOb2RlKToKKyAgICAgICAgKFN3aXRjaE5v
ZGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6OnBhcnNl
VmFyRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29uc3REZWNsYXJhdGlvbik6
CisgICAgICAgIChKU0M6Ojo6cGFyc2VEb1doaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZVdoaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVZhckRlY2xhcmF0
aW9uTGlzdCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25zdERlY2xhcmF0aW9uTGlzdCk6Cisg
ICAgICAgIChKU0M6Ojo6cGFyc2VGb3JTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNl
QnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29udGludWVTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjo6OnBhcnNlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZVRocm93U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVdpdGhTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZVRyeVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VEZWJ1Z2dlclN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VCbG9ja1N0YXRlbWVudCk6CisgICAgICAg
IChKU0M6Ojo6cGFyc2VTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlRnVuY3Rpb25C
b2R5KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJl
c3Npb25PckxhYmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJlc3Npb25T
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlSWZTdGF0ZW1lbnQpOgorICAgICAgICAo
SlNDOjo6OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjo6OnBhcnNlQmluYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VPYmplY3RMaXRlcmFsKToK
KyAgICAgICAgKEpTQzo6OjpwYXJzZVN0cmljdE9iamVjdExpdGVyYWwpOgorICAgICAgICAoSlND
Ojo6OnBhcnNlQXJyYXlMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVByaW1hcnlFeHBy
ZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVVuYXJ5RXhw
cmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQYXJz
ZXI6OnRva2VuQ29sdW1uKToKKyAgICAgICAgKFBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNl
cjo6Z2V0VG9rZW5OYW1lKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZSk6CisgICAgICAgICogcGFy
c2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAoSlNDOjpKU1Rva2VuSW5mbzo6SlNUb2tlbklu
Zm8pOgorICAgICAgICAoSlNUb2tlbkluZm8pOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVj
a2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2Rl
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ29tbWFFeHByKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjptYWtlUHJlZml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6Om1ha2VQb3N0Zml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VU
eXBlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZURlbGV0ZU5vZGUp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlTmVnYXRlTm9kZSk6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VCaXR3aXNlTm90Tm9kZSk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpTeW50YXhD
aGVja2VyOjpjcmVhdGVVbmFyeVBsdXMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVWb2lkKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6dGhpc0V4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUFycmF5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlTnVtYmVyRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN0cmlu
Zyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJvb2xlYW4pOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOdWxsKToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQnJhY2tldEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZVJlZ0V4cCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU5ld0V4cHIpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDb25kaXRpb25hbEV4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVBc3NpZ25SZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQXJndW1lbnRzTGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZVByb3BlcnR5TGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OnNl
dFVzZXNBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5j
RGVjbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJsb2Nr
U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRXhwclN0YXRl
bWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUlmU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRm9yTG9vcCk6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUVtcHR5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlVmFyU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlQnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVD
b250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRy
eVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN3aXRjaFN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVdoaWxlU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlV2l0aFN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6CisgICAg
ICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRocm93U3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRGVidWdnZXIpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVDb25zdFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENo
ZWNrZXI6OmFwcGVuZENvbnN0RGVjbCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2Vy
Ojpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJh
dG9yU3RhY2tQb3ApOgorCiAyMDEyLTA2LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgSlNDIHNob3VsZCB0cnkgdG8gbWFrZSBwcm9maWxpbmcgZGV0ZXJtaW5p
c3RpYyBiZWNhdXNlIG90aGVyd2lzZSByZXByb2R1Y2luZyBmYWlsdXJlcyBpcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDQ2ZGYxMDQ2MWMzYWVkMDUxNWQxODAzMTQ4NmQzMDRkY2RjMzQ5OWEuLmIxNWFjYjgxNjE1
YmRjNmQ5NzMwZmY3NDIwNWJmN2QxNWQ4N2UxOGMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBA
QAorMjAxMi0wNy0wMSAgUGV0ZXIgV2FuZyAgPHBldGVyLndhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtKU0NdIGltcGxlbWVudCBzZXR0aW5nIGJyZWFr
cG9pbnRzIGJ5IGxpbmU6Y29sdW1uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MzAwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0IGNhc2UgZm9yIHRoaXMgYnVnLiAoT09QUyEpCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6Omhh
c0JyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNyZWF0
ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpleGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OndpbGxFeGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZl
cjo6ZGlkRXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2
ZXI6OmRpZFJlYWNoQnJlYWtwb2ludCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToKKwogMjAxMi0wNi0yNiAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVmYWN0b3Jpbmc6
IFNpbXBsaWZ5IEZvcm1Db250cm9sbGVyIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCmluZGV4IGUwY2ZmMTY1YTg4YzkzM2E1ODgzMDM4NmNiNTgxOGE2ZmU3
YTEzMWEuLjUyNjIyY2Q3YThjNWI5NDFjM2Y1NGU3YTEwNDU3MTAyMTQ1NGY2MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKQEAgLTE5MCw3ICsxOTAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfdGhyb3csIDIpIFwKICAgICAgICAgbWFjcm8o
b3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yLCAyKSBcCiAgICAgICAgIFwKLSAgICAgICAgbWFjcm8o
b3BfZGVidWcsIDQpIFwKKyAgICAgICAgbWFjcm8ob3BfZGVidWcsIDUpIFwKICAgICAgICAgbWFj
cm8ob3BfcHJvZmlsZV93aWxsX2NhbGwsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfcHJvZmlsZV9k
aWRfY2FsbCwgMikgXAogICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDg5NjlhN2YyNWIy
N2U5ZmNlOTY1NTBhZWQ1NWYxMjczYzA0N2UyZmEuLjI5N2IwMDgyM2MwMTI2NjNlZDNhZGYwNjc3
ZmZlYTk2Y2I0OTgwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yMDM3LDcgKzIwMzcsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UG9wU2NvcGUoKQogICAgIG1fZHluYW1pY1Njb3Bl
RGVwdGgtLTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1
Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQordm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwg
aW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKQogewogI2lmIEVOQUJMRShE
RUJVR19XSVRIX0JSRUFLUE9JTlQpCiAgICAgaWYgKGRlYnVnSG9va0lEICE9IERpZFJlYWNoQnJl
YWtwb2ludCkKQEAgLTIwNTAsNiArMjA1MCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREZWJ1Z0hvb2soRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGluCiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRlYnVnSG9va0lEKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZmlyc3RMaW5lKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGFzdExpbmUp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjb2x1bW4pOwogfQogCiB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpwdXNoRmluYWxseUNvbnRleHQoU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2Nr
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCmluZGV4IDhiMWQxZDc0NGJhMmE5MmI0NDI2ZjczMGExZGMzOGQyM2Y3YjA3
ODkuLmIxNGI3MGFmZjFlZTI2MDJkNDNjMTE0YzI4ZGI1NGExN2U0ZmQzYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKQEAgLTUwNiw3ICs1MDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1c2hTY29wZShSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQgZW1pdFBv
cFNjb3BlKCk7CiAKLSAgICAgICAgdm9pZCBlbWl0RGVidWdIb29rKERlYnVnSG9va0lELCBpbnQg
Zmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAgICB2b2lkIGVtaXREZWJ1Z0hvb2soRGVi
dWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVtbik7CiAKICAg
ICAgICAgaW50IHNjb3BlRGVwdGgoKSB7IHJldHVybiBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9m
aW5hbGx5RGVwdGg7IH0KICAgICAgICAgYm9vbCBoYXNGaW5hbGlzZXIoKSB7IHJldHVybiBtX2Zp
bmFsbHlEZXB0aCAhPSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDI0M2U4Y2UwMDg0OWI1NTJkOThkYjA1MDFj
MzY5YTQxNWQyZWQwYS4uYzFiN2Y1NGFiNWIwZWM2ZTAwOTY3YzA5NGU2ZmEyMjVmNDRhMzkxMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcApAQCAtMjAyLDE4ICsyMDIsMTggQEAgYm9vbCBBcnJheU5vZGU6OmlzU2ltcGxlQXJy
YXkoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1Bcmd1bWVudExpc3ROb2RlKiBBcnJh
eU5vZGU6OnRvQXJndW1lbnRMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVO
dW1iZXIpIGNvbnN0CitBcmd1bWVudExpc3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2VsaXNpb24gJiYgIW1fb3B0aW9uYWwpOwogICAg
IEVsZW1lbnROb2RlKiBwdHIgPSBtX2VsZW1lbnQ7CiAgICAgaWYgKCFwdHIpCiAgICAgICAgIHJl
dHVybiAwOwotICAgIEFyZ3VtZW50TGlzdE5vZGUqIGhlYWQgPSBuZXcgKGdsb2JhbERhdGEpIEFy
Z3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgcHRyLT52YWx1ZSgpKTsKKyAgICBBcmd1bWVudExp
c3ROb2RlKiBoZWFkID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgcHRyLT52YWx1ZSgpKTsKICAgICBBcmd1bWVudExpc3ROb2RlKiB0
YWlsID0gaGVhZDsKICAgICBwdHIgPSBwdHItPm5leHQoKTsKICAgICBmb3IgKDsgcHRyOyBwdHIg
PSBwdHItPm5leHQoKSkgewogICAgICAgICBBU1NFUlQoIXB0ci0+ZWxpc2lvbigpKTsKLSAgICAg
ICAgdGFpbCA9IG5ldyAoZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVtYmVyLCB0
YWlsLCBwdHItPnZhbHVlKCkpOworICAgICAgICB0YWlsID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1
bWVudExpc3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdGFpbCwgcHRyLT52YWx1ZSgp
KTsKICAgICB9CiAgICAgcmV0dXJuIGhlYWQ7CiB9CkBAIC01MzYsNyArNTM2LDcgQEAgUmVnaXN0
ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9kZSo+KG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50TGlzdChnZW5lcmF0
b3IuZ2xvYmFsRGF0YSgpLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3RO
b2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQt
Pm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci5nbG9iYWxEYXRhKCksIDAsIDApOwog
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQo
KSk7CiAgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwpAQCAtMTEyOCw2
ICsxMTI4LDggQEAgUmVnaXN0ZXJJRCogQ29uZGl0aW9uYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKICAgICBSZWZQdHI8TGFiZWw+IGJl
Zm9yZUVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGFmdGVy
RWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogCisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxpbmVObygpLCBsaW5lTm8oKSwgY29sdW1uTm8oKSk7
CisKICAgICBpZiAobV9sb2dpY2FsLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKSB7CiAg
ICAgICAgIFJlZlB0cjxMYWJlbD4gYmVmb3JlVGhlbiA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9sb2dpY2FsLCBi
ZWZvcmVUaGVuLmdldCgpLCBiZWZvcmVFbHNlLmdldCgpLCB0cnVlKTsKQEAgLTEzODUsNyArMTM4
Nyw3IEBAIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIFJlZ2lzdGVySUQqIENvbnN0U3RhdGVt
ZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShtX25leHQpOwogfQogCkBAIC0xNDI4
LDcgKzE0MzAsNyBAQCBSZWdpc3RlcklEKiBCbG9ja05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogCiBSZWdpc3RlcklEKiBFbXB0
eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0xNDM2LDcgKzE0MzgsNyBA
QCBSZWdpc3RlcklEKiBFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpcwogCiBSZWdpc3RlcklEKiBEZWJ1Z2dlclN0YXRlbWVu
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkUmVhY2hCcmVha3Bv
aW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soRGlkUmVhY2hCcmVha3BvaW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkp
OwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTE0NDUsNyArMTQ0Nyw3IEBAIFJlZ2lzdGVySUQq
IERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlCiBSZWdpc3RlcklEKiBFeHByU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBB
U1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOyAKKyAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNv
bHVtbigpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9leHByKTsKIH0K
IApAQCAtMTQ1NCw3ICsxNDU2LDcgQEAgUmVnaXN0ZXJJRCogRXhwclN0YXRlbWVudE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIFJlZ2lzdGVy
SUQqIFZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKICAgICBBU1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50
LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdE5vZGUobV9leHByKTsKIH0KIApAQCAtMTQ2Miw3ICsxNDY0LDcgQEAgUmVnaXN0ZXJJ
RCogVmFyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGUKIAogUmVnaXN0ZXJJRCogSWZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQs
IGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPExh
YmVsPiBhZnRlclRoZW4gPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIApAQCAtMTQ4Niw3ICsxNDg4
LDcgQEAgUmVnaXN0ZXJJRCogSWZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiBSZWdpc3RlcklEKiBJZkVsc2VOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAg
ICAgCiAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVFbHNlID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
CiAgICAgUmVmUHRyPExhYmVsPiBhZnRlckVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKQEAg
LTE1MjIsMTIgKzE1MjQsMTEgQEAgUmVnaXN0ZXJJRCogRG9XaGlsZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgIFJlZlB0cjxM
YWJlbD4gdG9wT2ZMb29wID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbCh0b3BPZkxvb3AuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TG9vcEhpbnQoKTsK
LSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCkpOwogICAgCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9
IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxp
bmVObygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGlmIChtX2V4cHItPmhh
c0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUlu
Q29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFy
Z2V0KCksIGZhbHNlKTsKICAgICBlbHNlIHsKQEAgLTE1NDYsNyArMTU0Nyw3IEBAIFJlZ2lzdGVy
SUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3BlID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CiAgICAgUmVmUHRyPExhYmVsPiB0b3BP
Zkxvb3AgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxpbmVO
bygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
bV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5jb2x1bW5ObygpKTsK
ICAgICBpZiAobV9leHByLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKQogICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxvb3AuZ2V0
KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCB0cnVlKTsKICAgICBlbHNlIHsKQEAgLTE1NjAsNyAr
MTU2MSw3IEBAIFJlZ2lzdGVySUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29u
dGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIG1fZXhwci0+bGluZU5vKCksIG1fZXhwci0+bGluZU5vKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAgaWYgKG1fZXhwci0+aGFzQ29uZGl0aW9uQ29udGV4
dENvZGVnZW4oKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0
KG1fZXhwciwgdG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgZmFsc2UpOwpA
QCAtMTU4MSw3ICsxNTgyLDcgQEAgUmVnaXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBSZWZQ
dHI8TGFiZWxTY29wZT4gc2NvcGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3Bl
OjpMb29wKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAKICAgICBpZiAobV9leHByMSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjEpOwpAQCAtMTYwMiw3ICsxNjAzLDcgQEAgUmVn
aXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRM
YWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICBpZiAobV9leHByMykKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjMpOwogCkBAIC0x
NjI5LDcgKzE2MzAsNyBAQCBSZWdpc3RlcklEKiBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAgIGlmICghbV9sZXhw
ci0+aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gZW1pdFRocm93UmVmZXJlbmNlRXJyb3Io
Z2VuZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGZvci1pbiBzdGF0ZW1lbnQgaXMgbm90IGEgcmVmZXJl
bmNlLiIpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigp
KTsKIAogICAgIGlmIChtX2luaXQpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpLCBtX2luaXQpOwpAQCAtMTY5Miw3ICsxNjkzLDcgQEAgUmVnaXN0
ZXJJRCogRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHMKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRp
bnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TmV4dFByb3BlcnR5TmFtZShwcm9wZXJ0
eU5hbWUsIGJhc2UuZ2V0KCksIGkuZ2V0KCksIHNpemUuZ2V0KCksIGl0ZXIuZ2V0KCksIGxvb3BT
dGFydC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0
ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVt
bigpKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKICAg
ICByZXR1cm4gZHN0OwogfQpAQCAtMTcwMiw3ICsxNzAzLDcgQEAgUmVnaXN0ZXJJRCogRm9ySW5O
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHMKIC8vIEVDTUEgMTIuNwogUmVnaXN0ZXJJRCogQ29udGludWVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAg
TGFiZWxTY29wZSogc2NvcGUgPSBnZW5lcmF0b3IuY29udGludWVUYXJnZXQobV9pZGVudCk7CiAg
ICAgQVNTRVJUKHNjb3BlKTsKQEAgLTE3MTYsNyArMTcxNyw3IEBAIFJlZ2lzdGVySUQqIENvbnRp
bnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqCiAvLyBFQ01BIDEyLjgKIFJlZ2lzdGVySUQqIEJyZWFrTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIAogICAgIExh
YmVsU2NvcGUqIHNjb3BlID0gZ2VuZXJhdG9yLmJyZWFrVGFyZ2V0KG1faWRlbnQpOwogICAgIEFT
U0VSVChzY29wZSk7CkBAIC0xNzI5LDcgKzE3MzAsNyBAQCBSZWdpc3RlcklEKiBCcmVha05vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
cwogCiBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgQVNTRVJUKGdlbmVyYXRvci5jb2RlVHlw
ZSgpID09IEZ1bmN0aW9uQ29kZSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpCkBAIC0xNzQ1LDcgKzE3NDYsNyBAQCBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAog
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBTY29wZXMobDAuZ2V0KCksIDApOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKGwwLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFJldHVy
bihyMCk7CiB9CiAKQEAgLTE3NTMsNyArMTc1NCw3IEBAIFJlZ2lzdGVySUQqIFJldHVybk5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
CiAKIFJlZ2lzdGVySUQqIFdpdGhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNj
b3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShz
Y29wZS5nZXQoKSwgbV9leHByKTsgLy8gc2NvcGUgbXVzdCBiZSBwcm90ZWN0ZWQgdW50aWwgcG9w
cGVkCkBAIC0xOTE4LDcgKzE5MTksNyBAQCBSZWdpc3RlcklEKiBDYXNlQmxvY2tOb2RlOjplbWl0
Qnl0ZWNvZGVGb3JCbG9jayhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogCiBSZWdp
c3RlcklEKiBTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdp
bGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0
TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3BlID0g
Z2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6U3dpdGNoKTsKIApAQCAtMTkzMyw3
ICsxOTM0LDcgQEAgUmVnaXN0ZXJJRCogU3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAogUmVnaXN0ZXJJRCogTGFiZWxO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAKICAgICBBU1NFUlQoIWdlbmVyYXRvci5icmVha1RhcmdldChtX25hbWUpKTsKIApAQCAt
MTk0OCw3ICsxOTQ5LDcgQEAgUmVnaXN0ZXJJRCogTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCog
VGhyb3dOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBj
b2x1bW4oKSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAg
ICAgICAgIGRzdCA9IDA7CkBAIC0xOTY1LDcgKzE5NjYsNyBAQCBSZWdpc3RlcklEKiBUcnlOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogICAgIC8vIE5PVEU6IFRoZSBjYXRjaCBhbmQgZmluYWxseSBibG9ja3MgbXVzdCBiZSBs
YWJlbGVkIGV4cGxpY2l0bHksIHNvIHRoZQogICAgIC8vIG9wdGltaXplciBrbm93cyB0aGV5IG1h
eSBiZSBqdW1wZWQgdG8gZnJvbSBhbnl3aGVyZS4KIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBSZWZQdHI8TGFiZWw+IHRyeVN0YXJ0TGFi
ZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBpZiAobV9maW5hbGx5QmxvY2spCkBAIC0y
MDIyLDEzICsyMDIzLDEzIEBAIGlubGluZSB2b2lkIFNjb3BlTm9kZTo6ZW1pdFN0YXRlbWVudHNC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAKIFJlZ2lzdGVySUQq
IFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQ
cm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1u
KCkpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRzdFJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0TG9hZChkc3RSZWdpc3Rlci5nZXQoKSwg
anNVbmRlZmluZWQoKSk7CiAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGRz
dFJlZ2lzdGVyLmdldCgpKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1
dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1
bW4oKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFbmQoZHN0UmVnaXN0ZXIuZ2V0KCkpOwogICAgIHJl
dHVybiAwOwogfQpAQCAtMjAzNywxMyArMjAzOCwxMyBAQCBSZWdpc3RlcklEKiBQcm9ncmFtTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
KQogCiBSZWdpc3RlcklEKiBFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCksIGNvbHVtbigpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkc3RSZWdpc3RlciA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQoZHN0UmVn
aXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUo
Z2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY29sdW1uKCkpOwogICAgIGdlbmVyYXRvci5lbWl0RW5kKGRzdFJlZ2lzdGVyLmdl
dCgpKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTIwNTIsNyArMjA1Myw3IEBAIFJlZ2lzdGVySUQq
IEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCopCiAKIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQm9keU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1lLCBmaXJz
dExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNv
ZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAogICAgIFN0YXRlbWVu
dE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOwpAQCAtMjA2
OCw3ICsyMDY5LDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAvLyBJZiB0aGVyZSBp
cyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCiAgICAgaWYgKCFy
ZXR1cm5Ob2RlKSB7CiAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3Ry
dWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgw
LCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExl
YXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5oCmluZGV4IGEyMzczMjkxODc4MDNlZGE5NTdhMzdkM2EwYTkwN2FmZjBiODkyMzIuLmEwM2Zk
ZjllNGIyZDQ0M2EyZTkzNTQwZTc0NDA2YjA5ZjBhNzYwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC00MiwxNCArNDIsMTQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3QqKTsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEV4ZWNTdGF0ZSosIFNvdXJjZVByb3ZpZGVy
KiwgaW50IGVycm9yTGluZU51bWJlciwgY29uc3QgVVN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUm
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFuZGxlcikgPSAw
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmV0dXJu
RXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihjb25zdCBEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgYm9vbCBoYXNIYW5kbGVyKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBh
dFN0YXRlbWVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgY2FsbEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCByZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgPSAwOwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qg
c291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxFeGVjdXRl
UHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3Vy
Y2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgPSAwOwog
CiAgICAgICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoSlNHbG9iYWxEYXRhKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CmluZGV4IGI4NjEwZTdiZmJjODVlODE3YzE5ZTljZDg2MTEwYjgxYmQ0ZTkwMWIuLjMwZDI4N2Zk
NDgxMGQ2NWFjYzAwYjU2NzllNTdlZDA0OWEzYjgwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNzEyLDkgKzcxMiw5IEBA
IE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUoQ2FsbEZyYW1l
KiYgY2FsbEZyYW1lLCBKU1ZhbHVlIGV4CiAgICAgaWYgKERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNh
bGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKSB7CiAgICAgICAgIERl
YnVnZ2VyQ2FsbEZyYW1lIGRlYnVnZ2VyQ2FsbEZyYW1lKGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFs
dWUpOwogICAgICAgICBpZiAoY2FsbEZyYW1lLT5jYWxsZWUoKSkKLSAgICAgICAgICAgIGRlYnVn
Z2VyLT5yZXR1cm5FdmVudChkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bGFzdExp
bmUoKSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+cmV0dXJuRXZlbnQoZGVidWdnZXJDYWxsRnJh
bWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCktPmxhc3RMaW5lKCksIDApOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBkZWJ1Z2dlci0+ZGlkRXhlY3V0ZVByb2dyYW0oZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCktPmxhc3RMaW5lKCkpOworICAgICAgICAgICAgZGVidWdnZXItPmRpZEV4ZWN1dGVQ
cm9ncmFtKGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5z
b3VyY2VJRCgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5sYXN0TGluZSgpLCAwKTsK
ICAgICB9CiAKICAgICAvLyBJZiB0aGlzIGNhbGwgZnJhbWUgY3JlYXRlZCBhbiBhY3RpdmF0aW9u
IG9yIGFuICdhcmd1bWVudHMnIG9iamVjdCwgdGVhciBpdCBvZmYuCkBAIC0xMDM2LDcgKzEwMzYs
NyBAQCBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0aHJvd0V4Y2VwdGlv
bihDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVgogICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIg
PSBjYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkgewogICAgICAg
ICBEZWJ1Z2dlckNhbGxGcmFtZSBkZWJ1Z2dlckNhbGxGcmFtZShjYWxsRnJhbWUsIGV4Y2VwdGlv
blZhbHVlKTsKICAgICAgICAgYm9vbCBoYXNIYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICBkZWJ1Z2dlci0+ZXhjZXB0
aW9uKGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3Vy
Y2VJRCgpLCBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCksIGhhc0hhbmRsZXIpOworICAgICAgICBkZWJ1Z2dlci0+ZXhjZXB0aW9uKGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBjb2Rl
QmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCksIDAsIGhh
c0hhbmRsZXIpOwogICAgIH0KIAogICAgIC8vIENhbGN1bGF0ZSBhbiBleGNlcHRpb24gaGFuZGxl
ciB2UEMsIHVud2luZGluZyBjYWxsIGZyYW1lcyBhcyBuZWNlc3NhcnkuCkBAIC0xNjI0LDcgKzE2
MjQsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFs
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZQogICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KHJlc3VsdCk7CiB9CiAKLU5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUs
IGludCBsYXN0TGluZSkKK05FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUs
IGludCBsYXN0TGluZSwgaW50IGNvbHVtbikKIHsKICAgICBEZWJ1Z2dlciogZGVidWdnZXIgPSBj
YWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKICAgICBpZiAoIWRl
YnVnZ2VyKQpAQCAtMTYzMiwyMiArMTYzMiwyMiBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnBy
ZXRlcjo6ZGVidWcoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIERlYnVnSG9va0lEIGRlYnVnSG9vawog
CiAgICAgc3dpdGNoIChkZWJ1Z0hvb2tJRCkgewogICAgICAgICBjYXNlIERpZEVudGVyQ2FsbEZy
YW1lOgotICAgICAgICAgICAgZGVidWdnZXItPmNhbGxFdmVudChjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJzdExpbmUp
OworICAgICAgICAgICAgZGVidWdnZXItPmNhbGxFdmVudChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJzdExpbmUsIGNv
bHVtbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgV2lsbExlYXZlQ2FsbEZy
YW1lOgotICAgICAgICAgICAgZGVidWdnZXItPnJldHVybkV2ZW50KGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5l
KTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5yZXR1cm5FdmVudChjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSwg
Y29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBXaWxsRXhlY3V0ZVN0
YXRlbWVudDoKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5hdFN0YXRlbWVudChjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJz
dExpbmUpOworICAgICAgICAgICAgZGVidWdnZXItPmF0U3RhdGVtZW50KGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGZpcnN0
TGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBXaWxsRXhl
Y3V0ZVByb2dyYW06Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+d2lsbEV4ZWN1dGVQcm9ncmFtKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJj
ZUlEKCksIGZpcnN0TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+d2lsbEV4ZWN1dGVQcm9n
cmFtKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkt
PnNvdXJjZUlEKCksIGZpcnN0TGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgY2FzZSBEaWRFeGVjdXRlUHJvZ3JhbToKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRF
eGVjdXRlUHJvZ3JhbShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhl
Y3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+
ZGlkRXhlY3V0ZVByb2dyYW0oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25l
ckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgbGFzdExpbmUsIGNvbHVtbik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGNhc2UgRGlkUmVhY2hCcmVha3BvaW50OgotICAgICAgICAgICAg
ZGVidWdnZXItPmRpZFJlYWNoQnJlYWtwb2ludChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSk7CisgICAgICAg
ICAgICBkZWJ1Z2dlci0+ZGlkUmVhY2hCcmVha3BvaW50KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5lLCBjb2x1
bW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWRiMjNmMjM3MjM4NGRhZjg4
M2IxNGVmZjhiYWY1ZGM1ZmU2ZGY0MS4uNDdkNjY4OTg1MTVmMjE5MWU2NTkyNWUwMjc3ODc0ZWU3
YjAwOTA2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgKQEAgLTIyMCw3ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU2Ft
cGxpbmdUb29sKiBzYW1wbGVyKCkgeyByZXR1cm4gbV9zYW1wbGVyLmdldCgpOyB9CiAKICAgICAg
ICAgTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiB0aHJvd0V4Y2VwdGlvbihDYWxsRnJhbWUqJiwg
SlNWYWx1ZSYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgTkVWRVJfSU5MSU5F
IHZvaWQgZGVidWcoQ2FsbEZyYW1lKiwgRGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBs
YXN0TGluZSk7CisgICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERl
YnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUsIGludCBjb2x1bW4pOwogICAg
ICAgICBzdGF0aWMgY29uc3QgVVN0cmluZyBnZXRUcmFjZUxpbmUoQ2FsbEZyYW1lKiwgU3RhY2tG
cmFtZUNvZGVUeXBlLCBjb25zdCBVU3RyaW5nJiwgaW50KTsKICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZ2V0U3RhY2tUcmFjZShKU0dsb2JhbERhdGEqLCBWZWN0b3I8U3Rh
Y2tGcmFtZT4mIHJlc3VsdHMpOwogICAgICAgICBzdGF0aWMgdm9pZCBhZGRTdGFja1RyYWNlSWZO
ZWNlc3NhcnkoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDJlNDQ4ZGQ1MmFhOTYxZDliMjQxYWMwNWQwNDc4
MmEwNjE1MzZkMTQuLjZiNGE3NzY1YzhhN2Q3MzI5ZGRmZmRhY2JmOWEyOTUyNjNjNjM0MTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTE1OSw2ICsxMTU5
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJ
bW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsK
KyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9u
WzRdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmNhbGwoKTsKICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDRmODU4OTU1
NzJjMGU5ZjMyMjlhYjQ5MDgwYjZlZTU5NjE0YTgyNTEuLmY5OTdiM2U4YmQxMTJhMzc4NTM2MTRl
OTRkMTM3MDk2N2IwMTMwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKQEAgLTE0ODAsNiArMTQ4MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2Rl
YnVnKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsK
ICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kKSk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0
aW9uWzRdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmNhbGwoKTsKICNlbmRpZgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRleCA2YjgwODI4ODY5Njc0YjIwZTk1
NDI4ZTg0ZGQxODU5NTU5OTcyMzE4Li5jMGQxMDllMWQ4ZjNhMDE4NWNlZGMyYmY3MDI4MjRkNTBk
OTc2ODAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtMzM2OSw4
ICszMzY5LDkgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfZGVidWcpCiAgICAgaW50
IGRlYnVnSG9va0lEID0gc3RhY2tGcmFtZS5hcmdzWzBdLmludDMyKCk7CiAgICAgaW50IGZpcnN0
TGluZSA9IHN0YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpOwogICAgIGludCBsYXN0TGluZSA9IHN0
YWNrRnJhbWUuYXJnc1syXS5pbnQzMigpOworICAgIGludCBjb2x1bW4gPSBzdGFja0ZyYW1lLmFy
Z3NbM10uaW50MzIoKTsKIAotICAgIHN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXIt
PmRlYnVnKGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwg
Zmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgc3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5pbnRlcnBy
ZXRlci0+ZGVidWcoY2FsbEZyYW1lLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29r
SUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lLCBjb2x1bW4pOwogfQogCiBERUZJTkVfU1RVQl9GVU5D
VElPTih2b2lkKiwgdm1fdGhyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCmluZGV4IDBlYjYwY2Y4OTkyZmYwOTI0OTkxMzQ0MzI4YmY5MzFhMWJmNzM2ZTcuLjRj
NWY2ODI1YWY1NDc0MTc1Nzc0NTkwMDcwZmQ2MzNhYjYxZDQxODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0xMTIsOCArMTEyLDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCBpbnQgIERvbnRCdWlsZEtleXdvcmRzID0gMDsKICAgICBzdGF0aWMg
Y29uc3QgaW50ICBEb250QnVpbGRTdHJpbmdzID0gMDsKIAotICAgIEV4cHJlc3Npb25Ob2RlKiBt
YWtlQmluYXJ5Tm9kZShpbnQgbGluZU51bWJlciwgaW50IHRva2VuLCBzdGQ6OnBhaXI8RXhwcmVz
c2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+LCBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5h
cnlPcEluZm8+KTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBp
bnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VC
aW5hcnlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQgdG9rZW4sIHN0
ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4sIHN0ZDo6cGFpcjxFeHByZXNz
aW9uTm9kZSosIEJpbmFyeU9wSW5mbz4pOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRnVuY3Rp
b25DYWxsTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGZ1bmMsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQg
ZW5kKTsKIAogICAgIEpTQzo6U291cmNlRWxlbWVudHMqIGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkg
eyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEpTQzo6U291cmNlRWxlbWVudHMoKTsgfQogCkBA
IC0xMjQsMTY4ICsxMjQsMTY4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kVG9Db21tYShD
b21tYU5vZGUqIGNvbW1hTm9kZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgY29tbWFOb2RlLT5h
cHBlbmQoZXhwcik7IH0KIAotICAgIENvbW1hTm9kZSogY3JlYXRlQ29tbWFFeHByKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogcmhzKSB7IHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29tbWFOb2RlKGxpbmVOdW1iZXIsIGxocywgcmhzKTsgfQot
Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VBc3NpZ25Ob2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBs
ZWZ0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBp
bnQgZGl2b3QsIGludCBlbmQpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlUHJlZml4Tm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQg
ZGl2b3QsIGludCBlbmQpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlUG9zdGZpeE5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRp
dm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZVR5cGVPZk5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VEZWxl
dGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSosIGludCBzdGFydCwgaW50IGRp
dm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZU5lZ2F0ZU5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXR3
aXNlTm90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqKTsKLSAgICBFeHByZXNz
aW9uTm9kZSogbWFrZU11bHROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVm
dCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAg
IEV4cHJlc3Npb25Ob2RlKiBtYWtlRGl2Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZU1vZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VBZGROb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlU3ViTm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdFhPck5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSog
cmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1h
a2VCaXRBbmROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlQml0T3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVm
dCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAg
IEV4cHJlc3Npb25Ob2RlKiBtYWtlTGVmdFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZVJpZ2h0U2hpZnROb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlVVJpZ2h0U2hp
ZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotCi0gICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZUxvZ2ljYWxOb3QoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9naWNhbE5vdE5vZGUobGluZU51bWJlciwg
ZXhwcik7IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlVW5hcnlQbHVzKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVu
YXJ5UGx1c05vZGUobGluZU51bWJlciwgZXhwcik7IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlVm9pZChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgQ29tbWFO
b2RlKiBjcmVhdGVDb21tYUV4cHIoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiByaHMpIHsgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBDb21tYU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMsIHJocyk7
IH0KKworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQXNzaWduTm9kZShpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIE9wZXJhdG9yLCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgbGVmdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZVByZWZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsK
KyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVBvc3RmaXhOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCBpbnQgc3RhcnQsIGludCBk
aXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VUeXBlT2ZOb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSopOworICAgIEV4cHJl
c3Npb25Ob2RlKiBtYWtlRGVsZXRlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAg
RXhwcmVzc2lvbk5vZGUqIG1ha2VOZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSopOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0d2lz
ZU5vdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
Kik7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VNdWx0Tm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZURp
dk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBs
ZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VNb2ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQWRkTm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHBy
ZXNzaW9uTm9kZSogbWFrZVN1Yk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRYT3JOb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlQml0QW5kTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdE9yTm9kZShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Np
b25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZUxlZnRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VSaWdodFNoaWZ0Tm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHBy
ZXNzaW9uTm9kZSogbWFrZVVSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKworICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVMb2dp
Y2FsTm90KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxOb3ROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgZXhwcik7IH0KKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlVW5h
cnlQbHVzKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBleHByKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVWb2lk
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikK
ICAgICB7CiAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIFZvaWROb2RlKGxpbmVOdW1iZXIsIGV4cHIpOworICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIFZvaWROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcik7
CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2RlKiB0aGlzRXhwcihpbnQgbGluZU51bWJlcikKKyAg
ICBFeHByZXNzaW9uTm9kZSogdGhpc0V4cHIoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpCiAgICAgewogICAgICAgICB1c2VzVGhpcygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIFRoaXNOb2RlKGxpbmVOdW1iZXIpOworICAgICAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIFRoaXNOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAgICAgfQotICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVSZXNvbHZlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCwgaW50IHN0YXJ0KQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVSZXNv
bHZlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCwgaW50IHN0YXJ0KQogICAgIHsKICAgICAgICAgaWYgKG1fZ2xvYmFsRGF0YS0+cHJvcGVy
dHlOYW1lcy0+YXJndW1lbnRzID09ICppZGVudCkKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMo
KTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBSZXNvbHZlTm9kZShsaW5lTnVt
YmVyLCAqaWRlbnQsIHN0YXJ0KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBS
ZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICppZGVudCwgc3RhcnQpOwogICAg
IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQgbGluZU51bWJl
cikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE9iamVjdExpdGVyYWxOb2RlKGxpbmVOdW1i
ZXIpOyB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU9iamVjdExpdGVyYWwoaW50IGxpbmVO
dW1iZXIsIFByb3BlcnR5TGlzdE5vZGUqIHByb3BlcnRpZXMpIHsgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBPYmplY3RMaXRlcmFsTm9kZShsaW5lTnVtYmVyLCBwcm9wZXJ0aWVzKTsgfQorICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVPYmplY3RMaXRlcmFsKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgT2JqZWN0TGl0ZXJhbE5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVPYmplY3RMaXRlcmFsKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBQcm9wZXJ0
eUxpc3ROb2RlKiBwcm9wZXJ0aWVzKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgT2JqZWN0
TGl0ZXJhbE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBwcm9wZXJ0aWVzKTsgfQogCi0g
ICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5KGludCBsaW5lTnVtYmVyLCBpbnQgZWxpc2lv
bnMpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5KGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBpbnQgZWxpc2lvbnMpCiAgICAgewogICAgICAgICBpZiAoZWxpc2lvbnMp
CiAgICAgICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBBcnJheU5vZGUobGluZU51bWJlciwgZWxpc2lvbnMpOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGVs
aXNpb25zKTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxp
bmVOdW1iZXIsIEVsZW1lbnROb2RlKiBlbGVtcykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IEFycmF5Tm9kZShsaW5lTnVtYmVyLCBlbGVtcyk7IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIGludCBlbGlzaW9ucywgRWxlbWVudE5vZGUqIGVsZW1z
KQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJheShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgRWxlbWVudE5vZGUqIGVsZW1zKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgQXJyYXlOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZWxlbXMpOyB9CisgICAgRXhw
cmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBpbnQgZWxpc2lvbnMsIEVsZW1lbnROb2RlKiBlbGVtcykKICAgICB7CiAgICAgICAgIGlmIChl
bGlzaW9ucykKICAgICAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5lTnVtYmVyLCBlbGlzaW9ucywgZWxlbXMpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGVsaXNpb25zLCBlbGVtcyk7CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVOdW1iZXJFeHByKGludCBsaW5lTnVtYmVyLCBkb3VibGUgZCkKKyAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlTnVtYmVyRXhwcihpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgZG91YmxlIGQpCiAgICAgewogICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdW1iZXJOb2RlKGxpbmVOdW1iZXIsIGQpOworICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bWJlck5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBkKTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlU3RyaW5nKGlu
dCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBzdHJpbmcpCisgICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZVN0cmluZyhpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3Qg
SWRlbnRpZmllciogc3RyaW5nKQogICAgIHsKICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgU3RyaW5nTm9kZShsaW5lTnVtYmVyLCAqc3Ry
aW5nKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBTdHJpbmdOb2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgKnN0cmluZyk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZUJvb2xlYW4oaW50IGxpbmVOdW1iZXIsIGJvb2wgYikKKyAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlQm9vbGVhbihpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9v
bCBiKQogICAgIHsKICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgQm9vbGVhbk5vZGUobGluZU51bWJlciwgYik7CisgICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgQm9vbGVhbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBiKTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTnVsbChpbnQgbGluZU51
bWJlcikKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTnVsbChpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bGxOb2RlKGxpbmVOdW1iZXIpOworICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bGxOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
cik7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogcHJvcGVy
dHksIGJvb2wgcHJvcGVydHlIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGlu
dCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9u
Tm9kZSogcHJvcGVydHksIGJvb2wgcHJvcGVydHlIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBp
bnQgZGl2b3QsIGludCBlbmQpCiAgICAgewotICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBu
b2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEJyYWNrZXRBY2Nlc3Nvck5vZGUobGluZU51bWJlciwg
YmFzZSwgcHJvcGVydHksIHByb3BlcnR5SGFzQXNzaWdubWVudHMpOworICAgICAgICBCcmFja2V0
QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEJyYWNrZXRBY2Nlc3Nvck5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBiYXNlLCBwcm9wZXJ0eSwgcHJvcGVydHlIYXNB
c3NpZ25tZW50cyk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBk
aXZvdCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZURvdEFjY2VzcyhpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50
IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRG90QWNjZXNzKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciogcHJvcGVydHksIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogICAgIHsKLSAgICAg
ICAgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIERvdEFjY2Vzc29y
Tm9kZShsaW5lTnVtYmVyLCBiYXNlLCAqcHJvcGVydHkpOworICAgICAgICBEb3RBY2Nlc3Nvck5v
ZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRG90QWNjZXNzb3JOb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgYmFzZSwgKnByb3BlcnR5KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9j
YXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAg
ICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlUmVnRXhwKGludCBsaW5lTnVtYmVyLCBj
b25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50IHN0
YXJ0KQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVSZWdFeHAoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZp
ZXImIGZsYWdzLCBpbnQgc3RhcnQpCiAgICAgewogICAgICAgICBpZiAoWWFycjo6Y2hlY2tTeW50
YXgocGF0dGVybi51c3RyaW5nKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIFJl
Z0V4cE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVnRXhwTm9kZShsaW5lTnVtYmVy
LCBwYXR0ZXJuLCBmbGFncyk7CisgICAgICAgIFJlZ0V4cE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgUmVnRXhwTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHBhdHRlcm4sIGZs
YWdzKTsKICAgICAgICAgaW50IHNpemUgPSBwYXR0ZXJuLmxlbmd0aCgpICsgMjsgLy8gKyAyIGZv
ciB0aGUgdHdvIC8ncwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwg
c3RhcnQgKyBzaXplLCBzdGFydCArIHNpemUpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9
CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTmV3RXhwcihpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3VtZW50cywgaW50IHN0YXJ0LCBp
bnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU5ld0V4cHIoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1
bWVudHNOb2RlKiBhcmd1bWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogICAg
IHsKLSAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTmV3RXhw
ck5vZGUobGluZU51bWJlciwgZXhwciwgYXJndW1lbnRzKTsKKyAgICAgICAgTmV3RXhwck5vZGUq
IG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTmV3RXhwck5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBleHByLCBhcmd1bWVudHMpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihu
b2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAot
ICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdFeHByKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBj
cmVhdGVOZXdFeHByKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgTmV3RXhwck5v
ZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTmV3RXhwck5vZGUobGluZU51bWJlciwgZXhw
cik7CisgICAgICAgIE5ld0V4cHJOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIE5ld0V4
cHJOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcik7CiAgICAgICAgIHNldEV4Y2Vw
dGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBlbmQsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2Rl
OwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVDb25kaXRpb25hbEV4cHIoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIEV4cHJlc3Npb25Ob2RlKiBs
aHMsIEV4cHJlc3Npb25Ob2RlKiByaHMpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUNvbmRp
dGlvbmFsRXhwcihpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGNvbmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIHJocykK
ICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uZGl0aW9uYWxOb2Rl
KGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgbGhzLCByaHMpOworICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIENvbmRpdGlvbmFsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNv
bmRpdGlvbiwgbGhzLCByaHMpOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVB
c3NpZ25SZXNvbHZlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhw
cmVzc2lvbk5vZGUqIHJocywgYm9vbCByaHNIYXNBc3NpZ25tZW50LCBpbnQgc3RhcnQsIGludCBk
aXZvdCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXNzaWduUmVzb2x2ZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEV4cHJlc3Npb25Ob2RlKiByaHMsIGJvb2wgcmhzSGFzQXNzaWdubWVudCwgaW50IHN0YXJ0LCBp
bnQgZGl2b3QsIGludCBlbmQpCiAgICAgewogICAgICAgICBpZiAocmhzLT5pc0Z1bmNFeHByTm9k
ZSgpKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4ocmhzKS0+Ym9keSgp
LT5zZXRJbmZlcnJlZE5hbWUoaWRlbnQpOwotICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9k
ZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25SZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBpZGVu
dCwgcmhzLCByaHNIYXNBc3NpZ25tZW50KTsKKyAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5v
ZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBpZGVudCwgcmhzLCByaHNIYXNBc3NpZ25tZW50KTsKICAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4g
bm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rpb25FeHByKGlu
dCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBi
b2R5LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJzLCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xv
c2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKKyAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rpb25FeHByKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBQ
YXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJzLCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFj
ZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKICAgICB7Ci0gICAgICAg
IEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNFeHByTm9kZShs
aW5lTnVtYmVyLCAqbmFtZSwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5C
cmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtZXRlcnMpOwotICAg
ICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUpOworICAgICAgICBG
dW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCAqbmFtZSwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHBy
ZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFt
ZXRlcnMpOworICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUs
IGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgRnVu
Y3Rpb25Cb2R5Tm9kZSogY3JlYXRlRnVuY3Rpb25Cb2R5KGludCBsaW5lTnVtYmVyLCBib29sIGlu
U3RyaWN0Q29udGV4dCkKKyAgICBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGVGdW5jdGlvbkJvZHko
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX2dsb2JhbERh
dGEsIGxpbmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCk7CisgICAgICAgIHJldHVybiBGdW5jdGlv
bkJvZHlOb2RlOjpjcmVhdGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IGluU3RyaWN0Q29udGV4dCk7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlIDxib29sPiBQcm9w
ZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoaW50IGxpbmVOdW1iZXIsIFBy
b3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBQYXJhbWV0ZXJO
b2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGlu
dCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQorICAg
IHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVy
dHkoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFByb3BlcnR5Tm9kZTo6VHlwZSB0
eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0
aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBp
bnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQogICAgIHsKICAgICAgICAgQVNTRVJU
KG5hbWUpOwotICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUp
OworICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUsIGNvbHVt
bk51bWJlcik7CiAgICAgICAgIGJvZHktPnNldEluZmVycmVkTmFtZSgqbmFtZSk7Ci0gICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwgKm5h
bWUsIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobGluZU51bWJlciwgbV9nbG9iYWxE
YXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5z
dWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSks
IHBhcmFtcyksIHR5cGUpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3Bl
cnR5Tm9kZShtX2dsb2JhbERhdGEsICpuYW1lLCBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4cHJO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVz
LT5udWxsSWRlbnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5C
cmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtcyksIHR5cGUpOwog
ICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0
ZXJPclNldHRlclByb3BlcnR5KEpTR2xvYmFsRGF0YSosIGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0
eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVu
Y3Rpb25Cb2R5Tm9kZSogYm9keSwgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3Ms
IGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCisgICAgdGVtcGxhdGUgPGJvb2w+
IFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShKU0dsb2JhbERhdGEq
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUHJvcGVydHlOb2RlOjpUeXBlIHR5
cGUsIGRvdWJsZSBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUq
IGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0
TGluZSwgaW50IGJvZHlFbmRMaW5lKQogICAgIHsKLSAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlT
dGFydExpbmUsIGJvZHlFbmRMaW5lKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCBuYW1lLCBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVu
Y0V4cHJOb2RlKGxpbmVOdW1iZXIsIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElk
ZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3Ms
IGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbXMpLCB0eXBlKTsKKyAgICAgICAg
Ym9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERh
dGEsIG5hbWUsIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBi
b2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNl
UG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1zKSwgdHlwZSk7CiAgICAgfQogCiAgICAgQXJndW1l
bnRzTm9kZSogY3JlYXRlQXJndW1lbnRzKCkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFy
Z3VtZW50c05vZGUoKTsgfQogICAgIEFyZ3VtZW50c05vZGUqIGNyZWF0ZUFyZ3VtZW50cyhBcmd1
bWVudExpc3ROb2RlKiBhcmdzKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRz
Tm9kZShhcmdzKTsgfQotICAgIEFyZ3VtZW50TGlzdE5vZGUqIGNyZWF0ZUFyZ3VtZW50c0xpc3Qo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBhcmcpIHsgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxpbmVOdW1iZXIsIGFyZyk7IH0KLSAgICBBcmd1bWVu
dExpc3ROb2RlKiBjcmVhdGVBcmd1bWVudHNMaXN0KGludCBsaW5lTnVtYmVyLCBBcmd1bWVudExp
c3ROb2RlKiBhcmdzLCBFeHByZXNzaW9uTm9kZSogYXJnKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVtYmVyLCBhcmdzLCBhcmcpOyB9CisgICAgQXJn
dW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRzTGlzdChpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGFyZykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEFyZ3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBhcmcpOyB9Cisg
ICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRzTGlzdChpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgQXJndW1lbnRMaXN0Tm9kZSogYXJncywgRXhwcmVzc2lvbk5vZGUq
IGFyZykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBhcmdzLCBhcmcpOyB9CiAKICAgICB0ZW1wbGF0ZSA8Ym9vbD4g
UHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5h
bWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSkKICAgICB7
CkBAIC0yOTQsOCArMjk0LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERhdGEsICpwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5
cGUpOwogICAgIH0KICAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9w
ZXJ0eShKU0dsb2JhbERhdGEqLCBkb3VibGUgcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSog
bm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUpOyB9
Ci0gICAgUHJvcGVydHlMaXN0Tm9kZSogY3JlYXRlUHJvcGVydHlMaXN0KGludCBsaW5lTnVtYmVy
LCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJv
cGVydHlMaXN0Tm9kZShsaW5lTnVtYmVyLCBwcm9wZXJ0eSk7IH0KLSAgICBQcm9wZXJ0eUxpc3RO
b2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5Tm9kZSogcHJv
cGVydHksIFByb3BlcnR5TGlzdE5vZGUqIHRhaWwpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBQcm9wZXJ0eUxpc3ROb2RlKGxpbmVOdW1iZXIsIHByb3BlcnR5LCB0YWlsKTsgfQorICAgIFBy
b3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0eSkgeyByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIFByb3BlcnR5TGlzdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBwcm9wZXJ0
eSk7IH0KKyAgICBQcm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFByb3BlcnR5Tm9kZSogcHJvcGVydHksIFByb3BlcnR5
TGlzdE5vZGUqIHRhaWwpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eUxpc3RO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgcHJvcGVydHksIHRhaWwpOyB9CiAKICAgICBF
bGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExpc3QoaW50IGVsaXNpb25zLCBFeHByZXNzaW9uTm9k
ZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVsZW1lbnROb2RlKGVsaXNpb25z
LCBleHByKTsgfQogICAgIEVsZW1lbnROb2RlKiBjcmVhdGVFbGVtZW50TGlzdChFbGVtZW50Tm9k
ZSogZWxlbXMsIGludCBlbGlzaW9ucywgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBFbGVtZW50Tm9kZShlbGVtcywgZWxpc2lvbnMsIGV4cHIpOyB9CkBA
IC0zMDksMTkxICszMDksMTkxIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50
cyhGdW5jdGlvbkJvZHlOb2RlKiBub2RlKSB7IG5vZGUtPnNldFVzZXNBcmd1bWVudHMoKTsgfQog
Ci0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFt
ZXRlck5vZGUqIHBhcmFtZXRlcnMsIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9z
LCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0
ZXJOb2RlKiBwYXJhbWV0ZXJzLCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywg
aW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKICAgICB7Ci0gICAgICAgIEZ1bmNE
ZWNsTm9kZSogZGVjbCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRGVjbE5vZGUobGluZU51bWJl
ciwgKm5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3Ms
IGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgRnVu
Y0RlY2xOb2RlKiBkZWNsID0gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNEZWNsTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Np
b24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVy
cyk7CiAgICAgICAgIGlmICgqbmFtZSA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFy
Z3VtZW50cykKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKICAgICAgICAgbV9zY29wZS5t
X2Z1bmNEZWNsYXJhdGlvbnMtPmRhdGEuYXBwZW5kKGRlY2wtPmJvZHkoKSk7Ci0gICAgICAgIGJv
ZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSk7CisgICAgICAgIGJvZHktPnNl
dExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAg
cmV0dXJuIGRlY2w7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQmxvY2tTdGF0
ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEpTQzo6U291cmNlRWxlbWVudHMqIGVsZW1lbnRzLCBpbnQg
c3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCbG9ja1N0
YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgSlNDOjpTb3VyY2VFbGVt
ZW50cyogZWxlbWVudHMsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAg
ICAgQmxvY2tOb2RlKiBibG9jayA9IG5ldyAobV9nbG9iYWxEYXRhKSBCbG9ja05vZGUobGluZU51
bWJlciwgZWxlbWVudHMpOwotICAgICAgICBibG9jay0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGlu
ZSk7CisgICAgICAgIEJsb2NrTm9kZSogYmxvY2sgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQmxvY2tO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZWxlbWVudHMpOworICAgICAgICBibG9jay0+
c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJu
IGJsb2NrOwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUV4cHJTdGF0ZW1lbnQo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQp
CisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRXhwclN0YXRlbWVudChpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVu
ZCkKICAgICB7Ci0gICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgRXhwclN0YXRlbWVudE5vZGUobGluZU51bWJlciwgZXhwcik7Ci0gICAgICAgIHJl
c3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQpOworICAgICAgICBFeHByU3RhdGVtZW50Tm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEV4cHJTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgZXhwcik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGNv
bHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlSWZTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5k
KQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2Rl
KiB0cnVlQmxvY2ssIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIElmTm9kZSog
cmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIElmTm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24s
IHRydWVCbG9jayk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQpOworICAgICAg
ICBJZk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBJZk5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBjb25kaXRpb24sIHRydWVCbG9jayk7CisgICAgICAgIHJlc3VsdC0+c2V0
TG9jKHN0YXJ0LCBlbmQsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlSWZTdGF0ZW1lbnQoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywg
U3RhdGVtZW50Tm9kZSogZmFsc2VCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnVlQmxvY2ss
IFN0YXRlbWVudE5vZGUqIGZhbHNlQmxvY2ssIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0g
ICAgICAgIElmTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIElmRWxzZU5vZGUobGlu
ZU51bWJlciwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIGZhbHNlQmxvY2spOwotICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAgICAgICAgSWZOb2RlKiByZXN1bHQgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgSWZFbHNlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlv
biwgdHJ1ZUJsb2NrLCBmYWxzZUJsb2NrKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQs
IGVuZCwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAg
ICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JMb29wKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogaW5pdGlhbGl6ZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIEV4cHJlc3Npb25O
b2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBib29sIGIsIGludCBzdGFydCwg
aW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JMb29wKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIsIEV4cHJlc3Np
b25Ob2RlKiBjb25kaXRpb24sIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBz
dGF0ZW1lbnRzLCBib29sIGIsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIEZv
ck5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JOb2RlKGxpbmVOdW1iZXIsIGlu
aXRpYWxpemVyLCBjb25kaXRpb24sIGl0ZXIsIHN0YXRlbWVudHMsIGIpOwotICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAgICAgICAgRm9yTm9kZSogcmVzdWx0ID0gbmV3ICht
X2dsb2JhbERhdGEpIEZvck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBpbml0aWFsaXpl
ciwgY29uZGl0aW9uLCBpdGVyLCBzdGF0ZW1lbnRzLCBiKTsKKyAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnQsIGVuZCwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoaW50IGxpbmVOdW1iZXIs
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIsIEV4
cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgc3RhcnQs
IGludCBkaXZvdCwgaW50IGVuZCwgaW50IGluaXRTdGFydCwgaW50IGluaXRFbmQsIGludCBzdGFy
dExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQs
IEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplciwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRl
bWVudE5vZGUqIHN0YXRlbWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCBpbnQg
aW5pdFN0YXJ0LCBpbnQgaW5pdEVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAg
ewotICAgICAgICBGb3JJbk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JJbk5v
ZGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCAqaWRlbnQsIGluaXRpYWxpemVyLCBpdGVyLCBz
dGF0ZW1lbnRzLCBpbml0U3RhcnQsIGluaXRTdGFydCAtIHN0YXJ0LCBpbml0RW5kIC0gaW5pdFN0
YXJ0KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAg
ICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9ySW5Ob2RlKG1fZ2xv
YmFsRGF0YSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAqaWRlbnQsIGluaXRpYWxpemVyLCBp
dGVyLCBzdGF0ZW1lbnRzLCBpbml0U3RhcnQsIGluaXRTdGFydCAtIHN0YXJ0LCBpbml0RW5kIC0g
aW5pdFN0YXJ0KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBj
b2x1bW5OdW1iZXIpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIHN0YXJ0
LCBkaXZvdCArIDEsIGVuZCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50
cywgaW50IGVTdGFydCwgaW50IGVEaXZvdCwgaW50IGVFbmQsIGludCBzdGFydCwgaW50IGVuZCkK
KyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBT
dGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgZVN0YXJ0LCBpbnQgZURpdm90LCBpbnQgZUVu
ZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9ySW5Ob2RlKG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlciwg
bGhzLCBpdGVyLCBzdGF0ZW1lbnRzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVu
ZCk7CisgICAgICAgIEZvckluTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZvcklu
Tm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLCBpdGVyLCBz
dGF0ZW1lbnRzKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgY29sdW1uTnVt
YmVyKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVEaXZv
dCwgZUVuZCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlRW1wdHlTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIpIHsgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBFbXB0eVN0YXRlbWVudE5vZGUobGluZU51bWJlcik7IH0KKyAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVFbXB0eVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVtcHR5U3RhdGVtZW50Tm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOyB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVW
YXJTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3Rh
cnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlVmFyU3RhdGVtZW50KGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0
YXJ0LCBpbnQgZW5kKQogICAgIHsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogcmVzdWx0OwogICAg
ICAgICBpZiAoIWV4cHIpCi0gICAgICAgICAgICByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
RW1wdHlTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpOworICAgICAgICAgICAgcmVzdWx0ID0gbmV3
IChtX2dsb2JhbERhdGEpIEVtcHR5U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgVmFyU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBleHByKTsKLSAgICAgICAgcmVzdWx0LT5z
ZXRMb2Moc3RhcnQsIGVuZCk7CisgICAgICAgICAgICByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgVmFyU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIpOworICAg
ICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVJldHVyblN0
YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHJlc3Npb24sIGludCBl
U3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1l
bnROb2RlKiBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwg
aW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBSZXR1cm5Ob2RlKiBy
ZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmV0dXJuTm9kZShsaW5lTnVtYmVyLCBleHByZXNz
aW9uKTsKKyAgICAgICAgUmV0dXJuTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFJl
dHVybk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByZXNzaW9uKTsKICAgICAgICAg
c2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQpOwotICAgICAg
ICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXN1bHQtPnNl
dExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQnJlYWtTdGF0ZW1lbnQo
aW50IGxpbmVOdW1iZXIsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQg
ZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFy
dExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQnJlYWtOb2RlKiByZXN1bHQgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgQnJlYWtOb2RlKG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlcik7Cisg
ICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEJyZWFrTm9kZSht
X2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHNldEV4Y2Vw
dGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0
LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3Rh
cnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJyZWFrU3RhdGVtZW50KGludCBsaW5l
TnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgaW50IGVTdGFydCwgaW50IGVFbmQsIGlu
dCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJyZWFr
U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRM
aW5lKQogICAgIHsKLSAgICAgICAgQnJlYWtOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgQnJlYWtOb2RlKGxpbmVOdW1iZXIsICppZGVudCk7CisgICAgICAgIEJyZWFrTm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEJyZWFrTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsICppZGVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0
LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5l
KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1i
ZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgZVN0YXJ0LCBpbnQg
ZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3Jl
YXRlQ29udGludWVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGlu
dCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0g
ICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnRpbnVl
Tm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIpOworICAgICAgICBDb250aW51ZU5vZGUqIHJl
c3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb250aW51ZU5vZGUobV9nbG9iYWxEYXRhLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1
bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGlu
ZSwgZW5kTGluZSk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwg
Y29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVDb250aW51ZVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBp
bnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVDb250aW51ZVN0YXRlbWVudChp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQs
IGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7
Ci0gICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnRp
bnVlTm9kZShsaW5lTnVtYmVyLCAqaWRlbnQpOworICAgICAgICBDb250aW51ZU5vZGUqIHJlc3Vs
dCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb250aW51ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCAqaWRlbnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFy
dCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGlu
ZSk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVt
YmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2Rl
KiBjcmVhdGVUcnlTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIFN0YXRlbWVudE5vZGUqIHRyeUJs
b2NrLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywg
U3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkK
KyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVUcnlTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywgU3RhdGVtZW50Tm9kZSogZmluYWxs
eUJsb2NrLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIFRyeU5v
ZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBUcnlOb2RlKGxpbmVOdW1iZXIsIHRyeUJs
b2NrLCAqaWRlbnQsIGNhdGNoQmxvY2ssIGZpbmFsbHlCbG9jayk7CisgICAgICAgIFRyeU5vZGUq
IHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBUcnlOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgdHJ5QmxvY2ssICppZGVudCwgY2F0Y2hCbG9jaywgZmluYWxseUJsb2NrKTsKICAgICAg
ICAgaWYgKGNhdGNoQmxvY2spCiAgICAgICAgICAgICB1c2VzQ2F0Y2goKTsKLSAgICAgICAgcmVz
dWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
c3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVN3aXRjaFN0YXRlbWVudChpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIENsYXVzZUxpc3ROb2RlKiBmaXJzdENs
YXVzZXMsIENhc2VDbGF1c2VOb2RlKiBkZWZhdWx0Q2xhdXNlLCBDbGF1c2VMaXN0Tm9kZSogc2Vj
b25kQ2xhdXNlcywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlU3dpdGNoU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwciwgQ2xhdXNlTGlzdE5vZGUqIGZpcnN0Q2xhdXNlcywgQ2Fz
ZUNsYXVzZU5vZGUqIGRlZmF1bHRDbGF1c2UsIENsYXVzZUxpc3ROb2RlKiBzZWNvbmRDbGF1c2Vz
LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAgICAgICAgIENhc2VCbG9ja05v
ZGUqIGNhc2VzID0gbmV3IChtX2dsb2JhbERhdGEpIENhc2VCbG9ja05vZGUoZmlyc3RDbGF1c2Vz
LCBkZWZhdWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2VzKTsKLSAgICAgICAgU3dpdGNoTm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFN3aXRjaE5vZGUobGluZU51bWJlciwgZXhwciwgY2Fz
ZXMpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAg
ICBTd2l0Y2hOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgU3dpdGNoTm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIsIGNhc2VzKTsKKyAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVdoaWxlU3RhdGVtZW50KGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVt
ZW50LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVh
dGVXaGlsZVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0TGluZSwg
aW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBXaGlsZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBXaGlsZU5vZGUobGluZU51bWJlciwgZXhwciwgc3RhdGVtZW50KTsKLSAgICAg
ICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgV2hpbGVOb2Rl
KiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgV2hpbGVOb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgZXhwciwgc3RhdGVtZW50KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQoaW50IGxpbmVO
dW1iZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGlu
dCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZURvV2hp
bGVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFN0YXRlbWVudE5v
ZGUqIHN0YXRlbWVudCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydExpbmUsIGludCBl
bmRMaW5lKQogICAgIHsKLSAgICAgICAgRG9XaGlsZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9i
YWxEYXRhKSBEb1doaWxlTm9kZShsaW5lTnVtYmVyLCBzdGF0ZW1lbnQsIGV4cHIpOwotICAgICAg
ICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICBEb1doaWxlTm9k
ZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIERvV2hpbGVOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgc3RhdGVtZW50LCBleHByKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3Rh
cnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUxhYmVsU3RhdGVtZW50KGludCBsaW5l
TnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50
LCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlTGFiZWxTdGF0
ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50LCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBzdGFydCwgaW50IGVuZCkKICAg
ICB7Ci0gICAgICAgIExhYmVsTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIExhYmVs
Tm9kZShsaW5lTnVtYmVyLCAqaWRlbnQsIHN0YXRlbWVudCk7CisgICAgICAgIExhYmVsTm9kZSog
cmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIExhYmVsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsICppZGVudCwgc3RhdGVtZW50KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24o
cmVzdWx0LCBzdGFydCwgZW5kLCBlbmQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVdpdGhTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBzdGFy
dCwgaW50IGVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlV2l0aFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0
LCBpbnQgZW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAgICAgICAgIHVz
ZXNXaXRoKCk7Ci0gICAgICAgIFdpdGhOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
V2l0aE5vZGUobGluZU51bWJlciwgZXhwciwgc3RhdGVtZW50LCBlbmQsIGVuZCAtIHN0YXJ0KTsK
LSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgV2l0
aE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBXaXRoTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGV4cHIsIHN0YXRlbWVudCwgZW5kLCBlbmQgLSBzdGFydCk7CisgICAgICAg
IHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9ICAgIAogICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZVRocm93U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwg
aW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVUaHJvd1N0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCwgaW50IHN0
YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBUaHJvd05vZGUqIHJlc3VsdCA9
IG5ldyAobV9nbG9iYWxEYXRhKSBUaHJvd05vZGUobGluZU51bWJlciwgZXhwcik7Ci0gICAgICAg
IHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIFRocm93Tm9kZSog
cmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFRocm93Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIGV4cHIpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUs
IGNvbHVtbk51bWJlcik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3Rh
cnQsIGVuZCwgZW5kKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlRGVidWdnZXIoaW50IGxpbmVOdW1iZXIsIGludCBzdGFydExp
bmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZURlYnVnZ2VyKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkK
ICAgICB7Ci0gICAgICAgIERlYnVnZ2VyU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2ds
b2JhbERhdGEpIERlYnVnZ2VyU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKTsKLSAgICAgICAgcmVz
dWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgRGVidWdnZXJTdGF0ZW1l
bnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVidWdnZXJTdGF0ZW1lbnROb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0
TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29uc3RTdGF0ZW1lbnQoaW50IGxp
bmVOdW1iZXIsIENvbnN0RGVjbE5vZGUqIGRlY2xzLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGlu
ZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVDb25zdFN0YXRlbWVudChpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgQ29uc3REZWNsTm9kZSogZGVjbHMsIGludCBzdGFydExpbmUs
IGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQ29uc3RTdGF0ZW1lbnROb2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3RTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGRlY2xz
KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAg
Q29uc3RTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3RTdGF0
ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZGVjbHMpOworICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgQ29uc3REZWNsTm9kZSogYXBwZW5kQ29uc3REZWNs
KGludCBsaW5lTnVtYmVyLCBDb25zdERlY2xOb2RlKiB0YWlsLCBjb25zdCBJZGVudGlmaWVyKiBu
YW1lLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIpCisgICAgQ29uc3REZWNsTm9kZSogYXBw
ZW5kQ29uc3REZWNsKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBDb25zdERlY2xO
b2RlKiB0YWlsLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBFeHByZXNzaW9uTm9kZSogaW5pdGlh
bGl6ZXIpCiAgICAgewotICAgICAgICBDb25zdERlY2xOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgQ29uc3REZWNsTm9kZShsaW5lTnVtYmVyLCAqbmFtZSwgaW5pdGlhbGl6ZXIpOwor
ICAgICAgICBDb25zdERlY2xOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3RE
ZWNsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICpuYW1lLCBpbml0aWFsaXplcik7CiAg
ICAgICAgIGlmICh0YWlsKQogICAgICAgICAgICAgdGFpbC0+bV9uZXh0ID0gcmVzdWx0OwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTExLDcgKzUxMSw3IEBAIHB1YmxpYzoKICAgICAgICAg
bV9zY29wZS5tX3ZhckRlY2xhcmF0aW9ucy0+ZGF0YS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaWRl
bnQsIGF0dHJzKSk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNvbWJpbmVDb21tYU5v
ZGVzKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGlzdCwgRXhwcmVzc2lvbk5vZGUq
IGluaXQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNvbWJpbmVDb21tYU5vZGVzKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGlzdCwgRXhwcmVzc2lvbk5v
ZGUqIGluaXQpCiAgICAgewogICAgICAgICBpZiAoIWxpc3QpCiAgICAgICAgICAgICByZXR1cm4g
aW5pdDsKQEAgLTUxOSw3ICs1MTksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxDb21tYU5vZGUqPihsaXN0KS0+YXBwZW5kKGluaXQpOwogICAgICAgICAgICAgcmV0dXJuIGxp
c3Q7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBDb21tYU5v
ZGUobGluZU51bWJlciwgbGlzdCwgaW5pdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgQ29tbWFOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGlzdCwgaW5pdCk7CiAg
ICAgfQogCiAgICAgaW50IGV2YWxDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZXZhbENvdW50OyB9
CkBAIC01NDcsMTAgKzU0NywxMCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChvcGVyYW5kU3Rh
Y2tEZXB0aCA+PSAwKTsKICAgICAgICAgbV9iaW5hcnlPcGVyYW5kU3RhY2sucmVzaXplKG1fYmlu
YXJ5T3BlcmFuZFN0YWNrLnNpemUoKSAtIGFtb3VudCk7CiAgICAgfQotICAgIHZvaWQgYXBwZW5k
QmluYXJ5T3BlcmF0aW9uKGludCBsaW5lTnVtYmVyLCBpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBp
bnQmLCBjb25zdCBCaW5hcnlPcGVyYW5kJiBsaHMsIGNvbnN0IEJpbmFyeU9wZXJhbmQmIHJocykK
KyAgICB2b2lkIGFwcGVuZEJpbmFyeU9wZXJhdGlvbihpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50JiwgY29uc3QgQmluYXJ5T3BlcmFu
ZCYgbGhzLCBjb25zdCBCaW5hcnlPcGVyYW5kJiByaHMpCiAgICAgewogICAgICAgICBvcGVyYW5k
U3RhY2tEZXB0aCsrOwotICAgICAgICBtX2JpbmFyeU9wZXJhbmRTdGFjay5hcHBlbmQoc3RkOjpt
YWtlX3BhaXIobWFrZUJpbmFyeU5vZGUobGluZU51bWJlciwgbV9iaW5hcnlPcGVyYXRvclN0YWNr
Lmxhc3QoKS5maXJzdCwgbGhzLCByaHMpLCBCaW5hcnlPcEluZm8obGhzLnNlY29uZCwgcmhzLnNl
Y29uZCkpKTsKKyAgICAgICAgbV9iaW5hcnlPcGVyYW5kU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKG1ha2VCaW5hcnlOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbV9iaW5hcnlPcGVy
YXRvclN0YWNrLmxhc3QoKS5maXJzdCwgbGhzLCByaHMpLCBCaW5hcnlPcEluZm8obGhzLnNlY29u
ZCwgcmhzLnNlY29uZCkpKTsKICAgICB9CiAgICAgdm9pZCBvcGVyYXRvclN0YWNrQXBwZW5kKGlu
dCYgb3BlcmF0b3JTdGFja0RlcHRoLCBpbnQgb3AsIGludCBwcmVjZWRlbmNlKQogICAgIHsKQEAg
LTU5Miw5ICs1OTIsOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzaWdubWVudEluZm9TdGFjay5h
cHBlbmQoQXNzaWdubWVudEluZm8obm9kZSwgc3RhcnQsIGRpdm90LCBhc3NpZ25tZW50Q291bnQs
IG9wKSk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFzc2lnbm1lbnQoaW50
IGxpbmVOdW1iZXIsIGludCYgYXNzaWdubWVudFN0YWNrRGVwdGgsIEV4cHJlc3Npb25Ob2RlKiBy
aHMsIGludCBpbml0aWFsQXNzaWdubWVudENvdW50LCBpbnQgY3VycmVudEFzc2lnbm1lbnRDb3Vu
dCwgaW50IGxhc3RUb2tlbkVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXNzaWdubWVu
dChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgaW50JiBhc3NpZ25tZW50U3RhY2tE
ZXB0aCwgRXhwcmVzc2lvbk5vZGUqIHJocywgaW50IGluaXRpYWxBc3NpZ25tZW50Q291bnQsIGlu
dCBjdXJyZW50QXNzaWdubWVudENvdW50LCBpbnQgbGFzdFRva2VuRW5kKQogICAgIHsKLSAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIHJlc3VsdCA9IG1ha2VBc3NpZ25Ob2RlKGxpbmVOdW1iZXIsIG1f
YXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9ub2RlLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2su
bGFzdCgpLm1fb3AsIHJocywgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX2luaXRBc3Np
Z25tZW50cyAhPSBpbml0aWFsQXNzaWdubWVudENvdW50LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2su
bGFzdCgpLm1faW5pdEFzc2lnbm1lbnRzICE9IGN1cnJlbnRBc3NpZ25tZW50Q291bnQsIG1fYXNz
aWdubWVudEluZm9TdGFjay5sYXN0KCkubV9zdGFydCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxh
c3QoKS5tX2Rpdm90ICsgMSwgbGFzdFRva2VuRW5kKTsKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IHJlc3VsdCA9IG1ha2VBc3NpZ25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbV9hc3Np
Z25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX25vZGUsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0
KCkubV9vcCwgcmhzLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1faW5pdEFzc2lnbm1l
bnRzICE9IGluaXRpYWxBc3NpZ25tZW50Q291bnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0
KCkubV9pbml0QXNzaWdubWVudHMgIT0gY3VycmVudEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25t
ZW50SW5mb1N0YWNrLmxhc3QoKS5tX3N0YXJ0LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgp
Lm1fZGl2b3QgKyAxLCBsYXN0VG9rZW5FbmQpOwogICAgICAgICBtX2Fzc2lnbm1lbnRJbmZvU3Rh
Y2sucmVtb3ZlTGFzdCgpOwogICAgICAgICBhc3NpZ25tZW50U3RhY2tEZXB0aC0tOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtNjM1LDkgKzYzNSw5IEBAIHByaXZhdGU6CiAgICAgICAgIG1f
ZXZhbENvdW50Kys7CiAgICAgICAgIG1fc2NvcGUubV9mZWF0dXJlcyB8PSBFdmFsRmVhdHVyZTsK
ICAgICB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bWJlcihpbnQgbGluZU51bWJlciwg
ZG91YmxlIGQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bWJlcihpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgZG91YmxlIGQpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIE51bWJlck5vZGUobGluZU51bWJlciwgZCk7CisgICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgTnVtYmVyTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IGQpOwogICAgIH0KICAgICAKICAgICBKU0dsb2JhbERhdGEqIG1fZ2xvYmFsRGF0YTsKQEAgLTY1
MCwzMyArNjUwLDMzIEBAIHByaXZhdGU6CiAgICAgaW50IG1fZXZhbENvdW50OwogfTsKIAotRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VUeXBlT2ZOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwcikKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlVHlw
ZU9mTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIpCiB7CiAgICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNv
bHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZXhwcik7Ci0gICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVHlwZU9mUmVzb2x2ZU5vZGUobGluZU51bWJl
ciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBUeXBlT2ZSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHJlc29sdmUt
PmlkZW50aWZpZXIoKSk7CiAgICAgfQotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVHlw
ZU9mVmFsdWVOb2RlKGxpbmVOdW1iZXIsIGV4cHIpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgVHlwZU9mVmFsdWVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcik7CiB9
CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGVsZXRlTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5k
KQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VEZWxldGVOb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBp
bnQgZGl2b3QsIGludCBlbmQpCiB7CiAgICAgaWYgKCFleHByLT5pc0xvY2F0aW9uKCkpCi0gICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlVmFsdWVOb2RlKGxpbmVOdW1iZXIs
IGV4cHIpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZVZhbHVlTm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIpOwogICAgIGlmIChleHByLT5pc1Jlc29s
dmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxS
ZXNvbHZlTm9kZSo+KGV4cHIpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERl
bGV0ZVJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBEZWxldGVSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHJlc29s
dmUtPmlkZW50aWZpZXIoKSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAg
ICB9CiAgICAgaWYgKGV4cHItPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJy
YWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JO
b2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlQnJh
Y2tldE5vZGUobGluZU51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQo
KSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBEZWxldGVCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGRpdm90LCBkaXZvdCAt
IHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIEFTU0VSVChleHByLT5pc0RvdEFjY2Vz
c29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFj
Y2Vzc29yTm9kZSo+KGV4cHIpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRl
RG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRpdm90
LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBEZWxldGVEb3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZG90LT5iYXNlKCks
IGRvdC0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwog
fQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBuKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VOZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogbikKIHsKICAgICBpZiAobi0+aXNOdW1iZXIoKSkgewogICAgICAgICBOdW1iZXJOb2Rl
KiBudW1iZXJOb2RlID0gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KG4pOwpAQCAtNjg0LDEyOCAr
Njg0LDEyOCBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBuKQogICAgICAgICByZXR1cm4gbnVtYmVyTm9k
ZTsKICAgICB9CiAKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE5lZ2F0ZU5vZGUobGlu
ZU51bWJlciwgbik7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOZWdhdGVOb2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbik7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWls
ZGVyOjptYWtlQml0d2lzZU5vdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXR3aXNlTm90Tm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCiB7CiAg
ICAgaWYgKGV4cHItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGlu
ZU51bWJlciwgfnRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIpLT52YWx1ZSgp
KSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCaXR3aXNlTm90Tm9kZShsaW5lTnVt
YmVyLCBleHByKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIH50b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByKS0+dmFsdWUo
KSkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0d2lzZU5vdE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBleHByKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxk
ZXI6Om1ha2VNdWx0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Np
b25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTXVsdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgZXhwcjEgPSBleHByMS0+c3RyaXBVbmFy
eVBsdXMoKTsKICAgICBleHByMiA9IGV4cHIyLT5zdHJpcFVuYXJ5UGx1cygpOwogCiAgICAgaWYg
KGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4g
Y3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSkt
PnZhbHVlKCkgKiBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgKiBzdGF0aWNfY2FzdDxOdW1iZXJO
b2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKIAogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBz
dGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpID09IDEpCi0gICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVtYmVyLCBleHByMik7
CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIyKTsKIAogICAgIGlmIChleHByMi0+aXNOdW1iZXIoKSAm
JiBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpID09IDEpCi0gICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVtYmVyLCBleHBy
MSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIxKTsKIAotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgTXVsdE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE11bHROb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAot
RXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VEaXZOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VEaXZOb2RlKGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGV4
cHIxID0gZXhwcjEtPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAgZXhwcjIgPSBleHByMi0+c3RyaXBV
bmFyeVBsdXMoKTsKIAogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1i
ZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBzdGF0aWNfY2Fz
dDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpIC8gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIyKS0+dmFsdWUoKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEaXZOb2Rl
KGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAg
IHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0aWNfY2Fz
dDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpIC8gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIyKS0+dmFsdWUoKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEaXZOb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VNb2ROb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VNb2ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAgZXhwcjIgPSBl
eHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKICAgICAKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkg
JiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51
bWJlciwgZm1vZChzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpLCBzdGF0
aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBNb2ROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBmbW9kKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCks
IHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIE1vZE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHBy
MSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZUFkZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHBy
ZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFkZE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigp
ICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVO
dW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgKyBzdGF0aWNf
Y2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKLSAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIEFkZE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgKyBzdGF0aWNf
Y2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKKyAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIEFkZE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIs
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZVN1Yk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9k
ZSogQVNUQnVpbGRlcjo6bWFrZVN1Yk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgZXhwcjEgPSBleHByMS0+c3RyaXBVbmFyeVBsdXMo
KTsKICAgICBleHByMiA9IGV4cHIyLT5zdHJpcFVuYXJ5UGx1cygpOwogCiAgICAgaWYgKGV4cHIx
LT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRl
TnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVl
KCkgLSBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKLSAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIFN1Yk5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVl
KCkgLSBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKKyAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIFN1Yk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBl
eHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSog
QVNUQnVpbGRlcjo6bWFrZUxlZnRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUxlZnRTaGlmdE5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4
cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3Jl
YXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4
cHIxKS0+dmFsdWUoKSkgPDwgKHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHBy
MiktPnZhbHVlKCkpICYgMHgxZikpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVm
dFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMp
OworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
dG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA8PCAodG9V
SW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7
CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMZWZ0U2hpZnROb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAot
RXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUmln
aHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQot
ICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nh
c3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOwotICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgUmlnaHRTaGlmdE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIx
KS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMikt
PnZhbHVlKCkpICYgMHgxZikpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmlnaHRT
aGlmdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVVSaWdo
dFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2Rl
KiBBU1RCdWlsZGVyOjptYWtlVVJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAm
JiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVt
YmVyLCB0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA+
PiAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAw
eDFmKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbnNpZ25lZFJpZ2h0U2hpZnRO
b2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAg
ICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0b1VJbnQz
MihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA+PiAodG9VSW50MzIo
c3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7CisgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0K
IAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRPck5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdE9y
Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsK
ICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAg
IHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1i
ZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSB8IHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9k
ZSo+KGV4cHIyKS0+dmFsdWUoKSkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0
T3JOb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0b0lu
dDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpIHwgdG9JbnQzMihz
dGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7CisgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBCaXRPck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHBy
MSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZUJpdEFuZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitF
eHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdEFuZE5vZGUoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051
bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVy
KGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFs
dWUoKSkgJiB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkp
KTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdEFuZE5vZGUobGluZU51bWJlciwg
ZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVt
YmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgJiB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5v
ZGUqPihleHByMiktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJp
dEFuZE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdFhP
ck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZUJpdFhPck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5p
c051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50
MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgXiB0b0ludDMyKHN0
YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIEJpdFhPck5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+
dmFsdWUoKSkgXiB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVl
KCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdFhPck5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQog
Ci1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQg
c3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlRnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGZ1bmMsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGludCBzdGFydCwgaW50IGRp
dm90LCBpbnQgZW5kKQogewogICAgIGlmICghZnVuYy0+aXNMb2NhdGlvbigpKQotICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShsaW5lTnVtYmVy
LCBmdW5jLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGZ1bmMsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQg
LSBkaXZvdCk7CiAgICAgaWYgKGZ1bmMtPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNv
bHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZnVuYyk7CiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIgPSByZXNvbHZlLT5pZGVudGlmaWVyKCk7
CiAgICAgICAgIGlmIChpZGVudGlmaWVyID09IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+
ZXZhbCkgewogICAgICAgICAgICAgdXNlc0V2YWwoKTsKLSAgICAgICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUobGluZU51bWJlciwgYXJncywgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgICAgICB9
Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsUmVzb2x2ZU5v
ZGUobGluZU51bWJlciwgaWRlbnRpZmllciwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVu
ZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNh
bGxSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGlkZW50aWZpZXIsIGFyZ3Ms
IGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIGlmIChmdW5j
LT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2Rl
KiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwotICAg
ICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBG
dW5jdGlvbkNhbGxCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNr
ZXQtPnN1YnNjcmlwdCgpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3Qp
OworICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxE
YXRhKSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJy
YWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGFyZ3MsIGRpdm90LCBkaXZvdCAt
IHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZv
KGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPmVuZE9mZnNldCgpKTsKICAgICAgICAgcmV0dXJu
IG5vZGU7CiAgICAgfQpAQCAtODEzLDExOCArODEzLDExOCBAQCBFeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKgogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JO
b2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9kZTsKICAgICBpZiAoZG90
LT5pZGVudGlmaWVyKCkgPT0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5jYWxsKQotICAg
ICAgICBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxp
bmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRp
dm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxE
YXRhKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGRv
dC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQs
IGVuZCAtIGRpdm90KTsKICAgICBlbHNlIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX2dsb2Jh
bERhdGEtPnByb3BlcnR5TmFtZXMtPmFwcGx5KQotICAgICAgICBub2RlID0gbmV3IChtX2dsb2Jh
bERhdGEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwg
ZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZv
dCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXBwbHlGdW5jdGlvbkNhbGxE
b3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIGVs
c2UKLSAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxEb3ROb2Rl
KGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9i
YWxEYXRhKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZG90
LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3Qo
KSwgZG90LT5lbmRPZmZzZXQoKSk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLUV4cHJlc3Npb25O
b2RlKiBBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZShpbnQgbGluZU51bWJlciwgaW50IHRva2Vu
LCBwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiBsaHMsIHBhaXI8RXhwcmVzc2lv
bk5vZGUqLCBCaW5hcnlPcEluZm8+IHJocykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlQmluYXJ5Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgaW50IHRva2Vu
LCBwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiBsaHMsIHBhaXI8RXhwcmVzc2lv
bk5vZGUqLCBCaW5hcnlPcEluZm8+IHJocykKIHsKICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAg
Y2FzZSBPUjoKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMb2dpY2FsT3BOb2Rl
KGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxPcik7CisgICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9naWNhbE9wTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxPcik7CiAKICAgICBjYXNl
IEFORDoKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMb2dpY2FsT3BOb2RlKGxp
bmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxBbmQpOworICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxPcE5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgT3BMb2dpY2FsQW5kKTsKIAogICAgIGNhc2Ug
QklUT1I6Ci0gICAgICAgIHJldHVybiBtYWtlQml0T3JOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJz
dCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4g
bWFrZUJpdE9yTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZp
cnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBCSVRYT1I6Ci0gICAg
ICAgIHJldHVybiBtYWtlQml0WE9yTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJz
dCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VCaXRYT3JO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5z
ZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIEJJVEFORDoKLSAgICAgICAgcmV0dXJu
IG1ha2VCaXRBbmROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vj
b25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZUJpdEFuZE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKIAogICAgIGNhc2UgRVFFUToKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBFcXVhbE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5z
ZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
RXF1YWxOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3Qs
IHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIE5FOgotICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIE5vdEVxdWFsTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3Qs
IHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBOb3RFcXVhbE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBs
aHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNh
c2UgU1RSRVE6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgU3RyaWN0RXF1YWxO
b2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2ln
bm1lbnQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN0cmljdEVxdWFsTm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vj
b25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBTVFJORVE6Ci0gICAgICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgTm90U3RyaWN0RXF1YWxOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJz
dCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIE5vdFN0cmljdEVxdWFsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwog
CiAgICAgY2FzZSBMVDoKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMZXNzTm9k
ZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25t
ZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMZXNzTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fz
c2lnbm1lbnQpOwogCiAgICAgY2FzZSBHVDoKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBHcmVhdGVyTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNl
Y29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBH
cmVhdGVyTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0
LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBMRToKLSAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMZXNzRXFOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwg
cmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIExlc3NFcU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMu
Zmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2Ug
R0U6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgR3JlYXRlckVxTm9kZShsaW5l
TnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsK
KyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBHcmVhdGVyRXFOb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNz
aWdubWVudCk7CiAKICAgICBjYXNlIElOU1RBTkNFT0Y6IHsKLSAgICAgICAgSW5zdGFuY2VPZk5v
ZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSW5zdGFuY2VPZk5vZGUobGluZU51bWJlciwg
bGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAg
IEluc3RhbmNlT2ZOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEluc3RhbmNlT2ZOb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNv
bmQuaGFzQXNzaWdubWVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIGxo
cy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuZW5kKTsKICAgICAg
ICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCiAgICAgY2FzZSBJTlRPS0VOOiB7Ci0gICAgICAgIElu
Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBJbk5vZGUobGluZU51bWJlciwgbGhzLmZp
cnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIEluTm9k
ZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBJbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKICAg
ICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgbGhzLnNlY29uZC5zdGFydCwgcmhzLnNl
Y29uZC5zdGFydCwgcmhzLnNlY29uZC5lbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9
CiAKICAgICBjYXNlIExTSElGVDoKLSAgICAgICAgcmV0dXJuIG1ha2VMZWZ0U2hpZnROb2RlKGxp
bmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQp
OworICAgICAgICByZXR1cm4gbWFrZUxlZnRTaGlmdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAog
ICAgIGNhc2UgUlNISUZUOgotICAgICAgICByZXR1cm4gbWFrZVJpZ2h0U2hpZnROb2RlKGxpbmVO
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwor
ICAgICAgICByZXR1cm4gbWFrZVJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAg
ICBjYXNlIFVSU0hJRlQ6Ci0gICAgICAgIHJldHVybiBtYWtlVVJpZ2h0U2hpZnROb2RlKGxpbmVO
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwor
ICAgICAgICByZXR1cm4gbWFrZVVSaWdodFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAg
ICAgY2FzZSBQTFVTOgotICAgICAgICByZXR1cm4gbWFrZUFkZE5vZGUobGluZU51bWJlciwgbGhz
LmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJl
dHVybiBtYWtlQWRkTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhz
LmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBNSU5VUzoKLSAg
ICAgICAgcmV0dXJuIG1ha2VTdWJOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0
LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZVN1Yk5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29u
ZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgVElNRVM6Ci0gICAgICAgIHJldHVybiBtYWtl
TXVsdE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFz
QXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlTXVsdE5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50
KTsKIAogICAgIGNhc2UgRElWSURFOgotICAgICAgICByZXR1cm4gbWFrZURpdk5vZGUobGluZU51
bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7Cisg
ICAgICAgIHJldHVybiBtYWtlRGl2Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5m
aXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBN
T0Q6Ci0gICAgICAgIHJldHVybiBtYWtlTW9kTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJo
cy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VN
b2ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJo
cy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAgICAgfQogICAgIENSQVNIKCk7CiAgICAgcmV0dXJu
IDA7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxvYywgT3BlcmF0b3Igb3AsIEV4cHJlc3Npb25O
b2RlKiBleHByLCBib29sIGxvY0hhc0Fzc2lnbm1lbnRzLCBib29sIGV4cHJIYXNBc3NpZ25tZW50
cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNUQnVp
bGRlcjo6bWFrZUFzc2lnbk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBsb2MsIE9wZXJhdG9yIG9wLCBFeHByZXNzaW9uTm9kZSogZXhwciwgYm9v
bCBsb2NIYXNBc3NpZ25tZW50cywgYm9vbCBleHBySGFzQXNzaWdubWVudHMsIGludCBzdGFydCwg
aW50IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlmICghbG9jLT5pc0xvY2F0aW9uKCkpCi0gICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduRXJyb3JOb2RlKGxpbmVOdW1iZXIs
IGxvYywgb3AsIGV4cHIsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduRXJyb3JOb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgbG9jLCBvcCwgZXhwciwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAt
IGRpdm90KTsKIAogICAgIGlmIChsb2MtPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNv
bHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4obG9jKTsKICAgICAg
ICAgaWYgKG9wID09IE9wRXF1YWwpIHsKICAgICAgICAgICAgIGlmIChleHByLT5pc0Z1bmNFeHBy
Tm9kZSgpKQogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGV4cHIp
LT5ib2R5KCktPnNldEluZmVycmVkTmFtZShyZXNvbHZlLT5pZGVudGlmaWVyKCkpOwotICAgICAg
ICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWdu
UmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBleHByLCBleHBy
SGFzQXNzaWdubWVudHMpOworICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cyk7CiAg
ICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7
CiAgICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCByZXNvbHZl
LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZv
dCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgcmVzb2x2
ZS0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2
b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBpZiAobG9jLT5pc0JyYWNrZXRB
Y2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0g
c3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGxvYyk7CiAgICAgICAgIGlmIChvcCA9
PSBPcEVxdWFsKQotICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25C
cmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlw
dCgpLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhhc0Fzc2lnbm1lbnRzLCBicmFja2V0
LT5kaXZvdCgpLCBicmFja2V0LT5kaXZvdCgpIC0gc3RhcnQsIGVuZCAtIGJyYWNrZXQtPmRpdm90
KCkpOwotICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwg
YnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhh
c0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25CcmFja2V0Tm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCks
IGV4cHIsIGxvY0hhc0Fzc2lnbm1lbnRzLCBleHBySGFzQXNzaWdubWVudHMsIGJyYWNrZXQtPmRp
dm90KCksIGJyYWNrZXQtPmRpdm90KCkgLSBzdGFydCwgZW5kIC0gYnJhY2tldC0+ZGl2b3QoKSk7
CisgICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRh
KSBSZWFkTW9kaWZ5QnJhY2tldE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBicmFja2V0
LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZXhwciwgbG9jSGFzQXNzaWdubWVu
dHMsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
KTsKICAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwg
YnJhY2tldC0+ZW5kT2Zmc2V0KCkpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CkBAIC05
MzMsNTUgKzkzMyw1NSBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsb2MsCiAgICAgaWYgKG9wID09IE9w
RXF1YWwpIHsKICAgICAgICAgaWYgKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihleHByKS0+Ym9keSgpLT5zZXRJbmZlcnJlZE5h
bWUoZG90LT5pZGVudGlmaWVyKCkpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IEFzc2lnbkRvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigp
LCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdCgpIC0g
c3RhcnQsIGVuZCAtIGRvdC0+ZGl2b3QoKSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgQXNzaWduRG90Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGRvdC0+YmFzZSgp
LCBkb3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkb3QtPmRpdm90
KCksIGRvdC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBkb3QtPmRpdm90KCkpOwogICAgIH0KIAot
ICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2Rp
ZnlEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3As
IGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90KTsKKyAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBS
ZWFkTW9kaWZ5RG90Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGRvdC0+YmFzZSgpLCBk
b3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRp
dm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5m
byhkb3QtPmRpdm90KCksIGRvdC0+ZW5kT2Zmc2V0KCkpOwogICAgIHJldHVybiBub2RlOwogfQog
Ci1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2
b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBP
cGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiB7CiAgICAgaWYgKCFl
eHByLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJl
Zml4RXJyb3JOb2RlKGxpbmVOdW1iZXIsIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeEVy
cm9yTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3Qg
LSBzdGFydCwgZW5kIC0gZGl2b3QpOwogCiAgICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkg
ewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2Rl
Kj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4UmVzb2x2
ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90
IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBQcmVmaXhSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHJlc29sdmUtPmlk
ZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAg
fQogICAgIGlmIChleHByLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFj
a2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9k
ZSo+KGV4cHIpOwotICAgICAgICBQcmVmaXhCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9i
YWxEYXRhKSBQcmVmaXhCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJy
YWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
KTsKKyAgICAgICAgUHJlZml4QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
UHJlZml4QnJhY2tldE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBicmFja2V0LT5iYXNl
KCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAt
IGRpdm90KTsKICAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2
b3QoKSwgYnJhY2tldC0+c3RhcnRPZmZzZXQoKSk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAg
IH0KICAgICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNz
b3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICBQ
cmVmaXhEb3ROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeERvdE5vZGUobGlu
ZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90
IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICBQcmVmaXhEb3ROb2RlKiBub2RlID0gbmV3ICht
X2dsb2JhbERhdGEpIFByZWZpeERvdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBkb3Qt
PmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5k
IC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwg
ZG90LT5zdGFydE9mZnNldCgpKTsKICAgICByZXR1cm4gbm9kZTsKIH0KIAotRXhwcmVzc2lvbk5v
ZGUqIEFTVEJ1aWxkZXI6Om1ha2VQb3N0Zml4Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkK
K0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUG9zdGZpeE5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwg
aW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiB7CiAgICAgaWYgKCFleHByLT5pc0xvY2F0
aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeEVycm9yTm9k
ZShsaW5lTnVtYmVyLCBleHByLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4RXJyb3JOb2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwciwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBl
bmQgLSBkaXZvdCk7CiAKICAgICBpZiAoZXhwci0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAg
IFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihleHByKTsK
LSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4UmVzb2x2ZU5vZGUobGlu
ZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQs
IGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4
UmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVy
KCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBp
ZiAoZXhwci0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vz
c29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihleHBy
KTsKLSAgICAgICAgUG9zdGZpeEJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEp
IFBvc3RmaXhCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQt
PnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAg
ICAgICAgUG9zdGZpeEJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFBvc3Rm
aXhCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwg
YnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOwogICAgICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgp
LCBicmFja2V0LT5lbmRPZmZzZXQoKSk7CiAgICAgICAgIHJldHVybiBub2RlOwogCiAgICAgfQog
ICAgIEFTU0VSVChleHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5v
ZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgIFBvc3Rm
aXhEb3ROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhEb3ROb2RlKGxpbmVO
dW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAt
IHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgUG9zdGZpeERvdE5vZGUqIG5vZGUgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgUG9zdGZpeERvdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBkb3Qt
PmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5k
IC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwg
ZG90LT5lbmRPZmZzZXQoKSk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDNiMDIwZjRmMmIxYjA5NmE3MGE5NWE5YjU4ODgyN2Jk
OTBiOTg1OWMuLmJmZDdmZDJjMjQ3MmI4MzdhZmFmOTE5ZjUxODFjMzBkNGU3YjkzNDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC00MTcsNiArNDE3LDcgQEAgdm9p
ZCBMZXhlcjxUPjo6c2V0Q29kZShjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckFyZW5h
KiBhcmVuYSkKICAgICBtX2NvZGVFbmQgPSBtX2NvZGVTdGFydCArIHNvdXJjZS5lbmRPZmZzZXQo
KTsKICAgICBtX2Vycm9yID0gZmFsc2U7CiAgICAgbV9hdExpbmVTdGFydCA9IHRydWU7CisgICAg
bV9jb2x1bW5OdW1iZXIgPSAwOwogICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gVVN0cmluZygpOwog
ICAgIAogICAgIG1fYnVmZmVyOC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGluaXRpYWxSZWFkQnVm
ZmVyQ2FwYWNpdHkpOwpAQCAtNDMzLDYgKzQzNCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgog
dGVtcGxhdGUgPGludCBzaGlmdEFtb3VudD4gQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+Ojpp
bnRlcm5hbFNoaWZ0KCkKIHsKICAgICBtX2NvZGUgKz0gc2hpZnRBbW91bnQ7CisgICAgbV9jb2x1
bW5OdW1iZXIgKz0gc2hpZnRBbW91bnQ7CiAgICAgbV9jdXJyZW50ID0gKm1fY29kZTsKIH0KIApA
QCAtNDQ0LDYgKzQ0Niw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6c2hpZnQoKQog
ICAgICsrbV9jb2RlOwogICAgIGlmIChMSUtFTFkobV9jb2RlIDwgbV9jb2RlRW5kKSkKICAgICAg
ICAgbV9jdXJyZW50ID0gKm1fY29kZTsKKyAgICArK21fY29sdW1uTnVtYmVyOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTEyMDAsNiArMTIwMyw3IEBAIHN0YXJ0OgogICAgICAgICBy
ZXR1cm4gRU9GVE9LOwogICAgIAogICAgIHRva2VuSW5mby0+c3RhcnRPZmZzZXQgPSBjdXJyZW50
T2Zmc2V0KCk7CisgICAgdG9rZW5JbmZvLT5jb2x1bW4gPSBtX2NvbHVtbk51bWJlcjsKIAogICAg
IENoYXJhY3RlclR5cGUgdHlwZTsKICAgICBpZiAoTElLRUxZKGlzTGF0aW4xKG1fY3VycmVudCkp
KQpAQCAtMTUyMiw2ICsxNTI2LDcgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAg
ICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwogICAgICAgICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsK
ICAgICAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKKyAgICAgICAgbV9jb2x1bW5OdW1iZXIgPSAw
OwogICAgICAgICBnb3RvIHN0YXJ0OwogICAgIGNhc2UgQ2hhcmFjdGVySW52YWxpZDoKICAgICAg
ICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBpbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgpOwpAQCAtMTU0
NCw2ICsxNTQ5LDcgQEAgaW5TaW5nbGVMaW5lQ29tbWVudDoKICAgICBzaGlmdExpbmVUZXJtaW5h
dG9yKCk7CiAgICAgbV9hdExpbmVTdGFydCA9IHRydWU7CiAgICAgbV90ZXJtaW5hdG9yID0gdHJ1
ZTsKKyAgICBtX2NvbHVtbk51bWJlciA9IDA7CiAgICAgaWYgKCFsYXN0VG9rZW5XYXNSZXN0cktl
eXdvcmQoKSkKICAgICAgICAgZ290byBzdGFydDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5oCmluZGV4IDQxZjFmODU1M2UxZWIyNWY1NDRiZWUxOTM1YTJhZjRiYmQwNjllNjQuLjI4
YjUzYmJlN2Q4ZmM3NmJjMGJhNDdmOGRiNzZkNzY3OGViMDdjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmgKQEAgLTkwLDYgKzkwLDcgQEAgcHVibGljOgogICAgIEpTVG9rZW5U
eXBlIGxleChKU1Rva2VuRGF0YSosIEpTVG9rZW5JbmZvKiwgdW5zaWduZWQsIGJvb2wgc3RyaWN0
TW9kZSk7CiAgICAgYm9vbCBuZXh0VG9rZW5Jc0NvbG9uKCk7CiAgICAgaW50IGxpbmVOdW1iZXIo
KSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KKyAgICBpbnQgY3VycmVudENvbHVtbk51
bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1uTnVtYmVyOyB9CiAgICAgdm9pZCBzZXRMYXN0
TGluZU51bWJlcihpbnQgbGFzdExpbmVOdW1iZXIpIHsgbV9sYXN0TGluZU51bWJlciA9IGxhc3RM
aW5lTnVtYmVyOyB9CiAgICAgaW50IGxhc3RMaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9s
YXN0TGluZU51bWJlcjsgfQogICAgIGJvb2wgcHJldlRlcm1pbmF0b3IoKSBjb25zdCB7IHJldHVy
biBtX3Rlcm1pbmF0b3I7IH0KQEAgLTE2Niw2ICsxNjcsNyBAQCBwcml2YXRlOgogCiAgICAgaW50
IG1fbGluZU51bWJlcjsKICAgICBpbnQgbV9sYXN0TGluZU51bWJlcjsKKyAgICBpbnQgbV9jb2x1
bW5OdW1iZXI7CiAKICAgICBWZWN0b3I8TENoYXI+IG1fYnVmZmVyODsKICAgICBWZWN0b3I8VUNo
YXI+IG1fYnVmZmVyMTY7CkBAIC0yODUsNiArMjg3LDcgQEAgQUxXQVlTX0lOTElORSBKU1Rva2Vu
VHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5EYXRh
LAogICAgICAgICBtX2N1cnJlbnQgPSAwOwogCiAgICAgbV9jb2RlID0gcHRyOworICAgIG1fY29s
dW1uTnVtYmVyID0gbV9jb2x1bW5OdW1iZXIgKyAobV9jb2RlIC0gc3RhcnQpOwogCiAgICAgLy8g
Q3JlYXRlIHRoZSBpZGVudGlmaWVyIGlmIG5lZWRlZAogICAgIGlmIChsZXhlckZsYWdzICYgTGV4
ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQpAQCAtMjk0LDYgKzI5Nyw3IEBAIEFMV0FZU19JTkxJ
TkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbkRhdGEq
IHRva2VuRGF0YSwKICAgICB0b2tlbkluZm8tPmxpbmUgPSBtX2xpbmVOdW1iZXI7CiAgICAgdG9r
ZW5JbmZvLT5zdGFydE9mZnNldCA9IHN0YXJ0IC0gbV9jb2RlU3RhcnQ7CiAgICAgdG9rZW5JbmZv
LT5lbmRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7CisgICAgdG9rZW5JbmZvLT5jb2x1bW4gPSBt
X2NvbHVtbk51bWJlcjsKICAgICBtX2xhc3RUb2tlbiA9IElERU5UOwogICAgIHJldHVybiBJREVO
VDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNv
bnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0
b3JzLmgKaW5kZXggZTQ5NmQyMzQyYjM0MDFmYTRhZTc0ZTI0NjM5NGViOTdjMzNiY2ExZi4uMmFl
MmY5ZTNkZTYxYWM4YjAzN2Y5YmNkYzAxY2M4NTdmMjlmZTFjYSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKQEAgLTQyLDYwICs0Miw2MSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZ2xvYmFsRGF0YS0+cGFyc2VyQXJlbmEtPmRlcmVm
V2l0aEFyZW5hKGFkb3B0UmVmKHRoaXMpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgTm9kZTo6Tm9k
ZShpbnQgbGluZU51bWJlcikKKyAgICBpbmxpbmUgTm9kZTo6Tm9kZShpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlcikKICAgICAgICAgOiBtX2xpbmVOdW1iZXIobGluZU51bWJlcikKKyAg
ICAgICAgLCBtX2NvbHVtbk51bWJlcihjb2x1bW5OdW1iZXIpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBFeHByZXNzaW9uTm9kZTo6RXhwcmVzc2lvbk5vZGUoaW50IGxpbmVOdW1iZXIsIFJl
c3VsdFR5cGUgcmVzdWx0VHlwZSkKLSAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5s
aW5lIEV4cHJlc3Npb25Ob2RlOjpFeHByZXNzaW9uTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgUmVzdWx0VHlwZSByZXN1bHRUeXBlKQorICAgICAgICA6IE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fcmVzdWx0VHlwZShyZXN1bHRUeXBlKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3RhdGVtZW50Tm9kZTo6U3RhdGVtZW50Tm9kZShp
bnQgbGluZU51bWJlcikKLSAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFN0
YXRlbWVudE5vZGU6OlN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpCisgICAgICAgIDogTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwg
bV9sYXN0TGluZSgtMSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE51bGxOb2RlOjpOdWxs
Tm9kZShpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
LCBSZXN1bHRUeXBlOjpudWxsVHlwZSgpKQorICAgIGlubGluZSBOdWxsTm9kZTo6TnVsbE5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCisgICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpudWxsVHlwZSgpKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgQm9vbGVhbk5vZGU6OkJvb2xlYW5Ob2RlKGludCBsaW5l
TnVtYmVyLCBib29sIHZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIs
IFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCkpCisgICAgaW5saW5lIEJvb2xlYW5Ob2RlOjpCb29s
ZWFuTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCB2YWx1ZSkKKyAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5
cGU6OmJvb2xlYW5UeXBlKCkpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIE51bWJlck5vZGU6Ok51bWJlck5vZGUoaW50IGxpbmVOdW1iZXIsIGRv
dWJsZSB2YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRU
eXBlOjpudW1iZXJUeXBlKCkpCisgICAgaW5saW5lIE51bWJlck5vZGU6Ok51bWJlck5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGRvdWJsZSB2YWx1ZSkKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJl
clR5cGUoKSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKLSAgICBp
bmxpbmUgU3RyaW5nTm9kZTo6U3RyaW5nTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRp
ZmllciYgdmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0
VHlwZTo6c3RyaW5nVHlwZSgpKQorICAgIGlubGluZSBTdHJpbmdOb2RlOjpTdHJpbmdOb2RlKGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiB2YWx1ZSkK
KyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3Vs
dFR5cGU6OnN0cmluZ1R5cGUoKSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgUmVnRXhwTm9kZTo6UmVnRXhwTm9kZShpbnQgbGluZU51bWJlciwg
Y29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MpCi0gICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmVnRXhwTm9kZTo6
UmVnRXhwTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRp
ZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MpCisgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fcGF0dGVybihw
YXR0ZXJuKQogICAgICAgICAsIG1fZmxhZ3MoZmxhZ3MpCiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBUaGlzTm9kZTo6VGhpc05vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgVGhpc05vZGU6OlRoaXNOb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFJlc29s
dmVOb2RlOjpSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGludCBzdGFydE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBSZXNvbHZlTm9kZTo6UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBpbnQgc3RhcnRPZmZzZXQp
CisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAg
ICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9zdGFydE9mZnNldChzdGFydE9mZnNl
dCkKICAgICB7CkBAIC0xMTYsMjQgKzExNywyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
bC0+bV9uZXh0ID0gdGhpczsKICAgICB9CiAKLSAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBlbGlzaW9uKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQgZWxpc2lvbikKKyAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9lbGVtZW50KDApCiAg
ICAgICAgICwgbV9lbGlzaW9uKGVsaXNpb24pCiAgICAgICAgICwgbV9vcHRpb25hbCh0cnVlKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5vZGUoaW50IGxpbmVO
dW1iZXIsIEVsZW1lbnROb2RlKiBlbGVtZW50KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBFbGVtZW50Tm9kZSogZWxlbWVudCkKKyAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9lbGVtZW50
KGVsZW1lbnQpCiAgICAgICAgICwgbV9lbGlzaW9uKDApCiAgICAgICAgICwgbV9vcHRpb25hbChm
YWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGlu
dCBsaW5lTnVtYmVyLCBpbnQgZWxpc2lvbiwgRWxlbWVudE5vZGUqIGVsZW1lbnQpCi0gICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJh
eU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGludCBlbGlzaW9uLCBFbGVt
ZW50Tm9kZSogZWxlbWVudCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgICAgICwgbV9l
bGlzaW9uKGVsaXNpb24pCiAgICAgICAgICwgbV9vcHRpb25hbCh0cnVlKQpAQCAtMTU0LDU3ICsx
NTUsNTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcm9w
ZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5v
ZGUqIG5vZGUpCi0gICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcm9wZXJ0
eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBQcm9wZXJ0eU5vZGUqIG5vZGUpCisgICAgICAgIDogTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpCiAgICAgICAgICwgbV9ub2RlKG5vZGUpCiAgICAgICAgICwgbV9uZXh0KDApCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBQcm9wZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3RO
b2RlKGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGUqIG5vZGUsIFByb3BlcnR5TGlzdE5vZGUq
IGxpc3QpCi0gICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcm9wZXJ0eUxp
c3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBQcm9wZXJ0eU5vZGUqIG5vZGUsIFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpCisgICAgICAgIDog
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9ub2RlKG5vZGUpCiAg
ICAgICAgICwgbV9uZXh0KDApCiAgICAgewogICAgICAgICBsaXN0LT5tX25leHQgPSB0aGlzOwog
ICAgIH0KIAotICAgIGlubGluZSBPYmplY3RMaXRlcmFsTm9kZTo6T2JqZWN0TGl0ZXJhbE5vZGUo
aW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgT2JqZWN0TGl0ZXJhbE5vZGU6Ok9iamVjdExpdGVyYWxOb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2xpc3QoMCkKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIE9iamVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZShpbnQgbGluZU51
bWJlciwgUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyKQorICAgIGlubGluZSBPYmplY3RMaXRlcmFsTm9kZTo6T2JqZWN0TGl0ZXJhbE5v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFByb3BlcnR5TGlzdE5vZGUqIGxp
c3QpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQog
ICAgICAgICAsIG1fbGlzdChsaXN0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQnJhY2tl
dEFjY2Vzc29yTm9kZTo6QnJhY2tldEFjY2Vzc29yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vic2NyaXB0
SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgQnJhY2tldEFjY2Vzc29yTm9kZTo6QnJhY2tldEFjY2Vzc29yTm9kZShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Np
b25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMpCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1f
YmFzZShiYXNlKQogICAgICAgICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKICAgICAgICAgLCBt
X3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgRG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBEb3RB
Y2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAg
LCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgQXJndW1lbnRMaXN0Tm9kZTo6QXJndW1lbnRMaXN0Tm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBBcmd1bWVudExpc3ROb2RlOjpBcmd1bWVudExpc3ROb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX25leHQoMCkKICAgICAg
ICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFyZ3VtZW50TGlz
dE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUoaW50IGxpbmVOdW1iZXIsIEFyZ3VtZW50TGlzdE5vZGUq
IGxpc3ROb2RlLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBOb2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIEFyZ3VtZW50TGlzdE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEFyZ3VtZW50TGlzdE5vZGUqIGxpc3ROb2RlLCBF
eHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcikKICAgICAgICAgLCBtX25leHQoMCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7
CkBAIC0yMjEsNDUgKzIyMiw0NSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIE5ld0V4cHJOb2RlOjpOZXdFeHByTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgTmV3RXhwck5vZGU6Ok5ld0V4cHJOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAg
ICAgICwgbV9hcmdzKDApCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBOZXdFeHByTm9kZTo6
TmV3RXhwck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVu
dHNOb2RlKiBhcmdzKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAg
aW5saW5lIE5ld0V4cHJOb2RlOjpOZXdFeHByTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3MpCisgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAs
IG1fZXhwcihleHByKQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgRXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OkV2YWxGdW5jdGlvbkNhbGxOb2RlKGludCBs
aW5lTnVtYmVyLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0
aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQXJndW1lbnRzTm9kZSogYXJncywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
Ci0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRnVuY3Rp
b25DYWxsVmFsdWVOb2RlOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdz
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAg
ICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6RnVuY3Rp
b25DYWxsUmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6RnVuY3Rpb25DYWxsUmVz
b2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9pZGVudChp
ZGVudCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQs
IEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFj
a2V0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQor
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAg
ICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJz
Y3JpcHQpCkBAIC0yNjcsOCArMjY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRo
cm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQog
ICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCkBAIC0yNzYs
MzEgKzI3NywzMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBB
cmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVO
dW1iZXIsIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkK
KyAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3RO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAg
ICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBiYXNlLCBp
ZGVudCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxs
RG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBGdW5jdGlvbkNh
bGxEb3ROb2RlKGxpbmVOdW1iZXIsIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBs
eUZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9k
ZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpCisgICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFByZVBvc3RSZXNvbHZlTm9kZTo6UHJlUG9z
dFJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0g
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlw
ZSgpKSAvLyBjb3VsZCBiZSByZXVzYWJsZSBmb3IgcHJlPworICAgIGlubGluZSBQcmVQb3N0UmVz
b2x2ZU5vZGU6OlByZVBvc3RSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpKSAvLyBj
b3VsZCBiZSByZXVzYWJsZSBmb3IgcHJlPwogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1faWRlbnQoaWRl
bnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQb3N0Zml4UmVzb2x2ZU5vZGU6OlBvc3Rm
aXhSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9w
ZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IFByZVBvc3RSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBp
ZGVudCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgaW5saW5lIFBvc3RmaXhS
ZXNvbHZlTm9kZTo6UG9zdGZpeFJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAg
IDogUHJlUG9zdFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgaWRlbnQsIGRp
dm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFBvc3RmaXhCcmFja2V0Tm9kZTo6UG9zdGZpeEJy
YWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUG9zdGZpeEJyYWNrZXROb2RlOjpQb3N0Zml4QnJh
Y2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwg
VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQp
CiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0
KQpAQCAtMzA4LDggKzMwOSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgUG9zdGZpeERvdE5vZGU6OlBvc3RmaXhEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9w
ZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFBv
c3RmaXhEb3ROb2RlOjpQb3N0Zml4RG90Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVy
YXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9p
ZGVudChpZGVudCkKQEAgLTMxNyw2OSArMzE4LDY5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgUG9zdGZpeEVycm9yTm9kZTo6UG9zdGZpeEVycm9yTm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wZXIsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFBvc3RmaXhFcnJv
ck5vZGU6OlBvc3RmaXhFcnJvck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlU3Vi
RXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwg
bV9leHByKGV4cHIpCiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgRGVsZXRlUmVzb2x2ZU5vZGU6OkRlbGV0ZVJlc29sdmVOb2RlKGludCBsaW5l
TnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRGVsZXRlUmVzb2x2ZU5vZGU6OkRlbGV0ZVJlc29s
dmVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBEZWxldGVCcmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
LSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBEZWxldGVC
cmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
KyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAg
ICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2Ny
aXB0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVsZXRlRG90Tm9kZTo6RGVsZXRlRG90
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlu
bGluZSBEZWxldGVEb3ROb2RlOjpEZWxldGVEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAg
ICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVsZXRlVmFsdWVOb2RlOjpEZWxldGVWYWx1ZU5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIERlbGV0ZVZhbHVlTm9kZTo6RGVsZXRl
VmFsdWVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBW
b2lkTm9kZTo6Vm9pZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQot
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFZvaWROb2Rl
OjpWb2lkTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
VHlwZU9mUmVzb2x2ZU5vZGU6OlR5cGVPZlJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
LCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCisgICAgaW5saW5lIFR5cGVPZlJlc29sdmVOb2Rl
OjpUeXBlT2ZSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV9p
ZGVudChpZGVudCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFR5cGVPZlZhbHVlTm9kZTo6
VHlwZU9mVmFsdWVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBl
KCkpCisgICAgaW5saW5lIFR5cGVPZlZhbHVlTm9kZTo6VHlwZU9mVmFsdWVOb2RlKGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OnN0
cmluZ1R5cGUoKSkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIFByZWZpeFJlc29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9kZShpbnQgbGluZU51bWJl
ciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IFBy
ZVBvc3RSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBpZGVudCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBl
bmRPZmZzZXQpCisgICAgaW5saW5lIFByZWZpeFJlc29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IFByZVBvc3RSZXNvbHZlTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGlkZW50LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkK
ICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQ
cmVmaXhCcmFja2V0Tm9kZTo6UHJlZml4QnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVy
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcmVm
aXhCcmFja2V0Tm9kZTo6UHJlZml4QnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0
LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0
YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkK
ICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCkBAIC0zODcsOCArMzg4LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVmaXhEb3ROb2RlOjpQ
cmVmaXhEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFByZWZpeERvdE5vZGU6OlByZWZpeERvdE5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZVBy
ZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAg
ICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKQEAgLTM5Niw0
NCArMzk3LDQ0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
UHJlZml4RXJyb3JOb2RlOjpQcmVmaXhFcnJvck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByLCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyKQorICAgIGlubGluZSBQcmVmaXhFcnJvck5vZGU6OlByZWZpeEVycm9yTm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9w
ZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX29w
ZXJhdG9yKG9wZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBVbmFyeU9wTm9kZTo6VW5h
cnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIE9wY29kZUlEIG9wY29kZUlEKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIsIHR5cGUpCisgICAgaW5saW5lIFVuYXJ5T3BOb2RlOjpVbmFyeU9wTm9kZShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9k
ZSogZXhwciwgT3Bjb2RlSUQgb3Bjb2RlSUQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCB0eXBlKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAg
ICAgICAsIG1fb3Bjb2RlSUQob3Bjb2RlSUQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBV
bmFyeVBsdXNOb2RlOjpVbmFyeVBsdXNOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcikKLSAgICAgICAgOiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpu
dW1iZXJUeXBlKCksIGV4cHIsIG9wX3RvX2pzbnVtYmVyKQorICAgIGlubGluZSBVbmFyeVBsdXNO
b2RlOjpVbmFyeVBsdXNOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwciwgb3BfdG9fanNudW1iZXIp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBOZWdhdGVOb2RlOjpOZWdhdGVOb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBVbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIsIG9wX25lZ2F0ZSkKKyAg
ICBpbmxpbmUgTmVnYXRlTm9kZTo6TmVnYXRlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogVW5hcnlPcE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIsIG9w
X25lZ2F0ZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJpdHdpc2VOb3ROb2RlOjpCaXR3
aXNlTm90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSkKKyAg
ICBpbmxpbmUgQml0d2lzZU5vdE5vZGU6OkJpdHdpc2VOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCkp
CiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBMb2dp
Y2FsTm90Tm9kZTo6TG9naWNhbE5vdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByKQotICAgICAgICA6IFVuYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJv
b2xlYW5UeXBlKCksIGV4cHIsIG9wX25vdCkKKyAgICBpbmxpbmUgTG9naWNhbE5vdE5vZGU6Okxv
Z2ljYWxOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcikKKyAgICAgICAgOiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIsIG9wX25vdCkKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIEJpbmFyeU9wTm9kZTo6QmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQg
b3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBCaW5hcnlPcE5vZGU6OkJpbmFyeU9wTm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIG1fZXhwcjEoZXhwcjEpCiAgICAgICAgICwgbV9leHByMihleHByMikK
ICAgICAgICAgLCBtX29wY29kZUlEKG9wY29kZUlEKQpAQCAtNDQxLDggKzQ0Miw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQmluYXJ5T3BOb2RlOjpCaW5h
cnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwg
dHlwZSkKKyAgICBpbmxpbmUgQmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCB0eXBlKQogICAgICAgICAsIG1fZXhwcjEoZXhwcjEpCiAgICAgICAgICwgbV9l
eHByMihleHByMikKICAgICAgICAgLCBtX29wY29kZUlEKG9wY29kZUlEKQpAQCAtNDUwLDE0MCAr
NDUxLDE0MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE11
bHROb2RlOjpNdWx0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAg
OiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHBy
MSwgZXhwcjIsIG9wX211bCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTXVsdE5v
ZGU6Ok11bHROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJl
c3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9tdWwsIHJpZ2h0SGFzQXNz
aWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBEaXZOb2RlOjpEaXZOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5l
TnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZGl2LCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBEaXZOb2RlOjpEaXZOb2RlKGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFy
eU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUo
KSwgZXhwcjEsIGV4cHIyLCBvcF9kaXYsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAg
IH0KIAogCi0gICAgaW5saW5lIE1vZE5vZGU6Ok1vZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6
Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9tb2QsIHJpZ2h0SGFzQXNzaWdubWVudHMp
CisgICAgaW5saW5lIE1vZE5vZGU6Ok1vZE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9w
X21vZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFk
ZE5vZGU6OkFkZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDog
QmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckFkZChleHByMS0+cmVzdWx0
RGVzY3JpcHRvcigpLCBleHByMi0+cmVzdWx0RGVzY3JpcHRvcigpKSwgZXhwcjEsIGV4cHIyLCBv
cF9hZGQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEFkZE5vZGU6OkFkZE5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAg
IDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Zm9y
QWRkKGV4cHIxLT5yZXN1bHREZXNjcmlwdG9yKCksIGV4cHIyLT5yZXN1bHREZXNjcmlwdG9yKCkp
LCBleHByMSwgZXhwcjIsIG9wX2FkZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIFN1Yk5vZGU6OlN1Yk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51
bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9zdWIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisg
ICAgaW5saW5lIFN1Yk5vZGU6OlN1Yk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3N1
YiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIExlZnRT
aGlmdE5vZGU6OkxlZnRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0g
ICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCks
IGV4cHIxLCBleHByMiwgb3BfbHNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGlu
ZSBMZWZ0U2hpZnROb2RlOjpMZWZ0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3Bf
bHNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
UmlnaHRTaGlmdE5vZGU6OlJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JC
aXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX3JzaGlmdCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAg
ICBpbmxpbmUgUmlnaHRTaGlmdE5vZGU6OlJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBl
eHByMiwgb3BfcnNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZTo6VW5zaWduZWRSaWdodFNoaWZ0Tm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGlu
ZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3Vyc2hp
ZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIFVuc2lnbmVkUmlnaHRTaGlmdE5v
ZGU6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3Vy
c2hpZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBM
ZXNzTm9kZTo6TGVzc05vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAg
IDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4
cHIxLCBleHByMiwgb3BfbGVzcywgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTGVz
c05vZGU6Okxlc3NOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbGVzcywgcmlnaHRI
YXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEdyZWF0ZXJOb2RlOjpH
cmVhdGVyTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5h
cnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4
cHIyLCBvcF9ncmVhdGVyLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBHcmVhdGVy
Tm9kZTo6R3JlYXRlck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVyLCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTGVzc0VxTm9k
ZTo6TGVzc0VxTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBC
aW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEs
IGV4cHIyLCBvcF9sZXNzZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIExlc3NF
cU5vZGU6Okxlc3NFcU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9sZXNzZXEsIHJp
Z2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBHcmVhdGVyRXFO
b2RlOjpHcmVhdGVyRXFOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAg
ICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBl
eHByMSwgZXhwcjIsIG9wX2dyZWF0ZXJlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxp
bmUgR3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIs
IG9wX2dyZWF0ZXJlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIFRocm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGludCBs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlIHR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCB0eXBlLCBleHByMSwgZXhw
cjIsIG9wY29kZUlELCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBUaHJvd2FibGVC
aW5hcnlPcE5vZGU6OlRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgUmVzdWx0VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0
eXBlLCBleHByMSwgZXhwcjIsIG9wY29kZUlELCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgVGhyb3dhYmxlQmluYXJ5T3BOb2RlOjpUaHJvd2FibGVCaW5h
cnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIG9wY29k
ZUlELCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBUaHJvd2FibGVCaW5hcnlPcE5v
ZGU6OlRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlE
IG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCBvcGNvZGVJRCwgcmln
aHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEluc3RhbmNlT2ZO
b2RlOjpJbnN0YW5jZU9mTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAg
ICAgOiBUaHJvd2FibGVCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVh
blR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9pbnN0YW5jZW9mLCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorICAgIGlubGluZSBJbnN0YW5jZU9mTm9kZTo6SW5zdGFuY2VPZk5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogVGhyb3dhYmxl
QmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVh
blR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9pbnN0YW5jZW9mLCByaWdodEhhc0Fzc2lnbm1lbnRz
KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgSW5Ob2RlOjpJbk5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxpbmVO
dW1iZXIsIGV4cHIxLCBleHByMiwgb3BfaW4sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5s
aW5lIEluTm9kZTo6SW5Ob2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQorICAgICAgICA6IFRocm93YWJsZUJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGV4cHIxLCBleHByMiwgb3BfaW4sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBFcXVhbE5vZGU6OkVxdWFsTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwg
UmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9lcSwgcmlnaHRIYXNB
c3NpZ25tZW50cykKKyAgICBpbmxpbmUgRXF1YWxOb2RlOjpFcXVhbE5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9lcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIE5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRU
eXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX25lcSwgcmlnaHRIYXNBc3NpZ25t
ZW50cykKKyAgICBpbmxpbmUgTm90RXF1YWxOb2RlOjpOb3RFcXVhbE5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9uZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBTdHJpY3RFcXVhbE5vZGU6OlN0cmljdEVxdWFsTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwg
UmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9zdHJpY3RlcSwgcmln
aHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgU3RyaWN0RXF1YWxOb2RlOjpTdHJpY3RFcXVh
bE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisg
ICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlw
ZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9zdHJpY3RlcSwgcmlnaHRIYXNBc3Np
Z25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE5vdFN0cmljdEVxdWFsTm9kZTo6
Tm90U3RyaWN0RXF1YWxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAg
ICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBl
eHByMSwgZXhwcjIsIG9wX25zdHJpY3RlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxp
bmUgTm90U3RyaWN0RXF1YWxOb2RlOjpOb3RTdHJpY3RFcXVhbE5vZGUoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhw
cjEsIGV4cHIyLCBvcF9uc3RyaWN0ZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBCaXRBbmROb2RlOjpCaXRBbmROb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRU
eXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdGFuZCwgcmlnaHRIYXNBc3NpZ25t
ZW50cykKKyAgICBpbmxpbmUgQml0QW5kTm9kZTo6Qml0QW5kTm9kZShpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwg
ZXhwcjIsIG9wX2JpdGFuZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIEJpdE9yTm9kZTo6Qml0T3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JC
aXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdG9yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAg
IGlubGluZSBCaXRPck5vZGU6OkJpdE9yTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2Jp
dG9yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQml0
WE9yTm9kZTo6Qml0WE9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAg
ICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhw
cjEsIGV4cHIyLCBvcF9iaXR4b3IsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEJp
dFhPck5vZGU6OkJpdFhPck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXR4b3IsIHJp
Z2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBMb2dpY2FsT3BO
b2RlOjpMb2dpY2FsT3BOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgTG9naWNhbE9wZXJhdG9yIG9wZXIpCi0gICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSkKKyAg
ICBpbmxpbmUgTG9naWNhbE9wTm9kZTo6TG9naWNhbE9wTm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIExvZ2ljYWxPcGVyYXRvciBvcGVyKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSkKICAgICAgICAg
LCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCiAgICAgICAgICwgbV9v
cGVyYXRvcihvcGVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQ29uZGl0aW9uYWxOb2Rl
OjpDb25kaXRpb25hbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2Fs
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMikKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBDb25kaXRpb25hbE5vZGU6
OkNvbmRpdGlvbmFsTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGxvZ2ljYWwsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
cikKICAgICAgICAgLCBtX2xvZ2ljYWwobG9naWNhbCkKICAgICAgICAgLCBtX2V4cHIxKGV4cHIx
KQogICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBS
ZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZShpbnQgbGluZU51bWJl
ciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2Rl
KiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmVhZE1vZGlmeVJlc29sdmVOb2RlOjpSZWFk
TW9kaWZ5UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2lkZW50KGlkZW50
KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQpCkBAIC01OTIsMTYgKzU5MywxNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnblJlc29sdmVOb2RlOjpB
c3NpZ25SZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFzc2lnblJlc29sdmVO
b2RlOjpBc3NpZ25SZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcikKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fcmlnaHQo
cmlnaHQpCiAgICAgICAgICwgbV9yaWdodEhhc0Fzc2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVu
dHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OlJl
YWRNb2RpZnlCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGlu
ZSBSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OlJlYWRNb2RpZnlCcmFja2V0Tm9kZShpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25O
b2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAg
ICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2Ny
aXB0KQpAQCAtNjEyLDggKzYxMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgQXNzaWduQnJhY2tldE5vZGU6OkFzc2lnbkJyYWNrZXROb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIEFzc2lnbkJyYWNrZXROb2RlOjpBc3NpZ25CcmFja2V0Tm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJl
c3Npb25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3Jp
cHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAg
ICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtNjIz
LDggKzYyNCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
QXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGlu
ZU51bWJlcikKKyAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRlbnQo
aWRlbnQpCkBAIC02MzMsOCArNjM0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
T3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1f
aWRlbnQoaWRlbnQpCkBAIC02NDQsOCArNjQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25FcnJvck5vZGU6OkFzc2lnbkVycm9yTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Np
b25Ob2RlKiByaWdodCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgQXNzaWduRXJyb3JOb2RlOjpBc3NpZ25FcnJvck5vZGUoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBPcGVyYXRvciBvcGVyLCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2xlZnQobGVmdCkKICAgICAg
ICAgLCBtX29wZXJhdG9yKG9wZXIpCkBAIC02NTMsMTUgKzY1NCwxNSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENvbW1hTm9kZTo6Q29tbWFOb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMikK
LSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBDb21tYU5v
ZGU6OkNvbW1hTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKICAgICAgICAgbV9leHByZXNz
aW9ucy5hcHBlbmQoZXhwcjEpOwogICAgICAgICBtX2V4cHJlc3Npb25zLmFwcGVuZChleHByMik7
CiAgICAgfQogCi0gICAgaW5saW5lIENvbnN0U3RhdGVtZW50Tm9kZTo6Q29uc3RTdGF0ZW1lbnRO
b2RlKGludCBsaW5lTnVtYmVyLCBDb25zdERlY2xOb2RlKiBuZXh0KQotICAgICAgICA6IFN0YXRl
bWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQ29uc3RTdGF0ZW1lbnROb2RlOjpDb25z
dFN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIENvbnN0RGVj
bE5vZGUqIG5leHQpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCiAgICAgICAgICwgbV9uZXh0KG5leHQpCiAgICAgewogICAgIH0KQEAgLTY3MCw1NyAr
NjcxLDU3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRW1w
dHlTdGF0ZW1lbnROb2RlOjpFbXB0eVN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAg
ICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBFbXB0eVN0YXRlbWVu
dE5vZGU6OkVtcHR5U3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
cikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6RGVidWdnZXJT
dGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGlu
ZU51bWJlcikKKyAgICBpbmxpbmUgRGVidWdnZXJTdGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRl
bWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCisgICAgICAgIDogU3Rh
dGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgIH0KICAgICAK
LSAgICBpbmxpbmUgRXhwclN0YXRlbWVudE5vZGU6OkV4cHJTdGF0ZW1lbnROb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIEV4cHJTdGF0ZW1lbnROb2RlOjpFeHByU3RhdGVtZW50Tm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIp
CisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAg
ICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBWYXJTdGF0ZW1l
bnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFZh
clN0YXRlbWVudE5vZGU6OlZhclN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsK
ICAgICB9CiAgICAgCi0gICAgaW5saW5lIElmTm9kZTo6SWZOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrKQotICAgICAg
ICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgSWZOb2RlOjpJZk5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRp
b24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2spCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9jb25kaXRpb24oY29uZGl0aW9uKQog
ICAgICAgICAsIG1faWZCbG9jayhpZkJsb2NrKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
SWZFbHNlTm9kZTo6SWZFbHNlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNv
bmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2Nr
KQotICAgICAgICA6IElmTm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24sIGlmQmxvY2spCisgICAg
aW5saW5lIElmRWxzZU5vZGU6OklmRWxzZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ss
IFN0YXRlbWVudE5vZGUqIGVsc2VCbG9jaykKKyAgICAgICAgOiBJZk5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBjb25kaXRpb24sIGlmQmxvY2spCiAgICAgICAgICwgbV9lbHNlQmxvY2so
ZWxzZUJsb2NrKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRG9XaGlsZU5vZGU6OkRvV2hp
bGVOb2RlKGludCBsaW5lTnVtYmVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIEV4cHJlc3Np
b25Ob2RlKiBleHByKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBp
bmxpbmUgRG9XaGlsZU5vZGU6OkRvV2hpbGVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByKQor
ICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAg
ICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIFdoaWxlTm9kZTo6V2hpbGVOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQotICAgICAg
ICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgV2hpbGVOb2RlOjpXaGls
ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAg
ICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRm9y
Tm9kZTo6Rm9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIEV4cHJlc3Npb25Ob2RlKiBleHByMywgU3RhdGVtZW50Tm9kZSog
c3RhdGVtZW50LCBib29sIGV4cHIxV2FzVmFyRGVjbCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZvck5vZGU6OkZvck5vZGUoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwg
Ym9vbCBleHByMVdhc1ZhckRlY2wpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9leHByMShleHByMSkKICAgICAgICAgLCBtX2V4
cHIyKGV4cHIyKQogICAgICAgICAsIG1fZXhwcjMoZXhwcjMpCkBAIC03MzAsMzggKzczMSwzOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQVNTRVJUKHN0YXRlbWVudCk7CiAgICAgfQogCi0g
ICAgaW5saW5lIENvbnRpbnVlTm9kZTo6Q29udGludWVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNvbnRpbnVlTm9kZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQorICAgICAgICA6IFN0
YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1faWRlbnQo
Z2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNvbnRpbnVlTm9kZShpbnQgbGluZU51bWJlciwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNvbnRpbnVlTm9kZShpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgICAgIDog
U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9pZGVu
dChpZGVudCkKICAgICB7CiAgICAgfQogICAgIAotICAgIGlubGluZSBCcmVha05vZGU6OkJyZWFr
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyKQotICAgICAgICA6
IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQnJlYWtOb2RlOjpCcmVha05v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikK
ICAgICAgICAgLCBtX2lkZW50KGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlm
aWVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQnJlYWtOb2RlOjpCcmVha05vZGUoaW50
IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQotICAgICAgICA6IFN0YXRlbWVu
dE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQnJlYWtOb2RlOjpCcmVha05vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAg
ICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAs
IG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgUmV0dXJuTm9k
ZTo6UmV0dXJuTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIHZhbHVlKQotICAg
ICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmV0dXJuTm9kZTo6
UmV0dXJuTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIHZhbHVlKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBXaXRoTm9kZTo6V2l0aE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
LCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIHVpbnQzMl90IGRpdm90LCB1aW50MzJfdCBleHBy
ZXNzaW9uTGVuZ3RoKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBp
bmxpbmUgV2l0aE5vZGU6OldpdGhOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCB1aW50MzJf
dCBkaXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCkKKyAgICAgICAgOiBTdGF0ZW1lbnRO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAg
ICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCiAgICAgICAgICwgbV9kaXZvdChkaXZvdCkK
QEAgLTc2OSwyMSArNzcwLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgTGFiZWxOb2RlOjpMYWJlbE5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkKLSAgICAgICAgOiBTdGF0ZW1l
bnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIExhYmVsTm9kZTo6TGFiZWxOb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBTdGF0
ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV9zdGF0
ZW1lbnQoc3RhdGVtZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVGhyb3dOb2RlOjpU
aHJvd05vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6
IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgVGhyb3dOb2RlOjpUaHJvd05v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAg
ICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVHJ5Tm9kZTo6
VHJ5Tm9kZShpbnQgbGluZU51bWJlciwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElk
ZW50aWZpZXImIGV4Y2VwdGlvbklkZW50LCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0
ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBUcnlOb2RlOjpUcnlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciYgZXhj
ZXB0aW9uSWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZp
bmFsbHlCbG9jaykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcikKICAgICAgICAgLCBtX3RyeUJsb2NrKHRyeUJsb2NrKQogICAgICAgICAsIG1fZXhjZXB0
aW9uSWRlbnQoZXhjZXB0aW9uSWRlbnQpCiAgICAgICAgICwgbV9jYXRjaEJsb2NrKGNhdGNoQmxv
Y2spCkBAIC04MDQsMTUgKzgwNSwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbC0+bV9u
ZXh0ID0gdGhpczsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5v
ZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbkJvZHlO
b2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5vZGUqIHBhcmFt
ZXRlcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBG
dW5jRXhwck5vZGU6OkZ1bmNFeHByTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQorICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2Jv
ZHkoYm9keSkKICAgICB7CiAgICAgICAgIG1fYm9keS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIHBh
cmFtZXRlciwgaWRlbnQpOwogICAgIH0KIAotICAgIGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNE
ZWNsTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9u
Qm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSog
cGFyYW1ldGVyKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgRnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcikKKyAgICAg
ICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBt
X2JvZHkoYm9keSkKICAgICB7CiAgICAgICAgIG1fYm9keS0+ZmluaXNoUGFyc2luZyhzb3VyY2Us
IHBhcmFtZXRlciwgaWRlbnQpOwpAQCAtODQ0LDI5ICs4NDUsMjkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBTd2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQ2FzZUJsb2NrTm9kZSogYmxvY2spCi0g
ICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBTd2l0Y2hOb2Rl
OjpTd2l0Y2hOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwciwgQ2FzZUJsb2NrTm9kZSogYmxvY2spCisgICAgICAgIDogU3RhdGVtZW50Tm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAg
ICAgICwgbV9ibG9jayhibG9jaykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENvbnN0RGVj
bE5vZGU6OkNvbnN0RGVjbE5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBDb25zdERlY2xOb2RlOjpDb25zdERlY2xOb2RlKGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVz
c2lvbk5vZGUqIGluaXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9uZXh0KDAp
CiAgICAgICAgICwgbV9pbml0KGluaXQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCbG9j
a05vZGU6OkJsb2NrTm9kZShpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIHN0YXRlbWVu
dHMpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBCbG9j
a05vZGU6OkJsb2NrTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU291cmNl
RWxlbWVudHMqIHN0YXRlbWVudHMpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9zdGF0ZW1lbnRzKHN0YXRlbWVudHMpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbCwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkKLSAgICAgICAgOiBTdGF0ZW1l
bnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZvckluTm9kZTo6Rm9ySW5Ob2RlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBsLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3Rh
dGVtZW50KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
KQogICAgICAgICAsIG1faWRlbnQoZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50
aWZpZXIpCiAgICAgICAgICwgbV9pbml0KDApCiAgICAgICAgICwgbV9sZXhwcihsKQpAQCAtODc2
LDE3ICs4NzcsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBGb3JJbk5vZGU6OkZvckluTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5l
TnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluLCBFeHBy
ZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgZGl2b3QsIGlu
dCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIEZvckluTm9kZTo6Rm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBT
dGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQg
ZW5kT2Zmc2V0KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9pbml0KDApCi0gICAg
ICAgICwgbV9sZXhwcihuZXcgKGdsb2JhbERhdGEpIFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlk
ZW50LCBkaXZvdCAtIHN0YXJ0T2Zmc2V0KSkKKyAgICAgICAgLCBtX2xleHByKG5ldyAoZ2xvYmFs
RGF0YSkgUmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBpZGVudCwgZGl2b3Qg
LSBzdGFydE9mZnNldCkpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9zdGF0
ZW1lbnQoc3RhdGVtZW50KQogICAgICAgICAsIG1faWRlbnRJc1ZhckRlY2wodHJ1ZSkKICAgICB7
CiAgICAgICAgIGlmIChpbikgewotICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUg
PSBuZXcgKGdsb2JhbERhdGEpIEFzc2lnblJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50LCBp
biwgdHJ1ZSk7CisgICAgICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAoZ2xv
YmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBpZGVu
dCwgaW4sIHRydWUpOwogICAgICAgICAgICAgbm9kZS0+c2V0RXhjZXB0aW9uU291cmNlQ29kZShk
aXZvdCwgZGl2b3QgLSBzdGFydE9mZnNldCwgZW5kT2Zmc2V0IC0gZGl2b3QpOwogICAgICAgICAg
ICAgbV9pbml0ID0gbm9kZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmNwcAppbmRleCBjMzJlNGM3M2EyNGViZWIyMzNjZDVlMDFmZmZkNjNhNDg2ODVjODg2Li41
YTc4NWMxZmY3N2YwYzk3YjBiMGRmNmIyOTZjZTY3MzU1ZDE0M2MxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtNTIsMTAgKzUyLDE4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3RhdGVtZW50Tm9kZSAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCit2b2lkIFN0YXRlbWVudE5vZGU6OnNldExv
YyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUsIGludCBjb2x1bW4pCit7CisgICAgbV9saW5l
TnVtYmVyID0gZmlyc3RMaW5lOworICAgIG1fbGFzdExpbmUgPSBsYXN0TGluZTsKKyAgICBtX2Nv
bHVtbk51bWJlciA9IGNvbHVtbjsKK30KKwogdm9pZCBTdGF0ZW1lbnROb2RlOjpzZXRMb2MoaW50
IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQogewogICAgIG1fbGluZU51bWJlciA9IGZpcnN0TGlu
ZTsKICAgICBtX2xhc3RMaW5lID0gbGFzdExpbmU7CisgICAgbV9jb2x1bW5OdW1iZXIgPSAwOwog
fQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU291cmNlRWxlbWVudHMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTc1LDggKzgzLDggQEAgU3RhdGVtZW50
Tm9kZSogU291cmNlRWxlbWVudHM6OnNpbmdsZVN0YXRlbWVudCgpIGNvbnN0CiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTY29wZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmljdENvbnRleHQpCi0gICAgOiBTdGF0ZW1lbnRO
b2RlKGxpbmVOdW1iZXIpCitTY29wZU5vZGU6OlNjb3BlTm9kZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBib29sIGluU3RyaWN0Q29u
dGV4dCkKKyAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAg
ICwgUGFyc2VyQXJlbmFSZWZDb3VudGVkKGdsb2JhbERhdGEpCiAgICAgLCBtX2ZlYXR1cmVzKGlu
U3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVGZWF0dXJlIDogTm9GZWF0dXJlcykKICAgICAsIG1f
bnVtQ29uc3RhbnRzKDApCkBAIC04NCw4ICs5Miw4IEBAIFNjb3BlTm9kZTo6U2NvcGVOb2RlKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250
CiB7CiB9CiAKLVNjb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
aW50IGxpbmVOdW1iZXIsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNlRWxlbWVudHMq
IGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywg
SWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cykKLSAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKK1Njb3Bl
Tm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNlRWxlbWVu
dHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFj
aywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIENvZGVGZWF0dXJlcyBmZWF0dXJl
cywgaW50IG51bUNvbnN0YW50cykKKyAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyKQogICAgICwgUGFyc2VyQXJlbmFSZWZDb3VudGVkKGdsb2JhbERhdGEpCiAgICAg
LCBtX2ZlYXR1cmVzKGZlYXR1cmVzKQogICAgICwgbV9zb3VyY2Uoc291cmNlKQpAQCAtMTA3LDE0
ICsxMTUsMTQgQEAgU3RhdGVtZW50Tm9kZSogU2NvcGVOb2RlOjpzaW5nbGVTdGF0ZW1lbnQoKSBj
b25zdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUHJvZ3JhbU5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIFByb2dyYW1Ob2RlOjpQcm9ncmFt
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCi0gICAgOiBT
Y29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3Rh
Y2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMp
CitpbmxpbmUgUHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGls
ZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50
aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENv
ZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShn
bG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZSwgY2hpbGRyZW4sIHZh
clN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3Rh
bnRzKQogewogfQogCi1QYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRz
KiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ss
IElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK1Bhc3NSZWZQdHI8
UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxk
cmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRp
ZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogewotICAgIFJlZlB0cjxQcm9n
cmFtTm9kZT4gbm9kZSA9IG5ldyBQcm9ncmFtTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBj
aGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgIGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2Us
IGZlYXR1cmVzLCBudW1Db25zdGFudHMpOworICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gbm9kZSA9
IG5ldyBQcm9ncmFtTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNo
aWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCAgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwg
ZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAKICAgICBBU1NFUlQobm9kZS0+bV9hcmVuYS5sYXN0
KCkgPT0gbm9kZSk7CiAgICAgbm9kZS0+bV9hcmVuYS5yZW1vdmVMYXN0KCk7CkBAIC0xMjUsMTQg
KzEzMywxNCBAQCBQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
aW5saW5lIEV2YWxOb2RlOjpFdmFsTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBs
aW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywg
RnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxl
cywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBu
dW1Db25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgc291
cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZl
YXR1cmVzLCBudW1Db25zdGFudHMpCitpbmxpbmUgRXZhbE5vZGU6OkV2YWxOb2RlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFNvdXJj
ZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBm
dW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKKyAg
ICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJj
ZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0
dXJlcywgbnVtQ29uc3RhbnRzKQogewogfQogCi1QYXNzUmVmUHRyPEV2YWxOb2RlPiBFdmFsTm9k
ZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIFNvdXJj
ZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBm
dW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK1Bh
c3NSZWZQdHI8RXZhbE5vZGU+IEV2YWxOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU291cmNlRWxlbWVudHMqIGNo
aWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRl
bnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
Q29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogewotICAgIFJlZlB0cjxF
dmFsTm9kZT4gbm9kZSA9IG5ldyBFdmFsTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjaGls
ZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVh
dHVyZXMsIG51bUNvbnN0YW50cyk7CisgICAgUmVmUHRyPEV2YWxOb2RlPiBub2RlID0gbmV3IEV2
YWxOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY2hpbGRyZW4sIHZh
clN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2UsIGZlYXR1cmVzLCBu
dW1Db25zdGFudHMpOwogCiAgICAgQVNTRVJUKG5vZGUtPm1fYXJlbmEubGFzdCgpID09IG5vZGUp
OwogICAgIG5vZGUtPm1fYXJlbmEucmVtb3ZlTGFzdCgpOwpAQCAtMTQ5LDEzICsxNTcsMTMgQEAg
RnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5jdGlvblBhcmFtZXRlcnMoUGFyYW1ldGVyTm9kZSogZmly
c3RQYXJhbWV0ZXIpCiAgICAgICAgIGFwcGVuZChwYXJhbWV0ZXItPmlkZW50KCkpOwogfQogCi1p
bmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBib29sIGluU3RyaWN0Q29udGV4dCkKLSAgICA6IFNj
b3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBpblN0cmljdENvbnRleHQpCitpbmxpbmUg
RnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBib29sIGluU3RyaWN0Q29udGV4
dCkKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IGluU3RyaWN0Q29udGV4dCkKIHsKIH0KIAotaW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0
aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291
cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sq
IGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cykKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBzb3VyY2VDb2RlLCBj
aGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVz
LCBudW1Db25zdGFudHMpCitpbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9k
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rp
b25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKQorICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgc291cmNlQ29kZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1
cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogewogfQogCkBAIC0xNzIsMTQg
KzE4MCwxNCBAQCB2b2lkIEZ1bmN0aW9uQm9keU5vZGU6OmZpbmlzaFBhcnNpbmcoUGFzc1JlZlB0
cjxGdW5jdGlvblBhcmFtZXRlcnM+IHBhcmFtZXRlcnMsCiAgICAgbV9pZGVudCA9IGlkZW50Owog
fQogCi1GdW5jdGlvbkJvZHlOb2RlKiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmljdENvbnRleHQpCitG
dW5jdGlvbkJvZHlOb2RlKiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCBpblN0cmlj
dENvbnRleHQpCiB7Ci0gICAgcmV0dXJuIG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEs
IGxpbmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCk7CisgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkJv
ZHlOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgaW5TdHJpY3RDb250
ZXh0KTsKIH0KIAotUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBGdW5jdGlvbkJvZHlOb2Rl
OjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291cmNl
RWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1
bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykK
K1Bhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0
YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBT
b3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25z
dGFudHMpCiB7Ci0gICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IG5vZGUgPSBuZXcgRnVuY3Rp
b25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1
bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZUNvZGUsIGZlYXR1cmVzLCBudW1Db25z
dGFudHMpOworICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBub2RlID0gbmV3IEZ1bmN0aW9u
Qm9keU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjaGlsZHJlbiwg
dmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZUNvZGUsIGZlYXR1
cmVzLCBudW1Db25zdGFudHMpOwogCiAgICAgQVNTRVJUKG5vZGUtPm1fYXJlbmEubGFzdCgpID09
IG5vZGUpOwogICAgIG5vZGUtPm1fYXJlbmEucmVtb3ZlTGFzdCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oCmluZGV4IDVjOTBiYjlmZTY2MzYwZTkyYTk5N2FkYjY0YjNlZTc5NjM3
MzIyNjYuLjBiOGJhOTUzNGRjYTA4MzhjMzFkY2UyYjVmNDAwN2RlOTllMWQyMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIE5vZGUgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAg
ICAgcHJvdGVjdGVkOgotICAgICAgICBOb2RlKGludCk7CisgICAgICAgIE5vZGUoaW50LCBpbnQp
OwogCiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5Ob2RlKCkgeyB9CkBAIC0xMzksMTMg
KzEzOSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBpbnQgbGluZU5vKCkgY29uc3Qg
eyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CiAKKyAgICAgICAgaW50IGNvbHVtbk5vKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2x1bW5OdW1iZXI7IH0KKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgaW50
IG1fbGluZU51bWJlcjsKKyAgICAgICAgaW50IG1fY29sdW1uTnVtYmVyOwogICAgIH07CiAKICAg
ICBjbGFzcyBFeHByZXNzaW9uTm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwcm90ZWN0ZWQ6Ci0g
ICAgICAgIEV4cHJlc3Npb25Ob2RlKGludCwgUmVzdWx0VHlwZSA9IFJlc3VsdFR5cGU6OnVua25v
d25UeXBlKCkpOworICAgICAgICBFeHByZXNzaW9uTm9kZShpbnQsIGludCwgUmVzdWx0VHlwZSA9
IFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCkpOwogCiAgICAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNOdW1iZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTc1LDEyICsx
NzgsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBTdGF0ZW1lbnROb2RlIDogcHVi
bGljIE5vZGUgewogICAgIHByb3RlY3RlZDoKLSAgICAgICAgU3RhdGVtZW50Tm9kZShpbnQpOwor
ICAgICAgICBTdGF0ZW1lbnROb2RlKGludCwgaW50KTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5l
KTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRMb2MoaW50IGZpcnN0TGluZSwg
aW50IGxhc3RMaW5lKTsgCisgICAgICAgIHZvaWQgc2V0TG9jKGludCBmaXJzdExpbmUsIGludCBs
YXN0TGluZSwgaW50IGNvbHVtbik7CiAgICAgICAgIGludCBmaXJzdExpbmUoKSBjb25zdCB7IHJl
dHVybiBsaW5lTm8oKTsgfQogICAgICAgICBpbnQgbGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBt
X2xhc3RMaW5lOyB9CisgICAgICAgIGludCBjb2x1bW4oKSBjb25zdCB7IHJldHVybiBjb2x1bW5O
bygpO30KIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eVN0YXRlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1JldHVybk5vZGUoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTk0LDcgKzE5OSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgTnVsbE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgTnVsbE5vZGUoaW50KTsKKyAgICAgICAgTnVsbE5vZGUoaW50LCBpbnQpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMjA0LDcgKzIwOSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQm9vbGVhbk5vZGUgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQm9vbGVhbk5vZGUoaW50LCBib29sIHZh
bHVlKTsKKyAgICAgICAgQm9vbGVhbk5vZGUoaW50LCBpbnQsIGJvb2wgdmFsdWUpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMjE2LDcgKzIyMSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgTnVtYmVyTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBOdW1iZXJOb2RlKGludCwgZG91YmxlIHZhbHVlKTsK
KyAgICAgICAgTnVtYmVyTm9kZShpbnQsIGludCwgZG91YmxlIHZhbHVlKTsKIAogICAgICAgICBk
b3VibGUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgICAgIHZvaWQgc2V0
VmFsdWUoZG91YmxlIHZhbHVlKSB7IG1fdmFsdWUgPSB2YWx1ZTsgfQpAQCAtMjMyLDcgKzIzNyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3RyaW5nTm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBTdHJpbmdOb2RlKGludCwgY29uc3Qg
SWRlbnRpZmllciYpOworICAgICAgICBTdHJpbmdOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlm
aWVyJik7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgdmFsdWUoKSB7IHJldHVybiBtX3Zh
bHVlOyB9CiAKQEAgLTM0Miw3ICszNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IFJlZ0V4cE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBSZWdFeHBOb2RlKGludCwgY29uc3Qg
SWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MpOworICAgICAgICBS
ZWdFeHBOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVu
dGlmaWVyJiBmbGFncyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBA
IC0zNTMsNyArMzU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBUaGlzTm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBUaGlzTm9kZShp
bnQpOworICAgICAgICBUaGlzTm9kZShpbnQsIGludCk7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CkBAIC0zNjEsNyArMzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBpbnQgc3RhcnRP
ZmZzZXQpOworICAgICAgICBSZXNvbHZlTm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYs
IGludCBzdGFydE9mZnNldCk7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KIApAQCAtMzkzLDExICszOTgsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcnJheU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXJyYXlOb2RlKGludCwgaW50IGVsaXNpb24pOwot
ICAgICAgICBBcnJheU5vZGUoaW50LCBFbGVtZW50Tm9kZSopOwotICAgICAgICBBcnJheU5vZGUo
aW50LCBpbnQgZWxpc2lvbiwgRWxlbWVudE5vZGUqKTsKKyAgICAgICAgQXJyYXlOb2RlKGludCwg
aW50LCBpbnQgZWxpc2lvbik7CisgICAgICAgIEFycmF5Tm9kZShpbnQsIGludCwgRWxlbWVudE5v
ZGUqKTsKKyAgICAgICAgQXJyYXlOb2RlKGludCwgaW50LCBpbnQgZWxpc2lvbiwgRWxlbWVudE5v
ZGUqKTsKIAotICAgICAgICBBcmd1bWVudExpc3ROb2RlKiB0b0FyZ3VtZW50TGlzdChKU0dsb2Jh
bERhdGEqLCBpbnQpIGNvbnN0OworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiB0b0FyZ3VtZW50
TGlzdChKU0dsb2JhbERhdGEqLCBpbnQsIGludCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7CkBAIC00MjgsOCArNDMzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBQcm9wZXJ0eUxpc3ROb2RlIDogcHVibGljIE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShpbnQsIFByb3BlcnR5Tm9kZSopOwotICAgICAgICBQ
cm9wZXJ0eUxpc3ROb2RlKGludCwgUHJvcGVydHlOb2RlKiwgUHJvcGVydHlMaXN0Tm9kZSopOwor
ICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKGludCwgaW50LCBQcm9wZXJ0eU5vZGUqKTsKKyAgICAg
ICAgUHJvcGVydHlMaXN0Tm9kZShpbnQsIGludCwgUHJvcGVydHlOb2RlKiwgUHJvcGVydHlMaXN0
Tm9kZSopOwogCiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKIApAQCAtNDQwLDggKzQ0NSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgT2JqZWN0TGl0ZXJhbE5vZGUgOiBwdWJsaWMgRXhw
cmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgT2JqZWN0TGl0ZXJhbE5vZGUoaW50
KTsKLSAgICAgICAgT2JqZWN0TGl0ZXJhbE5vZGUoaW50LCBQcm9wZXJ0eUxpc3ROb2RlKik7Cisg
ICAgICAgIE9iamVjdExpdGVyYWxOb2RlKGludCwgaW50KTsKKyAgICAgICAgT2JqZWN0TGl0ZXJh
bE5vZGUoaW50LCBpbnQsIFByb3BlcnR5TGlzdE5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTQ1MSw3ICs0NTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAKICAgICBjbGFzcyBCcmFja2V0QWNjZXNzb3JOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
LCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAg
QnJhY2tldEFjY2Vzc29yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9u
Tm9kZSogc3Vic2NyaXB0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAg
QnJhY2tldEFjY2Vzc29yTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJl
c3Npb25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMpOwogCiAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3N1YnNj
cmlwdDsgfQpAQCAtNDY5LDcgKzQ3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
RG90QWNjZXNzb3JOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRG90QWNjZXNzb3JOb2RlKGlu
dCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgRG90
QWNjZXNzb3JOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYpOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4g
bV9iYXNlOyB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50OyB9CkBAIC00ODYsOCArNDkxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBBcmd1bWVudExpc3ROb2RlIDogcHVibGljIE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgICAg
IEFyZ3VtZW50TGlzdE5vZGUoaW50LCBBcmd1bWVudExpc3ROb2RlKiwgRXhwcmVzc2lvbk5vZGUq
KTsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqKTsK
KyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShpbnQsIGludCwgQXJndW1lbnRMaXN0Tm9kZSosIEV4
cHJlc3Npb25Ob2RlKik7CiAKICAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogbV9uZXh0OwogICAg
ICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwpAQCAtNTA2LDggKzUxMSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgTmV3RXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUs
IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBO
ZXdFeHByTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgICAgIE5ld0V4cHJOb2RlKGlu
dCwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKik7CisgICAgICAgIE5ld0V4cHJOb2Rl
KGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBOZXdFeHByTm9kZShpbnQsIGlu
dCwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKik7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7CkBAIC01MTgsNyArNTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBFdmFsRnVuY3Rpb25DYWxsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwg
cHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV2
YWxGdW5jdGlvbkNhbGxOb2RlKGludCwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRXZhbEZ1
bmN0aW9uQ2FsbE5vZGUoaW50LCBpbnQsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01MjgsNyArNTMzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAg
ICAgICBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSosIEFyZ3VtZW50
c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShpbnQsIGludCwgRXhwcmVz
c2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApOwpAQCAtNTM5LDcgKzU0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1Ymxp
YyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlv
bkNhbGxSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
OworICAgICAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRp
ZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CkBAIC01NTIsNyArNTU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xh
c3MgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1Ymxp
YyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5j
dGlvbkNhbGxCcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9u
Tm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxC
cmFja2V0Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2Rl
KiBzdWJzY3JpcHQsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CkBAIC01NjQsNyArNTY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMg
VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rp
b25DYWxsRG90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShpbnQsIGlu
dCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2Rl
KiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTc3LDcgKzU4
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5v
ZGUgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBD
YWxsRnVuY3Rpb25DYWxsRG90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQ2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwg
QXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
QEAgLTU4NSw3ICs1OTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBBcHBs
eUZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAg
IEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTkzLDcgKzU5OCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgUHJlUG9zdFJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBw
dWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJl
UG9zdFJlc29sdmVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlUG9z
dFJlc29sdmVOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJvdGVj
dGVkOgogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwpAQCAtNjAxLDcgKzYwNiw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUG9zdGZpeFJlc29sdmVOb2RlIDogcHVi
bGljIFByZVBvc3RSZXNvbHZlTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBQb3N0Zml4UmVz
b2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUG9z
dGZpeFJlc29sdmVOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTYxMSw3ICs2MTYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFBvc3RmaXhCcmFja2V0Tm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFBvc3RmaXhCcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQ
b3N0Zml4QnJhY2tldE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNz
aW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwpAQCAtNjIzLDcgKzYyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgUG9zdGZpeERvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJv
d2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQb3N0Zml4RG90
Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0
b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KTsKKyAgICAgICAgUG9zdGZpeERvdE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTYzNSw3ICs2NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIFBvc3RmaXhFcnJvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1Ymxp
YyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQb3N0
Zml4RXJyb3JOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQ
b3N0Zml4RXJyb3JOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02NDYsNyArNjUxLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWxldGVSZXNvbHZlTm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIERlbGV0ZVJlc29sdmVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
KyAgICAgICAgRGVsZXRlUmVzb2x2ZU5vZGUoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXImLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02NTYsNyArNjYxLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWxldGVCcmFja2V0Tm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIERlbGV0ZUJyYWNrZXROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRGVsZXRlQnJhY2tldE5v
ZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2Ny
aXB0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02NjcsNyAr
NjcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWxldGVEb3ROb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgRGVsZXRlRG90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBEZWxldGVEb3ROb2RlKGludCwgaW50LCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTY3OCw3ICs2ODMsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIERlbGV0ZVZhbHVlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVWYWx1ZU5vZGUoaW50LCBFeHByZXNzaW9uTm9k
ZSopOworICAgICAgICBEZWxldGVWYWx1ZU5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKik7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02ODgsNyArNjkzLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBWb2lkTm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBWb2lkTm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKik7CisgICAgICAgIFZvaWROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjk4LDcgKzcwMyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVHlwZU9mUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhw
cmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVHlwZU9mUmVzb2x2ZU5vZGUoaW50
LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIFR5cGVPZlJlc29sdmVOb2RlKGludCwgaW50
LCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KIApAQCAtNzEwLDcgKzcxNSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVHlwZU9mVmFsdWVOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFR5cGVPZlZhbHVlTm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKik7CisgICAgICAgIFR5cGVPZlZhbHVlTm9kZShpbnQsIGludCwgRXhwcmVz
c2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTcy
MCw3ICs3MjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFByZWZpeFJlc29sdmVO
b2RlIDogcHVibGljIFByZVBvc3RSZXNvbHZlTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBQ
cmVmaXhSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAg
ICAgICBQcmVmaXhSZXNvbHZlTm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJh
dG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC03MzAsNyAr
NzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVmaXhCcmFja2V0Tm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVz
c2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlZml4QnJhY2tldE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Is
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KTsKKyAgICAgICAgUHJlZml4QnJhY2tldE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNzQyLDcgKzc0Nyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgUHJlZml4RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwg
cHVibGljIFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgUHJlZml4RG90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlZml4RG90Tm9kZShpbnQsIGludCwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNzU0LDcgKzc1OSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlZml4RXJyb3JOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgUHJlZml4RXJyb3JOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
OworICAgICAgICBQcmVmaXhFcnJvck5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiwgT3Bl
cmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTc2NSw3
ICs3NzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFVuYXJ5T3BOb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFVuYXJ5T3BOb2RlKGlu
dCwgUmVzdWx0VHlwZSwgRXhwcmVzc2lvbk5vZGUqLCBPcGNvZGVJRCk7CisgICAgICAgIFVuYXJ5
T3BOb2RlKGludCwgaW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSosIE9wY29kZUlEKTsK
IAogICAgIHByb3RlY3RlZDoKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIoKSB7IHJldHVy
biBtX2V4cHI7IH0KQEAgLTc4Miw3ICs3ODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIFVuYXJ5UGx1c05vZGUgOiBwdWJsaWMgVW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgVW5hcnlQbHVzTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIFVuYXJ5
UGx1c05vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICB2aXJ0dWFsIEV4cHJlc3Npb25Ob2RlKiBzdHJpcFVuYXJ5UGx1cygpIHsgcmV0dXJuIGV4
cHIoKTsgfQpAQCAtNzkwLDEyICs3OTUsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBOZWdhdGVOb2RlIDogcHVibGljIFVuYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IE5lZ2F0ZU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBOZWdhdGVOb2RlKGlu
dCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwogICAgIH07CiAKICAgICBjbGFzcyBCaXR3aXNlTm90
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBCaXR3
aXNlTm90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIEJpdHdpc2VOb3ROb2Rl
KGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBF
eHByZXNzaW9uTm9kZSogZXhwcigpIHsgcmV0dXJuIG1fZXhwcjsgfQpAQCAtODA5LDcgKzgxNCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogIAogICAgIGNsYXNzIExvZ2ljYWxOb3ROb2RlIDogcHVibGlj
IFVuYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExvZ2ljYWxOb3ROb2RlKGludCwg
RXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgTG9naWNhbE5vdE5vZGUoaW50LCBpbnQsIEV4cHJl
c3Npb25Ob2RlKik7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGVJbkNv
bmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBMYWJlbCogdHJ1ZVRhcmdldCwgTGFi
ZWwqIGZhbHNlVGFyZ2V0LCBib29sIGZhbGxUaHJvdWdoTWVhbnNUcnVlKTsKICAgICAgICAgdmly
dHVhbCBib29sIGhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkgY29uc3QgeyByZXR1cm4gZXhw
cigpLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpOyB9CkBAIC04MTcsOCArODIyLDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBCaW5hcnlPcE5vZGUgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQmluYXJ5T3BOb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpOwotICAgICAgICBCaW5hcnlPcE5vZGUoaW50LCBSZXN1bHRUeXBl
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJpbmFyeU9wTm9kZShpbnQsIGlu
dCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlE
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBCaW5hcnlPcE5vZGUoaW50LCBp
bnQsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgICAgICBSZWdp
c3RlcklEKiBlbWl0U3RyY2F0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRlc3RpbmF0aW9uLCBSZWdpc3RlcklEKiBsaHMgPSAwLCBSZWFkTW9kaWZ5UmVzb2x2ZU5v
ZGUqIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lID0gMCk7CiAKQEAgLTg0Miw3MiArODQ3LDcyIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTXVsdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BO
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE11bHROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CisgICAgICAgIE11bHROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAg
ICAgY2xhc3MgRGl2Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgRGl2Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBEaXZOb2RlKGludCwg
aW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgTW9kTm9kZSA6IHB1Ymxp
YyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTW9kTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOworICAgICAgICBNb2ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAg
ICB9OwogCiAgICAgY2xhc3MgQWRkTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1
YmxpYzoKLSAgICAgICAgQWRkTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBBZGRO
b2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNB
ZGQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAogICAgIGNsYXNzIFN1Yk5vZGUg
OiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFN1Yk5vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgU3ViTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cyk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzU3VidHJhY3QoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAgICAgfTsKIAogICAgIGNsYXNzIExlZnRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5
T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExlZnRTaGlmdE5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKKyAgICAgICAgTGVmdFNoaWZ0Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CiAgICAgfTsKIAogICAgIGNsYXNzIFJpZ2h0U2hpZnROb2RlIDogcHVibGljIEJpbmFyeU9wTm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBSaWdodFNoaWZ0Tm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOworICAgICAgICBSaWdodFNoaWZ0Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAg
ICAgfTsKIAogICAgIGNsYXNzIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5
T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZShpbnQsIGlu
dCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIExlc3NOb2RlIDogcHVibGlj
IEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBMZXNzTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOworICAgICAgICBMZXNzTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAg
ICAgfTsKIAogICAgIGNsYXNzIEdyZWF0ZXJOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBHcmVhdGVyTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAg
ICAgICBHcmVhdGVyTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAg
IGNsYXNzIExlc3NFcU5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIExlc3NFcU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTGVzc0VxTm9k
ZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEdyZWF0ZXJF
cU5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEdyZWF0
ZXJFcU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgR3JlYXRlckVxTm9kZShpbnQs
IGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIFRocm93YWJsZUJpbmFy
eU9wTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBUaHJvd2FibGVCaW5hcnlPcE5vZGUoaW50LCBS
ZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
T3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgICAgIFRocm93YWJsZUJp
bmFyeU9wTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgVGhyb3dh
YmxlQmluYXJ5T3BOb2RlKGludCwgaW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CisgICAgICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQsIGludCwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpA
QCAtOTE1LDcgKzkyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIEluc3Rh
bmNlT2ZOb2RlIDogcHVibGljIFRocm93YWJsZUJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBJbnN0YW5jZU9mTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBJbnN0
YW5jZU9mTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7CkBAIC05MjMsMTIgKzkyOCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEluTm9kZSA6IHB1YmxpYyBUaHJvd2FibGVCaW5hcnlPcE5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgSW5Ob2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIElu
Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEVxdWFs
Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXF1YWxO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEVxdWFsTm9kZShpbnQsIGludCwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05
MzYsMTIgKzk0MSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE5vdEVxdWFsTm9k
ZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTm90RXF1YWxO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIE5vdEVxdWFsTm9kZShpbnQsIGludCwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIFN0cmljdEVxdWFsTm9kZSA6IHB1
YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgU3RyaWN0RXF1YWxOb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIFN0cmljdEVxdWFsTm9kZShpbnQsIGludCwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBA
IC05NDksMjggKzk1NCwyOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE5vdFN0cmlj
dEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
Tm90U3RyaWN0RXF1YWxOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIE5vdFN0cmlj
dEVxdWFsTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNz
IEJpdEFuZE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IEJpdEFuZE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQml0QW5kTm9kZShpbnQs
IGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEJpdE9yTm9kZSA6IHB1
YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQml0T3JOb2RlKGludCwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJpdE9yTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEJpdFhPck5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdFhPck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
KyAgICAgICAgQml0WE9yTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAog
ICAgIC8vIG1fZXhwcjEgJiYgbV9leHByMiwgbV9leHByMSB8fCBtX2V4cHIyCiAgICAgY2xhc3Mg
TG9naWNhbE9wTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBMb2dpY2FsT3BOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIExvZ2ljYWxPcGVyYXRvcik7CisgICAgICAgIExvZ2ljYWxPcE5vZGUoaW50
LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBMb2dp
Y2FsT3BlcmF0b3IpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAt
OTg1LDcgKzk5MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIC8vIFRoZSB0ZXJuYXJ5IG9wZXJh
dG9yLCAibV9sb2dpY2FsID8gbV9leHByMSA6IG1fZXhwcjIiCiAgICAgY2xhc3MgQ29uZGl0aW9u
YWxOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENv
bmRpdGlvbmFsTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMik7CisgICAgICAgIENvbmRpdGlvbmFsTm9k
ZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGxvZ2ljYWwsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKTsKQEAgLTk5Nyw3ICsxMDAyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5
UmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25O
b2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWFkTW9k
aWZ5UmVzb2x2ZU5vZGUoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhw
cmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDExLDcgKzEwMTYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFzc2lnblJlc29sdmVOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBBc3Np
Z25SZXNvbHZlTm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwMjQsNyArMTAyOSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgUmVhZE1vZGlmeUJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
LCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJl
c3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwor
ICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUq
IHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwMzks
NyArMTA0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXNzaWduQnJhY2tldE5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7CiAgICAgcHVibGljOgotICAgICAgICBBc3NpZ25CcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHByZXNzaW9uTm9kZSog
cmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOworICAgICAgICBBc3NpZ25CcmFja2V0Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDUzLDcgKzEw
NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgotICAgICAgICBBc3NpZ25Eb3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOworICAgICAgICBBc3NpZ25Eb3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CkBAIC0xMDY2LDcgKzEwNzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IFJlYWRNb2RpZnlEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dh
YmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeURv
dE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJh
dG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwor
ICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTEwODAsNyArMTA4NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
QXNzaWduRXJyb3JOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNzaWduRXJyb3JOb2RlKGlu
dCwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KTsKKyAgICAgICAgQXNzaWduRXJyb3JOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogbGVm
dCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTA5NCw3ICsxMDk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBDb21tYU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBQ
YXJzZXJBcmVuYURlbGV0YWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBDb21tYU5vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMik7CisgICAgICAg
IENvbW1hTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIpOwogCiAgICAgICAgIHVzaW5nIFBhcnNlckFyZW5hRGVsZXRhYmxlOjpvcGVyYXRv
ciBuZXc7CiAKQEAgLTExMDksNyArMTExNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAg
IGNsYXNzIENvbnN0RGVjbE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgQ29uc3REZWNsTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNz
aW9uTm9kZSopOworICAgICAgICBDb25zdERlY2xOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlm
aWVyJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgICAgICBib29sIGhhc0luaXRpYWxpemVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pbml0OyB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50
KCkgeyByZXR1cm4gbV9pZGVudDsgfQpAQCAtMTEyOSw3ICsxMTM0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBDb25zdFN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBDb25zdFN0YXRlbWVudE5vZGUoaW50LCBDb25zdERl
Y2xOb2RlKiBuZXh0KTsKKyAgICAgICAgQ29uc3RTdGF0ZW1lbnROb2RlKGludCwgaW50LCBDb25z
dERlY2xOb2RlKiBuZXh0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
QEAgLTExNTQsNyArMTE1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQmxvY2tO
b2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQmxvY2tO
b2RlKGludCwgU291cmNlRWxlbWVudHMqID0gMCk7CisgICAgICAgIEJsb2NrTm9kZShpbnQsIGlu
dCwgU291cmNlRWxlbWVudHMqID0gMCk7CiAKICAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xl
U3RhdGVtZW50KCkgY29uc3Q7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnQo
KSBjb25zdDsKQEAgLTExNjksNyArMTE3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgRW1wdHlTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgRW1wdHlTdGF0ZW1lbnROb2RlKGludCk7CisgICAgICAgIEVtcHR5U3RhdGVt
ZW50Tm9kZShpbnQsIGludCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CkBAIC0xMTc5LDcgKzExODQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBE
ZWJ1Z2dlclN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5vZGUoaW50KTsKKyAgICAgICAgRGVidWdnZXJT
dGF0ZW1lbnROb2RlKGludCwgaW50KTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwpAQCAtMTE4Nyw3ICsxMTkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBFeHByU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsK
KyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKik7CiAK
ICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIoKSBjb25zdCB7IHJldHVybiBtX2V4cHI7IH0K
IApAQCAtMTIwMSw4ICsxMjA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBWYXJT
dGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgVmFyU3RhdGVtZW50Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7ICAgICAgICAKLQorICAg
ICAgICBWYXJTdGF0ZW1lbnROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKIApAQCAtMTIxMSw3ICsxMjE1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBJZk5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogY29uZGl0
aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrKTsKKyAgICAgICAgSWZOb2RlKGludCwgaW50LCBF
eHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrKTsKIAogICAg
IHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTIyMiw3ICsxMjI2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZkVsc2VOb2RlIDogcHVibGljIElmTm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBJZkVsc2VOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGNv
bmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2Nr
KTsKKyAgICAgICAgSWZFbHNlTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlv
biwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2NrKTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyMzIsNyArMTIzNiw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRG9XaGlsZU5vZGUgOiBwdWJsaWMgU3RhdGVt
ZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBEb1doaWxlTm9kZShpbnQsIFN0YXRlbWVu
dE5vZGUqLCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBEb1doaWxlTm9kZShpbnQsIGludCwg
U3RhdGVtZW50Tm9kZSosIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CkBAIC0xMjQzLDcgKzEyNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIFdoaWxlTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIFdoaWxlTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSop
OworICAgICAgICBXaGlsZU5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50
Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTI1NCw3
ICsxMjU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGb3JOb2RlIDogcHVibGlj
IFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRm9yTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjMsIFN0YXRlbWVudE5vZGUqLCBib29sIGV4cHIxV2FzVmFyRGVjbCk7CisgICAgICAgIEZv
ck5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0YXRlbWVudE5vZGUqLCBib29sIGV4cHIxV2Fz
VmFyRGVjbCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjY4
LDggKzEyNzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZvckluTm9kZSA6IHB1
YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgRm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSosIGludCwgRXhwcmVzc2lv
bk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsKLSAgICAgICAgRm9ySW5O
b2RlKEpTR2xvYmFsRGF0YSosIGludCwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2Rl
KiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgaW50IGRpdm90LCBpbnQgc3RhcnRP
ZmZzZXQsIGludCBlbmRPZmZzZXQpOworICAgICAgICBGb3JJbk5vZGUoSlNHbG9iYWxEYXRhKiwg
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2Rl
Kik7CisgICAgICAgIEZvckluTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCwgY29uc3QgSWRl
bnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2Rl
KiwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTI4NCw4ICsxMjg4LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb250aW51ZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9k
ZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IENvbnRpbnVlTm9kZShKU0dsb2JhbERhdGEqLCBpbnQpOwotICAgICAgICBDb250aW51ZU5vZGUo
aW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIENvbnRpbnVlTm9kZShKU0dsb2JhbERh
dGEqLCBpbnQsIGludCk7CisgICAgICAgIENvbnRpbnVlTm9kZShpbnQsIGludCwgY29uc3QgSWRl
bnRpZmllciYpOwogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CkBAIC0xMjk1LDggKzEyOTksOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJyZWFr
Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQnJlYWtOb2RlKEpTR2xvYmFsRGF0YSosIGludCk7
Ci0gICAgICAgIEJyZWFrTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgQnJl
YWtOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgaW50KTsKKyAgICAgICAgQnJlYWtOb2RlKGludCwg
aW50LCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKQEAgLTEzMDYsNyArMTMxMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgUmV0dXJuTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmV0dXJuTm9kZShpbnQs
IEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSk7CisgICAgICAgIFJldHVybk5vZGUoaW50LCBpbnQsIEV4
cHJlc3Npb25Ob2RlKiB2YWx1ZSk7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHZhbHVlKCkg
eyByZXR1cm4gbV92YWx1ZTsgfQogCkBAIC0xMzIwLDcgKzEzMjQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIFdpdGhOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1
YmxpYzoKLSAgICAgICAgV2l0aE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5v
ZGUqLCB1aW50MzJfdCBkaXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCk7CisgICAgICAg
IFdpdGhOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqLCB1aW50
MzJfdCBkaXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCk7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMzMzLDcgKzEzMzcsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIExhYmVsTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgTGFiZWxOb2Rl
KGludCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgU3RhdGVtZW50Tm9kZSopOworICAgICAgICBM
YWJlbE5vZGUoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUq
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEzNDQsNyArMTM0
OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVGhyb3dOb2RlIDogcHVibGljIFN0
YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGlj
OgotICAgICAgICBUaHJvd05vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBUaHJv
d05vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CkBAIC0xMzU0LDcgKzEzNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIFRyeU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBUcnlOb2RlKGludCwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50
aWZpZXImIGV4Y2VwdGlvbklkZW50LCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1l
bnROb2RlKiBmaW5hbGx5QmxvY2spOworICAgICAgICBUcnlOb2RlKGludCwgaW50LCBTdGF0ZW1l
bnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciYgZXhjZXB0aW9uSWRlbnQsIFN0YXRl
bWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jayk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMzgzLDggKzEzODcsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6VmFyU3Rh
Y2sgVmFyU3RhY2s7CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9u
U3RhY2sgRnVuY3Rpb25TdGFjazsKIAotICAgICAgICBTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiwg
aW50LCBib29sIGluU3RyaWN0Q29udGV4dCk7Ci0gICAgICAgIFNjb3BlTm9kZShKU0dsb2JhbERh
dGEqLCBpbnQsIGNvbnN0IFNvdXJjZUNvZGUmLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwg
RnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25z
dGFudHMpOworICAgICAgICBTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQsIGJvb2wg
aW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIGludCwg
aW50LCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0
aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KTsKIAogICAgICAgICB1c2luZyBQYXJzZXJBcmVuYVJlZkNvdW50ZWQ6Om9wZXJhdG9yIG5ldzsK
IApAQCAtMTQ0NiwxMiArMTQ1MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBQcm9n
cmFtTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGlj
IGNvbnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSBmYWxzZTsKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UHJvZ3JhbU5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1l
bnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNv
dXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gY3JlYXRlKEpTR2xvYmFsRGF0YSosIGludCwgaW50
LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJT
ZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsK
IAogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIFByb2dyYW1Ob2RlKEpTR2xvYmFsRGF0YSosIGludCwgU291
cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0Jiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAg
ICAgIFByb2dyYW1Ob2RlKEpTR2xvYmFsRGF0YSosIGludCwgaW50LCBTb3VyY2VFbGVtZW50cyos
IFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VD
b2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CiAgICAgfTsKQEAgLTE0NTksMTIgKzE0NjMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgRXZhbE5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBib29sIGlzRnVuY3Rpb25Ob2RlID0gZmFsc2U7Ci0gICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEV2YWxOb2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgaW50LCBTb3Vy
Y2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBj
b25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RXZhbE5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQs
IGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlm
aWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cyk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7
CiAKICAgICBwcml2YXRlOgotICAgICAgICBFdmFsTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIFNv
dXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYs
IGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAg
ICAgICBFdmFsTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCwgU291cmNlRWxlbWVudHMqLCBW
YXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29k
ZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwogICAgIH07CkBAIC0xNDgxLDggKzE0ODUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBGdW5jdGlvbkJvZHlOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgog
ICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0Z1bmN0aW9uTm9kZSA9IHRydWU7Ci0gICAgICAg
IHN0YXRpYyBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgaW50LCBib29s
IGlzU3RyaWN0TW9kZSk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5v
ZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sq
LCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2Rl
RmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5
Tm9kZSogY3JlYXRlKEpTR2xvYmFsRGF0YSosIGludCwgaW50LCBib29sIGlzU3RyaWN0TW9kZSk7
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGNyZWF0ZShKU0ds
b2JhbERhdGEqLCBpbnQsIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9u
U3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0
ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgpOyB9CiAgICAgICAgIHNpemVf
dCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy0+c2l6ZSgpOyB9
CkBAIC0xNDk5LDggKzE1MDMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gdHJ1ZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBib29sIGluU3RyaWN0Q29udGV4
dCk7Ci0gICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VF
bGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25z
dCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAg
RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCwgYm9vbCBpblN0cmljdENv
bnRleHQpOworICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgaW50
LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJT
ZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsK
IAogICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7CiAgICAgICAgIElkZW50aWZpZXIgbV9pbmZl
cnJlZE5hbWU7CkBAIC0xNTA5LDcgKzE1MTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIEZ1bmNFeHByTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBGdW5jRXhwck5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Cb2R5
Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOworICAgICAgICBG
dW5jRXhwck5vZGUoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbkJvZHlOb2Rl
KiwgY29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRlck5vZGUqID0gMCk7CiAKICAgICAgICAgRnVu
Y3Rpb25Cb2R5Tm9kZSogYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogCkBAIC0xNTIzLDcgKzE1
MjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmNEZWNsTm9kZSA6IHB1Ymxp
YyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmNEZWNsTm9kZShpbnQs
IGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbkJvZHlOb2RlKiwgY29uc3QgU291cmNlQ29kZSYs
IFBhcmFtZXRlck5vZGUqID0gMCk7CisgICAgICAgIEZ1bmNEZWNsTm9kZShpbnQsIGludCwgY29u
c3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFy
YW1ldGVyTm9kZSogPSAwKTsKIAogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5KCkgeyBy
ZXR1cm4gbV9ib2R5OyB9CiAKQEAgLTE1NzQsNyArMTU3OCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgU3dpdGNoTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFN3aXRjaE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSosIENhc2VCbG9ja05v
ZGUqKTsKKyAgICAgICAgU3dpdGNoTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqLCBDYXNl
QmxvY2tOb2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggZDg4YTlhOGI3NmJlZGU4YTA5
MmFlN2ZiMmM1ZmJkYzVhZDU4ZmEzOS4uZGY0YmM5NTBjMTU0NTk3ZmQ1MTg3NTg2N2YwMTI1NmMx
NmY2YmY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTcy
LDYgKzE3Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFy
RGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFZB
UikpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgaW50IHN0
YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVuZCA9IDA7CiAgICAgaW50IHNjcmF0Y2g7CkBA
IC0xODIsMjAgKzE4MywyMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0
ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpbwogICAgIGZhaWxJZlRy
dWUobV9lcnJvcik7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKICAgICAKLSAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVWYXJTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgdmFyRGVjbHMsIHN0YXJ0LCBlbmQpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVZh
clN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgdmFy
RGVjbHMsIHN0YXJ0LCBlbmQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgog
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUNvbnN0RGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAg
QVNTRVJUKG1hdGNoKENPTlNUVE9LRU4pKTsKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tl
bkNvbHVtbigpOwogICAgIGludCBzdGFydCA9IHRva2VuTGluZSgpOwogICAgIGludCBlbmQgPSAw
OwogICAgIFRyZWVDb25zdERlY2xMaXN0IGNvbnN0RGVjbHMgPSBwYXJzZUNvbnN0RGVjbGFyYXRp
b25MaXN0KGNvbnRleHQpOwogICAgIGZhaWxJZlRydWUobV9lcnJvcik7CiAgICAgZmFpbElmRmFs
c2UoYXV0b1NlbWlDb2xvbigpKTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDb25z
dFN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjb25zdERlY2xzLCBzdGFydCwg
ZW5kKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDb25zdFN0YXRlbWVudChtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgY29uc3REZWNscywgc3RhcnQsIGVuZCk7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0yMTAsNiArMjEyLDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZURvV2hpbGVTdGF0ZW0KICAgICBlbmRMb29wKCk7CiAgICAgZmFpbElmRmFsc2Uo
c3RhdGVtZW50KTsKICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOworICAgIGludCBrZXlU
b2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgY29uc3VtZU9yRmFpbChXSElMRSk7CiAg
ICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBw
YXJzZUV4cHJlc3Npb24oY29udGV4dCk7CkBAIC0yMTcsMTMgKzIyMCwxNCBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
RG9XaGlsZVN0YXRlbQogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAgICAgaWYgKG1h
dGNoKFNFTUlDT0xPTikpCiAgICAgICAgIG5leHQoKTsgLy8gQWx3YXlzIHBlcmZvcm1zIGF1dG9t
YXRpYyBzZW1pY29sb24gaW5zZXJ0aW9uLgotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZURvV2hp
bGVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RhdGVtZW50LCBleHByLCBz
dGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZURvV2hpbGVTdGF0
ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIHN0YXRlbWVu
dCwgZXhwciwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaGlsZVN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkK
IHsKICAgICBBU1NFUlQobWF0Y2goV0hJTEUpKTsKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0
b2tlbkNvbHVtbigpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0
KCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwpAQCAtMjM2LDcgKzI0MCw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VXaGlsZVN0YXRlbWVuCiAgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJz
ZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOwogICAgIGVuZExvb3AoKTsKICAgICBmYWlsSWZG
YWxzZShzdGF0ZW1lbnQpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVdoaWxlU3RhdGVtZW50
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIHN0YXRlbWVudCwgc3RhcnRMaW5lLCBl
bmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaGlsZVN0YXRlbWVudChtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZXhwciwgc3RhdGVtZW50LCBzdGFy
dExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAt
MjQ1LDYgKzI0OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpCiAgICAgVHJlZUV4cHJlc3Np
b24gdmFyRGVjbHMgPSAwOwogICAgIGRvIHsKICAgICAgICAgZGVjbGFyYXRpb25zKys7CisgICAg
ICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgICAgIG5leHQoKTsK
ICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgICAgICAKQEAgLTI2NiwxMSArMjcxLDEx
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpCiAgICAgICAgICAgICBsYXN0SW5pdGlhbGl6ZXIg
PSBpbml0aWFsaXplcjsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGluaXRpYWxpemVyKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IGNvbnRleHQuY3Jl
YXRlQXNzaWduUmVzb2x2ZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCAqbmFtZSwgaW5pdGlh
bGl6ZXIsIGluaXRpYWxBc3NpZ25tZW50cyAhPSBtX2Fzc2lnbm1lbnRDb3VudCwgdmFyU3RhcnQs
IHZhckRpdm90LCBsYXN0VG9rZW5FbmQoKSk7CisgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBu
b2RlID0gY29udGV4dC5jcmVhdGVBc3NpZ25SZXNvbHZlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGtleVRva2VuQ29sdW1uLCAqbmFtZSwgaW5pdGlhbGl6ZXIsIGluaXRpYWxBc3NpZ25tZW50
cyAhPSBtX2Fzc2lnbm1lbnRDb3VudCwgdmFyU3RhcnQsIHZhckRpdm90LCBsYXN0VG9rZW5FbmQo
KSk7CiAgICAgICAgICAgICBpZiAoIXZhckRlY2xzKQogICAgICAgICAgICAgICAgIHZhckRlY2xz
ID0gbm9kZTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB2YXJEZWNscyA9IGNv
bnRleHQuY29tYmluZUNvbW1hTm9kZXMobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdmFyRGVj
bHMsIG5vZGUpOworICAgICAgICAgICAgICAgIHZhckRlY2xzID0gY29udGV4dC5jb21iaW5lQ29t
bWFOb2RlcyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgdmFyRGVj
bHMsIG5vZGUpOwogICAgICAgICB9CiAgICAgfSB3aGlsZSAobWF0Y2goQ09NTUEpKTsKICAgICBy
ZXR1cm4gdmFyRGVjbHM7CkBAIC0yODMsNiArMjg4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlQ29uc3REZWNsTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb25zdERl
Y2wKICAgICBUcmVlQ29uc3REZWNsTGlzdCBjb25zdERlY2xzID0gMDsKICAgICBUcmVlQ29uc3RE
ZWNsTGlzdCB0YWlsID0gMDsKICAgICBkbyB7CisgICAgICAgIGludCBrZXlUb2tlbkNvbHVtbiA9
IHRva2VuQ29sdW1uKCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbWF0Y2hPckZhaWwoSURF
TlQpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBuYW1lID0gbV90b2tlbi5tX2RhdGEuaWRl
bnQ7CkBAIC0yOTUsNyArMzAxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
Q29uc3REZWNsTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb25zdERlY2wKICAgICAgICAg
ICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOyAvLyBjb25zdW1lICc9Jwog
ICAgICAgICAgICAgaW5pdGlhbGl6ZXIgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRl
eHQpOwogICAgICAgICB9Ci0gICAgICAgIHRhaWwgPSBjb250ZXh0LmFwcGVuZENvbnN0RGVjbCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0YWlsLCBuYW1lLCBpbml0aWFsaXplcik7CisgICAg
ICAgIHRhaWwgPSBjb250ZXh0LmFwcGVuZENvbnN0RGVjbChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBrZXlUb2tlbkNvbHVtbiwgdGFpbCwgbmFtZSwgaW5pdGlhbGl6ZXIpOwogICAgICAgICBp
ZiAoIWNvbnN0RGVjbHMpCiAgICAgICAgICAgICBjb25zdERlY2xzID0gdGFpbDsKICAgICB9IHdo
aWxlIChtYXRjaChDT01NQSkpOwpAQCAtMzA2LDYgKzMxMiw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0
KQogewogICAgIEFTU0VSVChtYXRjaChGT1IpKTsKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0
b2tlbkNvbHVtbigpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0
KCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwpAQCAtMzU1LDcgKzM2Miw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgICAgIGVuZExvb3AoKTsKICAgICAgICAgZmFpbElm
RmFsc2Uoc3RhdGVtZW50KTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUZvckluTG9vcChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBmb3JJblRhcmdldCwgZm9ySW5J
bml0aWFsaXplciwgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBpbkxvY2F0aW9uLCBleHBy
RW5kLCBpbml0U3RhcnQsIGluaXRFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBr
ZXlUb2tlbkNvbHVtbiwgZm9ySW5UYXJnZXQsIGZvckluSW5pdGlhbGl6ZXIsIGV4cHIsIHN0YXRl
bWVudCwgZGVjbHNTdGFydCwgaW5Mb2NhdGlvbiwgZXhwckVuZCwgaW5pdFN0YXJ0LCBpbml0RW5k
LCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIH0KICAgICAKICAgICBpZiAoIW1hdGNoKFNFTUlD
T0xPTikpIHsKQEAgLTM5MSw3ICszOTgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAg
ICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVu
dXNlZCk7CiAgICAgICAgIGVuZExvb3AoKTsKICAgICAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50
KTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9yTG9vcChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBkZWNscywgY29uZGl0aW9uLCBpbmNyZW1lbnQsIHN0YXRlbWVudCwgaGFzRGVj
bGFyYXRpb24sIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUZvckxvb3AobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGRl
Y2xzLCBjb25kaXRpb24sIGluY3JlbWVudCwgc3RhdGVtZW50LCBoYXNEZWNsYXJhdGlvbiwgc3Rh
cnRMaW5lLCBlbmRMaW5lKTsKICAgICB9CiAgICAgCiAgICAgLy8gRm9yLWluIGxvb3AKQEAgLTQw
OCwxMyArNDE1LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgZW5kTG9vcCgpOwog
ICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRm9ySW5Mb29wKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGRlY2xzLCBleHByLCBzdGF0
ZW1lbnQsIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUp
OworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZGVjbHMsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFy
dCwgZGVjbHNFbmQsIGV4cHJFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQnJlYWtTdGF0ZW1lbnQoVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKEJSRUFLKSk7CisgICAgaW50IGtleVRv
a2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBpbnQgc3RhcnRDb2wgPSB0b2tlblN0YXJ0
KCk7CiAgICAgaW50IGVuZENvbCA9IHRva2VuRW5kKCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRv
a2VuTGluZSgpOwpAQCAtNDIzLDcgKzQzMSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VCcmVha1N0YXRlbWVuCiAg
ICAgCiAgICAgaWYgKGF1dG9TZW1pQ29sb24oKSkgewogICAgICAgICBmYWlsSWZGYWxzZVdpdGhN
ZXNzYWdlKGJyZWFrSXNWYWxpZCgpLCAiJ2JyZWFrJyBpcyBvbmx5IHZhbGlkIGluc2lkZSBhIHN3
aXRjaCBvciBsb29wIHN0YXRlbWVudCIpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVC
cmVha1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBzdGFydENvbCwgZW5kQ29s
LCBzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCcmVh
a1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgc3Rh
cnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICB9CiAgICAgbWF0Y2hPckZh
aWwoSURFTlQpOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEu
aWRlbnQ7CkBAIC00MzIsMTMgKzQ0MCwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQnJlYWtTdGF0ZW1lbgogICAg
IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgZmFpbElmRmFsc2UoYXV0
b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCcmVha1N0YXRlbWVudCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBpZGVudCwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRM
aW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCcmVha1N0YXRlbWVudCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgaWRlbnQsIHN0YXJ0Q29s
LCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlQ29udGludWVTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRl
eHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKENPTlRJTlVFKSk7CisgICAgaW50IGtleVRva2VuQ29s
dW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBpbnQgc3RhcnRDb2wgPSB0b2tlblN0YXJ0KCk7CiAg
ICAgaW50IGVuZENvbCA9IHRva2VuRW5kKCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGlu
ZSgpOwpAQCAtNDQ3LDcgKzQ1Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb250aW51ZVN0YXRlCiAgICAgCiAg
ICAgaWYgKGF1dG9TZW1pQ29sb24oKSkgewogICAgICAgICBmYWlsSWZGYWxzZVdpdGhNZXNzYWdl
KGNvbnRpbnVlSXNWYWxpZCgpLCAiJ2NvbnRpbnVlJyBpcyBvbmx5IHZhbGlkIGluc2lkZSBhIGxv
b3Agc3RhdGVtZW50Iik7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3Rh
dGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0
TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3Rh
dGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBzdGFydENv
bCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIH0KICAgICBtYXRjaE9yRmFpbChJ
REVOVCk7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVu
dDsKQEAgLTQ1OCwxMyArNDY3LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb250aW51ZVN0YXRlCiAgICAgZW5k
TGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2Vt
aUNvbG9uKCkpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGlkZW50LCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExp
bmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBpZGVudCwgc3RhcnRD
b2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VSZXR1cm5TdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRl
eHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFJFVFVSTikpOworICAgIGludCBrZXlUb2tlbkNvbHVt
biA9IHRva2VuQ29sdW1uKCk7CiAgICAgZmFpbElmRmFsc2UoY3VycmVudFNjb3BlKCktPmlzRnVu
Y3Rpb24oKSk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIGludCBlbmRM
aW5lID0gc3RhcnRMaW5lOwpAQCAtNDc3LDIwICs0ODcsMjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVJldHVyblN0
YXRlbWUKICAgICBpZiAobWF0Y2goU0VNSUNPTE9OKSkKICAgICAgICAgZW5kTGluZSAgPSB0b2tl
bkxpbmUoKTsKICAgICBpZiAoYXV0b1NlbWlDb2xvbigpKQotICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgMCwgc3Rh
cnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlUmV0dXJuU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29s
dW1uLCAwLCBzdGFydCwgZW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIFRyZWVFeHByZXNz
aW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZXhw
cik7CiAgICAgZW5kID0gbGFzdFRva2VuRW5kKCk7CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikp
CiAgICAgICAgIGVuZExpbmUgID0gdG9rZW5MaW5lKCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1Nl
bWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRM
aW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGV4cHIsIHN0YXJ0LCBlbmQsIHN0YXJ0
TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlVGhyb3dTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJU
KG1hdGNoKFRIUk9XKSk7CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsK
ICAgICBpbnQgZVN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tl
bkxpbmUoKTsKICAgICBuZXh0KCk7CkBAIC01MDMsMTMgKzUxNCwxNCBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVGhy
b3dTdGF0ZW1lbgogICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgZmFpbElmRmFs
c2UoYXV0b1NlbWlDb2xvbigpKTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVUaHJv
d1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBlU3RhcnQsIGVFbmQs
IHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVGhyb3dTdGF0
ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGV4cHIsIGVT
dGFydCwgZUVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaXRoU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0
KQogewogICAgIEFTU0VSVChtYXRjaChXSVRIKSk7CisgICAgaW50IGtleVRva2VuQ29sdW1uID0g
dG9rZW5Db2x1bW4oKTsKICAgICBmYWlsSWZUcnVlV2l0aE1lc3NhZ2Uoc3RyaWN0TW9kZSgpLCAi
J3dpdGgnIHN0YXRlbWVudHMgYXJlIG5vdCB2YWxpZCBpbiBzdHJpY3QgbW9kZSIpOwogICAgIGN1
cnJlbnRTY29wZSgpLT5zZXROZWVkc0Z1bGxBY3RpdmF0aW9uKCk7CiAgICAgaW50IHN0YXJ0TGlu
ZSA9IHRva2VuTGluZSgpOwpAQCAtNTI2LDEzICs1MzgsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVdpdGhTdGF0
ZW1lbnQKICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRl
eHQsIHVudXNlZCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICAKLSAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVXaXRoU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IGV4cHIsIHN0YXRlbWVudCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVXaXRoU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGtleVRva2VuQ29sdW1uLCBleHByLCBzdGF0ZW1lbnQsIHN0YXJ0LCBlbmQsIHN0YXJ0TGlu
ZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlU3dpdGNoU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVCht
YXRjaChTV0lUQ0gpKTsKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwog
ICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgY29uc3Vt
ZU9yRmFpbChPUEVOUEFSRU4pOwpAQCAtNTUzLDcgKzU2Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTd2l0Y2hT
dGF0ZW1lCiAgICAgZW5kU3dpdGNoKCk7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFKTsK
ICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQobV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgZmlyc3RDbGF1c2VzLCBkZWZhdWx0Q2xhdXNlLCBzZWNv
bmRDbGF1c2VzLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZVN3aXRjaFN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVt
biwgZXhwciwgZmlyc3RDbGF1c2VzLCBkZWZhdWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2VzLCBzdGFy
dExpbmUsIGVuZExpbmUpOwogICAgIAogfQogCkBAIC02MzcsMjAgKzY1MCwyMSBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlVHJ5U3RhdGVtZW50KAogICAgICAgICBmYWlsSWZGYWxzZShmaW5hbGx5QmxvY2spOwogICAg
IH0KICAgICBmYWlsSWZGYWxzZShjYXRjaEJsb2NrIHx8IGZpbmFsbHlCbG9jayk7Ci0gICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlVHJ5U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IHRyeUJsb2NrLCBpZGVudCwgY2F0Y2hCbG9jaywgZmluYWxseUJsb2NrLCBmaXJzdExpbmUsIGxh
c3RMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVUcnlTdGF0ZW1lbnQobV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgdHJ5QmxvY2ssIGlkZW50LCBjYXRjaEJs
b2NrLCBmaW5hbGx5QmxvY2ssIGZpcnN0TGluZSwgbGFzdExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlYnVnZ2VyU3RhdGVtZW50KFRyZWVCdWls
ZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChERUJVR0dFUikpOworICAgIGludCBr
ZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2Vu
TGluZSgpOwogICAgIGludCBlbmRMaW5lID0gc3RhcnRMaW5lOwogICAgIG5leHQoKTsKICAgICBp
ZiAobWF0Y2goU0VNSUNPTE9OKSkKICAgICAgICAgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAg
ICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVEZWJ1Z2dlcihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBzdGFydExpbmUsIGVuZExpbmUp
OworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZURlYnVnZ2VyKG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIGtleVRva2VuQ29sdW1uLCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtNjYxLDEzICs2NzUsMTMgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJs
b2NrU3RhdGVtZW4KICAgICBuZXh0KCk7CiAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAg
ICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1l
bnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgMCwgc3RhcnQsIG1fbGFzdExpbmUpOworICAg
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCbG9ja1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCAwLCBzdGFydCwgbV9sYXN0TGluZSk7CiAgICAgfQog
ICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdWJ0cmVlID0gcGFyc2VTb3VyY2VFbGVtZW50czxEb250
Q2hlY2tGb3JTdHJpY3RNb2RlPihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShzdWJ0cmVlKTsK
ICAgICBtYXRjaE9yRmFpbChDTE9TRUJSQUNFKTsKICAgICBuZXh0KCk7Ci0gICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3Vi
dHJlZSwgc3RhcnQsIG1fbGFzdExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2Nr
U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHN1YnRy
ZWUsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4KQEAgLTY5MCw3ICs3MDQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RhdGVtZW50KFRyZQogICAgICAgICBy
ZXR1cm4gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKGNvbnRleHQpOwogICAgIGNhc2UgU0VNSUNP
TE9OOgogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUVtcHR5
U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCkpOworICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVFbXB0eVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tl
bkNvbHVtbigpKTsKICAgICBjYXNlIElGOgogICAgICAgICByZXR1cm4gcGFyc2VJZlN0YXRlbWVu
dChjb250ZXh0KTsKICAgICBjYXNlIERPOgpAQCAtNzU5LDEyICs3NzMsMTIgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1
bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCiB7CiAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKQotICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
c3RyaWN0TW9kZSgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHN0cmljdE1vZGUoKSk7
CiAgICAgRGVwdGhNYW5hZ2VyIHN0YXRlbWVudERlcHRoKCZtX3N0YXRlbWVudERlcHRoKTsKICAg
ICBtX3N0YXRlbWVudERlcHRoID0gMDsKICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RnVuY3Rp
b25Cb2R5QnVpbGRlciBib2R5QnVpbGRlcihjb25zdF9jYXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xv
YmFsRGF0YSksIG1fbGV4ZXIuZ2V0KCkpOwogICAgIGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxl
bWVudHM8Q2hlY2tGb3JTdHJpY3RNb2RlPihib2R5QnVpbGRlcikpOwotICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBzdHJpY3RN
b2RlKCkpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBzdHJpY3RNb2RlKCkpOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtNzk0LDcgKzgwOCw3IEBAIHRlbXBsYXRlIDxG
dW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5n
U2NvcGUsIGNsYXNzCiAgICAgaWYgKGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBjYWNo
ZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUgPyBmaW5kQ2FjaGVkRnVu
Y3Rpb25JbmZvKG9wZW5CcmFjZVBvcykgOiAwKSB7CiAgICAgICAgIC8vIElmIHdlJ3JlIGluIGEg
c3RyaWN0IGNvbnRleHQsIHRoZSBjYWNoZWQgZnVuY3Rpb24gaW5mbyBtdXN0IHNheSBpdCB3YXMg
c3RyaWN0IHRvby4KICAgICAgICAgQVNTRVJUKCFzdHJpY3RNb2RlKCkgfHwgY2FjaGVkSW5mby0+
c3RyaWN0TW9kZSk7Ci0gICAgICAgIGJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keSht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlKTsKKyAgICAg
ICAgYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIHRva2VuQ29sdW1uKCksIGNhY2hlZEluZm8tPnN0cmljdE1vZGUpOwogICAgICAgICAK
ICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9yZUZ1bmN0aW9uSW5mbyhjYWNoZWRJbmZvKTsK
ICAgICAgICAgZmFpbElmRmFsc2UocG9wU2NvcGUoZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6
Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbykpOwpAQCAtODU0LDcgKzg2OCw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
dW5jdGlvbkRlY2xhCiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9u
TmVlZHNOYW1lLCB0cnVlPihjb250ZXh0LCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJh
Y2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7CiAgICAgZmFpbElmRmFsc2Uo
bmFtZSk7CiAgICAgZmFpbElmRmFsc2VJZlN0cmljdChkZWNsYXJlVmFyaWFibGUobmFtZSkpOwot
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIG5hbWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZVBvcywgY2xvc2VC
cmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5D
b2x1bW4oKSwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNl
UG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKIH0KIAogc3RydWN0IExhYmVsSW5mbyB7
CkBAIC04ODIsNiArODk2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb25PckwKICAgICBkbyB7CiAg
ICAgICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICAgICAgaW50IHN0YXJ0TGluZSA9
IHRva2VuTGluZSgpOworICAgICAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigp
OwogICAgICAgICBpZiAoIW5leHRUb2tlbklzQ29sb24oKSkgewogICAgICAgICAgICAgLy8gSWYg
d2UgaGl0IHRoaXMgcGF0aCB3ZSdyZSBtYWtpbmcgYSBleHByZXNzaW9uIHN0YXRlbWVudCwgd2hp
Y2gKICAgICAgICAgICAgIC8vIGJ5IGRlZmluaXRpb24gY2FuJ3QgbWFrZSB1c2Ugb2YgY29udGlu
dWUvYnJlYWsgc28gd2UgY2FuIGp1c3QKQEAgLTg4OSw3ICs5MDQsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhw
cmVzc2lvbk9yTAogICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gZXhwcmVzc2lvbiA9IHBhcnNl
RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGV4cHJlc3Npb24p
OwogICAgICAgICAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICAgICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgZXhwcmVzc2lvbiwgc3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKKyAgICAgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwga2V5VG9rZW5Db2x1bW4sIGV4cHJlc3Npb24sIHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CiAg
ICAgICAgIH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0
YS5pZGVudDsKICAgICAgICAgaW50IGVuZCA9IHRva2VuRW5kKCk7CkBAIC05MjgsNyArOTQzLDcg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUV4cHJlc3Npb25PckwKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGFiZWxzLnNpemUoKTsgaSsrKSB7CiAgICAgICAg
IGNvbnN0IExhYmVsSW5mbyYgaW5mbyA9IGxhYmVsc1tsYWJlbHMuc2l6ZSgpIC0gaSAtIDFdOwot
ICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmNyZWF0ZUxhYmVsU3RhdGVtZW50KG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIGluZm8ubV9pZGVudCwgc3RhdGVtZW50LCBpbmZvLm1fc3RhcnQs
IGluZm8ubV9lbmQpOworICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmNyZWF0ZUxhYmVsU3Rh
dGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGluZm8ubV9p
ZGVudCwgc3RhdGVtZW50LCBpbmZvLm1fc3RhcnQsIGluZm8ubV9lbmQpOwogICAgIH0KICAgICBy
ZXR1cm4gc3RhdGVtZW50OwogfQpAQCAtOTM3LDE3ICs5NTIsMTggQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uU3RhdGVtZW50KFRyZWVCdWlsZGVy
JiBjb250ZXh0KQogewogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbnQg
a2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHJl
c3Npb24gPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcmVz
c2lvbik7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHJl
c3Npb24sIHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
RXhwclN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwg
ZXhwcmVzc2lvbiwgc3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJZlN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4
dCkKIHsKICAgICBBU1NFUlQobWF0Y2goSUYpKTsKLSAgICAKKyAgICBpbnQga2V5VG9rZW5Db2x1
bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBzdGFydCA9IHRva2VuTGluZSgpOwogICAgIG5l
eHQoKTsKICAgICAKQEAgLTk2Myw3ICs5NzksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVAog
ICAgIGZhaWxJZkZhbHNlKHRydWVCbG9jayk7CiAgICAgCiAgICAgaWYgKCFtYXRjaChFTFNFKSkK
LSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXJ0LCBlbmQpOworICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCBrZXlUb2tlbkNvbHVtbiwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXJ0LCBlbmQpOwogICAg
IAogICAgIFZlY3RvcjxUcmVlRXhwcmVzc2lvbj4gZXhwclN0YWNrOwogICAgIFZlY3RvcjxwYWly
PGludCwgaW50PiA+IHBvc1N0YWNrOwpAQCAtMTAwMyw3ICsxMDE5LDcgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlm
U3RhdGVtZW50KFQKICAgICAgICAgc3RhdGVtZW50U3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAg
ICBwYWlyPGludCwgaW50PiBwb3MgPSBwb3NTdGFjay5sYXN0KCk7CiAgICAgICAgIHBvc1N0YWNr
LnJlbW92ZUxhc3QoKTsKLSAgICAgICAgc3RhdGVtZW50U3RhY2suYXBwZW5kKGNvbnRleHQuY3Jl
YXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVl
QmxvY2ssIHBvcy5maXJzdCwgcG9zLnNlY29uZCkpOworICAgICAgICBzdGF0ZW1lbnRTdGFjay5h
cHBlbmQoY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCB0b2tlbkNvbHVtbigpLCBjb25kaXRpb24sIHRydWVCbG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vj
b25kKSk7CiAgICAgfQogICAgIAogICAgIHdoaWxlICghZXhwclN0YWNrLmlzRW1wdHkoKSkgewpA
QCAtMTAxNSwxNiArMTAzMSwxNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVAogICAgICAgICBz
dGF0ZW1lbnRTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgIHBhaXI8aW50LCBpbnQ+IHBvcyA9
IHBvc1N0YWNrLmxhc3QoKTsKICAgICAgICAgcG9zU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAg
ICBzdGF0ZW1lbnRTdGFjay5hcHBlbmQoY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBjb25kaXRpb24sIHRydWVCbG9jaywgZmFsc2VCbG9jaywgcG9z
LmZpcnN0LCBwb3Muc2Vjb25kKSk7CisgICAgICAgIHN0YXRlbWVudFN0YWNrLmFwcGVuZChjb250
ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29s
dW1uKCksIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBmYWxzZUJsb2NrLCBwb3MuZmlyc3QsIHBvcy5z
ZWNvbmQpKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1l
bnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXRl
bWVudFN0YWNrLmxhc3QoKSwgc3RhcnQsIGVuZCk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
SWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgY29u
ZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXRlbWVudFN0YWNrLmxhc3QoKSwgc3RhcnQsIGVuZCk7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb24o
VHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgZmFpbElmU3RhY2tPdmVyZmxvdygpOworICAg
IGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgVHJlZUV4cHJlc3Npb24g
bm9kZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFs
c2Uobm9kZSk7CiAgICAgaWYgKCFtYXRjaChDT01NQSkpCkBAIC0xMDM0LDcgKzEwNTEsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUV4cHJlc3Npb24oVAogICAgIG1fbm9uTEhTQ291bnQrKzsKICAgICBUcmVlRXhw
cmVzc2lvbiByaWdodCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAg
ZmFpbElmRmFsc2UocmlnaHQpOwotICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpDb21tYSBjb21t
YU5vZGUgPSBjb250ZXh0LmNyZWF0ZUNvbW1hRXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCBub2RlLCByaWdodCk7CisgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkNvbW1hIGNvbW1hTm9k
ZSA9IGNvbnRleHQuY3JlYXRlQ29tbWFFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtl
eVRva2VuQ29sdW1uLCBub2RlLCByaWdodCk7CiAgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewog
ICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKICAgICAgICAgcmln
aHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwpAQCAtMTA0OSw2ICsxMDY2
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW4KIHsKICAgICBmYWlsSWZTdGFja092ZXJmbG93
KCk7CiAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOworICAgIGludCBrZXlUb2tlbkNvbHVt
biA9IHRva2VuQ29sdW1uKCk7CiAgICAgaW50IGluaXRpYWxBc3NpZ25tZW50Q291bnQgPSBtX2Fz
c2lnbm1lbnRDb3VudDsKICAgICBpbnQgaW5pdGlhbE5vbkxIU0NvdW50ID0gbV9ub25MSFNDb3Vu
dDsKICAgICBUcmVlRXhwcmVzc2lvbiBsaHMgPSBwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihj
b250ZXh0KTsKQEAgLTEwNzgsNyArMTA5Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVp
bGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVuCiAg
ICAgICAgIH0KICAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAg
IGhhZEFzc2lnbm1lbnQgPSB0cnVlOwotICAgICAgICBjb250ZXh0LmFzc2lnbm1lbnRTdGFja0Fw
cGVuZChhc3NpZ25tZW50U3RhY2ssIGxocywgc3RhcnQsIHRva2VuU3RhcnQoKSwgbV9hc3NpZ25t
ZW50Q291bnQsIG9wKTsKKyAgICAgICAgY29udGV4dC5hc3NpZ25tZW50U3RhY2tBcHBlbmQoYXNz
aWdubWVudFN0YWNrLCBsaHMsIHN0YXJ0LCBrZXlUb2tlbkNvbHVtbiwgbV9hc3NpZ25tZW50Q291
bnQsIG9wKTsKICAgICAgICAgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgICAgIG1fYXNzaWdu
bWVudENvdW50Kys7CiAgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3Mp
OwpAQCAtMTEwMSw3ICsxMTE5LDcgQEAgZW5kOgogICAgICAgICByZXR1cm4gbGhzOwogICAgIAog
ICAgIHdoaWxlIChhc3NpZ25tZW50U3RhY2spCi0gICAgICAgIGxocyA9IGNvbnRleHQuY3JlYXRl
QXNzaWdubWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBhc3NpZ25tZW50U3RhY2ssIGxo
cywgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50Q291bnQsIGxhc3RUb2tlbkVu
ZCgpKTsKKyAgICAgICAgbGhzID0gY29udGV4dC5jcmVhdGVBc3NpZ25tZW50KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBhc3NpZ25tZW50U3RhY2ssIGxocywgaW5p
dGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50Q291bnQsIGxhc3RUb2tlbkVuZCgpKTsK
ICAgICAKICAgICByZXR1cm4gbGhzOwogfQpAQCAtMTEwOSw2ICsxMTI3LDcgQEAgZW5kOgogdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29uZGl0aW9uYWxFeHByZXNz
aW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogeworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRv
a2VuQ29sdW1uKCk7CiAgICAgVHJlZUV4cHJlc3Npb24gY29uZCA9IHBhcnNlQmluYXJ5RXhwcmVz
c2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShjb25kKTsKICAgICBpZiAoIW1hdGNoKFFV
RVNUSU9OKSkKQEAgLTExMjEsNyArMTE0MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29uZGl0aW9uYWxFCiAg
ICAgCiAgICAgVHJlZUV4cHJlc3Npb24gcmhzID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihj
b250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShyaHMpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUNvbmRpdGlvbmFsRXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjb25kLCBsaHMsIHJo
cyk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29uZGl0aW9uYWxFeHByKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBjb25kLCBsaHMsIHJocyk7CiB9CiAKIEFM
V0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNVbmFyeU9wKEpTVG9rZW5UeXBlIHRva2VuKQpAQCAt
MTE2NSw3ICsxMTg0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VCaW5hcnlFeHByZXMKICAgICAgICAgICAgIHR5
cGVuYW1lIFRyZWVCdWlsZGVyOjpCaW5hcnlPcGVyYW5kIHJocyA9IGNvbnRleHQuZ2V0RnJvbU9w
ZXJhbmRTdGFjaygtMSk7CiAgICAgICAgICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5
T3BlcmFuZCBsaHMgPSBjb250ZXh0LmdldEZyb21PcGVyYW5kU3RhY2soLTIpOwogICAgICAgICAg
ICAgY29udGV4dC5zaHJpbmtPcGVyYW5kU3RhY2tCeShvcGVyYW5kU3RhY2tEZXB0aCwgMik7Ci0g
ICAgICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9wZXJhdGlvbihtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBvcGVyYW5kU3RhY2tEZXB0aCwgb3BlcmF0b3JTdGFja0RlcHRoLCBsaHMsIHJo
cyk7CisgICAgICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9wZXJhdGlvbihtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBvcGVyYW5kU3RhY2tEZXB0aCwgb3BlcmF0
b3JTdGFja0RlcHRoLCBsaHMsIHJocyk7CiAgICAgICAgICAgICBjb250ZXh0Lm9wZXJhdG9yU3Rh
Y2tQb3Aob3BlcmF0b3JTdGFja0RlcHRoKTsKICAgICAgICAgfQogICAgICAgICBjb250ZXh0Lm9w
ZXJhdG9yU3RhY2tBcHBlbmQob3BlcmF0b3JTdGFja0RlcHRoLCBvcGVyYXRvclRva2VuLCBwcmVj
ZWRlbmNlKTsKQEAgLTExNzYsNyArMTE5NSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQmluYXJ5RXhwcmVzCiAg
ICAgICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpCaW5hcnlPcGVyYW5kIHJocyA9IGNvbnRleHQu
Z2V0RnJvbU9wZXJhbmRTdGFjaygtMSk7CiAgICAgICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpC
aW5hcnlPcGVyYW5kIGxocyA9IGNvbnRleHQuZ2V0RnJvbU9wZXJhbmRTdGFjaygtMik7CiAgICAg
ICAgIGNvbnRleHQuc2hyaW5rT3BlcmFuZFN0YWNrQnkob3BlcmFuZFN0YWNrRGVwdGgsIDIpOwot
ICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9wZXJhdGlvbihtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBvcGVyYW5kU3RhY2tEZXB0aCwgb3BlcmF0b3JTdGFja0RlcHRoLCBsaHMsIHJocyk7
CisgICAgICAgIGNvbnRleHQuYXBwZW5kQmluYXJ5T3BlcmF0aW9uKG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIHRva2VuQ29sdW1uKCksIG9wZXJhbmRTdGFja0RlcHRoLCBvcGVyYXRvclN0YWNr
RGVwdGgsIGxocywgcmhzKTsKICAgICAgICAgY29udGV4dC5vcGVyYXRvclN0YWNrUG9wKG9wZXJh
dG9yU3RhY2tEZXB0aCk7CiAgICAgfQogICAgIHJldHVybiBjb250ZXh0LnBvcE9wZXJhbmRTdGFj
ayhvcGVyYW5kU3RhY2tEZXB0aCk7CkBAIC0xMjI4LDggKzEyNDcsOCBAQCB0ZW1wbGF0ZSA8Ym9v
bCBjb21wbGV0ZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFycwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1
bmN0aW9uSW5mbzxGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBmYWxzZT4oY29udGV4dCwgYWNjZXNz
b3JOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJv
ZHlTdGFydExpbmUpKSk7CiAgICAgICAgIGlmIChzdHJpbmdQcm9wZXJ0eU5hbWUpCi0gICAgICAg
ICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5
PGNvbXBsZXRlPihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0eXBlLCBzdHJpbmdQcm9wZXJ0
eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9k
eVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LnRlbXBsYXRl
IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8Y29tcGxldGU+KGNvbnN0X2Nhc3Q8SlNHbG9i
YWxEYXRhKj4obV9nbG9iYWxEYXRhKSwgbV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdHlwZSwg
bnVtZXJpY1Byb3BlcnR5TmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9z
ZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKKyAgICAgICAgICAgIHJldHVy
biBjb250ZXh0LnRlbXBsYXRlIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8Y29tcGxldGU+
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHR5cGUsIHN0cmluZ1By
b3BlcnR5TmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9z
LCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQudGVt
cGxhdGUgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eTxjb21wbGV0ZT4oY29uc3RfY2FzdDxK
U0dsb2JhbERhdGEqPihtX2dsb2JhbERhdGEpLCBtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0
b2tlbkNvbHVtbigpLCB0eXBlLCBudW1lcmljUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5
LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUp
OwogICAgIH0KICAgICBjYXNlIE5VTUJFUjogewogICAgICAgICBkb3VibGUgcHJvcGVydHlOYW1l
ID0gbV90b2tlbi5tX2RhdGEuZG91YmxlVmFsdWU7CkBAIC0xMjU3LDcgKzEyNzYsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZU9iamVjdExpdGVyYQogICAgIAogICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkgewog
ICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVy
YWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4o
KSk7CiAgICAgfQogICAgIAogICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVy
dHk8ZmFsc2U+KGNvbnRleHQpOwpAQCAtMTI2OSw3ICsxMjg4LDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VPYmpl
Y3RMaXRlcmEKICAgICAgICAgbV9sZXhlci0+c2V0TGluZU51bWJlcihvbGRMaW5lTnVtYmVyKTsK
ICAgICAgICAgcmV0dXJuIHBhcnNlU3RyaWN0T2JqZWN0TGl0ZXJhbChjb250ZXh0KTsKICAgICB9
Ci0gICAgVHJlZVByb3BlcnR5TGlzdCBwcm9wZXJ0eUxpc3QgPSBjb250ZXh0LmNyZWF0ZVByb3Bl
cnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBwcm9wZXJ0eSk7CisgICAgVHJlZVBy
b3BlcnR5TGlzdCBwcm9wZXJ0eUxpc3QgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBwcm9wZXJ0eSk7CiAgICAgVHJl
ZVByb3BlcnR5TGlzdCB0YWlsID0gcHJvcGVydHlMaXN0OwogICAgIHdoaWxlIChtYXRjaChDT01N
QSkpIHsKICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CkBAIC0x
Mjg1LDE0ICsxMzA0LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlT2JqZWN0TGl0ZXJhCiAgICAgICAgICAgICBt
X2xleGVyLT5zZXRMaW5lTnVtYmVyKG9sZExpbmVOdW1iZXIpOwogICAgICAgICAgICAgcmV0dXJu
IHBhcnNlU3RyaWN0T2JqZWN0TGl0ZXJhbChjb250ZXh0KTsKICAgICAgICAgfQotICAgICAgICB0
YWlsID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgcHJvcGVydHksIHRhaWwpOworICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0
eUxpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgcHJvcGVydHks
IHRhaWwpOwogICAgIH0KICAgICAKICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0UpOwogICAg
IAogICAgIG1fbm9uTEhTQ291bnQgPSBvbGROb25MSFNDb3VudDsKICAgICAKLSAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHBy
b3BlcnR5TGlzdCk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBwcm9wZXJ0eUxpc3QpOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMTMwNCw3ICsxMzIzLDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VTdHJpY3RPYmplY3QKIAogICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkgewogICAg
ICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSk7
CiAgICAgfQogICAgIAogICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8
dHJ1ZT4oY29udGV4dCk7CkBAIC0xMzE2LDcgKzEzMzUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0cmljdE9i
amVjdAogICAgIGlmICghbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkKQogICAgICAgICBvYmplY3RW
YWxpZGF0b3IuYWRkKGNvbnRleHQuZ2V0TmFtZShwcm9wZXJ0eSkuaW1wbCgpLCBjb250ZXh0Lmdl
dFR5cGUocHJvcGVydHkpKTsKICAgICAKLSAgICBUcmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlz
dCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IHByb3BlcnR5KTsKKyAgICBUcmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQu
Y3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1u
KCksIHByb3BlcnR5KTsKICAgICBUcmVlUHJvcGVydHlMaXN0IHRhaWwgPSBwcm9wZXJ0eUxpc3Q7
CiAgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewogICAgICAgICBuZXh0KCk7CkBAIC0xMzM0LDE0
ICsxMzUzLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RyaWN0T2JqZWN0CiAgICAgICAgICAgICAgICAgcHJv
cGVydHlFbnRyeS5pdGVyYXRvci0+c2Vjb25kIHw9IGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSk7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRl
UHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5LCB0YWlsKTsK
KyAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHByb3BlcnR5LCB0YWlsKTsKICAgICB9CiAgICAg
CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFKTsKIAogICAgIG1fbm9uTEhTQ291bnQgPSBv
bGROb25MSFNDb3VudDsKIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHlMaXN0KTsKKyAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2Vu
Q29sdW1uKCksIHByb3BlcnR5TGlzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+CkBAIC0xMzU4LDcgKzEzNzcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFycmF5TGl0ZXJhbAogICAgIH0K
ICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDS0VUKSkgewogICAgICAgICBuZXh0KFRyZWVCdWlsZGVy
OjpEb250QnVpbGRTdHJpbmdzKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXko
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZWxpc2lvbnMpOworICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigp
LCBlbGlzaW9ucyk7CiAgICAgfQogICAgIAogICAgIFRyZWVFeHByZXNzaW9uIGVsZW0gPSBwYXJz
ZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwpAQCAtMTM3Nyw3ICsxMzk2LDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VBcnJheUxpdGVyYWwKICAgICAgICAgCiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJS
QUNLRVQpKSB7CiAgICAgICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdz
KTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFycmF5KG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIGVsaXNpb25zLCBlbGVtZW50TGlzdCk7CisgICAgICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVt
bigpLCBlbGlzaW9ucywgZWxlbWVudExpc3QpOwogICAgICAgICB9CiAgICAgICAgIFRyZWVFeHBy
ZXNzaW9uIGVsZW0gPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAg
ICBmYWlsSWZGYWxzZShlbGVtKTsKQEAgLTEzODgsNyArMTQwNyw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJy
YXlMaXRlcmFsCiAgICAgCiAgICAgbV9ub25MSFNDb3VudCA9IG9sZE5vbkxIU0NvdW50OwogICAg
IAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFycmF5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGVsZW1lbnRMaXN0KTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBlbGVtZW50TGlzdCk7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0xNDEzLDcgKzE0MzIsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVByaW1hcnlFeHByZQogICAgIH0KICAgICBjYXNlIFRISVNUT0tFTjogewogICAgICAgICBu
ZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LnRoaXNFeHByKG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCkpOworICAgICAgICByZXR1cm4gY29udGV4dC50aGlzRXhwcihtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpKTsKICAgICB9CiAgICAgY2FzZSBJREVOVDogewog
ICAgICAgICBpbnQgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CkBAIC0xNDIxLDI5ICsxNDQwLDI5IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAgICAgICAgIG5leHQoKTsKICAgICAgICAgY3VycmVu
dFNjb3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMt
PmV2YWwgPT0gKmlkZW50KTsKICAgICAgICAgbV9sYXN0SWRlbnRpZmllciA9IGlkZW50OwotICAg
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXNvbHZlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGlkZW50LCBzdGFydCk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVJlc29sdmUo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgaWRlbnQsIHN0YXJ0KTsK
ICAgICB9CiAgICAgY2FzZSBTVFJJTkc6IHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRl
bnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVTdHJpbmcobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgaWRlbnQp
OworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVTdHJpbmcobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgaWRlbnQpOwogICAgIH0KICAgICBjYXNlIE5VTUJFUjog
ewogICAgICAgICBkb3VibGUgZCA9IG1fdG9rZW4ubV9kYXRhLmRvdWJsZVZhbHVlOwogICAgICAg
ICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU51bWJlckV4cHIobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgZCk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU51
bWJlckV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZCk7CiAg
ICAgfQogICAgIGNhc2UgTlVMTFRPS0VOOiB7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlTnVsbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTnVsbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0
b2tlbkNvbHVtbigpKTsKICAgICB9CiAgICAgY2FzZSBUUlVFVE9LRU46IHsKICAgICAgICAgbmV4
dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCb29sZWFuKG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIHRydWUpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCb29sZWFu
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHRydWUpOwogICAgIH0K
ICAgICBjYXNlIEZBTFNFVE9LRU46IHsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVCb29sZWFuKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQm9vbGVhbihtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCB0b2tlbkNvbHVtbigpLCBmYWxzZSk7CiAgICAgfQogICAgIGNhc2UgRElWRVFVQUw6
CiAgICAgY2FzZSBESVZJREU6IHsKQEAgLTE0NTcsNyArMTQ3Niw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJp
bWFyeUV4cHJlCiAgICAgICAgIAogICAgICAgICBpbnQgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAg
ICAgICAgIG5leHQoKTsKLSAgICAgICAgVHJlZUV4cHJlc3Npb24gcmUgPSBjb250ZXh0LmNyZWF0
ZVJlZ0V4cChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCAqcGF0dGVybiwgKmZsYWdzLCBzdGFy
dCk7CisgICAgICAgIFRyZWVFeHByZXNzaW9uIHJlID0gY29udGV4dC5jcmVhdGVSZWdFeHAobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgKnBhdHRlcm4sICpmbGFncywg
c3RhcnQpOwogICAgICAgICBpZiAoIXJlKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyKiB5YXJy
RXJyb3JNc2cgPSBZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLT51c3RyaW5nKCkpOwogICAgICAg
ICAgICAgQVNTRVJUKCFtX2Vycm9yTWVzc2FnZS5pc051bGwoKSk7CkBAIC0xNDgxLDEzICsxNTAw
LDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUFyZ3VtZW50cyBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VBcmd1bWVudHMoVHJlCiAgICAgVHJlZUV4cHJlc3Npb24gZmlyc3RB
cmcgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNl
KGZpcnN0QXJnKTsKICAgICAKLSAgICBUcmVlQXJndW1lbnRzTGlzdCBhcmdMaXN0ID0gY29udGV4
dC5jcmVhdGVBcmd1bWVudHNMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGZpcnN0QXJn
KTsKKyAgICBUcmVlQXJndW1lbnRzTGlzdCBhcmdMaXN0ID0gY29udGV4dC5jcmVhdGVBcmd1bWVu
dHNMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGZpcnN0QXJn
KTsKICAgICBUcmVlQXJndW1lbnRzTGlzdCB0YWlsID0gYXJnTGlzdDsKICAgICB3aGlsZSAobWF0
Y2goQ09NTUEpKSB7CiAgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3Mp
OwogICAgICAgICBUcmVlRXhwcmVzc2lvbiBhcmcgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9u
KGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShhcmcpOwotICAgICAgICB0YWlsID0gY29u
dGV4dC5jcmVhdGVBcmd1bWVudHNMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRhaWws
IGFyZyk7CisgICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50c0xpc3QobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgdGFpbCwgYXJnKTsKICAgICB9CiAg
ICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVB
cmd1bWVudHMoYXJnTGlzdCk7CkBAIC0xNTE0LDcgKzE1MzMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJl
ckV4cHJlcwogICAgICAgICBpbnQgYm9keVN0YXJ0TGluZSA9IDA7CiAgICAgICAgIG5leHQoKTsK
ICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTm9SZXF1aXJl
bWVudHMsIGZhbHNlPihjb250ZXh0LCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQ
b3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7Ci0gICAgICAgIGJhc2UgPSBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBuYW1lLCBi
b2R5LCBwYXJhbWV0ZXJzLCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExp
bmUsIG1fbGFzdExpbmUpOworICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4
cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgbmFtZSwgYm9keSwg
cGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBt
X2xhc3RMaW5lKTsKICAgICB9IGVsc2UKICAgICAgICAgYmFzZSA9IHBhcnNlUHJpbWFyeUV4cHJl
c3Npb24oY29udGV4dCk7CiAgICAgCkBAIC0xNTI5LDcgKzE1NDgsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1l
bWJlckV4cHJlcwogICAgICAgICAgICAgaW50IGluaXRpYWxBc3NpZ25tZW50cyA9IG1fYXNzaWdu
bWVudENvdW50OwogICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gcHJvcGVydHkgPSBwYXJzZUV4
cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0eSk7Ci0g
ICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVCcmFja2V0QWNjZXNzKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGJhc2UsIHByb3BlcnR5LCBpbml0aWFsQXNzaWdubWVudHMgIT0gbV9h
c3NpZ25tZW50Q291bnQsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQo
KSk7CisgICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVCcmFja2V0QWNjZXNzKG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGJhc2UsIHByb3BlcnR5LCBpbml0
aWFsQXNzaWdubWVudHMgIT0gbV9hc3NpZ25tZW50Q291bnQsIGV4cHJlc3Npb25TdGFydCwgZXhw
cmVzc2lvbkVuZCwgdG9rZW5FbmQoKSk7CiAgICAgICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NF
QlJBQ0tFVCk7CiAgICAgICAgICAgICBtX25vbkxIU0NvdW50ID0gbm9uTEhTQ291bnQ7CiAgICAg
ICAgICAgICBicmVhazsKQEAgLTE1NDIsMTIgKzE1NjEsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJF
eHByZXMKICAgICAgICAgICAgICAgICBpbnQgZXhwckVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAg
ICAgICAgICAgICAgIFRyZWVBcmd1bWVudHMgYXJndW1lbnRzID0gcGFyc2VBcmd1bWVudHMoY29u
dGV4dCk7CiAgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UoYXJndW1lbnRzKTsKLSAgICAgICAg
ICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVOZXdFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIGJhc2UsIGFyZ3VtZW50cywgc3RhcnQsIGV4cHJFbmQsIGxhc3RUb2tlbkVuZCgpKTsg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgYmFzZSwgYXJndW1lbnRz
LCBzdGFydCwgZXhwckVuZCwgbGFzdFRva2VuRW5kKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBpbnQgZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAg
ICAgICAgICAgICAgIFRyZWVBcmd1bWVudHMgYXJndW1lbnRzID0gcGFyc2VBcmd1bWVudHMoY29u
dGV4dCk7CiAgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UoYXJndW1lbnRzKTsKLSAgICAgICAg
ICAgICAgICBiYXNlID0gY29udGV4dC5tYWtlRnVuY3Rpb25DYWxsTm9kZShtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBiYXNlLCBhcmd1bWVudHMsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lv
bkVuZCwgbGFzdFRva2VuRW5kKCkpOworICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0Lm1h
a2VGdW5jdGlvbkNhbGxOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1u
KCksIGJhc2UsIGFyZ3VtZW50cywgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCBsYXN0
VG9rZW5FbmQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX25vbkxIU0NvdW50ID0g
bm9uTEhTQ291bnQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1NTcsNyArMTU3Niw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICBpbnQgZXhwcmVzc2lvbkVuZCA9IGxh
c3RUb2tlbkVuZCgpOwogICAgICAgICAgICAgbmV4dEV4cGVjdElkZW50aWZpZXIoTGV4ZXJGbGFn
c0lnbm9yZVJlc2VydmVkV29yZHMgfCBUcmVlQnVpbGRlcjo6RG9udEJ1aWxkS2V5d29yZHMpOwog
ICAgICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwotICAgICAgICAgICAgYmFzZSA9IGNvbnRl
eHQuY3JlYXRlRG90QWNjZXNzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGJhc2UsIG1fdG9r
ZW4ubV9kYXRhLmlkZW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5k
KCkpOworICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRG90QWNjZXNzKG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlk
ZW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kKCkpOwogICAgICAg
ICAgICAgbmV4dCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE1NjcsNyAr
MTU4Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgfQogZW5kTWVtYmVyRXhwcmVz
c2lvbjoKICAgICB3aGlsZSAobmV3Q291bnQtLSkKLSAgICAgICAgYmFzZSA9IGNvbnRleHQuY3Jl
YXRlTmV3RXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBzdGFydCwgbGFzdFRv
a2VuRW5kKCkpOworICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVOZXdFeHByKG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGJhc2UsIHN0YXJ0LCBsYXN0VG9rZW5F
bmQoKSk7CiAgICAgcmV0dXJuIGJhc2U7CiB9CiAKQEAgLTE2MDAsNyArMTYxOSw3IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgbV9u
b25MSFNDb3VudCsrOwotICAgICAgICBjb250ZXh0LmFwcGVuZFVuYXJ5VG9rZW4odG9rZW5TdGFj
a0RlcHRoLCBtX3Rva2VuLm1fdHlwZSwgdG9rZW5TdGFydCgpKTsKKyAgICAgICAgY29udGV4dC5h
cHBlbmRVbmFyeVRva2VuKHRva2VuU3RhY2tEZXB0aCwgbV90b2tlbi5tX3R5cGUsIHRva2VuQ29s
dW1uKCkpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25D
b3VudCsrOwogICAgIH0KQEAgLTE2MTcsNyArMTYzNiw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHBy
ZXNzCiAgICAgY2FzZSBQTFVTUExVUzoKICAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNv
dW50Kys7CiAgICAgICAgIG1fbm9uTEhTQ291bnQrKzsKLSAgICAgICAgZXhwciA9IGNvbnRleHQu
bWFrZVBvc3RmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIE9wUGx1c1Bs
dXMsIHN1YkV4cHJTdGFydCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOworICAgICAgICBl
eHByID0gY29udGV4dC5tYWtlUG9zdGZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
dG9rZW5Db2x1bW4oKSwgZXhwciwgT3BQbHVzUGx1cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5F
bmQoKSwgdG9rZW5FbmQoKSk7CiAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAg
IGZhaWxJZlRydWVJZlN0cmljdFdpdGhOYW1lQW5kTWVzc2FnZShpc0V2YWxPckFyZ3VtZW50cywg
IiciLCBtX2xhc3RJZGVudGlmaWVyLT5pbXBsKCksICInIGNhbm5vdCBiZSBtb2RpZmllZCBpbiBz
dHJpY3QgbW9kZSIpOwogICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3QocmVxdWlyZXNMRXhwcik7
CkBAIC0xNjI2LDcgKzE2NDUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgIGNhc2Ug
TUlOVVNNSU5VUzoKICAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAg
ICAgIG1fbm9uTEhTQ291bnQrKzsKLSAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhO
b2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIE9wTWludXNNaW51cywgc3ViRXhw
clN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CisgICAgICAgIGV4cHIgPSBjb250
ZXh0Lm1ha2VQb3N0Zml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVt
bigpLCBleHByLCBPcE1pbnVzTWludXMsIHN1YkV4cHJTdGFydCwgbGFzdFRva2VuRW5kKCksIHRv
a2VuRW5kKCkpOwogICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICBmYWlsSWZU
cnVlSWZTdHJpY3RXaXRoTmFtZUFuZE1lc3NhZ2UoaXNFdmFsT3JBcmd1bWVudHMsICInIiwgbV9s
YXN0SWRlbnRpZmllci0+aW1wbCgpLCAiJyBjYW5ub3QgYmUgbW9kaWZpZWQgaW4gc3RyaWN0IG1v
ZGUiKTsKICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KHJlcXVpcmVzTEV4cHIpOwpAQCAtMTY0
NCwzNiArMTY2MywzNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgIHdoaWxlICh0b2tl
blN0YWNrRGVwdGgpIHsKICAgICAgICAgc3dpdGNoIChjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xh
c3RUeXBlKHRva2VuU3RhY2tEZXB0aCkpIHsKICAgICAgICAgY2FzZSBFWENMQU1BVElPTjoKLSAg
ICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0ZUxvZ2ljYWxOb3QobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgZXhwcik7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVMb2dp
Y2FsTm90KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGV4cHIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVElMREU6Ci0gICAgICAgICAgICBleHBy
ID0gY29udGV4dC5tYWtlQml0d2lzZU5vdE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
ZXhwcik7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlQml0d2lzZU5vdE5vZGUobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZXhwcik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBNSU5VUzoKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0
Lm1ha2VOZWdhdGVOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIpOworICAgICAg
ICAgICAgZXhwciA9IGNvbnRleHQubWFrZU5lZ2F0ZU5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgdG9rZW5Db2x1bW4oKSwgZXhwcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBQTFVTOgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlVW5hcnlQbHVzKG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIpOworICAgICAgICAgICAgZXhwciA9IGNvbnRl
eHQuY3JlYXRlVW5hcnlQbHVzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1u
KCksIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUExVU1BMVVM6CiAg
ICAgICAgIGNhc2UgQVVUT1BMVVNQTFVTOgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFr
ZVByZWZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgT3BQbHVzUGx1cywg
Y29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhw
clN0YXJ0ICsgMSwgZW5kKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhO
b2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGV4cHIsIE9wUGx1
c1BsdXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCks
IHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CiAgICAgICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsr
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTUlOVVNNSU5VUzoKICAgICAgICAg
Y2FzZSBBVVRPTUlOVVNNSU5VUzoKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVm
aXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIE9wTWludXNNaW51cywgY29u
dGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0
YXJ0ICsgMSwgZW5kKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2Rl
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGV4cHIsIE9wTWludXNN
aW51cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwg
c3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKICAgICAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUWVBFT0Y6Ci0gICAgICAgICAgICBl
eHByID0gY29udGV4dC5tYWtlVHlwZU9mTm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBl
eHByKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VUeXBlT2ZOb2RlKG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGV4cHIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgVk9JRFRPS0VOOgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQu
Y3JlYXRlVm9pZChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByKTsKKyAgICAgICAgICAg
IGV4cHIgPSBjb250ZXh0LmNyZWF0ZVZvaWQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9r
ZW5Db2x1bW4oKSwgZXhwcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBERUxF
VEVUT0tFTjoKICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdFdpdGhOYW1lQW5kTWVzc2Fn
ZShjb250ZXh0LmlzUmVzb2x2ZShleHByKSwgIkNhbm5vdCBkZWxldGUgdW5xdWFsaWZpZWQgcHJv
cGVydHkiLCBtX2xhc3RJZGVudGlmaWVyLT5pbXBsKCksICJpbiBzdHJpY3QgbW9kZSIpOwotICAg
ICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZURlbGV0ZU5vZGUobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgZXhwciwgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFj
a0RlcHRoKSwgZW5kLCBlbmQpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZURlbGV0
ZU5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZXhwciwgY29u
dGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgZW5kLCBlbmQp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBJ
ZiB3ZSBnZXQgaGVyZSBzb21ldGhpbmcgaGFzIGdvbmUgaG9ycmlibHkgaG9ycmlibHkgd3JvbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGMyYTExZDY2NWI3OTEzZWM1
ZjY0MzFjMDYzNmMxYThhNmRkNmEwMTYuLjhlNmMxMGI4NTU3N2RmMGI3MGM2YjhhYzc0Mjg1ZDcw
YTY4ZTUzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtNTU0LDcg
KzU1NCwxMiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbV90b2tlbi5tX2luZm8uZW5kT2Zm
c2V0OwogICAgIH0KICAgICAKLSAgICBjb25zdCBjaGFyKiBnZXRUb2tlbk5hbWUoSlNUb2tlblR5
cGUgdG9rKSAKKyAgICBBTFdBWVNfSU5MSU5FIGludCB0b2tlbkNvbHVtbigpCisgICAgeworICAg
ICAgICByZXR1cm4gbV90b2tlbi5tX2luZm8uY29sdW1uOworICAgIH0KKworICAgIGNvbnN0IGNo
YXIqIGdldFRva2VuTmFtZShKU1Rva2VuVHlwZSB0b2spCiAgICAgewogICAgICAgICBzd2l0Y2gg
KHRvaykgewogICAgICAgICBjYXNlIE5VTExUT0tFTjogCkBAIC0xMDA1LDYgKzEwMTAsNyBAQCBQ
YXNzUmVmUHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iagogICAgIGlmIChtX3NvdXJjZUVsZW1lbnRzKSB7CiAgICAg
ICAgIHJlc3VsdCA9IFBhcnNlZE5vZGU6OmNyZWF0ZSgmbGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xv
YmFsRGF0YSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
bGV4ZXItPmN1cnJlbnRDb2x1bW5OdW1iZXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fc291cmNlRWxlbWVudHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX3ZhckRlY2xhcmF0aW9ucyA/ICZtX3ZhckRlY2xhcmF0aW9ucy0+ZGF0YSA6IDAs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2Z1bmNEZWNsYXJhdGlvbnMg
PyAmbV9mdW5jRGVjbGFyYXRpb25zLT5kYXRhIDogMCwKQEAgLTEwMTIsNyArMTAxOCw3IEBAIFBh
c3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqbV9zb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZlYXR1
cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9udW1Db25zdGFudHMp
OwotICAgICAgICByZXN1bHQtPnNldExvYyhtX3NvdXJjZS0+Zmlyc3RMaW5lKCksIG1fbGFzdExp
bmUpOworICAgICAgICByZXN1bHQtPnNldExvYyhtX3NvdXJjZS0+Zmlyc3RMaW5lKCksIG1fbGFz
dExpbmUsIG1fbGV4ZXItPmN1cnJlbnRDb2x1bW5OdW1iZXIoKSk7CiAgICAgfSBlbHNlIGlmIChs
ZXhpY2FsR2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIC8vIFdlIGNhbiBuZXZlciBzZWUgYSBzeW50
YXggZXJyb3Igd2hlbiByZXBhcnNpbmcgYSBmdW5jdGlvbiwgc2luY2Ugd2Ugc2hvdWxkIGhhdmUK
ICAgICAgICAgLy8gcmVwb3J0ZWQgdGhlIGVycm9yIHdoZW4gcGFyc2luZyB0aGUgY29udGFpbmlu
ZyBwcm9ncmFtIG9yIGV2YWwgY29kZS4gU28gaWYgd2UncmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCmluZGV4IGExZWE3NTFhYzIwYTc5MmZmNGM1ZTYyMWEw
MWJjNzc0OWVhM2E5YmYuLjYzYjNmYjgxZTlkMzQ3MGEzNDdlYjIzNmQzOTBkMzFiMjVmMGM2YWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTQx
LDEwICsxNDEsMTEgQEAgdW5pb24gSlNUb2tlbkRhdGEgewogfTsKIAogc3RydWN0IEpTVG9rZW5J
bmZvIHsKLSAgICBKU1Rva2VuSW5mbygpIDogbGluZSgwKSB7IH0KKyAgICBKU1Rva2VuSW5mbygp
IDogbGluZSgwKSwgY29sdW1uKDApIHsgfQogICAgIGludCBsaW5lOwogICAgIGludCBzdGFydE9m
ZnNldDsKICAgICBpbnQgZW5kT2Zmc2V0OworICAgIGludCBjb2x1bW47CiB9OwogCiBzdHJ1Y3Qg
SlNUb2tlbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5o
CmluZGV4IGMyYzkzNzU2ZGUwM2FiY2EyOTVkZTEzYWM4ZWUxMzgxYzdkNDBjNDguLmMzM2JhMDZj
YzQwYTQwZmViZWYwODkzZjU0YzkxOWUwZTdjOGEzZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC0xMTksNDIgKzExOSw0MiBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERvbnRCdWlsZFN0cmluZ3MgPSBMZXhlckZsYWdz
RG9udEJ1aWxkU3RyaW5nczsKIAogICAgIGludCBjcmVhdGVTb3VyY2VFbGVtZW50cygpIHsgcmV0
dXJuIDE7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBDYWxsRXhwcjsgfQorICAgIEV4cHJlc3Np
b25UeXBlIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gQ2FsbEV4cHI7IH0KICAgICB2b2lkIGFwcGVuZFRvQ29tbWEoRXhwcmVz
c2lvblR5cGUmIGJhc2UsIEV4cHJlc3Npb25UeXBlIHJpZ2h0KSB7IGJhc2UgPSByaWdodDsgfQot
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbW1hRXhwcihpbnQsIEV4cHJlc3Npb25UeXBlLCBF
eHByZXNzaW9uVHlwZSByaWdodCkgeyByZXR1cm4gcmlnaHQ7IH0KLSAgICBFeHByZXNzaW9uVHlw
ZSBtYWtlQXNzaWduTm9kZShpbnQsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgRXhwcmVzc2lv
blR5cGUsIGJvb2wsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHBy
OyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZVByZWZpeE5vZGUoaW50LCBFeHByZXNzaW9uVHlw
ZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFByZUV4cHI7IH0KLSAgICBFeHBy
ZXNzaW9uVHlwZSBtYWtlUG9zdGZpeE5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3Is
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFBvc3RFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUg
bWFrZVR5cGVPZk5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVHlwZW9mRXhwcjsg
fQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VEZWxldGVOb2RlKGludCwgRXhwcmVzc2lvblR5cGUs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERlbGV0ZUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlw
ZSBtYWtlTmVnYXRlTm9kZShpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7
IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlQml0d2lzZU5vdE5vZGUoaW50LCBFeHByZXNzaW9u
VHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTG9n
aWNhbE5vdChpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KLSAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVVbmFyeVBsdXMoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1
cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlVm9pZChpbnQsIEV4cHJl
c3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSB0aGlz
RXhwcihpbnQpIHsgcmV0dXJuIFRoaXNFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
UmVzb2x2ZShpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJuIFJlc29sdmVFeHBy
OyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQpIHsgcmV0dXJu
IE9iamVjdExpdGVyYWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29tbWFFeHBy
KGludCwgaW50LCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUgcmlnaHQpIHsgcmV0dXJu
IHJpZ2h0OyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZUFzc2lnbk5vZGUoaW50LCBpbnQsIEV4
cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGJvb2wsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUg
bWFrZVByZWZpeE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gUHJlRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQb3N0
Zml4Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvblR5cGUsIE9wZXJhdG9yLCBpbnQsIGludCwgaW50
KSB7IHJldHVybiBQb3N0RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VUeXBlT2ZOb2Rl
KGludCwgaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVHlwZW9mRXhwcjsgfQorICAgIEV4
cHJlc3Npb25UeXBlIG1ha2VEZWxldGVOb2RlKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gRGVsZXRlRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1h
a2VOZWdhdGVOb2RlKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHBy
OyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZUJpdHdpc2VOb3ROb2RlKGludCwgaW50LCBFeHBy
ZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlTG9naWNhbE5vdChpbnQsIGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVVuYXJ5UGx1cyhpbnQsIGludCwgRXhwcmVz
c2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZVZvaWQoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAg
ICBFeHByZXNzaW9uVHlwZSB0aGlzRXhwcihpbnQsIGludCkgeyByZXR1cm4gVGhpc0V4cHI7IH0K
KyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZXNvbHZlKGludCwgaW50LCBjb25zdCBJZGVudGlm
aWVyKiwgaW50KSB7IHJldHVybiBSZXNvbHZlRXhwcjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZU9iamVjdExpdGVyYWwoaW50LCBpbnQpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9
Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyYXkoaW50LCBpbnQpIHsgcmV0dXJuIEFycmF5
TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVPYmplY3RMaXRlcmFsKGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9CiAgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlQXJyYXkoaW50LCBpbnQsIGludCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhw
cjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bWJlckV4cHIoaW50LCBkb3VibGUpIHsg
cmV0dXJuIE51bWJlckV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVTdHJpbmcoaW50
LCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4gU3RyaW5nRXhwcjsgfQotICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZUJvb2xlYW4oaW50LCBib29sKSB7IHJldHVybiBCb29sRXhwcjsgfQotICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoaW50KSB7IHJldHVybiBOdWxsRXhwcjsgfQotICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoaW50LCBFeHByZXNzaW9uVHlwZSwg
RXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHBy
OyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGludCwgRXhwcmVzc2lvblR5
cGUsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9
Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGludCwgY29uc3QgSWRlbnRpZmllciYg
cGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYsIGludCkgeyByZXR1cm4gWWFycjo6Y2hlY2tTeW50
YXgocGF0dGVybi51c3RyaW5nKCkpID8gMCA6IFJlZ0V4cEV4cHI7IH0KLSAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVOZXdFeHByKGludCwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gTmV3RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIo
aW50LCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KLSAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVDb25kaXRpb25hbEV4cHIoaW50LCBFeHByZXNzaW9uVHlwZSwg
RXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBDb25kaXRpb25hbEV4cHI7
IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBc3NpZ25SZXNvbHZlKGludCwgY29uc3QgSWRl
bnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBB
c3NpZ25tZW50RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihp
bnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBpbnQgY3JlYXRlRnVuY3Rpb25Cb2R5KGludCwgYm9v
bCkgeyByZXR1cm4gMTsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5KGludCwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhwcjsgfQorICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZU51bWJlckV4cHIoaW50LCBpbnQsIGRvdWJsZSkgeyByZXR1cm4gTnVtYmVyRXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVN0cmluZyhpbnQsIGludCwgY29uc3QgSWRl
bnRpZmllciopIHsgcmV0dXJuIFN0cmluZ0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVCb29sZWFuKGludCwgaW50LCBib29sKSB7IHJldHVybiBCb29sRXhwcjsgfQorICAgIEV4cHJl
c3Npb25UeXBlIGNyZWF0ZU51bGwoaW50LCBpbnQpIHsgcmV0dXJuIE51bGxFeHByOyB9CisgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2VzcyhpbnQsIGludCwgRXhwcmVzc2lvblR5
cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBCcmFja2V0
RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2VzcyhpbnQsIGludCwgRXhw
cmVzc2lvblR5cGUsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBE
b3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVnRXhwKGludCwgaW50LCBjb25z
dCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiwgaW50KSB7IHJldHVybiBZ
YXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnVzdHJpbmcoKSkgPyAwIDogUmVnRXhwRXhwcjsgfQor
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBl
LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVOZXdFeHByKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQpIHsg
cmV0dXJuIE5ld0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVDb25kaXRpb25hbEV4
cHIoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5
cGUpIHsgcmV0dXJuIENvbmRpdGlvbmFsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZUFzc2lnblJlc29sdmUoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uVHlw
ZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KKyAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoaW50LCBpbnQsIGNvbnN0IElkZW50aWZp
ZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBGdW5jdGlvbkV4cHI7
IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25Cb2R5KGludCwgaW50LCBib29sKSB7IHJldHVybiAx
OyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3Jl
YXRlQXJndW1lbnRzKGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVBcmd1bWVudHNM
aXN0KGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50c0xpc3Qo
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0
KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIHRlbXBsYXRlIDxib29sIGNv
bXBsZXRlPiBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBp
bnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlKQogICAgIHsKICAgICAgICAgaWYgKCFjb21wbGV0
ZSkKQEAgLTE2OCw4ICsxNjgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gUHJvcGVy
dHkodHlwZSk7CiAgICAgICAgIHJldHVybiBQcm9wZXJ0eSgmZ2xvYmFsRGF0YS0+cGFyc2VyQXJl
bmEtPmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcihnbG9iYWxEYXRhLCBu
YW1lKSwgdHlwZSk7CiAgICAgfQotICAgIGludCBjcmVhdGVQcm9wZXJ0eUxpc3QoaW50LCBQcm9w
ZXJ0eSkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVQcm9wZXJ0eUxpc3QoaW50LCBQcm9w
ZXJ0eSwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVByb3BlcnR5TGlzdChpbnQs
IGludCwgUHJvcGVydHkpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlUHJvcGVydHlMaXN0
KGludCwgaW50LCBQcm9wZXJ0eSwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUVs
ZW1lbnRMaXN0KGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUVsZW1lbnRM
aXN0KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlRm9ybWFsUGFy
YW1ldGVyTGlzdChjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4gMTsgfQpAQCAtMTc3LDQwICsx
NzcsNDAgQEAgcHVibGljOgogICAgIGludCBjcmVhdGVDbGF1c2UoaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBp
bnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIHZvaWQgc2V0
VXNlc0FyZ3VtZW50cyhpbnQpIHsgfQotICAgIGludCBjcmVhdGVGdW5jRGVjbFN0YXRlbWVudChp
bnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUJsb2NrU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVFeHByU3RhdGVtZW50KGludCwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVJZlN0YXRlbWVudChpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50
cyhpbnQsIGludCkgeyB9CisgICAgaW50IGNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGludCwgaW50
LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gMTsgfQorICAgIGludCBjcmVhdGVCbG9ja1N0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVFeHByU3RhdGVtZW50KGludCwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUlmU3RhdGVtZW50
KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3Jl
YXRlRm9yTG9vcChpbnQsIGludCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRm9ySW5Mb29wKGludCwgY29uc3QgSWRlbnRpZmllcios
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gMTsgfQotICAgIGludCBjcmVhdGVGb3JJbkxvb3AoaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVFbXB0eVN0
YXRlbWVudChpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlVmFyU3RhdGVtZW50KGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVSZXR1cm5TdGF0
ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGlu
dCBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQotICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQsIGNvbnN0IElkZW50aWZpZXIq
LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29udGlu
dWVTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBp
bnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBp
bnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVRyeVN0YXRlbWVudChp
bnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQotICAgIGludCBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVdoaWxlU3RhdGVtZW50
KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVdp
dGhTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAx
OyB9Ci0gICAgaW50IGNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlTGFiZWxTdGF0ZW1lbnQoaW50LCBjb25z
dCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVh
dGVUaHJvd1N0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAx
OyB9Ci0gICAgaW50IGNyZWF0ZURlYnVnZ2VyKGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0K
LSAgICBpbnQgY3JlYXRlQ29uc3RTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9Ci0gICAgaW50IGFwcGVuZENvbnN0RGVjbChpbnQsIGludCwgY29uc3QgSWRlbnRpZmll
ciosIGludCkgeyByZXR1cm4gMTsgfQotICAgIHRlbXBsYXRlIDxib29sIHN0cmljdD4gUHJvcGVy
dHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0
eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
KQorICAgIGludCBjcmVhdGVJZlN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRm9yTG9vcChpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBj
cmVhdGVGb3JJbkxvb3AoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBp
bnQgY3JlYXRlRm9ySW5Mb29wKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVFbXB0eVN0YXRlbWVudChp
bnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVWYXJTdGF0ZW1lbnQoaW50LCBp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlUmV0dXJuU3Rh
dGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQor
ICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUJyZWFrU3RhdGVtZW50KGludCwgaW50LCBj
b25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAg
aW50IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50LCBpbnQs
IGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAg
ICBpbnQgY3JlYXRlVHJ5U3RhdGVtZW50KGludCwgaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIq
LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlU3dpdGNo
U3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9CisgICAgaW50IGNyZWF0ZVdoaWxlU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlV2l0aFN0YXRlbWVudChpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGlu
dCBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlTGFiZWxTdGF0ZW1lbnQoaW50LCBpbnQsIGNvbnN0
IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0
ZVRocm93U3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gMTsgfQorICAgIGludCBjcmVhdGVEZWJ1Z2dlcihpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29uc3RTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgYXBwZW5kQ29uc3REZWNsKGludCwgaW50LCBp
bnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICB0ZW1wbGF0ZSA8
Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoaW50LCBp
bnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50KQogICAgIHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwog
ICAgICAgICBpZiAoIXN0cmljdCkKICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsK
ICAgICAgICAgcmV0dXJuIFByb3BlcnR5KG5hbWUsIHR5cGUpOwogICAgIH0KLSAgICB0ZW1wbGF0
ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBkb3Vi
bGUgbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkKKyAgICB0ZW1wbGF0ZSA8Ym9v
bCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBpbnQsIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGRvdWJs
ZSBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KQogICAgIHsKICAgICAgICAgaWYg
KCFzdHJpY3QpCiAgICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CkBAIC0yMTksNyAr
MjE5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmRTdGF0ZW1lbnQoaW50LCBpbnQpIHsg
fQogICAgIHZvaWQgYWRkVmFyKGNvbnN0IElkZW50aWZpZXIqLCBib29sKSB7IH0KLSAgICBpbnQg
Y29tYmluZUNvbW1hTm9kZXMoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBj
b21iaW5lQ29tbWFOb2RlcyhpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBp
bnQgZXZhbENvdW50KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZvaWQgYXBwZW5kQmluYXJ5
RXhwcmVzc2lvbkluZm8oaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50IGV4cHIsIGludCwgaW50
LCBpbnQsIGJvb2wpCiAgICAgewpAQCAtMjM1LDcgKzIzNSw3IEBAIHB1YmxpYzoKICAgICBib29s
IG9wZXJhdG9yU3RhY2tIYXNIaWdoZXJQcmVjZWRlbmNlKGludCYsIGludCkgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIEJpbmFyeU9wZXJhbmQgZ2V0RnJvbU9wZXJhbmRTdGFjayhpbnQpIHsgcmV0dXJu
IG1fdG9wQmluYXJ5RXhwcjsgfQogICAgIHZvaWQgc2hyaW5rT3BlcmFuZFN0YWNrQnkoaW50JiBv
cGVyYW5kU3RhY2tEZXB0aCwgaW50IGFtb3VudCkgeyBvcGVyYW5kU3RhY2tEZXB0aCAtPSBhbW91
bnQ7IH0KLSAgICB2b2lkIGFwcGVuZEJpbmFyeU9wZXJhdGlvbihpbnQsIGludCYgb3BlcmFuZFN0
YWNrRGVwdGgsIGludCYsIEJpbmFyeU9wZXJhbmQsIEJpbmFyeU9wZXJhbmQpIHsgb3BlcmFuZFN0
YWNrRGVwdGgrKzsgfQorICAgIHZvaWQgYXBwZW5kQmluYXJ5T3BlcmF0aW9uKGludCwgaW50LCBp
bnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQmLCBCaW5hcnlPcGVyYW5kLCBCaW5hcnlPcGVyYW5k
KSB7IG9wZXJhbmRTdGFja0RlcHRoKys7IH0KICAgICB2b2lkIG9wZXJhdG9yU3RhY2tBcHBlbmQo
aW50JiBvcGVyYXRvclN0YWNrRGVwdGgsIGludCwgaW50KSB7IG9wZXJhdG9yU3RhY2tEZXB0aCsr
OyB9CiAgICAgaW50IHBvcE9wZXJhbmRTdGFjayhpbnQmKSB7IGludCByZXMgPSBtX3RvcEJpbmFy
eUV4cHI7IG1fdG9wQmluYXJ5RXhwciA9IDA7IHJldHVybiByZXM7IH0KICAgICAKQEAgLTI0NSw3
ICsyNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bmFyeVRva2VuU3RhY2tSZW1vdmVMYXN0KGlu
dCYgc3RhY2tEZXB0aCkgeyBzdGFja0RlcHRoID0gMDsgfQogICAgIAogICAgIHZvaWQgYXNzaWdu
bWVudFN0YWNrQXBwZW5kKGludCwgaW50LCBpbnQsIGludCwgaW50LCBPcGVyYXRvcikgeyB9Ci0g
ICAgaW50IGNyZWF0ZUFzc2lnbm1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQXNzaWdubWVu
dChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgQVNTRVJUX05PVF9SRUFDSEVE
KCk7IHJldHVybiAxOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgZ2V0TmFtZShjb25zdCBQcm9w
ZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsgQVNTRVJUKHByb3BlcnR5Lm5hbWUpOyByZXR1cm4gKnBy
b3BlcnR5Lm5hbWU7IH0KICAgICBQcm9wZXJ0eU5vZGU6OlR5cGUgZ2V0VHlwZShjb25zdCBQcm9w
ZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsgcmV0dXJuIHByb3BlcnR5LnR5cGU7IH0KICAgICBib29s
IGlzUmVzb2x2ZShFeHByZXNzaW9uVHlwZSBleHByKSBjb25zdCB7IHJldHVybiBleHByID09IFJl
c29sdmVFeHByIHx8IGV4cHIgPT0gUmVzb2x2ZUV2YWxFeHByOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggZjIyMjdjNzQ1Y2M4
YTAxYmQzOGVhOGY0ZDBhYmM3NTM5M2FhMDM5OC4uZDNhOTJhN2M0NzU3NzM1MWVkYjBjMDZmZTIx
MzhiNmMzNTkwMzFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dERlYnVnU2VydmVyLmNwcApAQCAtNzUsMjAgKzc1LDI4IEBAIFN0cmluZyBTY3JpcHREZWJ1Z1Nl
cnZlcjo6c2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRC
cmVhCiAgICAgU291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBpdCA9IG1fc291cmNl
SWRUb0JyZWFrcG9pbnRzLmZpbmQoc291cmNlSURWYWx1ZSk7CiAgICAgaWYgKGl0ID09IG1fc291
cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQogICAgICAgICBpdCA9IG1fc291cmNlSWRUb0JyZWFr
cG9pbnRzLnNldChzb3VyY2VJRFZhbHVlLCBMaW5lVG9CcmVha3BvaW50TWFwKCkpLml0ZXJhdG9y
OwotICAgIGlmIChpdC0+c2Vjb25kLmNvbnRhaW5zKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJl
ciArIDEpKQotICAgICAgICByZXR1cm4gIiI7Ci0gICAgaXQtPnNlY29uZC5zZXQoc2NyaXB0QnJl
YWtwb2ludC5saW5lTnVtYmVyICsgMSwgc2NyaXB0QnJlYWtwb2ludCk7CisgICAgTGluZVRvQnJl
YWtwb2ludE1hcDo6aXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+c2Vjb25kLmZpbmQoc2NyaXB0QnJl
YWtwb2ludC5saW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQu
ZW5kKCkpCisgICAgICAgIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5zZXQoc2NyaXB0QnJlYWtwb2lu
dC5saW5lTnVtYmVyICsgMSwgQnJlYWtwb2ludHNJbkxpbmUoKSkuaXRlcmF0b3I7CisKKyAgICBC
cmVha3BvaW50c0luTGluZSYgYnJlYWtzVmVjdG9yID0gYnJlYWtzSXQtPnNlY29uZDsKKyAgICB1
bnNpZ25lZCBicmVha3NDb3VudCA9IGJyZWFrc1ZlY3Rvci5zaXplKCk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGJyZWFrc0NvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKGJyZWFrc1Zl
Y3Rvci5hdChpKS5jb2x1bW5OdW1iZXIgPT0gc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXIp
CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgfQorICAgIGJyZWFrc1ZlY3Rvci5hcHBlbmQo
c2NyaXB0QnJlYWtwb2ludCk7CisKICAgICAqYWN0dWFsTGluZU51bWJlciA9IHNjcmlwdEJyZWFr
cG9pbnQubGluZU51bWJlcjsKLSAgICAvLyBGSVhNRShXSzUzMDAzKTogaW1wbGVtZW50IHNldHRp
bmcgYnJlYWtwb2ludHMgYnkgbGluZTpjb2x1bW4uCi0gICAgKmFjdHVhbENvbHVtbk51bWJlciA9
IDA7Ci0gICAgcmV0dXJuIHNvdXJjZUlEICsgIjoiICsgU3RyaW5nOjpudW1iZXIoc2NyaXB0QnJl
YWtwb2ludC5saW5lTnVtYmVyKTsKKyAgICAqYWN0dWFsQ29sdW1uTnVtYmVyID0gc2NyaXB0QnJl
YWtwb2ludC5jb2x1bW5OdW1iZXI7CisgICAgcmV0dXJuIHNvdXJjZUlEICsgIjoiICsgU3RyaW5n
OjpudW1iZXIoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyKSArICI6IiArIFN0cmluZzo6bnVt
YmVyKHNjcmlwdEJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkKIHsK
ICAgICBWZWN0b3I8U3RyaW5nPiB0b2tlbnM7CiAgICAgYnJlYWtwb2ludElkLnNwbGl0KCI6Iiwg
dG9rZW5zKTsKLSAgICBpZiAodG9rZW5zLnNpemUoKSAhPSAyKQorICAgIGlmICh0b2tlbnMuc2l6
ZSgpICE9IDMpCiAgICAgICAgIHJldHVybjsKICAgICBib29sIHN1Y2Nlc3M7CiAgICAgaW50cHRy
X3Qgc291cmNlSURWYWx1ZSA9IHRva2Vuc1swXS50b0ludFB0cigmc3VjY2Vzcyk7CkBAIC05Nyw5
ICsxMDUsNjMgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludChjb25z
dCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkKICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyID0gdG9rZW5z
WzFdLnRvVUludCgmc3VjY2Vzcyk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm47
CisgICAgdW5zaWduZWQgY29sdW1uTnVtYmVyID0gdG9rZW5zWzJdLnRvVUludCgmc3VjY2Vzcyk7
CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICByZXR1cm47CisKICAgICBTb3VyY2VJZFRvQnJl
YWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChz
b3VyY2VJRFZhbHVlKTsKLSAgICBpZiAoaXQgIT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5k
KCkpCi0gICAgICAgIGl0LT5zZWNvbmQucmVtb3ZlKGxpbmVOdW1iZXIgKyAxKTsKKyAgICBpZiAo
aXQgPT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBMaW5lVG9CcmVha3BvaW50TWFwOjppdGVyYXRvciBicmVha3NJdCA9IGl0LT5zZWNvbmQuZmlu
ZChsaW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIEJyZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3Ig
PSBicmVha3NJdC0+c2Vjb25kOworICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVj
dG9yLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkr
KykgeworICAgICAgICBpZiAoYnJlYWtzVmVjdG9yLmF0KGkpLmNvbHVtbk51bWJlciA9PSBzdGF0
aWNfY2FzdDxpbnQ+KGNvbHVtbk51bWJlcikpIHsKKyAgICAgICAgICAgIGJyZWFrc1ZlY3Rvci5y
ZW1vdmUoaSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ3VycmVudFN0YXRlbWVudFBvc2l0aW9uKGludHB0
cl90IHNvdXJjZUlELCBpbnQgbGluZSkKK3sKKyAgICBpZiAobGluZSA8IDApCisgICAgICAgIHJl
dHVybjsKKworICAgIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PFNv
dXJjZVByb3ZpZGVyKj4oc291cmNlSUQpOworCisgICAgaWYgKG1fY3VycmVudFNvdXJjZUlEICE9
IHNvdXJjZUlEKSB7CisgICAgICAgIFN0cmluZyBzb3VyY2VDb2RlID0gdXN0cmluZ1RvU3RyaW5n
KEpTQzo6VVN0cmluZyhjb25zdF9jYXN0PFN0cmluZ0ltcGwqPihzb3VyY2UtPmRhdGEoKSkpKTsK
KyAgICAgICAgbV9jdXJyZW50U291cmNlQ29kZS5jbGVhcigpOworICAgICAgICBzb3VyY2VDb2Rl
LnNwbGl0KCJcbiIsIHRydWUsIG1fY3VycmVudFNvdXJjZUNvZGUpOworICAgICAgICBtX2N1cnJl
bnRTb3VyY2VJRCA9IHNvdXJjZUlEOworICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlv
bi5saW5lTnVtYmVyID0gMDsKKyAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29s
dW1uTnVtYmVyID0gMDsKKyAgICB9CisKKyAgICBpZiAobGluZSAhPSBtX2N1cnJlbnRTdGF0ZW1l
bnRQb3NpdGlvbi5saW5lTnVtYmVyKSB7CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0
aW9uLmxpbmVOdW1iZXIgPSBsaW5lOworICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlv
bi5jb2x1bW5OdW1iZXIgPSAwOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IHN0
YXJ0TGluZSA9IHNvdXJjZS0+c3RhcnRQb3NpdGlvbigpLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsK
KyAgICBpZiAoKG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIgLSBzdGFydExp
bmUgLSAxKSA+PSBzdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudFNvdXJjZUNvZGUuc2l6ZSgpKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGNvbnN0IFN0cmluZyYgY29kZUluTGluZSA9IG1fY3VycmVu
dFNvdXJjZUNvZGVbbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51bWJlciAtIHN0YXJ0
TGluZSAtIDFdOworICAgIGlmIChjb2RlSW5MaW5lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGludCBuZXh0Q29sdW1uID0gY29kZUluTGluZS5maW5kKCI7IiwgbV9jdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyKTsKKyAgICBpZiAobmV4dENvbHVtbiAhPSAtMSkg
eworICAgICAgICBVQ2hhciBjID0gY29kZUluTGluZVtuZXh0Q29sdW1uICsgMV07CisgICAgICAg
IGlmIChjID09ICcgJyB8fCBjID09ICdcdCcpCisgICAgICAgICAgICBuZXh0Q29sdW1uICs9IDE7
CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmNvbHVtbk51bWJlciA9IG5leHRD
b2x1bW4gKyAxOworICAgIH0gZWxzZQorICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlv
bi5jb2x1bW5OdW1iZXIgPSAwOwogfQogCiBib29sIFNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVh
a3BvaW50KGludHB0cl90IHNvdXJjZUlELCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKSBj
b25zdApAQCAtMTEwLDE5ICsxNzIsMzcgQEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJl
YWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3MKICAgICBT
b3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJZFRv
QnJlYWtwb2ludHMuZmluZChzb3VyY2VJRCk7CiAgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0Jy
ZWFrcG9pbnRzLmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW50IGxpbmVOdW1i
ZXIgPSBwb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKTsKLSAgICBpZiAobGluZU51bWJlciA8
PSAwKQorCisgICAgaW50IGxpbmVOdW1iZXIgPSBwb3NpdGlvbi5tX2xpbmUuemVyb0Jhc2VkSW50
KCk7CisgICAgaW50IGNvbHVtbk51bWJlciA9IHBvc2l0aW9uLm1fY29sdW1uLnplcm9CYXNlZElu
dCgpOworICAgIGlmIChsaW5lTnVtYmVyIDwgMCB8fCBjb2x1bW5OdW1iZXIgPCAwKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBMaW5lVG9CcmVha3BvaW50TWFwOjpjb25zdF9pdGVyYXRv
ciBicmVha3NJdCA9IGl0LT5zZWNvbmQuZmluZChsaW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGJy
ZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBM
aW5lVG9CcmVha3BvaW50TWFwOjpjb25zdF9pdGVyYXRvciBicmVha0l0ID0gaXQtPnNlY29uZC5m
aW5kKGxpbmVOdW1iZXIpOwotICAgIGlmIChicmVha0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisK
KyAgICBib29sIGhpdCA9IGZhbHNlOworICAgIGNvbnN0IEJyZWFrcG9pbnRzSW5MaW5lJiBicmVh
a3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25kOworICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50ID0g
YnJlYWtzVmVjdG9yLnNpemUoKTsKKyAgICB1bnNpZ25lZCBpOworICAgIGZvciAoaSA9IDA7IGkg
PCBicmVha3NDb3VudDsgaSsrKSB7CisgICAgICAgIGludCBicmVha0NvbHVtbiA9IGJyZWFrc1Zl
Y3Rvci5hdChpKS5jb2x1bW5OdW1iZXI7CisgICAgICAgIGludCBicmVha0xpbmUgPSBicmVha3NW
ZWN0b3IuYXQoaSkubGluZU51bWJlcjsKKyAgICAgICAgaWYgKGxpbmVOdW1iZXIgPT0gYnJlYWtM
aW5lICYmIGNvbHVtbk51bWJlciA9PSBicmVha0NvbHVtbikgeworICAgICAgICAgICAgaGl0ID0g
dHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmICghaGl0
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBBbiBlbXB0eSBjb25kaXRpb24gY291
bnRzIGFzIG5vIGNvbmRpdGlvbiB3aGljaCBpcyBlcXVpdmFsZW50IHRvICJ0cnVlIi4KLSAgICBp
ZiAoYnJlYWtJdC0+c2Vjb25kLmNvbmRpdGlvbi5pc0VtcHR5KCkpCisgICAgaWYgKGJyZWFrc1Zl
Y3Rvci5hdChpKS5jb25kaXRpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIEpTVmFsdWUgZXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gbV9jdXJyZW50Q2Fs
bEZyYW1lLT5ldmFsdWF0ZShzdHJpbmdUb1VTdHJpbmcoYnJlYWtJdC0+c2Vjb25kLmNvbmRpdGlv
biksIGV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBtX2N1cnJlbnRDYWxsRnJhbWUt
PmV2YWx1YXRlKHN0cmluZ1RvVVN0cmluZyhicmVha3NWZWN0b3IuYXQoaSkuY29uZGl0aW9uKSwg
ZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgIC8vIEFuIGVycm9uZW91
cyBjb25kaXRpb24gY291bnRzIGFzICJmYWxzZSIuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTM0NywyMCArNDI3LDIwIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRnVuY3Rp
b25Ub0xpc3RlbmVycyhKYXZhU2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2sKICAgICBtX2NhbGxpbmdM
aXN0ZW5lcnMgPSBmYWxzZTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y3JlYXRlQ2Fs
bEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJD
YWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKK3ZvaWQgU2NyaXB0
RGVidWdTZXJ2ZXI6OmNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdn
ZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7Ci0gICAgVGV4dFBvc2l0aW9uIHRleHRQb3Np
dGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGluYWxO
dW1iZXI6OmZpcnN0KCkpOworICAgIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb24oT3JkaW5hbE51
bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpmcm9tWmVy
b0Jhc2VkSW50KGNvbHVtbk51bWJlcikpOwogICAgIG1fY3VycmVudENhbGxGcmFtZSA9IEphdmFT
Y3JpcHRDYWxsRnJhbWU6OmNyZWF0ZShkZWJ1Z2dlckNhbGxGcmFtZSwgbV9jdXJyZW50Q2FsbEZy
YW1lLCBzb3VyY2VJRCwgdGV4dFBvc2l0aW9uKTsKICAgICBwYXVzZUlmTmVlZGVkKGRlYnVnZ2Vy
Q2FsbEZyYW1lLmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxs
RnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVl
ZGVkKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qg
c291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIEFTU0VS
VChtX2N1cnJlbnRDYWxsRnJhbWUpOwogICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uKE9yZGluYWxOdW1i
ZXI6OmZyb21PbmVCYXNlZEludChsaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSk7
CisgICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZyb21aZXJvQmFzZWRJbnQoY29sdW1u
TnVtYmVyKSk7CiAgICAgbV9jdXJyZW50Q2FsbEZyYW1lLT51cGRhdGUoZGVidWdnZXJDYWxsRnJh
bWUsIHNvdXJjZUlELCB0ZXh0UG9zaXRpb24pOwogICAgIHBhdXNlSWZOZWVkZWQoZGVidWdnZXJD
YWxsRnJhbWUuZHluYW1pY0dsb2JhbE9iamVjdCgpKTsKIH0KQEAgLTM5OSwyNCArNDc5LDI0IEBA
IHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlSWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGR5
bmFtaWNHbG9iYWxPYmplY3QpCiAgICAgbV9wYXVzZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6Y2FsbEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dl
ckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQordm9pZCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6Y2FsbEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dl
ckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyKQogewogICAgIGlmICghbV9wYXVzZWQpCi0gICAgICAgIGNyZWF0ZUNhbGxGcmFtZUFu
ZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsK
KyAgICAgICAgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFt
ZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiB9CiAKLXZvaWQgU2NyaXB0
RGVidWdTZXJ2ZXI6OmF0U3RhdGVtZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dl
ckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQordm9pZCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVn
Z2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIpCiB7CiAgICAgaWYgKCFtX3BhdXNlZCkKLSAgICAgICAgdXBkYXRlQ2FsbEZyYW1l
QW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIp
OworICAgICAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZy
YW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAotdm9pZCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6cmV0dXJuRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVn
Z2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpyZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVi
dWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlcikKIHsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJj
ZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRl
YnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIAog
ICAgIC8vIGRldGFjaCBtYXkgaGF2ZSBiZWVuIGNhbGxlZCBkdXJpbmcgcGF1c2VJZk5lZWRlZAog
ICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQpAQCAtNDI4LDcgKzUwOCw3IEBAIHZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1
Z2dlckNhbGxGcmFtZSwKICAgICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJh
bWUtPmNhbGxlcigpOwogfQogCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpleGNlcHRpb24oY29u
c3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFuZGxlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OmV4Y2VwdGlvbihjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUs
IGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9v
bCBoYXNIYW5kbGVyKQogewogICAgIGlmIChtX3BhdXNlZCkKICAgICAgICAgcmV0dXJuOwpAQCAt
NDM2LDIxICs1MTYsMjEgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZXhjZXB0aW9uKGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW4KICAgICBpZiAobV9wYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlID09IFBhdXNlT25BbGxFeGNlcHRpb25zIHx8IChtX3BhdXNlT25F
eGNlcHRpb25zU3RhdGUgPT0gUGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9ucyAmJiAhaGFzSGFuZGxl
cikpCiAgICAgICAgIG1fcGF1c2VPbk5leHRTdGF0ZW1lbnQgPSB0cnVlOwogCi0gICAgdXBkYXRl
Q2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxp
bmVOdW1iZXIpOworICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJD
YWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogfQogCi12b2lk
IFNjcmlwdERlYnVnU2VydmVyOjp3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxs
RnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVi
dWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7CiAgICAgaWYgKCFtX3BhdXNlZCkKLSAg
ICAgICAgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwg
c291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAgICBjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlm
TmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0oY29u
c3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaWRFeGVjdXRlUHJv
Z3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90
IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAo
bV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNl
SWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1
cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJ
RCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIAogICAgIC8vIFRyZWF0IHN0ZXBwaW5nIG92
ZXIgdGhlIGVuZCBvZiBhIHByb2dyYW0gbGlrZSBzdGVwcGluZyBvdXQuCiAgICAgaWYgKG1fY3Vy
cmVudENhbGxGcmFtZSA9PSBtX3BhdXNlT25DYWxsRnJhbWUpCkBAIC00NTgsMTMgKzUzOCwxMyBA
QCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dl
ckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRgogICAgIG1fY3VycmVudENhbGxGcmFtZSA9IG1fY3Vy
cmVudENhbGxGcmFtZS0+Y2FsbGVyKCk7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRp
ZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJh
bWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKK3ZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OmRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdn
ZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlcikKIHsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
cGF1c2VPbk5leHRTdGF0ZW1lbnQgPSB0cnVlOwotICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNl
SWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1
cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJ
RCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZl
cjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDg0ZmJhNWM2NzhmYzcyNWRmMjg2MmVl
OWZmM2JlNjUxODQxMjFhYTYuLjlkOGRkZTc0MzAwYWE4YjZkYzM3NGJlMGQwY2RmMThlNjNkMmEw
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIu
aApAQCAtMTIzLDIyICsxMjMsMjUgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRQ
YXJzZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzLCBKU0M6OlNvdXJjZVByb3Zp
ZGVyKiwgYm9vbCBpc0NvbnRlbnRTY3JpcHQpOwogICAgIHZvaWQgZGlzcGF0Y2hGYWlsZWRUb1Bh
cnNlU291cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIEpTQzo6U291cmNlUHJvdmlk
ZXIqLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAKLSAgICB2
b2lkIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNh
bGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7Ci0gICAgdm9pZCB1
cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJh
bWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOworICAgIHZvaWQgY3JlYXRl
Q2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwg
aW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAg
ICB2b2lkIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dl
ckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlcik7CiAgICAgdm9pZCBwYXVzZUlmTmVlZGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGR5
bmFtaWNHbG9iYWxPYmplY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaChKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpTb3VyY2VQcm92aWRlciosIGludCBlcnJvckxpbmUsIGNvbnN0IEpTQzo6VVN0
cmluZyYgZXJyb3JNc2cpOwotICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgSlNDOjpE
ZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7Ci0g
ICAgdmlydHVhbCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUm
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGZpcnN0TGluZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJl
dHVybkV2ZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIpOwotICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgSlND
OjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwg
Ym9vbCBoYXNIYW5kbGVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4ZWN1dGVQcm9ncmFtKGNv
bnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVu
byk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdn
ZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubyk7Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwg
aW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pOwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPGxv
bmcsIFNjcmlwdEJyZWFrcG9pbnQ+IExpbmVUb0JyZWFrcG9pbnRNYXA7CisgICAgdmlydHVhbCB2
b2lkIGNhbGxFdmVudChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291
cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZv
aWQgYXRTdGF0ZW1lbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgZmlyc3RMaW5lLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmV0dXJuRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2
b2lkIGV4Y2VwdGlvbihjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291
cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBib29sIGhhc0hhbmRsZXIp
OworICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dl
ckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1uTnVt
YmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1u
TnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0IEpTQzo6
RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubywgaW50IGNv
bHVtbk51bWJlcik7CisKKyAgICB2b2lkIHVwZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbihp
bnRwdHJfdCwgaW50KTsKKworICAgIHR5cGVkZWYgVmVjdG9yPFNjcmlwdEJyZWFrcG9pbnQ+IEJy
ZWFrcG9pbnRzSW5MaW5lOworICAgIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBCcmVha3BvaW50c0lu
TGluZT4gTGluZVRvQnJlYWtwb2ludE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3Qs
IExpbmVUb0JyZWFrcG9pbnRNYXA+IFNvdXJjZUlkVG9CcmVha3BvaW50c01hcDsKIAogICAgIGJv
b2wgbV9jYWxsaW5nTGlzdGVuZXJzOwpAQCAtMTUxLDYgKzE1NCwxMCBAQCBwcm90ZWN0ZWQ6CiAg
ICAgUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+IG1fY3VycmVudENhbGxGcmFtZTsKICAgICBT
b3VyY2VJZFRvQnJlYWtwb2ludHNNYXAgbV9zb3VyY2VJZFRvQnJlYWtwb2ludHM7CiAgICAgVGlt
ZXI8U2NyaXB0RGVidWdTZXJ2ZXI+IG1fcmVjb21waWxlVGltZXI7CisKKyAgICBWZWN0b3I8U3Ry
aW5nPiBtX2N1cnJlbnRTb3VyY2VDb2RlOworICAgIGludHB0cl90IG1fY3VycmVudFNvdXJjZUlE
OworICAgIFNjcmlwdEJyZWFrcG9pbnQgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb247CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150376</attachid>
            <date>2012-07-02 01:01:58 -0700</date>
            <delta_ts>2012-07-02 02:11:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120702160153.patch</filename>
            <type>text/plain</type>
            <size>306769</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZTFmMzk3YmNhOGMzYjlmZWUwMjAyOGQ3ZDNjOWZkYWIzMjdjNzAwLi5lNWY4MjY1ODVhNDJlMjg1
OTRmYjlhZjMwM2NlMTQzZDYwYzBjZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NTcgQEAKKzIwMTItMDctMDEgIFBldGVyIFdhbmcgIDxwZXRlci53YW5nQHRvcmNobW9i
aWxlLmNvbS5jbj4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbSlNDXSBpbXBsZW1lbnQgc2V0
dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMwMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdCBjYXNlIGZvciB0aGlzIGJ1Zy4KKwor
ICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6cGFkT3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2sp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAo
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KToKKyAgICAgICAg
KEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDb25kaXRpb25hbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0
U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RW1wdHlTdGF0ZW1l
bnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclN0YXRlbWVudE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpJZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Oklm
RWxzZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRvV2hpbGVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpXaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkZvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvckluTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29udGludWVOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OlJldHVybk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OldpdGhOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpMYWJlbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRo
cm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJv
ZHlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRo
cm93RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmRlYnVnKToKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAg
ICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEFTVEJ1aWxkZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVDb21tYUV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMb2dp
Y2FsTm90KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVW5hcnlQbHVzKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVm9pZCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OnRoaXNFeHByKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVzb2x2
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZU9iamVjdExpdGVyYWwpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJheSk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZU51bWJlckV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVh
dGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCb29sZWFuKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTnVsbCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUJyYWNrZXRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVSZWdFeHAp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVOZXdFeHByKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uZGl0aW9uYWxFeHByKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQXNzaWduUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1
bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUdldHRlck9yU2V0
dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcmd1bWVudHNM
aXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUHJvcGVydHlMaXN0KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUV4cHJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVJZlN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUZvckxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JJbkxvb3ApOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFbXB0eVN0YXRlbWVudCk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVZhclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZVJldHVyblN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUJyZWFrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlQ29udGludWVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVU
cnlTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVTd2l0Y2hTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVXaGlsZVN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVdpdGhTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVUaHJvd1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZURlYnVnZ2VyKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uc3RT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRDb25zdERlY2wpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmFwcGVuZEJpbmFyeU9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUFzc2lnbm1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlVHlwZU9mTm9kZSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VEZWxldGVOb2RlKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjptYWtlQml0d2lzZU5vdE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlTXVs
dE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRGl2Tm9kZSk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VNb2ROb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6bWFrZUFkZE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlU3ViTm9kZSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VMZWZ0U2hpZnROb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZVJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6bWFrZVVSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
Om1ha2VCaXRPck5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQml0QW5kTm9k
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VCaXRYT3JOb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1h
a2VBc3NpZ25Ob2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlUG9zdGZpeE5vZGUpOgorICAgICAgICAq
IHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6Ojo6c2V0Q29kZSk6CisgICAgICAgIChK
U0M6Ojo6aW50ZXJuYWxTaGlmdCk6CisgICAgICAgIChKU0M6Ojo6c2hpZnQpOgorICAgICAgICAo
SlNDOjo6OmxleCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6Okxl
eGVyOjpjdXJyZW50Q29sdW1uTnVtYmVyKToKKyAgICAgICAgKExleGVyKToKKyAgICAgICAgKEpT
Qzo6OjpsZXhFeHBlY3RJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oOgorICAgICAgICAoSlNDOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKEpTQzo6RXhwcmVz
c2lvbk5vZGU6OkV4cHJlc3Npb25Ob2RlKToKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6
U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6Ok51bGxOb2RlOjpOdWxsTm9kZSk6CisgICAg
ICAgIChKU0M6OkJvb2xlYW5Ob2RlOjpCb29sZWFuTm9kZSk6CisgICAgICAgIChKU0M6Ok51bWJl
ck5vZGU6Ok51bWJlck5vZGUpOgorICAgICAgICAoSlNDOjpTdHJpbmdOb2RlOjpTdHJpbmdOb2Rl
KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTm9kZTo6UmVnRXhwTm9kZSk6CisgICAgICAgIChKU0M6
OlRoaXNOb2RlOjpUaGlzTm9kZSk6CisgICAgICAgIChKU0M6OlJlc29sdmVOb2RlOjpSZXNvbHZl
Tm9kZSk6CisgICAgICAgIChKU0M6OkFycmF5Tm9kZTo6QXJyYXlOb2RlKToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZSk6CisgICAgICAgIChKU0M6Ok9i
amVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZSk6CisgICAgICAgIChKU0M6OkJyYWNr
ZXRBY2Nlc3Nvck5vZGU6OkJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoSlNDOjpEb3RB
Y2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZSk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50TGlz
dE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoSlNDOjpOZXdFeHByTm9kZTo6TmV3
RXhwck5vZGUpOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0
aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OkZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2Rl
OjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJy
YWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoSlNDOjpDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAo
SlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZSk6
CisgICAgICAgIChKU0M6OlByZVBvc3RSZXNvbHZlTm9kZTo6UHJlUG9zdFJlc29sdmVOb2RlKToK
KyAgICAgICAgKEpTQzo6UG9zdGZpeFJlc29sdmVOb2RlOjpQb3N0Zml4UmVzb2x2ZU5vZGUpOgor
ICAgICAgICAoSlNDOjpQb3N0Zml4QnJhY2tldE5vZGU6OlBvc3RmaXhCcmFja2V0Tm9kZSk6Cisg
ICAgICAgIChKU0M6OlBvc3RmaXhEb3ROb2RlOjpQb3N0Zml4RG90Tm9kZSk6CisgICAgICAgIChK
U0M6OlBvc3RmaXhFcnJvck5vZGU6OlBvc3RmaXhFcnJvck5vZGUpOgorICAgICAgICAoSlNDOjpE
ZWxldGVSZXNvbHZlTm9kZTo6RGVsZXRlUmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpEZWxl
dGVCcmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVE
b3ROb2RlOjpEZWxldGVEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlVmFsdWVOb2RlOjpE
ZWxldGVWYWx1ZU5vZGUpOgorICAgICAgICAoSlNDOjpWb2lkTm9kZTo6Vm9pZE5vZGUpOgorICAg
ICAgICAoSlNDOjpUeXBlT2ZSZXNvbHZlTm9kZTo6VHlwZU9mUmVzb2x2ZU5vZGUpOgorICAgICAg
ICAoSlNDOjpUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6
OlByZWZpeFJlc29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlBy
ZWZpeEJyYWNrZXROb2RlOjpQcmVmaXhCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OlByZWZp
eERvdE5vZGU6OlByZWZpeERvdE5vZGUpOgorICAgICAgICAoSlNDOjpQcmVmaXhFcnJvck5vZGU6
OlByZWZpeEVycm9yTm9kZSk6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjpVbmFyeU9wTm9k
ZSk6CisgICAgICAgIChKU0M6OlVuYXJ5UGx1c05vZGU6OlVuYXJ5UGx1c05vZGUpOgorICAgICAg
ICAoSlNDOjpOZWdhdGVOb2RlOjpOZWdhdGVOb2RlKToKKyAgICAgICAgKEpTQzo6Qml0d2lzZU5v
dE5vZGU6OkJpdHdpc2VOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6TG9naWNhbE5vdE5vZGU6Okxv
Z2ljYWxOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUp
OgorICAgICAgICAoSlNDOjpNdWx0Tm9kZTo6TXVsdE5vZGUpOgorICAgICAgICAoSlNDOjpEaXZO
b2RlOjpEaXZOb2RlKToKKyAgICAgICAgKEpTQzo6TW9kTm9kZTo6TW9kTm9kZSk6CisgICAgICAg
IChKU0M6OkFkZE5vZGU6OkFkZE5vZGUpOgorICAgICAgICAoSlNDOjpTdWJOb2RlOjpTdWJOb2Rl
KToKKyAgICAgICAgKEpTQzo6TGVmdFNoaWZ0Tm9kZTo6TGVmdFNoaWZ0Tm9kZSk6CisgICAgICAg
IChKU0M6OlJpZ2h0U2hpZnROb2RlOjpSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OlVu
c2lnbmVkUmlnaHRTaGlmdE5vZGU6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAo
SlNDOjpMZXNzTm9kZTo6TGVzc05vZGUpOgorICAgICAgICAoSlNDOjpHcmVhdGVyTm9kZTo6R3Jl
YXRlck5vZGUpOgorICAgICAgICAoSlNDOjpMZXNzRXFOb2RlOjpMZXNzRXFOb2RlKToKKyAgICAg
ICAgKEpTQzo6R3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9kZSk6CisgICAgICAgIChKU0M6OlRo
cm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlKToKKyAgICAgICAgKEpT
Qzo6SW5zdGFuY2VPZk5vZGU6Okluc3RhbmNlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6SW5Ob2Rl
OjpJbk5vZGUpOgorICAgICAgICAoSlNDOjpFcXVhbE5vZGU6OkVxdWFsTm9kZSk6CisgICAgICAg
IChKU0M6Ok5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKToKKyAgICAgICAgKEpTQzo6U3RyaWN0
RXF1YWxOb2RlOjpTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoSlNDOjpOb3RTdHJpY3RFcXVh
bE5vZGU6Ok5vdFN0cmljdEVxdWFsTm9kZSk6CisgICAgICAgIChKU0M6OkJpdEFuZE5vZGU6OkJp
dEFuZE5vZGUpOgorICAgICAgICAoSlNDOjpCaXRPck5vZGU6OkJpdE9yTm9kZSk6CisgICAgICAg
IChKU0M6OkJpdFhPck5vZGU6OkJpdFhPck5vZGUpOgorICAgICAgICAoSlNDOjpMb2dpY2FsT3BO
b2RlOjpMb2dpY2FsT3BOb2RlKToKKyAgICAgICAgKEpTQzo6Q29uZGl0aW9uYWxOb2RlOjpDb25k
aXRpb25hbE5vZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRN
b2RpZnlSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjpBc3Np
Z25SZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6UmVh
ZE1vZGlmeUJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduQnJhY2tldE5vZGU6OkFz
c2lnbkJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90
Tm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkVycm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKToKKyAg
ICAgICAgKEpTQzo6Q29tbWFOb2RlOjpDb21tYU5vZGUpOgorICAgICAgICAoSlNDOjpDb25zdFN0
YXRlbWVudE5vZGU6OkNvbnN0U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6OkVtcHR5U3Rh
dGVtZW50Tm9kZTo6RW1wdHlTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJT
dGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpFeHBy
U3RhdGVtZW50Tm9kZTo6RXhwclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0
ZW1lbnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6SWZOb2RlOjpJZk5v
ZGUpOgorICAgICAgICAoSlNDOjpJZkVsc2VOb2RlOjpJZkVsc2VOb2RlKToKKyAgICAgICAgKEpT
Qzo6RG9XaGlsZU5vZGU6OkRvV2hpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6V2hpbGVOb2RlOjpX
aGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjpGb3JOb2RlKToKKyAgICAgICAgKEpT
Qzo6Q29udGludWVOb2RlOjpDb250aW51ZU5vZGUpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6
OkJyZWFrTm9kZSk6CisgICAgICAgIChKU0M6OlJldHVybk5vZGU6OlJldHVybk5vZGUpOgorICAg
ICAgICAoSlNDOjpXaXRoTm9kZTo6V2l0aE5vZGUpOgorICAgICAgICAoSlNDOjpMYWJlbE5vZGU6
OkxhYmVsTm9kZSk6CisgICAgICAgIChKU0M6OlRocm93Tm9kZTo6VGhyb3dOb2RlKToKKyAgICAg
ICAgKEpTQzo6VHJ5Tm9kZTo6VHJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmNFeHByTm9kZTo6
RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUp
OgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKToKKyAgICAgICAgKEpTQzo6
Q29uc3REZWNsTm9kZTo6Q29uc3REZWNsTm9kZSk6CisgICAgICAgIChKU0M6OkJsb2NrTm9kZTo6
QmxvY2tOb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjpGb3JJbk5vZGUpOgorICAgICAg
ICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OnNldExv
Yyk6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6U2NvcGVOb2RlKToKKyAgICAgICAgKEpTQzo6
UHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkV2YWxOb2RlOjpFdmFsTm9kZSk6CisgICAgICAgIChKU0M6
OkV2YWxOb2RlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpGdW5j
dGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlND
OjpOb2RlOjpjb2x1bW5Obyk6CisgICAgICAgIChFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChT
dGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6Y29sdW1uKToKKyAg
ICAgICAgKE51bGxOb2RlKToKKyAgICAgICAgKEJvb2xlYW5Ob2RlKToKKyAgICAgICAgKE51bWJl
ck5vZGUpOgorICAgICAgICAoU3RyaW5nTm9kZSk6CisgICAgICAgIChSZWdFeHBOb2RlKToKKyAg
ICAgICAgKFRoaXNOb2RlKToKKyAgICAgICAgKFJlc29sdmVOb2RlKToKKyAgICAgICAgKEFycmF5
Tm9kZSk6CisgICAgICAgIChQcm9wZXJ0eUxpc3ROb2RlKToKKyAgICAgICAgKE9iamVjdExpdGVy
YWxOb2RlKToKKyAgICAgICAgKEJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoRG90QWNj
ZXNzb3JOb2RlKToKKyAgICAgICAgKEFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoTmV3RXhw
ck5vZGUpOgorICAgICAgICAoRXZhbEZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoRnVuY3Rp
b25DYWxsVmFsdWVOb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKToKKyAg
ICAgICAgKEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbERv
dE5vZGUpOgorICAgICAgICAoQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKFByZVBvc3RSZXNvbHZlTm9kZSk6Cisg
ICAgICAgIChQb3N0Zml4UmVzb2x2ZU5vZGUpOgorICAgICAgICAoUG9zdGZpeEJyYWNrZXROb2Rl
KToKKyAgICAgICAgKFBvc3RmaXhEb3ROb2RlKToKKyAgICAgICAgKFBvc3RmaXhFcnJvck5vZGUp
OgorICAgICAgICAoRGVsZXRlUmVzb2x2ZU5vZGUpOgorICAgICAgICAoRGVsZXRlQnJhY2tldE5v
ZGUpOgorICAgICAgICAoRGVsZXRlRG90Tm9kZSk6CisgICAgICAgIChEZWxldGVWYWx1ZU5vZGUp
OgorICAgICAgICAoVm9pZE5vZGUpOgorICAgICAgICAoVHlwZU9mUmVzb2x2ZU5vZGUpOgorICAg
ICAgICAoVHlwZU9mVmFsdWVOb2RlKToKKyAgICAgICAgKFByZWZpeFJlc29sdmVOb2RlKToKKyAg
ICAgICAgKFByZWZpeEJyYWNrZXROb2RlKToKKyAgICAgICAgKFByZWZpeERvdE5vZGUpOgorICAg
ICAgICAoUHJlZml4RXJyb3JOb2RlKToKKyAgICAgICAgKFVuYXJ5T3BOb2RlKToKKyAgICAgICAg
KFVuYXJ5UGx1c05vZGUpOgorICAgICAgICAoTmVnYXRlTm9kZSk6CisgICAgICAgIChCaXR3aXNl
Tm90Tm9kZSk6CisgICAgICAgIChMb2dpY2FsTm90Tm9kZSk6CisgICAgICAgIChCaW5hcnlPcE5v
ZGUpOgorICAgICAgICAoTXVsdE5vZGUpOgorICAgICAgICAoRGl2Tm9kZSk6CisgICAgICAgIChN
b2ROb2RlKToKKyAgICAgICAgKEFkZE5vZGUpOgorICAgICAgICAoU3ViTm9kZSk6CisgICAgICAg
IChMZWZ0U2hpZnROb2RlKToKKyAgICAgICAgKFJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKFVu
c2lnbmVkUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAoTGVzc05vZGUpOgorICAgICAgICAoR3Jl
YXRlck5vZGUpOgorICAgICAgICAoTGVzc0VxTm9kZSk6CisgICAgICAgIChHcmVhdGVyRXFOb2Rl
KToKKyAgICAgICAgKFRocm93YWJsZUJpbmFyeU9wTm9kZSk6CisgICAgICAgIChJbnN0YW5jZU9m
Tm9kZSk6CisgICAgICAgIChJbk5vZGUpOgorICAgICAgICAoRXF1YWxOb2RlKToKKyAgICAgICAg
KE5vdEVxdWFsTm9kZSk6CisgICAgICAgIChTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoTm90
U3RyaWN0RXF1YWxOb2RlKToKKyAgICAgICAgKEJpdEFuZE5vZGUpOgorICAgICAgICAoQml0T3JO
b2RlKToKKyAgICAgICAgKEJpdFhPck5vZGUpOgorICAgICAgICAoTG9naWNhbE9wTm9kZSk6Cisg
ICAgICAgIChDb25kaXRpb25hbE5vZGUpOgorICAgICAgICAoUmVhZE1vZGlmeVJlc29sdmVOb2Rl
KToKKyAgICAgICAgKEFzc2lnblJlc29sdmVOb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlCcmFj
a2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25CcmFja2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25E
b3ROb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKEFzc2lnbkVy
cm9yTm9kZSk6CisgICAgICAgIChDb21tYU5vZGUpOgorICAgICAgICAoQ29uc3REZWNsTm9kZSk6
CisgICAgICAgIChDb25zdFN0YXRlbWVudE5vZGUpOgorICAgICAgICAoQmxvY2tOb2RlKToKKyAg
ICAgICAgKEVtcHR5U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChEZWJ1Z2dlclN0YXRlbWVudE5v
ZGUpOgorICAgICAgICAoRXhwclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoVmFyU3RhdGVtZW50
Tm9kZSk6CisgICAgICAgIChJZk5vZGUpOgorICAgICAgICAoSWZFbHNlTm9kZSk6CisgICAgICAg
IChEb1doaWxlTm9kZSk6CisgICAgICAgIChXaGlsZU5vZGUpOgorICAgICAgICAoRm9yTm9kZSk6
CisgICAgICAgIChGb3JJbk5vZGUpOgorICAgICAgICAoQ29udGludWVOb2RlKToKKyAgICAgICAg
KEJyZWFrTm9kZSk6CisgICAgICAgIChSZXR1cm5Ob2RlKToKKyAgICAgICAgKFdpdGhOb2RlKToK
KyAgICAgICAgKExhYmVsTm9kZSk6CisgICAgICAgIChUaHJvd05vZGUpOgorICAgICAgICAoVHJ5
Tm9kZSk6CisgICAgICAgIChTY29wZU5vZGUpOgorICAgICAgICAoUHJvZ3JhbU5vZGUpOgorICAg
ICAgICAoRXZhbE5vZGUpOgorICAgICAgICAoRnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAgICAgIChG
dW5jRXhwck5vZGUpOgorICAgICAgICAoRnVuY0RlY2xOb2RlKToKKyAgICAgICAgKFN3aXRjaE5v
ZGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6OnBhcnNl
VmFyRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29uc3REZWNsYXJhdGlvbik6
CisgICAgICAgIChKU0M6Ojo6cGFyc2VEb1doaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZVdoaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVZhckRlY2xhcmF0
aW9uTGlzdCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25zdERlY2xhcmF0aW9uTGlzdCk6Cisg
ICAgICAgIChKU0M6Ojo6cGFyc2VGb3JTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNl
QnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29udGludWVTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjo6OnBhcnNlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZVRocm93U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVdpdGhTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZVRyeVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VEZWJ1Z2dlclN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VCbG9ja1N0YXRlbWVudCk6CisgICAgICAg
IChKU0M6Ojo6cGFyc2VTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlRnVuY3Rpb25C
b2R5KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJl
c3Npb25PckxhYmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJlc3Npb25T
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlSWZTdGF0ZW1lbnQpOgorICAgICAgICAo
SlNDOjo6OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjo6OnBhcnNlQmluYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VPYmplY3RMaXRlcmFsKToK
KyAgICAgICAgKEpTQzo6OjpwYXJzZVN0cmljdE9iamVjdExpdGVyYWwpOgorICAgICAgICAoSlND
Ojo6OnBhcnNlQXJyYXlMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVByaW1hcnlFeHBy
ZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVVuYXJ5RXhw
cmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQYXJz
ZXI6OnRva2VuQ29sdW1uKToKKyAgICAgICAgKFBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNl
cjo6Z2V0VG9rZW5OYW1lKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZSk6CisgICAgICAgICogcGFy
c2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAoSlNDOjpKU1Rva2VuSW5mbzo6SlNUb2tlbklu
Zm8pOgorICAgICAgICAoSlNUb2tlbkluZm8pOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVj
a2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2Rl
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ29tbWFFeHByKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjptYWtlUHJlZml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6Om1ha2VQb3N0Zml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VU
eXBlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZURlbGV0ZU5vZGUp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlTmVnYXRlTm9kZSk6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VCaXR3aXNlTm90Tm9kZSk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpTeW50YXhD
aGVja2VyOjpjcmVhdGVVbmFyeVBsdXMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVWb2lkKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6dGhpc0V4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUFycmF5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlTnVtYmVyRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN0cmlu
Zyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJvb2xlYW4pOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOdWxsKToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQnJhY2tldEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZVJlZ0V4cCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU5ld0V4cHIpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDb25kaXRpb25hbEV4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVBc3NpZ25SZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQXJndW1lbnRzTGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZVByb3BlcnR5TGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OnNl
dFVzZXNBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5j
RGVjbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJsb2Nr
U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRXhwclN0YXRl
bWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUlmU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRm9yTG9vcCk6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUVtcHR5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlVmFyU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlQnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVD
b250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRy
eVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN3aXRjaFN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVdoaWxlU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlV2l0aFN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6CisgICAg
ICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRocm93U3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRGVidWdnZXIpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVDb25zdFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENo
ZWNrZXI6OmFwcGVuZENvbnN0RGVjbCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2Vy
Ojpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJh
dG9yU3RhY2tQb3ApOgorCiAyMDEyLTA2LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgSlNDIHNob3VsZCB0cnkgdG8gbWFrZSBwcm9maWxpbmcgZGV0ZXJtaW5p
c3RpYyBiZWNhdXNlIG90aGVyd2lzZSByZXByb2R1Y2luZyBmYWlsdXJlcyBpcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDQ2ZGYxMDQ2MWMzYWVkMDUxNWQxODAzMTQ4NmQzMDRkY2RjMzQ5OWEuLmIxNWFjYjgxNjE1
YmRjNmQ5NzMwZmY3NDIwNWJmN2QxNWQ4N2UxOGMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBA
QAorMjAxMi0wNy0wMSAgUGV0ZXIgV2FuZyAgPHBldGVyLndhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtKU0NdIGltcGxlbWVudCBzZXR0aW5nIGJyZWFr
cG9pbnRzIGJ5IGxpbmU6Y29sdW1uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MzAwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0IGNhc2UgZm9yIHRoaXMgYnVnLiAoT09QUyEpCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6Omhh
c0JyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNyZWF0
ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpleGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OndpbGxFeGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZl
cjo6ZGlkRXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2
ZXI6OmRpZFJlYWNoQnJlYWtwb2ludCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToKKwogMjAxMi0wNi0yNiAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVmYWN0b3Jpbmc6
IFNpbXBsaWZ5IEZvcm1Db250cm9sbGVyIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCmluZGV4IGUwY2ZmMTY1YTg4YzkzM2E1ODgzMDM4NmNiNTgxOGE2ZmU3
YTEzMWEuLjUyNjIyY2Q3YThjNWI5NDFjM2Y1NGU3YTEwNDU3MTAyMTQ1NGY2MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKQEAgLTE5MCw3ICsxOTAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfdGhyb3csIDIpIFwKICAgICAgICAgbWFjcm8o
b3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yLCAyKSBcCiAgICAgICAgIFwKLSAgICAgICAgbWFjcm8o
b3BfZGVidWcsIDQpIFwKKyAgICAgICAgbWFjcm8ob3BfZGVidWcsIDUpIFwKICAgICAgICAgbWFj
cm8ob3BfcHJvZmlsZV93aWxsX2NhbGwsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfcHJvZmlsZV9k
aWRfY2FsbCwgMikgXAogICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDg5NjlhN2YyNWIy
N2U5ZmNlOTY1NTBhZWQ1NWYxMjczYzA0N2UyZmEuLjI5N2IwMDgyM2MwMTI2NjNlZDNhZGYwNjc3
ZmZlYTk2Y2I0OTgwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yMDM3LDcgKzIwMzcsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UG9wU2NvcGUoKQogICAgIG1fZHluYW1pY1Njb3Bl
RGVwdGgtLTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1
Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQordm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwg
aW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKQogewogI2lmIEVOQUJMRShE
RUJVR19XSVRIX0JSRUFLUE9JTlQpCiAgICAgaWYgKGRlYnVnSG9va0lEICE9IERpZFJlYWNoQnJl
YWtwb2ludCkKQEAgLTIwNTAsNiArMjA1MCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREZWJ1Z0hvb2soRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGluCiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRlYnVnSG9va0lEKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZmlyc3RMaW5lKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGFzdExpbmUp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjb2x1bW4pOwogfQogCiB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpwdXNoRmluYWxseUNvbnRleHQoU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2Nr
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCmluZGV4IDhiMWQxZDc0NGJhMmE5MmI0NDI2ZjczMGExZGMzOGQyM2Y3YjA3
ODkuLmIxNGI3MGFmZjFlZTI2MDJkNDNjMTE0YzI4ZGI1NGExN2U0ZmQzYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKQEAgLTUwNiw3ICs1MDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1c2hTY29wZShSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQgZW1pdFBv
cFNjb3BlKCk7CiAKLSAgICAgICAgdm9pZCBlbWl0RGVidWdIb29rKERlYnVnSG9va0lELCBpbnQg
Zmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAgICB2b2lkIGVtaXREZWJ1Z0hvb2soRGVi
dWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVtbik7CiAKICAg
ICAgICAgaW50IHNjb3BlRGVwdGgoKSB7IHJldHVybiBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9m
aW5hbGx5RGVwdGg7IH0KICAgICAgICAgYm9vbCBoYXNGaW5hbGlzZXIoKSB7IHJldHVybiBtX2Zp
bmFsbHlEZXB0aCAhPSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDI0M2U4Y2UwMDg0OWI1NTJkOThkYjA1MDFj
MzY5YTQxNWQyZWQwYS4uYzFiN2Y1NGFiNWIwZWM2ZTAwOTY3YzA5NGU2ZmEyMjVmNDRhMzkxMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcApAQCAtMjAyLDE4ICsyMDIsMTggQEAgYm9vbCBBcnJheU5vZGU6OmlzU2ltcGxlQXJy
YXkoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1Bcmd1bWVudExpc3ROb2RlKiBBcnJh
eU5vZGU6OnRvQXJndW1lbnRMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVO
dW1iZXIpIGNvbnN0CitBcmd1bWVudExpc3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2VsaXNpb24gJiYgIW1fb3B0aW9uYWwpOwogICAg
IEVsZW1lbnROb2RlKiBwdHIgPSBtX2VsZW1lbnQ7CiAgICAgaWYgKCFwdHIpCiAgICAgICAgIHJl
dHVybiAwOwotICAgIEFyZ3VtZW50TGlzdE5vZGUqIGhlYWQgPSBuZXcgKGdsb2JhbERhdGEpIEFy
Z3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgcHRyLT52YWx1ZSgpKTsKKyAgICBBcmd1bWVudExp
c3ROb2RlKiBoZWFkID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgcHRyLT52YWx1ZSgpKTsKICAgICBBcmd1bWVudExpc3ROb2RlKiB0
YWlsID0gaGVhZDsKICAgICBwdHIgPSBwdHItPm5leHQoKTsKICAgICBmb3IgKDsgcHRyOyBwdHIg
PSBwdHItPm5leHQoKSkgewogICAgICAgICBBU1NFUlQoIXB0ci0+ZWxpc2lvbigpKTsKLSAgICAg
ICAgdGFpbCA9IG5ldyAoZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVtYmVyLCB0
YWlsLCBwdHItPnZhbHVlKCkpOworICAgICAgICB0YWlsID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1
bWVudExpc3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdGFpbCwgcHRyLT52YWx1ZSgp
KTsKICAgICB9CiAgICAgcmV0dXJuIGhlYWQ7CiB9CkBAIC01MzYsNyArNTM2LDcgQEAgUmVnaXN0
ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9kZSo+KG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50TGlzdChnZW5lcmF0
b3IuZ2xvYmFsRGF0YSgpLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3RO
b2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQt
Pm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci5nbG9iYWxEYXRhKCksIDAsIDApOwog
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQo
KSk7CiAgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwpAQCAtMTEyOCw2
ICsxMTI4LDggQEAgUmVnaXN0ZXJJRCogQ29uZGl0aW9uYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKICAgICBSZWZQdHI8TGFiZWw+IGJl
Zm9yZUVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGFmdGVy
RWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogCisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxpbmVObygpLCBsaW5lTm8oKSwgY29sdW1uTm8oKSk7
CisKICAgICBpZiAobV9sb2dpY2FsLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKSB7CiAg
ICAgICAgIFJlZlB0cjxMYWJlbD4gYmVmb3JlVGhlbiA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9sb2dpY2FsLCBi
ZWZvcmVUaGVuLmdldCgpLCBiZWZvcmVFbHNlLmdldCgpLCB0cnVlKTsKQEAgLTEzODUsNyArMTM4
Nyw3IEBAIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIFJlZ2lzdGVySUQqIENvbnN0U3RhdGVt
ZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShtX25leHQpOwogfQogCkBAIC0xNDI4
LDcgKzE0MzAsNyBAQCBSZWdpc3RlcklEKiBCbG9ja05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogCiBSZWdpc3RlcklEKiBFbXB0
eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0xNDM2LDcgKzE0MzgsNyBA
QCBSZWdpc3RlcklEKiBFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpcwogCiBSZWdpc3RlcklEKiBEZWJ1Z2dlclN0YXRlbWVu
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkUmVhY2hCcmVha3Bv
aW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soRGlkUmVhY2hCcmVha3BvaW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkp
OwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTE0NDUsNyArMTQ0Nyw3IEBAIFJlZ2lzdGVySUQq
IERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlCiBSZWdpc3RlcklEKiBFeHByU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBB
U1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOyAKKyAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNv
bHVtbigpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9leHByKTsKIH0K
IApAQCAtMTQ1NCw3ICsxNDU2LDcgQEAgUmVnaXN0ZXJJRCogRXhwclN0YXRlbWVudE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIFJlZ2lzdGVy
SUQqIFZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKICAgICBBU1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50
LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdE5vZGUobV9leHByKTsKIH0KIApAQCAtMTQ2Miw3ICsxNDY0LDcgQEAgUmVnaXN0ZXJJ
RCogVmFyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGUKIAogUmVnaXN0ZXJJRCogSWZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQs
IGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPExh
YmVsPiBhZnRlclRoZW4gPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIApAQCAtMTQ4Niw3ICsxNDg4
LDcgQEAgUmVnaXN0ZXJJRCogSWZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiBSZWdpc3RlcklEKiBJZkVsc2VOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAg
ICAgCiAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVFbHNlID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
CiAgICAgUmVmUHRyPExhYmVsPiBhZnRlckVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKQEAg
LTE1MjIsMTIgKzE1MjQsMTEgQEAgUmVnaXN0ZXJJRCogRG9XaGlsZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgIFJlZlB0cjxM
YWJlbD4gdG9wT2ZMb29wID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbCh0b3BPZkxvb3AuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TG9vcEhpbnQoKTsK
LSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCkpOwogICAgCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9
IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxp
bmVObygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGlmIChtX2V4cHItPmhh
c0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUlu
Q29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFy
Z2V0KCksIGZhbHNlKTsKICAgICBlbHNlIHsKQEAgLTE1NDYsNyArMTU0Nyw3IEBAIFJlZ2lzdGVy
SUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3BlID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CiAgICAgUmVmUHRyPExhYmVsPiB0b3BP
Zkxvb3AgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxpbmVO
bygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
bV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5jb2x1bW5ObygpKTsK
ICAgICBpZiAobV9leHByLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKQogICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxvb3AuZ2V0
KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCB0cnVlKTsKICAgICBlbHNlIHsKQEAgLTE1NjAsNyAr
MTU2MSw3IEBAIFJlZ2lzdGVySUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29u
dGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIG1fZXhwci0+bGluZU5vKCksIG1fZXhwci0+bGluZU5vKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAgaWYgKG1fZXhwci0+aGFzQ29uZGl0aW9uQ29udGV4
dENvZGVnZW4oKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0
KG1fZXhwciwgdG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgZmFsc2UpOwpA
QCAtMTU4MSw3ICsxNTgyLDcgQEAgUmVnaXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBSZWZQ
dHI8TGFiZWxTY29wZT4gc2NvcGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3Bl
OjpMb29wKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAKICAgICBpZiAobV9leHByMSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjEpOwpAQCAtMTYwMiw3ICsxNjAzLDcgQEAgUmVn
aXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRM
YWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICBpZiAobV9leHByMykKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjMpOwogCkBAIC0x
NjI5LDcgKzE2MzAsNyBAQCBSZWdpc3RlcklEKiBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAgIGlmICghbV9sZXhw
ci0+aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gZW1pdFRocm93UmVmZXJlbmNlRXJyb3Io
Z2VuZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGZvci1pbiBzdGF0ZW1lbnQgaXMgbm90IGEgcmVmZXJl
bmNlLiIpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigp
KTsKIAogICAgIGlmIChtX2luaXQpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpLCBtX2luaXQpOwpAQCAtMTY5Miw3ICsxNjkzLDcgQEAgUmVnaXN0
ZXJJRCogRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHMKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRp
bnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TmV4dFByb3BlcnR5TmFtZShwcm9wZXJ0
eU5hbWUsIGJhc2UuZ2V0KCksIGkuZ2V0KCksIHNpemUuZ2V0KCksIGl0ZXIuZ2V0KCksIGxvb3BT
dGFydC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0
ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVt
bigpKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKICAg
ICByZXR1cm4gZHN0OwogfQpAQCAtMTcwMiw3ICsxNzAzLDcgQEAgUmVnaXN0ZXJJRCogRm9ySW5O
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHMKIC8vIEVDTUEgMTIuNwogUmVnaXN0ZXJJRCogQ29udGludWVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAg
TGFiZWxTY29wZSogc2NvcGUgPSBnZW5lcmF0b3IuY29udGludWVUYXJnZXQobV9pZGVudCk7CiAg
ICAgQVNTRVJUKHNjb3BlKTsKQEAgLTE3MTYsNyArMTcxNyw3IEBAIFJlZ2lzdGVySUQqIENvbnRp
bnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqCiAvLyBFQ01BIDEyLjgKIFJlZ2lzdGVySUQqIEJyZWFrTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIAogICAgIExh
YmVsU2NvcGUqIHNjb3BlID0gZ2VuZXJhdG9yLmJyZWFrVGFyZ2V0KG1faWRlbnQpOwogICAgIEFT
U0VSVChzY29wZSk7CkBAIC0xNzI5LDcgKzE3MzAsNyBAQCBSZWdpc3RlcklEKiBCcmVha05vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
cwogCiBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgQVNTRVJUKGdlbmVyYXRvci5jb2RlVHlw
ZSgpID09IEZ1bmN0aW9uQ29kZSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpCkBAIC0xNzQ1LDcgKzE3NDYsNyBAQCBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAog
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBTY29wZXMobDAuZ2V0KCksIDApOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKGwwLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFJldHVy
bihyMCk7CiB9CiAKQEAgLTE3NTMsNyArMTc1NCw3IEBAIFJlZ2lzdGVySUQqIFJldHVybk5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
CiAKIFJlZ2lzdGVySUQqIFdpdGhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNj
b3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShz
Y29wZS5nZXQoKSwgbV9leHByKTsgLy8gc2NvcGUgbXVzdCBiZSBwcm90ZWN0ZWQgdW50aWwgcG9w
cGVkCkBAIC0xOTE4LDcgKzE5MTksNyBAQCBSZWdpc3RlcklEKiBDYXNlQmxvY2tOb2RlOjplbWl0
Qnl0ZWNvZGVGb3JCbG9jayhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogCiBSZWdp
c3RlcklEKiBTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdp
bGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0
TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3BlID0g
Z2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6U3dpdGNoKTsKIApAQCAtMTkzMyw3
ICsxOTM0LDcgQEAgUmVnaXN0ZXJJRCogU3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAogUmVnaXN0ZXJJRCogTGFiZWxO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAKICAgICBBU1NFUlQoIWdlbmVyYXRvci5icmVha1RhcmdldChtX25hbWUpKTsKIApAQCAt
MTk0OCw3ICsxOTQ5LDcgQEAgUmVnaXN0ZXJJRCogTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCog
VGhyb3dOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBj
b2x1bW4oKSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAg
ICAgICAgIGRzdCA9IDA7CkBAIC0xOTY1LDcgKzE5NjYsNyBAQCBSZWdpc3RlcklEKiBUcnlOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogICAgIC8vIE5PVEU6IFRoZSBjYXRjaCBhbmQgZmluYWxseSBibG9ja3MgbXVzdCBiZSBs
YWJlbGVkIGV4cGxpY2l0bHksIHNvIHRoZQogICAgIC8vIG9wdGltaXplciBrbm93cyB0aGV5IG1h
eSBiZSBqdW1wZWQgdG8gZnJvbSBhbnl3aGVyZS4KIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBSZWZQdHI8TGFiZWw+IHRyeVN0YXJ0TGFi
ZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBpZiAobV9maW5hbGx5QmxvY2spCkBAIC0y
MDIyLDEzICsyMDIzLDEzIEBAIGlubGluZSB2b2lkIFNjb3BlTm9kZTo6ZW1pdFN0YXRlbWVudHNC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAKIFJlZ2lzdGVySUQq
IFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQ
cm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1u
KCkpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRzdFJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0TG9hZChkc3RSZWdpc3Rlci5nZXQoKSwg
anNVbmRlZmluZWQoKSk7CiAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGRz
dFJlZ2lzdGVyLmdldCgpKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1
dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1
bW4oKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFbmQoZHN0UmVnaXN0ZXIuZ2V0KCkpOwogICAgIHJl
dHVybiAwOwogfQpAQCAtMjAzNywxMyArMjAzOCwxMyBAQCBSZWdpc3RlcklEKiBQcm9ncmFtTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
KQogCiBSZWdpc3RlcklEKiBFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCksIGNvbHVtbigpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkc3RSZWdpc3RlciA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQoZHN0UmVn
aXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUo
Z2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY29sdW1uKCkpOwogICAgIGdlbmVyYXRvci5lbWl0RW5kKGRzdFJlZ2lzdGVyLmdl
dCgpKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTIwNTIsNyArMjA1Myw3IEBAIFJlZ2lzdGVySUQq
IEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCopCiAKIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQm9keU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1lLCBmaXJz
dExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNv
ZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAogICAgIFN0YXRlbWVu
dE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOwpAQCAtMjA2
OCw3ICsyMDY5LDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAvLyBJZiB0aGVyZSBp
cyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCiAgICAgaWYgKCFy
ZXR1cm5Ob2RlKSB7CiAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3Ry
dWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgw
LCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExl
YXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5oCmluZGV4IGEyMzczMjkxODc4MDNlZGE5NTdhMzdkM2EwYTkwN2FmZjBiODkyMzIuLmEwM2Zk
ZjllNGIyZDQ0M2EyZTkzNTQwZTc0NDA2YjA5ZjBhNzYwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC00MiwxNCArNDIsMTQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3QqKTsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEV4ZWNTdGF0ZSosIFNvdXJjZVByb3ZpZGVy
KiwgaW50IGVycm9yTGluZU51bWJlciwgY29uc3QgVVN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUm
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFuZGxlcikgPSAw
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmV0dXJu
RXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihjb25zdCBEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgYm9vbCBoYXNIYW5kbGVyKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBh
dFN0YXRlbWVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgPSAwOworICAgICAgICB2aXJ0dWFsIHZv
aWQgY2FsbEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCByZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgPSAwOwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qg
c291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxFeGVjdXRl
UHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3Vy
Y2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgPSAwOwog
CiAgICAgICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoSlNHbG9iYWxEYXRhKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CmluZGV4IGI4NjEwZTdiZmJjODVlODE3YzE5ZTljZDg2MTEwYjgxYmQ0ZTkwMWIuLjMwZDI4N2Zk
NDgxMGQ2NWFjYzAwYjU2NzllNTdlZDA0OWEzYjgwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNzEyLDkgKzcxMiw5IEBA
IE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUoQ2FsbEZyYW1l
KiYgY2FsbEZyYW1lLCBKU1ZhbHVlIGV4CiAgICAgaWYgKERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNh
bGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKSB7CiAgICAgICAgIERl
YnVnZ2VyQ2FsbEZyYW1lIGRlYnVnZ2VyQ2FsbEZyYW1lKGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFs
dWUpOwogICAgICAgICBpZiAoY2FsbEZyYW1lLT5jYWxsZWUoKSkKLSAgICAgICAgICAgIGRlYnVn
Z2VyLT5yZXR1cm5FdmVudChkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bGFzdExp
bmUoKSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+cmV0dXJuRXZlbnQoZGVidWdnZXJDYWxsRnJh
bWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCktPmxhc3RMaW5lKCksIDApOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBkZWJ1Z2dlci0+ZGlkRXhlY3V0ZVByb2dyYW0oZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCktPmxhc3RMaW5lKCkpOworICAgICAgICAgICAgZGVidWdnZXItPmRpZEV4ZWN1dGVQ
cm9ncmFtKGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5z
b3VyY2VJRCgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5sYXN0TGluZSgpLCAwKTsK
ICAgICB9CiAKICAgICAvLyBJZiB0aGlzIGNhbGwgZnJhbWUgY3JlYXRlZCBhbiBhY3RpdmF0aW9u
IG9yIGFuICdhcmd1bWVudHMnIG9iamVjdCwgdGVhciBpdCBvZmYuCkBAIC0xMDM2LDcgKzEwMzYs
NyBAQCBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0aHJvd0V4Y2VwdGlv
bihDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVgogICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIg
PSBjYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkgewogICAgICAg
ICBEZWJ1Z2dlckNhbGxGcmFtZSBkZWJ1Z2dlckNhbGxGcmFtZShjYWxsRnJhbWUsIGV4Y2VwdGlv
blZhbHVlKTsKICAgICAgICAgYm9vbCBoYXNIYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICBkZWJ1Z2dlci0+ZXhjZXB0
aW9uKGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3Vy
Y2VJRCgpLCBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCksIGhhc0hhbmRsZXIpOworICAgICAgICBkZWJ1Z2dlci0+ZXhjZXB0aW9uKGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBjb2Rl
QmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCksIDAsIGhh
c0hhbmRsZXIpOwogICAgIH0KIAogICAgIC8vIENhbGN1bGF0ZSBhbiBleGNlcHRpb24gaGFuZGxl
ciB2UEMsIHVud2luZGluZyBjYWxsIGZyYW1lcyBhcyBuZWNlc3NhcnkuCkBAIC0xNjI0LDcgKzE2
MjQsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFs
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZQogICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KHJlc3VsdCk7CiB9CiAKLU5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUs
IGludCBsYXN0TGluZSkKK05FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUs
IGludCBsYXN0TGluZSwgaW50IGNvbHVtbikKIHsKICAgICBEZWJ1Z2dlciogZGVidWdnZXIgPSBj
YWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKICAgICBpZiAoIWRl
YnVnZ2VyKQpAQCAtMTYzMiwyMiArMTYzMiwyMiBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnBy
ZXRlcjo6ZGVidWcoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIERlYnVnSG9va0lEIGRlYnVnSG9vawog
CiAgICAgc3dpdGNoIChkZWJ1Z0hvb2tJRCkgewogICAgICAgICBjYXNlIERpZEVudGVyQ2FsbEZy
YW1lOgotICAgICAgICAgICAgZGVidWdnZXItPmNhbGxFdmVudChjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJzdExpbmUp
OworICAgICAgICAgICAgZGVidWdnZXItPmNhbGxFdmVudChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJzdExpbmUsIGNv
bHVtbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgV2lsbExlYXZlQ2FsbEZy
YW1lOgotICAgICAgICAgICAgZGVidWdnZXItPnJldHVybkV2ZW50KGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5l
KTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5yZXR1cm5FdmVudChjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSwg
Y29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBXaWxsRXhlY3V0ZVN0
YXRlbWVudDoKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5hdFN0YXRlbWVudChjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJz
dExpbmUpOworICAgICAgICAgICAgZGVidWdnZXItPmF0U3RhdGVtZW50KGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGZpcnN0
TGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBXaWxsRXhl
Y3V0ZVByb2dyYW06Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+d2lsbEV4ZWN1dGVQcm9ncmFtKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJj
ZUlEKCksIGZpcnN0TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+d2lsbEV4ZWN1dGVQcm9n
cmFtKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkt
PnNvdXJjZUlEKCksIGZpcnN0TGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgY2FzZSBEaWRFeGVjdXRlUHJvZ3JhbToKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRF
eGVjdXRlUHJvZ3JhbShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhl
Y3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+
ZGlkRXhlY3V0ZVByb2dyYW0oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25l
ckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgbGFzdExpbmUsIGNvbHVtbik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGNhc2UgRGlkUmVhY2hCcmVha3BvaW50OgotICAgICAgICAgICAg
ZGVidWdnZXItPmRpZFJlYWNoQnJlYWtwb2ludChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSk7CisgICAgICAg
ICAgICBkZWJ1Z2dlci0+ZGlkUmVhY2hCcmVha3BvaW50KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5lLCBjb2x1
bW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWRiMjNmMjM3MjM4NGRhZjg4
M2IxNGVmZjhiYWY1ZGM1ZmU2ZGY0MS4uNDdkNjY4OTg1MTVmMjE5MWU2NTkyNWUwMjc3ODc0ZWU3
YjAwOTA2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgKQEAgLTIyMCw3ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU2Ft
cGxpbmdUb29sKiBzYW1wbGVyKCkgeyByZXR1cm4gbV9zYW1wbGVyLmdldCgpOyB9CiAKICAgICAg
ICAgTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiB0aHJvd0V4Y2VwdGlvbihDYWxsRnJhbWUqJiwg
SlNWYWx1ZSYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgTkVWRVJfSU5MSU5F
IHZvaWQgZGVidWcoQ2FsbEZyYW1lKiwgRGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBs
YXN0TGluZSk7CisgICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERl
YnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUsIGludCBjb2x1bW4pOwogICAg
ICAgICBzdGF0aWMgY29uc3QgVVN0cmluZyBnZXRUcmFjZUxpbmUoQ2FsbEZyYW1lKiwgU3RhY2tG
cmFtZUNvZGVUeXBlLCBjb25zdCBVU3RyaW5nJiwgaW50KTsKICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZ2V0U3RhY2tUcmFjZShKU0dsb2JhbERhdGEqLCBWZWN0b3I8U3Rh
Y2tGcmFtZT4mIHJlc3VsdHMpOwogICAgICAgICBzdGF0aWMgdm9pZCBhZGRTdGFja1RyYWNlSWZO
ZWNlc3NhcnkoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDJlNDQ4ZGQ1MmFhOTYxZDliMjQxYWMwNWQwNDc4
MmEwNjE1MzZkMTQuLjZiNGE3NzY1YzhhN2Q3MzI5ZGRmZmRhY2JmOWEyOTUyNjNjNjM0MTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTE1OSw2ICsxMTU5
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJ
bW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsK
KyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9u
WzRdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmNhbGwoKTsKICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDRmODU4OTU1
NzJjMGU5ZjMyMjlhYjQ5MDgwYjZlZTU5NjE0YTgyNTEuLmY5OTdiM2U4YmQxMTJhMzc4NTM2MTRl
OTRkMTM3MDk2N2IwMTMwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKQEAgLTE0ODAsNiArMTQ4MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2Rl
YnVnKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsK
ICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kKSk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0
aW9uWzRdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmNhbGwoKTsKICNlbmRpZgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRleCA2YjgwODI4ODY5Njc0YjIwZTk1
NDI4ZTg0ZGQxODU5NTU5OTcyMzE4Li5jMGQxMDllMWQ4ZjNhMDE4NWNlZGMyYmY3MDI4MjRkNTBk
OTc2ODAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtMzM2OSw4
ICszMzY5LDkgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfZGVidWcpCiAgICAgaW50
IGRlYnVnSG9va0lEID0gc3RhY2tGcmFtZS5hcmdzWzBdLmludDMyKCk7CiAgICAgaW50IGZpcnN0
TGluZSA9IHN0YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpOwogICAgIGludCBsYXN0TGluZSA9IHN0
YWNrRnJhbWUuYXJnc1syXS5pbnQzMigpOworICAgIGludCBjb2x1bW4gPSBzdGFja0ZyYW1lLmFy
Z3NbM10uaW50MzIoKTsKIAotICAgIHN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXIt
PmRlYnVnKGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwg
Zmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgc3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5pbnRlcnBy
ZXRlci0+ZGVidWcoY2FsbEZyYW1lLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29r
SUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lLCBjb2x1bW4pOwogfQogCiBERUZJTkVfU1RVQl9GVU5D
VElPTih2b2lkKiwgdm1fdGhyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCBhNzY5OGJlMzc0MzI2OTMwODU1ZjVmMjUzMDE4ZGExNjVm
YjZjMWU5Li4xOTU4Y2Y2YTgwNmM1MTYzYTAzNmRlZWQ4ZDZiZTU0ODY3OTA4MGVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE1Nzgs
OCArMTU3OCw5IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWJ1ZykKICAgICBp
bnQgZGVidWdIb29rSUQgPSBwY1sxXS51Lm9wZXJhbmQ7CiAgICAgaW50IGZpcnN0TGluZSA9IHBj
WzJdLnUub3BlcmFuZDsKICAgICBpbnQgbGFzdExpbmUgPSBwY1szXS51Lm9wZXJhbmQ7Ci0gICAg
Ci0gICAgZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+ZGVidWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVi
dWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgaW50IGNv
bHVtbiA9IHBjWzRdLnUub3BlcmFuZDsKKworICAgIGdsb2JhbERhdGEuaW50ZXJwcmV0ZXItPmRl
YnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGlu
ZSwgbGFzdExpbmUsIGNvbHVtbik7CiAgICAgCiAgICAgTExJTlRfRU5EKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDBlYjYwY2Y4OTkyZmYwOTI0
OTkxMzQ0MzI4YmY5MzFhMWJmNzM2ZTcuLjRjNWY2ODI1YWY1NDc0MTc1Nzc0NTkwMDcwZmQ2MzNh
YjYxZDQxODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBA
IC0xMTIsOCArMTEyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgIERvbnRCdWls
ZEtleXdvcmRzID0gMDsKICAgICBzdGF0aWMgY29uc3QgaW50ICBEb250QnVpbGRTdHJpbmdzID0g
MDsKIAotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQmluYXJ5Tm9kZShpbnQgbGluZU51bWJlciwg
aW50IHRva2VuLCBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+LCBzdGQ6
OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+KTsKLSAgICBFeHByZXNzaW9uTm9k
ZSogbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBm
dW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7
CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaW5hcnlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBpbnQgdG9rZW4sIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFy
eU9wSW5mbz4sIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4pOworICAg
IEV4cHJlc3Npb25Ob2RlKiBtYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGZ1bmMsIEFyZ3VtZW50c05vZGUqIGFyZ3Ms
IGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKIAogICAgIEpTQzo6U291cmNlRWxlbWVu
dHMqIGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEpT
Qzo6U291cmNlRWxlbWVudHMoKTsgfQogCkBAIC0xMjQsMTY4ICsxMjQsMTY4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYXBwZW5kVG9Db21tYShDb21tYU5vZGUqIGNvbW1hTm9kZSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIpIHsgY29tbWFOb2RlLT5hcHBlbmQoZXhwcik7IH0KIAotICAgIENvbW1hTm9k
ZSogY3JlYXRlQ29tbWFFeHByKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGhzLCBF
eHByZXNzaW9uTm9kZSogcmhzKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29tbWFOb2Rl
KGxpbmVOdW1iZXIsIGxocywgcmhzKTsgfQotCi0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VBc3Np
Z25Ob2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0b3IsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBsZWZ0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotICAgIEV4cHJl
c3Npb25Ob2RlKiBtYWtlUHJlZml4Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
LCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlUG9zdGZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiwg
T3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZVR5cGVPZk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7Ci0g
ICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VEZWxldGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSosIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZU5lZ2F0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7Ci0g
ICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXR3aXNlTm90Tm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZU11bHROb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGl2Tm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZU1v
ZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUq
IG1ha2VBZGROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlU3ViTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBF
eHByZXNzaW9uTm9kZSogbWFrZUJpdFhPck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRBbmROb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0T3JOb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTGVmdFNoaWZ0
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSog
bWFrZVJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlVVJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOwotCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUxvZ2ljYWxOb3QoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
TG9naWNhbE5vdE5vZGUobGluZU51bWJlciwgZXhwcik7IH0KLSAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlVW5hcnlQbHVzKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobGluZU51bWJlciwgZXhwcik7
IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlVm9pZChpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIpCisgICAgQ29tbWFOb2RlKiBjcmVhdGVDb21tYUV4cHIoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25O
b2RlKiByaHMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBDb21tYU5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBsaHMsIHJocyk7IH0KKworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtl
QXNzaWduTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGxlZnQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgbGVmdEhhc0Fz
c2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90
LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVByZWZpeE5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIGludCBz
dGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVBvc3Rm
aXhOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSos
IE9wZXJhdG9yLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lv
bk5vZGUqIG1ha2VUeXBlT2ZOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSopOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGVsZXRlTm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqLCBpbnQgc3RhcnQs
IGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VOZWdhdGVOb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSopOworICAg
IEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0d2lzZU5vdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VN
dWx0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
KyAgICBFeHByZXNzaW9uTm9kZSogbWFrZURpdk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VNb2ROb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlQWRkTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVN1Yk5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lv
bk5vZGUqIG1ha2VCaXRYT3JOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0QW5kTm9kZShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Np
b25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZUJpdE9yTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUxlZnRTaGlmdE5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lv
bk5vZGUqIG1ha2VSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVVSaWdodFNoaWZ0Tm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKworICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVMb2dpY2FsTm90KGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIExvZ2ljYWxOb3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcik7IH0KKyAg
ICBFeHByZXNzaW9uTm9kZSogY3JlYXRlVW5hcnlQbHVzKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIFVuYXJ5UGx1c05vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByKTsgfQorICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVWb2lkKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKICAgICB7CiAgICAgICAgIGluY0NvbnN0YW50cygp
OwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFZvaWROb2RlKGxpbmVOdW1iZXIs
IGV4cHIpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFZvaWROb2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcik7CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2RlKiB0
aGlzRXhwcihpbnQgbGluZU51bWJlcikKKyAgICBFeHByZXNzaW9uTm9kZSogdGhpc0V4cHIoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICB1c2VzVGhpcygp
OwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFRoaXNOb2RlKGxpbmVOdW1iZXIp
OworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFRoaXNOb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcik7CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVSZXNvbHZl
KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgaW50IHN0YXJ0KQorICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVSZXNvbHZlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgaW50IHN0YXJ0KQogICAgIHsKICAgICAg
ICAgaWYgKG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICppZGVudCkK
ICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCAqaWRlbnQsIHN0YXJ0KTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsICppZGVudCwgc3RhcnQpOwogICAgIH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRl
T2JqZWN0TGl0ZXJhbChpbnQgbGluZU51bWJlcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IE9iamVjdExpdGVyYWxOb2RlKGxpbmVOdW1iZXIpOyB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNy
ZWF0ZU9iamVjdExpdGVyYWwoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5TGlzdE5vZGUqIHByb3Bl
cnRpZXMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBPYmplY3RMaXRlcmFsTm9kZShsaW5l
TnVtYmVyLCBwcm9wZXJ0aWVzKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVPYmplY3RM
aXRlcmFsKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKSB7IHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgT2JqZWN0TGl0ZXJhbE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsg
fQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVPYmplY3RMaXRlcmFsKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBQcm9wZXJ0eUxpc3ROb2RlKiBwcm9wZXJ0aWVzKSB7IHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgT2JqZWN0TGl0ZXJhbE5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBwcm9wZXJ0aWVzKTsgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5
KGludCBsaW5lTnVtYmVyLCBpbnQgZWxpc2lvbnMpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZUFycmF5KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQgZWxpc2lvbnMpCiAg
ICAgewogICAgICAgICBpZiAoZWxpc2lvbnMpCiAgICAgICAgICAgICBpbmNDb25zdGFudHMoKTsK
LSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcnJheU5vZGUobGluZU51bWJlciwg
ZWxpc2lvbnMpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGVsaXNpb25zKTsKICAgICB9CiAKLSAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIEVsZW1lbnROb2RlKiBlbGVtcykg
eyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5lTnVtYmVyLCBlbGVtcyk7
IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIGludCBl
bGlzaW9ucywgRWxlbWVudE5vZGUqIGVsZW1zKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVB
cnJheShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRWxlbWVudE5vZGUqIGVsZW1z
KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJyYXlOb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgZWxlbXMpOyB9CisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5KGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQgZWxpc2lvbnMsIEVsZW1lbnROb2RlKiBl
bGVtcykKICAgICB7CiAgICAgICAgIGlmIChlbGlzaW9ucykKICAgICAgICAgICAgIGluY0NvbnN0
YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5l
TnVtYmVyLCBlbGlzaW9ucywgZWxlbXMpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEFycmF5Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGVsaXNpb25zLCBlbGVtcyk7
CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdW1iZXJFeHByKGludCBsaW5lTnVt
YmVyLCBkb3VibGUgZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTnVtYmVyRXhwcihpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgZG91YmxlIGQpCiAgICAgewogICAgICAgICBp
bmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdW1iZXJO
b2RlKGxpbmVOdW1iZXIsIGQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51
bWJlck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBkKTsKICAgICB9CiAKLSAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlU3RyaW5nKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVy
KiBzdHJpbmcpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVN0cmluZyhpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciogc3RyaW5nKQogICAgIHsKICAg
ICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
U3RyaW5nTm9kZShsaW5lTnVtYmVyLCAqc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBTdHJpbmdOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgKnN0cmluZyk7
CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJvb2xlYW4oaW50IGxpbmVOdW1i
ZXIsIGJvb2wgYikKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQm9vbGVhbihpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCBiKQogICAgIHsKICAgICAgICAgaW5jQ29uc3Rh
bnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQm9vbGVhbk5vZGUobGlu
ZU51bWJlciwgYik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQm9vbGVhbk5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBiKTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlTnVsbChpbnQgbGluZU51bWJlcikKKyAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlTnVsbChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgICAg
IGluY0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bGxO
b2RlKGxpbmVOdW1iZXIpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bGxO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHksIGJvb2wgcHJvcGVydHlIYXNBc3NpZ25tZW50
cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNy
ZWF0ZUJyYWNrZXRBY2Nlc3MoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHksIGJvb2wgcHJvcGVydHlI
YXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiAgICAgewotICAg
ICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEJyYWNr
ZXRBY2Nlc3Nvck5vZGUobGluZU51bWJlciwgYmFzZSwgcHJvcGVydHksIHByb3BlcnR5SGFzQXNz
aWdubWVudHMpOworICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX2ds
b2JhbERhdGEpIEJyYWNrZXRBY2Nlc3Nvck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBi
YXNlLCBwcm9wZXJ0eSwgcHJvcGVydHlIYXNBc3NpZ25tZW50cyk7CiAgICAgICAgIHNldEV4Y2Vw
dGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5v
ZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURvdEFjY2VzcyhpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5
LCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlRG90QWNjZXNzKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciogcHJvcGVydHksIGludCBzdGFydCwgaW50IGRp
dm90LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3
IChtX2dsb2JhbERhdGEpIERvdEFjY2Vzc29yTm9kZShsaW5lTnVtYmVyLCBiYXNlLCAqcHJvcGVy
dHkpOworICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
RG90QWNjZXNzb3JOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgYmFzZSwgKnByb3BlcnR5
KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQp
OwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlUmVnRXhwKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25z
dCBJZGVudGlmaWVyJiBmbGFncywgaW50IHN0YXJ0KQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVSZWdFeHAoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBpbnQgc3RhcnQpCiAgICAgewog
ICAgICAgICBpZiAoWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi51c3RyaW5nKCkpKQogICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIFJlZ0V4cE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgUmVnRXhwTm9kZShsaW5lTnVtYmVyLCBwYXR0ZXJuLCBmbGFncyk7CisgICAgICAgIFJl
Z0V4cE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVnRXhwTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHBhdHRlcm4sIGZsYWdzKTsKICAgICAgICAgaW50IHNpemUgPSBwYXR0
ZXJuLmxlbmd0aCgpICsgMjsgLy8gKyAyIGZvciB0aGUgdHdvIC8ncwogICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgc3RhcnQgKyBzaXplLCBzdGFydCArIHNpemUpOwog
ICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRl
TmV3RXhwcihpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05v
ZGUqIGFyZ3VtZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZU5ld0V4cHIoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmd1bWVudHMsIGludCBzdGFy
dCwgaW50IGRpdm90LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgTmV3RXhwck5vZGUobGluZU51bWJlciwgZXhwciwgYXJndW1l
bnRzKTsKKyAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTmV3
RXhwck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByLCBhcmd1bWVudHMpOwogICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAg
ICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdF
eHByKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQg
ZW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdFeHByKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5k
KQogICAgIHsKLSAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
TmV3RXhwck5vZGUobGluZU51bWJlciwgZXhwcik7CisgICAgICAgIE5ld0V4cHJOb2RlKiBub2Rl
ID0gbmV3IChtX2dsb2JhbERhdGEpIE5ld0V4cHJOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgZXhwcik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBlbmQs
IGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVDb25kaXRpb25hbEV4cHIoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBj
b25kaXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiByaHMpCisgICAg
RXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGxocywgRXhwcmVzc2lvbk5vZGUqIHJocykKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgQ29uZGl0aW9uYWxOb2RlKGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgbGhzLCBy
aHMpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbmRpdGlvbmFsTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgbGhzLCByaHMpOwogICAgIH0KIAot
ICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBc3NpZ25SZXNvbHZlKGludCBsaW5lTnVtYmVyLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJocywgYm9vbCByaHNIYXNB
c3NpZ25tZW50LCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlQXNzaWduUmVzb2x2ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaHMsIGJvb2wgcmhz
SGFzQXNzaWdubWVudCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiAgICAgewogICAg
ICAgICBpZiAocmhzLT5pc0Z1bmNFeHByTm9kZSgpKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
RnVuY0V4cHJOb2RlKj4ocmhzKS0+Ym9keSgpLT5zZXRJbmZlcnJlZE5hbWUoaWRlbnQpOwotICAg
ICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25S
ZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBpZGVudCwgcmhzLCByaHNIYXNBc3NpZ25tZW50KTsKKyAg
ICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWdu
UmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBpZGVudCwgcmhzLCByaHNIYXNB
c3NpZ25tZW50KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRp
dm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlRnVuY3Rpb25FeHByKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVy
KiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJz
LCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUs
IGludCBib2R5RW5kTGluZSkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rpb25FeHBy
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBuYW1l
LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJzLCBpbnQg
b3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBi
b2R5RW5kTGluZSkKICAgICB7Ci0gICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3ICht
X2dsb2JhbERhdGEpIEZ1bmNFeHByTm9kZShsaW5lTnVtYmVyLCAqbmFtZSwgYm9keSwgbV9zb3Vy
Y2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0
YXJ0TGluZSksIHBhcmFtZXRlcnMpOwotICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGlu
ZSwgYm9keUVuZExpbmUpOworICAgICAgICBGdW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAqbmFtZSwg
Ym9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFj
ZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtZXRlcnMpOworICAgICAgICBib2R5LT5zZXRMb2Mo
Ym9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlRnVuY3Rpb25C
b2R5KGludCBsaW5lTnVtYmVyLCBib29sIGluU3RyaWN0Q29udGV4dCkKKyAgICBGdW5jdGlvbkJv
ZHlOb2RlKiBjcmVhdGVGdW5jdGlvbkJvZHkoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIEZ1bmN0aW9u
Qm9keU5vZGU6OmNyZWF0ZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGluU3RyaWN0Q29udGV4
dCk7CisgICAgICAgIHJldHVybiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUobV9nbG9iYWxEYXRh
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGluU3RyaWN0Q29udGV4dCk7CiAgICAgfQogICAg
IAotICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVy
UHJvcGVydHkoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJ
ZGVudGlmaWVyKiBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUq
IGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0
TGluZSwgaW50IGJvZHlFbmRMaW5lKQorICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUq
IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBQ
YXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVuQnJh
Y2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRM
aW5lKQogICAgIHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwotICAgICAgICBib2R5LT5zZXRMb2Mo
Ym9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUpOworICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0
YXJ0TGluZSwgYm9keUVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIGJvZHktPnNldElu
ZmVycmVkTmFtZSgqbmFtZSk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJv
cGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwgKm5hbWUsIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhw
ck5vZGUobGluZU51bWJlciwgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRp
ZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xv
c2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtcyksIHR5cGUpOworICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERhdGEsICpuYW1lLCBu
ZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4cHJOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
bV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgYm9keSwgbV9zb3Vy
Y2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0
YXJ0TGluZSksIHBhcmFtcyksIHR5cGUpOwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8Ym9v
bD4gUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KEpTR2xvYmFsRGF0
YSosIGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUs
IFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgaW50IG9wZW5C
cmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVu
ZExpbmUpCisgICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JT
ZXR0ZXJQcm9wZXJ0eShKU0dsb2JhbERhdGEqLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBuYW1lLCBQYXJhbWV0ZXJOb2Rl
KiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBj
bG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQogICAgIHsK
LSAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lKTsKLSAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCBu
YW1lLCBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4cHJOb2RlKGxpbmVOdW1iZXIsIG1fZ2xvYmFs
RGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+
c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUp
LCBwYXJhbXMpLCB0eXBlKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJv
ZHlFbmRMaW5lLCBjb2x1bW5OdW1iZXIpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERhdGEsIG5hbWUsIG5ldyAobV9nbG9iYWxEYXRhKSBG
dW5jRXhwck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBtX2dsb2JhbERhdGEtPnByb3Bl
cnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Np
b24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1zKSwg
dHlwZSk7CiAgICAgfQogCiAgICAgQXJndW1lbnRzTm9kZSogY3JlYXRlQXJndW1lbnRzKCkgeyBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50c05vZGUoKTsgfQogICAgIEFyZ3VtZW50
c05vZGUqIGNyZWF0ZUFyZ3VtZW50cyhBcmd1bWVudExpc3ROb2RlKiBhcmdzKSB7IHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRzTm9kZShhcmdzKTsgfQotICAgIEFyZ3VtZW50TGlz
dE5vZGUqIGNyZWF0ZUFyZ3VtZW50c0xpc3QoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBhcmcpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxpbmVO
dW1iZXIsIGFyZyk7IH0KLSAgICBBcmd1bWVudExpc3ROb2RlKiBjcmVhdGVBcmd1bWVudHNMaXN0
KGludCBsaW5lTnVtYmVyLCBBcmd1bWVudExpc3ROb2RlKiBhcmdzLCBFeHByZXNzaW9uTm9kZSog
YXJnKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVt
YmVyLCBhcmdzLCBhcmcpOyB9CisgICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRz
TGlzdChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGFy
ZykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBhcmcpOyB9CisgICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJn
dW1lbnRzTGlzdChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgQXJndW1lbnRMaXN0
Tm9kZSogYXJncywgRXhwcmVzc2lvbk5vZGUqIGFyZykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEFyZ3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBhcmdzLCBhcmcp
OyB9CiAKICAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShj
b25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9w
ZXJ0eU5vZGU6OlR5cGUgdHlwZSkKICAgICB7CkBAIC0yOTQsOCArMjk0LDggQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERh
dGEsICpwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUpOwogICAgIH0KICAgICB0ZW1wbGF0ZSA8Ym9v
bD4gUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShKU0dsb2JhbERhdGEqLCBkb3VibGUgcHJv
cGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUp
IHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUpOyB9Ci0gICAgUHJvcGVydHlMaXN0Tm9kZSogY3JlYXRl
UHJvcGVydHlMaXN0KGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5KSB7IHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlMaXN0Tm9kZShsaW5lTnVtYmVyLCBwcm9w
ZXJ0eSk7IH0KLSAgICBQcm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoaW50IGxp
bmVOdW1iZXIsIFByb3BlcnR5Tm9kZSogcHJvcGVydHksIFByb3BlcnR5TGlzdE5vZGUqIHRhaWwp
IHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eUxpc3ROb2RlKGxpbmVOdW1iZXIs
IHByb3BlcnR5LCB0YWlsKTsgfQorICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5
TGlzdChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUHJvcGVydHlOb2RlKiBwcm9w
ZXJ0eSkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5TGlzdE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBwcm9wZXJ0eSk7IH0KKyAgICBQcm9wZXJ0eUxpc3ROb2RlKiBj
cmVhdGVQcm9wZXJ0eUxpc3QoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFByb3Bl
cnR5Tm9kZSogcHJvcGVydHksIFByb3BlcnR5TGlzdE5vZGUqIHRhaWwpIHsgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBQcm9wZXJ0eUxpc3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
cHJvcGVydHksIHRhaWwpOyB9CiAKICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExpc3Qo
aW50IGVsaXNpb25zLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIEVsZW1lbnROb2RlKGVsaXNpb25zLCBleHByKTsgfQogICAgIEVsZW1lbnROb2RlKiBj
cmVhdGVFbGVtZW50TGlzdChFbGVtZW50Tm9kZSogZWxlbXMsIGludCBlbGlzaW9ucywgRXhwcmVz
c2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFbGVtZW50Tm9kZShl
bGVtcywgZWxpc2lvbnMsIGV4cHIpOyB9CkBAIC0zMDksMTkxICszMDksMTkxIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cyhGdW5jdGlvbkJvZHlOb2RlKiBub2RlKSB7IG5v
ZGUtPnNldFVzZXNBcmd1bWVudHMoKTsgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRnVu
Y0RlY2xTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIEZ1
bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcnMsIGludCBvcGVu
QnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlF
bmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBGdW5j
dGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJzLCBpbnQgb3BlbkJy
YWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5k
TGluZSkKICAgICB7Ci0gICAgICAgIEZ1bmNEZWNsTm9kZSogZGVjbCA9IG5ldyAobV9nbG9iYWxE
YXRhKSBGdW5jRGVjbE5vZGUobGluZU51bWJlciwgKm5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+
c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUp
LCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgRnVuY0RlY2xOb2RlKiBkZWNsID0gbmV3IChtX2dsb2Jh
bERhdGEpIEZ1bmNEZWNsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICpuYW1lLCBib2R5
LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9z
LCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7CiAgICAgICAgIGlmICgqbmFtZSA9PSBtX2ds
b2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykKICAgICAgICAgICAgIHVzZXNBcmd1
bWVudHMoKTsKICAgICAgICAgbV9zY29wZS5tX2Z1bmNEZWNsYXJhdGlvbnMtPmRhdGEuYXBwZW5k
KGRlY2wtPmJvZHkoKSk7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5
RW5kTGluZSk7CisgICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGlu
ZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIGRlY2w7CiAgICAgfQogCi0gICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlQmxvY2tTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEpTQzo6U291
cmNlRWxlbWVudHMqIGVsZW1lbnRzLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBT
dGF0ZW1lbnROb2RlKiBjcmVhdGVCbG9ja1N0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgSlNDOjpTb3VyY2VFbGVtZW50cyogZWxlbWVudHMsIGludCBzdGFydExpbmUs
IGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQmxvY2tOb2RlKiBibG9jayA9IG5ldyAobV9n
bG9iYWxEYXRhKSBCbG9ja05vZGUobGluZU51bWJlciwgZWxlbWVudHMpOwotICAgICAgICBibG9j
ay0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIEJsb2NrTm9kZSogYmxvY2sg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgQmxvY2tOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
ZWxlbWVudHMpOworICAgICAgICBibG9jay0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29s
dW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIGJsb2NrOwogICAgIH0KIAotICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZUV4cHJTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRXhw
clN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIEV4cHJTdGF0ZW1l
bnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRXhwclN0YXRlbWVudE5vZGUobGlu
ZU51bWJlciwgZXhwcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQpOworICAg
ICAgICBFeHByU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEV4cHJT
dGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcik7CisgICAgICAgIHJl
c3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlSWZTdGF0ZW1lbnQoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIHRy
dWVCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUlm
U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnVlQmxvY2ssIGludCBzdGFydCwgaW50IGVu
ZCkKICAgICB7Ci0gICAgICAgIElmTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIElm
Tm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24sIHRydWVCbG9jayk7Ci0gICAgICAgIHJlc3VsdC0+
c2V0TG9jKHN0YXJ0LCBlbmQpOworICAgICAgICBJZk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9i
YWxEYXRhKSBJZk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIHRydWVC
bG9jayk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGNvbHVtbk51bWJlcik7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3Jl
YXRlSWZTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24s
IFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywgU3RhdGVtZW50Tm9kZSogZmFsc2VCbG9jaywgaW50
IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50KGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9u
LCBTdGF0ZW1lbnROb2RlKiB0cnVlQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZhbHNlQmxvY2ssIGlu
dCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIElmTm9kZSogcmVzdWx0ID0gbmV3ICht
X2dsb2JhbERhdGEpIElmRWxzZU5vZGUobGluZU51bWJlciwgY29uZGl0aW9uLCB0cnVlQmxvY2ss
IGZhbHNlQmxvY2spOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAgICAg
ICAgSWZOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSWZFbHNlTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBmYWxzZUJsb2NrKTsKKyAg
ICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgY29sdW1uTnVtYmVyKTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JMb29w
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIsIEV4cHJlc3Npb25O
b2RlKiBjb25kaXRpb24sIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0
ZW1lbnRzLCBib29sIGIsIGludCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVGb3JMb29wKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogaW5pdGlhbGl6ZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIEV4cHJlc3Npb25O
b2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBib29sIGIsIGludCBzdGFydCwg
aW50IGVuZCkKICAgICB7Ci0gICAgICAgIEZvck5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxE
YXRhKSBGb3JOb2RlKGxpbmVOdW1iZXIsIGluaXRpYWxpemVyLCBjb25kaXRpb24sIGl0ZXIsIHN0
YXRlbWVudHMsIGIpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAgICAg
ICAgRm9yTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZvck5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBpbml0aWFsaXplciwgY29uZGl0aW9uLCBpdGVyLCBzdGF0ZW1lbnRz
LCBiKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgY29sdW1uTnVtYmVyKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVh
dGVGb3JJbkxvb3AoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBFeHBy
ZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnRO
b2RlKiBzdGF0ZW1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCwgaW50IGluaXRT
dGFydCwgaW50IGluaXRFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplciwg
RXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGludCBzdGFy
dCwgaW50IGRpdm90LCBpbnQgZW5kLCBpbnQgaW5pdFN0YXJ0LCBpbnQgaW5pdEVuZCwgaW50IHN0
YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBGb3JJbk5vZGUqIHJlc3VsdCA9
IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JJbk5vZGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCAq
aWRlbnQsIGluaXRpYWxpemVyLCBpdGVyLCBzdGF0ZW1lbnRzLCBpbml0U3RhcnQsIGluaXRTdGFy
dCAtIHN0YXJ0LCBpbml0RW5kIC0gaW5pdFN0YXJ0KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
c3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgRm9ySW5Ob2RlKG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCAqaWRlbnQsIGluaXRpYWxpemVyLCBpdGVyLCBzdGF0ZW1lbnRzLCBpbml0U3RhcnQsIGlu
aXRTdGFydCAtIHN0YXJ0LCBpbml0RW5kIC0gaW5pdFN0YXJ0KTsKKyAgICAgICAgcmVzdWx0LT5z
ZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihyZXN1bHQsIHN0YXJ0LCBkaXZvdCArIDEsIGVuZCk7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29w
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogaXRl
ciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IGVTdGFydCwgaW50IGVEaXZvdCwgaW50
IGVFbmQsIGludCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJ
bkxvb3AoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBs
aHMsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQg
ZVN0YXJ0LCBpbnQgZURpdm90LCBpbnQgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsK
LSAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9ySW5Ob2Rl
KG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgbGhzLCBpdGVyLCBzdGF0ZW1lbnRzKTsKLSAgICAg
ICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCk7CisgICAgICAgIEZvckluTm9kZSogcmVzdWx0
ID0gbmV3IChtX2dsb2JhbERhdGEpIEZvckluTm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgbGhzLCBpdGVyLCBzdGF0ZW1lbnRzKTsKKyAgICAgICAgcmVzdWx0LT5z
ZXRMb2Moc3RhcnQsIGVuZCwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9j
YXRpb24ocmVzdWx0LCBlU3RhcnQsIGVEaXZvdCwgZUVuZCk7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRW1wdHlTdGF0ZW1lbnQoaW50
IGxpbmVOdW1iZXIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFbXB0eVN0YXRlbWVudE5v
ZGUobGluZU51bWJlcik7IH0KKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVFbXB0eVN0YXRlbWVu
dChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgeyByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIEVtcHR5U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOyB9CiAK
LSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVWYXJTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlVmFyU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKICAgICAgICAg
U3RhdGVtZW50Tm9kZSogcmVzdWx0OwogICAgICAgICBpZiAoIWV4cHIpCi0gICAgICAgICAgICBy
ZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRW1wdHlTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIp
OworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEVtcHR5U3RhdGVtZW50
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgVmFyU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
LCBleHByKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCk7CisgICAgICAgICAg
ICByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgVmFyU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIGV4cHIpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5k
LCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0
YXRlbWVudE5vZGUqIGNyZWF0ZVJldHVyblN0YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHJlc3Npb24sIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5l
LCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByZXNz
aW9uLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAg
ICAgewotICAgICAgICBSZXR1cm5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmV0
dXJuTm9kZShsaW5lTnVtYmVyLCBleHByZXNzaW9uKTsKKyAgICAgICAgUmV0dXJuTm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFJldHVybk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBleHByZXNzaW9uKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBl
U3RhcnQsIGVFbmQsIGVFbmQpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVu
ZExpbmUpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVt
bk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBlU3RhcnQsIGlu
dCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVCcmVha1N0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgaW50
IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAg
ICAgICAgQnJlYWtOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJlYWtOb2RlKG1f
Z2xvYmFsRGF0YSwgbGluZU51bWJlcik7CisgICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3
IChtX2dsb2JhbERhdGEpIEJyZWFrTm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBl
RW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsK
KyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZUJyZWFrU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAg
IFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJyZWFrU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgaW50IGVTdGFydCwgaW50IGVF
bmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQnJlYWtOb2Rl
KiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJlYWtOb2RlKGxpbmVOdW1iZXIsICppZGVu
dCk7CisgICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEJyZWFr
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICppZGVudCk7CiAgICAgICAgIHNldEV4Y2Vw
dGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0
LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3Rh
cnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGludCBs
aW5lTnVtYmVyLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExp
bmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRM
aW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0ID0g
bmV3IChtX2dsb2JhbERhdGEpIENvbnRpbnVlTm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIp
OworICAgICAgICBDb250aW51ZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb250
aW51ZU5vZGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgICAg
ICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAg
ICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJlc3VsdC0+
c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVDb250aW51ZVN0YXRl
bWVudChpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBlU3RhcnQs
IGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2Rl
KiBjcmVhdGVDb250aW51ZVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3Rh
cnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0
ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnRpbnVlTm9kZShsaW5lTnVtYmVyLCAqaWRlbnQpOwor
ICAgICAgICBDb250aW51ZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb250aW51
ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAqaWRlbnQpOwogICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3Vs
dC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0
YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVUcnlTdGF0ZW1lbnQoaW50IGxpbmVO
dW1iZXIsIFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwg
U3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywgU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrLCBp
bnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVUcnlT
dGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFN0YXRlbWVudE5vZGUq
IHRyeUJsb2NrLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hC
bG9jaywgU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5k
TGluZSkKICAgICB7Ci0gICAgICAgIFRyeU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRh
KSBUcnlOb2RlKGxpbmVOdW1iZXIsIHRyeUJsb2NrLCAqaWRlbnQsIGNhdGNoQmxvY2ssIGZpbmFs
bHlCbG9jayk7CisgICAgICAgIFRyeU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBU
cnlOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdHJ5QmxvY2ssICppZGVudCwgY2F0Y2hC
bG9jaywgZmluYWxseUJsb2NrKTsKICAgICAgICAgaWYgKGNhdGNoQmxvY2spCiAgICAgICAgICAg
ICB1c2VzQ2F0Y2goKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5l
KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1i
ZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZVN3aXRjaFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIsIENsYXVzZUxpc3ROb2RlKiBmaXJzdENsYXVzZXMsIENhc2VDbGF1c2VOb2RlKiBkZWZhdWx0
Q2xhdXNlLCBDbGF1c2VMaXN0Tm9kZSogc2Vjb25kQ2xhdXNlcywgaW50IHN0YXJ0TGluZSwgaW50
IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlU3dpdGNoU3RhdGVtZW50KGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQ2xhdXNl
TGlzdE5vZGUqIGZpcnN0Q2xhdXNlcywgQ2FzZUNsYXVzZU5vZGUqIGRlZmF1bHRDbGF1c2UsIENs
YXVzZUxpc3ROb2RlKiBzZWNvbmRDbGF1c2VzLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkK
ICAgICB7CiAgICAgICAgIENhc2VCbG9ja05vZGUqIGNhc2VzID0gbmV3IChtX2dsb2JhbERhdGEp
IENhc2VCbG9ja05vZGUoZmlyc3RDbGF1c2VzLCBkZWZhdWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2Vz
KTsKLSAgICAgICAgU3dpdGNoTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFN3aXRj
aE5vZGUobGluZU51bWJlciwgZXhwciwgY2FzZXMpOwotICAgICAgICByZXN1bHQtPnNldExvYyhz
dGFydExpbmUsIGVuZExpbmUpOworICAgICAgICBTd2l0Y2hOb2RlKiByZXN1bHQgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgU3dpdGNoTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIsIGNh
c2VzKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5O
dW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5v
ZGUqIGNyZWF0ZVdoaWxlU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGlu
ZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaGlsZVN0YXRlbWVudChpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUq
IHN0YXRlbWVudCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBX
aGlsZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBXaGlsZU5vZGUobGluZU51bWJl
ciwgZXhwciwgc3RhdGVtZW50KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBl
bmRMaW5lKTsKKyAgICAgICAgV2hpbGVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
V2hpbGVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwciwgc3RhdGVtZW50KTsKKyAg
ICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0
ZURvV2hpbGVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVu
dCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAg
IFN0YXRlbWVudE5vZGUqIGNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgRG9XaGls
ZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBEb1doaWxlTm9kZShsaW5lTnVtYmVy
LCBzdGF0ZW1lbnQsIGV4cHIpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVu
ZExpbmUpOworICAgICAgICBEb1doaWxlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEp
IERvV2hpbGVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGVtZW50LCBleHByKTsK
KyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZUxhYmVsU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlTGFiZWxTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1l
bnQsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIExhYmVsTm9kZSogcmVzdWx0
ID0gbmV3IChtX2dsb2JhbERhdGEpIExhYmVsTm9kZShsaW5lTnVtYmVyLCAqaWRlbnQsIHN0YXRl
bWVudCk7CisgICAgICAgIExhYmVsTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIExh
YmVsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICppZGVudCwgc3RhdGVtZW50KTsKICAg
ICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBzdGFydCwgZW5kLCBlbmQpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVdp
dGhTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1l
bnROb2RlKiBzdGF0ZW1lbnQsIGludCBzdGFydCwgaW50IGVuZCwgaW50IHN0YXJ0TGluZSwgaW50
IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlV2l0aFN0YXRlbWVudChpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVu
dE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQg
ZW5kTGluZSkKICAgICB7CiAgICAgICAgIHVzZXNXaXRoKCk7Ci0gICAgICAgIFdpdGhOb2RlKiBy
ZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgV2l0aE5vZGUobGluZU51bWJlciwgZXhwciwgc3Rh
dGVtZW50LCBlbmQsIGVuZCAtIHN0YXJ0KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lKTsKKyAgICAgICAgV2l0aE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxE
YXRhKSBXaXRoTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIsIHN0YXRlbWVudCwg
ZW5kLCBlbmQgLSBzdGFydCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5k
TGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9ICAgIAog
ICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVRocm93U3RhdGVtZW50KGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRM
aW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVUaHJvd1N0YXRlbWVu
dChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIs
IGludCBzdGFydCwgaW50IGVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewot
ICAgICAgICBUaHJvd05vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBUaHJvd05vZGUo
bGluZU51bWJlciwgZXhwcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5k
TGluZSk7CisgICAgICAgIFRocm93Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFRo
cm93Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIpOworICAgICAgICByZXN1bHQt
PnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHNldEV4
Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGVuZCwgZW5kKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRGVidWdnZXIo
aW50IGxpbmVOdW1iZXIsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZURlYnVnZ2VyKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBp
bnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIERlYnVnZ2VyU3RhdGVt
ZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIERlYnVnZ2VyU3RhdGVtZW50Tm9k
ZShsaW5lTnVtYmVyKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5l
KTsKKyAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgRGVidWdnZXJTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7Cisg
ICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlQ29uc3RTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIENvbnN0RGVjbE5vZGUqIGRlY2xz
LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVD
b25zdFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgQ29uc3REZWNs
Tm9kZSogZGVjbHMsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAg
Q29uc3RTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3RTdGF0
ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGRlY2xzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3Rh
cnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgQ29uc3RTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3RTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgZGVjbHMpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUs
IGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgQ29u
c3REZWNsTm9kZSogYXBwZW5kQ29uc3REZWNsKGludCBsaW5lTnVtYmVyLCBDb25zdERlY2xOb2Rl
KiB0YWlsLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6
ZXIpCisgICAgQ29uc3REZWNsTm9kZSogYXBwZW5kQ29uc3REZWNsKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBDb25zdERlY2xOb2RlKiB0YWlsLCBjb25zdCBJZGVudGlmaWVyKiBu
YW1lLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIpCiAgICAgewotICAgICAgICBDb25zdERl
Y2xOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3REZWNsTm9kZShsaW5lTnVt
YmVyLCAqbmFtZSwgaW5pdGlhbGl6ZXIpOworICAgICAgICBDb25zdERlY2xOb2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3REZWNsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsICpuYW1lLCBpbml0aWFsaXplcik7CiAgICAgICAgIGlmICh0YWlsKQogICAgICAgICAgICAg
dGFpbC0+bV9uZXh0ID0gcmVzdWx0OwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTExLDcg
KzUxMSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9zY29wZS5tX3ZhckRlY2xhcmF0aW9ucy0+ZGF0
YS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaWRlbnQsIGF0dHJzKSk7CiAgICAgfQogCi0gICAgRXhw
cmVzc2lvbk5vZGUqIGNvbWJpbmVDb21tYU5vZGVzKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogbGlzdCwgRXhwcmVzc2lvbk5vZGUqIGluaXQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNv
bWJpbmVDb21tYU5vZGVzKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogbGlzdCwgRXhwcmVzc2lvbk5vZGUqIGluaXQpCiAgICAgewogICAgICAgICBpZiAo
IWxpc3QpCiAgICAgICAgICAgICByZXR1cm4gaW5pdDsKQEAgLTUxOSw3ICs1MTksNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDb21tYU5vZGUqPihsaXN0KS0+YXBwZW5kKGlu
aXQpOwogICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBDb21tYU5vZGUobGluZU51bWJlciwgbGlzdCwgaW5pdCk7Cisg
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29tbWFOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgbGlzdCwgaW5pdCk7CiAgICAgfQogCiAgICAgaW50IGV2YWxDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZXZhbENvdW50OyB9CkBAIC01NDcsMTAgKzU0NywxMCBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVChvcGVyYW5kU3RhY2tEZXB0aCA+PSAwKTsKICAgICAgICAgbV9iaW5h
cnlPcGVyYW5kU3RhY2sucmVzaXplKG1fYmluYXJ5T3BlcmFuZFN0YWNrLnNpemUoKSAtIGFtb3Vu
dCk7CiAgICAgfQotICAgIHZvaWQgYXBwZW5kQmluYXJ5T3BlcmF0aW9uKGludCBsaW5lTnVtYmVy
LCBpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQmLCBjb25zdCBCaW5hcnlPcGVyYW5kJiBsaHMs
IGNvbnN0IEJpbmFyeU9wZXJhbmQmIHJocykKKyAgICB2b2lkIGFwcGVuZEJpbmFyeU9wZXJhdGlv
bihpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgaW50JiBvcGVyYW5kU3RhY2tEZXB0
aCwgaW50JiwgY29uc3QgQmluYXJ5T3BlcmFuZCYgbGhzLCBjb25zdCBCaW5hcnlPcGVyYW5kJiBy
aHMpCiAgICAgewogICAgICAgICBvcGVyYW5kU3RhY2tEZXB0aCsrOwotICAgICAgICBtX2JpbmFy
eU9wZXJhbmRTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIobWFrZUJpbmFyeU5vZGUobGluZU51
bWJlciwgbV9iaW5hcnlPcGVyYXRvclN0YWNrLmxhc3QoKS5maXJzdCwgbGhzLCByaHMpLCBCaW5h
cnlPcEluZm8obGhzLnNlY29uZCwgcmhzLnNlY29uZCkpKTsKKyAgICAgICAgbV9iaW5hcnlPcGVy
YW5kU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG1ha2VCaW5hcnlOb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgbV9iaW5hcnlPcGVyYXRvclN0YWNrLmxhc3QoKS5maXJzdCwgbGhzLCBy
aHMpLCBCaW5hcnlPcEluZm8obGhzLnNlY29uZCwgcmhzLnNlY29uZCkpKTsKICAgICB9CiAgICAg
dm9pZCBvcGVyYXRvclN0YWNrQXBwZW5kKGludCYgb3BlcmF0b3JTdGFja0RlcHRoLCBpbnQgb3As
IGludCBwcmVjZWRlbmNlKQogICAgIHsKQEAgLTU5Miw5ICs1OTIsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fYXNzaWdubWVudEluZm9TdGFjay5hcHBlbmQoQXNzaWdubWVudEluZm8obm9kZSwgc3Rh
cnQsIGRpdm90LCBhc3NpZ25tZW50Q291bnQsIG9wKSk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZUFzc2lnbm1lbnQoaW50IGxpbmVOdW1iZXIsIGludCYgYXNzaWdubWVudFN0
YWNrRGVwdGgsIEV4cHJlc3Npb25Ob2RlKiByaHMsIGludCBpbml0aWFsQXNzaWdubWVudENvdW50
LCBpbnQgY3VycmVudEFzc2lnbm1lbnRDb3VudCwgaW50IGxhc3RUb2tlbkVuZCkKKyAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlQXNzaWdubWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgaW50JiBhc3NpZ25tZW50U3RhY2tEZXB0aCwgRXhwcmVzc2lvbk5vZGUqIHJocywgaW50
IGluaXRpYWxBc3NpZ25tZW50Q291bnQsIGludCBjdXJyZW50QXNzaWdubWVudENvdW50LCBpbnQg
bGFzdFRva2VuRW5kKQogICAgIHsKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHJlc3VsdCA9IG1h
a2VBc3NpZ25Ob2RlKGxpbmVOdW1iZXIsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9u
b2RlLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fb3AsIHJocywgbV9hc3NpZ25tZW50
SW5mb1N0YWNrLmxhc3QoKS5tX2luaXRBc3NpZ25tZW50cyAhPSBpbml0aWFsQXNzaWdubWVudENv
dW50LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1faW5pdEFzc2lnbm1lbnRzICE9IGN1
cnJlbnRBc3NpZ25tZW50Q291bnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9zdGFy
dCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX2Rpdm90ICsgMSwgbGFzdFRva2VuRW5k
KTsKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHJlc3VsdCA9IG1ha2VBc3NpZ25Ob2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX25vZGUs
IG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9vcCwgcmhzLCBtX2Fzc2lnbm1lbnRJbmZv
U3RhY2subGFzdCgpLm1faW5pdEFzc2lnbm1lbnRzICE9IGluaXRpYWxBc3NpZ25tZW50Q291bnQs
IG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9pbml0QXNzaWdubWVudHMgIT0gY3VycmVu
dEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX3N0YXJ0LCBt
X2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fZGl2b3QgKyAxLCBsYXN0VG9rZW5FbmQpOwog
ICAgICAgICBtX2Fzc2lnbm1lbnRJbmZvU3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICBhc3Np
Z25tZW50U3RhY2tEZXB0aC0tOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjM1LDkgKzYz
NSw5IEBAIHByaXZhdGU6CiAgICAgICAgIG1fZXZhbENvdW50Kys7CiAgICAgICAgIG1fc2NvcGUu
bV9mZWF0dXJlcyB8PSBFdmFsRmVhdHVyZTsKICAgICB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNy
ZWF0ZU51bWJlcihpbnQgbGluZU51bWJlciwgZG91YmxlIGQpCisgICAgRXhwcmVzc2lvbk5vZGUq
IGNyZWF0ZU51bWJlcihpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgZG91YmxlIGQp
CiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bWJlck5vZGUobGlu
ZU51bWJlciwgZCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTnVtYmVyTm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGQpOwogICAgIH0KICAgICAKICAgICBKU0dsb2Jh
bERhdGEqIG1fZ2xvYmFsRGF0YTsKQEAgLTY1MCwzMyArNjUwLDMzIEBAIHByaXZhdGU6CiAgICAg
aW50IG1fZXZhbENvdW50OwogfTsKIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VU
eXBlT2ZOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKK0V4cHJlc3Np
b25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlVHlwZU9mTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCiB7CiAgICAgaWYgKGV4cHItPmlzUmVz
b2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0
PFJlc29sdmVOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
VHlwZU9mUmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUeXBlT2ZSZXNvbHZlTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSk7CiAgICAgfQotICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVHlwZU9mVmFsdWVOb2RlKGxpbmVOdW1iZXIsIGV4cHIp
OworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVHlwZU9mVmFsdWVOb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgZXhwcik7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVy
OjptYWtlRGVsZXRlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGlu
dCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6
Om1ha2VEZWxldGVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiB7CiAgICAgaWYg
KCFleHByLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
RGVsZXRlVmFsdWVOb2RlKGxpbmVOdW1iZXIsIGV4cHIpOworICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIERlbGV0ZVZhbHVlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4
cHIpOwogICAgIGlmIChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5v
ZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHIpOwotICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZVJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJl
c29sdmUtPmlkZW50aWZpZXIoKSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsK
KyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEZWxldGVSZXNvbHZlTm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgZGl2b3QsIGRpdm90
IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICB9CiAgICAgaWYgKGV4cHItPmlzQnJhY2tldEFj
Y2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBz
dGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlQnJhY2tldE5vZGUobGluZU51bWJlciwgYnJhY2tldC0+
YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAt
IGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEZWxldGVCcmFja2V0
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+
c3Vic2NyaXB0KCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQog
ICAgIEFTU0VSVChleHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5v
ZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlRG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2Uo
KSwgZG90LT5pZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7
CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEZWxldGVEb3ROb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2
b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRl
cjo6bWFrZU5lZ2F0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBuKQorRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VOZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbikKIHsKICAgICBpZiAobi0+aXNOdW1i
ZXIoKSkgewogICAgICAgICBOdW1iZXJOb2RlKiBudW1iZXJOb2RlID0gc3RhdGljX2Nhc3Q8TnVt
YmVyTm9kZSo+KG4pOwpAQCAtNjg0LDEyOCArNjg0LDEyOCBAQCBFeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBu
KQogICAgICAgICByZXR1cm4gbnVtYmVyTm9kZTsKICAgICB9CiAKLSAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIE5lZ2F0ZU5vZGUobGluZU51bWJlciwgbik7CisgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBOZWdhdGVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbik7CiB9
CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0d2lzZU5vdE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxk
ZXI6Om1ha2VCaXR3aXNlTm90Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpCiB7CiAgICAgaWYgKGV4cHItPmlzTnVtYmVyKCkpCi0gICAg
ICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgfnRvSW50MzIoc3RhdGljX2Nhc3Q8
TnVtYmVyTm9kZSo+KGV4cHIpLT52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBCaXR3aXNlTm90Tm9kZShsaW5lTnVtYmVyLCBleHByKTsKKyAgICAgICAgcmV0dXJuIGNy
ZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIH50b0ludDMyKHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByKS0+dmFsdWUoKSkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgQml0d2lzZU5vdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByKTsKIH0K
IAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VNdWx0Tm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTXVsdE5v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAg
ICAgZXhwcjEgPSBleHByMS0+c3RyaXBVbmFyeVBsdXMoKTsKICAgICBleHByMiA9IGV4cHIyLT5z
dHJpcFVuYXJ5UGx1cygpOwogCiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5p
c051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgKiBzdGF0aWNfY2FzdDxOdW1iZXJO
b2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZh
bHVlKCkgKiBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKIAogICAg
IGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEp
LT52YWx1ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQ
bHVzTm9kZShsaW5lTnVtYmVyLCBleHByMik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIyKTsKIAog
ICAgIGlmIChleHByMi0+aXNOdW1iZXIoKSAmJiBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhw
cjIpLT52YWx1ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5h
cnlQbHVzTm9kZShsaW5lTnVtYmVyLCBleHByMSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIxKTsK
IAotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTXVsdE5vZGUobGluZU51bWJlciwgZXhw
cjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIE11bHROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VEaXZOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUq
IEFTVEJ1aWxkZXI6Om1ha2VEaXZOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0cmlwVW5hcnlQbHVzKCk7
CiAgICAgZXhwcjIgPSBleHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKIAogICAgIGlmIChleHByMS0+
aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51
bWJlcihsaW5lTnVtYmVyLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgp
IC8gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7Ci0gICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBEaXZOb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmln
aHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgp
IC8gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7CisgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBEaXZOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhw
cjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFT
VEJ1aWxkZXI6Om1ha2VNb2ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VNb2ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0cmlw
VW5hcnlQbHVzKCk7CiAgICAgZXhwcjIgPSBleHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKICAgICAK
ICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAg
IHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgZm1vZChzdGF0aWNfY2FzdDxOdW1iZXJO
b2RlKj4oZXhwcjEpLT52YWx1ZSgpLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52
YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBNb2ROb2RlKGxpbmVOdW1i
ZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBj
cmVhdGVOdW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBmbW9kKHN0YXRpY19jYXN0PE51
bWJlck5vZGUqPihleHByMSktPnZhbHVlKCksIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHBy
MiktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE1vZE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMp
OwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFkZE5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFk
ZE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7
CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAg
ICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUq
PihleHByMSktPnZhbHVlKCkgKyBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1
ZSgpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFkZE5vZGUobGluZU51bWJlciwg
ZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUq
PihleHByMSktPnZhbHVlKCkgKyBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1
ZSgpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFkZE5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1F
eHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVN1Yk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVN1Yk5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgZXhw
cjEgPSBleHByMS0+c3RyaXBVbmFyeVBsdXMoKTsKICAgICBleHByMiA9IGV4cHIyLT5zdHJpcFVu
YXJ5UGx1cygpOwogCiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJl
cigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgLSBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4o
ZXhwcjIpLT52YWx1ZSgpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN1Yk5vZGUo
bGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgLSBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4o
ZXhwcjIpLT52YWx1ZSgpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN1Yk5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUxlZnRTaGlmdE5vZGUo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRl
cjo6bWFrZUxlZnRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051
bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIo
c3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPDwgKHRvVUludDMyKHN0
YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOwotICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVmdFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBleHByMSwg
ZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVy
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2Rl
Kj4oZXhwcjEpLT52YWx1ZSgpKSA8PCAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBMZWZ0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Np
b25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJl
cigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxp
bmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUo
KSkgPj4gKHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkp
ICYgMHgxZikpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmlnaHRTaGlmdE5vZGUo
bGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHRvSW50MzIoc3Rh
dGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOworICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgUmlnaHRTaGlmdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZVVSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlVVJpZ2h0U2hpZnRO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewog
ICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAg
cmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1i
ZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA+PiAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVy
Tm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCB0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhw
cjEpLT52YWx1ZSgpKSA+PiAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIy
KS0+dmFsdWUoKSkgJiAweDFmKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbnNp
Z25lZFJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIy
LCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6
Om1ha2VCaXRPck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdE9yTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYg
ZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJl
ciwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSB8IHRv
SW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOwotICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0T3JOb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHBy
MiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihl
eHByMSktPnZhbHVlKCkpIHwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIp
LT52YWx1ZSgpKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCaXRPck5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMp
OwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdEFuZE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFr
ZUJpdEFuZE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQot
ICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nh
c3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgJiB0b0ludDMyKHN0YXRpY19jYXN0PE51
bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEJpdEFuZE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgJiB0
b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKKyAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdEFuZE5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdFhPck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdFhPck5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4
cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3Jl
YXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4
cHIxKS0+dmFsdWUoKSkgXiB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMikt
PnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdFhPck5vZGUobGlu
ZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHRvSW50MzIoc3RhdGlj
X2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgXiB0b0ludDMyKHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIEJpdFhPck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIs
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBmdW5j
LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4
cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGZ1bmMsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlmICghZnVu
Yy0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZShsaW5lTnVtYmVyLCBmdW5jLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBz
dGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1
bmN0aW9uQ2FsbFZhbHVlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGZ1bmMsIGFyZ3Ms
IGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgaWYgKGZ1bmMtPmlzUmVz
b2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0
PFJlc29sdmVOb2RlKj4oZnVuYyk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIgPSByZXNvbHZlLT5pZGVudGlmaWVyKCk7CiAgICAgICAgIGlmIChpZGVudGlmaWVyID09IG1f
Z2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCkgewogICAgICAgICAgICAgdXNlc0V2YWwo
KTsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRXZhbEZ1bmN0aW9uQ2Fs
bE5vZGUobGluZU51bWJlciwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
KTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRXZhbEZ1bmN0aW9uQ2Fs
bE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFy
dCwgZW5kIC0gZGl2b3QpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUobGluZU51bWJlciwgaWRlbnRpZmllciwgYXJn
cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGlkZW50aWZpZXIsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CiAgICAgfQogICAgIGlmIChmdW5jLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewog
ICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tl
dEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwotICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSog
bm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShsaW5lTnVt
YmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBhcmdzLCBkaXZvdCwg
ZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0
Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2Ny
aXB0KCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgICAg
IG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPmVu
ZE9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQpAQCAtODEzLDExOCArODEz
LDExOCBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKgogICAgIERvdEFjY2Vzc29yTm9kZSogZG90
ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxs
RG90Tm9kZSogbm9kZTsKICAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV9nbG9iYWxEYXRh
LT5wcm9wZXJ0eU5hbWVzLT5jYWxsKQotICAgICAgICBub2RlID0gbmV3IChtX2dsb2JhbERhdGEp
IENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlk
ZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAg
ICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwg
YXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBlbHNlIGlmIChk
b3QtPmlkZW50aWZpZXIoKSA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFwcGx5KQot
ICAgICAgICBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90
LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBz
dGFydCwgZW5kIC0gZGl2b3QpOwogICAgIGVsc2UKLSAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9i
YWxEYXRhKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3Qt
PmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsK
KyAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBh
cmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1
YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5lbmRPZmZzZXQoKSk7CiAgICAgcmV0
dXJuIG5vZGU7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9k
ZShpbnQgbGluZU51bWJlciwgaW50IHRva2VuLCBwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5
T3BJbmZvPiBsaHMsIHBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+IHJocykKK0V4
cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZShpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgaW50IHRva2VuLCBwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5
T3BJbmZvPiBsaHMsIHBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+IHJocykKIHsK
ICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgY2FzZSBPUjoKLSAgICAgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBMb2dpY2FsT3BOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZp
cnN0LCBPcExvZ2ljYWxPcik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9n
aWNhbE9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0
LCBPcExvZ2ljYWxPcik7CiAKICAgICBjYXNlIEFORDoKLSAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBMb2dpY2FsT3BOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0
LCBPcExvZ2ljYWxBbmQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2lj
YWxPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwg
T3BMb2dpY2FsQW5kKTsKIAogICAgIGNhc2UgQklUT1I6Ci0gICAgICAgIHJldHVybiBtYWtlQml0
T3JOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fz
c2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZUJpdE9yTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQp
OwogCiAgICAgY2FzZSBCSVRYT1I6Ci0gICAgICAgIHJldHVybiBtYWtlQml0WE9yTm9kZShsaW5l
TnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsK
KyAgICAgICAgcmV0dXJuIG1ha2VCaXRYT3JOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
bGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBj
YXNlIEJJVEFORDoKLSAgICAgICAgcmV0dXJuIG1ha2VCaXRBbmROb2RlKGxpbmVOdW1iZXIsIGxo
cy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICBy
ZXR1cm4gbWFrZUJpdEFuZE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3Qs
IHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgRVFFUToK
LSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFcXVhbE5vZGUobGluZU51bWJlciwg
bGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRXF1YWxOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAK
ICAgICBjYXNlIE5FOgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE5vdEVxdWFs
Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3Np
Z25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOb3RFcXVhbE5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29u
ZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgU1RSRVE6Ci0gICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgU3RyaWN0RXF1YWxOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhz
LmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIFN0cmljdEVxdWFsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxo
cy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2Fz
ZSBTVFJORVE6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTm90U3RyaWN0RXF1
YWxOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fz
c2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE5vdFN0cmljdEVx
dWFsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBy
aHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBMVDoKLSAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBMZXNzTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5m
aXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBMZXNzTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwg
cmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBHVDoKLSAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBHcmVhdGVyTm9kZShsaW5lTnVtYmVyLCBs
aHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBHcmVhdGVyTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwog
CiAgICAgY2FzZSBMRToKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMZXNzRXFO
b2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2ln
bm1lbnQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExlc3NFcU5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5o
YXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgR0U6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgR3JlYXRlckVxTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwg
cmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBHcmVhdGVyRXFOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCBy
aHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIElOU1RBTkNF
T0Y6IHsKLSAgICAgICAgSW5zdGFuY2VPZk5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
SW5zdGFuY2VPZk5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNv
bmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIEluc3RhbmNlT2ZOb2RlKiBub2RlID0gbmV3ICht
X2dsb2JhbERhdGEpIEluc3RhbmNlT2ZOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhz
LmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAgICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIGxocy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuc3Rh
cnQsIHJocy5zZWNvbmQuZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCiAgICAg
Y2FzZSBJTlRPS0VOOiB7Ci0gICAgICAgIEluTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRh
KSBJbk5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFz
QXNzaWdubWVudCk7CisgICAgICAgIEluTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBJ
bk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhz
LnNlY29uZC5oYXNBc3NpZ25tZW50KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9k
ZSwgbGhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5lbmQpOwog
ICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKICAgICBjYXNlIExTSElGVDoKLSAgICAgICAg
cmV0dXJuIG1ha2VMZWZ0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0
LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZUxlZnRTaGlm
dE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhz
LnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgUlNISUZUOgotICAgICAgICByZXR1
cm4gbWFrZVJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBy
aHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZVJpZ2h0U2hpZnRO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5z
ZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIFVSU0hJRlQ6Ci0gICAgICAgIHJldHVy
biBtYWtlVVJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBy
aHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZVVSaWdodFNoaWZ0
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMu
c2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBQTFVTOgotICAgICAgICByZXR1cm4g
bWFrZUFkZE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQu
aGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlQWRkTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1l
bnQpOwogCiAgICAgY2FzZSBNSU5VUzoKLSAgICAgICAgcmV0dXJuIG1ha2VTdWJOb2RlKGxpbmVO
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwor
ICAgICAgICByZXR1cm4gbWFrZVN1Yk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMu
Zmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2Ug
VElNRVM6Ci0gICAgICAgIHJldHVybiBtYWtlTXVsdE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0
LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBt
YWtlTXVsdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJz
dCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgRElWSURFOgotICAgICAg
ICByZXR1cm4gbWFrZURpdk5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJo
cy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlRGl2Tm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhh
c0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBNT0Q6Ci0gICAgICAgIHJldHVybiBtYWtlTW9kTm9k
ZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25t
ZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VNb2ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAgICAg
fQogICAgIENSQVNIKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RC
dWlsZGVyOjptYWtlQXNzaWduTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxv
YywgT3BlcmF0b3Igb3AsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBib29sIGxvY0hhc0Fzc2lnbm1l
bnRzLCBib29sIGV4cHJIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBl
bmQpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsb2MsIE9wZXJhdG9yIG9w
LCBFeHByZXNzaW9uTm9kZSogZXhwciwgYm9vbCBsb2NIYXNBc3NpZ25tZW50cywgYm9vbCBleHBy
SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlm
ICghbG9jLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
QXNzaWduRXJyb3JOb2RlKGxpbmVOdW1iZXIsIGxvYywgb3AsIGV4cHIsIGRpdm90LCBkaXZvdCAt
IHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
QXNzaWduRXJyb3JOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbG9jLCBvcCwgZXhwciwg
ZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKIAogICAgIGlmIChsb2MtPmlzUmVz
b2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0
PFJlc29sdmVOb2RlKj4obG9jKTsKICAgICAgICAgaWYgKG9wID09IE9wRXF1YWwpIHsKICAgICAg
ICAgICAgIGlmIChleHByLT5pc0Z1bmNFeHByTm9kZSgpKQogICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEZ1bmNFeHByTm9kZSo+KGV4cHIpLT5ib2R5KCktPnNldEluZmVycmVkTmFtZShyZXNv
bHZlLT5pZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2
ZS0+aWRlbnRpZmllcigpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMpOworICAgICAgICAgICAg
QXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2
ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIGV4
cHIsIGV4cHJIYXNBc3NpZ25tZW50cyk7CiAgICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlv
bihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgICAgICByZXR1cm4gbm9kZTsKICAg
ICAgICAgfQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlSZXNv
bHZlTm9kZShsaW5lTnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBy
SGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhw
ckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAg
IH0KICAgICBpZiAobG9jLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFj
a2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9k
ZSo+KGxvYyk7CiAgICAgICAgIGlmIChvcCA9PSBPcEVxdWFsKQotICAgICAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25CcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0
LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywg
ZXhwckhhc0Fzc2lnbm1lbnRzLCBicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5kaXZvdCgpIC0g
c3RhcnQsIGVuZCAtIGJyYWNrZXQtPmRpdm90KCkpOwotICAgICAgICBSZWFkTW9kaWZ5QnJhY2tl
dE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGxp
bmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBleHBy
LCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBz
dGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBBc3NpZ25CcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJyYWNrZXQtPmJh
c2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGV4cHIsIGxvY0hhc0Fzc2lnbm1lbnRzLCBleHBy
SGFzQXNzaWdubWVudHMsIGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPmRpdm90KCkgLSBzdGFy
dCwgZW5kIC0gYnJhY2tldC0+ZGl2b3QoKSk7CisgICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9k
ZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5QnJhY2tldE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgp
LCBvcCwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVz
c2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZW5kT2Zmc2V0KCkpOwogICAgICAg
ICByZXR1cm4gbm9kZTsKICAgICB9CkBAIC05MzMsNTUgKzkzMyw1NSBAQCBFeHByZXNzaW9uTm9k
ZSogQVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBsb2MsCiAgICAgaWYgKG9wID09IE9wRXF1YWwpIHsKICAgICAgICAgaWYgKGV4cHItPmlz
RnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihl
eHByKS0+Ym9keSgpLT5zZXRJbmZlcnJlZE5hbWUoZG90LT5pZGVudGlmaWVyKCkpOwotICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnbkRvdE5vZGUobGluZU51bWJlciwgZG90
LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRv
dC0+ZGl2b3QoKSwgZG90LT5kaXZvdCgpIC0gc3RhcnQsIGVuZCAtIGRvdC0+ZGl2b3QoKSk7Cisg
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduRG90Tm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhw
ckhhc0Fzc2lnbm1lbnRzLCBkb3QtPmRpdm90KCksIGRvdC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQg
LSBkb3QtPmRpdm90KCkpOwogICAgIH0KIAotICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0g
bmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICBSZWFkTW9kaWZ5RG90Tm9kZSog
bm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5RG90Tm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4
cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAg
ICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZW5kT2Zmc2V0
KCkpOwogICAgIHJldHVybiBub2RlOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZVByZWZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVy
YXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSog
QVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2
b3QsIGludCBlbmQpCiB7CiAgICAgaWYgKCFleHByLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4RXJyb3JOb2RlKGxpbmVOdW1iZXIsIGV4cHIs
IG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIFByZWZpeEVycm9yTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogCiAgICAg
aWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2
ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgUHJlZml4UmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRl
bnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhSZXNvbHZlTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAt
IHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIGlmIChleHByLT5pc0JyYWNrZXRBY2Nl
c3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3Rh
dGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgICAgICBQcmVmaXhCcmFj
a2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhCcmFja2V0Tm9kZShsaW5l
TnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgUHJlZml4QnJhY2tldE5vZGUq
IG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4QnJhY2tldE5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwg
ZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICAgICAgbm9kZS0+c2V0U3Vi
ZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+c3RhcnRPZmZzZXQoKSk7
CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KICAgICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nl
c3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RB
Y2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICBQcmVmaXhEb3ROb2RlKiBub2RlID0gbmV3IChtX2ds
b2JhbERhdGEpIFByZWZpeERvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRl
bnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICBQ
cmVmaXhEb3ROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeERvdE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9w
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1YmV4
cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5zdGFydE9mZnNldCgpKTsKICAgICByZXR1
cm4gbm9kZTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VQb3N0Zml4Tm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQg
c3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlUG9zdGZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQp
CiB7CiAgICAgaWYgKCFleHByLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgUG9zdGZpeEVycm9yTm9kZShsaW5lTnVtYmVyLCBleHByLCBvcCwgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBQb3N0Zml4RXJyb3JOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwciwg
b3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAKICAgICBpZiAoZXhwci0+
aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGlj
X2Nhc3Q8UmVzb2x2ZU5vZGUqPihleHByKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBQb3N0Zml4UmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigp
LCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4UmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBpZiAoZXhwci0+aXNCcmFja2V0QWNjZXNzb3JOb2Rl
KCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19jYXN0
PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICAgICAgUG9zdGZpeEJyYWNrZXROb2Rl
KiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhCcmFja2V0Tm9kZShsaW5lTnVtYmVy
LCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90
IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgUG9zdGZpeEJyYWNrZXROb2RlKiBub2Rl
ID0gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBkaXZv
dCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgICAgICBub2RlLT5zZXRTdWJleHBy
ZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5lbmRPZmZzZXQoKSk7CiAgICAg
ICAgIHJldHVybiBub2RlOwogCiAgICAgfQogICAgIEFTU0VSVChleHByLT5pc0RvdEFjY2Vzc29y
Tm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vz
c29yTm9kZSo+KGV4cHIpOwotICAgIFBvc3RmaXhEb3ROb2RlKiBub2RlID0gbmV3IChtX2dsb2Jh
bERhdGEpIFBvc3RmaXhEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50
aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgUG9z
dGZpeERvdE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeERvdE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9w
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1YmV4
cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5lbmRPZmZzZXQoKSk7CiAgICAgcmV0dXJu
IG5vZGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDNiMDIw
ZjRmMmIxYjA5NmE3MGE5NWE5YjU4ODgyN2JkOTBiOTg1OWMuLmJmZDdmZDJjMjQ3MmI4MzdhZmFm
OTE5ZjUxODFjMzBkNGU3YjkzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCkBAIC00MTcsNiArNDE3LDcgQEAgdm9pZCBMZXhlcjxUPjo6c2V0Q29kZShjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIFBhcnNlckFyZW5hKiBhcmVuYSkKICAgICBtX2NvZGVFbmQgPSBtX2Nv
ZGVTdGFydCArIHNvdXJjZS5lbmRPZmZzZXQoKTsKICAgICBtX2Vycm9yID0gZmFsc2U7CiAgICAg
bV9hdExpbmVTdGFydCA9IHRydWU7CisgICAgbV9jb2x1bW5OdW1iZXIgPSAwOwogICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gVVN0cmluZygpOwogICAgIAogICAgIG1fYnVmZmVyOC5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGluaXRpYWxSZWFkQnVmZmVyQ2FwYWNpdHkpOwpAQCAtNDMzLDYgKzQzNCw3
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdGVtcGxhdGUgPGludCBzaGlmdEFtb3VudD4gQUxX
QVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjppbnRlcm5hbFNoaWZ0KCkKIHsKICAgICBtX2NvZGUg
Kz0gc2hpZnRBbW91bnQ7CisgICAgbV9jb2x1bW5OdW1iZXIgKz0gc2hpZnRBbW91bnQ7CiAgICAg
bV9jdXJyZW50ID0gKm1fY29kZTsKIH0KIApAQCAtNDQ0LDYgKzQ0Niw3IEBAIEFMV0FZU19JTkxJ
TkUgdm9pZCBMZXhlcjxUPjo6c2hpZnQoKQogICAgICsrbV9jb2RlOwogICAgIGlmIChMSUtFTFko
bV9jb2RlIDwgbV9jb2RlRW5kKSkKICAgICAgICAgbV9jdXJyZW50ID0gKm1fY29kZTsKKyAgICAr
K21fY29sdW1uTnVtYmVyOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTEyMDAsNiAr
MTIwMyw3IEBAIHN0YXJ0OgogICAgICAgICByZXR1cm4gRU9GVE9LOwogICAgIAogICAgIHRva2Vu
SW5mby0+c3RhcnRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7CisgICAgdG9rZW5JbmZvLT5jb2x1
bW4gPSBtX2NvbHVtbk51bWJlcjsKIAogICAgIENoYXJhY3RlclR5cGUgdHlwZTsKICAgICBpZiAo
TElLRUxZKGlzTGF0aW4xKG1fY3VycmVudCkpKQpAQCAtMTUyMiw2ICsxNTI2LDcgQEAgaW5OdW1i
ZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwogICAg
ICAgICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsKICAgICAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsK
KyAgICAgICAgbV9jb2x1bW5OdW1iZXIgPSAwOwogICAgICAgICBnb3RvIHN0YXJ0OwogICAgIGNh
c2UgQ2hhcmFjdGVySW52YWxpZDoKICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBpbnZhbGlk
Q2hhcmFjdGVyTWVzc2FnZSgpOwpAQCAtMTU0NCw2ICsxNTQ5LDcgQEAgaW5TaW5nbGVMaW5lQ29t
bWVudDoKICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7CiAgICAgbV9hdExpbmVTdGFydCA9IHRy
dWU7CiAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKKyAgICBtX2NvbHVtbk51bWJlciA9IDA7CiAg
ICAgaWYgKCFsYXN0VG9rZW5XYXNSZXN0cktleXdvcmQoKSkKICAgICAgICAgZ290byBzdGFydDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDQxZjFmODU1M2UxZWIyNWY1
NDRiZWUxOTM1YTJhZjRiYmQwNjllNjQuLjI4YjUzYmJlN2Q4ZmM3NmJjMGJhNDdmOGRiNzZkNzY3
OGViMDdjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTkwLDYgKzkw
LDcgQEAgcHVibGljOgogICAgIEpTVG9rZW5UeXBlIGxleChKU1Rva2VuRGF0YSosIEpTVG9rZW5J
bmZvKiwgdW5zaWduZWQsIGJvb2wgc3RyaWN0TW9kZSk7CiAgICAgYm9vbCBuZXh0VG9rZW5Jc0Nv
bG9uKCk7CiAgICAgaW50IGxpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7
IH0KKyAgICBpbnQgY3VycmVudENvbHVtbk51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1u
TnVtYmVyOyB9CiAgICAgdm9pZCBzZXRMYXN0TGluZU51bWJlcihpbnQgbGFzdExpbmVOdW1iZXIp
IHsgbV9sYXN0TGluZU51bWJlciA9IGxhc3RMaW5lTnVtYmVyOyB9CiAgICAgaW50IGxhc3RMaW5l
TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGluZU51bWJlcjsgfQogICAgIGJvb2wgcHJl
dlRlcm1pbmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3Rlcm1pbmF0b3I7IH0KQEAgLTE2Niw2ICsx
NjcsNyBAQCBwcml2YXRlOgogCiAgICAgaW50IG1fbGluZU51bWJlcjsKICAgICBpbnQgbV9sYXN0
TGluZU51bWJlcjsKKyAgICBpbnQgbV9jb2x1bW5OdW1iZXI7CiAKICAgICBWZWN0b3I8TENoYXI+
IG1fYnVmZmVyODsKICAgICBWZWN0b3I8VUNoYXI+IG1fYnVmZmVyMTY7CkBAIC0yODUsNiArMjg3
LDcgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRp
ZmllcihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLAogICAgICAgICBtX2N1cnJlbnQgPSAwOwogCiAg
ICAgbV9jb2RlID0gcHRyOworICAgIG1fY29sdW1uTnVtYmVyID0gbV9jb2x1bW5OdW1iZXIgKyAo
bV9jb2RlIC0gc3RhcnQpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBpZGVudGlmaWVyIGlmIG5lZWRl
ZAogICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQpAQCAt
Mjk0LDYgKzI5Nyw3IEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4
cGVjdElkZW50aWZpZXIoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSwKICAgICB0b2tlbkluZm8tPmxp
bmUgPSBtX2xpbmVOdW1iZXI7CiAgICAgdG9rZW5JbmZvLT5zdGFydE9mZnNldCA9IHN0YXJ0IC0g
bV9jb2RlU3RhcnQ7CiAgICAgdG9rZW5JbmZvLT5lbmRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7
CisgICAgdG9rZW5JbmZvLT5jb2x1bW4gPSBtX2NvbHVtbk51bWJlcjsKICAgICBtX2xhc3RUb2tl
biA9IElERU5UOwogICAgIHJldHVybiBJREVOVDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKaW5kZXggZTQ5NmQyMzQyYjM0MDFmYTRh
ZTc0ZTI0NjM5NGViOTdjMzNiY2ExZi4uMmFlMmY5ZTNkZTYxYWM4YjAzN2Y5YmNkYzAxY2M4NTdm
MjlmZTFjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29u
c3RydWN0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3Ry
dWN0b3JzLmgKQEAgLTQyLDYwICs0Miw2MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZ2xv
YmFsRGF0YS0+cGFyc2VyQXJlbmEtPmRlcmVmV2l0aEFyZW5hKGFkb3B0UmVmKHRoaXMpKTsKICAg
ICB9CiAKLSAgICBpbmxpbmUgTm9kZTo6Tm9kZShpbnQgbGluZU51bWJlcikKKyAgICBpbmxpbmUg
Tm9kZTo6Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKICAgICAgICAgOiBt
X2xpbmVOdW1iZXIobGluZU51bWJlcikKKyAgICAgICAgLCBtX2NvbHVtbk51bWJlcihjb2x1bW5O
dW1iZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBFeHByZXNzaW9uTm9kZTo6RXhwcmVz
c2lvbk5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3VsdFR5cGUgcmVzdWx0VHlwZSkKLSAgICAgICAg
OiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEV4cHJlc3Npb25Ob2RlOjpFeHByZXNzaW9u
Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZSByZXN1bHRU
eXBlKQorICAgICAgICA6IE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAs
IG1fcmVzdWx0VHlwZShyZXN1bHRUeXBlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3Rh
dGVtZW50Tm9kZTo6U3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBOb2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFN0YXRlbWVudE5vZGU6OlN0YXRlbWVudE5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCisgICAgICAgIDogTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9sYXN0TGluZSgtMSkKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIE51bGxOb2RlOjpOdWxsTm9kZShpbnQgbGluZU51bWJlcikKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudWxsVHlwZSgpKQorICAg
IGlubGluZSBOdWxsTm9kZTo6TnVsbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBS
ZXN1bHRUeXBlOjpudWxsVHlwZSgpKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQm9vbGVh
bk5vZGU6OkJvb2xlYW5Ob2RlKGludCBsaW5lTnVtYmVyLCBib29sIHZhbHVlKQotICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCkpCisg
ICAgaW5saW5lIEJvb2xlYW5Ob2RlOjpCb29sZWFuTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgYm9vbCB2YWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCkpCiAgICAgICAgICwg
bV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE51bWJlck5vZGU6Ok51
bWJlck5vZGUoaW50IGxpbmVOdW1iZXIsIGRvdWJsZSB2YWx1ZSkKLSAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCkpCisgICAgaW5saW5l
IE51bWJlck5vZGU6Ok51bWJlck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IGRvdWJsZSB2YWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSkKICAgICAgICAgLCBtX3ZhbHVlKHZh
bHVlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3RyaW5nTm9kZTo6U3RyaW5nTm9kZShp
bnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgdmFsdWUpCi0gICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQorICAgIGlubGlu
ZSBTdHJpbmdOb2RlOjpTdHJpbmdOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBjb25zdCBJZGVudGlmaWVyJiB2YWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OnN0cmluZ1R5cGUoKSkKICAgICAgICAg
LCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVnRXhwTm9kZTo6
UmVnRXhwTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29u
c3QgSWRlbnRpZmllciYgZmxhZ3MpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJl
cikKKyAgICBpbmxpbmUgUmVnRXhwTm9kZTo6UmVnRXhwTm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmll
ciYgZmxhZ3MpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIG1fcGF0dGVybihwYXR0ZXJuKQogICAgICAgICAsIG1fZmxhZ3MoZmxh
Z3MpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBUaGlzTm9kZTo6VGhpc05vZGUoaW50IGxp
bmVOdW1iZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgVGhpc05vZGU6OlRoaXNOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQor
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIFJlc29sdmVOb2RlOjpSZXNvbHZlTm9kZShpbnQgbGluZU51
bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGludCBzdGFydE9mZnNldCkKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBSZXNvbHZlTm9kZTo6UmVz
b2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBpbnQgc3RhcnRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAg
ICwgbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKICAgICB7CkBAIC0xMTYsMjQgKzExNywyNCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbC0+bV9uZXh0ID0gdGhpczsKICAgICB9CiAKLSAg
ICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBlbGlzaW9u
KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFycmF5
Tm9kZTo6QXJyYXlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQgZWxp
c2lvbikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIp
CiAgICAgICAgICwgbV9lbGVtZW50KDApCiAgICAgICAgICwgbV9lbGlzaW9uKGVsaXNpb24pCiAg
ICAgICAgICwgbV9vcHRpb25hbCh0cnVlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXJy
YXlOb2RlOjpBcnJheU5vZGUoaW50IGxpbmVOdW1iZXIsIEVsZW1lbnROb2RlKiBlbGVtZW50KQot
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFycmF5Tm9k
ZTo6QXJyYXlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFbGVtZW50Tm9k
ZSogZWxlbWVudCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCiAgICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgICAgICwgbV9lbGlzaW9u
KDApCiAgICAgICAgICwgbV9vcHRpb25hbChmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgZWxpc2lvbiwgRWxl
bWVudE5vZGUqIGVsZW1lbnQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIGludCBlbGlzaW9uLCBFbGVtZW50Tm9kZSogZWxlbWVudCkKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9lbGVt
ZW50KGVsZW1lbnQpCiAgICAgICAgICwgbV9lbGlzaW9uKGVsaXNpb24pCiAgICAgICAgICwgbV9v
cHRpb25hbCh0cnVlKQpAQCAtMTU0LDU3ICsxNTUsNTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBQcm9wZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2Rl
KGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGUqIG5vZGUpCi0gICAgICAgIDogTm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBQcm9wZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBQcm9wZXJ0eU5vZGUqIG5vZGUpCisgICAg
ICAgIDogTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9ub2RlKG5v
ZGUpCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcm9w
ZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5v
ZGUqIG5vZGUsIFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpCi0gICAgICAgIDogTm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBQcm9wZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBQcm9wZXJ0eU5vZGUqIG5vZGUsIFByb3BlcnR5
TGlzdE5vZGUqIGxpc3QpCisgICAgICAgIDogTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIp
CiAgICAgICAgICwgbV9ub2RlKG5vZGUpCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgewogICAg
ICAgICBsaXN0LT5tX25leHQgPSB0aGlzOwogICAgIH0KIAotICAgIGlubGluZSBPYmplY3RMaXRl
cmFsTm9kZTo6T2JqZWN0TGl0ZXJhbE5vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgT2JqZWN0TGl0ZXJhbE5vZGU6Ok9i
amVjdExpdGVyYWxOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQorICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBt
X2xpc3QoMCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE9iamVjdExpdGVyYWxOb2RlOjpP
YmplY3RMaXRlcmFsTm9kZShpbnQgbGluZU51bWJlciwgUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkK
LSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBPYmplY3RM
aXRlcmFsTm9kZTo6T2JqZWN0TGl0ZXJhbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fbGlzdChsaXN0KQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgQnJhY2tldEFjY2Vzc29yTm9kZTo6QnJhY2tldEFjY2Vzc29y
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2Rl
KiBzdWJzY3JpcHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQnJhY2tldEFjY2Vzc29yTm9kZTo6
QnJhY2tldEFjY2Vzc29yTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vic2Ny
aXB0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1fc3Vic2Ny
aXB0KHN1YnNjcmlwdCkKICAgICAgICAgLCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKHN1YnNj
cmlwdEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRG90QWNjZXNz
b3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyKQorICAgIGlubGluZSBEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lk
ZW50KGlkZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXJndW1lbnRMaXN0Tm9kZTo6
QXJndW1lbnRMaXN0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0g
ICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBBcmd1bWVudExpc3ROb2RlOjpB
cmd1bWVudExpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikK
ICAgICAgICAgLCBtX25leHQoMCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIEFyZ3VtZW50TGlzdE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUoaW50IGxp
bmVOdW1iZXIsIEFyZ3VtZW50TGlzdE5vZGUqIGxpc3ROb2RlLCBFeHByZXNzaW9uTm9kZSogZXhw
cikKLSAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFyZ3VtZW50TGlzdE5v
ZGU6OkFyZ3VtZW50TGlzdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEFy
Z3VtZW50TGlzdE5vZGUqIGxpc3ROb2RlLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAg
OiBOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX25leHQoMCkKICAg
ICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CkBAIC0yMjEsNDUgKzIyMiw0NSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE5ld0V4cHJOb2RlOjpOZXdFeHBy
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgTmV3RXhwck5vZGU6Ok5ld0V4cHJO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAg
ICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9hcmdzKDApCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBOZXdFeHByTm9kZTo6TmV3RXhwck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdzKQotICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIE5ld0V4cHJOb2RlOjpOZXdFeHByTm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIs
IEFyZ3VtZW50c05vZGUqIGFyZ3MpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fYXJn
cyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRXZhbEZ1bmN0aW9uQ2FsbE5vZGU6
OkV2YWxGdW5jdGlvbkNhbGxOb2RlKGludCBsaW5lTnVtYmVyLCBBcmd1bWVudHNOb2RlKiBhcmdz
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBFdmFs
RnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Fy
Z3MoYXJncykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmN0aW9uQ2FsbFZhbHVlTm9k
ZTo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGlu
ZU51bWJlcikKKyAgICBpbmxpbmUgRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpGdW5jdGlvbkNhbGxW
YWx1ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9leHByKGV4cHIp
CiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5j
dGlvbkNhbGxSZXNvbHZlTm9kZTo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGdW5jdGlvbkNhbGxS
ZXNvbHZlTm9kZTo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdz
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAg
ICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpGdW5j
dGlvbkNhbGxCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbEJy
YWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3Jp
cHQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0
YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkK
ICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCkBAIC0yNjcsOCArMjY4LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5jdGlvbkNhbGxEb3RO
b2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2Fs
bERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJn
dW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAg
ICAsIG1faWRlbnQoaWRlbnQpCkBAIC0yNzYsMzEgKzI3NywzMSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAg
OiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFy
Z3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2Fs
bERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBh
cmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGJhc2UsIGlk
ZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRnVuY3Rpb25D
YWxsRG90Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJhc2UsIGlkZW50LCBhcmdzLCBk
aXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IFByZVBvc3RSZXNvbHZlTm9kZTo6UHJlUG9zdFJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51
bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpKSAvLyBjb3VsZCBiZSByZXVzYWJsZSBmb3Ig
cHJlPworICAgIGlubGluZSBQcmVQb3N0UmVzb2x2ZU5vZGU6OlByZVBvc3RSZXNvbHZlTm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVz
dWx0VHlwZTo6bnVtYmVyVHlwZSgpKSAvLyBjb3VsZCBiZSByZXVzYWJsZSBmb3IgcHJlPwogICAg
ICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zm
c2V0KQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBQb3N0Zml4UmVzb2x2ZU5vZGU6OlBvc3RmaXhSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IFByZVBv
c3RSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBpZGVudCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpCisgICAgaW5saW5lIFBvc3RmaXhSZXNvbHZlTm9kZTo6UG9zdGZpeFJlc29sdmVOb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogUHJlUG9zdFJlc29sdmVOb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgaWRlbnQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQog
ICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFBv
c3RmaXhCcmFja2V0Tm9kZTo6UG9zdGZpeEJyYWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3Bl
ciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUG9z
dGZpeEJyYWNrZXROb2RlOjpQb3N0Zml4QnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2Ny
aXB0LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2
b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAg
ICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtMzA4LDggKzMwOSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUG9zdGZpeERvdE5vZGU6OlBvc3Rm
aXhEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFBvc3RmaXhEb3ROb2RlOjpQb3N0Zml4RG90Tm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlU3Vi
RXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwg
bV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKQEAgLTMxNyw2OSArMzE4LDY5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUG9zdGZpeEVy
cm9yTm9kZTo6UG9zdGZpeEVycm9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIFBvc3RmaXhFcnJvck5vZGU6OlBvc3RmaXhFcnJvck5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRv
ciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIpCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9vcGVy
YXRvcihvcGVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVsZXRlUmVzb2x2ZU5vZGU6
OkRlbGV0ZVJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRGVs
ZXRlUmVzb2x2ZU5vZGU6OkRlbGV0ZVJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1faWRl
bnQoaWRlbnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBEZWxldGVCcmFja2V0Tm9kZTo6
RGVsZXRlQnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBF
eHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBEZWxldGVCcmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBF
eHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEo
ZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAg
ICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgRGVsZXRlRG90Tm9kZTo6RGVsZXRlRG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBEZWxldGVEb3ROb2RlOjpEZWxldGVEb3RO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkK
ICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVs
ZXRlVmFsdWVOb2RlOjpEZWxldGVWYWx1ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5s
aW5lIERlbGV0ZVZhbHVlTm9kZTo6RGVsZXRlVmFsdWVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBWb2lkTm9kZTo6Vm9pZE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIpCisgICAgaW5saW5lIFZvaWROb2RlOjpWb2lkTm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVHlwZU9mUmVzb2x2ZU5vZGU6OlR5cGVPZlJlc29s
dmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCisg
ICAgaW5saW5lIFR5cGVPZlJlc29sdmVOb2RlOjpUeXBlT2ZSZXNvbHZlTm9kZShpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpz
dHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIFR5cGVPZlZhbHVlTm9kZTo6VHlwZU9mVmFsdWVOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVt
YmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCisgICAgaW5saW5lIFR5cGVPZlZhbHVlTm9k
ZTo6VHlwZU9mVmFsdWVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OnN0cmluZ1R5cGUoKSkKICAgICAgICAgLCBtX2V4cHIo
ZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFByZWZpeFJlc29sdmVOb2RlOjpQcmVm
aXhSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9w
ZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IFByZVBvc3RSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBp
ZGVudCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgaW5saW5lIFByZWZpeFJl
c29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6
IFByZVBvc3RSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGlkZW50LCBkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVmaXhCcmFja2V0Tm9kZTo6UHJlZml4QnJhY2tl
dE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9k
ZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyKQorICAgIGlubGluZSBQcmVmaXhCcmFja2V0Tm9kZTo6UHJlZml4QnJhY2tldE5v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dh
YmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3Jp
cHQpCkBAIC0zODcsOCArMzg4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBQcmVmaXhEb3ROb2RlOjpQcmVmaXhEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9w
ZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFBy
ZWZpeERvdE5vZGU6OlByZWZpeERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0
b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3Qs
IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAg
ICwgbV9pZGVudChpZGVudCkKQEAgLTM5Niw0NCArMzk3LDQ0IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJlZml4RXJyb3JOb2RlOjpQcmVmaXhFcnJvck5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcGVyLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
LSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcmVmaXhF
cnJvck5vZGU6OlByZWZpeEVycm9yTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBt
X2V4cHIoZXhwcikKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBVbmFyeU9wTm9kZTo6VW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3Vs
dFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wY29kZUlEIG9wY29kZUlEKQotICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIHR5cGUpCisgICAgaW5saW5lIFVuYXJ5
T3BOb2RlOjpVbmFyeU9wTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVz
dWx0VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3Bjb2RlSUQgb3Bjb2RlSUQpCisg
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0eXBlKQog
ICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fb3Bjb2RlSUQob3Bjb2RlSUQpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBVbmFyeVBsdXNOb2RlOjpVbmFyeVBsdXNOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBVbmFyeU9wTm9k
ZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIsIG9wX3RvX2pzbnVt
YmVyKQorICAgIGlubGluZSBVbmFyeVBsdXNOb2RlOjpVbmFyeVBsdXNOb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBV
bmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5
cGUoKSwgZXhwciwgb3BfdG9fanNudW1iZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBO
ZWdhdGVOb2RlOjpOZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cikKLSAgICAgICAgOiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJU
eXBlKCksIGV4cHIsIG9wX25lZ2F0ZSkKKyAgICBpbmxpbmUgTmVnYXRlTm9kZTo6TmVnYXRlTm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIp
CisgICAgICAgIDogVW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRU
eXBlOjpudW1iZXJUeXBlKCksIGV4cHIsIG9wX25lZ2F0ZSkKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIEJpdHdpc2VOb3ROb2RlOjpCaXR3aXNlTm90Tm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwg
UmVzdWx0VHlwZTo6Zm9yQml0T3AoKSkKKyAgICBpbmxpbmUgQml0d2lzZU5vdE5vZGU6OkJpdHdp
c2VOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCkpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBMb2dpY2FsTm90Tm9kZTo6TG9naWNhbE5vdE5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFVuYXJ5T3BOb2Rl
KGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIsIG9wX25vdCkKKyAg
ICBpbmxpbmUgTG9naWNhbE5vdE5vZGU6OkxvZ2ljYWxOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBVbmFyeU9w
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCks
IGV4cHIsIG9wX25vdCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJpbmFyeU9wTm9kZTo6
QmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBC
aW5hcnlPcE5vZGU6OkJpbmFyeU9wTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlE
IG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhwcjEoZXhwcjEp
CiAgICAgICAgICwgbV9leHByMihleHByMikKICAgICAgICAgLCBtX29wY29kZUlEKG9wY29kZUlE
KQpAQCAtNDQxLDggKzQ0Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgQmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3Vs
dFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IE9wY29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgdHlwZSkKKyAgICBpbmxpbmUgQmluYXJ5T3BOb2Rl
OjpCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5
cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9w
Y29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0eXBlKQogICAgICAgICAsIG1f
ZXhwcjEoZXhwcjEpCiAgICAgICAgICwgbV9leHByMihleHByMikKICAgICAgICAgLCBtX29wY29k
ZUlEKG9wY29kZUlEKQpAQCAtNDUwLDE0MCArNDUxLDE0MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIE11bHROb2RlOjpNdWx0Tm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVz
dWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX211bCwgcmlnaHRIYXNBc3Np
Z25tZW50cykKKyAgICBpbmxpbmUgTXVsdE5vZGU6Ok11bHROb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEs
IGV4cHIyLCBvcF9tdWwsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBEaXZOb2RlOjpEaXZOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQot
ICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBl
KCksIGV4cHIxLCBleHByMiwgb3BfZGl2LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGlu
ZSBEaXZOb2RlOjpEaXZOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9kaXYsIHJpZ2h0
SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAogCi0gICAgaW5saW5lIE1vZE5vZGU6Ok1v
ZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BO
b2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBv
cF9tb2QsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIE1vZE5vZGU6Ok1vZE5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAg
IDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVt
YmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX21vZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFkZE5vZGU6OkFkZE5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3Vs
dFR5cGU6OmZvckFkZChleHByMS0+cmVzdWx0RGVzY3JpcHRvcigpLCBleHByMi0+cmVzdWx0RGVz
Y3JpcHRvcigpKSwgZXhwcjEsIGV4cHIyLCBvcF9hZGQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisg
ICAgaW5saW5lIEFkZE5vZGU6OkFkZE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQWRkKGV4cHIxLT5yZXN1bHREZXNjcmlwdG9yKCks
IGV4cHIyLT5yZXN1bHREZXNjcmlwdG9yKCkpLCBleHByMSwgZXhwcjIsIG9wX2FkZCwgcmlnaHRI
YXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFN1Yk5vZGU6OlN1Yk5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2Rl
KGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9z
dWIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIFN1Yk5vZGU6OlN1Yk5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDog
QmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVy
VHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3N1YiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIExlZnRTaGlmdE5vZGU6OkxlZnRTaGlmdE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1i
ZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfbHNoaWZ0LCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBMZWZ0U2hpZnROb2RlOjpMZWZ0U2hpZnROb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAg
ICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmZv
ckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfbHNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmlnaHRTaGlmdE5vZGU6OlJpZ2h0U2hpZnROb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX3JzaGlm
dCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgUmlnaHRTaGlmdE5vZGU6OlJpZ2h0
U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3Vs
dFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfcnNoaWZ0LCByaWdodEhhc0Fzc2ln
bm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVW5zaWduZWRSaWdodFNoaWZ0Tm9k
ZTo6VW5zaWduZWRSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
LSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlw
ZSgpLCBleHByMSwgZXhwcjIsIG9wX3Vyc2hpZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAg
aW5saW5lIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGU6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDog
QmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVy
VHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3Vyc2hpZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBMZXNzTm9kZTo6TGVzc05vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJl
c3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbGVzcywgcmlnaHRIYXNB
c3NpZ25tZW50cykKKyAgICBpbmxpbmUgTGVzc05vZGU6Okxlc3NOb2RlKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4
cHIxLCBleHByMiwgb3BfbGVzcywgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIEdyZWF0ZXJOb2RlOjpHcmVhdGVyTm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlw
ZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVyLCByaWdodEhhc0Fzc2ln
bm1lbnRzKQorICAgIGlubGluZSBHcmVhdGVyTm9kZTo6R3JlYXRlck5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVyLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgTGVzc0VxTm9kZTo6TGVzc0VxTm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0
VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9sZXNzZXEsIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgaW5saW5lIExlc3NFcU5vZGU6Okxlc3NFcU5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9sZXNzZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBHcmVhdGVyRXFOb2RlOjpHcmVhdGVyRXFOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBS
ZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2dyZWF0ZXJlcSwgcmln
aHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgR3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAg
ICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpi
b29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2dyZWF0ZXJlcSwgcmlnaHRIYXNBc3NpZ25t
ZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFRocm93YWJsZUJpbmFyeU9wTm9kZTo6
VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBSZXN1bHRUeXBlIHR5cGUsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNv
ZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCB0eXBlLCBleHByMSwgZXhwcjIsIG9wY29kZUlELCByaWdodEhhc0Fzc2lnbm1l
bnRzKQorICAgIGlubGluZSBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OlRocm93YWJsZUJpbmFyeU9w
Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZSB0eXBlLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bj
b2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0eXBlLCBleHByMSwgZXhwcjIsIG9wY29kZUlELCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVGhyb3dhYmxl
QmluYXJ5T3BOb2RlOjpUaHJvd2FibGVCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJ
RCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5l
TnVtYmVyLCBleHByMSwgZXhwcjIsIG9wY29kZUlELCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAg
IGlubGluZSBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OlRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
ZXhwcjEsIGV4cHIyLCBvcGNvZGVJRCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIEluc3RhbmNlT2ZOb2RlOjpJbnN0YW5jZU9mTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBUaHJvd2FibGVCaW5hcnlPcE5vZGUobGlu
ZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9pbnN0
YW5jZW9mLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBJbnN0YW5jZU9mTm9kZTo6
SW5zdGFuY2VPZk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCisgICAgICAgIDogVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9pbnN0
YW5jZW9mLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
SW5Ob2RlOjpJbk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDog
VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgb3BfaW4sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEluTm9kZTo6SW5Ob2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IFRocm93YWJs
ZUJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIxLCBleHByMiwgb3Bf
aW4sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBFcXVh
bE5vZGU6OkVxdWFsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAg
OiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhw
cjEsIGV4cHIyLCBvcF9lcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgRXF1YWxO
b2RlOjpFcXVhbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
UmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9lcSwgcmlnaHRIYXNB
c3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE5vdEVxdWFsTm9kZTo6Tm90
RXF1YWxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFy
eU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhw
cjIsIG9wX25lcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTm90RXF1YWxOb2Rl
OjpOb3RFcXVhbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
UmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9uZXEsIHJpZ2h0SGFz
QXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBTdHJpY3RFcXVhbE5vZGU6
OlN0cmljdEVxdWFsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAg
OiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhw
cjEsIGV4cHIyLCBvcF9zdHJpY3RlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUg
U3RyaWN0RXF1YWxOb2RlOjpTdHJpY3RFcXVhbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIy
LCBvcF9zdHJpY3RlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIE5vdFN0cmljdEVxdWFsTm9kZTo6Tm90U3RyaWN0RXF1YWxOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBS
ZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX25zdHJpY3RlcSwgcmln
aHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTm90U3RyaWN0RXF1YWxOb2RlOjpOb3RTdHJp
Y3RFcXVhbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVz
dWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9uc3RyaWN0ZXEsIHJpZ2h0
SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCaXRBbmROb2RlOjpC
aXRBbmROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFy
eU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIs
IG9wX2JpdGFuZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgQml0QW5kTm9kZTo6
Qml0QW5kTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1
bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdGFuZCwgcmlnaHRIYXNBc3Np
Z25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJpdE9yTm9kZTo6Qml0T3JOb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdG9y
LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBCaXRPck5vZGU6OkJpdE9yTm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAg
OiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JC
aXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdG9yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgQml0WE9yTm9kZTo6Qml0WE9yTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwg
UmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXR4b3IsIHJpZ2h0SGFz
QXNzaWdubWVudHMpCisgICAgaW5saW5lIEJpdFhPck5vZGU6OkJpdFhPck5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5
T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9iaXR4b3IsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBMb2dpY2FsT3BOb2RlOjpMb2dpY2FsT3BOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgTG9naWNh
bE9wZXJhdG9yIG9wZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVz
dWx0VHlwZTo6Ym9vbGVhblR5cGUoKSkKKyAgICBpbmxpbmUgTG9naWNhbE9wTm9kZTo6TG9naWNh
bE9wTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIExvZ2ljYWxPcGVyYXRvciBvcGVyKQorICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlw
ZTo6Ym9vbGVhblR5cGUoKSkKICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1f
ZXhwcjIoZXhwcjIpCiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgQ29uZGl0aW9uYWxOb2RlOjpDb25kaXRpb25hbE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBDb25kaXRpb25hbE5vZGU6OkNvbmRpdGlvbmFsTm9kZShpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxvZ2ljYWwsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKQorICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2xvZ2ljYWwobG9naWNh
bCkKICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRNb2Rp
ZnlSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9w
ZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
UmVhZE1vZGlmeVJlc29sdmVOb2RlOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBv
cGVyLCBFeHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQor
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAg
ICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQpCkBA
IC01OTIsMTYgKzU5MywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIEFzc2lnblJlc29sdmVOb2RlOjpBc3NpZ25SZXNvbHZlTm9kZShpbnQgbGluZU51bWJl
ciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIp
CisgICAgaW5saW5lIEFzc2lnblJlc29sdmVOb2RlOjpBc3NpZ25SZXNvbHZlTm9kZShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJl
c3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2lkZW50
KGlkZW50KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQpCiAgICAgICAgICwgbV9yaWdodEhhc0Fz
c2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OlJlYWRNb2RpZnlCcmFja2V0Tm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9w
ZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3Np
Z25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OlJlYWRN
b2RpZnlCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEo
ZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAg
ICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtNjEyLDggKzYxMyw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXNzaWduQnJhY2tldE5vZGU6
OkFzc2lnbkJyYWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
RXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1
YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFzc2lnbkJyYWNrZXRO
b2RlOjpBc3NpZ25CcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Np
b25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9z
dWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtNjIzLDggKzYyNCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0g
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXNzaWduRG90
Tm9kZTo6QXNzaWduRG90Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFz
ZShiYXNlKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCkBAIC02MzMsOCArNjM0LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9k
ZTo6UmVhZE1vZGlmeURvdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUq
IHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5
RG90Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9u
Tm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZVN1
YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAs
IG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCkBAIC02NDQsOCArNjQ1LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25FcnJv
ck5vZGU6OkFzc2lnbkVycm9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxl
ZnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXNzaWduRXJyb3JOb2RlOjpBc3Np
Z25FcnJvck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBsZWZ0LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAg
ICAgICAgLCBtX2xlZnQobGVmdCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCkBAIC02NTMs
MTUgKzY1NCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IENvbW1hTm9kZTo6Q29tbWFOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBDb21tYU5vZGU6OkNvbW1hTm9kZShpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
KQogICAgIHsKICAgICAgICAgbV9leHByZXNzaW9ucy5hcHBlbmQoZXhwcjEpOwogICAgICAgICBt
X2V4cHJlc3Npb25zLmFwcGVuZChleHByMik7CiAgICAgfQogCi0gICAgaW5saW5lIENvbnN0U3Rh
dGVtZW50Tm9kZTo6Q29uc3RTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyLCBDb25zdERlY2xO
b2RlKiBuZXh0KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgQ29uc3RTdGF0ZW1lbnROb2RlOjpDb25zdFN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIENvbnN0RGVjbE5vZGUqIG5leHQpCisgICAgICAgIDogU3RhdGVt
ZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9uZXh0KG5leHQp
CiAgICAgewogICAgIH0KQEAgLTY3MCw1NyArNjcxLDU3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgRW1wdHlTdGF0ZW1lbnROb2RlOjpFbXB0eVN0YXRlbWVu
dE5vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBFbXB0eVN0YXRlbWVudE5vZGU6OkVtcHR5U3RhdGVtZW50Tm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlYnVn
Z2VyU3RhdGVtZW50Tm9kZTo6RGVidWdnZXJTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyKQot
ICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRGVidWdnZXJT
dGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgRXhwclN0YXRlbWVudE5vZGU6
OkV4cHJTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikK
LSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEV4cHJTdGF0
ZW1lbnROb2RlOjpFeHByU3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBWYXJTdGF0ZW1lbnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFZhclN0YXRlbWVudE5vZGU6OlZhclN0YXRlbWVudE5v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAg
ICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgaW5saW5lIElmTm9k
ZTo6SWZOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0
ZW1lbnROb2RlKiBpZkJsb2NrKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgSWZOb2RlOjpJZk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2spCisg
ICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAg
ICwgbV9jb25kaXRpb24oY29uZGl0aW9uKQogICAgICAgICAsIG1faWZCbG9jayhpZkJsb2NrKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgSWZFbHNlTm9kZTo6SWZFbHNlTm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9j
aywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2NrKQotICAgICAgICA6IElmTm9kZShsaW5lTnVtYmVy
LCBjb25kaXRpb24sIGlmQmxvY2spCisgICAgaW5saW5lIElmRWxzZU5vZGU6OklmRWxzZU5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRp
b24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5vZGUqIGVsc2VCbG9jaykKKyAg
ICAgICAgOiBJZk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIGlmQmxv
Y2spCiAgICAgICAgICwgbV9lbHNlQmxvY2soZWxzZUJsb2NrKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgRG9XaGlsZU5vZGU6OkRvV2hpbGVOb2RlKGludCBsaW5lTnVtYmVyLCBTdGF0ZW1l
bnROb2RlKiBzdGF0ZW1lbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFN0YXRl
bWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRG9XaGlsZU5vZGU6OkRvV2hpbGVOb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1l
bnQsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkKICAg
ICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFdoaWxlTm9k
ZTo6V2hpbGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgV2hpbGVOb2RlOjpXaGlsZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQp
CisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAg
ICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgRm9yTm9kZTo6Rm9yTm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIEV4cHJlc3Npb25O
b2RlKiBleHByMywgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBib29sIGV4cHIxV2FzVmFyRGVj
bCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZvck5v
ZGU6OkZvck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMs
IFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgYm9vbCBleHByMVdhc1ZhckRlY2wpCisgICAgICAg
IDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9l
eHByMShleHByMSkKICAgICAgICAgLCBtX2V4cHIyKGV4cHIyKQogICAgICAgICAsIG1fZXhwcjMo
ZXhwcjMpCkBAIC03MzAsMzggKzczMSwzOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQVNT
RVJUKHN0YXRlbWVudCk7CiAgICAgfQogCi0gICAgaW5saW5lIENvbnRpbnVlTm9kZTo6Q29udGlu
dWVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIpCi0gICAgICAg
IDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNv
bnRpbnVlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyKQogICAgICAgICAsIG1faWRlbnQoZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVs
bElkZW50aWZpZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNv
bnRpbnVlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCi0gICAg
ICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBDb250aW51ZU5vZGU6
OkNvbnRpbnVlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAgfQogICAgIAot
ICAgIGlubGluZSBCcmVha05vZGU6OkJyZWFrTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGludCBsaW5lTnVtYmVyKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgQnJlYWtOb2RlOjpCcmVha05vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2lkZW50KGdsb2JhbERhdGEt
PnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgQnJlYWtOb2RlOjpCcmVha05vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
QnJlYWtOb2RlOjpCcmVha05vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0K
ICAgICAKLSAgICBpbmxpbmUgUmV0dXJuTm9kZTo6UmV0dXJuTm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIHZhbHVlKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJl
cikKKyAgICBpbmxpbmUgUmV0dXJuTm9kZTo6UmV0dXJuTm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIHZhbHVlKQorICAgICAgICA6IFN0YXRlbWVu
dE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fdmFsdWUodmFsdWUp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBXaXRoTm9kZTo6V2l0aE5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIHVp
bnQzMl90IGRpdm90LCB1aW50MzJfdCBleHByZXNzaW9uTGVuZ3RoKQotICAgICAgICA6IFN0YXRl
bWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgV2l0aE5vZGU6OldpdGhOb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50LCB1aW50MzJfdCBkaXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxl
bmd0aCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikK
ICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQp
CiAgICAgICAgICwgbV9kaXZvdChkaXZvdCkKQEAgLTc2OSwyMSArNzcwLDIxIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTGFiZWxOb2RlOjpMYWJlbE5vZGUo
aW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqIHN0
YXRlbWVudCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IExhYmVsTm9kZTo6TGFiZWxOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBj
b25zdCBJZGVudGlmaWVyJiBuYW1lLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCisgICAgICAg
IDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9u
YW1lKG5hbWUpCiAgICAgICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgVGhyb3dOb2RlOjpUaHJvd05vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgVGhyb3dOb2RlOjpUaHJvd05vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgVHJ5Tm9kZTo6VHJ5Tm9kZShpbnQgbGluZU51bWJlciwgU3RhdGVt
ZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2VwdGlvbklkZW50LCBTdGF0
ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spCi0gICAg
ICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBUcnlOb2RlOjpUcnlO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdGF0ZW1lbnROb2RlKiB0cnlC
bG9jaywgY29uc3QgSWRlbnRpZmllciYgZXhjZXB0aW9uSWRlbnQsIFN0YXRlbWVudE5vZGUqIGNh
dGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jaykKKyAgICAgICAgOiBTdGF0ZW1l
bnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX3RyeUJsb2NrKHRy
eUJsb2NrKQogICAgICAgICAsIG1fZXhjZXB0aW9uSWRlbnQoZXhjZXB0aW9uSWRlbnQpCiAgICAg
ICAgICwgbV9jYXRjaEJsb2NrKGNhdGNoQmxvY2spCkBAIC04MDQsMTUgKzgwNSwxNSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgbC0+bV9uZXh0ID0gdGhpczsKICAgICB9CiAKLSAgICBpbmxp
bmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGdW5jRXhwck5vZGU6OkZ1bmNFeHByTm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1
bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVy
Tm9kZSogcGFyYW1ldGVyKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcikKICAgICAgICAgLCBtX2JvZHkoYm9keSkKICAgICB7CiAgICAgICAgIG1fYm9k
eS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIHBhcmFtZXRlciwgaWRlbnQpOwogICAgIH0KIAotICAg
IGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNEZWNsTm9kZShpbnQgbGluZU51bWJlciwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQotICAgICAgICA6IFN0YXRlbWVu
dE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFt
ZXRlck5vZGUqIHBhcmFtZXRlcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2JvZHkoYm9keSkKICAgICB7CiAgICAgICAgIG1f
Ym9keS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIHBhcmFtZXRlciwgaWRlbnQpOwpAQCAtODQ0LDI5
ICs4NDUsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBT
d2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
ciwgQ2FzZUJsb2NrTm9kZSogYmxvY2spCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBTd2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQ2FzZUJsb2NrTm9kZSogYmxv
Y2spCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAg
ICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9ibG9jayhibG9jaykKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIENvbnN0RGVjbE5vZGU6OkNvbnN0RGVjbE5vZGUoaW50IGxpbmVO
dW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdCkKLSAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBDb25zdERlY2xO
b2RlOjpDb25zdERlY2xOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluaXQpCisgICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1faWRlbnQo
aWRlbnQpCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgICAgICwgbV9pbml0KGluaXQpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBCbG9ja05vZGU6OkJsb2NrTm9kZShpbnQgbGluZU51bWJl
ciwgU291cmNlRWxlbWVudHMqIHN0YXRlbWVudHMpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShs
aW5lTnVtYmVyKQorICAgIGlubGluZSBCbG9ja05vZGU6OkJsb2NrTm9kZShpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgU291cmNlRWxlbWVudHMqIHN0YXRlbWVudHMpCisgICAgICAg
IDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9z
dGF0ZW1lbnRzKHN0YXRlbWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGb3JJbk5v
ZGU6OkZvckluTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogbCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0
YXRlbWVudCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IEZvckluTm9kZTo6Rm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsLCBFeHByZXNzaW9uTm9k
ZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQorICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1faWRlbnQoZ2xvYmFsRGF0
YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIpCiAgICAgICAgICwgbV9pbml0KDApCiAg
ICAgICAgICwgbV9sZXhwcihsKQpAQCAtODc2LDE3ICs4NzcsMTcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgRXhwcmVzc2lvbk5vZGUqIGluLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9k
ZSogc3RhdGVtZW50LCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCkK
LSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZvckluTm9k
ZTo6Rm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSog
aW4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBk
aXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQorICAgICAgICA6IFN0YXRlbWVu
dE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQp
CiAgICAgICAgICwgbV9pbml0KDApCi0gICAgICAgICwgbV9sZXhwcihuZXcgKGdsb2JhbERhdGEp
IFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50LCBkaXZvdCAtIHN0YXJ0T2Zmc2V0KSkKKyAg
ICAgICAgLCBtX2xleHByKG5ldyAoZ2xvYmFsRGF0YSkgUmVzb2x2ZU5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBpZGVudCwgZGl2b3QgLSBzdGFydE9mZnNldCkpCiAgICAgICAgICwgbV9l
eHByKGV4cHIpCiAgICAgICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAgICAgICAsIG1f
aWRlbnRJc1ZhckRlY2wodHJ1ZSkKICAgICB7CiAgICAgICAgIGlmIChpbikgewotICAgICAgICAg
ICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKGdsb2JhbERhdGEpIEFzc2lnblJlc29s
dmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50LCBpbiwgdHJ1ZSk7CisgICAgICAgICAgICBBc3NpZ25S
ZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAoZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBpZGVudCwgaW4sIHRydWUpOwogICAgICAgICAgICAgbm9k
ZS0+c2V0RXhjZXB0aW9uU291cmNlQ29kZShkaXZvdCwgZGl2b3QgLSBzdGFydE9mZnNldCwgZW5k
T2Zmc2V0IC0gZGl2b3QpOwogICAgICAgICAgICAgbV9pbml0ID0gbm9kZTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBjMzJlNGM3M2EyNGViZWIy
MzNjZDVlMDFmZmZkNjNhNDg2ODVjODg2Li41YTc4NWMxZmY3N2YwYzk3YjBiMGRmNmIyOTZjZTY3
MzU1ZDE0M2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtNTIs
MTAgKzUyLDE4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gU3RhdGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Cit2b2lkIFN0YXRlbWVudE5vZGU6OnNldExvYyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUs
IGludCBjb2x1bW4pCit7CisgICAgbV9saW5lTnVtYmVyID0gZmlyc3RMaW5lOworICAgIG1fbGFz
dExpbmUgPSBsYXN0TGluZTsKKyAgICBtX2NvbHVtbk51bWJlciA9IGNvbHVtbjsKK30KKwogdm9p
ZCBTdGF0ZW1lbnROb2RlOjpzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQogewog
ICAgIG1fbGluZU51bWJlciA9IGZpcnN0TGluZTsKICAgICBtX2xhc3RMaW5lID0gbGFzdExpbmU7
CisgICAgbV9jb2x1bW5OdW1iZXIgPSAwOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gU291cmNlRWxlbWVudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
QEAgLTc1LDggKzgzLDggQEAgU3RhdGVtZW50Tm9kZSogU291cmNlRWxlbWVudHM6OnNpbmdsZVN0
YXRlbWVudCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTY29w
ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU2NvcGVOb2RlOjpTY29wZU5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmlj
dENvbnRleHQpCi0gICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCitTY29wZU5vZGU6OlNj
b3BlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBib29sIGluU3RyaWN0Q29udGV4dCkKKyAgICA6IFN0YXRlbWVudE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICwgUGFyc2VyQXJlbmFSZWZDb3VudGVkKGdsb2Jh
bERhdGEpCiAgICAgLCBtX2ZlYXR1cmVzKGluU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVGZWF0
dXJlIDogTm9GZWF0dXJlcykKICAgICAsIG1fbnVtQ29uc3RhbnRzKDApCkBAIC04NCw4ICs5Miw4
IEBAIFNjb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxp
bmVOdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250CiB7CiB9CiAKLVNjb3BlTm9kZTo6U2NvcGVOb2Rl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ss
IEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJs
ZXMsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFN0YXRl
bWVudE5vZGUobGluZU51bWJlcikKK1Njb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3Rh
Y2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJp
YWJsZXMsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKKyAgICA6IFN0
YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICwgUGFyc2VyQXJlbmFS
ZWZDb3VudGVkKGdsb2JhbERhdGEpCiAgICAgLCBtX2ZlYXR1cmVzKGZlYXR1cmVzKQogICAgICwg
bV9zb3VyY2Uoc291cmNlKQpAQCAtMTA3LDE0ICsxMTUsMTQgQEAgU3RhdGVtZW50Tm9kZSogU2Nv
cGVOb2RlOjpzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gUHJvZ3JhbU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
aW5saW5lIFByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJT
dGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZh
cmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMs
IGludCBudW1Db25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJl
ciwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJs
ZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCitpbmxpbmUgUHJvZ3JhbU5vZGU6OlByb2dyYW1O
b2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5j
dGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNv
bnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFy
aWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogewogfQogCi1QYXNzUmVmUHRyPFByb2dy
YW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50
IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNr
LCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFi
bGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50
IG51bUNvbnN0YW50cykKK1Bhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVh
dGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0
aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzKQogewotICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gbm9kZSA9IG5ldyBQcm9ncmFtTm9k
ZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywg
IGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2UsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOworICAg
IFJlZlB0cjxQcm9ncmFtTm9kZT4gbm9kZSA9IG5ldyBQcm9ncmFtTm9kZShnbG9iYWxEYXRhLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCAg
Y2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAKICAg
ICBBU1NFUlQobm9kZS0+bV9hcmVuYS5sYXN0KCkgPT0gbm9kZSk7CiAgICAgbm9kZS0+bV9hcmVu
YS5yZW1vdmVMYXN0KCk7CkBAIC0xMjUsMTQgKzEzMywxNCBAQCBQYXNzUmVmUHRyPFByb2dyYW1O
b2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxp
bmVOdQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIEV2YWxOb2RlOjpFdmFsTm9kZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hp
bGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVu
dGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBD
b2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUo
Z2xvYmFsRGF0YSwgbGluZU51bWJlciwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNT
dGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCitpbmxpbmUg
RXZhbE5vZGU6OkV2YWxOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sq
IHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1
cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3Rh
Y2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogewogfQogCi1Q
YXNzUmVmUHRyPEV2YWxOb2RlPiBFdmFsTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgaW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sq
IHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1
cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cykKK1Bhc3NSZWZQdHI8RXZhbE5vZGU+IEV2YWxOb2RlOjpj
cmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1
bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKQogewotICAgIFJlZlB0cjxFdmFsTm9kZT4gbm9kZSA9IG5ldyBFdmFsTm9kZShn
bG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2Fw
dHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CisgICAgUmVm
UHRyPEV2YWxOb2RlPiBub2RlID0gbmV3IEV2YWxOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFy
aWFibGVzLCBzb3VyY2UsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOwogCiAgICAgQVNTRVJUKG5v
ZGUtPm1fYXJlbmEubGFzdCgpID09IG5vZGUpOwogICAgIG5vZGUtPm1fYXJlbmEucmVtb3ZlTGFz
dCgpOwpAQCAtMTQ5LDEzICsxNTcsMTMgQEAgRnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5jdGlvblBh
cmFtZXRlcnMoUGFyYW1ldGVyTm9kZSogZmlyc3RQYXJhbWV0ZXIpCiAgICAgICAgIGFwcGVuZChw
YXJhbWV0ZXItPmlkZW50KCkpOwogfQogCi1pbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rp
b25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBib29s
IGluU3RyaWN0Q29udGV4dCkKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVy
LCBpblN0cmljdENvbnRleHQpCitpbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBib29sIGluU3RyaWN0Q29udGV4dCkKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRh
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGluU3RyaWN0Q29udGV4dCkKIHsKIH0KIAotaW5s
aW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFj
ayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2Fw
dHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJl
cyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRh
LCBsaW5lTnVtYmVyLCBzb3VyY2VDb2RlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywg
Y2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCitpbmxpbmUgRnVuY3Rp
b25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4s
IFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVy
U2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorICAgIDogU2NvcGVOb2RlKGds
b2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlQ29kZSwgY2hpbGRyZW4s
IHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29u
c3RhbnRzKQogewogfQogCkBAIC0xNzIsMTQgKzE4MCwxNCBAQCB2b2lkIEZ1bmN0aW9uQm9keU5v
ZGU6OmZpbmlzaFBhcnNpbmcoUGFzc1JlZlB0cjxGdW5jdGlvblBhcmFtZXRlcnM+IHBhcmFtZXRl
cnMsCiAgICAgbV9pZGVudCA9IGlkZW50OwogfQogCi1GdW5jdGlvbkJvZHlOb2RlKiBGdW5jdGlv
bkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJl
ciwgYm9vbCBpblN0cmljdENvbnRleHQpCitGdW5jdGlvbkJvZHlOb2RlKiBGdW5jdGlvbkJvZHlO
b2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgYm9vbCBpblN0cmljdENvbnRleHQpCiB7Ci0gICAgcmV0dXJuIG5ldyBG
dW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCk7
CisgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgaW5TdHJpY3RDb250ZXh0KTsKIH0KIAotUGFzc1JlZlB0cjxGdW5jdGlv
bkJvZHlOb2RlPiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayog
dmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVy
ZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBm
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK1Bhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4g
RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFy
U3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQm
IGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVh
dHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiB7Ci0gICAgUmVmUHRyPEZ1bmN0aW9u
Qm9keU5vZGU+IG5vZGUgPSBuZXcgRnVuY3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBsaW5lTnVt
YmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNv
dXJjZUNvZGUsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOworICAgIFJlZlB0cjxGdW5jdGlvbkJv
ZHlOb2RlPiBub2RlID0gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRW
YXJpYWJsZXMsIHNvdXJjZUNvZGUsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOwogCiAgICAgQVNT
RVJUKG5vZGUtPm1fYXJlbmEubGFzdCgpID09IG5vZGUpOwogICAgIG5vZGUtPm1fYXJlbmEucmVt
b3ZlTGFzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDVjOTBiYjlm
ZTY2MzYwZTkyYTk5N2FkYjY0YjNlZTc5NjM3MzIyNjYuLjBiOGJhOTUzNGRjYTA4MzhjMzFkY2Uy
YjVmNDAwN2RlOTllMWQyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAg
LTEzMCw3ICsxMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE5vZGUgOiBwdWJs
aWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAgICAgcHJvdGVjdGVkOgotICAgICAgICBOb2RlKGlu
dCk7CisgICAgICAgIE5vZGUoaW50LCBpbnQpOwogCiAgICAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIH5Ob2RlKCkgeyB9CkBAIC0xMzksMTMgKzEzOSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBpbnQgbGluZU5vKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CiAKKyAg
ICAgICAgaW50IGNvbHVtbk5vKCkgY29uc3QgeyByZXR1cm4gbV9jb2x1bW5OdW1iZXI7IH0KKwog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgaW50IG1fbGluZU51bWJlcjsKKyAgICAgICAgaW50IG1f
Y29sdW1uTnVtYmVyOwogICAgIH07CiAKICAgICBjbGFzcyBFeHByZXNzaW9uTm9kZSA6IHB1Ymxp
YyBOb2RlIHsKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEV4cHJlc3Npb25Ob2RlKGludCwgUmVz
dWx0VHlwZSA9IFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCkpOworICAgICAgICBFeHByZXNzaW9u
Tm9kZShpbnQsIGludCwgUmVzdWx0VHlwZSA9IFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCkpOwog
CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNOdW1iZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQpAQCAtMTc1LDEyICsxNzgsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBTdGF0ZW1lbnROb2RlIDogcHVibGljIE5vZGUgewogICAgIHByb3RlY3RlZDoKLSAg
ICAgICAgU3RhdGVtZW50Tm9kZShpbnQpOworICAgICAgICBTdGF0ZW1lbnROb2RlKGludCwgaW50
KTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRMb2Mo
aW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKTsgCisgICAgICAgIHZvaWQg
c2V0TG9jKGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVtbik7CiAgICAgICAg
IGludCBmaXJzdExpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lTm8oKTsgfQogICAgICAgICBpbnQg
bGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CisgICAgICAgIGludCBjb2x1
bW4oKSBjb25zdCB7IHJldHVybiBjb2x1bW5ObygpO30KIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNFbXB0eVN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc1JldHVybk5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTk0LDcg
KzE5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTnVsbE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTnVsbE5vZGUoaW50KTsKKyAg
ICAgICAgTnVsbE5vZGUoaW50LCBpbnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOwpAQCAtMjA0LDcgKzIwOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
Qm9vbGVhbk5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQm9vbGVhbk5vZGUoaW50LCBib29sIHZhbHVlKTsKKyAgICAgICAgQm9vbGVhbk5vZGUoaW50
LCBpbnQsIGJvb2wgdmFsdWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
OwpAQCAtMjE2LDcgKzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTnVtYmVy
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBOdW1i
ZXJOb2RlKGludCwgZG91YmxlIHZhbHVlKTsKKyAgICAgICAgTnVtYmVyTm9kZShpbnQsIGludCwg
ZG91YmxlIHZhbHVlKTsKIAogICAgICAgICBkb3VibGUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlOyB9CiAgICAgICAgIHZvaWQgc2V0VmFsdWUoZG91YmxlIHZhbHVlKSB7IG1fdmFsdWUg
PSB2YWx1ZTsgfQpAQCAtMjMyLDcgKzIzNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgU3RyaW5nTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBTdHJpbmdOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBTdHJpbmdO
b2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAKQEAgLTM0Miw3ICszNDcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlZ0V4cE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAg
ICAgICBSZWdFeHBOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRl
bnRpZmllciYgZmxhZ3MpOworICAgICAgICBSZWdFeHBOb2RlKGludCwgaW50LCBjb25zdCBJZGVu
dGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncyk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0zNTMsNyArMzU4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBUaGlzTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBUaGlzTm9kZShpbnQpOworICAgICAgICBUaGlzTm9kZShpbnQsIGlu
dCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0zNjEsNyArMzY2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZXNvbHZlTm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBSZXNvbHZlTm9kZShpbnQsIGNv
bnN0IElkZW50aWZpZXImLCBpbnQgc3RhcnRPZmZzZXQpOworICAgICAgICBSZXNvbHZlTm9kZShp
bnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIGludCBzdGFydE9mZnNldCk7CiAKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0K
IApAQCAtMzkzLDExICszOTgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcnJh
eU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXJy
YXlOb2RlKGludCwgaW50IGVsaXNpb24pOwotICAgICAgICBBcnJheU5vZGUoaW50LCBFbGVtZW50
Tm9kZSopOwotICAgICAgICBBcnJheU5vZGUoaW50LCBpbnQgZWxpc2lvbiwgRWxlbWVudE5vZGUq
KTsKKyAgICAgICAgQXJyYXlOb2RlKGludCwgaW50LCBpbnQgZWxpc2lvbik7CisgICAgICAgIEFy
cmF5Tm9kZShpbnQsIGludCwgRWxlbWVudE5vZGUqKTsKKyAgICAgICAgQXJyYXlOb2RlKGludCwg
aW50LCBpbnQgZWxpc2lvbiwgRWxlbWVudE5vZGUqKTsKIAotICAgICAgICBBcmd1bWVudExpc3RO
b2RlKiB0b0FyZ3VtZW50TGlzdChKU0dsb2JhbERhdGEqLCBpbnQpIGNvbnN0OworICAgICAgICBB
cmd1bWVudExpc3ROb2RlKiB0b0FyZ3VtZW50TGlzdChKU0dsb2JhbERhdGEqLCBpbnQsIGludCkg
Y29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC00MjgsOCAr
NDMzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcm9wZXJ0eUxpc3ROb2RlIDog
cHVibGljIE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShpbnQs
IFByb3BlcnR5Tm9kZSopOwotICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKGludCwgUHJvcGVydHlO
b2RlKiwgUHJvcGVydHlMaXN0Tm9kZSopOworICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKGludCwg
aW50LCBQcm9wZXJ0eU5vZGUqKTsKKyAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShpbnQsIGludCwg
UHJvcGVydHlOb2RlKiwgUHJvcGVydHlMaXN0Tm9kZSopOwogCiAgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KTsKIApAQCAtNDQwLDggKzQ0NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgT2Jq
ZWN0TGl0ZXJhbE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgT2JqZWN0TGl0ZXJhbE5vZGUoaW50KTsKLSAgICAgICAgT2JqZWN0TGl0ZXJhbE5vZGUo
aW50LCBQcm9wZXJ0eUxpc3ROb2RlKik7CisgICAgICAgIE9iamVjdExpdGVyYWxOb2RlKGludCwg
aW50KTsKKyAgICAgICAgT2JqZWN0TGl0ZXJhbE5vZGUoaW50LCBpbnQsIFByb3BlcnR5TGlzdE5v
ZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTQ1MSw3ICs0
NTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBCcmFja2V0QWNjZXNzb3JO
b2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBib29sIHN1YnNjcmlw
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZShpbnQsIGludCwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vi
c2NyaXB0SGFzQXNzaWdubWVudHMpOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkg
Y29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBtX3N1YnNjcmlwdDsgfQpAQCAtNDY5LDcgKzQ3NCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRG90QWNjZXNzb3JOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgRG90QWNjZXNzb3JOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImKTsKKyAgICAgICAgRG90QWNjZXNzb3JOb2RlKGludCwgaW50LCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CkBAIC00ODYsOCAr
NDkxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcmd1bWVudExpc3ROb2RlIDog
cHVibGljIE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShpbnQs
IEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgICAgIEFyZ3VtZW50TGlzdE5vZGUoaW50LCBBcmd1bWVu
dExpc3ROb2RlKiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShp
bnQsIGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShpbnQs
IGludCwgQXJndW1lbnRMaXN0Tm9kZSosIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICAgICAgQXJn
dW1lbnRMaXN0Tm9kZSogbV9uZXh0OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwpA
QCAtNTA2LDggKzUxMSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTmV3RXhwck5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7CiAgICAgcHVibGljOgotICAgICAgICBOZXdFeHByTm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
Kik7Ci0gICAgICAgIE5ld0V4cHJOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNO
b2RlKik7CisgICAgICAgIE5ld0V4cHJOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwor
ICAgICAgICBOZXdFeHByTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNO
b2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01MTgsNyAr
NTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFdmFsRnVuY3Rpb25DYWxsTm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRh
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGludCwgQXJndW1l
bnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKKyAgICAgICAgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUoaW50LCBpbnQsIEFyZ3Vt
ZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01
MjgsNyArNTMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxW
YWx1ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSosIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIEZ1bmN0aW9uQ2Fs
bFZhbHVlTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKiwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTM5LDcgKzU0NCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElk
ZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxSZXNvbHZl
Tm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01NTIsNyArNTU3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7
CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2Rl
KiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShpbnQsIGludCwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05vZGUqLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01NjQsNyArNTY5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAg
RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwpAQCAtNTc3LDcgKzU4Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
KyAgICAgICAgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU4NSw3ICs1OTAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAKICAgICBjbGFzcyBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMg
RnVuY3Rpb25DYWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBBcHBseUZ1bmN0aW9u
Q2FsbERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYs
IEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQs
IGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNO
b2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTkzLDcg
KzU5OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlUG9zdFJlc29sdmVOb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlUG9zdFJlc29sdmVOb2RlKGludCwgY29uc3QgSWRl
bnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlUG9zdFJlc29sdmVOb2RlKGludCwgaW50LCBjb25zdCBJ
ZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBtX2lkZW50OwpAQCAtNjAxLDcgKzYwNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgUG9zdGZpeFJlc29sdmVOb2RlIDogcHVibGljIFByZVBvc3RSZXNvbHZlTm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBQb3N0Zml4UmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVy
JiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUG9zdGZpeFJlc29sdmVOb2RlKGludCwgaW50LCBjb25z
dCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKTsKQEAgLTYxMSw3ICs2MTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IFBvc3RmaXhCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93
YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBvc3RmaXhCcmFj
a2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2Ny
aXB0LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpOworICAgICAgICBQb3N0Zml4QnJhY2tldE5vZGUoaW50LCBpbnQsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjIzLDcgKzYyOCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUG9zdGZpeERvdE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgotICAgICAgICBQb3N0Zml4RG90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUG9zdGZpeERvdE5vZGUo
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0
b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTYzNSw3ICs2
NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFBvc3RmaXhFcnJvck5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7
CiAgICAgcHVibGljOgotICAgICAgICBQb3N0Zml4RXJyb3JOb2RlKGludCwgRXhwcmVzc2lvbk5v
ZGUqLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpOworICAgICAgICBQb3N0Zml4RXJyb3JOb2RlKGludCwgaW50LCBFeHBy
ZXNzaW9uTm9kZSosIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CkBAIC02NDYsNyArNjUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBE
ZWxldGVSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlbGV0ZVJlc29sdmVOb2Rl
KGludCwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRGVsZXRlUmVzb2x2ZU5vZGUoaW50
LCBpbnQsIGNvbnN0IElkZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CkBAIC02NTYsNyArNjYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBEZWxldGVCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlbGV0ZUJyYWNrZXRO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KTsKKyAgICAgICAgRGVsZXRlQnJhY2tldE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CkBAIC02NjcsNyArNjcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBEZWxldGVEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVsZXRlRG90Tm9k
ZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAg
ICBEZWxldGVEb3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTY3
OCw3ICs2ODMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERlbGV0ZVZhbHVlTm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVW
YWx1ZU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBEZWxldGVWYWx1ZU5vZGUo
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CkBAIC02ODgsNyArNjkzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBWb2lkTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBWb2lkTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIFZvaWROb2RlKGludCwg
aW50LCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpAQCAtNjk4LDcgKzcwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVHlw
ZU9mUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgVHlwZU9mUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAg
IFR5cGVPZlJlc29sdmVOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7
IH0KIApAQCAtNzEwLDcgKzcxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVHlw
ZU9mVmFsdWVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIFR5cGVPZlZhbHVlTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIFR5cGVP
ZlZhbHVlTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTcyMCw3ICs3MjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIFByZWZpeFJlc29sdmVOb2RlIDogcHVibGljIFByZVBvc3RSZXNvbHZlTm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBQcmVmaXhSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElk
ZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQcmVmaXhSZXNvbHZlTm9kZShpbnQsIGlu
dCwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CkBAIC03MzAsNyArNzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBQcmVmaXhCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGlj
IFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgUHJlZml4QnJhY2tldE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlZml4QnJhY2tldE5vZGUo
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0
LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAt
NzQyLDcgKzc0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlZml4RG90Tm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVByZWZpeGVkU3ViRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlZml4RG90Tm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAg
ICAgUHJlZml4RG90Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpAQCAtNzU0LDcgKzc1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJl
Zml4RXJyb3JOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlZml4RXJyb3JOb2RlKGludCwg
RXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQcmVmaXhFcnJvck5vZGUoaW50
LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTc2NSw3ICs3NzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIFVuYXJ5T3BOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFVuYXJ5T3BOb2RlKGludCwgUmVzdWx0VHlwZSwgRXhwcmVzc2lvbk5vZGUq
LCBPcGNvZGVJRCk7CisgICAgICAgIFVuYXJ5T3BOb2RlKGludCwgaW50LCBSZXN1bHRUeXBlLCBF
eHByZXNzaW9uTm9kZSosIE9wY29kZUlEKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIGV4cHIoKSB7IHJldHVybiBtX2V4cHI7IH0KQEAgLTc4Miw3ICs3ODcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFVuYXJ5UGx1c05vZGUgOiBwdWJsaWMgVW5h
cnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVW5hcnlQbHVzTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKik7CisgICAgICAgIFVuYXJ5UGx1c05vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25O
b2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIEV4cHJlc3Npb25Ob2RlKiBz
dHJpcFVuYXJ5UGx1cygpIHsgcmV0dXJuIGV4cHIoKTsgfQpAQCAtNzkwLDEyICs3OTUsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOZWdhdGVOb2RlIDogcHVibGljIFVuYXJ5T3BO
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5lZ2F0ZU5vZGUoaW50LCBFeHByZXNzaW9uTm9k
ZSopOworICAgICAgICBOZWdhdGVOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwogICAg
IH07CiAKICAgICBjbGFzcyBCaXR3aXNlTm90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBCaXR3aXNlTm90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
Kik7CisgICAgICAgIEJpdHdpc2VOb3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwog
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwcigpIHsgcmV0dXJu
IG1fZXhwcjsgfQpAQCAtODA5LDcgKzgxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogIAogICAgIGNs
YXNzIExvZ2ljYWxOb3ROb2RlIDogcHVibGljIFVuYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIExvZ2ljYWxOb3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgTG9n
aWNhbE5vdE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKik7CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBMYWJlbCogdHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBib29sIGZhbGxUaHJv
dWdoTWVhbnNUcnVlKTsKICAgICAgICAgdmlydHVhbCBib29sIGhhc0NvbmRpdGlvbkNvbnRleHRD
b2RlZ2VuKCkgY29uc3QgeyByZXR1cm4gZXhwcigpLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdl
bigpOyB9CkBAIC04MTcsOCArODIyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBC
aW5hcnlPcE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQmluYXJ5T3BOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgICAgICBC
aW5hcnlPcE5vZGUoaW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgICAgIEJpbmFyeU9wTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwor
ICAgICAgICBCaW5hcnlPcE5vZGUoaW50LCBpbnQsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0U3RyY2F0KEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uLCBSZWdpc3RlcklEKiBs
aHMgPSAwLCBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUqIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lID0g
MCk7CiAKQEAgLTg0Miw3MiArODQ3LDcyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
TXVsdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE11
bHROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIE11bHROb2RlKGludCwgaW50LCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgRGl2Tm9kZSA6IHB1YmxpYyBCaW5h
cnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGl2Tm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOworICAgICAgICBEaXZOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9Owog
CiAgICAgY2xhc3MgTW9kTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgTW9kTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBNb2ROb2RlKGlu
dCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgQWRkTm9kZSA6IHB1
YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQWRkTm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICBBZGROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBZGQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgfTsKIAogICAgIGNsYXNzIFN1Yk5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFN1Yk5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgU3Vi
Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlz
U3VidHJhY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAogICAgIGNsYXNzIExl
ZnRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IExlZnRTaGlmdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTGVmdFNoaWZ0Tm9k
ZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIFJpZ2h0U2hp
ZnROb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBSaWdo
dFNoaWZ0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBSaWdodFNoaWZ0Tm9kZShp
bnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIFVuc2lnbmVkUmln
aHRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IFVuc2lnbmVkUmlnaHRTaGlmdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgVW5z
aWduZWRSaWdodFNoaWZ0Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAog
ICAgIGNsYXNzIExlc3NOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBMZXNzTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBMZXNzTm9kZShp
bnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEdyZWF0ZXJOb2Rl
IDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBHcmVhdGVyTm9k
ZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBHcmVhdGVyTm9kZShpbnQsIGludCwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIExlc3NFcU5vZGUgOiBwdWJsaWMgQmlu
YXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExlc3NFcU5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKKyAgICAgICAgTGVzc0VxTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAg
ICAgfTsKIAogICAgIGNsYXNzIEdyZWF0ZXJFcU5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEdyZWF0ZXJFcU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
KyAgICAgICAgR3JlYXRlckVxTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsK
IAogICAgIGNsYXNzIFRocm93YWJsZUJpbmFyeU9wTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUs
IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBU
aHJvd2FibGVCaW5hcnlPcE5vZGUoaW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7Ci0gICAgICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKKyAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGludCwgaW50LCBSZXN1
bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bj
b2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIFRocm93YWJsZUJpbmFy
eU9wTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTE1LDcgKzkyMCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIAogICAgIGNsYXNzIEluc3RhbmNlT2ZOb2RlIDogcHVibGljIFRocm93YWJsZUJp
bmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBJbnN0YW5jZU9mTm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICBJbnN0YW5jZU9mTm9kZShpbnQsIGludCwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05MjMsMTIg
KzkyOCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEluTm9kZSA6IHB1YmxpYyBU
aHJvd2FibGVCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSW5Ob2RlKGludCwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CisgICAgICAgIEluTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CiAgICAgfTsKIAogICAgIGNsYXNzIEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgRXF1YWxOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAg
ICAgIEVxdWFsTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05MzYsMTIgKzk0MSwxMiBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIE5vdEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgTm90RXF1YWxOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAg
ICAgIE5vdEVxdWFsTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAg
IGNsYXNzIFN0cmljdEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgU3RyaWN0RXF1YWxOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAg
IFN0cmljdEVxdWFsTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05NDksMjggKzk1NCwyOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIE5vdFN0cmljdEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5v
ZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTm90U3RyaWN0RXF1YWxOb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CisgICAgICAgIE5vdFN0cmljdEVxdWFsTm9kZShpbnQsIGludCwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEJpdEFuZE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BO
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdEFuZE5vZGUoaW50LCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKKyAgICAgICAgQml0QW5kTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsK
IAogICAgIGNsYXNzIEJpdE9yTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgQml0T3JOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJpdE9y
Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEJpdFhP
ck5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdFhP
ck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQml0WE9yTm9kZShpbnQsIGludCwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIC8vIG1fZXhwcjEgJiYgbV9leHByMiwgbV9l
eHByMSB8fCBtX2V4cHIyCiAgICAgY2xhc3MgTG9naWNhbE9wTm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBMb2dpY2FsT3BOb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIExvZ2ljYWxPcGVyYXRvcik7
CisgICAgICAgIExvZ2ljYWxPcE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBMb2dpY2FsT3BlcmF0b3IpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTg1LDcgKzk5MCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIC8vIFRoZSB0ZXJuYXJ5IG9wZXJhdG9yLCAibV9sb2dpY2FsID8gbV9leHByMSA6IG1f
ZXhwcjIiCiAgICAgY2xhc3MgQ29uZGl0aW9uYWxOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENvbmRpdGlvbmFsTm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
Mik7CisgICAgICAgIENvbmRpdGlvbmFsTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGxv
Z2ljYWwsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTk5Nyw3ICsxMDAyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlm
aWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpOworICAgICAgICBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoaW50LCBpbnQsIGNvbnN0
IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CkBAIC0xMDExLDcgKzEwMTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFzc2ln
blJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUoaW50
LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZShpbnQsIGludCwgY29uc3Qg
SWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwMjQsNyAr
MTAyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVhZE1vZGlmeUJyYWNrZXRO
b2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lv
bkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGludCwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9y
LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUo
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0
LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2ln
bm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwMzksNyArMTA0NCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgQXNzaWduQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1
YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBBc3Np
Z25CcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSog
c3Vic2NyaXB0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdu
bWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBBc3NpZ25CcmFja2V0
Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJz
Y3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50
cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CkBAIC0xMDUzLDcgKzEwNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIEFzc2lnbkRvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBBc3NpZ25Eb3ROb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9u
Tm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBBc3NpZ25E
b3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDY2LDcgKzEwNzEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlYWRNb2RpZnlEb3ROb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1
YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShpbnQs
IGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwODAsNyArMTA4NSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXNzaWduRXJyb3JOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgQXNzaWduRXJyb3JOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIE9wZXJh
dG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXNzaWduRXJyb3JOb2RlKGlu
dCwgaW50LCBFeHByZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTA5NCw3
ICsxMDk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb21tYU5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBQYXJzZXJBcmVuYURlbGV0YWJsZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBDb21tYU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMik7CisgICAgICAgIENvbW1hTm9kZShpbnQsIGludCwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpOwogCiAgICAgICAgIHVzaW5nIFBh
cnNlckFyZW5hRGVsZXRhYmxlOjpvcGVyYXRvciBuZXc7CiAKQEAgLTExMDksNyArMTExNCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIENvbnN0RGVjbE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29uc3REZWNsTm9kZShpbnQs
IGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBDb25zdERlY2xO
b2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAg
ICAgICBib29sIGhhc0luaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9pbml0OyB9CiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50KCkgeyByZXR1cm4gbV9pZGVudDsgfQpAQCAtMTEy
OSw3ICsxMTM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zdFN0YXRlbWVu
dE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDb25z
dFN0YXRlbWVudE5vZGUoaW50LCBDb25zdERlY2xOb2RlKiBuZXh0KTsKKyAgICAgICAgQ29uc3RT
dGF0ZW1lbnROb2RlKGludCwgaW50LCBDb25zdERlY2xOb2RlKiBuZXh0KTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTExNTQsNyArMTE1OSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgQmxvY2tOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgQmxvY2tOb2RlKGludCwgU291cmNlRWxlbWVudHMqID0gMCk7
CisgICAgICAgIEJsb2NrTm9kZShpbnQsIGludCwgU291cmNlRWxlbWVudHMqID0gMCk7CiAKICAg
ICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50KCkgY29uc3Q7CiAgICAgICAgIFN0
YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnQoKSBjb25zdDsKQEAgLTExNjksNyArMTE3NCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRW1wdHlTdGF0ZW1lbnROb2RlIDogcHVibGlj
IFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRW1wdHlTdGF0ZW1lbnROb2Rl
KGludCk7CisgICAgICAgIEVtcHR5U3RhdGVtZW50Tm9kZShpbnQsIGludCk7CiAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMTc5LDcgKzExODQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBEZWJ1Z2dlclN0YXRlbWVudE5vZGUgOiBwdWJsaWMg
U3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5v
ZGUoaW50KTsKKyAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnROb2RlKGludCwgaW50KTsKICAgICAg
ICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTE4Nyw3ICsxMTky
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFeHByU3RhdGVtZW50Tm9kZSA6IHB1
YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV4cHJTdGF0ZW1lbnRO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUoaW50
LCBpbnQsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIo
KSBjb25zdCB7IHJldHVybiBtX2V4cHI7IH0KIApAQCAtMTIwMSw4ICsxMjA2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBWYXJTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVu
dE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVmFyU3RhdGVtZW50Tm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKik7ICAgICAgICAKLQorICAgICAgICBWYXJTdGF0ZW1lbnROb2RlKGludCwgaW50
LCBFeHByZXNzaW9uTm9kZSopOwogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
IApAQCAtMTIxMSw3ICsxMjE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZk5v
ZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBJZk5vZGUo
aW50LCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrKTsK
KyAgICAgICAgSWZOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0
ZW1lbnROb2RlKiBpZkJsb2NrKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpAQCAtMTIyMiw3ICsxMjI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJ
ZkVsc2VOb2RlIDogcHVibGljIElmTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBJZkVsc2VO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9j
aywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2NrKTsKKyAgICAgICAgSWZFbHNlTm9kZShpbnQsIGlu
dCwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3Rh
dGVtZW50Tm9kZSogZWxzZUJsb2NrKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTEyMzIsNyArMTIzNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
RG9XaGlsZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBEb1doaWxlTm9kZShpbnQsIFN0YXRlbWVudE5vZGUqLCBFeHByZXNzaW9uTm9kZSopOworICAg
ICAgICBEb1doaWxlTm9kZShpbnQsIGludCwgU3RhdGVtZW50Tm9kZSosIEV4cHJlc3Npb25Ob2Rl
Kik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjQzLDcgKzEy
NDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFdoaWxlTm9kZSA6IHB1YmxpYyBT
dGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdoaWxlTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSopOworICAgICAgICBXaGlsZU5vZGUoaW50LCBpbnQs
IEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwpAQCAtMTI1NCw3ICsxMjU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBGb3JOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgRm9yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0YXRlbWVudE5vZGUqLCBib29sIGV4
cHIxV2FzVmFyRGVjbCk7CisgICAgICAgIEZvck5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0
YXRlbWVudE5vZGUqLCBib29sIGV4cHIxV2FzVmFyRGVjbCk7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjY4LDggKzEyNzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEZvckluTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRm9ySW5Ob2RlKEpT
R2xvYmFsRGF0YSosIGludCwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRl
bWVudE5vZGUqKTsKLSAgICAgICAgRm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSosIGludCwgY29uc3Qg
SWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnRO
b2RlKiwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpOworICAgICAg
ICBGb3JJbk5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiwgRXhw
cmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7CisgICAgICAgIEZvckluTm9kZShKU0dsb2Jh
bERhdGEqLCBpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgRXhw
cmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQs
IGludCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpA
QCAtMTI4NCw4ICsxMjg4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb250aW51
ZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENvbnRpbnVlTm9kZShKU0dsb2JhbERhdGEqLCBp
bnQpOwotICAgICAgICBDb250aW51ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAg
ICAgIENvbnRpbnVlTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCk7CisgICAgICAgIENvbnRp
bnVlTm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjk1LDggKzEyOTksOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIEJyZWFrTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBw
dWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQnJl
YWtOb2RlKEpTR2xvYmFsRGF0YSosIGludCk7Ci0gICAgICAgIEJyZWFrTm9kZShpbnQsIGNvbnN0
IElkZW50aWZpZXImKTsKKyAgICAgICAgQnJlYWtOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgaW50
KTsKKyAgICAgICAgQnJlYWtOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAg
ICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEzMDYsNyArMTMx
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmV0dXJuTm9kZSA6IHB1YmxpYyBT
dGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgUmV0dXJuTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSk7CisgICAg
ICAgIFJldHVybk5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSk7CiAKICAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQogCkBAIC0xMzIw
LDcgKzEzMjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFdpdGhOb2RlIDogcHVi
bGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgV2l0aE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqLCB1aW50MzJfdCBkaXZvdCwgdWludDMyX3Qg
ZXhwcmVzc2lvbkxlbmd0aCk7CisgICAgICAgIFdpdGhOb2RlKGludCwgaW50LCBFeHByZXNzaW9u
Tm9kZSosIFN0YXRlbWVudE5vZGUqLCB1aW50MzJfdCBkaXZvdCwgdWludDMyX3QgZXhwcmVzc2lv
bkxlbmd0aCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMzMz
LDcgKzEzMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIExhYmVsTm9kZSA6IHB1
YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgTGFiZWxOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwg
U3RhdGVtZW50Tm9kZSopOworICAgICAgICBMYWJlbE5vZGUoaW50LCBpbnQsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKQEAgLTEzNDQsNyArMTM0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgVGhyb3dOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBUaHJvd05vZGUoaW50LCBFeHBy
ZXNzaW9uTm9kZSopOworICAgICAgICBUaHJvd05vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2Rl
Kik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMzU0LDcgKzEz
NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFRyeU5vZGUgOiBwdWJsaWMgU3Rh
dGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBUcnlOb2RlKGludCwgU3RhdGVtZW50
Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2VwdGlvbklkZW50LCBTdGF0ZW1l
bnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spOworICAgICAg
ICBUcnlOb2RlKGludCwgaW50LCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRp
ZmllciYgZXhjZXB0aW9uSWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVu
dE5vZGUqIGZpbmFsbHlCbG9jayk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CkBAIC0xMzgzLDggKzEzODcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRl
ZiBEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2sgVmFyU3RhY2s7CiAgICAgICAgIHR5cGVkZWYg
RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgRnVuY3Rpb25TdGFjazsKIAotICAgICAg
ICBTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBib29sIGluU3RyaWN0Q29udGV4dCk7Ci0g
ICAgICAgIFNjb3BlTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGNvbnN0IFNvdXJjZUNvZGUmLCBT
b3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQm
LCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBTY29wZU5vZGUoSlNH
bG9iYWxEYXRhKiwgaW50LCBpbnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgU2Nv
cGVOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgaW50LCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNl
RWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgQ29k
ZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB1c2luZyBQYXJzZXJBcmVu
YVJlZkNvdW50ZWQ6Om9wZXJhdG9yIG5ldzsKIApAQCAtMTQ0NiwxMiArMTQ1MCwxMiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBQcm9ncmFtTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSBm
YWxzZTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IGNyZWF0ZShKU0ds
b2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNr
KiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBu
dW1Db25zdGFudHMpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gY3Jl
YXRlKEpTR2xvYmFsRGF0YSosIGludCwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwg
RnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBz
Y29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFByb2dyYW1O
b2RlKEpTR2xvYmFsRGF0YSosIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0
aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJl
cywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIFByb2dyYW1Ob2RlKEpTR2xvYmFsRGF0YSos
IGludCwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElk
ZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzKTsKIAogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CiAgICAgfTsKQEAgLTE0NTksMTIgKzE0
NjMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRXZhbE5vZGUgOiBwdWJsaWMgU2Nv
cGVOb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzRnVuY3Rp
b25Ob2RlID0gZmFsc2U7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2YWxOb2RlPiBjcmVh
dGUoSlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rp
b25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZhbE5vZGU+
IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFj
ayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENv
ZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAgICAgICBFdmFs
Tm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5j
dGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVy
ZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBFdmFsTm9kZShKU0dsb2JhbERhdGEqLCBp
bnQsIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVu
dGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cyk7CiAKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogICAgIH07CkBAIC0xNDgxLDggKzE0ODUs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvbkJvZHlOb2RlIDogcHVibGlj
IFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0Z1
bmN0aW9uTm9kZSA9IHRydWU7Ci0gICAgICAgIHN0YXRpYyBGdW5jdGlvbkJvZHlOb2RlKiBjcmVh
dGUoSlNHbG9iYWxEYXRhKiwgaW50LCBib29sIGlzU3RyaWN0TW9kZSk7Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQs
IFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNl
dCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwor
ICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlKEpTR2xvYmFsRGF0YSosIGlu
dCwgaW50LCBib29sIGlzU3RyaWN0TW9kZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1
bmN0aW9uQm9keU5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCwgU291cmNlRWxl
bWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3Qg
U291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAg
RnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLmdldCgpOyB9CiAgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyYW1ldGVycy0+c2l6ZSgpOyB9CkBAIC0xNDk5LDggKzE1MDMsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gdHJ1
ZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRh
KiwgaW50LCBib29sIGluU3RyaWN0Q29udGV4dCk7Ci0gICAgICAgIEZ1bmN0aW9uQm9keU5vZGUo
SlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25T
dGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBp
bnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEq
LCBpbnQsIGludCwgYm9vbCBpblN0cmljdENvbnRleHQpOworICAgICAgICBGdW5jdGlvbkJvZHlO
b2RlKEpTR2xvYmFsRGF0YSosIGludCwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwg
RnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7
CiAgICAgICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7CkBAIC0xNTA5LDcgKzE1MTMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmNFeHByTm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jRXhwck5vZGUoaW50LCBjb25z
dCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJh
bWV0ZXJOb2RlKiA9IDApOworICAgICAgICBGdW5jRXhwck5vZGUoaW50LCBpbnQsIGNvbnN0IElk
ZW50aWZpZXImLCBGdW5jdGlvbkJvZHlOb2RlKiwgY29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRl
ck5vZGUqID0gMCk7CiAKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSgpIHsgcmV0dXJu
IG1fYm9keTsgfQogCkBAIC0xNTIzLDcgKzE1MjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIEZ1bmNEZWNsTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIEZ1bmNEZWNsTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbkJv
ZHlOb2RlKiwgY29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRlck5vZGUqID0gMCk7CisgICAgICAg
IEZ1bmNEZWNsTm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uQm9keU5v
ZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsKIAogICAgICAgICBG
dW5jdGlvbkJvZHlOb2RlKiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9CiAKQEAgLTE1NzQsNyAr
MTU3OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3dpdGNoTm9kZSA6IHB1Ymxp
YyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFN3aXRjaE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSosIENhc2VCbG9ja05vZGUqKTsKKyAgICAgICAgU3dpdGNoTm9kZShpbnQs
IGludCwgRXhwcmVzc2lvbk5vZGUqLCBDYXNlQmxvY2tOb2RlKik7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKaW5kZXggZDg4YTlhOGI3NmJlZGU4YTA5MmFlN2ZiMmM1ZmJkYzVhZDU4ZmEzOS4uZGY0YmM5
NTBjMTU0NTk3ZmQ1MTg3NTg2N2YwMTI1NmMxNmY2YmY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTcyLDYgKzE3Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRl
eHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFZBUikpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9
IHRva2VuQ29sdW1uKCk7CiAgICAgaW50IHN0YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVu
ZCA9IDA7CiAgICAgaW50IHNjcmF0Y2g7CkBAIC0xODIsMjAgKzE4MywyMSBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
VmFyRGVjbGFyYXRpbwogICAgIGZhaWxJZlRydWUobV9lcnJvcik7CiAgICAgZmFpbElmRmFsc2Uo
YXV0b1NlbWlDb2xvbigpKTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVWYXJTdGF0
ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdmFyRGVjbHMsIHN0YXJ0LCBlbmQpOwor
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVZhclN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgdmFyRGVjbHMsIHN0YXJ0LCBlbmQpOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnN0RGVjbGFyYXRpb24oVHJl
ZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKENPTlNUVE9LRU4pKTsKKyAg
ICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBzdGFydCA9IHRv
a2VuTGluZSgpOwogICAgIGludCBlbmQgPSAwOwogICAgIFRyZWVDb25zdERlY2xMaXN0IGNvbnN0
RGVjbHMgPSBwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0KGNvbnRleHQpOwogICAgIGZhaWxJZlRy
dWUobV9lcnJvcik7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKICAgICAKLSAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVDb25zdFN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBjb25zdERlY2xzLCBzdGFydCwgZW5kKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVDb25zdFN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVt
biwgY29uc3REZWNscywgc3RhcnQsIGVuZCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+CkBAIC0yMTAsNiArMjEyLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURvV2hpbGVTdGF0ZW0KICAgICBl
bmRMb29wKCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICBpbnQgZW5kTGluZSA9
IHRva2VuTGluZSgpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAg
ICAgY29uc3VtZU9yRmFpbChXSElMRSk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwog
ICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CkBAIC0y
MTcsMTMgKzIyMCwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRG9XaGlsZVN0YXRlbQogICAgIGNvbnN1bWVPckZh
aWwoQ0xPU0VQQVJFTik7CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIG5leHQo
KTsgLy8gQWx3YXlzIHBlcmZvcm1zIGF1dG9tYXRpYyBzZW1pY29sb24gaW5zZXJ0aW9uLgotICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgc3RhdGVtZW50LCBleHByLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwga2V5VG9rZW5Db2x1bW4sIHN0YXRlbWVudCwgZXhwciwgc3RhcnRMaW5lLCBlbmRMaW5lKTsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaGlsZVN0YXRl
bWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goV0hJTEUpKTsK
KyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBzdGFydExp
bmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFS
RU4pOwpAQCAtMjM2LDcgKzI0MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaGlsZVN0YXRlbWVuCiAgICAgVHJl
ZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOwog
ICAgIGVuZExvb3AoKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwotICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZVdoaWxlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4
cHIsIHN0YXRlbWVudCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVXaGlsZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNv
bHVtbiwgZXhwciwgc3RhdGVtZW50LCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMjQ1LDYgKzI0OSw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFy
RGVjbGFyYXRpCiAgICAgVHJlZUV4cHJlc3Npb24gdmFyRGVjbHMgPSAwOwogICAgIGRvIHsKICAg
ICAgICAgZGVjbGFyYXRpb25zKys7CisgICAgICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2Vu
Q29sdW1uKCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwog
ICAgICAgICAKQEAgLTI2NiwxMSArMjcxLDExIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpCiAg
ICAgICAgICAgICBsYXN0SW5pdGlhbGl6ZXIgPSBpbml0aWFsaXplcjsKICAgICAgICAgICAgIGZh
aWxJZkZhbHNlKGluaXRpYWxpemVyKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgVHJlZUV4
cHJlc3Npb24gbm9kZSA9IGNvbnRleHQuY3JlYXRlQXNzaWduUmVzb2x2ZShtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCAqbmFtZSwgaW5pdGlhbGl6ZXIsIGluaXRpYWxBc3NpZ25tZW50cyAhPSBt
X2Fzc2lnbm1lbnRDb3VudCwgdmFyU3RhcnQsIHZhckRpdm90LCBsYXN0VG9rZW5FbmQoKSk7Cisg
ICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gY29udGV4dC5jcmVhdGVBc3NpZ25SZXNv
bHZlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCAqbmFtZSwgaW5p
dGlhbGl6ZXIsIGluaXRpYWxBc3NpZ25tZW50cyAhPSBtX2Fzc2lnbm1lbnRDb3VudCwgdmFyU3Rh
cnQsIHZhckRpdm90LCBsYXN0VG9rZW5FbmQoKSk7CiAgICAgICAgICAgICBpZiAoIXZhckRlY2xz
KQogICAgICAgICAgICAgICAgIHZhckRlY2xzID0gbm9kZTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICB2YXJEZWNscyA9IGNvbnRleHQuY29tYmluZUNvbW1hTm9kZXMobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgdmFyRGVjbHMsIG5vZGUpOworICAgICAgICAgICAgICAgIHZh
ckRlY2xzID0gY29udGV4dC5jb21iaW5lQ29tbWFOb2RlcyhtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBrZXlUb2tlbkNvbHVtbiwgdmFyRGVjbHMsIG5vZGUpOwogICAgICAgICB9CiAgICAgfSB3
aGlsZSAobWF0Y2goQ09NTUEpKTsKICAgICByZXR1cm4gdmFyRGVjbHM7CkBAIC0yODMsNiArMjg4
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ29uc3REZWNsTGlzdCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb25zdERlY2wKICAgICBUcmVlQ29uc3REZWNsTGlzdCBjb25z
dERlY2xzID0gMDsKICAgICBUcmVlQ29uc3REZWNsTGlzdCB0YWlsID0gMDsKICAgICBkbyB7Cisg
ICAgICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgICAgIG5leHQo
KTsKICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVy
KiBuYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CkBAIC0yOTUsNyArMzAxLDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ29uc3REZWNsTGlzdCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VDb25zdERlY2wKICAgICAgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWls
ZFN0cmluZ3MpOyAvLyBjb25zdW1lICc9JwogICAgICAgICAgICAgaW5pdGlhbGl6ZXIgPSBwYXJz
ZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICB9Ci0gICAgICAgIHRhaWwg
PSBjb250ZXh0LmFwcGVuZENvbnN0RGVjbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0YWls
LCBuYW1lLCBpbml0aWFsaXplcik7CisgICAgICAgIHRhaWwgPSBjb250ZXh0LmFwcGVuZENvbnN0
RGVjbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgdGFpbCwgbmFt
ZSwgaW5pdGlhbGl6ZXIpOwogICAgICAgICBpZiAoIWNvbnN0RGVjbHMpCiAgICAgICAgICAgICBj
b25zdERlY2xzID0gdGFpbDsKICAgICB9IHdoaWxlIChtYXRjaChDT01NQSkpOwpAQCAtMzA2LDYg
KzMxMiw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3Rh
dGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChGT1IpKTsK
KyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBzdGFydExp
bmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFS
RU4pOwpAQCAtMzU1LDcgKzM2Miw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgICAg
IGVuZExvb3AoKTsKICAgICAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICAgICAgCi0g
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBmb3JJblRhcmdldCwgZm9ySW5Jbml0aWFsaXplciwgZXhwciwgc3RhdGVtZW50LCBk
ZWNsc1N0YXJ0LCBpbkxvY2F0aW9uLCBleHByRW5kLCBpbml0U3RhcnQsIGluaXRFbmQsIHN0YXJ0
TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZm9ySW5UYXJnZXQsIGZv
ckluSW5pdGlhbGl6ZXIsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgaW5Mb2NhdGlvbiwg
ZXhwckVuZCwgaW5pdFN0YXJ0LCBpbml0RW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIH0K
ICAgICAKICAgICBpZiAoIW1hdGNoKFNFTUlDT0xPTikpIHsKQEAgLTM5MSw3ICszOTgsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAgICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9
IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CiAgICAgICAgIGVuZExvb3AoKTsKICAg
ICAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRm9yTG9vcChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBkZWNscywgY29uZGl0aW9uLCBp
bmNyZW1lbnQsIHN0YXRlbWVudCwgaGFzRGVjbGFyYXRpb24sIHN0YXJ0TGluZSwgZW5kTGluZSk7
CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckxvb3AobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGRlY2xzLCBjb25kaXRpb24sIGluY3JlbWVudCwgc3Rh
dGVtZW50LCBoYXNEZWNsYXJhdGlvbiwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICB9CiAgICAg
CiAgICAgLy8gRm9yLWluIGxvb3AKQEAgLTQwOCwxMyArNDE1LDE0IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JT
dGF0ZW1lbnQoCiAgICAgZW5kTG9vcCgpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAg
ICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIGRlY2xzLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBl
eHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZv
ckluTG9vcChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZGVjbHMs
IGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgZGVjbHNFbmQsIGV4cHJFbmQsIHN0YXJ0TGlu
ZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlQnJlYWtTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1h
dGNoKEJSRUFLKSk7CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAg
ICBpbnQgc3RhcnRDb2wgPSB0b2tlblN0YXJ0KCk7CiAgICAgaW50IGVuZENvbCA9IHRva2VuRW5k
KCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwpAQCAtNDIzLDcgKzQzMSw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VCcmVha1N0YXRlbWVuCiAgICAgCiAgICAgaWYgKGF1dG9TZW1pQ29sb24oKSkg
ewogICAgICAgICBmYWlsSWZGYWxzZVdpdGhNZXNzYWdlKGJyZWFrSXNWYWxpZCgpLCAiJ2JyZWFr
JyBpcyBvbmx5IHZhbGlkIGluc2lkZSBhIHN3aXRjaCBvciBsb29wIHN0YXRlbWVudCIpOwotICAg
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCcmVha1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVCcmVha1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRM
aW5lKTsKICAgICB9CiAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CkBAIC00MzIsMTMgKzQ0MCwxNCBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlQnJlYWtTdGF0ZW1lbgogICAgIGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBu
ZXh0KCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVCcmVha1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBpZGVu
dCwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVCcmVha1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlU
b2tlbkNvbHVtbiwgaWRlbnQsIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29udGludWVT
dGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKENPTlRJ
TlVFKSk7CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBpbnQg
c3RhcnRDb2wgPSB0b2tlblN0YXJ0KCk7CiAgICAgaW50IGVuZENvbCA9IHRva2VuRW5kKCk7CiAg
ICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwpAQCAtNDQ3LDcgKzQ1Niw3IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VDb250aW51ZVN0YXRlCiAgICAgCiAgICAgaWYgKGF1dG9TZW1pQ29sb24oKSkgewogICAg
ICAgICBmYWlsSWZGYWxzZVdpdGhNZXNzYWdlKGNvbnRpbnVlSXNWYWxpZCgpLCAiJ2NvbnRpbnVl
JyBpcyBvbmx5IHZhbGlkIGluc2lkZSBhIGxvb3Agc3RhdGVtZW50Iik7Ci0gICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGtleVRva2VuQ29sdW1uLCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUp
OwogICAgIH0KICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAgY29uc3QgSWRlbnRpZmllciog
aWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKQEAgLTQ1OCwxMyArNDY3LDE0IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VDb250aW51ZVN0YXRlCiAgICAgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQo
KTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwotICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGlkZW50
LCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtl
eVRva2VuQ29sdW1uLCBpZGVudCwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5l
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VSZXR1cm5T
dGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFJFVFVS
TikpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgZmFpbElm
RmFsc2UoY3VycmVudFNjb3BlKCktPmlzRnVuY3Rpb24oKSk7CiAgICAgaW50IHN0YXJ0TGluZSA9
IHRva2VuTGluZSgpOwogICAgIGludCBlbmRMaW5lID0gc3RhcnRMaW5lOwpAQCAtNDc3LDIwICs0
ODcsMjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVJldHVyblN0YXRlbWUKICAgICBpZiAobWF0Y2goU0VNSUNPTE9O
KSkKICAgICAgICAgZW5kTGluZSAgPSB0b2tlbkxpbmUoKTsKICAgICBpZiAoYXV0b1NlbWlDb2xv
bigpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgMCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsK
KyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCAwLCBzdGFydCwgZW5kLCBzdGFydExpbmUs
IGVuZExpbmUpOwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29u
dGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcik7CiAgICAgZW5kID0gbGFzdFRva2VuRW5kKCk7
CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIGVuZExpbmUgID0gdG9rZW5MaW5l
KCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwg
c3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVSZXR1cm5TdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1
bW4sIGV4cHIsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVGhyb3dTdGF0ZW1lbnQoVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFRIUk9XKSk7CisgICAgaW50IGtleVRv
a2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBpbnQgZVN0YXJ0ID0gdG9rZW5TdGFydCgp
OwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CkBAIC01MDMs
MTMgKzUxNCwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVGhyb3dTdGF0ZW1lbgogICAgIGludCBlbmRMaW5lID0g
dG9rZW5MaW5lKCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKICAgICAKLSAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVUaHJvd1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBleHByLCBlU3RhcnQsIGVFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlVGhyb3dTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwga2V5VG9rZW5Db2x1bW4sIGV4cHIsIGVTdGFydCwgZUVuZCwgc3RhcnRMaW5lLCBlbmRMaW5l
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaXRoU3Rh
dGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChXSVRIKSk7
CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBmYWlsSWZUcnVl
V2l0aE1lc3NhZ2Uoc3RyaWN0TW9kZSgpLCAiJ3dpdGgnIHN0YXRlbWVudHMgYXJlIG5vdCB2YWxp
ZCBpbiBzdHJpY3QgbW9kZSIpOwogICAgIGN1cnJlbnRTY29wZSgpLT5zZXROZWVkc0Z1bGxBY3Rp
dmF0aW9uKCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwpAQCAtNTI2LDEzICs1
MzgsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVdpdGhTdGF0ZW1lbnQKICAgICBUcmVlU3RhdGVtZW50IHN0YXRl
bWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CiAgICAgZmFpbElmRmFsc2Uo
c3RhdGVtZW50KTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaXRoU3RhdGVtZW50
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIHN0YXRlbWVudCwgc3RhcnQsIGVuZCwg
c3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaXRoU3RhdGVt
ZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBleHByLCBzdGF0
ZW1lbnQsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0
ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3dpdGNoU3RhdGVtZW50KFRyZWVCdWlsZGVy
JiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChTV0lUQ0gpKTsKKyAgICBpbnQga2V5VG9r
ZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUo
KTsKICAgICBuZXh0KCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwpAQCAtNTUzLDcg
KzU2Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VTd2l0Y2hTdGF0ZW1lCiAgICAgZW5kU3dpdGNoKCk7CiAgICAg
Y29uc3VtZU9yRmFpbChDTE9TRUJSQUNFKTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVTd2l0Y2hTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgZmlyc3RD
bGF1c2VzLCBkZWZhdWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2VzLCBzdGFydExpbmUsIGVuZExpbmUp
OworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVN3aXRjaFN0YXRlbWVudChtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZXhwciwgZmlyc3RDbGF1c2VzLCBkZWZhdWx0
Q2xhdXNlLCBzZWNvbmRDbGF1c2VzLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIAogfQogCkBA
IC02MzcsMjAgKzY1MCwyMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0
ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVHJ5U3RhdGVtZW50KAogICAgICAgICBmYWls
SWZGYWxzZShmaW5hbGx5QmxvY2spOwogICAgIH0KICAgICBmYWlsSWZGYWxzZShjYXRjaEJsb2Nr
IHx8IGZpbmFsbHlCbG9jayk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVHJ5U3RhdGVtZW50
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRyeUJsb2NrLCBpZGVudCwgY2F0Y2hCbG9jaywg
ZmluYWxseUJsb2NrLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVUcnlTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4o
KSwgdHJ5QmxvY2ssIGlkZW50LCBjYXRjaEJsb2NrLCBmaW5hbGx5QmxvY2ssIGZpcnN0TGluZSwg
bGFzdExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZURlYnVnZ2VyU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVCht
YXRjaChERUJVR0dFUikpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7
CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIGludCBlbmRMaW5lID0gc3Rh
cnRMaW5lOwogICAgIG5leHQoKTsKICAgICBpZiAobWF0Y2goU0VNSUNPTE9OKSkKICAgICAgICAg
c3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigp
KTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVEZWJ1Z2dlcihtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZURl
YnVnZ2VyKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBzdGFydExp
bmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtNjYx
LDEzICs2NzUsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJsb2NrU3RhdGVtZW4KICAgICBuZXh0KCk7CiAgICAg
aWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
MCwgc3RhcnQsIG1fbGFzdExpbmUpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCbG9j
a1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCAwLCBz
dGFydCwgbV9sYXN0TGluZSk7CiAgICAgfQogICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdWJ0cmVl
ID0gcGFyc2VTb3VyY2VFbGVtZW50czxEb250Q2hlY2tGb3JTdHJpY3RNb2RlPihjb250ZXh0KTsK
ICAgICBmYWlsSWZGYWxzZShzdWJ0cmVlKTsKICAgICBtYXRjaE9yRmFpbChDTE9TRUJSQUNFKTsK
ICAgICBuZXh0KCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3VidHJlZSwgc3RhcnQsIG1fbGFzdExpbmUpOworICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2NrU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIHRva2VuQ29sdW1uKCksIHN1YnRyZWUsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTY5MCw3ICs3MDQsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlU3RhdGVtZW50KFRyZQogICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9u
KGNvbnRleHQpOwogICAgIGNhc2UgU0VNSUNPTE9OOgogICAgICAgICBuZXh0KCk7Ci0gICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUVtcHR5U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCkpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFbXB0eVN0YXRlbWVudChtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpKTsKICAgICBjYXNlIElGOgogICAg
ICAgICByZXR1cm4gcGFyc2VJZlN0YXRlbWVudChjb250ZXh0KTsKICAgICBjYXNlIERPOgpAQCAt
NzU5LDEyICs3NzMsMTIgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgaWYgKG1hdGNo
KENMT1NFQlJBQ0UpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHko
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RyaWN0TW9kZSgpKTsKKyAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRv
a2VuQ29sdW1uKCksIHN0cmljdE1vZGUoKSk7CiAgICAgRGVwdGhNYW5hZ2VyIHN0YXRlbWVudERl
cHRoKCZtX3N0YXRlbWVudERlcHRoKTsKICAgICBtX3N0YXRlbWVudERlcHRoID0gMDsKICAgICB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6RnVuY3Rpb25Cb2R5QnVpbGRlciBib2R5QnVpbGRlcihjb25z
dF9jYXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xvYmFsRGF0YSksIG1fbGV4ZXIuZ2V0KCkpOwogICAg
IGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHM8Q2hlY2tGb3JTdHJpY3RNb2RlPihib2R5
QnVpbGRlcikpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBzdHJpY3RNb2RlKCkpOworICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigp
LCBzdHJpY3RNb2RlKCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAt
Nzk0LDcgKzgwOCw3IEBAIHRlbXBsYXRlIDxGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVu
dHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIGNsYXNzCiAgICAgaWYgKGNvbnN0IFNv
dXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBjYWNoZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1
bmN0aW9uQ2FjaGUgPyBmaW5kQ2FjaGVkRnVuY3Rpb25JbmZvKG9wZW5CcmFjZVBvcykgOiAwKSB7
CiAgICAgICAgIC8vIElmIHdlJ3JlIGluIGEgc3RyaWN0IGNvbnRleHQsIHRoZSBjYWNoZWQgZnVu
Y3Rpb24gaW5mbyBtdXN0IHNheSBpdCB3YXMgc3RyaWN0IHRvby4KICAgICAgICAgQVNTRVJUKCFz
dHJpY3RNb2RlKCkgfHwgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7Ci0gICAgICAgIGJvZHkgPSBj
b250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjYWNo
ZWRJbmZvLT5zdHJpY3RNb2RlKTsKKyAgICAgICAgYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rp
b25Cb2R5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGNhY2hlZElu
Zm8tPnN0cmljdE1vZGUpOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9y
ZUZ1bmN0aW9uSW5mbyhjYWNoZWRJbmZvKTsKICAgICAgICAgZmFpbElmRmFsc2UocG9wU2NvcGUo
ZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbykpOwpAQCAt
ODU0LDcgKzg2OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhCiAgICAgZmFpbElmRmFsc2Uo
KHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTmVlZHNOYW1lLCB0cnVlPihjb250ZXh0LCBuYW1l
LCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFy
dExpbmUpKSk7CiAgICAgZmFpbElmRmFsc2UobmFtZSk7CiAgICAgZmFpbElmRmFsc2VJZlN0cmlj
dChkZWNsYXJlVmFyaWFibGUobmFtZSkpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmNE
ZWNsU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIG5hbWUsIGJvZHksIHBhcmFt
ZXRlcnMsIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0
TGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgbmFtZSwgYm9keSwgcGFyYW1ldGVy
cywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5l
KTsKIH0KIAogc3RydWN0IExhYmVsSW5mbyB7CkBAIC04ODIsNiArODk2LDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUV4cHJlc3Npb25PckwKICAgICBkbyB7CiAgICAgICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQo
KTsKICAgICAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgICAgICBpbnQga2V5
VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgICAgICBpZiAoIW5leHRUb2tlbklzQ29s
b24oKSkgewogICAgICAgICAgICAgLy8gSWYgd2UgaGl0IHRoaXMgcGF0aCB3ZSdyZSBtYWtpbmcg
YSBleHByZXNzaW9uIHN0YXRlbWVudCwgd2hpY2gKICAgICAgICAgICAgIC8vIGJ5IGRlZmluaXRp
b24gY2FuJ3QgbWFrZSB1c2Ugb2YgY29udGludWUvYnJlYWsgc28gd2UgY2FuIGp1c3QKQEAgLTg4
OSw3ICs5MDQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lvbk9yTAogICAgICAgICAgICAgVHJlZUV4
cHJlc3Npb24gZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKGV4cHJlc3Npb24pOwogICAgICAgICAgICAgZmFpbElmRmFsc2UoYXV0
b1NlbWlDb2xvbigpKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0
ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcmVzc2lvbiwgc3RhcnRMaW5lLCBt
X2xhc3RMaW5lKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1l
bnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGV4cHJlc3Npb24s
IHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CiAgICAgICAgIH0KICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgaW50IGVuZCA9IHRv
a2VuRW5kKCk7CkBAIC05MjgsNyArOTQzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb25PckwKICAg
ICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGFi
ZWxzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGNvbnN0IExhYmVsSW5mbyYgaW5mbyA9IGxhYmVs
c1tsYWJlbHMuc2l6ZSgpIC0gaSAtIDFdOwotICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmNy
ZWF0ZUxhYmVsU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGluZm8ubV9pZGVu
dCwgc3RhdGVtZW50LCBpbmZvLm1fc3RhcnQsIGluZm8ubV9lbmQpOworICAgICAgICBzdGF0ZW1l
bnQgPSBjb250ZXh0LmNyZWF0ZUxhYmVsU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHRva2VuQ29sdW1uKCksIGluZm8ubV9pZGVudCwgc3RhdGVtZW50LCBpbmZvLm1fc3RhcnQs
IGluZm8ubV9lbmQpOwogICAgIH0KICAgICByZXR1cm4gc3RhdGVtZW50OwogfQpAQCAtOTM3LDE3
ICs5NTIsMTggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBy
ZXNzaW9uU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIGludCBzdGFydExp
bmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigp
OwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb24oY29udGV4
dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcmVzc2lvbik7CiAgICAgZmFpbElmRmFsc2UoYXV0b1Nl
bWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHJlc3Npb24sIHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7
CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZXhwcmVzc2lvbiwgc3RhcnRMaW5lLCBtX2xhc3RM
aW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJZlN0
YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goSUYpKTsK
LSAgICAKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBz
dGFydCA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICAKQEAgLTk2Myw3ICs5NzksNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVAogICAgIGZhaWxJZkZhbHNlKHRydWVCbG9jayk7CiAg
ICAgCiAgICAgaWYgKCFtYXRjaChFTFNFKSkKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
SWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxv
Y2ssIHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJZlN0YXRlbWVu
dChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgY29uZGl0aW9uLCB0
cnVlQmxvY2ssIHN0YXJ0LCBlbmQpOwogICAgIAogICAgIFZlY3RvcjxUcmVlRXhwcmVzc2lvbj4g
ZXhwclN0YWNrOwogICAgIFZlY3RvcjxwYWlyPGludCwgaW50PiA+IHBvc1N0YWNrOwpAQCAtMTAw
Myw3ICsxMDE5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlmU3RhdGVtZW50KFQKICAgICAgICAgc3RhdGVtZW50
U3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICBwYWlyPGludCwgaW50PiBwb3MgPSBwb3NTdGFj
ay5sYXN0KCk7CiAgICAgICAgIHBvc1N0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgc3RhdGVt
ZW50U3RhY2suYXBwZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHBvcy5maXJzdCwgcG9zLnNlY29uZCkp
OworICAgICAgICBzdGF0ZW1lbnRTdGFjay5hcHBlbmQoY29udGV4dC5jcmVhdGVJZlN0YXRlbWVu
dChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBjb25kaXRpb24sIHRy
dWVCbG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vjb25kKSk7CiAgICAgfQogICAgIAogICAgIHdoaWxl
ICghZXhwclN0YWNrLmlzRW1wdHkoKSkgewpAQCAtMTAxNSwxNiArMTAzMSwxNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSWZTdGF0ZW1lbnQoVAogICAgICAgICBzdGF0ZW1lbnRTdGFjay5yZW1vdmVMYXN0KCk7CiAg
ICAgICAgIHBhaXI8aW50LCBpbnQ+IHBvcyA9IHBvc1N0YWNrLmxhc3QoKTsKICAgICAgICAgcG9z
U3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICBzdGF0ZW1lbnRTdGFjay5hcHBlbmQoY29udGV4
dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjb25kaXRpb24s
IHRydWVCbG9jaywgZmFsc2VCbG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vjb25kKSk7CisgICAgICAg
IHN0YXRlbWVudFN0YWNrLmFwcGVuZChjb250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBm
YWxzZUJsb2NrLCBwb3MuZmlyc3QsIHBvcy5zZWNvbmQpKTsKICAgICB9CiAgICAgCi0gICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
Y29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXRlbWVudFN0YWNrLmxhc3QoKSwgc3RhcnQsIGVuZCk7
CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXRlbWVudFN0
YWNrLmxhc3QoKSwgc3RhcnQsIGVuZCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAg
ZmFpbElmU3RhY2tPdmVyZmxvdygpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29s
dW1uKCk7CiAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Np
b24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uobm9kZSk7CiAgICAgaWYgKCFtYXRjaChDT01N
QSkpCkBAIC0xMDM0LDcgKzEwNTEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb24oVAogICAgIG1f
bm9uTEhTQ291bnQrKzsKICAgICBUcmVlRXhwcmVzc2lvbiByaWdodCA9IHBhcnNlQXNzaWdubWVu
dEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UocmlnaHQpOwotICAgIHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpDb21tYSBjb21tYU5vZGUgPSBjb250ZXh0LmNyZWF0ZUNvbW1hRXhw
cihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBub2RlLCByaWdodCk7CisgICAgdHlwZW5hbWUg
VHJlZUJ1aWxkZXI6OkNvbW1hIGNvbW1hTm9kZSA9IGNvbnRleHQuY3JlYXRlQ29tbWFFeHByKG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBub2RlLCByaWdodCk7CiAg
ICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250
QnVpbGRTdHJpbmdzKTsKICAgICAgICAgcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9u
KGNvbnRleHQpOwpAQCAtMTA0OSw2ICsxMDY2LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW4K
IHsKICAgICBmYWlsSWZTdGFja092ZXJmbG93KCk7CiAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFy
dCgpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgaW50IGlu
aXRpYWxBc3NpZ25tZW50Q291bnQgPSBtX2Fzc2lnbm1lbnRDb3VudDsKICAgICBpbnQgaW5pdGlh
bE5vbkxIU0NvdW50ID0gbV9ub25MSFNDb3VudDsKICAgICBUcmVlRXhwcmVzc2lvbiBsaHMgPSBw
YXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTEwNzgsNyArMTA5Niw3IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlQXNzaWdubWVuCiAgICAgICAgIH0KICAgICAgICAgbV9ub25Ucml2aWFs
RXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgIGhhZEFzc2lnbm1lbnQgPSB0cnVlOwotICAgICAg
ICBjb250ZXh0LmFzc2lnbm1lbnRTdGFja0FwcGVuZChhc3NpZ25tZW50U3RhY2ssIGxocywgc3Rh
cnQsIHRva2VuU3RhcnQoKSwgbV9hc3NpZ25tZW50Q291bnQsIG9wKTsKKyAgICAgICAgY29udGV4
dC5hc3NpZ25tZW50U3RhY2tBcHBlbmQoYXNzaWdubWVudFN0YWNrLCBsaHMsIHN0YXJ0LCBrZXlU
b2tlbkNvbHVtbiwgbV9hc3NpZ25tZW50Q291bnQsIG9wKTsKICAgICAgICAgc3RhcnQgPSB0b2tl
blN0YXJ0KCk7CiAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgIG5leHQoVHJl
ZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwpAQCAtMTEwMSw3ICsxMTE5LDcgQEAgZW5kOgog
ICAgICAgICByZXR1cm4gbGhzOwogICAgIAogICAgIHdoaWxlIChhc3NpZ25tZW50U3RhY2spCi0g
ICAgICAgIGxocyA9IGNvbnRleHQuY3JlYXRlQXNzaWdubWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBhc3NpZ25tZW50U3RhY2ssIGxocywgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9h
c3NpZ25tZW50Q291bnQsIGxhc3RUb2tlbkVuZCgpKTsKKyAgICAgICAgbGhzID0gY29udGV4dC5j
cmVhdGVBc3NpZ25tZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1u
LCBhc3NpZ25tZW50U3RhY2ssIGxocywgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25t
ZW50Q291bnQsIGxhc3RUb2tlbkVuZCgpKTsKICAgICAKICAgICByZXR1cm4gbGhzOwogfQpAQCAt
MTEwOSw2ICsxMTI3LDcgQEAgZW5kOgogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewor
ICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgVHJlZUV4cHJlc3Np
b24gY29uZCA9IHBhcnNlQmluYXJ5RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxz
ZShjb25kKTsKICAgICBpZiAoIW1hdGNoKFFVRVNUSU9OKSkKQEAgLTExMjEsNyArMTE0MCw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlQ29uZGl0aW9uYWxFCiAgICAgCiAgICAgVHJlZUV4cHJlc3Npb24gcmhzID0g
cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShyaHMp
OwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbmRpdGlvbmFsRXhwcihtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBjb25kLCBsaHMsIHJocyk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
Q29uZGl0aW9uYWxFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1u
LCBjb25kLCBsaHMsIHJocyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNVbmFy
eU9wKEpTVG9rZW5UeXBlIHRva2VuKQpAQCAtMTE2NSw3ICsxMTg0LDcgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VC
aW5hcnlFeHByZXMKICAgICAgICAgICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpCaW5hcnlPcGVy
YW5kIHJocyA9IGNvbnRleHQuZ2V0RnJvbU9wZXJhbmRTdGFjaygtMSk7CiAgICAgICAgICAgICB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3BlcmFuZCBsaHMgPSBjb250ZXh0LmdldEZyb21P
cGVyYW5kU3RhY2soLTIpOwogICAgICAgICAgICAgY29udGV4dC5zaHJpbmtPcGVyYW5kU3RhY2tC
eShvcGVyYW5kU3RhY2tEZXB0aCwgMik7Ci0gICAgICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFy
eU9wZXJhdGlvbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBvcGVyYW5kU3RhY2tEZXB0aCwg
b3BlcmF0b3JTdGFja0RlcHRoLCBsaHMsIHJocyk7CisgICAgICAgICAgICBjb250ZXh0LmFwcGVu
ZEJpbmFyeU9wZXJhdGlvbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigp
LCBvcGVyYW5kU3RhY2tEZXB0aCwgb3BlcmF0b3JTdGFja0RlcHRoLCBsaHMsIHJocyk7CiAgICAg
ICAgICAgICBjb250ZXh0Lm9wZXJhdG9yU3RhY2tQb3Aob3BlcmF0b3JTdGFja0RlcHRoKTsKICAg
ICAgICAgfQogICAgICAgICBjb250ZXh0Lm9wZXJhdG9yU3RhY2tBcHBlbmQob3BlcmF0b3JTdGFj
a0RlcHRoLCBvcGVyYXRvclRva2VuLCBwcmVjZWRlbmNlKTsKQEAgLTExNzYsNyArMTE5NSw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlQmluYXJ5RXhwcmVzCiAgICAgICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpC
aW5hcnlPcGVyYW5kIHJocyA9IGNvbnRleHQuZ2V0RnJvbU9wZXJhbmRTdGFjaygtMSk7CiAgICAg
ICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpCaW5hcnlPcGVyYW5kIGxocyA9IGNvbnRleHQuZ2V0
RnJvbU9wZXJhbmRTdGFjaygtMik7CiAgICAgICAgIGNvbnRleHQuc2hyaW5rT3BlcmFuZFN0YWNr
Qnkob3BlcmFuZFN0YWNrRGVwdGgsIDIpOwotICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9w
ZXJhdGlvbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBvcGVyYW5kU3RhY2tEZXB0aCwgb3Bl
cmF0b3JTdGFja0RlcHRoLCBsaHMsIHJocyk7CisgICAgICAgIGNvbnRleHQuYXBwZW5kQmluYXJ5
T3BlcmF0aW9uKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIG9wZXJh
bmRTdGFja0RlcHRoLCBvcGVyYXRvclN0YWNrRGVwdGgsIGxocywgcmhzKTsKICAgICAgICAgY29u
dGV4dC5vcGVyYXRvclN0YWNrUG9wKG9wZXJhdG9yU3RhY2tEZXB0aCk7CiAgICAgfQogICAgIHJl
dHVybiBjb250ZXh0LnBvcE9wZXJhbmRTdGFjayhvcGVyYW5kU3RhY2tEZXB0aCk7CkBAIC0xMjI4
LDggKzEyNDcsOCBAQCB0ZW1wbGF0ZSA8Ym9vbCBjb21wbGV0ZSwgY2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFycwogICAgICAgICBuZXh0KCk7CiAg
ICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbzxGdW5jdGlvbk5vUmVxdWlyZW1l
bnRzLCBmYWxzZT4oY29udGV4dCwgYWNjZXNzb3JOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVu
QnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7CiAgICAgICAgIGlmIChz
dHJpbmdQcm9wZXJ0eU5hbWUpCi0gICAgICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBj
cmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCB0eXBlLCBzdHJpbmdQcm9wZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5C
cmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7Ci0gICAg
ICAgIHJldHVybiBjb250ZXh0LnRlbXBsYXRlIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8
Y29tcGxldGU+KGNvbnN0X2Nhc3Q8SlNHbG9iYWxEYXRhKj4obV9nbG9iYWxEYXRhKSwgbV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgdHlwZSwgbnVtZXJpY1Byb3BlcnR5TmFtZSwgcGFyYW1ldGVy
cywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xh
c3RMaW5lKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnRlbXBsYXRlIGNyZWF0ZUdldHRl
ck9yU2V0dGVyUHJvcGVydHk8Y29tcGxldGU+KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRv
a2VuQ29sdW1uKCksIHR5cGUsIHN0cmluZ1Byb3BlcnR5TmFtZSwgcGFyYW1ldGVycywgYm9keSwg
b3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsK
KyAgICAgICAgcmV0dXJuIGNvbnRleHQudGVtcGxhdGUgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9w
ZXJ0eTxjb21wbGV0ZT4oY29uc3RfY2FzdDxKU0dsb2JhbERhdGEqPihtX2dsb2JhbERhdGEpLCBt
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCB0eXBlLCBudW1lcmljUHJv
cGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3Ms
IGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOwogICAgIH0KICAgICBjYXNlIE5VTUJFUjogewog
ICAgICAgICBkb3VibGUgcHJvcGVydHlOYW1lID0gbV90b2tlbi5tX2RhdGEuZG91YmxlVmFsdWU7
CkBAIC0xMjU3LDcgKzEyNzYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU9iamVjdExpdGVyYQogICAgIAogICAg
IGlmIChtYXRjaChDTE9TRUJSQUNFKSkgewogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSk7
CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSk7CiAgICAgfQogICAgIAogICAgIFRyZWVQcm9w
ZXJ0eSBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8ZmFsc2U+KGNvbnRleHQpOwpAQCAtMTI2OSw3
ICsxMjg4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VPYmplY3RMaXRlcmEKICAgICAgICAgbV9sZXhlci0+c2V0
TGluZU51bWJlcihvbGRMaW5lTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHBhcnNlU3RyaWN0T2Jq
ZWN0TGl0ZXJhbChjb250ZXh0KTsKICAgICB9Ci0gICAgVHJlZVByb3BlcnR5TGlzdCBwcm9wZXJ0
eUxpc3QgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBwcm9wZXJ0eSk7CisgICAgVHJlZVByb3BlcnR5TGlzdCBwcm9wZXJ0eUxpc3QgPSBjb250
ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNv
bHVtbigpLCBwcm9wZXJ0eSk7CiAgICAgVHJlZVByb3BlcnR5TGlzdCB0YWlsID0gcHJvcGVydHlM
aXN0OwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAgbmV4dChUcmVlQnVpbGRl
cjo6RG9udEJ1aWxkU3RyaW5ncyk7CkBAIC0xMjg1LDE0ICsxMzA0LDE0IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
T2JqZWN0TGl0ZXJhCiAgICAgICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG9sZExpbmVO
dW1iZXIpOwogICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3RyaWN0T2JqZWN0TGl0ZXJhbChjb250
ZXh0KTsKICAgICAgICAgfQotICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxp
c3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHksIHRhaWwpOworICAgICAgICB0
YWlsID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgdG9rZW5Db2x1bW4oKSwgcHJvcGVydHksIHRhaWwpOwogICAgIH0KICAgICAKICAgICBjb25z
dW1lT3JGYWlsKENMT1NFQlJBQ0UpOwogICAgIAogICAgIG1fbm9uTEhTQ291bnQgPSBvbGROb25M
SFNDb3VudDsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5TGlzdCk7CisgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNv
bHVtbigpLCBwcm9wZXJ0eUxpc3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgpAQCAtMTMwNCw3ICsxMzIzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdHJpY3RPYmplY3QKIAogICAgIGlm
IChtYXRjaChDTE9TRUJSQUNFKSkgewogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSk7Cisg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSk7CiAgICAgfQogICAgIAogICAgIFRyZWVQcm9wZXJ0
eSBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8dHJ1ZT4oY29udGV4dCk7CkBAIC0xMzE2LDcgKzEz
MzUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVN0cmljdE9iamVjdAogICAgIGlmICghbV9zeW50YXhBbHJlYWR5
VmFsaWRhdGVkKQogICAgICAgICBvYmplY3RWYWxpZGF0b3IuYWRkKGNvbnRleHQuZ2V0TmFtZShw
cm9wZXJ0eSkuaW1wbCgpLCBjb250ZXh0LmdldFR5cGUocHJvcGVydHkpKTsKICAgICAKLSAgICBU
cmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5KTsKKyAgICBUcmVlUHJvcGVydHlM
aXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHByb3BlcnR5KTsKICAgICBUcmVlUHJvcGVy
dHlMaXN0IHRhaWwgPSBwcm9wZXJ0eUxpc3Q7CiAgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewog
ICAgICAgICBuZXh0KCk7CkBAIC0xMzM0LDE0ICsxMzUzLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RyaWN0
T2JqZWN0CiAgICAgICAgICAgICAgICAgcHJvcGVydHlFbnRyeS5pdGVyYXRvci0+c2Vjb25kIHw9
IGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAg
ICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIHByb3BlcnR5LCB0YWlsKTsKKyAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRl
UHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHBy
b3BlcnR5LCB0YWlsKTsKICAgICB9CiAgICAgCiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNF
KTsKIAogICAgIG1fbm9uTEhTQ291bnQgPSBvbGROb25MSFNDb3VudDsKIAotICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJv
cGVydHlMaXN0KTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHByb3BlcnR5TGlzdCk7CiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0xMzU4LDcgKzEzNzcsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUFycmF5TGl0ZXJhbAogICAgIH0KICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDS0VUKSkg
ewogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKLSAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZWxp
c2lvbnMpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBlbGlzaW9ucyk7CiAgICAgfQogICAgIAogICAg
IFRyZWVFeHByZXNzaW9uIGVsZW0gPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQp
OwpAQCAtMTM3Nyw3ICsxMzk2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJheUxpdGVyYWwKICAgICAgICAg
CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNLRVQpKSB7CiAgICAgICAgICAgICBuZXh0KFRy
ZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUFycmF5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGVsaXNpb25zLCBlbGVtZW50
TGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBlbGlzaW9ucywgZWxlbWVudExpc3QpOwog
ICAgICAgICB9CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGVsZW0gPSBwYXJzZUFzc2lnbm1lbnRF
eHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShlbGVtKTsKQEAgLTEzODgs
NyArMTQwNyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJyYXlMaXRlcmFsCiAgICAgCiAgICAgbV9ub25MSFND
b3VudCA9IG9sZE5vbkxIU0NvdW50OwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFy
cmF5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGVsZW1lbnRMaXN0KTsKKyAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVt
bigpLCBlbGVtZW50TGlzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBA
IC0xNDEzLDcgKzE0MzIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHByZQogICAgIH0KICAgICBj
YXNlIFRISVNUT0tFTjogewogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0
LnRoaXNFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCkpOworICAgICAgICByZXR1cm4gY29u
dGV4dC50aGlzRXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpKTsK
ICAgICB9CiAgICAgY2FzZSBJREVOVDogewogICAgICAgICBpbnQgc3RhcnQgPSB0b2tlblN0YXJ0
KCk7CkBAIC0xNDIxLDI5ICsxNDQwLDI5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAgICAg
ICAgIG5leHQoKTsKICAgICAgICAgY3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBt
X2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmlkZW50KTsKICAgICAgICAgbV9s
YXN0SWRlbnRpZmllciA9IGlkZW50OwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXNv
bHZlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGlkZW50LCBzdGFydCk7CisgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZVJlc29sdmUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9r
ZW5Db2x1bW4oKSwgaWRlbnQsIHN0YXJ0KTsKICAgICB9CiAgICAgY2FzZSBTVFJJTkc6IHsKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAg
ICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVTdHJpbmcobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgaWRlbnQpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVTdHJpbmcobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgaWRlbnQp
OwogICAgIH0KICAgICBjYXNlIE5VTUJFUjogewogICAgICAgICBkb3VibGUgZCA9IG1fdG9rZW4u
bV9kYXRhLmRvdWJsZVZhbHVlOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZU51bWJlckV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZCk7CisgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU51bWJlckV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgdG9rZW5Db2x1bW4oKSwgZCk7CiAgICAgfQogICAgIGNhc2UgTlVMTFRPS0VOOiB7CiAg
ICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTnVsbChtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTnVsbCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpKTsKICAgICB9CiAgICAgY2Fz
ZSBUUlVFVE9LRU46IHsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVCb29sZWFuKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRydWUpOworICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVCb29sZWFuKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRv
a2VuQ29sdW1uKCksIHRydWUpOwogICAgIH0KICAgICBjYXNlIEZBTFNFVE9LRU46IHsKICAgICAg
ICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCb29sZWFuKG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
Qm9vbGVhbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBmYWxzZSk7
CiAgICAgfQogICAgIGNhc2UgRElWRVFVQUw6CiAgICAgY2FzZSBESVZJREU6IHsKQEAgLTE0NTcs
NyArMTQ3Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAgICAgICAgIAogICAgICAgICBp
bnQgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgVHJlZUV4
cHJlc3Npb24gcmUgPSBjb250ZXh0LmNyZWF0ZVJlZ0V4cChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCAqcGF0dGVybiwgKmZsYWdzLCBzdGFydCk7CisgICAgICAgIFRyZWVFeHByZXNzaW9uIHJl
ID0gY29udGV4dC5jcmVhdGVSZWdFeHAobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5D
b2x1bW4oKSwgKnBhdHRlcm4sICpmbGFncywgc3RhcnQpOwogICAgICAgICBpZiAoIXJlKSB7CiAg
ICAgICAgICAgICBjb25zdCBjaGFyKiB5YXJyRXJyb3JNc2cgPSBZYXJyOjpjaGVja1N5bnRheChw
YXR0ZXJuLT51c3RyaW5nKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFtX2Vycm9yTWVzc2FnZS5p
c051bGwoKSk7CkBAIC0xNDgxLDEzICsxNTAwLDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUFyZ3VtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcmd1bWVudHMoVHJl
CiAgICAgVHJlZUV4cHJlc3Npb24gZmlyc3RBcmcgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9u
KGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGZpcnN0QXJnKTsKICAgICAKLSAgICBUcmVlQXJn
dW1lbnRzTGlzdCBhcmdMaXN0ID0gY29udGV4dC5jcmVhdGVBcmd1bWVudHNMaXN0KG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIGZpcnN0QXJnKTsKKyAgICBUcmVlQXJndW1lbnRzTGlzdCBhcmdM
aXN0ID0gY29udGV4dC5jcmVhdGVBcmd1bWVudHNMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHRva2VuQ29sdW1uKCksIGZpcnN0QXJnKTsKICAgICBUcmVlQXJndW1lbnRzTGlzdCB0YWls
ID0gYXJnTGlzdDsKICAgICB3aGlsZSAobWF0Y2goQ09NTUEpKSB7CiAgICAgICAgIG5leHQoVHJl
ZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwogICAgICAgICBUcmVlRXhwcmVzc2lvbiBhcmcg
PSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxz
ZShhcmcpOwotICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVBcmd1bWVudHNMaXN0KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRhaWwsIGFyZyk7CisgICAgICAgIHRhaWwgPSBjb250ZXh0
LmNyZWF0ZUFyZ3VtZW50c0xpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1
bW4oKSwgdGFpbCwgYXJnKTsKICAgICB9CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsK
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcmd1bWVudHMoYXJnTGlzdCk7CkBAIC0xNTE0LDcg
KzE1MzMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICBpbnQgYm9keVN0YXJ0
TGluZSA9IDA7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVu
Y3Rpb25JbmZvPEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIGZhbHNlPihjb250ZXh0LCBuYW1lLCBw
YXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExp
bmUpKSk7Ci0gICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBuYW1lLCBib2R5LCBwYXJhbWV0ZXJzLCBvcGVuQnJhY2VQb3Ms
IGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOworICAgICAgICBiYXNl
ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
dG9rZW5Db2x1bW4oKSwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBjbG9z
ZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKICAgICB9IGVsc2UKICAgICAg
ICAgYmFzZSA9IHBhcnNlUHJpbWFyeUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgCkBAIC0xNTI5
LDcgKzE1NDgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgaW50IGlu
aXRpYWxBc3NpZ25tZW50cyA9IG1fYXNzaWdubWVudENvdW50OwogICAgICAgICAgICAgVHJlZUV4
cHJlc3Npb24gcHJvcGVydHkgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgICAg
ICBmYWlsSWZGYWxzZShwcm9wZXJ0eSk7Ci0gICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVh
dGVCcmFja2V0QWNjZXNzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGJhc2UsIHByb3BlcnR5
LCBpbml0aWFsQXNzaWdubWVudHMgIT0gbV9hc3NpZ25tZW50Q291bnQsIGV4cHJlc3Npb25TdGFy
dCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQoKSk7CisgICAgICAgICAgICBiYXNlID0gY29udGV4
dC5jcmVhdGVCcmFja2V0QWNjZXNzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29s
dW1uKCksIGJhc2UsIHByb3BlcnR5LCBpbml0aWFsQXNzaWdubWVudHMgIT0gbV9hc3NpZ25tZW50
Q291bnQsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQoKSk7CiAgICAg
ICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0tFVCk7CiAgICAgICAgICAgICBtX25vbkxI
U0NvdW50ID0gbm9uTEhTQ291bnQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1NDIsMTIgKzE1
NjEsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICBpbnQgZXhw
ckVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAgICAgICAgIFRyZWVBcmd1bWVudHMgYXJn
dW1lbnRzID0gcGFyc2VBcmd1bWVudHMoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgZmFpbElm
RmFsc2UoYXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVO
ZXdFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGJhc2UsIGFyZ3VtZW50cywgc3RhcnQs
IGV4cHJFbmQsIGxhc3RUb2tlbkVuZCgpKTsgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGJh
c2UgPSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9r
ZW5Db2x1bW4oKSwgYmFzZSwgYXJndW1lbnRzLCBzdGFydCwgZXhwckVuZCwgbGFzdFRva2VuRW5k
KCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpbnQgZXhwcmVzc2lv
bkVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAgICAgICAgIFRyZWVBcmd1bWVudHMgYXJn
dW1lbnRzID0gcGFyc2VBcmd1bWVudHMoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgZmFpbElm
RmFsc2UoYXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5tYWtlRnVu
Y3Rpb25DYWxsTm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBhcmd1bWVudHMs
IGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgbGFzdFRva2VuRW5kKCkpOworICAgICAg
ICAgICAgICAgIGJhc2UgPSBjb250ZXh0Lm1ha2VGdW5jdGlvbkNhbGxOb2RlKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGJhc2UsIGFyZ3VtZW50cywgZXhwcmVzc2lv
blN0YXJ0LCBleHByZXNzaW9uRW5kLCBsYXN0VG9rZW5FbmQoKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBtX25vbkxIU0NvdW50ID0gbm9uTEhTQ291bnQ7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTE1NTcsNyArMTU3Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAg
ICAgICBpbnQgZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAgICAgbmV4
dEV4cGVjdElkZW50aWZpZXIoTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMgfCBUcmVlQnVp
bGRlcjo6RG9udEJ1aWxkS2V5d29yZHMpOwogICAgICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQp
OwotICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRG90QWNjZXNzKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlkZW50LCBleHByZXNzaW9uU3Rh
cnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kKCkpOworICAgICAgICAgICAgYmFzZSA9IGNvbnRl
eHQuY3JlYXRlRG90QWNjZXNzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1u
KCksIGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlkZW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Np
b25FbmQsIHRva2VuRW5kKCkpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTE1NjcsNyArMTU4Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhw
cmVzCiAgICAgfQogZW5kTWVtYmVyRXhwcmVzc2lvbjoKICAgICB3aGlsZSAobmV3Q291bnQtLSkK
LSAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3RXhwcihtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBiYXNlLCBzdGFydCwgbGFzdFRva2VuRW5kKCkpOworICAgICAgICBiYXNlID0gY29u
dGV4dC5jcmVhdGVOZXdFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1u
KCksIGJhc2UsIHN0YXJ0LCBsYXN0VG9rZW5FbmQoKSk7CiAgICAgcmV0dXJuIGJhc2U7CiB9CiAK
QEAgLTE2MDAsNyArMTYxOSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgbV9ub25MSFNDb3VudCsrOwotICAgICAgICBjb250ZXh0
LmFwcGVuZFVuYXJ5VG9rZW4odG9rZW5TdGFja0RlcHRoLCBtX3Rva2VuLm1fdHlwZSwgdG9rZW5T
dGFydCgpKTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRVbmFyeVRva2VuKHRva2VuU3RhY2tEZXB0
aCwgbV90b2tlbi5tX3R5cGUsIHRva2VuQ29sdW1uKCkpOwogICAgICAgICBuZXh0KCk7CiAgICAg
ICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgIH0KQEAgLTE2MTcsNyArMTYz
Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgY2FzZSBQTFVTUExVUzoKICAgICAg
ICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgIG1fbm9uTEhTQ291bnQr
KzsKLSAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIGV4cHIsIE9wUGx1c1BsdXMsIHN1YkV4cHJTdGFydCwgbGFzdFRva2VuRW5k
KCksIHRva2VuRW5kKCkpOworICAgICAgICBleHByID0gY29udGV4dC5tYWtlUG9zdGZpeE5vZGUo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZXhwciwgT3BQbHVzUGx1
cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CiAgICAgICAgIG1f
YXNzaWdubWVudENvdW50Kys7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdFdpdGhOYW1lQW5k
TWVzc2FnZShpc0V2YWxPckFyZ3VtZW50cywgIiciLCBtX2xhc3RJZGVudGlmaWVyLT5pbXBsKCks
ICInIGNhbm5vdCBiZSBtb2RpZmllZCBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBmYWlsSWZU
cnVlSWZTdHJpY3QocmVxdWlyZXNMRXhwcik7CkBAIC0xNjI2LDcgKzE2NDUsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVVuYXJ5RXhwcmVzcwogICAgIGNhc2UgTUlOVVNNSU5VUzoKICAgICAgICAgbV9ub25Ucml2
aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgIG1fbm9uTEhTQ291bnQrKzsKLSAgICAgICAg
ZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IGV4cHIsIE9wTWludXNNaW51cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5F
bmQoKSk7CisgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZShtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBleHByLCBPcE1pbnVzTWludXMsIHN1YkV4
cHJTdGFydCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOwogICAgICAgICBtX2Fzc2lnbm1l
bnRDb3VudCsrOwogICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3RXaXRoTmFtZUFuZE1lc3NhZ2Uo
aXNFdmFsT3JBcmd1bWVudHMsICInIiwgbV9sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAiJyBjYW5u
b3QgYmUgbW9kaWZpZWQgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgZmFpbElmVHJ1ZUlmU3Ry
aWN0KHJlcXVpcmVzTEV4cHIpOwpAQCAtMTY0NCwzNiArMTY2MywzNiBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVu
YXJ5RXhwcmVzcwogICAgIHdoaWxlICh0b2tlblN0YWNrRGVwdGgpIHsKICAgICAgICAgc3dpdGNo
IChjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RUeXBlKHRva2VuU3RhY2tEZXB0aCkpIHsKICAg
ICAgICAgY2FzZSBFWENMQU1BVElPTjoKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0
ZUxvZ2ljYWxOb3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7CisgICAgICAgICAg
ICBleHByID0gY29udGV4dC5jcmVhdGVMb2dpY2FsTm90KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHRva2VuQ29sdW1uKCksIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgVElMREU6Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlQml0d2lzZU5vdE5vZGUo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7CisgICAgICAgICAgICBleHByID0gY29u
dGV4dC5tYWtlQml0d2lzZU5vdE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5D
b2x1bW4oKSwgZXhwcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNSU5VUzoK
LSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VOZWdhdGVOb2RlKG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIGV4cHIpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZU5lZ2F0
ZU5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZXhwcik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQTFVTOgotICAgICAgICAgICAgZXhwciA9
IGNvbnRleHQuY3JlYXRlVW5hcnlQbHVzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIp
OworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlVW5hcnlQbHVzKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgUExVU1BMVVM6CiAgICAgICAgIGNhc2UgQVVUT1BMVVNQTFVTOgotICAg
ICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgZXhwciwgT3BQbHVzUGx1cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3Rh
cnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKKyAgICAgICAgICAg
IGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IHRva2VuQ29sdW1uKCksIGV4cHIsIE9wUGx1c1BsdXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNr
TGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CiAgICAg
ICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgTUlOVVNNSU5VUzoKICAgICAgICAgY2FzZSBBVVRPTUlOVVNNSU5VUzoKLSAgICAgICAg
ICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGV4cHIsIE9wTWludXNNaW51cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQo
dG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKKyAgICAgICAgICAgIGV4
cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRv
a2VuQ29sdW1uKCksIGV4cHIsIE9wTWludXNNaW51cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tM
YXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKICAgICAg
ICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBUWVBFT0Y6Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlVHlwZU9mTm9kZSht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250
ZXh0Lm1ha2VUeXBlT2ZOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1u
KCksIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVk9JRFRPS0VOOgot
ICAgICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlVm9pZChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBleHByKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0ZVZvaWQobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZXhwcik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBERUxFVEVUT0tFTjoKICAgICAgICAgICAgIGZhaWxJZlRy
dWVJZlN0cmljdFdpdGhOYW1lQW5kTWVzc2FnZShjb250ZXh0LmlzUmVzb2x2ZShleHByKSwgIkNh
bm5vdCBkZWxldGUgdW5xdWFsaWZpZWQgcHJvcGVydHkiLCBtX2xhc3RJZGVudGlmaWVyLT5pbXBs
KCksICJpbiBzdHJpY3QgbW9kZSIpOwotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZURl
bGV0ZU5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgY29udGV4dC51bmFyeVRv
a2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgZW5kLCBlbmQpOworICAgICAgICAg
ICAgZXhwciA9IGNvbnRleHQubWFrZURlbGV0ZU5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgdG9rZW5Db2x1bW4oKSwgZXhwciwgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQo
dG9rZW5TdGFja0RlcHRoKSwgZW5kLCBlbmQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBJZiB3ZSBnZXQgaGVyZSBzb21ldGhpbmcgaGFzIGdv
bmUgaG9ycmlibHkgaG9ycmlibHkgd3JvbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCmluZGV4IGMyYTExZDY2NWI3OTEzZWM1ZjY0MzFjMDYzNmMxYThhNmRkNmEwMTYuLjhlNmMx
MGI4NTU3N2RmMGI3MGM2YjhhYzc0Mjg1ZDcwYTY4ZTUzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaApAQCAtNTU0LDcgKzU1NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gbV90b2tlbi5tX2luZm8uZW5kT2Zmc2V0OwogICAgIH0KICAgICAKLSAgICBjb25zdCBj
aGFyKiBnZXRUb2tlbk5hbWUoSlNUb2tlblR5cGUgdG9rKSAKKyAgICBBTFdBWVNfSU5MSU5FIGlu
dCB0b2tlbkNvbHVtbigpCisgICAgeworICAgICAgICByZXR1cm4gbV90b2tlbi5tX2luZm8uY29s
dW1uOworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIGdldFRva2VuTmFtZShKU1Rva2VuVHlwZSB0
b2spCiAgICAgewogICAgICAgICBzd2l0Y2ggKHRvaykgewogICAgICAgICBjYXNlIE5VTExUT0tF
TjogCkBAIC0xMDA1LDYgKzEwMTAsNyBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iagogICAgIGlm
IChtX3NvdXJjZUVsZW1lbnRzKSB7CiAgICAgICAgIHJlc3VsdCA9IFBhcnNlZE5vZGU6OmNyZWF0
ZSgmbGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4ZXItPmN1cnJlbnRDb2x1bW5OdW1iZXIoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc291cmNlRWxlbWVudHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhckRlY2xhcmF0aW9ucyA/ICZt
X3ZhckRlY2xhcmF0aW9ucy0+ZGF0YSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2Z1bmNEZWNsYXJhdGlvbnMgPyAmbV9mdW5jRGVjbGFyYXRpb25zLT5kYXRhIDog
MCwKQEAgLTEwMTIsNyArMTAxOCw3IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbV9zb3VyY2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2ZlYXR1cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9udW1Db25zdGFudHMpOwotICAgICAgICByZXN1bHQtPnNldExvYyhtX3Nv
dXJjZS0+Zmlyc3RMaW5lKCksIG1fbGFzdExpbmUpOworICAgICAgICByZXN1bHQtPnNldExvYyht
X3NvdXJjZS0+Zmlyc3RMaW5lKCksIG1fbGFzdExpbmUsIG1fbGV4ZXItPmN1cnJlbnRDb2x1bW5O
dW1iZXIoKSk7CiAgICAgfSBlbHNlIGlmIChsZXhpY2FsR2xvYmFsT2JqZWN0KSB7CiAgICAgICAg
IC8vIFdlIGNhbiBuZXZlciBzZWUgYSBzeW50YXggZXJyb3Igd2hlbiByZXBhcnNpbmcgYSBmdW5j
dGlvbiwgc2luY2Ugd2Ugc2hvdWxkIGhhdmUKICAgICAgICAgLy8gcmVwb3J0ZWQgdGhlIGVycm9y
IHdoZW4gcGFyc2luZyB0aGUgY29udGFpbmluZyBwcm9ncmFtIG9yIGV2YWwgY29kZS4gU28gaWYg
d2UncmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9r
ZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCmluZGV4
IGExZWE3NTFhYzIwYTc5MmZmNGM1ZTYyMWEwMWJjNzc0OWVhM2E5YmYuLjYzYjNmYjgxZTlkMzQ3
MGEzNDdlYjIzNmQzOTBkMzFiMjVmMGM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTQxLDEwICsxNDEsMTEgQEAgdW5pb24gSlNUb2tlbkRh
dGEgewogfTsKIAogc3RydWN0IEpTVG9rZW5JbmZvIHsKLSAgICBKU1Rva2VuSW5mbygpIDogbGlu
ZSgwKSB7IH0KKyAgICBKU1Rva2VuSW5mbygpIDogbGluZSgwKSwgY29sdW1uKDApIHsgfQogICAg
IGludCBsaW5lOwogICAgIGludCBzdGFydE9mZnNldDsKICAgICBpbnQgZW5kT2Zmc2V0OworICAg
IGludCBjb2x1bW47CiB9OwogCiBzdHJ1Y3QgSlNUb2tlbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IGMyYzkzNzU2ZGUwM2FiY2EyOTVkZTEz
YWM4ZWUxMzgxYzdkNDBjNDguLmMzM2JhMDZjYzQwYTQwZmViZWYwODkzZjU0YzkxOWUwZTdjOGEz
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBA
IC0xMTksNDIgKzExOSw0MiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERv
bnRCdWlsZFN0cmluZ3MgPSBMZXhlckZsYWdzRG9udEJ1aWxkU3RyaW5nczsKIAogICAgIGludCBj
cmVhdGVTb3VyY2VFbGVtZW50cygpIHsgcmV0dXJuIDE7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBt
YWtlRnVuY3Rpb25DYWxsTm9kZShpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biBDYWxsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQ2FsbEV4cHI7IH0KICAg
ICB2b2lkIGFwcGVuZFRvQ29tbWEoRXhwcmVzc2lvblR5cGUmIGJhc2UsIEV4cHJlc3Npb25UeXBl
IHJpZ2h0KSB7IGJhc2UgPSByaWdodDsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbW1h
RXhwcihpbnQsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSByaWdodCkgeyByZXR1cm4g
cmlnaHQ7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlQXNzaWduTm9kZShpbnQsIEV4cHJlc3Np
b25UeXBlLCBPcGVyYXRvciwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGJvb2wsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZVBy
ZWZpeE5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIFByZUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlUG9zdGZpeE5vZGUoaW50
LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFBvc3RF
eHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZVR5cGVPZk5vZGUoaW50LCBFeHByZXNzaW9u
VHlwZSkgeyByZXR1cm4gVHlwZW9mRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VEZWxl
dGVOb2RlKGludCwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERlbGV0
ZUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlTmVnYXRlTm9kZShpbnQsIEV4cHJlc3Np
b25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlQml0
d2lzZU5vdE5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0g
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTG9naWNhbE5vdChpbnQsIEV4cHJlc3Npb25UeXBlKSB7
IHJldHVybiBVbmFyeUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVVbmFyeVBsdXMo
aW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlVm9pZChpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7
IH0KLSAgICBFeHByZXNzaW9uVHlwZSB0aGlzRXhwcihpbnQpIHsgcmV0dXJuIFRoaXNFeHByOyB9
Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVzb2x2ZShpbnQsIGNvbnN0IElkZW50aWZpZXIq
LCBpbnQpIHsgcmV0dXJuIFJlc29sdmVFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
T2JqZWN0TGl0ZXJhbChpbnQpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9CisgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlQ29tbWFFeHByKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSwgRXhw
cmVzc2lvblR5cGUgcmlnaHQpIHsgcmV0dXJuIHJpZ2h0OyB9CisgICAgRXhwcmVzc2lvblR5cGUg
bWFrZUFzc2lnbk5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgRXhwcmVz
c2lvblR5cGUsIGJvb2wsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRF
eHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVByZWZpeE5vZGUoaW50LCBpbnQsIEV4cHJl
c3Npb25UeXBlLCBPcGVyYXRvciwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gUHJlRXhwcjsgfQor
ICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQb3N0Zml4Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvblR5
cGUsIE9wZXJhdG9yLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQb3N0RXhwcjsgfQorICAgIEV4
cHJlc3Npb25UeXBlIG1ha2VUeXBlT2ZOb2RlKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSkgeyBy
ZXR1cm4gVHlwZW9mRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VEZWxldGVOb2RlKGlu
dCwgaW50LCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRGVsZXRlRXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VOZWdhdGVOb2RlKGludCwgaW50LCBFeHByZXNz
aW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZUJp
dHdpc2VOb3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHBy
OyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTG9naWNhbE5vdChpbnQsIGludCwgRXhwcmVz
c2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZVVuYXJ5UGx1cyhpbnQsIGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsg
fQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVZvaWQoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBl
KSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSB0aGlzRXhwcihpbnQs
IGludCkgeyByZXR1cm4gVGhpc0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZXNv
bHZlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiBSZXNvbHZlRXhw
cjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVjdExpdGVyYWwoaW50LCBpbnQpIHsg
cmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJy
YXkoaW50LCBpbnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVPYmplY3RMaXRlcmFsKGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE9iamVjdExp
dGVyYWxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyYXkoaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZU51bWJlckV4cHIoaW50LCBkb3VibGUpIHsgcmV0dXJuIE51bWJlckV4cHI7IH0KLSAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVTdHJpbmcoaW50LCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4g
U3RyaW5nRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oaW50LCBib29s
KSB7IHJldHVybiBCb29sRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoaW50
KSB7IHJldHVybiBOdWxsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJyYWNrZXRB
Y2Nlc3MoaW50LCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
RG90QWNjZXNzKGludCwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVn
RXhwKGludCwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYsIGlu
dCkgeyByZXR1cm4gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi51c3RyaW5nKCkpID8gMCA6IFJl
Z0V4cEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGludCwgRXhwcmVz
c2lvblR5cGUsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQotICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoaW50LCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQp
IHsgcmV0dXJuIE5ld0V4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVDb25kaXRpb25h
bEV4cHIoaW50LCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBl
KSB7IHJldHVybiBDb25kaXRpb25hbEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVB
c3NpZ25SZXNvbHZlKGludCwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBib29s
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQotICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBpbnQg
Y3JlYXRlRnVuY3Rpb25Cb2R5KGludCwgYm9vbCkgeyByZXR1cm4gMTsgfQorICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZUFycmF5KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQXJyYXlMaXRl
cmFsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bWJlckV4cHIoaW50LCBpbnQs
IGRvdWJsZSkgeyByZXR1cm4gTnVtYmVyRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZVN0cmluZyhpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIFN0cmluZ0V4cHI7
IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGludCwgaW50LCBib29sKSB7IHJl
dHVybiBCb29sRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoaW50LCBpbnQp
IHsgcmV0dXJuIE51bGxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFj
Y2VzcyhpbnQsIGludCwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQs
IGludCwgaW50KSB7IHJldHVybiBCcmFja2V0RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZURvdEFjY2VzcyhpbnQsIGludCwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IElkZW50aWZpZXIq
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlUmVnRXhwKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJ
ZGVudGlmaWVyJiwgaW50KSB7IHJldHVybiBZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnVzdHJp
bmcoKSkgPyAwIDogUmVnRXhwRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4
cHIoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IE5ld0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGludCwgaW50LCBF
eHByZXNzaW9uVHlwZSwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KKyAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVDb25kaXRpb25hbEV4cHIoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlLCBF
eHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIENvbmRpdGlvbmFsRXhwcjsg
fQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFzc2lnblJlc29sdmUoaW50LCBpbnQsIGNvbnN0
IElkZW50aWZpZXImLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gQXNzaWdubWVudEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4
cHIoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50KSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25Cb2R5
KGludCwgaW50LCBib29sKSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygp
IHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKGludCkgeyByZXR1cm4gMTsg
fQotICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGludCwgaW50KSB7IHJldHVybiAxOyB9CiAg
ICAgaW50IGNyZWF0ZUFyZ3VtZW50c0xpc3QoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQor
ICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQogICAgIHRlbXBsYXRlIDxib29sIGNvbXBsZXRlPiBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0
eShjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlKQog
ICAgIHsKICAgICAgICAgaWYgKCFjb21wbGV0ZSkKQEAgLTE2OCw4ICsxNjgsOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CiAgICAgICAgIHJldHVybiBQcm9w
ZXJ0eSgmZ2xvYmFsRGF0YS0+cGFyc2VyQXJlbmEtPmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1l
cmljSWRlbnRpZmllcihnbG9iYWxEYXRhLCBuYW1lKSwgdHlwZSk7CiAgICAgfQotICAgIGludCBj
cmVhdGVQcm9wZXJ0eUxpc3QoaW50LCBQcm9wZXJ0eSkgeyByZXR1cm4gMTsgfQotICAgIGludCBj
cmVhdGVQcm9wZXJ0eUxpc3QoaW50LCBQcm9wZXJ0eSwgaW50KSB7IHJldHVybiAxOyB9CisgICAg
aW50IGNyZWF0ZVByb3BlcnR5TGlzdChpbnQsIGludCwgUHJvcGVydHkpIHsgcmV0dXJuIDE7IH0K
KyAgICBpbnQgY3JlYXRlUHJvcGVydHlMaXN0KGludCwgaW50LCBQcm9wZXJ0eSwgaW50KSB7IHJl
dHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUVsZW1lbnRMaXN0KGludCwgaW50KSB7IHJldHVybiAx
OyB9CiAgICAgaW50IGNyZWF0ZUVsZW1lbnRMaXN0KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KICAgICBpbnQgY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChjb25zdCBJZGVudGlmaWVyJikg
eyByZXR1cm4gMTsgfQpAQCAtMTc3LDQwICsxNzcsNDAgQEAgcHVibGljOgogICAgIGludCBjcmVh
dGVDbGF1c2UoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlz
dChpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQsIGludCkg
eyByZXR1cm4gMTsgfQotICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cyhpbnQpIHsgfQotICAgIGlu
dCBjcmVhdGVGdW5jRGVjbFN0YXRlbWVudChpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUJsb2Nr
U3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVh
dGVFeHByU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGlu
dCBjcmVhdGVJZlN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsg
fQorICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cyhpbnQsIGludCkgeyB9CisgICAgaW50IGNyZWF0
ZUZ1bmNEZWNsU3RhdGVtZW50KGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVCbG9ja1N0
YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBj
cmVhdGVFeHByU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9
CiAgICAgaW50IGNyZWF0ZUlmU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRm9yTG9vcChpbnQsIGludCwgaW50LCBpbnQs
IGludCwgYm9vbCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRm9ySW5M
b29wKGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVGb3JJbkxv
b3AoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQotICAgIGludCBjcmVhdGVFbXB0eVN0YXRlbWVudChpbnQpIHsgcmV0dXJuIDE7IH0KLSAg
ICBpbnQgY3JlYXRlVmFyU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsg
fQotICAgIGludCBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCcmVha1N0YXRl
bWVudChpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50
LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0g
ICAgaW50IGNyZWF0ZVRyeVN0YXRlbWVudChpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVTd2l0Y2hTdGF0
ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0g
ICAgaW50IGNyZWF0ZVdoaWxlU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVdpdGhTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZURvV2hpbGVTdGF0
ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3Jl
YXRlTGFiZWxTdGF0ZW1lbnQoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVUaHJvd1N0YXRlbWVudChpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZURlYnVnZ2VyKGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29uc3RTdGF0ZW1lbnQo
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGFwcGVuZENvbnN0RGVj
bChpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gMTsgfQotICAgIHRl
bXBsYXRlIDxib29sIHN0cmljdD4gUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0
eShpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KQorICAgIGludCBjcmVhdGVJZlN0YXRlbWVudChp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQg
Y3JlYXRlRm9yTG9vcChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVGb3JJbkxvb3AoaW50LCBpbnQsIGNvbnN0
IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRm9ySW5Mb29wKGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAg
IGludCBjcmVhdGVFbXB0eVN0YXRlbWVudChpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGlu
dCBjcmVhdGVWYXJTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KKyAgICBpbnQgY3JlYXRlUmV0dXJuU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0
ZUJyZWFrU3RhdGVtZW50KGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRl
Q29udGludWVTdGF0ZW1lbnQoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlVHJ5U3RhdGVtZW50KGludCwg
aW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KKyAgICBpbnQgY3JlYXRlU3dpdGNoU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVdoaWxlU3Rh
dGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBp
bnQgY3JlYXRlV2l0aFN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlTGFi
ZWxTdGF0ZW1lbnQoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50KSB7
IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVRocm93U3RhdGVtZW50KGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVEZWJ1Z2dl
cihpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29uc3RT
dGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQg
YXBwZW5kQ29uc3REZWNsKGludCwgaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsg
cmV0dXJuIDE7IH0KKyAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdl
dHRlck9yU2V0dGVyUHJvcGVydHkoaW50LCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBj
b25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KQogICAg
IHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwogICAgICAgICBpZiAoIXN0cmljdCkKICAgICAgICAg
ICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICAgICAgcmV0dXJuIFByb3BlcnR5KG5hbWUs
IHR5cGUpOwogICAgIH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0
ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQsIFBy
b3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBkb3VibGUgbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCkKKyAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdldHRl
ck9yU2V0dGVyUHJvcGVydHkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQsIGludCwgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50KQogICAgIHsKICAgICAgICAgaWYgKCFzdHJpY3QpCiAgICAgICAgICAgICByZXR1cm4g
UHJvcGVydHkodHlwZSk7CkBAIC0yMTksNyArMjE5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBh
cHBlbmRTdGF0ZW1lbnQoaW50LCBpbnQpIHsgfQogICAgIHZvaWQgYWRkVmFyKGNvbnN0IElkZW50
aWZpZXIqLCBib29sKSB7IH0KLSAgICBpbnQgY29tYmluZUNvbW1hTm9kZXMoaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjb21iaW5lQ29tbWFOb2RlcyhpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgZXZhbENvdW50KCkgY29uc3QgeyByZXR1cm4g
MDsgfQogICAgIHZvaWQgYXBwZW5kQmluYXJ5RXhwcmVzc2lvbkluZm8oaW50JiBvcGVyYW5kU3Rh
Y2tEZXB0aCwgaW50IGV4cHIsIGludCwgaW50LCBpbnQsIGJvb2wpCiAgICAgewpAQCAtMjM1LDcg
KzIzNSw3IEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yU3RhY2tIYXNIaWdoZXJQcmVjZWRl
bmNlKGludCYsIGludCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIEJpbmFyeU9wZXJhbmQgZ2V0RnJv
bU9wZXJhbmRTdGFjayhpbnQpIHsgcmV0dXJuIG1fdG9wQmluYXJ5RXhwcjsgfQogICAgIHZvaWQg
c2hyaW5rT3BlcmFuZFN0YWNrQnkoaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50IGFtb3VudCkg
eyBvcGVyYW5kU3RhY2tEZXB0aCAtPSBhbW91bnQ7IH0KLSAgICB2b2lkIGFwcGVuZEJpbmFyeU9w
ZXJhdGlvbihpbnQsIGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCYsIEJpbmFyeU9wZXJhbmQs
IEJpbmFyeU9wZXJhbmQpIHsgb3BlcmFuZFN0YWNrRGVwdGgrKzsgfQorICAgIHZvaWQgYXBwZW5k
QmluYXJ5T3BlcmF0aW9uKGludCwgaW50LCBpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQmLCBC
aW5hcnlPcGVyYW5kLCBCaW5hcnlPcGVyYW5kKSB7IG9wZXJhbmRTdGFja0RlcHRoKys7IH0KICAg
ICB2b2lkIG9wZXJhdG9yU3RhY2tBcHBlbmQoaW50JiBvcGVyYXRvclN0YWNrRGVwdGgsIGludCwg
aW50KSB7IG9wZXJhdG9yU3RhY2tEZXB0aCsrOyB9CiAgICAgaW50IHBvcE9wZXJhbmRTdGFjayhp
bnQmKSB7IGludCByZXMgPSBtX3RvcEJpbmFyeUV4cHI7IG1fdG9wQmluYXJ5RXhwciA9IDA7IHJl
dHVybiByZXM7IH0KICAgICAKQEAgLTI0NSw3ICsyNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1
bmFyeVRva2VuU3RhY2tSZW1vdmVMYXN0KGludCYgc3RhY2tEZXB0aCkgeyBzdGFja0RlcHRoID0g
MDsgfQogICAgIAogICAgIHZvaWQgYXNzaWdubWVudFN0YWNrQXBwZW5kKGludCwgaW50LCBpbnQs
IGludCwgaW50LCBPcGVyYXRvcikgeyB9Ci0gICAgaW50IGNyZWF0ZUFzc2lnbm1lbnQoaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDE7
IH0KKyAgICBpbnQgY3JlYXRlQXNzaWdubWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAxOyB9CiAgICAgY29uc3QgSWRl
bnRpZmllciYgZ2V0TmFtZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsgQVNTRVJU
KHByb3BlcnR5Lm5hbWUpOyByZXR1cm4gKnByb3BlcnR5Lm5hbWU7IH0KICAgICBQcm9wZXJ0eU5v
ZGU6OlR5cGUgZ2V0VHlwZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsgcmV0dXJu
IHByb3BlcnR5LnR5cGU7IH0KICAgICBib29sIGlzUmVzb2x2ZShFeHByZXNzaW9uVHlwZSBleHBy
KSBjb25zdCB7IHJldHVybiBleHByID09IFJlc29sdmVFeHByIHx8IGV4cHIgPT0gUmVzb2x2ZUV2
YWxFeHByOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKaW5kZXggZjIyMjdjNzQ1Y2M4YTAxYmQzOGVhOGY0ZDBhYmM3NTM5M2FhMDM5OC4u
ZDNhOTJhN2M0NzU3NzM1MWVkYjBjMDZmZTIxMzhiNmMzNTkwMzFhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNzUsMjAgKzc1
LDI4IEBAIFN0cmluZyBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludChjb25zdCBTdHJp
bmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVhCiAgICAgU291cmNlSWRUb0JyZWFrcG9pbnRz
TWFwOjppdGVyYXRvciBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmZpbmQoc291cmNlSURW
YWx1ZSk7CiAgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQogICAg
ICAgICBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLnNldChzb3VyY2VJRFZhbHVlLCBMaW5l
VG9CcmVha3BvaW50TWFwKCkpLml0ZXJhdG9yOwotICAgIGlmIChpdC0+c2Vjb25kLmNvbnRhaW5z
KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEpKQotICAgICAgICByZXR1cm4gIiI7Ci0g
ICAgaXQtPnNlY29uZC5zZXQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSwgc2NyaXB0
QnJlYWtwb2ludCk7CisgICAgTGluZVRvQnJlYWtwb2ludE1hcDo6aXRlcmF0b3IgYnJlYWtzSXQg
PSBpdC0+c2Vjb25kLmZpbmQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSk7CisgICAg
aWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisgICAgICAgIGJyZWFrc0l0ID0gaXQt
PnNlY29uZC5zZXQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSwgQnJlYWtwb2ludHNJ
bkxpbmUoKSkuaXRlcmF0b3I7CisKKyAgICBCcmVha3BvaW50c0luTGluZSYgYnJlYWtzVmVjdG9y
ID0gYnJlYWtzSXQtPnNlY29uZDsKKyAgICB1bnNpZ25lZCBicmVha3NDb3VudCA9IGJyZWFrc1Zl
Y3Rvci5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJyZWFrc0NvdW50OyBp
KyspIHsKKyAgICAgICAgaWYgKGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5OdW1iZXIgPT0gc2Ny
aXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXIpCisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAg
fQorICAgIGJyZWFrc1ZlY3Rvci5hcHBlbmQoc2NyaXB0QnJlYWtwb2ludCk7CisKICAgICAqYWN0
dWFsTGluZU51bWJlciA9IHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcjsKLSAgICAvLyBGSVhN
RShXSzUzMDAzKTogaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2ludHMgYnkgbGluZTpjb2x1bW4u
Ci0gICAgKmFjdHVhbENvbHVtbk51bWJlciA9IDA7Ci0gICAgcmV0dXJuIHNvdXJjZUlEICsgIjoi
ICsgU3RyaW5nOjpudW1iZXIoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyKTsKKyAgICAqYWN0
dWFsQ29sdW1uTnVtYmVyID0gc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXI7CisgICAgcmV0
dXJuIHNvdXJjZUlEICsgIjoiICsgU3RyaW5nOjpudW1iZXIoc2NyaXB0QnJlYWtwb2ludC5saW5l
TnVtYmVyKSArICI6IiArIFN0cmluZzo6bnVtYmVyKHNjcmlwdEJyZWFrcG9pbnQuY29sdW1uTnVt
YmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludChjb25z
dCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0b2tlbnM7CiAg
ICAgYnJlYWtwb2ludElkLnNwbGl0KCI6IiwgdG9rZW5zKTsKLSAgICBpZiAodG9rZW5zLnNpemUo
KSAhPSAyKQorICAgIGlmICh0b2tlbnMuc2l6ZSgpICE9IDMpCiAgICAgICAgIHJldHVybjsKICAg
ICBib29sIHN1Y2Nlc3M7CiAgICAgaW50cHRyX3Qgc291cmNlSURWYWx1ZSA9IHRva2Vuc1swXS50
b0ludFB0cigmc3VjY2Vzcyk7CkBAIC05Nyw5ICsxMDUsNjMgQEAgdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6cmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkKICAgICB1
bnNpZ25lZCBsaW5lTnVtYmVyID0gdG9rZW5zWzFdLnRvVUludCgmc3VjY2Vzcyk7CiAgICAgaWYg
KCFzdWNjZXNzKQogICAgICAgICByZXR1cm47CisgICAgdW5zaWduZWQgY29sdW1uTnVtYmVyID0g
dG9rZW5zWzJdLnRvVUludCgmc3VjY2Vzcyk7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICBy
ZXR1cm47CisKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9z
b3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRFZhbHVlKTsKLSAgICBpZiAoaXQgIT0g
bV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIGl0LT5zZWNvbmQucmVtb3Zl
KGxpbmVOdW1iZXIgKyAxKTsKKyAgICBpZiAoaXQgPT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMu
ZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBMaW5lVG9CcmVha3BvaW50TWFwOjppdGVyYXRv
ciBicmVha3NJdCA9IGl0LT5zZWNvbmQuZmluZChsaW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGJy
ZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEJyZWFr
cG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25kOworICAgIHVuc2ln
bmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykgeworICAgICAgICBpZiAoYnJlYWtzVmVjdG9y
LmF0KGkpLmNvbHVtbk51bWJlciA9PSBzdGF0aWNfY2FzdDxpbnQ+KGNvbHVtbk51bWJlcikpIHsK
KyAgICAgICAgICAgIGJyZWFrc1ZlY3Rvci5yZW1vdmUoaSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ3Vy
cmVudFN0YXRlbWVudFBvc2l0aW9uKGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZSkKK3sKKyAg
ICBpZiAobGluZSA8IDApCisgICAgICAgIHJldHVybjsKKworICAgIFNvdXJjZVByb3ZpZGVyKiBz
b3VyY2UgPSByZWludGVycHJldF9jYXN0PFNvdXJjZVByb3ZpZGVyKj4oc291cmNlSUQpOworCisg
ICAgaWYgKG1fY3VycmVudFNvdXJjZUlEICE9IHNvdXJjZUlEKSB7CisgICAgICAgIFN0cmluZyBz
b3VyY2VDb2RlID0gdXN0cmluZ1RvU3RyaW5nKEpTQzo6VVN0cmluZyhjb25zdF9jYXN0PFN0cmlu
Z0ltcGwqPihzb3VyY2UtPmRhdGEoKSkpKTsKKyAgICAgICAgbV9jdXJyZW50U291cmNlQ29kZS5j
bGVhcigpOworICAgICAgICBzb3VyY2VDb2RlLnNwbGl0KCJcbiIsIHRydWUsIG1fY3VycmVudFNv
dXJjZUNvZGUpOworICAgICAgICBtX2N1cnJlbnRTb3VyY2VJRCA9IHNvdXJjZUlEOworICAgICAg
ICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyID0gMDsKKyAgICAgICAgbV9j
dXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0gMDsKKyAgICB9CisKKyAgICBp
ZiAobGluZSAhPSBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyKSB7CisgICAg
ICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIgPSBsaW5lOworICAgICAg
ICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIgPSAwOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaW50IHN0YXJ0TGluZSA9IHNvdXJjZS0+c3RhcnRQb3NpdGlv
bigpLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsKKyAgICBpZiAoKG1fY3VycmVudFN0YXRlbWVudFBv
c2l0aW9uLmxpbmVOdW1iZXIgLSBzdGFydExpbmUgLSAxKSA+PSBzdGF0aWNfY2FzdDxpbnQ+KG1f
Y3VycmVudFNvdXJjZUNvZGUuc2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbnN0IFN0
cmluZyYgY29kZUluTGluZSA9IG1fY3VycmVudFNvdXJjZUNvZGVbbV9jdXJyZW50U3RhdGVtZW50
UG9zaXRpb24ubGluZU51bWJlciAtIHN0YXJ0TGluZSAtIDFdOworICAgIGlmIChjb2RlSW5MaW5l
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGludCBuZXh0Q29sdW1uID0gY29kZUlu
TGluZS5maW5kKCI7IiwgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyKTsK
KyAgICBpZiAobmV4dENvbHVtbiAhPSAtMSkgeworICAgICAgICBVQ2hhciBjID0gY29kZUluTGlu
ZVtuZXh0Q29sdW1uICsgMV07CisgICAgICAgIGlmIChjID09ICcgJyB8fCBjID09ICdcdCcpCisg
ICAgICAgICAgICBuZXh0Q29sdW1uICs9IDE7CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBv
c2l0aW9uLmNvbHVtbk51bWJlciA9IG5leHRDb2x1bW4gKyAxOworICAgIH0gZWxzZQorICAgICAg
ICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIgPSAwOwogfQogCiBib29s
IFNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVha3BvaW50KGludHB0cl90IHNvdXJjZUlELCBjb25z
dCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdApAQCAtMTEwLDE5ICsxNzIsMzcgQEAgYm9v
bCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgY29u
c3QgVGV4dFBvc2l0aW9uJiBwb3MKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRCk7CiAg
ICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaW50IGxpbmVOdW1iZXIgPSBwb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJ
bnQoKTsKLSAgICBpZiAobGluZU51bWJlciA8PSAwKQorCisgICAgaW50IGxpbmVOdW1iZXIgPSBw
b3NpdGlvbi5tX2xpbmUuemVyb0Jhc2VkSW50KCk7CisgICAgaW50IGNvbHVtbk51bWJlciA9IHBv
c2l0aW9uLm1fY29sdW1uLnplcm9CYXNlZEludCgpOworICAgIGlmIChsaW5lTnVtYmVyIDwgMCB8
fCBjb2x1bW5OdW1iZXIgPCAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBMaW5lVG9C
cmVha3BvaW50TWFwOjpjb25zdF9pdGVyYXRvciBicmVha3NJdCA9IGl0LT5zZWNvbmQuZmluZChs
aW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBMaW5lVG9CcmVha3BvaW50TWFwOjpjb25zdF9pdGVy
YXRvciBicmVha0l0ID0gaXQtPnNlY29uZC5maW5kKGxpbmVOdW1iZXIpOwotICAgIGlmIChicmVh
a0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisKKyAgICBib29sIGhpdCA9IGZhbHNlOworICAgIGNv
bnN0IEJyZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25kOwor
ICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKKyAgICB1bnNp
Z25lZCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBicmVha3NDb3VudDsgaSsrKSB7CisgICAgICAg
IGludCBicmVha0NvbHVtbiA9IGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5OdW1iZXI7CisgICAg
ICAgIGludCBicmVha0xpbmUgPSBicmVha3NWZWN0b3IuYXQoaSkubGluZU51bWJlcjsKKyAgICAg
ICAgaWYgKGxpbmVOdW1iZXIgPT0gYnJlYWtMaW5lICYmIGNvbHVtbk51bWJlciA9PSBicmVha0Nv
bHVtbikgeworICAgICAgICAgICAgaGl0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorICAgIGlmICghaGl0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAvLyBBbiBlbXB0eSBjb25kaXRpb24gY291bnRzIGFzIG5vIGNvbmRpdGlvbiB3aGljaCBpcyBl
cXVpdmFsZW50IHRvICJ0cnVlIi4KLSAgICBpZiAoYnJlYWtJdC0+c2Vjb25kLmNvbmRpdGlvbi5p
c0VtcHR5KCkpCisgICAgaWYgKGJyZWFrc1ZlY3Rvci5hdChpKS5jb25kaXRpb24uaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEpTVmFsdWUgZXhjZXB0aW9uOwotICAgIEpT
VmFsdWUgcmVzdWx0ID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5ldmFsdWF0ZShzdHJpbmdUb1VTdHJp
bmcoYnJlYWtJdC0+c2Vjb25kLmNvbmRpdGlvbiksIGV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmV2YWx1YXRlKHN0cmluZ1RvVVN0cmluZyhicmVh
a3NWZWN0b3IuYXQoaSkuY29uZGl0aW9uKSwgZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9u
KSB7CiAgICAgICAgIC8vIEFuIGVycm9uZW91cyBjb25kaXRpb24gY291bnRzIGFzICJmYWxzZSIu
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0NywyMCArNDI3LDIwIEBAIHZvaWQgU2NyaXB0
RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhKYXZhU2NyaXB0RXhlY3V0
aW9uQ2FsbGJhY2sKICAgICBtX2NhbGxpbmdMaXN0ZW5lcnMgPSBmYWxzZTsKIH0KIAotdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6Y3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBE
ZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNyZWF0ZUNhbGxGcmFtZUFu
ZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1l
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7
Ci0gICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZpcnN0KCkpOworICAgIFRleHRQb3Np
dGlvbiB0ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1i
ZXIpLCBPcmRpbmFsTnVtYmVyOjpmcm9tWmVyb0Jhc2VkSW50KGNvbHVtbk51bWJlcikpOwogICAg
IG1fY3VycmVudENhbGxGcmFtZSA9IEphdmFTY3JpcHRDYWxsRnJhbWU6OmNyZWF0ZShkZWJ1Z2dl
ckNhbGxGcmFtZSwgbV9jdXJyZW50Q2FsbEZyYW1lLCBzb3VyY2VJRCwgdGV4dFBvc2l0aW9uKTsK
ICAgICBwYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLmR5bmFtaWNHbG9iYWxPYmplY3Qo
KSk7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNl
SWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp1
cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBk
ZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyKQogewogICAgIEFTU0VSVChtX2N1cnJlbnRDYWxsRnJhbWUpOwogICAgIGlm
ICghbV9jdXJyZW50Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBUZXh0UG9zaXRp
b24gdGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChsaW5lTnVtYmVy
KSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSk7CisgICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlv
bihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1i
ZXI6OmZyb21aZXJvQmFzZWRJbnQoY29sdW1uTnVtYmVyKSk7CiAgICAgbV9jdXJyZW50Q2FsbEZy
YW1lLT51cGRhdGUoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCB0ZXh0UG9zaXRpb24pOwog
ICAgIHBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUuZHluYW1pY0dsb2JhbE9iamVjdCgp
KTsKIH0KQEAgLTM5OSwyNCArNDc5LDI0IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNl
SWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QpCiAgICAgbV9wYXVz
ZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbEV2ZW50KGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbEV2ZW50KGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIGlmICghbV9wYXVzZWQp
Ci0gICAgICAgIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJh
bWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICAgICAgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1
c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcik7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmF0U3RhdGVtZW50KGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQoY29u
c3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7CiAgICAgaWYgKCFtX3BhdXNl
ZCkKLSAgICAgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxG
cmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAgICB1cGRhdGVDYWxsRnJhbWVBbmRQ
YXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmV0dXJuRXZlbnQoY29u
c3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZXR1cm5FdmVudChj
b25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAobV9wYXVz
ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVk
ZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVD
YWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIAogICAgIC8vIGRldGFjaCBtYXkgaGF2ZSBiZWVuIGNh
bGxlZCBkdXJpbmcgcGF1c2VJZk5lZWRlZAogICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQpA
QCAtNDI4LDcgKzUwOCw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KGNv
bnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwKICAgICBtX2N1cnJlbnRD
YWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlcigpOwogfQogCi12b2lkIFNjcmlw
dERlYnVnU2VydmVyOjpleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFu
ZGxlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmV4Y2VwdGlvbihjb25zdCBEZWJ1Z2dlckNh
bGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCBoYXNIYW5kbGVyKQogewogICAgIGlmIChtX3Bh
dXNlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM2LDIxICs1MTYsMjEgQEAgdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6ZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNh
bGxGcmFtZSwgaW4KICAgICBpZiAobV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlID09IFBhdXNlT25B
bGxFeGNlcHRpb25zIHx8IChtX3BhdXNlT25FeGNlcHRpb25zU3RhdGUgPT0gUGF1c2VPblVuY2F1
Z2h0RXhjZXB0aW9ucyAmJiAhaGFzSGFuZGxlcikpCiAgICAgICAgIG1fcGF1c2VPbk5leHRTdGF0
ZW1lbnQgPSB0cnVlOwogCi0gICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1
Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgIHVwZGF0ZUNhbGxGcmFt
ZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpOwogfQogCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjp3aWxsRXhlY3V0
ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp3
aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZy
YW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIp
CiB7CiAgICAgaWYgKCFtX3BhdXNlZCkKLSAgICAgICAgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJ
Zk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAg
ICBjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3Vy
Y2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlw
dERlYnVnU2VydmVyOjpkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYg
ZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNv
dXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVk
KGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsK
IAogICAgIC8vIFRyZWF0IHN0ZXBwaW5nIG92ZXIgdGhlIGVuZCBvZiBhIHByb2dyYW0gbGlrZSBz
dGVwcGluZyBvdXQuCiAgICAgaWYgKG1fY3VycmVudENhbGxGcmFtZSA9PSBtX3BhdXNlT25DYWxs
RnJhbWUpCkBAIC00NTgsMTMgKzUzOCwxMyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaWRF
eGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRgogICAg
IG1fY3VycmVudENhbGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyKCk7CiB9CiAK
LXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dl
ckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGlu
ZU51bWJlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlYWNoQnJlYWtwb2ludChjb25z
dCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAobV9wYXVzZWQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGF1c2VPbk5leHRTdGF0ZW1lbnQgPSB0cnVlOwot
ICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNv
dXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVk
KGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsK
IH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29u
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCmlu
ZGV4IDg0ZmJhNWM2NzhmYzcyNWRmMjg2MmVlOWZmM2JlNjUxODQxMjFhYTYuLjlkOGRkZTc0MzAw
YWE4YjZkYzM3NGJlMGQwY2RmMThlNjNkMmEwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMTIzLDIyICsxMjMsMjUgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYg
bGlzdGVuZXJzLCBKU0M6OlNvdXJjZVByb3ZpZGVyKiwgYm9vbCBpc0NvbnRlbnRTY3JpcHQpOwog
ICAgIHZvaWQgZGlzcGF0Y2hGYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBs
aXN0ZW5lcnMsIEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSk7CiAKLSAgICB2b2lkIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZO
ZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlcik7Ci0gICAgdm9pZCB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVk
KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpOworICAgIHZvaWQgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25z
dCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2b2lkIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNl
SWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CiAgICAgdm9pZCBwYXVzZUlmTmVl
ZGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QpOwogCiAgICAgdmly
dHVhbCB2b2lkIGRldGFjaChKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc291cmNlUGFyc2VkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTb3VyY2VQcm92aWRlciosIGlu
dCBlcnJvckxpbmUsIGNvbnN0IEpTQzo6VVN0cmluZyYgZXJyb3JNc2cpOwotICAgIHZpcnR1YWwg
dm9pZCBjYWxsRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZU51bWJlcik7Ci0gICAgdmlydHVhbCB2b2lkIGF0U3RhdGVtZW50KGNv
bnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGZpcnN0
TGluZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0IEpTQzo6RGVidWdnZXJD
YWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOwotICAgIHZpcnR1
YWwgdm9pZCBleGNlcHRpb24oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90
IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgYm9vbCBoYXNIYW5kbGVyKTsKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubyk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEV4ZWN1
dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVubyk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25z
dCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8p
OwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPGxvbmcsIFNjcmlwdEJyZWFrcG9pbnQ+IExpbmVUb0Jy
ZWFrcG9pbnRNYXA7CisgICAgdmlydHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBKU0M6OkRlYnVn
Z2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgSlNDOjpEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgZmlyc3RMaW5lLCBpbnQgY29s
dW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuRXZlbnQoY29uc3QgSlNDOjpEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihjb25zdCBKU0M6OkRlYnVn
Z2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhlY3V0
ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZW5vLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRXhl
Y3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVhY2hCcmVha3BvaW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBz
b3VyY2VJRCwgaW50IGxpbmVubywgaW50IGNvbHVtbk51bWJlcik7CisKKyAgICB2b2lkIHVwZGF0
ZUN1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbihpbnRwdHJfdCwgaW50KTsKKworICAgIHR5cGVkZWYg
VmVjdG9yPFNjcmlwdEJyZWFrcG9pbnQ+IEJyZWFrcG9pbnRzSW5MaW5lOworICAgIHR5cGVkZWYg
SGFzaE1hcDxsb25nLCBCcmVha3BvaW50c0luTGluZT4gTGluZVRvQnJlYWtwb2ludE1hcDsKICAg
ICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIExpbmVUb0JyZWFrcG9pbnRNYXA+IFNvdXJjZUlk
VG9CcmVha3BvaW50c01hcDsKIAogICAgIGJvb2wgbV9jYWxsaW5nTGlzdGVuZXJzOwpAQCAtMTUx
LDYgKzE1NCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+
IG1fY3VycmVudENhbGxGcmFtZTsKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXAgbV9zb3Vy
Y2VJZFRvQnJlYWtwb2ludHM7CiAgICAgVGltZXI8U2NyaXB0RGVidWdTZXJ2ZXI+IG1fcmVjb21w
aWxlVGltZXI7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2N1cnJlbnRTb3VyY2VDb2RlOworICAg
IGludHB0cl90IG1fY3VycmVudFNvdXJjZUlEOworICAgIFNjcmlwdEJyZWFrcG9pbnQgbV9jdXJy
ZW50U3RhdGVtZW50UG9zaXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150382</attachid>
            <date>2012-07-02 02:12:05 -0700</date>
            <delta_ts>2012-07-02 02:39:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120702171159.patch</filename>
            <type>text/plain</type>
            <size>306769</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZTFmMzk3YmNhOGMzYjlmZWUwMjAyOGQ3ZDNjOWZkYWIzMjdjNzAwLi5lNWY4MjY1ODVhNDJlMjg1
OTRmYjlhZjMwM2NlMTQzZDYwYzBjZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NTcgQEAKKzIwMTItMDctMDEgIFBldGVyIFdhbmcgIDxwZXRlci53YW5nQHRvcmNobW9i
aWxlLmNvbS5jbj4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbSlNDXSBpbXBsZW1lbnQgc2V0
dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMwMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdCBjYXNlIGZvciB0aGlzIGJ1Zy4KKwor
ICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6cGFkT3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2sp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAo
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KToKKyAgICAgICAg
KEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDb25kaXRpb25hbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0
U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RW1wdHlTdGF0ZW1l
bnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclN0YXRlbWVudE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpJZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Oklm
RWxzZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRvV2hpbGVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpXaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkZvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvckluTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29udGludWVOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OlJldHVybk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OldpdGhOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpMYWJlbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRo
cm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJv
ZHlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRo
cm93RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmRlYnVnKToKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAg
ICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEFTVEJ1aWxkZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVDb21tYUV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMb2dp
Y2FsTm90KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVW5hcnlQbHVzKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVm9pZCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OnRoaXNFeHByKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVzb2x2
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZU9iamVjdExpdGVyYWwpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJheSk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZU51bWJlckV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVh
dGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCb29sZWFuKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTnVsbCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUJyYWNrZXRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVSZWdFeHAp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVOZXdFeHByKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uZGl0aW9uYWxFeHByKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQXNzaWduUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1
bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUdldHRlck9yU2V0
dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcmd1bWVudHNM
aXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUHJvcGVydHlMaXN0KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUV4cHJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVJZlN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUZvckxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JJbkxvb3ApOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFbXB0eVN0YXRlbWVudCk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVZhclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZVJldHVyblN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUJyZWFrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlQ29udGludWVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVU
cnlTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVTd2l0Y2hTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVXaGlsZVN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVdpdGhTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVUaHJvd1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZURlYnVnZ2VyKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uc3RT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRDb25zdERlY2wpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmFwcGVuZEJpbmFyeU9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUFzc2lnbm1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlVHlwZU9mTm9kZSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VEZWxldGVOb2RlKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjptYWtlQml0d2lzZU5vdE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlTXVs
dE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRGl2Tm9kZSk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VNb2ROb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6bWFrZUFkZE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlU3ViTm9kZSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VMZWZ0U2hpZnROb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZVJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6bWFrZVVSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
Om1ha2VCaXRPck5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQml0QW5kTm9k
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VCaXRYT3JOb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1h
a2VBc3NpZ25Ob2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlUG9zdGZpeE5vZGUpOgorICAgICAgICAq
IHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6Ojo6c2V0Q29kZSk6CisgICAgICAgIChK
U0M6Ojo6aW50ZXJuYWxTaGlmdCk6CisgICAgICAgIChKU0M6Ojo6c2hpZnQpOgorICAgICAgICAo
SlNDOjo6OmxleCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6Okxl
eGVyOjpjdXJyZW50Q29sdW1uTnVtYmVyKToKKyAgICAgICAgKExleGVyKToKKyAgICAgICAgKEpT
Qzo6OjpsZXhFeHBlY3RJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oOgorICAgICAgICAoSlNDOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKEpTQzo6RXhwcmVz
c2lvbk5vZGU6OkV4cHJlc3Npb25Ob2RlKToKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6
U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6Ok51bGxOb2RlOjpOdWxsTm9kZSk6CisgICAg
ICAgIChKU0M6OkJvb2xlYW5Ob2RlOjpCb29sZWFuTm9kZSk6CisgICAgICAgIChKU0M6Ok51bWJl
ck5vZGU6Ok51bWJlck5vZGUpOgorICAgICAgICAoSlNDOjpTdHJpbmdOb2RlOjpTdHJpbmdOb2Rl
KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTm9kZTo6UmVnRXhwTm9kZSk6CisgICAgICAgIChKU0M6
OlRoaXNOb2RlOjpUaGlzTm9kZSk6CisgICAgICAgIChKU0M6OlJlc29sdmVOb2RlOjpSZXNvbHZl
Tm9kZSk6CisgICAgICAgIChKU0M6OkFycmF5Tm9kZTo6QXJyYXlOb2RlKToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZSk6CisgICAgICAgIChKU0M6Ok9i
amVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZSk6CisgICAgICAgIChKU0M6OkJyYWNr
ZXRBY2Nlc3Nvck5vZGU6OkJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoSlNDOjpEb3RB
Y2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZSk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50TGlz
dE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoSlNDOjpOZXdFeHByTm9kZTo6TmV3
RXhwck5vZGUpOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0
aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OkZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2Rl
OjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJy
YWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoSlNDOjpDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAo
SlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZSk6
CisgICAgICAgIChKU0M6OlByZVBvc3RSZXNvbHZlTm9kZTo6UHJlUG9zdFJlc29sdmVOb2RlKToK
KyAgICAgICAgKEpTQzo6UG9zdGZpeFJlc29sdmVOb2RlOjpQb3N0Zml4UmVzb2x2ZU5vZGUpOgor
ICAgICAgICAoSlNDOjpQb3N0Zml4QnJhY2tldE5vZGU6OlBvc3RmaXhCcmFja2V0Tm9kZSk6Cisg
ICAgICAgIChKU0M6OlBvc3RmaXhEb3ROb2RlOjpQb3N0Zml4RG90Tm9kZSk6CisgICAgICAgIChK
U0M6OlBvc3RmaXhFcnJvck5vZGU6OlBvc3RmaXhFcnJvck5vZGUpOgorICAgICAgICAoSlNDOjpE
ZWxldGVSZXNvbHZlTm9kZTo6RGVsZXRlUmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpEZWxl
dGVCcmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVE
b3ROb2RlOjpEZWxldGVEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlVmFsdWVOb2RlOjpE
ZWxldGVWYWx1ZU5vZGUpOgorICAgICAgICAoSlNDOjpWb2lkTm9kZTo6Vm9pZE5vZGUpOgorICAg
ICAgICAoSlNDOjpUeXBlT2ZSZXNvbHZlTm9kZTo6VHlwZU9mUmVzb2x2ZU5vZGUpOgorICAgICAg
ICAoSlNDOjpUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6
OlByZWZpeFJlc29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlBy
ZWZpeEJyYWNrZXROb2RlOjpQcmVmaXhCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OlByZWZp
eERvdE5vZGU6OlByZWZpeERvdE5vZGUpOgorICAgICAgICAoSlNDOjpQcmVmaXhFcnJvck5vZGU6
OlByZWZpeEVycm9yTm9kZSk6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjpVbmFyeU9wTm9k
ZSk6CisgICAgICAgIChKU0M6OlVuYXJ5UGx1c05vZGU6OlVuYXJ5UGx1c05vZGUpOgorICAgICAg
ICAoSlNDOjpOZWdhdGVOb2RlOjpOZWdhdGVOb2RlKToKKyAgICAgICAgKEpTQzo6Qml0d2lzZU5v
dE5vZGU6OkJpdHdpc2VOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6TG9naWNhbE5vdE5vZGU6Okxv
Z2ljYWxOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUp
OgorICAgICAgICAoSlNDOjpNdWx0Tm9kZTo6TXVsdE5vZGUpOgorICAgICAgICAoSlNDOjpEaXZO
b2RlOjpEaXZOb2RlKToKKyAgICAgICAgKEpTQzo6TW9kTm9kZTo6TW9kTm9kZSk6CisgICAgICAg
IChKU0M6OkFkZE5vZGU6OkFkZE5vZGUpOgorICAgICAgICAoSlNDOjpTdWJOb2RlOjpTdWJOb2Rl
KToKKyAgICAgICAgKEpTQzo6TGVmdFNoaWZ0Tm9kZTo6TGVmdFNoaWZ0Tm9kZSk6CisgICAgICAg
IChKU0M6OlJpZ2h0U2hpZnROb2RlOjpSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OlVu
c2lnbmVkUmlnaHRTaGlmdE5vZGU6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAo
SlNDOjpMZXNzTm9kZTo6TGVzc05vZGUpOgorICAgICAgICAoSlNDOjpHcmVhdGVyTm9kZTo6R3Jl
YXRlck5vZGUpOgorICAgICAgICAoSlNDOjpMZXNzRXFOb2RlOjpMZXNzRXFOb2RlKToKKyAgICAg
ICAgKEpTQzo6R3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9kZSk6CisgICAgICAgIChKU0M6OlRo
cm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlKToKKyAgICAgICAgKEpT
Qzo6SW5zdGFuY2VPZk5vZGU6Okluc3RhbmNlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6SW5Ob2Rl
OjpJbk5vZGUpOgorICAgICAgICAoSlNDOjpFcXVhbE5vZGU6OkVxdWFsTm9kZSk6CisgICAgICAg
IChKU0M6Ok5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKToKKyAgICAgICAgKEpTQzo6U3RyaWN0
RXF1YWxOb2RlOjpTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoSlNDOjpOb3RTdHJpY3RFcXVh
bE5vZGU6Ok5vdFN0cmljdEVxdWFsTm9kZSk6CisgICAgICAgIChKU0M6OkJpdEFuZE5vZGU6OkJp
dEFuZE5vZGUpOgorICAgICAgICAoSlNDOjpCaXRPck5vZGU6OkJpdE9yTm9kZSk6CisgICAgICAg
IChKU0M6OkJpdFhPck5vZGU6OkJpdFhPck5vZGUpOgorICAgICAgICAoSlNDOjpMb2dpY2FsT3BO
b2RlOjpMb2dpY2FsT3BOb2RlKToKKyAgICAgICAgKEpTQzo6Q29uZGl0aW9uYWxOb2RlOjpDb25k
aXRpb25hbE5vZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRN
b2RpZnlSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjpBc3Np
Z25SZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6UmVh
ZE1vZGlmeUJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduQnJhY2tldE5vZGU6OkFz
c2lnbkJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90
Tm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkVycm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKToKKyAg
ICAgICAgKEpTQzo6Q29tbWFOb2RlOjpDb21tYU5vZGUpOgorICAgICAgICAoSlNDOjpDb25zdFN0
YXRlbWVudE5vZGU6OkNvbnN0U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6OkVtcHR5U3Rh
dGVtZW50Tm9kZTo6RW1wdHlTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJT
dGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpFeHBy
U3RhdGVtZW50Tm9kZTo6RXhwclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0
ZW1lbnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6SWZOb2RlOjpJZk5v
ZGUpOgorICAgICAgICAoSlNDOjpJZkVsc2VOb2RlOjpJZkVsc2VOb2RlKToKKyAgICAgICAgKEpT
Qzo6RG9XaGlsZU5vZGU6OkRvV2hpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6V2hpbGVOb2RlOjpX
aGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjpGb3JOb2RlKToKKyAgICAgICAgKEpT
Qzo6Q29udGludWVOb2RlOjpDb250aW51ZU5vZGUpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6
OkJyZWFrTm9kZSk6CisgICAgICAgIChKU0M6OlJldHVybk5vZGU6OlJldHVybk5vZGUpOgorICAg
ICAgICAoSlNDOjpXaXRoTm9kZTo6V2l0aE5vZGUpOgorICAgICAgICAoSlNDOjpMYWJlbE5vZGU6
OkxhYmVsTm9kZSk6CisgICAgICAgIChKU0M6OlRocm93Tm9kZTo6VGhyb3dOb2RlKToKKyAgICAg
ICAgKEpTQzo6VHJ5Tm9kZTo6VHJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmNFeHByTm9kZTo6
RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUp
OgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKToKKyAgICAgICAgKEpTQzo6
Q29uc3REZWNsTm9kZTo6Q29uc3REZWNsTm9kZSk6CisgICAgICAgIChKU0M6OkJsb2NrTm9kZTo6
QmxvY2tOb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjpGb3JJbk5vZGUpOgorICAgICAg
ICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OnNldExv
Yyk6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6U2NvcGVOb2RlKToKKyAgICAgICAgKEpTQzo6
UHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkV2YWxOb2RlOjpFdmFsTm9kZSk6CisgICAgICAgIChKU0M6
OkV2YWxOb2RlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpGdW5j
dGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlND
OjpOb2RlOjpjb2x1bW5Obyk6CisgICAgICAgIChFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChT
dGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6Y29sdW1uKToKKyAg
ICAgICAgKE51bGxOb2RlKToKKyAgICAgICAgKEJvb2xlYW5Ob2RlKToKKyAgICAgICAgKE51bWJl
ck5vZGUpOgorICAgICAgICAoU3RyaW5nTm9kZSk6CisgICAgICAgIChSZWdFeHBOb2RlKToKKyAg
ICAgICAgKFRoaXNOb2RlKToKKyAgICAgICAgKFJlc29sdmVOb2RlKToKKyAgICAgICAgKEFycmF5
Tm9kZSk6CisgICAgICAgIChQcm9wZXJ0eUxpc3ROb2RlKToKKyAgICAgICAgKE9iamVjdExpdGVy
YWxOb2RlKToKKyAgICAgICAgKEJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoRG90QWNj
ZXNzb3JOb2RlKToKKyAgICAgICAgKEFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoTmV3RXhw
ck5vZGUpOgorICAgICAgICAoRXZhbEZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoRnVuY3Rp
b25DYWxsVmFsdWVOb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKToKKyAg
ICAgICAgKEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbERv
dE5vZGUpOgorICAgICAgICAoQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKFByZVBvc3RSZXNvbHZlTm9kZSk6Cisg
ICAgICAgIChQb3N0Zml4UmVzb2x2ZU5vZGUpOgorICAgICAgICAoUG9zdGZpeEJyYWNrZXROb2Rl
KToKKyAgICAgICAgKFBvc3RmaXhEb3ROb2RlKToKKyAgICAgICAgKFBvc3RmaXhFcnJvck5vZGUp
OgorICAgICAgICAoRGVsZXRlUmVzb2x2ZU5vZGUpOgorICAgICAgICAoRGVsZXRlQnJhY2tldE5v
ZGUpOgorICAgICAgICAoRGVsZXRlRG90Tm9kZSk6CisgICAgICAgIChEZWxldGVWYWx1ZU5vZGUp
OgorICAgICAgICAoVm9pZE5vZGUpOgorICAgICAgICAoVHlwZU9mUmVzb2x2ZU5vZGUpOgorICAg
ICAgICAoVHlwZU9mVmFsdWVOb2RlKToKKyAgICAgICAgKFByZWZpeFJlc29sdmVOb2RlKToKKyAg
ICAgICAgKFByZWZpeEJyYWNrZXROb2RlKToKKyAgICAgICAgKFByZWZpeERvdE5vZGUpOgorICAg
ICAgICAoUHJlZml4RXJyb3JOb2RlKToKKyAgICAgICAgKFVuYXJ5T3BOb2RlKToKKyAgICAgICAg
KFVuYXJ5UGx1c05vZGUpOgorICAgICAgICAoTmVnYXRlTm9kZSk6CisgICAgICAgIChCaXR3aXNl
Tm90Tm9kZSk6CisgICAgICAgIChMb2dpY2FsTm90Tm9kZSk6CisgICAgICAgIChCaW5hcnlPcE5v
ZGUpOgorICAgICAgICAoTXVsdE5vZGUpOgorICAgICAgICAoRGl2Tm9kZSk6CisgICAgICAgIChN
b2ROb2RlKToKKyAgICAgICAgKEFkZE5vZGUpOgorICAgICAgICAoU3ViTm9kZSk6CisgICAgICAg
IChMZWZ0U2hpZnROb2RlKToKKyAgICAgICAgKFJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKFVu
c2lnbmVkUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAoTGVzc05vZGUpOgorICAgICAgICAoR3Jl
YXRlck5vZGUpOgorICAgICAgICAoTGVzc0VxTm9kZSk6CisgICAgICAgIChHcmVhdGVyRXFOb2Rl
KToKKyAgICAgICAgKFRocm93YWJsZUJpbmFyeU9wTm9kZSk6CisgICAgICAgIChJbnN0YW5jZU9m
Tm9kZSk6CisgICAgICAgIChJbk5vZGUpOgorICAgICAgICAoRXF1YWxOb2RlKToKKyAgICAgICAg
KE5vdEVxdWFsTm9kZSk6CisgICAgICAgIChTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoTm90
U3RyaWN0RXF1YWxOb2RlKToKKyAgICAgICAgKEJpdEFuZE5vZGUpOgorICAgICAgICAoQml0T3JO
b2RlKToKKyAgICAgICAgKEJpdFhPck5vZGUpOgorICAgICAgICAoTG9naWNhbE9wTm9kZSk6Cisg
ICAgICAgIChDb25kaXRpb25hbE5vZGUpOgorICAgICAgICAoUmVhZE1vZGlmeVJlc29sdmVOb2Rl
KToKKyAgICAgICAgKEFzc2lnblJlc29sdmVOb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlCcmFj
a2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25CcmFja2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25E
b3ROb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKEFzc2lnbkVy
cm9yTm9kZSk6CisgICAgICAgIChDb21tYU5vZGUpOgorICAgICAgICAoQ29uc3REZWNsTm9kZSk6
CisgICAgICAgIChDb25zdFN0YXRlbWVudE5vZGUpOgorICAgICAgICAoQmxvY2tOb2RlKToKKyAg
ICAgICAgKEVtcHR5U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChEZWJ1Z2dlclN0YXRlbWVudE5v
ZGUpOgorICAgICAgICAoRXhwclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoVmFyU3RhdGVtZW50
Tm9kZSk6CisgICAgICAgIChJZk5vZGUpOgorICAgICAgICAoSWZFbHNlTm9kZSk6CisgICAgICAg
IChEb1doaWxlTm9kZSk6CisgICAgICAgIChXaGlsZU5vZGUpOgorICAgICAgICAoRm9yTm9kZSk6
CisgICAgICAgIChGb3JJbk5vZGUpOgorICAgICAgICAoQ29udGludWVOb2RlKToKKyAgICAgICAg
KEJyZWFrTm9kZSk6CisgICAgICAgIChSZXR1cm5Ob2RlKToKKyAgICAgICAgKFdpdGhOb2RlKToK
KyAgICAgICAgKExhYmVsTm9kZSk6CisgICAgICAgIChUaHJvd05vZGUpOgorICAgICAgICAoVHJ5
Tm9kZSk6CisgICAgICAgIChTY29wZU5vZGUpOgorICAgICAgICAoUHJvZ3JhbU5vZGUpOgorICAg
ICAgICAoRXZhbE5vZGUpOgorICAgICAgICAoRnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAgICAgIChG
dW5jRXhwck5vZGUpOgorICAgICAgICAoRnVuY0RlY2xOb2RlKToKKyAgICAgICAgKFN3aXRjaE5v
ZGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6OnBhcnNl
VmFyRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29uc3REZWNsYXJhdGlvbik6
CisgICAgICAgIChKU0M6Ojo6cGFyc2VEb1doaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZVdoaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVZhckRlY2xhcmF0
aW9uTGlzdCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25zdERlY2xhcmF0aW9uTGlzdCk6Cisg
ICAgICAgIChKU0M6Ojo6cGFyc2VGb3JTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNl
QnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29udGludWVTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjo6OnBhcnNlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZVRocm93U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVdpdGhTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZVRyeVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VEZWJ1Z2dlclN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VCbG9ja1N0YXRlbWVudCk6CisgICAgICAg
IChKU0M6Ojo6cGFyc2VTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlRnVuY3Rpb25C
b2R5KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJl
c3Npb25PckxhYmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJlc3Npb25T
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlSWZTdGF0ZW1lbnQpOgorICAgICAgICAo
SlNDOjo6OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjo6OnBhcnNlQmluYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VPYmplY3RMaXRlcmFsKToK
KyAgICAgICAgKEpTQzo6OjpwYXJzZVN0cmljdE9iamVjdExpdGVyYWwpOgorICAgICAgICAoSlND
Ojo6OnBhcnNlQXJyYXlMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVByaW1hcnlFeHBy
ZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVVuYXJ5RXhw
cmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQYXJz
ZXI6OnRva2VuQ29sdW1uKToKKyAgICAgICAgKFBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNl
cjo6Z2V0VG9rZW5OYW1lKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZSk6CisgICAgICAgICogcGFy
c2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAoSlNDOjpKU1Rva2VuSW5mbzo6SlNUb2tlbklu
Zm8pOgorICAgICAgICAoSlNUb2tlbkluZm8pOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVj
a2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2Rl
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ29tbWFFeHByKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjptYWtlUHJlZml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6Om1ha2VQb3N0Zml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VU
eXBlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZURlbGV0ZU5vZGUp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlTmVnYXRlTm9kZSk6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VCaXR3aXNlTm90Tm9kZSk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpTeW50YXhD
aGVja2VyOjpjcmVhdGVVbmFyeVBsdXMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVWb2lkKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6dGhpc0V4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUFycmF5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlTnVtYmVyRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN0cmlu
Zyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJvb2xlYW4pOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOdWxsKToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQnJhY2tldEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZVJlZ0V4cCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU5ld0V4cHIpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDb25kaXRpb25hbEV4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVBc3NpZ25SZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQXJndW1lbnRzTGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZVByb3BlcnR5TGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OnNl
dFVzZXNBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5j
RGVjbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJsb2Nr
U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRXhwclN0YXRl
bWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUlmU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRm9yTG9vcCk6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUVtcHR5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlVmFyU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlQnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVD
b250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRy
eVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN3aXRjaFN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVdoaWxlU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlV2l0aFN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6CisgICAg
ICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRocm93U3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRGVidWdnZXIpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVDb25zdFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENo
ZWNrZXI6OmFwcGVuZENvbnN0RGVjbCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2Vy
Ojpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJh
dG9yU3RhY2tQb3ApOgorCiAyMDEyLTA2LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgSlNDIHNob3VsZCB0cnkgdG8gbWFrZSBwcm9maWxpbmcgZGV0ZXJtaW5p
c3RpYyBiZWNhdXNlIG90aGVyd2lzZSByZXByb2R1Y2luZyBmYWlsdXJlcyBpcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDQ2ZGYxMDQ2MWMzYWVkMDUxNWQxODAzMTQ4NmQzMDRkY2RjMzQ5OWEuLmIxNWFjYjgxNjE1
YmRjNmQ5NzMwZmY3NDIwNWJmN2QxNWQ4N2UxOGMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBA
QAorMjAxMi0wNy0wMSAgUGV0ZXIgV2FuZyAgPHBldGVyLndhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtKU0NdIGltcGxlbWVudCBzZXR0aW5nIGJyZWFr
cG9pbnRzIGJ5IGxpbmU6Y29sdW1uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MzAwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0IGNhc2UgZm9yIHRoaXMgYnVnLiAoT09QUyEpCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6Omhh
c0JyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNyZWF0
ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpleGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OndpbGxFeGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZl
cjo6ZGlkRXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2
ZXI6OmRpZFJlYWNoQnJlYWtwb2ludCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToKKwogMjAxMi0wNi0yNiAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVmYWN0b3Jpbmc6
IFNpbXBsaWZ5IEZvcm1Db250cm9sbGVyIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCmluZGV4IGUwY2ZmMTY1YTg4YzkzM2E1ODgzMDM4NmNiNTgxOGE2ZmU3
YTEzMWEuLjUyNjIyY2Q3YThjNWI5NDFjM2Y1NGU3YTEwNDU3MTAyMTQ1NGY2MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKQEAgLTE5MCw3ICsxOTAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfdGhyb3csIDIpIFwKICAgICAgICAgbWFjcm8o
b3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yLCAyKSBcCiAgICAgICAgIFwKLSAgICAgICAgbWFjcm8o
b3BfZGVidWcsIDQpIFwKKyAgICAgICAgbWFjcm8ob3BfZGVidWcsIDUpIFwKICAgICAgICAgbWFj
cm8ob3BfcHJvZmlsZV93aWxsX2NhbGwsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfcHJvZmlsZV9k
aWRfY2FsbCwgMikgXAogICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDg5NjlhN2YyNWIy
N2U5ZmNlOTY1NTBhZWQ1NWYxMjczYzA0N2UyZmEuLjI5N2IwMDgyM2MwMTI2NjNlZDNhZGYwNjc3
ZmZlYTk2Y2I0OTgwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yMDM3LDcgKzIwMzcsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UG9wU2NvcGUoKQogICAgIG1fZHluYW1pY1Njb3Bl
RGVwdGgtLTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1
Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQordm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwg
aW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKQogewogI2lmIEVOQUJMRShE
RUJVR19XSVRIX0JSRUFLUE9JTlQpCiAgICAgaWYgKGRlYnVnSG9va0lEICE9IERpZFJlYWNoQnJl
YWtwb2ludCkKQEAgLTIwNTAsNiArMjA1MCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREZWJ1Z0hvb2soRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGluCiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRlYnVnSG9va0lEKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZmlyc3RMaW5lKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGFzdExpbmUp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjb2x1bW4pOwogfQogCiB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpwdXNoRmluYWxseUNvbnRleHQoU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2Nr
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCmluZGV4IDhiMWQxZDc0NGJhMmE5MmI0NDI2ZjczMGExZGMzOGQyM2Y3YjA3
ODkuLmIxNGI3MGFmZjFlZTI2MDJkNDNjMTE0YzI4ZGI1NGExN2U0ZmQzYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKQEAgLTUwNiw3ICs1MDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1c2hTY29wZShSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQgZW1pdFBv
cFNjb3BlKCk7CiAKLSAgICAgICAgdm9pZCBlbWl0RGVidWdIb29rKERlYnVnSG9va0lELCBpbnQg
Zmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAgICB2b2lkIGVtaXREZWJ1Z0hvb2soRGVi
dWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVtbik7CiAKICAg
ICAgICAgaW50IHNjb3BlRGVwdGgoKSB7IHJldHVybiBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9m
aW5hbGx5RGVwdGg7IH0KICAgICAgICAgYm9vbCBoYXNGaW5hbGlzZXIoKSB7IHJldHVybiBtX2Zp
bmFsbHlEZXB0aCAhPSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDI0M2U4Y2UwMDg0OWI1NTJkOThkYjA1MDFj
MzY5YTQxNWQyZWQwYS4uYzFiN2Y1NGFiNWIwZWM2ZTAwOTY3YzA5NGU2ZmEyMjVmNDRhMzkxMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcApAQCAtMjAyLDE4ICsyMDIsMTggQEAgYm9vbCBBcnJheU5vZGU6OmlzU2ltcGxlQXJy
YXkoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1Bcmd1bWVudExpc3ROb2RlKiBBcnJh
eU5vZGU6OnRvQXJndW1lbnRMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVO
dW1iZXIpIGNvbnN0CitBcmd1bWVudExpc3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2VsaXNpb24gJiYgIW1fb3B0aW9uYWwpOwogICAg
IEVsZW1lbnROb2RlKiBwdHIgPSBtX2VsZW1lbnQ7CiAgICAgaWYgKCFwdHIpCiAgICAgICAgIHJl
dHVybiAwOwotICAgIEFyZ3VtZW50TGlzdE5vZGUqIGhlYWQgPSBuZXcgKGdsb2JhbERhdGEpIEFy
Z3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgcHRyLT52YWx1ZSgpKTsKKyAgICBBcmd1bWVudExp
c3ROb2RlKiBoZWFkID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgcHRyLT52YWx1ZSgpKTsKICAgICBBcmd1bWVudExpc3ROb2RlKiB0
YWlsID0gaGVhZDsKICAgICBwdHIgPSBwdHItPm5leHQoKTsKICAgICBmb3IgKDsgcHRyOyBwdHIg
PSBwdHItPm5leHQoKSkgewogICAgICAgICBBU1NFUlQoIXB0ci0+ZWxpc2lvbigpKTsKLSAgICAg
ICAgdGFpbCA9IG5ldyAoZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVtYmVyLCB0
YWlsLCBwdHItPnZhbHVlKCkpOworICAgICAgICB0YWlsID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1
bWVudExpc3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdGFpbCwgcHRyLT52YWx1ZSgp
KTsKICAgICB9CiAgICAgcmV0dXJuIGhlYWQ7CiB9CkBAIC01MzYsNyArNTM2LDcgQEAgUmVnaXN0
ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9kZSo+KG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50TGlzdChnZW5lcmF0
b3IuZ2xvYmFsRGF0YSgpLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3RO
b2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQt
Pm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci5nbG9iYWxEYXRhKCksIDAsIDApOwog
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQo
KSk7CiAgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwpAQCAtMTEyOCw2
ICsxMTI4LDggQEAgUmVnaXN0ZXJJRCogQ29uZGl0aW9uYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKICAgICBSZWZQdHI8TGFiZWw+IGJl
Zm9yZUVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGFmdGVy
RWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogCisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxpbmVObygpLCBsaW5lTm8oKSwgY29sdW1uTm8oKSk7
CisKICAgICBpZiAobV9sb2dpY2FsLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKSB7CiAg
ICAgICAgIFJlZlB0cjxMYWJlbD4gYmVmb3JlVGhlbiA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9sb2dpY2FsLCBi
ZWZvcmVUaGVuLmdldCgpLCBiZWZvcmVFbHNlLmdldCgpLCB0cnVlKTsKQEAgLTEzODUsNyArMTM4
Nyw3IEBAIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIFJlZ2lzdGVySUQqIENvbnN0U3RhdGVt
ZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShtX25leHQpOwogfQogCkBAIC0xNDI4
LDcgKzE0MzAsNyBAQCBSZWdpc3RlcklEKiBCbG9ja05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogCiBSZWdpc3RlcklEKiBFbXB0
eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0xNDM2LDcgKzE0MzgsNyBA
QCBSZWdpc3RlcklEKiBFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpcwogCiBSZWdpc3RlcklEKiBEZWJ1Z2dlclN0YXRlbWVu
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkUmVhY2hCcmVha3Bv
aW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soRGlkUmVhY2hCcmVha3BvaW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkp
OwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTE0NDUsNyArMTQ0Nyw3IEBAIFJlZ2lzdGVySUQq
IERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlCiBSZWdpc3RlcklEKiBFeHByU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBB
U1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOyAKKyAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNv
bHVtbigpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9leHByKTsKIH0K
IApAQCAtMTQ1NCw3ICsxNDU2LDcgQEAgUmVnaXN0ZXJJRCogRXhwclN0YXRlbWVudE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIFJlZ2lzdGVy
SUQqIFZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKICAgICBBU1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50
LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdE5vZGUobV9leHByKTsKIH0KIApAQCAtMTQ2Miw3ICsxNDY0LDcgQEAgUmVnaXN0ZXJJ
RCogVmFyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGUKIAogUmVnaXN0ZXJJRCogSWZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQs
IGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPExh
YmVsPiBhZnRlclRoZW4gPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIApAQCAtMTQ4Niw3ICsxNDg4
LDcgQEAgUmVnaXN0ZXJJRCogSWZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiBSZWdpc3RlcklEKiBJZkVsc2VOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAg
ICAgCiAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVFbHNlID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
CiAgICAgUmVmUHRyPExhYmVsPiBhZnRlckVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKQEAg
LTE1MjIsMTIgKzE1MjQsMTEgQEAgUmVnaXN0ZXJJRCogRG9XaGlsZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgIFJlZlB0cjxM
YWJlbD4gdG9wT2ZMb29wID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbCh0b3BPZkxvb3AuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TG9vcEhpbnQoKTsK
LSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCkpOwogICAgCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9
IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxp
bmVObygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGlmIChtX2V4cHItPmhh
c0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUlu
Q29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFy
Z2V0KCksIGZhbHNlKTsKICAgICBlbHNlIHsKQEAgLTE1NDYsNyArMTU0Nyw3IEBAIFJlZ2lzdGVy
SUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3BlID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CiAgICAgUmVmUHRyPExhYmVsPiB0b3BP
Zkxvb3AgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxpbmVO
bygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
bV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5jb2x1bW5ObygpKTsK
ICAgICBpZiAobV9leHByLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKQogICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxvb3AuZ2V0
KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCB0cnVlKTsKICAgICBlbHNlIHsKQEAgLTE1NjAsNyAr
MTU2MSw3IEBAIFJlZ2lzdGVySUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29u
dGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIG1fZXhwci0+bGluZU5vKCksIG1fZXhwci0+bGluZU5vKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAgaWYgKG1fZXhwci0+aGFzQ29uZGl0aW9uQ29udGV4
dENvZGVnZW4oKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0
KG1fZXhwciwgdG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgZmFsc2UpOwpA
QCAtMTU4MSw3ICsxNTgyLDcgQEAgUmVnaXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBSZWZQ
dHI8TGFiZWxTY29wZT4gc2NvcGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3Bl
OjpMb29wKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAKICAgICBpZiAobV9leHByMSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjEpOwpAQCAtMTYwMiw3ICsxNjAzLDcgQEAgUmVn
aXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRM
YWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICBpZiAobV9leHByMykKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjMpOwogCkBAIC0x
NjI5LDcgKzE2MzAsNyBAQCBSZWdpc3RlcklEKiBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAgIGlmICghbV9sZXhw
ci0+aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gZW1pdFRocm93UmVmZXJlbmNlRXJyb3Io
Z2VuZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGZvci1pbiBzdGF0ZW1lbnQgaXMgbm90IGEgcmVmZXJl
bmNlLiIpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigp
KTsKIAogICAgIGlmIChtX2luaXQpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpLCBtX2luaXQpOwpAQCAtMTY5Miw3ICsxNjkzLDcgQEAgUmVnaXN0
ZXJJRCogRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHMKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRp
bnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TmV4dFByb3BlcnR5TmFtZShwcm9wZXJ0
eU5hbWUsIGJhc2UuZ2V0KCksIGkuZ2V0KCksIHNpemUuZ2V0KCksIGl0ZXIuZ2V0KCksIGxvb3BT
dGFydC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0
ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVt
bigpKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKICAg
ICByZXR1cm4gZHN0OwogfQpAQCAtMTcwMiw3ICsxNzAzLDcgQEAgUmVnaXN0ZXJJRCogRm9ySW5O
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHMKIC8vIEVDTUEgMTIuNwogUmVnaXN0ZXJJRCogQ29udGludWVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAg
TGFiZWxTY29wZSogc2NvcGUgPSBnZW5lcmF0b3IuY29udGludWVUYXJnZXQobV9pZGVudCk7CiAg
ICAgQVNTRVJUKHNjb3BlKTsKQEAgLTE3MTYsNyArMTcxNyw3IEBAIFJlZ2lzdGVySUQqIENvbnRp
bnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqCiAvLyBFQ01BIDEyLjgKIFJlZ2lzdGVySUQqIEJyZWFrTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIAogICAgIExh
YmVsU2NvcGUqIHNjb3BlID0gZ2VuZXJhdG9yLmJyZWFrVGFyZ2V0KG1faWRlbnQpOwogICAgIEFT
U0VSVChzY29wZSk7CkBAIC0xNzI5LDcgKzE3MzAsNyBAQCBSZWdpc3RlcklEKiBCcmVha05vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
cwogCiBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgQVNTRVJUKGdlbmVyYXRvci5jb2RlVHlw
ZSgpID09IEZ1bmN0aW9uQ29kZSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpCkBAIC0xNzQ1LDcgKzE3NDYsNyBAQCBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAog
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBTY29wZXMobDAuZ2V0KCksIDApOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKGwwLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFJldHVy
bihyMCk7CiB9CiAKQEAgLTE3NTMsNyArMTc1NCw3IEBAIFJlZ2lzdGVySUQqIFJldHVybk5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
CiAKIFJlZ2lzdGVySUQqIFdpdGhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNj
b3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShz
Y29wZS5nZXQoKSwgbV9leHByKTsgLy8gc2NvcGUgbXVzdCBiZSBwcm90ZWN0ZWQgdW50aWwgcG9w
cGVkCkBAIC0xOTE4LDcgKzE5MTksNyBAQCBSZWdpc3RlcklEKiBDYXNlQmxvY2tOb2RlOjplbWl0
Qnl0ZWNvZGVGb3JCbG9jayhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogCiBSZWdp
c3RlcklEKiBTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdp
bGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0
TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3BlID0g
Z2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6U3dpdGNoKTsKIApAQCAtMTkzMyw3
ICsxOTM0LDcgQEAgUmVnaXN0ZXJJRCogU3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAogUmVnaXN0ZXJJRCogTGFiZWxO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAKICAgICBBU1NFUlQoIWdlbmVyYXRvci5icmVha1RhcmdldChtX25hbWUpKTsKIApAQCAt
MTk0OCw3ICsxOTQ5LDcgQEAgUmVnaXN0ZXJJRCogTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCog
VGhyb3dOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBj
b2x1bW4oKSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAg
ICAgICAgIGRzdCA9IDA7CkBAIC0xOTY1LDcgKzE5NjYsNyBAQCBSZWdpc3RlcklEKiBUcnlOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogICAgIC8vIE5PVEU6IFRoZSBjYXRjaCBhbmQgZmluYWxseSBibG9ja3MgbXVzdCBiZSBs
YWJlbGVkIGV4cGxpY2l0bHksIHNvIHRoZQogICAgIC8vIG9wdGltaXplciBrbm93cyB0aGV5IG1h
eSBiZSBqdW1wZWQgdG8gZnJvbSBhbnl3aGVyZS4KIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBSZWZQdHI8TGFiZWw+IHRyeVN0YXJ0TGFi
ZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBpZiAobV9maW5hbGx5QmxvY2spCkBAIC0y
MDIyLDEzICsyMDIzLDEzIEBAIGlubGluZSB2b2lkIFNjb3BlTm9kZTo6ZW1pdFN0YXRlbWVudHNC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAKIFJlZ2lzdGVySUQq
IFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQ
cm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1u
KCkpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRzdFJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0TG9hZChkc3RSZWdpc3Rlci5nZXQoKSwg
anNVbmRlZmluZWQoKSk7CiAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGRz
dFJlZ2lzdGVyLmdldCgpKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1
dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1
bW4oKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFbmQoZHN0UmVnaXN0ZXIuZ2V0KCkpOwogICAgIHJl
dHVybiAwOwogfQpAQCAtMjAzNywxMyArMjAzOCwxMyBAQCBSZWdpc3RlcklEKiBQcm9ncmFtTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
KQogCiBSZWdpc3RlcklEKiBFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCksIGNvbHVtbigpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkc3RSZWdpc3RlciA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQoZHN0UmVn
aXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUo
Z2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY29sdW1uKCkpOwogICAgIGdlbmVyYXRvci5lbWl0RW5kKGRzdFJlZ2lzdGVyLmdl
dCgpKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTIwNTIsNyArMjA1Myw3IEBAIFJlZ2lzdGVySUQq
IEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCopCiAKIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQm9keU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1lLCBmaXJz
dExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNv
ZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAogICAgIFN0YXRlbWVu
dE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOwpAQCAtMjA2
OCw3ICsyMDY5LDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAvLyBJZiB0aGVyZSBp
cyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCiAgICAgaWYgKCFy
ZXR1cm5Ob2RlKSB7CiAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3Ry
dWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgw
LCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExl
YXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5oCmluZGV4IGEyMzczMjkxODc4MDNlZGE5NTdhMzdkM2EwYTkwN2FmZjBiODkyMzIuLjg1NTU3
ZTI2MTA3ODdjMWE1Yzg2ZjA3MjZlMzVkMjUxM2EwMWZmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC00MiwxNCArNDIsMTQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3QqKTsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEV4ZWNTdGF0ZSosIFNvdXJjZVByb3ZpZGVy
KiwgaW50IGVycm9yTGluZU51bWJlciwgY29uc3QgVVN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUm
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFuZGxlcikgPSAw
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmV0dXJu
RXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihjb25zdCBEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgYm9vbCBoYXNIYW5kbGVyKSB7IH07CisgICAgICAgIHZpcnR1YWwgdm9pZCBh
dFN0YXRlbWVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgeyB9OworICAgICAgICB2aXJ0dWFsIHZv
aWQgY2FsbEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKSB7IH07CisgICAgICAgIHZpcnR1YWwg
dm9pZCByZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgeyB9OwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qg
c291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxFeGVjdXRl
UHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgeyB9OworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3Vy
Y2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpIHsgfTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgeyB9Owog
CiAgICAgICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoSlNHbG9iYWxEYXRhKik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CmluZGV4IGI4NjEwZTdiZmJjODVlODE3YzE5ZTljZDg2MTEwYjgxYmQ0ZTkwMWIuLjMwZDI4N2Zk
NDgxMGQ2NWFjYzAwYjU2NzllNTdlZDA0OWEzYjgwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNzEyLDkgKzcxMiw5IEBA
IE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUoQ2FsbEZyYW1l
KiYgY2FsbEZyYW1lLCBKU1ZhbHVlIGV4CiAgICAgaWYgKERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNh
bGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKSB7CiAgICAgICAgIERl
YnVnZ2VyQ2FsbEZyYW1lIGRlYnVnZ2VyQ2FsbEZyYW1lKGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFs
dWUpOwogICAgICAgICBpZiAoY2FsbEZyYW1lLT5jYWxsZWUoKSkKLSAgICAgICAgICAgIGRlYnVn
Z2VyLT5yZXR1cm5FdmVudChkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bGFzdExp
bmUoKSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+cmV0dXJuRXZlbnQoZGVidWdnZXJDYWxsRnJh
bWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCktPmxhc3RMaW5lKCksIDApOwogICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBkZWJ1Z2dlci0+ZGlkRXhlY3V0ZVByb2dyYW0oZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCktPmxhc3RMaW5lKCkpOworICAgICAgICAgICAgZGVidWdnZXItPmRpZEV4ZWN1dGVQ
cm9ncmFtKGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5z
b3VyY2VJRCgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5sYXN0TGluZSgpLCAwKTsK
ICAgICB9CiAKICAgICAvLyBJZiB0aGlzIGNhbGwgZnJhbWUgY3JlYXRlZCBhbiBhY3RpdmF0aW9u
IG9yIGFuICdhcmd1bWVudHMnIG9iamVjdCwgdGVhciBpdCBvZmYuCkBAIC0xMDM2LDcgKzEwMzYs
NyBAQCBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0aHJvd0V4Y2VwdGlv
bihDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVgogICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIg
PSBjYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkgewogICAgICAg
ICBEZWJ1Z2dlckNhbGxGcmFtZSBkZWJ1Z2dlckNhbGxGcmFtZShjYWxsRnJhbWUsIGV4Y2VwdGlv
blZhbHVlKTsKICAgICAgICAgYm9vbCBoYXNIYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICBkZWJ1Z2dlci0+ZXhjZXB0
aW9uKGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3Vy
Y2VJRCgpLCBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCksIGhhc0hhbmRsZXIpOworICAgICAgICBkZWJ1Z2dlci0+ZXhjZXB0aW9uKGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBjb2Rl
QmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCksIDAsIGhh
c0hhbmRsZXIpOwogICAgIH0KIAogICAgIC8vIENhbGN1bGF0ZSBhbiBleGNlcHRpb24gaGFuZGxl
ciB2UEMsIHVud2luZGluZyBjYWxsIGZyYW1lcyBhcyBuZWNlc3NhcnkuCkBAIC0xNjI0LDcgKzE2
MjQsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFs
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZQogICAgIHJldHVybiBjaGVja2VkUmV0dXJu
KHJlc3VsdCk7CiB9CiAKLU5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUs
IGludCBsYXN0TGluZSkKK05FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUs
IGludCBsYXN0TGluZSwgaW50IGNvbHVtbikKIHsKICAgICBEZWJ1Z2dlciogZGVidWdnZXIgPSBj
YWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKICAgICBpZiAoIWRl
YnVnZ2VyKQpAQCAtMTYzMiwyMiArMTYzMiwyMiBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnBy
ZXRlcjo6ZGVidWcoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIERlYnVnSG9va0lEIGRlYnVnSG9vawog
CiAgICAgc3dpdGNoIChkZWJ1Z0hvb2tJRCkgewogICAgICAgICBjYXNlIERpZEVudGVyQ2FsbEZy
YW1lOgotICAgICAgICAgICAgZGVidWdnZXItPmNhbGxFdmVudChjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJzdExpbmUp
OworICAgICAgICAgICAgZGVidWdnZXItPmNhbGxFdmVudChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJzdExpbmUsIGNv
bHVtbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgV2lsbExlYXZlQ2FsbEZy
YW1lOgotICAgICAgICAgICAgZGVidWdnZXItPnJldHVybkV2ZW50KGNhbGxGcmFtZSwgY2FsbEZy
YW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5l
KTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5yZXR1cm5FdmVudChjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSwg
Y29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBXaWxsRXhlY3V0ZVN0
YXRlbWVudDoKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5hdFN0YXRlbWVudChjYWxsRnJhbWUsIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJz
dExpbmUpOworICAgICAgICAgICAgZGVidWdnZXItPmF0U3RhdGVtZW50KGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGZpcnN0
TGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBXaWxsRXhl
Y3V0ZVByb2dyYW06Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+d2lsbEV4ZWN1dGVQcm9ncmFtKGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJj
ZUlEKCksIGZpcnN0TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+d2lsbEV4ZWN1dGVQcm9n
cmFtKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkt
PnNvdXJjZUlEKCksIGZpcnN0TGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgY2FzZSBEaWRFeGVjdXRlUHJvZ3JhbToKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRF
eGVjdXRlUHJvZ3JhbShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhl
Y3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+
ZGlkRXhlY3V0ZVByb2dyYW0oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25l
ckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgbGFzdExpbmUsIGNvbHVtbik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGNhc2UgRGlkUmVhY2hCcmVha3BvaW50OgotICAgICAgICAgICAg
ZGVidWdnZXItPmRpZFJlYWNoQnJlYWtwb2ludChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSk7CisgICAgICAg
ICAgICBkZWJ1Z2dlci0+ZGlkUmVhY2hCcmVha3BvaW50KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5lLCBjb2x1
bW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggYWRiMjNmMjM3MjM4NGRhZjg4
M2IxNGVmZjhiYWY1ZGM1ZmU2ZGY0MS4uNDdkNjY4OTg1MTVmMjE5MWU2NTkyNWUwMjc3ODc0ZWU3
YjAwOTA2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgKQEAgLTIyMCw3ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU2Ft
cGxpbmdUb29sKiBzYW1wbGVyKCkgeyByZXR1cm4gbV9zYW1wbGVyLmdldCgpOyB9CiAKICAgICAg
ICAgTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiB0aHJvd0V4Y2VwdGlvbihDYWxsRnJhbWUqJiwg
SlNWYWx1ZSYsIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgTkVWRVJfSU5MSU5F
IHZvaWQgZGVidWcoQ2FsbEZyYW1lKiwgRGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBs
YXN0TGluZSk7CisgICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERl
YnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUsIGludCBjb2x1bW4pOwogICAg
ICAgICBzdGF0aWMgY29uc3QgVVN0cmluZyBnZXRUcmFjZUxpbmUoQ2FsbEZyYW1lKiwgU3RhY2tG
cmFtZUNvZGVUeXBlLCBjb25zdCBVU3RyaW5nJiwgaW50KTsKICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHZvaWQgZ2V0U3RhY2tUcmFjZShKU0dsb2JhbERhdGEqLCBWZWN0b3I8U3Rh
Y2tGcmFtZT4mIHJlc3VsdHMpOwogICAgICAgICBzdGF0aWMgdm9pZCBhZGRTdGFja1RyYWNlSWZO
ZWNlc3NhcnkoQ2FsbEZyYW1lKiwgSlNPYmplY3QqIGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDJlNDQ4ZGQ1MmFhOTYxZDliMjQxYWMwNWQwNDc4
MmEwNjE1MzZkMTQuLjZiNGE3NzY1YzhhN2Q3MzI5ZGRmZmRhY2JmOWEyOTUyNjNjNjM0MTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTE1OSw2ICsxMTU5
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVj
dGlvbikKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJ
bW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsK
KyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9u
WzRdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmNhbGwoKTsKICNlbmRpZgogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDRmODU4OTU1
NzJjMGU5ZjMyMjlhYjQ5MDgwYjZlZTU5NjE0YTgyNTEuLmY5OTdiM2U4YmQxMTJhMzc4NTM2MTRl
OTRkMTM3MDk2N2IwMTMwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKQEAgLTE0ODAsNiArMTQ4MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2Rl
YnVnKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsK
ICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kKSk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0
aW9uWzRdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmNhbGwoKTsKICNlbmRpZgogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAppbmRleCA2YjgwODI4ODY5Njc0YjIwZTk1
NDI4ZTg0ZGQxODU5NTU5OTcyMzE4Li5jMGQxMDllMWQ4ZjNhMDE4NWNlZGMyYmY3MDI4MjRkNTBk
OTc2ODAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtMzM2OSw4
ICszMzY5LDkgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfZGVidWcpCiAgICAgaW50
IGRlYnVnSG9va0lEID0gc3RhY2tGcmFtZS5hcmdzWzBdLmludDMyKCk7CiAgICAgaW50IGZpcnN0
TGluZSA9IHN0YWNrRnJhbWUuYXJnc1sxXS5pbnQzMigpOwogICAgIGludCBsYXN0TGluZSA9IHN0
YWNrRnJhbWUuYXJnc1syXS5pbnQzMigpOworICAgIGludCBjb2x1bW4gPSBzdGFja0ZyYW1lLmFy
Z3NbM10uaW50MzIoKTsKIAotICAgIHN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXIt
PmRlYnVnKGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwg
Zmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgc3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5pbnRlcnBy
ZXRlci0+ZGVidWcoY2FsbEZyYW1lLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29r
SUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lLCBjb2x1bW4pOwogfQogCiBERUZJTkVfU1RVQl9GVU5D
VElPTih2b2lkKiwgdm1fdGhyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCBhNzY5OGJlMzc0MzI2OTMwODU1ZjVmMjUzMDE4ZGExNjVm
YjZjMWU5Li4xOTU4Y2Y2YTgwNmM1MTYzYTAzNmRlZWQ4ZDZiZTU0ODY3OTA4MGVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE1Nzgs
OCArMTU3OCw5IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWJ1ZykKICAgICBp
bnQgZGVidWdIb29rSUQgPSBwY1sxXS51Lm9wZXJhbmQ7CiAgICAgaW50IGZpcnN0TGluZSA9IHBj
WzJdLnUub3BlcmFuZDsKICAgICBpbnQgbGFzdExpbmUgPSBwY1szXS51Lm9wZXJhbmQ7Ci0gICAg
Ci0gICAgZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+ZGVidWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVi
dWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgaW50IGNv
bHVtbiA9IHBjWzRdLnUub3BlcmFuZDsKKworICAgIGdsb2JhbERhdGEuaW50ZXJwcmV0ZXItPmRl
YnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGlu
ZSwgbGFzdExpbmUsIGNvbHVtbik7CiAgICAgCiAgICAgTExJTlRfRU5EKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IDBlYjYwY2Y4OTkyZmYwOTI0
OTkxMzQ0MzI4YmY5MzFhMWJmNzM2ZTcuLjRjNWY2ODI1YWY1NDc0MTc1Nzc0NTkwMDcwZmQ2MzNh
YjYxZDQxODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBA
IC0xMTIsOCArMTEyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgIERvbnRCdWls
ZEtleXdvcmRzID0gMDsKICAgICBzdGF0aWMgY29uc3QgaW50ICBEb250QnVpbGRTdHJpbmdzID0g
MDsKIAotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQmluYXJ5Tm9kZShpbnQgbGluZU51bWJlciwg
aW50IHRva2VuLCBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+LCBzdGQ6
OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+KTsKLSAgICBFeHByZXNzaW9uTm9k
ZSogbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBm
dW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7
CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaW5hcnlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBpbnQgdG9rZW4sIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFy
eU9wSW5mbz4sIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4pOworICAg
IEV4cHJlc3Npb25Ob2RlKiBtYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGZ1bmMsIEFyZ3VtZW50c05vZGUqIGFyZ3Ms
IGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKIAogICAgIEpTQzo6U291cmNlRWxlbWVu
dHMqIGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEpT
Qzo6U291cmNlRWxlbWVudHMoKTsgfQogCkBAIC0xMjQsMTY4ICsxMjQsMTY4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYXBwZW5kVG9Db21tYShDb21tYU5vZGUqIGNvbW1hTm9kZSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIpIHsgY29tbWFOb2RlLT5hcHBlbmQoZXhwcik7IH0KIAotICAgIENvbW1hTm9k
ZSogY3JlYXRlQ29tbWFFeHByKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGhzLCBF
eHByZXNzaW9uTm9kZSogcmhzKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29tbWFOb2Rl
KGxpbmVOdW1iZXIsIGxocywgcmhzKTsgfQotCi0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VBc3Np
Z25Ob2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0b3IsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBsZWZ0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotICAgIEV4cHJl
c3Npb25Ob2RlKiBtYWtlUHJlZml4Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
LCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlUG9zdGZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiwg
T3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZVR5cGVPZk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7Ci0g
ICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VEZWxldGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSosIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZU5lZ2F0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7Ci0g
ICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXR3aXNlTm90Tm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZU11bHROb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGl2Tm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZU1v
ZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUq
IG1ha2VBZGROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlU3ViTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBF
eHByZXNzaW9uTm9kZSogbWFrZUJpdFhPck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRBbmROb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0T3JOb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTGVmdFNoaWZ0
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSog
bWFrZVJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlVVJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOwotCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUxvZ2ljYWxOb3QoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
TG9naWNhbE5vdE5vZGUobGluZU51bWJlciwgZXhwcik7IH0KLSAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlVW5hcnlQbHVzKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobGluZU51bWJlciwgZXhwcik7
IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlVm9pZChpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIpCisgICAgQ29tbWFOb2RlKiBjcmVhdGVDb21tYUV4cHIoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25O
b2RlKiByaHMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBDb21tYU5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBsaHMsIHJocyk7IH0KKworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtl
QXNzaWduTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGxlZnQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgbGVmdEhhc0Fz
c2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90
LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVByZWZpeE5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIGludCBz
dGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVBvc3Rm
aXhOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSos
IE9wZXJhdG9yLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lv
bk5vZGUqIG1ha2VUeXBlT2ZOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSopOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGVsZXRlTm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqLCBpbnQgc3RhcnQs
IGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VOZWdhdGVOb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSopOworICAg
IEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0d2lzZU5vdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VN
dWx0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
KyAgICBFeHByZXNzaW9uTm9kZSogbWFrZURpdk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VNb2ROb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlQWRkTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVN1Yk5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lv
bk5vZGUqIG1ha2VCaXRYT3JOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0QW5kTm9kZShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Np
b25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZUJpdE9yTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUxlZnRTaGlmdE5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lv
bk5vZGUqIG1ha2VSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVVSaWdodFNoaWZ0Tm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKworICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVMb2dpY2FsTm90KGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIExvZ2ljYWxOb3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcik7IH0KKyAg
ICBFeHByZXNzaW9uTm9kZSogY3JlYXRlVW5hcnlQbHVzKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIFVuYXJ5UGx1c05vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByKTsgfQorICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVWb2lkKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKICAgICB7CiAgICAgICAgIGluY0NvbnN0YW50cygp
OwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFZvaWROb2RlKGxpbmVOdW1iZXIs
IGV4cHIpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFZvaWROb2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcik7CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2RlKiB0
aGlzRXhwcihpbnQgbGluZU51bWJlcikKKyAgICBFeHByZXNzaW9uTm9kZSogdGhpc0V4cHIoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICB1c2VzVGhpcygp
OwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFRoaXNOb2RlKGxpbmVOdW1iZXIp
OworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFRoaXNOb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcik7CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVSZXNvbHZl
KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgaW50IHN0YXJ0KQorICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVSZXNvbHZlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgaW50IHN0YXJ0KQogICAgIHsKICAgICAg
ICAgaWYgKG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICppZGVudCkK
ICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCAqaWRlbnQsIHN0YXJ0KTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsICppZGVudCwgc3RhcnQpOwogICAgIH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRl
T2JqZWN0TGl0ZXJhbChpbnQgbGluZU51bWJlcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IE9iamVjdExpdGVyYWxOb2RlKGxpbmVOdW1iZXIpOyB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNy
ZWF0ZU9iamVjdExpdGVyYWwoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5TGlzdE5vZGUqIHByb3Bl
cnRpZXMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBPYmplY3RMaXRlcmFsTm9kZShsaW5l
TnVtYmVyLCBwcm9wZXJ0aWVzKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVPYmplY3RM
aXRlcmFsKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKSB7IHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgT2JqZWN0TGl0ZXJhbE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsg
fQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVPYmplY3RMaXRlcmFsKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBQcm9wZXJ0eUxpc3ROb2RlKiBwcm9wZXJ0aWVzKSB7IHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgT2JqZWN0TGl0ZXJhbE5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBwcm9wZXJ0aWVzKTsgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5
KGludCBsaW5lTnVtYmVyLCBpbnQgZWxpc2lvbnMpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZUFycmF5KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQgZWxpc2lvbnMpCiAg
ICAgewogICAgICAgICBpZiAoZWxpc2lvbnMpCiAgICAgICAgICAgICBpbmNDb25zdGFudHMoKTsK
LSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcnJheU5vZGUobGluZU51bWJlciwg
ZWxpc2lvbnMpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGVsaXNpb25zKTsKICAgICB9CiAKLSAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIEVsZW1lbnROb2RlKiBlbGVtcykg
eyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5lTnVtYmVyLCBlbGVtcyk7
IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIGludCBl
bGlzaW9ucywgRWxlbWVudE5vZGUqIGVsZW1zKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVB
cnJheShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRWxlbWVudE5vZGUqIGVsZW1z
KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJyYXlOb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgZWxlbXMpOyB9CisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5KGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQgZWxpc2lvbnMsIEVsZW1lbnROb2RlKiBl
bGVtcykKICAgICB7CiAgICAgICAgIGlmIChlbGlzaW9ucykKICAgICAgICAgICAgIGluY0NvbnN0
YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5l
TnVtYmVyLCBlbGlzaW9ucywgZWxlbXMpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEFycmF5Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGVsaXNpb25zLCBlbGVtcyk7
CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdW1iZXJFeHByKGludCBsaW5lTnVt
YmVyLCBkb3VibGUgZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTnVtYmVyRXhwcihpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgZG91YmxlIGQpCiAgICAgewogICAgICAgICBp
bmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdW1iZXJO
b2RlKGxpbmVOdW1iZXIsIGQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51
bWJlck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBkKTsKICAgICB9CiAKLSAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlU3RyaW5nKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVy
KiBzdHJpbmcpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVN0cmluZyhpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciogc3RyaW5nKQogICAgIHsKICAg
ICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
U3RyaW5nTm9kZShsaW5lTnVtYmVyLCAqc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBTdHJpbmdOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgKnN0cmluZyk7
CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJvb2xlYW4oaW50IGxpbmVOdW1i
ZXIsIGJvb2wgYikKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQm9vbGVhbihpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCBiKQogICAgIHsKICAgICAgICAgaW5jQ29uc3Rh
bnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQm9vbGVhbk5vZGUobGlu
ZU51bWJlciwgYik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQm9vbGVhbk5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBiKTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlTnVsbChpbnQgbGluZU51bWJlcikKKyAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlTnVsbChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgICAg
IGluY0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bGxO
b2RlKGxpbmVOdW1iZXIpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bGxO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHksIGJvb2wgcHJvcGVydHlIYXNBc3NpZ25tZW50
cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNy
ZWF0ZUJyYWNrZXRBY2Nlc3MoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHksIGJvb2wgcHJvcGVydHlI
YXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiAgICAgewotICAg
ICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEJyYWNr
ZXRBY2Nlc3Nvck5vZGUobGluZU51bWJlciwgYmFzZSwgcHJvcGVydHksIHByb3BlcnR5SGFzQXNz
aWdubWVudHMpOworICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX2ds
b2JhbERhdGEpIEJyYWNrZXRBY2Nlc3Nvck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBi
YXNlLCBwcm9wZXJ0eSwgcHJvcGVydHlIYXNBc3NpZ25tZW50cyk7CiAgICAgICAgIHNldEV4Y2Vw
dGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5v
ZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURvdEFjY2VzcyhpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5
LCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlRG90QWNjZXNzKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciogcHJvcGVydHksIGludCBzdGFydCwgaW50IGRp
dm90LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3
IChtX2dsb2JhbERhdGEpIERvdEFjY2Vzc29yTm9kZShsaW5lTnVtYmVyLCBiYXNlLCAqcHJvcGVy
dHkpOworICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
RG90QWNjZXNzb3JOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgYmFzZSwgKnByb3BlcnR5
KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQp
OwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlUmVnRXhwKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25z
dCBJZGVudGlmaWVyJiBmbGFncywgaW50IHN0YXJ0KQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVSZWdFeHAoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBpbnQgc3RhcnQpCiAgICAgewog
ICAgICAgICBpZiAoWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi51c3RyaW5nKCkpKQogICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIFJlZ0V4cE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgUmVnRXhwTm9kZShsaW5lTnVtYmVyLCBwYXR0ZXJuLCBmbGFncyk7CisgICAgICAgIFJl
Z0V4cE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVnRXhwTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHBhdHRlcm4sIGZsYWdzKTsKICAgICAgICAgaW50IHNpemUgPSBwYXR0
ZXJuLmxlbmd0aCgpICsgMjsgLy8gKyAyIGZvciB0aGUgdHdvIC8ncwogICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgc3RhcnQgKyBzaXplLCBzdGFydCArIHNpemUpOwog
ICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRl
TmV3RXhwcihpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05v
ZGUqIGFyZ3VtZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZU5ld0V4cHIoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmd1bWVudHMsIGludCBzdGFy
dCwgaW50IGRpdm90LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgTmV3RXhwck5vZGUobGluZU51bWJlciwgZXhwciwgYXJndW1l
bnRzKTsKKyAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTmV3
RXhwck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByLCBhcmd1bWVudHMpOwogICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAg
ICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdF
eHByKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQg
ZW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdFeHByKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5k
KQogICAgIHsKLSAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
TmV3RXhwck5vZGUobGluZU51bWJlciwgZXhwcik7CisgICAgICAgIE5ld0V4cHJOb2RlKiBub2Rl
ID0gbmV3IChtX2dsb2JhbERhdGEpIE5ld0V4cHJOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgZXhwcik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBlbmQs
IGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVDb25kaXRpb25hbEV4cHIoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBj
b25kaXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiByaHMpCisgICAg
RXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGxocywgRXhwcmVzc2lvbk5vZGUqIHJocykKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgQ29uZGl0aW9uYWxOb2RlKGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgbGhzLCBy
aHMpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbmRpdGlvbmFsTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgbGhzLCByaHMpOwogICAgIH0KIAot
ICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBc3NpZ25SZXNvbHZlKGludCBsaW5lTnVtYmVyLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJocywgYm9vbCByaHNIYXNB
c3NpZ25tZW50LCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlQXNzaWduUmVzb2x2ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaHMsIGJvb2wgcmhz
SGFzQXNzaWdubWVudCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiAgICAgewogICAg
ICAgICBpZiAocmhzLT5pc0Z1bmNFeHByTm9kZSgpKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
RnVuY0V4cHJOb2RlKj4ocmhzKS0+Ym9keSgpLT5zZXRJbmZlcnJlZE5hbWUoaWRlbnQpOwotICAg
ICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25S
ZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBpZGVudCwgcmhzLCByaHNIYXNBc3NpZ25tZW50KTsKKyAg
ICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWdu
UmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBpZGVudCwgcmhzLCByaHNIYXNB
c3NpZ25tZW50KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRp
dm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlRnVuY3Rpb25FeHByKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVy
KiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJz
LCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUs
IGludCBib2R5RW5kTGluZSkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rpb25FeHBy
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBuYW1l
LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJzLCBpbnQg
b3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBi
b2R5RW5kTGluZSkKICAgICB7Ci0gICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3ICht
X2dsb2JhbERhdGEpIEZ1bmNFeHByTm9kZShsaW5lTnVtYmVyLCAqbmFtZSwgYm9keSwgbV9zb3Vy
Y2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0
YXJ0TGluZSksIHBhcmFtZXRlcnMpOwotICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGlu
ZSwgYm9keUVuZExpbmUpOworICAgICAgICBGdW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAqbmFtZSwg
Ym9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFj
ZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtZXRlcnMpOworICAgICAgICBib2R5LT5zZXRMb2Mo
Ym9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCi0gICAgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlRnVuY3Rpb25C
b2R5KGludCBsaW5lTnVtYmVyLCBib29sIGluU3RyaWN0Q29udGV4dCkKKyAgICBGdW5jdGlvbkJv
ZHlOb2RlKiBjcmVhdGVGdW5jdGlvbkJvZHkoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIEZ1bmN0aW9u
Qm9keU5vZGU6OmNyZWF0ZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGluU3RyaWN0Q29udGV4
dCk7CisgICAgICAgIHJldHVybiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUobV9nbG9iYWxEYXRh
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGluU3RyaWN0Q29udGV4dCk7CiAgICAgfQogICAg
IAotICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVy
UHJvcGVydHkoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJ
ZGVudGlmaWVyKiBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUq
IGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0
TGluZSwgaW50IGJvZHlFbmRMaW5lKQorICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUq
IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBQ
YXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVuQnJh
Y2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRM
aW5lKQogICAgIHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwotICAgICAgICBib2R5LT5zZXRMb2Mo
Ym9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUpOworICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0
YXJ0TGluZSwgYm9keUVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIGJvZHktPnNldElu
ZmVycmVkTmFtZSgqbmFtZSk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJv
cGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwgKm5hbWUsIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhw
ck5vZGUobGluZU51bWJlciwgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRp
ZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xv
c2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtcyksIHR5cGUpOworICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERhdGEsICpuYW1lLCBu
ZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4cHJOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
bV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgYm9keSwgbV9zb3Vy
Y2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0
YXJ0TGluZSksIHBhcmFtcyksIHR5cGUpOwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8Ym9v
bD4gUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KEpTR2xvYmFsRGF0
YSosIGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUs
IFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgaW50IG9wZW5C
cmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVu
ZExpbmUpCisgICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JT
ZXR0ZXJQcm9wZXJ0eShKU0dsb2JhbERhdGEqLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBuYW1lLCBQYXJhbWV0ZXJOb2Rl
KiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBj
bG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQogICAgIHsK
LSAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lKTsKLSAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCBu
YW1lLCBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4cHJOb2RlKGxpbmVOdW1iZXIsIG1fZ2xvYmFs
RGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+
c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUp
LCBwYXJhbXMpLCB0eXBlKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJv
ZHlFbmRMaW5lLCBjb2x1bW5OdW1iZXIpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERhdGEsIG5hbWUsIG5ldyAobV9nbG9iYWxEYXRhKSBG
dW5jRXhwck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBtX2dsb2JhbERhdGEtPnByb3Bl
cnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Np
b24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1zKSwg
dHlwZSk7CiAgICAgfQogCiAgICAgQXJndW1lbnRzTm9kZSogY3JlYXRlQXJndW1lbnRzKCkgeyBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50c05vZGUoKTsgfQogICAgIEFyZ3VtZW50
c05vZGUqIGNyZWF0ZUFyZ3VtZW50cyhBcmd1bWVudExpc3ROb2RlKiBhcmdzKSB7IHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRzTm9kZShhcmdzKTsgfQotICAgIEFyZ3VtZW50TGlz
dE5vZGUqIGNyZWF0ZUFyZ3VtZW50c0xpc3QoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBhcmcpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxpbmVO
dW1iZXIsIGFyZyk7IH0KLSAgICBBcmd1bWVudExpc3ROb2RlKiBjcmVhdGVBcmd1bWVudHNMaXN0
KGludCBsaW5lTnVtYmVyLCBBcmd1bWVudExpc3ROb2RlKiBhcmdzLCBFeHByZXNzaW9uTm9kZSog
YXJnKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVt
YmVyLCBhcmdzLCBhcmcpOyB9CisgICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRz
TGlzdChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGFy
ZykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBhcmcpOyB9CisgICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJn
dW1lbnRzTGlzdChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgQXJndW1lbnRMaXN0
Tm9kZSogYXJncywgRXhwcmVzc2lvbk5vZGUqIGFyZykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEFyZ3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBhcmdzLCBhcmcp
OyB9CiAKICAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShj
b25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9w
ZXJ0eU5vZGU6OlR5cGUgdHlwZSkKICAgICB7CkBAIC0yOTQsOCArMjk0LDggQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERh
dGEsICpwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUpOwogICAgIH0KICAgICB0ZW1wbGF0ZSA8Ym9v
bD4gUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShKU0dsb2JhbERhdGEqLCBkb3VibGUgcHJv
cGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUp
IHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUpOyB9Ci0gICAgUHJvcGVydHlMaXN0Tm9kZSogY3JlYXRl
UHJvcGVydHlMaXN0KGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5KSB7IHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlMaXN0Tm9kZShsaW5lTnVtYmVyLCBwcm9w
ZXJ0eSk7IH0KLSAgICBQcm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoaW50IGxp
bmVOdW1iZXIsIFByb3BlcnR5Tm9kZSogcHJvcGVydHksIFByb3BlcnR5TGlzdE5vZGUqIHRhaWwp
IHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eUxpc3ROb2RlKGxpbmVOdW1iZXIs
IHByb3BlcnR5LCB0YWlsKTsgfQorICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5
TGlzdChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUHJvcGVydHlOb2RlKiBwcm9w
ZXJ0eSkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5TGlzdE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBwcm9wZXJ0eSk7IH0KKyAgICBQcm9wZXJ0eUxpc3ROb2RlKiBj
cmVhdGVQcm9wZXJ0eUxpc3QoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFByb3Bl
cnR5Tm9kZSogcHJvcGVydHksIFByb3BlcnR5TGlzdE5vZGUqIHRhaWwpIHsgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBQcm9wZXJ0eUxpc3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
cHJvcGVydHksIHRhaWwpOyB9CiAKICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExpc3Qo
aW50IGVsaXNpb25zLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIEVsZW1lbnROb2RlKGVsaXNpb25zLCBleHByKTsgfQogICAgIEVsZW1lbnROb2RlKiBj
cmVhdGVFbGVtZW50TGlzdChFbGVtZW50Tm9kZSogZWxlbXMsIGludCBlbGlzaW9ucywgRXhwcmVz
c2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFbGVtZW50Tm9kZShl
bGVtcywgZWxpc2lvbnMsIGV4cHIpOyB9CkBAIC0zMDksMTkxICszMDksMTkxIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cyhGdW5jdGlvbkJvZHlOb2RlKiBub2RlKSB7IG5v
ZGUtPnNldFVzZXNBcmd1bWVudHMoKTsgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRnVu
Y0RlY2xTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIEZ1
bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcnMsIGludCBvcGVu
QnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlF
bmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBGdW5j
dGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJzLCBpbnQgb3BlbkJy
YWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5k
TGluZSkKICAgICB7Ci0gICAgICAgIEZ1bmNEZWNsTm9kZSogZGVjbCA9IG5ldyAobV9nbG9iYWxE
YXRhKSBGdW5jRGVjbE5vZGUobGluZU51bWJlciwgKm5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+
c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUp
LCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgRnVuY0RlY2xOb2RlKiBkZWNsID0gbmV3IChtX2dsb2Jh
bERhdGEpIEZ1bmNEZWNsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICpuYW1lLCBib2R5
LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9z
LCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7CiAgICAgICAgIGlmICgqbmFtZSA9PSBtX2ds
b2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykKICAgICAgICAgICAgIHVzZXNBcmd1
bWVudHMoKTsKICAgICAgICAgbV9zY29wZS5tX2Z1bmNEZWNsYXJhdGlvbnMtPmRhdGEuYXBwZW5k
KGRlY2wtPmJvZHkoKSk7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5
RW5kTGluZSk7CisgICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGlu
ZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIGRlY2w7CiAgICAgfQogCi0gICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlQmxvY2tTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEpTQzo6U291
cmNlRWxlbWVudHMqIGVsZW1lbnRzLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBT
dGF0ZW1lbnROb2RlKiBjcmVhdGVCbG9ja1N0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgSlNDOjpTb3VyY2VFbGVtZW50cyogZWxlbWVudHMsIGludCBzdGFydExpbmUs
IGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQmxvY2tOb2RlKiBibG9jayA9IG5ldyAobV9n
bG9iYWxEYXRhKSBCbG9ja05vZGUobGluZU51bWJlciwgZWxlbWVudHMpOwotICAgICAgICBibG9j
ay0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIEJsb2NrTm9kZSogYmxvY2sg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgQmxvY2tOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
ZWxlbWVudHMpOworICAgICAgICBibG9jay0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29s
dW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIGJsb2NrOwogICAgIH0KIAotICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZUV4cHJTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRXhw
clN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIEV4cHJTdGF0ZW1l
bnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRXhwclN0YXRlbWVudE5vZGUobGlu
ZU51bWJlciwgZXhwcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQpOworICAg
ICAgICBFeHByU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEV4cHJT
dGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcik7CisgICAgICAgIHJl
c3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlSWZTdGF0ZW1lbnQoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIHRy
dWVCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUlm
U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnVlQmxvY2ssIGludCBzdGFydCwgaW50IGVu
ZCkKICAgICB7Ci0gICAgICAgIElmTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIElm
Tm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24sIHRydWVCbG9jayk7Ci0gICAgICAgIHJlc3VsdC0+
c2V0TG9jKHN0YXJ0LCBlbmQpOworICAgICAgICBJZk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9i
YWxEYXRhKSBJZk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIHRydWVC
bG9jayk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGNvbHVtbk51bWJlcik7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3Jl
YXRlSWZTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24s
IFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywgU3RhdGVtZW50Tm9kZSogZmFsc2VCbG9jaywgaW50
IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50KGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9u
LCBTdGF0ZW1lbnROb2RlKiB0cnVlQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZhbHNlQmxvY2ssIGlu
dCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIElmTm9kZSogcmVzdWx0ID0gbmV3ICht
X2dsb2JhbERhdGEpIElmRWxzZU5vZGUobGluZU51bWJlciwgY29uZGl0aW9uLCB0cnVlQmxvY2ss
IGZhbHNlQmxvY2spOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAgICAg
ICAgSWZOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSWZFbHNlTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBmYWxzZUJsb2NrKTsKKyAg
ICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgY29sdW1uTnVtYmVyKTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JMb29w
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIsIEV4cHJlc3Npb25O
b2RlKiBjb25kaXRpb24sIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0
ZW1lbnRzLCBib29sIGIsIGludCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVGb3JMb29wKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogaW5pdGlhbGl6ZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIEV4cHJlc3Npb25O
b2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBib29sIGIsIGludCBzdGFydCwg
aW50IGVuZCkKICAgICB7Ci0gICAgICAgIEZvck5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxE
YXRhKSBGb3JOb2RlKGxpbmVOdW1iZXIsIGluaXRpYWxpemVyLCBjb25kaXRpb24sIGl0ZXIsIHN0
YXRlbWVudHMsIGIpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAgICAg
ICAgRm9yTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZvck5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBpbml0aWFsaXplciwgY29uZGl0aW9uLCBpdGVyLCBzdGF0ZW1lbnRz
LCBiKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgY29sdW1uTnVtYmVyKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVh
dGVGb3JJbkxvb3AoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBFeHBy
ZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnRO
b2RlKiBzdGF0ZW1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCwgaW50IGluaXRT
dGFydCwgaW50IGluaXRFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplciwg
RXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGludCBzdGFy
dCwgaW50IGRpdm90LCBpbnQgZW5kLCBpbnQgaW5pdFN0YXJ0LCBpbnQgaW5pdEVuZCwgaW50IHN0
YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBGb3JJbk5vZGUqIHJlc3VsdCA9
IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JJbk5vZGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCAq
aWRlbnQsIGluaXRpYWxpemVyLCBpdGVyLCBzdGF0ZW1lbnRzLCBpbml0U3RhcnQsIGluaXRTdGFy
dCAtIHN0YXJ0LCBpbml0RW5kIC0gaW5pdFN0YXJ0KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
c3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgRm9ySW5Ob2RlKG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCAqaWRlbnQsIGluaXRpYWxpemVyLCBpdGVyLCBzdGF0ZW1lbnRzLCBpbml0U3RhcnQsIGlu
aXRTdGFydCAtIHN0YXJ0LCBpbml0RW5kIC0gaW5pdFN0YXJ0KTsKKyAgICAgICAgcmVzdWx0LT5z
ZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihyZXN1bHQsIHN0YXJ0LCBkaXZvdCArIDEsIGVuZCk7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29w
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogaXRl
ciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IGVTdGFydCwgaW50IGVEaXZvdCwgaW50
IGVFbmQsIGludCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJ
bkxvb3AoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBs
aHMsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQg
ZVN0YXJ0LCBpbnQgZURpdm90LCBpbnQgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsK
LSAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9ySW5Ob2Rl
KG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgbGhzLCBpdGVyLCBzdGF0ZW1lbnRzKTsKLSAgICAg
ICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCk7CisgICAgICAgIEZvckluTm9kZSogcmVzdWx0
ID0gbmV3IChtX2dsb2JhbERhdGEpIEZvckluTm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgbGhzLCBpdGVyLCBzdGF0ZW1lbnRzKTsKKyAgICAgICAgcmVzdWx0LT5z
ZXRMb2Moc3RhcnQsIGVuZCwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9j
YXRpb24ocmVzdWx0LCBlU3RhcnQsIGVEaXZvdCwgZUVuZCk7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRW1wdHlTdGF0ZW1lbnQoaW50
IGxpbmVOdW1iZXIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFbXB0eVN0YXRlbWVudE5v
ZGUobGluZU51bWJlcik7IH0KKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVFbXB0eVN0YXRlbWVu
dChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgeyByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIEVtcHR5U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOyB9CiAK
LSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVWYXJTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlVmFyU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKICAgICAgICAg
U3RhdGVtZW50Tm9kZSogcmVzdWx0OwogICAgICAgICBpZiAoIWV4cHIpCi0gICAgICAgICAgICBy
ZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRW1wdHlTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIp
OworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEVtcHR5U3RhdGVtZW50
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgVmFyU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
LCBleHByKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCk7CisgICAgICAgICAg
ICByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgVmFyU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIGV4cHIpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5k
LCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0
YXRlbWVudE5vZGUqIGNyZWF0ZVJldHVyblN0YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHJlc3Npb24sIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5l
LCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByZXNz
aW9uLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAg
ICAgewotICAgICAgICBSZXR1cm5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmV0
dXJuTm9kZShsaW5lTnVtYmVyLCBleHByZXNzaW9uKTsKKyAgICAgICAgUmV0dXJuTm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFJldHVybk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBleHByZXNzaW9uKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBl
U3RhcnQsIGVFbmQsIGVFbmQpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVu
ZExpbmUpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVt
bk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBlU3RhcnQsIGlu
dCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVCcmVha1N0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgaW50
IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAg
ICAgICAgQnJlYWtOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJlYWtOb2RlKG1f
Z2xvYmFsRGF0YSwgbGluZU51bWJlcik7CisgICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3
IChtX2dsb2JhbERhdGEpIEJyZWFrTm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBl
RW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsK
KyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZUJyZWFrU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAg
IFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJyZWFrU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgaW50IGVTdGFydCwgaW50IGVF
bmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQnJlYWtOb2Rl
KiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJlYWtOb2RlKGxpbmVOdW1iZXIsICppZGVu
dCk7CisgICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEJyZWFr
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICppZGVudCk7CiAgICAgICAgIHNldEV4Y2Vw
dGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0
LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3Rh
cnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGludCBs
aW5lTnVtYmVyLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExp
bmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRM
aW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0ID0g
bmV3IChtX2dsb2JhbERhdGEpIENvbnRpbnVlTm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIp
OworICAgICAgICBDb250aW51ZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb250
aW51ZU5vZGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAgICAg
ICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAg
ICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJlc3VsdC0+
c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVDb250aW51ZVN0YXRl
bWVudChpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBlU3RhcnQs
IGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2Rl
KiBjcmVhdGVDb250aW51ZVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3Rh
cnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0
ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnRpbnVlTm9kZShsaW5lTnVtYmVyLCAqaWRlbnQpOwor
ICAgICAgICBDb250aW51ZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb250aW51
ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAqaWRlbnQpOwogICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3Vs
dC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0
YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVUcnlTdGF0ZW1lbnQoaW50IGxpbmVO
dW1iZXIsIFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwg
U3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywgU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrLCBp
bnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVUcnlT
dGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFN0YXRlbWVudE5vZGUq
IHRyeUJsb2NrLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hC
bG9jaywgU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5k
TGluZSkKICAgICB7Ci0gICAgICAgIFRyeU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRh
KSBUcnlOb2RlKGxpbmVOdW1iZXIsIHRyeUJsb2NrLCAqaWRlbnQsIGNhdGNoQmxvY2ssIGZpbmFs
bHlCbG9jayk7CisgICAgICAgIFRyeU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBU
cnlOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdHJ5QmxvY2ssICppZGVudCwgY2F0Y2hC
bG9jaywgZmluYWxseUJsb2NrKTsKICAgICAgICAgaWYgKGNhdGNoQmxvY2spCiAgICAgICAgICAg
ICB1c2VzQ2F0Y2goKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5l
KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1i
ZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZVN3aXRjaFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIsIENsYXVzZUxpc3ROb2RlKiBmaXJzdENsYXVzZXMsIENhc2VDbGF1c2VOb2RlKiBkZWZhdWx0
Q2xhdXNlLCBDbGF1c2VMaXN0Tm9kZSogc2Vjb25kQ2xhdXNlcywgaW50IHN0YXJ0TGluZSwgaW50
IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlU3dpdGNoU3RhdGVtZW50KGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQ2xhdXNl
TGlzdE5vZGUqIGZpcnN0Q2xhdXNlcywgQ2FzZUNsYXVzZU5vZGUqIGRlZmF1bHRDbGF1c2UsIENs
YXVzZUxpc3ROb2RlKiBzZWNvbmRDbGF1c2VzLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkK
ICAgICB7CiAgICAgICAgIENhc2VCbG9ja05vZGUqIGNhc2VzID0gbmV3IChtX2dsb2JhbERhdGEp
IENhc2VCbG9ja05vZGUoZmlyc3RDbGF1c2VzLCBkZWZhdWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2Vz
KTsKLSAgICAgICAgU3dpdGNoTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFN3aXRj
aE5vZGUobGluZU51bWJlciwgZXhwciwgY2FzZXMpOwotICAgICAgICByZXN1bHQtPnNldExvYyhz
dGFydExpbmUsIGVuZExpbmUpOworICAgICAgICBTd2l0Y2hOb2RlKiByZXN1bHQgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgU3dpdGNoTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIsIGNh
c2VzKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5O
dW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5v
ZGUqIGNyZWF0ZVdoaWxlU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGlu
ZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaGlsZVN0YXRlbWVudChpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUq
IHN0YXRlbWVudCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBX
aGlsZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBXaGlsZU5vZGUobGluZU51bWJl
ciwgZXhwciwgc3RhdGVtZW50KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBl
bmRMaW5lKTsKKyAgICAgICAgV2hpbGVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
V2hpbGVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwciwgc3RhdGVtZW50KTsKKyAg
ICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0
ZURvV2hpbGVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVu
dCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAg
IFN0YXRlbWVudE5vZGUqIGNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgRG9XaGls
ZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBEb1doaWxlTm9kZShsaW5lTnVtYmVy
LCBzdGF0ZW1lbnQsIGV4cHIpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVu
ZExpbmUpOworICAgICAgICBEb1doaWxlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEp
IERvV2hpbGVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGVtZW50LCBleHByKTsK
KyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZUxhYmVsU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlTGFiZWxTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1l
bnQsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIExhYmVsTm9kZSogcmVzdWx0
ID0gbmV3IChtX2dsb2JhbERhdGEpIExhYmVsTm9kZShsaW5lTnVtYmVyLCAqaWRlbnQsIHN0YXRl
bWVudCk7CisgICAgICAgIExhYmVsTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIExh
YmVsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICppZGVudCwgc3RhdGVtZW50KTsKICAg
ICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBzdGFydCwgZW5kLCBlbmQpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVdp
dGhTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1l
bnROb2RlKiBzdGF0ZW1lbnQsIGludCBzdGFydCwgaW50IGVuZCwgaW50IHN0YXJ0TGluZSwgaW50
IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlV2l0aFN0YXRlbWVudChpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVu
dE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQg
ZW5kTGluZSkKICAgICB7CiAgICAgICAgIHVzZXNXaXRoKCk7Ci0gICAgICAgIFdpdGhOb2RlKiBy
ZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgV2l0aE5vZGUobGluZU51bWJlciwgZXhwciwgc3Rh
dGVtZW50LCBlbmQsIGVuZCAtIHN0YXJ0KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lKTsKKyAgICAgICAgV2l0aE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxE
YXRhKSBXaXRoTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIsIHN0YXRlbWVudCwg
ZW5kLCBlbmQgLSBzdGFydCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5k
TGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9ICAgIAog
ICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVRocm93U3RhdGVtZW50KGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRM
aW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVUaHJvd1N0YXRlbWVu
dChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIs
IGludCBzdGFydCwgaW50IGVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewot
ICAgICAgICBUaHJvd05vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBUaHJvd05vZGUo
bGluZU51bWJlciwgZXhwcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5k
TGluZSk7CisgICAgICAgIFRocm93Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFRo
cm93Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIpOworICAgICAgICByZXN1bHQt
PnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHNldEV4
Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGVuZCwgZW5kKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRGVidWdnZXIo
aW50IGxpbmVOdW1iZXIsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZURlYnVnZ2VyKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBp
bnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIERlYnVnZ2VyU3RhdGVt
ZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIERlYnVnZ2VyU3RhdGVtZW50Tm9k
ZShsaW5lTnVtYmVyKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5l
KTsKKyAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgRGVidWdnZXJTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7Cisg
ICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlQ29uc3RTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIENvbnN0RGVjbE5vZGUqIGRlY2xz
LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVD
b25zdFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgQ29uc3REZWNs
Tm9kZSogZGVjbHMsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAg
Q29uc3RTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3RTdGF0
ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGRlY2xzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3Rh
cnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgQ29uc3RTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3RTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgZGVjbHMpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUs
IGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgQ29u
c3REZWNsTm9kZSogYXBwZW5kQ29uc3REZWNsKGludCBsaW5lTnVtYmVyLCBDb25zdERlY2xOb2Rl
KiB0YWlsLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6
ZXIpCisgICAgQ29uc3REZWNsTm9kZSogYXBwZW5kQ29uc3REZWNsKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBDb25zdERlY2xOb2RlKiB0YWlsLCBjb25zdCBJZGVudGlmaWVyKiBu
YW1lLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIpCiAgICAgewotICAgICAgICBDb25zdERl
Y2xOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3REZWNsTm9kZShsaW5lTnVt
YmVyLCAqbmFtZSwgaW5pdGlhbGl6ZXIpOworICAgICAgICBDb25zdERlY2xOb2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3REZWNsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsICpuYW1lLCBpbml0aWFsaXplcik7CiAgICAgICAgIGlmICh0YWlsKQogICAgICAgICAgICAg
dGFpbC0+bV9uZXh0ID0gcmVzdWx0OwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTExLDcg
KzUxMSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9zY29wZS5tX3ZhckRlY2xhcmF0aW9ucy0+ZGF0
YS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaWRlbnQsIGF0dHJzKSk7CiAgICAgfQogCi0gICAgRXhw
cmVzc2lvbk5vZGUqIGNvbWJpbmVDb21tYU5vZGVzKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogbGlzdCwgRXhwcmVzc2lvbk5vZGUqIGluaXQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNv
bWJpbmVDb21tYU5vZGVzKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogbGlzdCwgRXhwcmVzc2lvbk5vZGUqIGluaXQpCiAgICAgewogICAgICAgICBpZiAo
IWxpc3QpCiAgICAgICAgICAgICByZXR1cm4gaW5pdDsKQEAgLTUxOSw3ICs1MTksNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDb21tYU5vZGUqPihsaXN0KS0+YXBwZW5kKGlu
aXQpOwogICAgICAgICAgICAgcmV0dXJuIGxpc3Q7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBDb21tYU5vZGUobGluZU51bWJlciwgbGlzdCwgaW5pdCk7Cisg
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29tbWFOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgbGlzdCwgaW5pdCk7CiAgICAgfQogCiAgICAgaW50IGV2YWxDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZXZhbENvdW50OyB9CkBAIC01NDcsMTAgKzU0NywxMCBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVChvcGVyYW5kU3RhY2tEZXB0aCA+PSAwKTsKICAgICAgICAgbV9iaW5h
cnlPcGVyYW5kU3RhY2sucmVzaXplKG1fYmluYXJ5T3BlcmFuZFN0YWNrLnNpemUoKSAtIGFtb3Vu
dCk7CiAgICAgfQotICAgIHZvaWQgYXBwZW5kQmluYXJ5T3BlcmF0aW9uKGludCBsaW5lTnVtYmVy
LCBpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQmLCBjb25zdCBCaW5hcnlPcGVyYW5kJiBsaHMs
IGNvbnN0IEJpbmFyeU9wZXJhbmQmIHJocykKKyAgICB2b2lkIGFwcGVuZEJpbmFyeU9wZXJhdGlv
bihpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgaW50JiBvcGVyYW5kU3RhY2tEZXB0
aCwgaW50JiwgY29uc3QgQmluYXJ5T3BlcmFuZCYgbGhzLCBjb25zdCBCaW5hcnlPcGVyYW5kJiBy
aHMpCiAgICAgewogICAgICAgICBvcGVyYW5kU3RhY2tEZXB0aCsrOwotICAgICAgICBtX2JpbmFy
eU9wZXJhbmRTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIobWFrZUJpbmFyeU5vZGUobGluZU51
bWJlciwgbV9iaW5hcnlPcGVyYXRvclN0YWNrLmxhc3QoKS5maXJzdCwgbGhzLCByaHMpLCBCaW5h
cnlPcEluZm8obGhzLnNlY29uZCwgcmhzLnNlY29uZCkpKTsKKyAgICAgICAgbV9iaW5hcnlPcGVy
YW5kU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG1ha2VCaW5hcnlOb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgbV9iaW5hcnlPcGVyYXRvclN0YWNrLmxhc3QoKS5maXJzdCwgbGhzLCBy
aHMpLCBCaW5hcnlPcEluZm8obGhzLnNlY29uZCwgcmhzLnNlY29uZCkpKTsKICAgICB9CiAgICAg
dm9pZCBvcGVyYXRvclN0YWNrQXBwZW5kKGludCYgb3BlcmF0b3JTdGFja0RlcHRoLCBpbnQgb3As
IGludCBwcmVjZWRlbmNlKQogICAgIHsKQEAgLTU5Miw5ICs1OTIsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fYXNzaWdubWVudEluZm9TdGFjay5hcHBlbmQoQXNzaWdubWVudEluZm8obm9kZSwgc3Rh
cnQsIGRpdm90LCBhc3NpZ25tZW50Q291bnQsIG9wKSk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZUFzc2lnbm1lbnQoaW50IGxpbmVOdW1iZXIsIGludCYgYXNzaWdubWVudFN0
YWNrRGVwdGgsIEV4cHJlc3Npb25Ob2RlKiByaHMsIGludCBpbml0aWFsQXNzaWdubWVudENvdW50
LCBpbnQgY3VycmVudEFzc2lnbm1lbnRDb3VudCwgaW50IGxhc3RUb2tlbkVuZCkKKyAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlQXNzaWdubWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgaW50JiBhc3NpZ25tZW50U3RhY2tEZXB0aCwgRXhwcmVzc2lvbk5vZGUqIHJocywgaW50
IGluaXRpYWxBc3NpZ25tZW50Q291bnQsIGludCBjdXJyZW50QXNzaWdubWVudENvdW50LCBpbnQg
bGFzdFRva2VuRW5kKQogICAgIHsKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHJlc3VsdCA9IG1h
a2VBc3NpZ25Ob2RlKGxpbmVOdW1iZXIsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9u
b2RlLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fb3AsIHJocywgbV9hc3NpZ25tZW50
SW5mb1N0YWNrLmxhc3QoKS5tX2luaXRBc3NpZ25tZW50cyAhPSBpbml0aWFsQXNzaWdubWVudENv
dW50LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1faW5pdEFzc2lnbm1lbnRzICE9IGN1
cnJlbnRBc3NpZ25tZW50Q291bnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9zdGFy
dCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX2Rpdm90ICsgMSwgbGFzdFRva2VuRW5k
KTsKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHJlc3VsdCA9IG1ha2VBc3NpZ25Ob2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX25vZGUs
IG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9vcCwgcmhzLCBtX2Fzc2lnbm1lbnRJbmZv
U3RhY2subGFzdCgpLm1faW5pdEFzc2lnbm1lbnRzICE9IGluaXRpYWxBc3NpZ25tZW50Q291bnQs
IG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9pbml0QXNzaWdubWVudHMgIT0gY3VycmVu
dEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX3N0YXJ0LCBt
X2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fZGl2b3QgKyAxLCBsYXN0VG9rZW5FbmQpOwog
ICAgICAgICBtX2Fzc2lnbm1lbnRJbmZvU3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICBhc3Np
Z25tZW50U3RhY2tEZXB0aC0tOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjM1LDkgKzYz
NSw5IEBAIHByaXZhdGU6CiAgICAgICAgIG1fZXZhbENvdW50Kys7CiAgICAgICAgIG1fc2NvcGUu
bV9mZWF0dXJlcyB8PSBFdmFsRmVhdHVyZTsKICAgICB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNy
ZWF0ZU51bWJlcihpbnQgbGluZU51bWJlciwgZG91YmxlIGQpCisgICAgRXhwcmVzc2lvbk5vZGUq
IGNyZWF0ZU51bWJlcihpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgZG91YmxlIGQp
CiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bWJlck5vZGUobGlu
ZU51bWJlciwgZCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTnVtYmVyTm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGQpOwogICAgIH0KICAgICAKICAgICBKU0dsb2Jh
bERhdGEqIG1fZ2xvYmFsRGF0YTsKQEAgLTY1MCwzMyArNjUwLDMzIEBAIHByaXZhdGU6CiAgICAg
aW50IG1fZXZhbENvdW50OwogfTsKIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VU
eXBlT2ZOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKK0V4cHJlc3Np
b25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlVHlwZU9mTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCiB7CiAgICAgaWYgKGV4cHItPmlzUmVz
b2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0
PFJlc29sdmVOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
VHlwZU9mUmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUeXBlT2ZSZXNvbHZlTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSk7CiAgICAgfQotICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVHlwZU9mVmFsdWVOb2RlKGxpbmVOdW1iZXIsIGV4cHIp
OworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVHlwZU9mVmFsdWVOb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgZXhwcik7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVy
OjptYWtlRGVsZXRlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGlu
dCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6
Om1ha2VEZWxldGVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiB7CiAgICAgaWYg
KCFleHByLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
RGVsZXRlVmFsdWVOb2RlKGxpbmVOdW1iZXIsIGV4cHIpOworICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIERlbGV0ZVZhbHVlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4
cHIpOwogICAgIGlmIChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5v
ZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHIpOwotICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZVJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJl
c29sdmUtPmlkZW50aWZpZXIoKSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsK
KyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEZWxldGVSZXNvbHZlTm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgZGl2b3QsIGRpdm90
IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICB9CiAgICAgaWYgKGV4cHItPmlzQnJhY2tldEFj
Y2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBz
dGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlQnJhY2tldE5vZGUobGluZU51bWJlciwgYnJhY2tldC0+
YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAt
IGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEZWxldGVCcmFja2V0
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+
c3Vic2NyaXB0KCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQog
ICAgIEFTU0VSVChleHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5v
ZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlRG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2Uo
KSwgZG90LT5pZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7
CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEZWxldGVEb3ROb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2
b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRl
cjo6bWFrZU5lZ2F0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBuKQorRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VOZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbikKIHsKICAgICBpZiAobi0+aXNOdW1i
ZXIoKSkgewogICAgICAgICBOdW1iZXJOb2RlKiBudW1iZXJOb2RlID0gc3RhdGljX2Nhc3Q8TnVt
YmVyTm9kZSo+KG4pOwpAQCAtNjg0LDEyOCArNjg0LDEyOCBAQCBFeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBu
KQogICAgICAgICByZXR1cm4gbnVtYmVyTm9kZTsKICAgICB9CiAKLSAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIE5lZ2F0ZU5vZGUobGluZU51bWJlciwgbik7CisgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBOZWdhdGVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbik7CiB9
CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0d2lzZU5vdE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxk
ZXI6Om1ha2VCaXR3aXNlTm90Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpCiB7CiAgICAgaWYgKGV4cHItPmlzTnVtYmVyKCkpCi0gICAg
ICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgfnRvSW50MzIoc3RhdGljX2Nhc3Q8
TnVtYmVyTm9kZSo+KGV4cHIpLT52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBCaXR3aXNlTm90Tm9kZShsaW5lTnVtYmVyLCBleHByKTsKKyAgICAgICAgcmV0dXJuIGNy
ZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIH50b0ludDMyKHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByKS0+dmFsdWUoKSkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgQml0d2lzZU5vdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByKTsKIH0K
IAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VNdWx0Tm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTXVsdE5v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAg
ICAgZXhwcjEgPSBleHByMS0+c3RyaXBVbmFyeVBsdXMoKTsKICAgICBleHByMiA9IGV4cHIyLT5z
dHJpcFVuYXJ5UGx1cygpOwogCiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5p
c051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgKiBzdGF0aWNfY2FzdDxOdW1iZXJO
b2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZh
bHVlKCkgKiBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKIAogICAg
IGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEp
LT52YWx1ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQ
bHVzTm9kZShsaW5lTnVtYmVyLCBleHByMik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIyKTsKIAog
ICAgIGlmIChleHByMi0+aXNOdW1iZXIoKSAmJiBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhw
cjIpLT52YWx1ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5h
cnlQbHVzTm9kZShsaW5lTnVtYmVyLCBleHByMSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIxKTsK
IAotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTXVsdE5vZGUobGluZU51bWJlciwgZXhw
cjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIE11bHROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VEaXZOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUq
IEFTVEJ1aWxkZXI6Om1ha2VEaXZOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0cmlwVW5hcnlQbHVzKCk7
CiAgICAgZXhwcjIgPSBleHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKIAogICAgIGlmIChleHByMS0+
aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51
bWJlcihsaW5lTnVtYmVyLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgp
IC8gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7Ci0gICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBEaXZOb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmln
aHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgp
IC8gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7CisgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBEaXZOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhw
cjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFT
VEJ1aWxkZXI6Om1ha2VNb2ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VNb2ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0cmlw
VW5hcnlQbHVzKCk7CiAgICAgZXhwcjIgPSBleHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKICAgICAK
ICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAg
IHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgZm1vZChzdGF0aWNfY2FzdDxOdW1iZXJO
b2RlKj4oZXhwcjEpLT52YWx1ZSgpLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52
YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBNb2ROb2RlKGxpbmVOdW1i
ZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBj
cmVhdGVOdW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBmbW9kKHN0YXRpY19jYXN0PE51
bWJlck5vZGUqPihleHByMSktPnZhbHVlKCksIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHBy
MiktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE1vZE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMp
OwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFkZE5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFk
ZE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7
CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAg
ICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUq
PihleHByMSktPnZhbHVlKCkgKyBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1
ZSgpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFkZE5vZGUobGluZU51bWJlciwg
ZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUq
PihleHByMSktPnZhbHVlKCkgKyBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1
ZSgpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFkZE5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1F
eHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVN1Yk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVN1Yk5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgZXhw
cjEgPSBleHByMS0+c3RyaXBVbmFyeVBsdXMoKTsKICAgICBleHByMiA9IGV4cHIyLT5zdHJpcFVu
YXJ5UGx1cygpOwogCiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJl
cigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgLSBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4o
ZXhwcjIpLT52YWx1ZSgpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN1Yk5vZGUo
bGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgLSBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4o
ZXhwcjIpLT52YWx1ZSgpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN1Yk5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUxlZnRTaGlmdE5vZGUo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRl
cjo6bWFrZUxlZnRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051
bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIo
c3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPDwgKHRvVUludDMyKHN0
YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOwotICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVmdFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBleHByMSwg
ZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVy
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2Rl
Kj4oZXhwcjEpLT52YWx1ZSgpKSA8PCAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBMZWZ0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Np
b25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJl
cigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxp
bmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUo
KSkgPj4gKHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkp
ICYgMHgxZikpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmlnaHRTaGlmdE5vZGUo
bGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHRvSW50MzIoc3Rh
dGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOworICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgUmlnaHRTaGlmdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZVVSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlVVJpZ2h0U2hpZnRO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewog
ICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAg
cmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1i
ZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA+PiAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVy
Tm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCB0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhw
cjEpLT52YWx1ZSgpKSA+PiAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIy
KS0+dmFsdWUoKSkgJiAweDFmKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbnNp
Z25lZFJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIy
LCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6
Om1ha2VCaXRPck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdE9yTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYg
ZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJl
ciwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSB8IHRv
SW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOwotICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0T3JOb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHBy
MiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihl
eHByMSktPnZhbHVlKCkpIHwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIp
LT52YWx1ZSgpKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCaXRPck5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMp
OwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdEFuZE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFr
ZUJpdEFuZE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQot
ICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nh
c3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgJiB0b0ludDMyKHN0YXRpY19jYXN0PE51
bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEJpdEFuZE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgJiB0
b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKKyAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdEFuZE5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdFhPck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdFhPck5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4
cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3Jl
YXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4
cHIxKS0+dmFsdWUoKSkgXiB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMikt
PnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdFhPck5vZGUobGlu
ZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0
dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHRvSW50MzIoc3RhdGlj
X2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgXiB0b0ludDMyKHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIEJpdFhPck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIs
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBmdW5j
LCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4
cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGZ1bmMsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlmICghZnVu
Yy0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZShsaW5lTnVtYmVyLCBmdW5jLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBz
dGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1
bmN0aW9uQ2FsbFZhbHVlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGZ1bmMsIGFyZ3Ms
IGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgaWYgKGZ1bmMtPmlzUmVz
b2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0
PFJlc29sdmVOb2RlKj4oZnVuYyk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIgPSByZXNvbHZlLT5pZGVudGlmaWVyKCk7CiAgICAgICAgIGlmIChpZGVudGlmaWVyID09IG1f
Z2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCkgewogICAgICAgICAgICAgdXNlc0V2YWwo
KTsKLSAgICAgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRXZhbEZ1bmN0aW9uQ2Fs
bE5vZGUobGluZU51bWJlciwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
KTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRXZhbEZ1bmN0aW9uQ2Fs
bE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFy
dCwgZW5kIC0gZGl2b3QpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUobGluZU51bWJlciwgaWRlbnRpZmllciwgYXJn
cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGlkZW50aWZpZXIsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CiAgICAgfQogICAgIGlmIChmdW5jLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewog
ICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tl
dEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwotICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSog
bm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShsaW5lTnVt
YmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBhcmdzLCBkaXZvdCwg
ZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0
Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2Ny
aXB0KCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgICAg
IG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPmVu
ZE9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQpAQCAtODEzLDExOCArODEz
LDExOCBAQCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKgogICAgIERvdEFjY2Vzc29yTm9kZSogZG90
ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxs
RG90Tm9kZSogbm9kZTsKICAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV9nbG9iYWxEYXRh
LT5wcm9wZXJ0eU5hbWVzLT5jYWxsKQotICAgICAgICBub2RlID0gbmV3IChtX2dsb2JhbERhdGEp
IENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlk
ZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAg
ICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwg
YXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBlbHNlIGlmIChk
b3QtPmlkZW50aWZpZXIoKSA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFwcGx5KQot
ICAgICAgICBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90
LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBz
dGFydCwgZW5kIC0gZGl2b3QpOwogICAgIGVsc2UKLSAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9i
YWxEYXRhKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3Qt
PmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsK
KyAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBh
cmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1
YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5lbmRPZmZzZXQoKSk7CiAgICAgcmV0
dXJuIG5vZGU7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9k
ZShpbnQgbGluZU51bWJlciwgaW50IHRva2VuLCBwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5
T3BJbmZvPiBsaHMsIHBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+IHJocykKK0V4
cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZShpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgaW50IHRva2VuLCBwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5
T3BJbmZvPiBsaHMsIHBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+IHJocykKIHsK
ICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgY2FzZSBPUjoKLSAgICAgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBMb2dpY2FsT3BOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZp
cnN0LCBPcExvZ2ljYWxPcik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9n
aWNhbE9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0
LCBPcExvZ2ljYWxPcik7CiAKICAgICBjYXNlIEFORDoKLSAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBMb2dpY2FsT3BOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0
LCBPcExvZ2ljYWxBbmQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2lj
YWxPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwg
T3BMb2dpY2FsQW5kKTsKIAogICAgIGNhc2UgQklUT1I6Ci0gICAgICAgIHJldHVybiBtYWtlQml0
T3JOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fz
c2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZUJpdE9yTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQp
OwogCiAgICAgY2FzZSBCSVRYT1I6Ci0gICAgICAgIHJldHVybiBtYWtlQml0WE9yTm9kZShsaW5l
TnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsK
KyAgICAgICAgcmV0dXJuIG1ha2VCaXRYT3JOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
bGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBj
YXNlIEJJVEFORDoKLSAgICAgICAgcmV0dXJuIG1ha2VCaXRBbmROb2RlKGxpbmVOdW1iZXIsIGxo
cy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICBy
ZXR1cm4gbWFrZUJpdEFuZE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3Qs
IHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgRVFFUToK
LSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFcXVhbE5vZGUobGluZU51bWJlciwg
bGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRXF1YWxOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAK
ICAgICBjYXNlIE5FOgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE5vdEVxdWFs
Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3Np
Z25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOb3RFcXVhbE5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29u
ZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgU1RSRVE6Ci0gICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgU3RyaWN0RXF1YWxOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhz
LmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIFN0cmljdEVxdWFsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxo
cy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2Fz
ZSBTVFJORVE6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTm90U3RyaWN0RXF1
YWxOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fz
c2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE5vdFN0cmljdEVx
dWFsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBy
aHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBMVDoKLSAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBMZXNzTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5m
aXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBMZXNzTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwg
cmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBHVDoKLSAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBHcmVhdGVyTm9kZShsaW5lTnVtYmVyLCBs
aHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBHcmVhdGVyTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwog
CiAgICAgY2FzZSBMRToKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMZXNzRXFO
b2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2ln
bm1lbnQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExlc3NFcU5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5o
YXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgR0U6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgR3JlYXRlckVxTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwg
cmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBHcmVhdGVyRXFOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCBy
aHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIElOU1RBTkNF
T0Y6IHsKLSAgICAgICAgSW5zdGFuY2VPZk5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
SW5zdGFuY2VPZk5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNv
bmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIEluc3RhbmNlT2ZOb2RlKiBub2RlID0gbmV3ICht
X2dsb2JhbERhdGEpIEluc3RhbmNlT2ZOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhz
LmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAgICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIGxocy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuc3Rh
cnQsIHJocy5zZWNvbmQuZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCiAgICAg
Y2FzZSBJTlRPS0VOOiB7Ci0gICAgICAgIEluTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRh
KSBJbk5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFz
QXNzaWdubWVudCk7CisgICAgICAgIEluTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBJ
bk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhz
LnNlY29uZC5oYXNBc3NpZ25tZW50KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9k
ZSwgbGhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5lbmQpOwog
ICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKICAgICBjYXNlIExTSElGVDoKLSAgICAgICAg
cmV0dXJuIG1ha2VMZWZ0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0
LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZUxlZnRTaGlm
dE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhz
LnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgUlNISUZUOgotICAgICAgICByZXR1
cm4gbWFrZVJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBy
aHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZVJpZ2h0U2hpZnRO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5z
ZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIFVSU0hJRlQ6Ci0gICAgICAgIHJldHVy
biBtYWtlVVJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBy
aHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZVVSaWdodFNoaWZ0
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMu
c2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBQTFVTOgotICAgICAgICByZXR1cm4g
bWFrZUFkZE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQu
aGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlQWRkTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1l
bnQpOwogCiAgICAgY2FzZSBNSU5VUzoKLSAgICAgICAgcmV0dXJuIG1ha2VTdWJOb2RlKGxpbmVO
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwor
ICAgICAgICByZXR1cm4gbWFrZVN1Yk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMu
Zmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2Ug
VElNRVM6Ci0gICAgICAgIHJldHVybiBtYWtlTXVsdE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0
LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBt
YWtlTXVsdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJz
dCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgRElWSURFOgotICAgICAg
ICByZXR1cm4gbWFrZURpdk5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJo
cy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlRGl2Tm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhh
c0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBNT0Q6Ci0gICAgICAgIHJldHVybiBtYWtlTW9kTm9k
ZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25t
ZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VNb2ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAgICAg
fQogICAgIENSQVNIKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RC
dWlsZGVyOjptYWtlQXNzaWduTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxv
YywgT3BlcmF0b3Igb3AsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBib29sIGxvY0hhc0Fzc2lnbm1l
bnRzLCBib29sIGV4cHJIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBl
bmQpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsb2MsIE9wZXJhdG9yIG9w
LCBFeHByZXNzaW9uTm9kZSogZXhwciwgYm9vbCBsb2NIYXNBc3NpZ25tZW50cywgYm9vbCBleHBy
SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlm
ICghbG9jLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
QXNzaWduRXJyb3JOb2RlKGxpbmVOdW1iZXIsIGxvYywgb3AsIGV4cHIsIGRpdm90LCBkaXZvdCAt
IHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
QXNzaWduRXJyb3JOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbG9jLCBvcCwgZXhwciwg
ZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKIAogICAgIGlmIChsb2MtPmlzUmVz
b2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0
PFJlc29sdmVOb2RlKj4obG9jKTsKICAgICAgICAgaWYgKG9wID09IE9wRXF1YWwpIHsKICAgICAg
ICAgICAgIGlmIChleHByLT5pc0Z1bmNFeHByTm9kZSgpKQogICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEZ1bmNFeHByTm9kZSo+KGV4cHIpLT5ib2R5KCktPnNldEluZmVycmVkTmFtZShyZXNv
bHZlLT5pZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2
ZS0+aWRlbnRpZmllcigpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMpOworICAgICAgICAgICAg
QXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2
ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIGV4
cHIsIGV4cHJIYXNBc3NpZ25tZW50cyk7CiAgICAgICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlv
bihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgICAgICByZXR1cm4gbm9kZTsKICAg
ICAgICAgfQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlSZXNv
bHZlTm9kZShsaW5lTnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBy
SGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhw
ckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAg
IH0KICAgICBpZiAobG9jLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFj
a2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9k
ZSo+KGxvYyk7CiAgICAgICAgIGlmIChvcCA9PSBPcEVxdWFsKQotICAgICAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25CcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0
LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywg
ZXhwckhhc0Fzc2lnbm1lbnRzLCBicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5kaXZvdCgpIC0g
c3RhcnQsIGVuZCAtIGJyYWNrZXQtPmRpdm90KCkpOwotICAgICAgICBSZWFkTW9kaWZ5QnJhY2tl
dE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGxp
bmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBleHBy
LCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBz
dGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBBc3NpZ25CcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJyYWNrZXQtPmJh
c2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGV4cHIsIGxvY0hhc0Fzc2lnbm1lbnRzLCBleHBy
SGFzQXNzaWdubWVudHMsIGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPmRpdm90KCkgLSBzdGFy
dCwgZW5kIC0gYnJhY2tldC0+ZGl2b3QoKSk7CisgICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9k
ZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5QnJhY2tldE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgp
LCBvcCwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVz
c2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZW5kT2Zmc2V0KCkpOwogICAgICAg
ICByZXR1cm4gbm9kZTsKICAgICB9CkBAIC05MzMsNTUgKzkzMyw1NSBAQCBFeHByZXNzaW9uTm9k
ZSogQVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBsb2MsCiAgICAgaWYgKG9wID09IE9wRXF1YWwpIHsKICAgICAgICAgaWYgKGV4cHItPmlz
RnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihl
eHByKS0+Ym9keSgpLT5zZXRJbmZlcnJlZE5hbWUoZG90LT5pZGVudGlmaWVyKCkpOwotICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnbkRvdE5vZGUobGluZU51bWJlciwgZG90
LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRv
dC0+ZGl2b3QoKSwgZG90LT5kaXZvdCgpIC0gc3RhcnQsIGVuZCAtIGRvdC0+ZGl2b3QoKSk7Cisg
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduRG90Tm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhw
ckhhc0Fzc2lnbm1lbnRzLCBkb3QtPmRpdm90KCksIGRvdC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQg
LSBkb3QtPmRpdm90KCkpOwogICAgIH0KIAotICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0g
bmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICBSZWFkTW9kaWZ5RG90Tm9kZSog
bm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5RG90Tm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4
cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAg
ICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZW5kT2Zmc2V0
KCkpOwogICAgIHJldHVybiBub2RlOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZVByZWZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVy
YXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSog
QVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2
b3QsIGludCBlbmQpCiB7CiAgICAgaWYgKCFleHByLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4RXJyb3JOb2RlKGxpbmVOdW1iZXIsIGV4cHIs
IG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIFByZWZpeEVycm9yTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIGV4cHIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogCiAgICAg
aWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2
ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgUHJlZml4UmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRl
bnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhSZXNvbHZlTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAt
IHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIGlmIChleHByLT5pc0JyYWNrZXRBY2Nl
c3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3Rh
dGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgICAgICBQcmVmaXhCcmFj
a2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhCcmFja2V0Tm9kZShsaW5l
TnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgUHJlZml4QnJhY2tldE5vZGUq
IG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4QnJhY2tldE5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwg
ZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICAgICAgbm9kZS0+c2V0U3Vi
ZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+c3RhcnRPZmZzZXQoKSk7
CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KICAgICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nl
c3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RB
Y2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICBQcmVmaXhEb3ROb2RlKiBub2RlID0gbmV3IChtX2ds
b2JhbERhdGEpIFByZWZpeERvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRl
bnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICBQ
cmVmaXhEb3ROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeERvdE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9w
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1YmV4
cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5zdGFydE9mZnNldCgpKTsKICAgICByZXR1
cm4gbm9kZTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VQb3N0Zml4Tm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQg
c3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlUG9zdGZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQp
CiB7CiAgICAgaWYgKCFleHByLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgUG9zdGZpeEVycm9yTm9kZShsaW5lTnVtYmVyLCBleHByLCBvcCwgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBQb3N0Zml4RXJyb3JOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwciwg
b3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAKICAgICBpZiAoZXhwci0+
aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGlj
X2Nhc3Q8UmVzb2x2ZU5vZGUqPihleHByKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBQb3N0Zml4UmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigp
LCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4UmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBpZiAoZXhwci0+aXNCcmFja2V0QWNjZXNzb3JOb2Rl
KCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19jYXN0
PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICAgICAgUG9zdGZpeEJyYWNrZXROb2Rl
KiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhCcmFja2V0Tm9kZShsaW5lTnVtYmVy
LCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90
IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgUG9zdGZpeEJyYWNrZXROb2RlKiBub2Rl
ID0gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBkaXZv
dCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgICAgICBub2RlLT5zZXRTdWJleHBy
ZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5lbmRPZmZzZXQoKSk7CiAgICAg
ICAgIHJldHVybiBub2RlOwogCiAgICAgfQogICAgIEFTU0VSVChleHByLT5pc0RvdEFjY2Vzc29y
Tm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vz
c29yTm9kZSo+KGV4cHIpOwotICAgIFBvc3RmaXhEb3ROb2RlKiBub2RlID0gbmV3IChtX2dsb2Jh
bERhdGEpIFBvc3RmaXhEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50
aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgUG9z
dGZpeERvdE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeERvdE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9w
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1YmV4
cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5lbmRPZmZzZXQoKSk7CiAgICAgcmV0dXJu
IG5vZGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDNiMDIw
ZjRmMmIxYjA5NmE3MGE5NWE5YjU4ODgyN2JkOTBiOTg1OWMuLmJmZDdmZDJjMjQ3MmI4MzdhZmFm
OTE5ZjUxODFjMzBkNGU3YjkzNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCkBAIC00MTcsNiArNDE3LDcgQEAgdm9pZCBMZXhlcjxUPjo6c2V0Q29kZShjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIFBhcnNlckFyZW5hKiBhcmVuYSkKICAgICBtX2NvZGVFbmQgPSBtX2Nv
ZGVTdGFydCArIHNvdXJjZS5lbmRPZmZzZXQoKTsKICAgICBtX2Vycm9yID0gZmFsc2U7CiAgICAg
bV9hdExpbmVTdGFydCA9IHRydWU7CisgICAgbV9jb2x1bW5OdW1iZXIgPSAwOwogICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gVVN0cmluZygpOwogICAgIAogICAgIG1fYnVmZmVyOC5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGluaXRpYWxSZWFkQnVmZmVyQ2FwYWNpdHkpOwpAQCAtNDMzLDYgKzQzNCw3
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdGVtcGxhdGUgPGludCBzaGlmdEFtb3VudD4gQUxX
QVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjppbnRlcm5hbFNoaWZ0KCkKIHsKICAgICBtX2NvZGUg
Kz0gc2hpZnRBbW91bnQ7CisgICAgbV9jb2x1bW5OdW1iZXIgKz0gc2hpZnRBbW91bnQ7CiAgICAg
bV9jdXJyZW50ID0gKm1fY29kZTsKIH0KIApAQCAtNDQ0LDYgKzQ0Niw3IEBAIEFMV0FZU19JTkxJ
TkUgdm9pZCBMZXhlcjxUPjo6c2hpZnQoKQogICAgICsrbV9jb2RlOwogICAgIGlmIChMSUtFTFko
bV9jb2RlIDwgbV9jb2RlRW5kKSkKICAgICAgICAgbV9jdXJyZW50ID0gKm1fY29kZTsKKyAgICAr
K21fY29sdW1uTnVtYmVyOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTEyMDAsNiAr
MTIwMyw3IEBAIHN0YXJ0OgogICAgICAgICByZXR1cm4gRU9GVE9LOwogICAgIAogICAgIHRva2Vu
SW5mby0+c3RhcnRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7CisgICAgdG9rZW5JbmZvLT5jb2x1
bW4gPSBtX2NvbHVtbk51bWJlcjsKIAogICAgIENoYXJhY3RlclR5cGUgdHlwZTsKICAgICBpZiAo
TElLRUxZKGlzTGF0aW4xKG1fY3VycmVudCkpKQpAQCAtMTUyMiw2ICsxNTI2LDcgQEAgaW5OdW1i
ZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwogICAg
ICAgICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsKICAgICAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsK
KyAgICAgICAgbV9jb2x1bW5OdW1iZXIgPSAwOwogICAgICAgICBnb3RvIHN0YXJ0OwogICAgIGNh
c2UgQ2hhcmFjdGVySW52YWxpZDoKICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBpbnZhbGlk
Q2hhcmFjdGVyTWVzc2FnZSgpOwpAQCAtMTU0NCw2ICsxNTQ5LDcgQEAgaW5TaW5nbGVMaW5lQ29t
bWVudDoKICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7CiAgICAgbV9hdExpbmVTdGFydCA9IHRy
dWU7CiAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKKyAgICBtX2NvbHVtbk51bWJlciA9IDA7CiAg
ICAgaWYgKCFsYXN0VG9rZW5XYXNSZXN0cktleXdvcmQoKSkKICAgICAgICAgZ290byBzdGFydDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDQxZjFmODU1M2UxZWIyNWY1
NDRiZWUxOTM1YTJhZjRiYmQwNjllNjQuLjI4YjUzYmJlN2Q4ZmM3NmJjMGJhNDdmOGRiNzZkNzY3
OGViMDdjYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTkwLDYgKzkw
LDcgQEAgcHVibGljOgogICAgIEpTVG9rZW5UeXBlIGxleChKU1Rva2VuRGF0YSosIEpTVG9rZW5J
bmZvKiwgdW5zaWduZWQsIGJvb2wgc3RyaWN0TW9kZSk7CiAgICAgYm9vbCBuZXh0VG9rZW5Jc0Nv
bG9uKCk7CiAgICAgaW50IGxpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7
IH0KKyAgICBpbnQgY3VycmVudENvbHVtbk51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1u
TnVtYmVyOyB9CiAgICAgdm9pZCBzZXRMYXN0TGluZU51bWJlcihpbnQgbGFzdExpbmVOdW1iZXIp
IHsgbV9sYXN0TGluZU51bWJlciA9IGxhc3RMaW5lTnVtYmVyOyB9CiAgICAgaW50IGxhc3RMaW5l
TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGluZU51bWJlcjsgfQogICAgIGJvb2wgcHJl
dlRlcm1pbmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3Rlcm1pbmF0b3I7IH0KQEAgLTE2Niw2ICsx
NjcsNyBAQCBwcml2YXRlOgogCiAgICAgaW50IG1fbGluZU51bWJlcjsKICAgICBpbnQgbV9sYXN0
TGluZU51bWJlcjsKKyAgICBpbnQgbV9jb2x1bW5OdW1iZXI7CiAKICAgICBWZWN0b3I8TENoYXI+
IG1fYnVmZmVyODsKICAgICBWZWN0b3I8VUNoYXI+IG1fYnVmZmVyMTY7CkBAIC0yODUsNiArMjg3
LDcgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRp
ZmllcihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLAogICAgICAgICBtX2N1cnJlbnQgPSAwOwogCiAg
ICAgbV9jb2RlID0gcHRyOworICAgIG1fY29sdW1uTnVtYmVyID0gbV9jb2x1bW5OdW1iZXIgKyAo
bV9jb2RlIC0gc3RhcnQpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBpZGVudGlmaWVyIGlmIG5lZWRl
ZAogICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQpAQCAt
Mjk0LDYgKzI5Nyw3IEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4
cGVjdElkZW50aWZpZXIoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSwKICAgICB0b2tlbkluZm8tPmxp
bmUgPSBtX2xpbmVOdW1iZXI7CiAgICAgdG9rZW5JbmZvLT5zdGFydE9mZnNldCA9IHN0YXJ0IC0g
bV9jb2RlU3RhcnQ7CiAgICAgdG9rZW5JbmZvLT5lbmRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7
CisgICAgdG9rZW5JbmZvLT5jb2x1bW4gPSBtX2NvbHVtbk51bWJlcjsKICAgICBtX2xhc3RUb2tl
biA9IElERU5UOwogICAgIHJldHVybiBJREVOVDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKaW5kZXggZTQ5NmQyMzQyYjM0MDFmYTRh
ZTc0ZTI0NjM5NGViOTdjMzNiY2ExZi4uMmFlMmY5ZTNkZTYxYWM4YjAzN2Y5YmNkYzAxY2M4NTdm
MjlmZTFjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29u
c3RydWN0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3Ry
dWN0b3JzLmgKQEAgLTQyLDYwICs0Miw2MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZ2xv
YmFsRGF0YS0+cGFyc2VyQXJlbmEtPmRlcmVmV2l0aEFyZW5hKGFkb3B0UmVmKHRoaXMpKTsKICAg
ICB9CiAKLSAgICBpbmxpbmUgTm9kZTo6Tm9kZShpbnQgbGluZU51bWJlcikKKyAgICBpbmxpbmUg
Tm9kZTo6Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKICAgICAgICAgOiBt
X2xpbmVOdW1iZXIobGluZU51bWJlcikKKyAgICAgICAgLCBtX2NvbHVtbk51bWJlcihjb2x1bW5O
dW1iZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBFeHByZXNzaW9uTm9kZTo6RXhwcmVz
c2lvbk5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3VsdFR5cGUgcmVzdWx0VHlwZSkKLSAgICAgICAg
OiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEV4cHJlc3Npb25Ob2RlOjpFeHByZXNzaW9u
Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZSByZXN1bHRU
eXBlKQorICAgICAgICA6IE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAs
IG1fcmVzdWx0VHlwZShyZXN1bHRUeXBlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3Rh
dGVtZW50Tm9kZTo6U3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBOb2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFN0YXRlbWVudE5vZGU6OlN0YXRlbWVudE5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCisgICAgICAgIDogTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9sYXN0TGluZSgtMSkKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIE51bGxOb2RlOjpOdWxsTm9kZShpbnQgbGluZU51bWJlcikKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudWxsVHlwZSgpKQorICAg
IGlubGluZSBOdWxsTm9kZTo6TnVsbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBS
ZXN1bHRUeXBlOjpudWxsVHlwZSgpKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQm9vbGVh
bk5vZGU6OkJvb2xlYW5Ob2RlKGludCBsaW5lTnVtYmVyLCBib29sIHZhbHVlKQotICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCkpCisg
ICAgaW5saW5lIEJvb2xlYW5Ob2RlOjpCb29sZWFuTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgYm9vbCB2YWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCkpCiAgICAgICAgICwg
bV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE51bWJlck5vZGU6Ok51
bWJlck5vZGUoaW50IGxpbmVOdW1iZXIsIGRvdWJsZSB2YWx1ZSkKLSAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCkpCisgICAgaW5saW5l
IE51bWJlck5vZGU6Ok51bWJlck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IGRvdWJsZSB2YWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSkKICAgICAgICAgLCBtX3ZhbHVlKHZh
bHVlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3RyaW5nTm9kZTo6U3RyaW5nTm9kZShp
bnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgdmFsdWUpCi0gICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQorICAgIGlubGlu
ZSBTdHJpbmdOb2RlOjpTdHJpbmdOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBjb25zdCBJZGVudGlmaWVyJiB2YWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OnN0cmluZ1R5cGUoKSkKICAgICAgICAg
LCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVnRXhwTm9kZTo6
UmVnRXhwTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29u
c3QgSWRlbnRpZmllciYgZmxhZ3MpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJl
cikKKyAgICBpbmxpbmUgUmVnRXhwTm9kZTo6UmVnRXhwTm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmll
ciYgZmxhZ3MpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIG1fcGF0dGVybihwYXR0ZXJuKQogICAgICAgICAsIG1fZmxhZ3MoZmxh
Z3MpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBUaGlzTm9kZTo6VGhpc05vZGUoaW50IGxp
bmVOdW1iZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgVGhpc05vZGU6OlRoaXNOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQor
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIFJlc29sdmVOb2RlOjpSZXNvbHZlTm9kZShpbnQgbGluZU51
bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGludCBzdGFydE9mZnNldCkKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBSZXNvbHZlTm9kZTo6UmVz
b2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBpbnQgc3RhcnRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAg
ICwgbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKICAgICB7CkBAIC0xMTYsMjQgKzExNywyNCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbC0+bV9uZXh0ID0gdGhpczsKICAgICB9CiAKLSAg
ICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBlbGlzaW9u
KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFycmF5
Tm9kZTo6QXJyYXlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQgZWxp
c2lvbikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIp
CiAgICAgICAgICwgbV9lbGVtZW50KDApCiAgICAgICAgICwgbV9lbGlzaW9uKGVsaXNpb24pCiAg
ICAgICAgICwgbV9vcHRpb25hbCh0cnVlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXJy
YXlOb2RlOjpBcnJheU5vZGUoaW50IGxpbmVOdW1iZXIsIEVsZW1lbnROb2RlKiBlbGVtZW50KQot
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFycmF5Tm9k
ZTo6QXJyYXlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFbGVtZW50Tm9k
ZSogZWxlbWVudCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCiAgICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgICAgICwgbV9lbGlzaW9u
KDApCiAgICAgICAgICwgbV9vcHRpb25hbChmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgZWxpc2lvbiwgRWxl
bWVudE5vZGUqIGVsZW1lbnQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIGludCBlbGlzaW9uLCBFbGVtZW50Tm9kZSogZWxlbWVudCkKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9lbGVt
ZW50KGVsZW1lbnQpCiAgICAgICAgICwgbV9lbGlzaW9uKGVsaXNpb24pCiAgICAgICAgICwgbV9v
cHRpb25hbCh0cnVlKQpAQCAtMTU0LDU3ICsxNTUsNTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBQcm9wZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2Rl
KGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGUqIG5vZGUpCi0gICAgICAgIDogTm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBQcm9wZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBQcm9wZXJ0eU5vZGUqIG5vZGUpCisgICAg
ICAgIDogTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9ub2RlKG5v
ZGUpCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcm9w
ZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5v
ZGUqIG5vZGUsIFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpCi0gICAgICAgIDogTm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBQcm9wZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBQcm9wZXJ0eU5vZGUqIG5vZGUsIFByb3BlcnR5
TGlzdE5vZGUqIGxpc3QpCisgICAgICAgIDogTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIp
CiAgICAgICAgICwgbV9ub2RlKG5vZGUpCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgewogICAg
ICAgICBsaXN0LT5tX25leHQgPSB0aGlzOwogICAgIH0KIAotICAgIGlubGluZSBPYmplY3RMaXRl
cmFsTm9kZTo6T2JqZWN0TGl0ZXJhbE5vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgT2JqZWN0TGl0ZXJhbE5vZGU6Ok9i
amVjdExpdGVyYWxOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQorICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBt
X2xpc3QoMCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE9iamVjdExpdGVyYWxOb2RlOjpP
YmplY3RMaXRlcmFsTm9kZShpbnQgbGluZU51bWJlciwgUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkK
LSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBPYmplY3RM
aXRlcmFsTm9kZTo6T2JqZWN0TGl0ZXJhbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fbGlzdChsaXN0KQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgQnJhY2tldEFjY2Vzc29yTm9kZTo6QnJhY2tldEFjY2Vzc29y
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2Rl
KiBzdWJzY3JpcHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQnJhY2tldEFjY2Vzc29yTm9kZTo6
QnJhY2tldEFjY2Vzc29yTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vic2Ny
aXB0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1fc3Vic2Ny
aXB0KHN1YnNjcmlwdCkKICAgICAgICAgLCBtX3N1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKHN1YnNj
cmlwdEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRG90QWNjZXNz
b3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyKQorICAgIGlubGluZSBEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lk
ZW50KGlkZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXJndW1lbnRMaXN0Tm9kZTo6
QXJndW1lbnRMaXN0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0g
ICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBBcmd1bWVudExpc3ROb2RlOjpB
cmd1bWVudExpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikK
ICAgICAgICAgLCBtX25leHQoMCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIEFyZ3VtZW50TGlzdE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUoaW50IGxp
bmVOdW1iZXIsIEFyZ3VtZW50TGlzdE5vZGUqIGxpc3ROb2RlLCBFeHByZXNzaW9uTm9kZSogZXhw
cikKLSAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFyZ3VtZW50TGlzdE5v
ZGU6OkFyZ3VtZW50TGlzdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEFy
Z3VtZW50TGlzdE5vZGUqIGxpc3ROb2RlLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAg
OiBOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX25leHQoMCkKICAg
ICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CkBAIC0yMjEsNDUgKzIyMiw0NSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE5ld0V4cHJOb2RlOjpOZXdFeHBy
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgTmV3RXhwck5vZGU6Ok5ld0V4cHJO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAg
ICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9hcmdzKDApCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBOZXdFeHByTm9kZTo6TmV3RXhwck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdzKQotICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIE5ld0V4cHJOb2RlOjpOZXdFeHByTm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIs
IEFyZ3VtZW50c05vZGUqIGFyZ3MpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fYXJn
cyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRXZhbEZ1bmN0aW9uQ2FsbE5vZGU6
OkV2YWxGdW5jdGlvbkNhbGxOb2RlKGludCBsaW5lTnVtYmVyLCBBcmd1bWVudHNOb2RlKiBhcmdz
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBFdmFs
RnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Fy
Z3MoYXJncykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmN0aW9uQ2FsbFZhbHVlTm9k
ZTo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGlu
ZU51bWJlcikKKyAgICBpbmxpbmUgRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpGdW5jdGlvbkNhbGxW
YWx1ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9leHByKGV4cHIp
CiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5j
dGlvbkNhbGxSZXNvbHZlTm9kZTo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGdW5jdGlvbkNhbGxS
ZXNvbHZlTm9kZTo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdz
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAg
ICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpGdW5j
dGlvbkNhbGxCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbEJy
YWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3Jp
cHQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0
YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkK
ICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCkBAIC0yNjcsOCArMjY4LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5jdGlvbkNhbGxEb3RO
b2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2Fs
bERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJn
dW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAg
ICAsIG1faWRlbnQoaWRlbnQpCkBAIC0yNzYsMzEgKzI3NywzMSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAg
OiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFy
Z3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2Fs
bERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBh
cmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGJhc2UsIGlk
ZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRnVuY3Rpb25D
YWxsRG90Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJhc2UsIGlkZW50LCBhcmdzLCBk
aXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IFByZVBvc3RSZXNvbHZlTm9kZTo6UHJlUG9zdFJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51
bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpKSAvLyBjb3VsZCBiZSByZXVzYWJsZSBmb3Ig
cHJlPworICAgIGlubGluZSBQcmVQb3N0UmVzb2x2ZU5vZGU6OlByZVBvc3RSZXNvbHZlTm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVz
dWx0VHlwZTo6bnVtYmVyVHlwZSgpKSAvLyBjb3VsZCBiZSByZXVzYWJsZSBmb3IgcHJlPwogICAg
ICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zm
c2V0KQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBQb3N0Zml4UmVzb2x2ZU5vZGU6OlBvc3RmaXhSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IFByZVBv
c3RSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBpZGVudCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpCisgICAgaW5saW5lIFBvc3RmaXhSZXNvbHZlTm9kZTo6UG9zdGZpeFJlc29sdmVOb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogUHJlUG9zdFJlc29sdmVOb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgaWRlbnQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQog
ICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFBv
c3RmaXhCcmFja2V0Tm9kZTo6UG9zdGZpeEJyYWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3Bl
ciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUG9z
dGZpeEJyYWNrZXROb2RlOjpQb3N0Zml4QnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2Ny
aXB0LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2
b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAg
ICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtMzA4LDggKzMwOSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUG9zdGZpeERvdE5vZGU6OlBvc3Rm
aXhEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFBvc3RmaXhEb3ROb2RlOjpQb3N0Zml4RG90Tm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlU3Vi
RXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwg
bV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKQEAgLTMxNyw2OSArMzE4LDY5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUG9zdGZpeEVy
cm9yTm9kZTo6UG9zdGZpeEVycm9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIFBvc3RmaXhFcnJvck5vZGU6OlBvc3RmaXhFcnJvck5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRv
ciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIpCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9vcGVy
YXRvcihvcGVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVsZXRlUmVzb2x2ZU5vZGU6
OkRlbGV0ZVJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRGVs
ZXRlUmVzb2x2ZU5vZGU6OkRlbGV0ZVJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1faWRl
bnQoaWRlbnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBEZWxldGVCcmFja2V0Tm9kZTo6
RGVsZXRlQnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBF
eHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBEZWxldGVCcmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBF
eHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEo
ZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAg
ICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgRGVsZXRlRG90Tm9kZTo6RGVsZXRlRG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBEZWxldGVEb3ROb2RlOjpEZWxldGVEb3RO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkK
ICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVs
ZXRlVmFsdWVOb2RlOjpEZWxldGVWYWx1ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5s
aW5lIERlbGV0ZVZhbHVlTm9kZTo6RGVsZXRlVmFsdWVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBWb2lkTm9kZTo6Vm9pZE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIpCisgICAgaW5saW5lIFZvaWROb2RlOjpWb2lkTm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVHlwZU9mUmVzb2x2ZU5vZGU6OlR5cGVPZlJlc29s
dmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCisg
ICAgaW5saW5lIFR5cGVPZlJlc29sdmVOb2RlOjpUeXBlT2ZSZXNvbHZlTm9kZShpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpz
dHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIFR5cGVPZlZhbHVlTm9kZTo6VHlwZU9mVmFsdWVOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVt
YmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCisgICAgaW5saW5lIFR5cGVPZlZhbHVlTm9k
ZTo6VHlwZU9mVmFsdWVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OnN0cmluZ1R5cGUoKSkKICAgICAgICAgLCBtX2V4cHIo
ZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFByZWZpeFJlc29sdmVOb2RlOjpQcmVm
aXhSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9w
ZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IFByZVBvc3RSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBp
ZGVudCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgaW5saW5lIFByZWZpeFJl
c29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6
IFByZVBvc3RSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGlkZW50LCBkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVmaXhCcmFja2V0Tm9kZTo6UHJlZml4QnJhY2tl
dE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9k
ZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyKQorICAgIGlubGluZSBQcmVmaXhCcmFja2V0Tm9kZTo6UHJlZml4QnJhY2tldE5v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dh
YmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3Jp
cHQpCkBAIC0zODcsOCArMzg4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBQcmVmaXhEb3ROb2RlOjpQcmVmaXhEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9w
ZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFBy
ZWZpeERvdE5vZGU6OlByZWZpeERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0
b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3Qs
IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAg
ICwgbV9pZGVudChpZGVudCkKQEAgLTM5Niw0NCArMzk3LDQ0IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJlZml4RXJyb3JOb2RlOjpQcmVmaXhFcnJvck5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcGVyLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
LSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcmVmaXhF
cnJvck5vZGU6OlByZWZpeEVycm9yTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBt
X2V4cHIoZXhwcikKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBVbmFyeU9wTm9kZTo6VW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3Vs
dFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wY29kZUlEIG9wY29kZUlEKQotICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIHR5cGUpCisgICAgaW5saW5lIFVuYXJ5
T3BOb2RlOjpVbmFyeU9wTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVz
dWx0VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3Bjb2RlSUQgb3Bjb2RlSUQpCisg
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0eXBlKQog
ICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fb3Bjb2RlSUQob3Bjb2RlSUQpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBVbmFyeVBsdXNOb2RlOjpVbmFyeVBsdXNOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBVbmFyeU9wTm9k
ZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIsIG9wX3RvX2pzbnVt
YmVyKQorICAgIGlubGluZSBVbmFyeVBsdXNOb2RlOjpVbmFyeVBsdXNOb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBV
bmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5
cGUoKSwgZXhwciwgb3BfdG9fanNudW1iZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBO
ZWdhdGVOb2RlOjpOZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cikKLSAgICAgICAgOiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJU
eXBlKCksIGV4cHIsIG9wX25lZ2F0ZSkKKyAgICBpbmxpbmUgTmVnYXRlTm9kZTo6TmVnYXRlTm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIp
CisgICAgICAgIDogVW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRU
eXBlOjpudW1iZXJUeXBlKCksIGV4cHIsIG9wX25lZ2F0ZSkKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIEJpdHdpc2VOb3ROb2RlOjpCaXR3aXNlTm90Tm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwg
UmVzdWx0VHlwZTo6Zm9yQml0T3AoKSkKKyAgICBpbmxpbmUgQml0d2lzZU5vdE5vZGU6OkJpdHdp
c2VOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCkpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBMb2dpY2FsTm90Tm9kZTo6TG9naWNhbE5vdE5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFVuYXJ5T3BOb2Rl
KGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIsIG9wX25vdCkKKyAg
ICBpbmxpbmUgTG9naWNhbE5vdE5vZGU6OkxvZ2ljYWxOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBVbmFyeU9w
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCks
IGV4cHIsIG9wX25vdCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJpbmFyeU9wTm9kZTo6
QmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBC
aW5hcnlPcE5vZGU6OkJpbmFyeU9wTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlE
IG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhwcjEoZXhwcjEp
CiAgICAgICAgICwgbV9leHByMihleHByMikKICAgICAgICAgLCBtX29wY29kZUlEKG9wY29kZUlE
KQpAQCAtNDQxLDggKzQ0Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgQmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3Vs
dFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IE9wY29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgdHlwZSkKKyAgICBpbmxpbmUgQmluYXJ5T3BOb2Rl
OjpCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5
cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9w
Y29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0eXBlKQogICAgICAgICAsIG1f
ZXhwcjEoZXhwcjEpCiAgICAgICAgICwgbV9leHByMihleHByMikKICAgICAgICAgLCBtX29wY29k
ZUlEKG9wY29kZUlEKQpAQCAtNDUwLDE0MCArNDUxLDE0MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIE11bHROb2RlOjpNdWx0Tm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVz
dWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX211bCwgcmlnaHRIYXNBc3Np
Z25tZW50cykKKyAgICBpbmxpbmUgTXVsdE5vZGU6Ok11bHROb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEs
IGV4cHIyLCBvcF9tdWwsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBEaXZOb2RlOjpEaXZOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQot
ICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBl
KCksIGV4cHIxLCBleHByMiwgb3BfZGl2LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGlu
ZSBEaXZOb2RlOjpEaXZOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9kaXYsIHJpZ2h0
SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAogCi0gICAgaW5saW5lIE1vZE5vZGU6Ok1v
ZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BO
b2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBv
cF9tb2QsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIE1vZE5vZGU6Ok1vZE5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAg
IDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVt
YmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX21vZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFkZE5vZGU6OkFkZE5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3Vs
dFR5cGU6OmZvckFkZChleHByMS0+cmVzdWx0RGVzY3JpcHRvcigpLCBleHByMi0+cmVzdWx0RGVz
Y3JpcHRvcigpKSwgZXhwcjEsIGV4cHIyLCBvcF9hZGQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisg
ICAgaW5saW5lIEFkZE5vZGU6OkFkZE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQWRkKGV4cHIxLT5yZXN1bHREZXNjcmlwdG9yKCks
IGV4cHIyLT5yZXN1bHREZXNjcmlwdG9yKCkpLCBleHByMSwgZXhwcjIsIG9wX2FkZCwgcmlnaHRI
YXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFN1Yk5vZGU6OlN1Yk5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2Rl
KGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9z
dWIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIFN1Yk5vZGU6OlN1Yk5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDog
QmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVy
VHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3N1YiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIExlZnRTaGlmdE5vZGU6OkxlZnRTaGlmdE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1i
ZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfbHNoaWZ0LCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBMZWZ0U2hpZnROb2RlOjpMZWZ0U2hpZnROb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAg
ICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmZv
ckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfbHNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmlnaHRTaGlmdE5vZGU6OlJpZ2h0U2hpZnROb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX3JzaGlm
dCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgUmlnaHRTaGlmdE5vZGU6OlJpZ2h0
U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3Vs
dFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfcnNoaWZ0LCByaWdodEhhc0Fzc2ln
bm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVW5zaWduZWRSaWdodFNoaWZ0Tm9k
ZTo6VW5zaWduZWRSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
LSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlw
ZSgpLCBleHByMSwgZXhwcjIsIG9wX3Vyc2hpZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAg
aW5saW5lIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGU6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDog
QmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVy
VHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3Vyc2hpZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBMZXNzTm9kZTo6TGVzc05vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJl
c3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbGVzcywgcmlnaHRIYXNB
c3NpZ25tZW50cykKKyAgICBpbmxpbmUgTGVzc05vZGU6Okxlc3NOb2RlKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4
cHIxLCBleHByMiwgb3BfbGVzcywgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIEdyZWF0ZXJOb2RlOjpHcmVhdGVyTm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlw
ZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVyLCByaWdodEhhc0Fzc2ln
bm1lbnRzKQorICAgIGlubGluZSBHcmVhdGVyTm9kZTo6R3JlYXRlck5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVyLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgTGVzc0VxTm9kZTo6TGVzc0VxTm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0
VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9sZXNzZXEsIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgaW5saW5lIExlc3NFcU5vZGU6Okxlc3NFcU5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9sZXNzZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBHcmVhdGVyRXFOb2RlOjpHcmVhdGVyRXFOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBS
ZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2dyZWF0ZXJlcSwgcmln
aHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgR3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAg
ICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpi
b29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2dyZWF0ZXJlcSwgcmlnaHRIYXNBc3NpZ25t
ZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFRocm93YWJsZUJpbmFyeU9wTm9kZTo6
VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBSZXN1bHRUeXBlIHR5cGUsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNv
ZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCB0eXBlLCBleHByMSwgZXhwcjIsIG9wY29kZUlELCByaWdodEhhc0Fzc2lnbm1l
bnRzKQorICAgIGlubGluZSBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OlRocm93YWJsZUJpbmFyeU9w
Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZSB0eXBlLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bj
b2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0eXBlLCBleHByMSwgZXhwcjIsIG9wY29kZUlELCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVGhyb3dhYmxl
QmluYXJ5T3BOb2RlOjpUaHJvd2FibGVCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJ
RCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5l
TnVtYmVyLCBleHByMSwgZXhwcjIsIG9wY29kZUlELCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAg
IGlubGluZSBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OlRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
ZXhwcjEsIGV4cHIyLCBvcGNvZGVJRCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIEluc3RhbmNlT2ZOb2RlOjpJbnN0YW5jZU9mTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBUaHJvd2FibGVCaW5hcnlPcE5vZGUobGlu
ZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9pbnN0
YW5jZW9mLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBJbnN0YW5jZU9mTm9kZTo6
SW5zdGFuY2VPZk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCisgICAgICAgIDogVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9pbnN0
YW5jZW9mLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
SW5Ob2RlOjpJbk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDog
VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgb3BfaW4sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEluTm9kZTo6SW5Ob2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IFRocm93YWJs
ZUJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIxLCBleHByMiwgb3Bf
aW4sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBFcXVh
bE5vZGU6OkVxdWFsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAg
OiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhw
cjEsIGV4cHIyLCBvcF9lcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgRXF1YWxO
b2RlOjpFcXVhbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
UmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9lcSwgcmlnaHRIYXNB
c3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE5vdEVxdWFsTm9kZTo6Tm90
RXF1YWxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFy
eU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhw
cjIsIG9wX25lcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTm90RXF1YWxOb2Rl
OjpOb3RFcXVhbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
UmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9uZXEsIHJpZ2h0SGFz
QXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBTdHJpY3RFcXVhbE5vZGU6
OlN0cmljdEVxdWFsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAg
OiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhw
cjEsIGV4cHIyLCBvcF9zdHJpY3RlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUg
U3RyaWN0RXF1YWxOb2RlOjpTdHJpY3RFcXVhbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIy
LCBvcF9zdHJpY3RlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIE5vdFN0cmljdEVxdWFsTm9kZTo6Tm90U3RyaWN0RXF1YWxOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBS
ZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX25zdHJpY3RlcSwgcmln
aHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTm90U3RyaWN0RXF1YWxOb2RlOjpOb3RTdHJp
Y3RFcXVhbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVz
dWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9uc3RyaWN0ZXEsIHJpZ2h0
SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCaXRBbmROb2RlOjpC
aXRBbmROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFy
eU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIs
IG9wX2JpdGFuZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgQml0QW5kTm9kZTo6
Qml0QW5kTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1
bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdGFuZCwgcmlnaHRIYXNBc3Np
Z25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJpdE9yTm9kZTo6Qml0T3JOb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdG9y
LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBCaXRPck5vZGU6OkJpdE9yTm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAg
OiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JC
aXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdG9yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgQml0WE9yTm9kZTo6Qml0WE9yTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwg
UmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXR4b3IsIHJpZ2h0SGFz
QXNzaWdubWVudHMpCisgICAgaW5saW5lIEJpdFhPck5vZGU6OkJpdFhPck5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5
T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9iaXR4b3IsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBMb2dpY2FsT3BOb2RlOjpMb2dpY2FsT3BOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgTG9naWNh
bE9wZXJhdG9yIG9wZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVz
dWx0VHlwZTo6Ym9vbGVhblR5cGUoKSkKKyAgICBpbmxpbmUgTG9naWNhbE9wTm9kZTo6TG9naWNh
bE9wTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIExvZ2ljYWxPcGVyYXRvciBvcGVyKQorICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlw
ZTo6Ym9vbGVhblR5cGUoKSkKICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1f
ZXhwcjIoZXhwcjIpCiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgQ29uZGl0aW9uYWxOb2RlOjpDb25kaXRpb25hbE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBDb25kaXRpb25hbE5vZGU6OkNvbmRpdGlvbmFsTm9kZShpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxvZ2ljYWwsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKQorICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2xvZ2ljYWwobG9naWNh
bCkKICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRNb2Rp
ZnlSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9w
ZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
UmVhZE1vZGlmeVJlc29sdmVOb2RlOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBv
cGVyLCBFeHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQor
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAg
ICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQpCkBA
IC01OTIsMTYgKzU5MywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIEFzc2lnblJlc29sdmVOb2RlOjpBc3NpZ25SZXNvbHZlTm9kZShpbnQgbGluZU51bWJl
ciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIp
CisgICAgaW5saW5lIEFzc2lnblJlc29sdmVOb2RlOjpBc3NpZ25SZXNvbHZlTm9kZShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJl
c3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2lkZW50
KGlkZW50KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQpCiAgICAgICAgICwgbV9yaWdodEhhc0Fz
c2lnbm1lbnRzKHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OlJlYWRNb2RpZnlCcmFja2V0Tm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9w
ZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3Np
Z25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OlJlYWRN
b2RpZnlCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEo
ZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAg
ICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtNjEyLDggKzYxMyw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXNzaWduQnJhY2tldE5vZGU6
OkFzc2lnbkJyYWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
RXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1
YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFzc2lnbkJyYWNrZXRO
b2RlOjpBc3NpZ25CcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Np
b25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9z
dWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtNjIzLDggKzYyNCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0g
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXNzaWduRG90
Tm9kZTo6QXNzaWduRG90Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFz
ZShiYXNlKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCkBAIC02MzMsOCArNjM0LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9k
ZTo6UmVhZE1vZGlmeURvdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUq
IHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5
RG90Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9u
Tm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZVN1
YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAs
IG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCkBAIC02NDQsOCArNjQ1LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25FcnJv
ck5vZGU6OkFzc2lnbkVycm9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxl
ZnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXNzaWduRXJyb3JOb2RlOjpBc3Np
Z25FcnJvck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBsZWZ0LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAg
ICAgICAgLCBtX2xlZnQobGVmdCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCkBAIC02NTMs
MTUgKzY1NCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IENvbW1hTm9kZTo6Q29tbWFOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBDb21tYU5vZGU6OkNvbW1hTm9kZShpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
KQogICAgIHsKICAgICAgICAgbV9leHByZXNzaW9ucy5hcHBlbmQoZXhwcjEpOwogICAgICAgICBt
X2V4cHJlc3Npb25zLmFwcGVuZChleHByMik7CiAgICAgfQogCi0gICAgaW5saW5lIENvbnN0U3Rh
dGVtZW50Tm9kZTo6Q29uc3RTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyLCBDb25zdERlY2xO
b2RlKiBuZXh0KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgQ29uc3RTdGF0ZW1lbnROb2RlOjpDb25zdFN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIENvbnN0RGVjbE5vZGUqIG5leHQpCisgICAgICAgIDogU3RhdGVt
ZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9uZXh0KG5leHQp
CiAgICAgewogICAgIH0KQEAgLTY3MCw1NyArNjcxLDU3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgRW1wdHlTdGF0ZW1lbnROb2RlOjpFbXB0eVN0YXRlbWVu
dE5vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBFbXB0eVN0YXRlbWVudE5vZGU6OkVtcHR5U3RhdGVtZW50Tm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlYnVn
Z2VyU3RhdGVtZW50Tm9kZTo6RGVidWdnZXJTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyKQot
ICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRGVidWdnZXJT
dGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgRXhwclN0YXRlbWVudE5vZGU6
OkV4cHJTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikK
LSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEV4cHJTdGF0
ZW1lbnROb2RlOjpFeHByU3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBWYXJTdGF0ZW1lbnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFZhclN0YXRlbWVudE5vZGU6OlZhclN0YXRlbWVudE5v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAg
ICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgaW5saW5lIElmTm9k
ZTo6SWZOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0
ZW1lbnROb2RlKiBpZkJsb2NrKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgSWZOb2RlOjpJZk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2spCisg
ICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAg
ICwgbV9jb25kaXRpb24oY29uZGl0aW9uKQogICAgICAgICAsIG1faWZCbG9jayhpZkJsb2NrKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgSWZFbHNlTm9kZTo6SWZFbHNlTm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9j
aywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2NrKQotICAgICAgICA6IElmTm9kZShsaW5lTnVtYmVy
LCBjb25kaXRpb24sIGlmQmxvY2spCisgICAgaW5saW5lIElmRWxzZU5vZGU6OklmRWxzZU5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRp
b24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5vZGUqIGVsc2VCbG9jaykKKyAg
ICAgICAgOiBJZk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIGlmQmxv
Y2spCiAgICAgICAgICwgbV9lbHNlQmxvY2soZWxzZUJsb2NrKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgRG9XaGlsZU5vZGU6OkRvV2hpbGVOb2RlKGludCBsaW5lTnVtYmVyLCBTdGF0ZW1l
bnROb2RlKiBzdGF0ZW1lbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFN0YXRl
bWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRG9XaGlsZU5vZGU6OkRvV2hpbGVOb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1l
bnQsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkKICAg
ICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFdoaWxlTm9k
ZTo6V2hpbGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgV2hpbGVOb2RlOjpXaGlsZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQp
CisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAg
ICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgRm9yTm9kZTo6Rm9yTm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIEV4cHJlc3Npb25O
b2RlKiBleHByMywgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBib29sIGV4cHIxV2FzVmFyRGVj
bCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZvck5v
ZGU6OkZvck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMs
IFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgYm9vbCBleHByMVdhc1ZhckRlY2wpCisgICAgICAg
IDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9l
eHByMShleHByMSkKICAgICAgICAgLCBtX2V4cHIyKGV4cHIyKQogICAgICAgICAsIG1fZXhwcjMo
ZXhwcjMpCkBAIC03MzAsMzggKzczMSwzOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQVNT
RVJUKHN0YXRlbWVudCk7CiAgICAgfQogCi0gICAgaW5saW5lIENvbnRpbnVlTm9kZTo6Q29udGlu
dWVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIpCi0gICAgICAg
IDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNv
bnRpbnVlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyKQogICAgICAgICAsIG1faWRlbnQoZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVs
bElkZW50aWZpZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNv
bnRpbnVlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCi0gICAg
ICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBDb250aW51ZU5vZGU6
OkNvbnRpbnVlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAgfQogICAgIAot
ICAgIGlubGluZSBCcmVha05vZGU6OkJyZWFrTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGludCBsaW5lTnVtYmVyKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgQnJlYWtOb2RlOjpCcmVha05vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2lkZW50KGdsb2JhbERhdGEt
PnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgQnJlYWtOb2RlOjpCcmVha05vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
QnJlYWtOb2RlOjpCcmVha05vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0K
ICAgICAKLSAgICBpbmxpbmUgUmV0dXJuTm9kZTo6UmV0dXJuTm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIHZhbHVlKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJl
cikKKyAgICBpbmxpbmUgUmV0dXJuTm9kZTo6UmV0dXJuTm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIHZhbHVlKQorICAgICAgICA6IFN0YXRlbWVu
dE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fdmFsdWUodmFsdWUp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBXaXRoTm9kZTo6V2l0aE5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIHVp
bnQzMl90IGRpdm90LCB1aW50MzJfdCBleHByZXNzaW9uTGVuZ3RoKQotICAgICAgICA6IFN0YXRl
bWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgV2l0aE5vZGU6OldpdGhOb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50LCB1aW50MzJfdCBkaXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxl
bmd0aCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikK
ICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQp
CiAgICAgICAgICwgbV9kaXZvdChkaXZvdCkKQEAgLTc2OSwyMSArNzcwLDIxIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTGFiZWxOb2RlOjpMYWJlbE5vZGUo
aW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqIHN0
YXRlbWVudCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IExhYmVsTm9kZTo6TGFiZWxOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBj
b25zdCBJZGVudGlmaWVyJiBuYW1lLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCisgICAgICAg
IDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9u
YW1lKG5hbWUpCiAgICAgICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgVGhyb3dOb2RlOjpUaHJvd05vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgVGhyb3dOb2RlOjpUaHJvd05vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgVHJ5Tm9kZTo6VHJ5Tm9kZShpbnQgbGluZU51bWJlciwgU3RhdGVt
ZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2VwdGlvbklkZW50LCBTdGF0
ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spCi0gICAg
ICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBUcnlOb2RlOjpUcnlO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdGF0ZW1lbnROb2RlKiB0cnlC
bG9jaywgY29uc3QgSWRlbnRpZmllciYgZXhjZXB0aW9uSWRlbnQsIFN0YXRlbWVudE5vZGUqIGNh
dGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jaykKKyAgICAgICAgOiBTdGF0ZW1l
bnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX3RyeUJsb2NrKHRy
eUJsb2NrKQogICAgICAgICAsIG1fZXhjZXB0aW9uSWRlbnQoZXhjZXB0aW9uSWRlbnQpCiAgICAg
ICAgICwgbV9jYXRjaEJsb2NrKGNhdGNoQmxvY2spCkBAIC04MDQsMTUgKzgwNSwxNSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgbC0+bV9uZXh0ID0gdGhpczsKICAgICB9CiAKLSAgICBpbmxp
bmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGdW5jRXhwck5vZGU6OkZ1bmNFeHByTm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1
bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVy
Tm9kZSogcGFyYW1ldGVyKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcikKICAgICAgICAgLCBtX2JvZHkoYm9keSkKICAgICB7CiAgICAgICAgIG1fYm9k
eS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIHBhcmFtZXRlciwgaWRlbnQpOwogICAgIH0KIAotICAg
IGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNEZWNsTm9kZShpbnQgbGluZU51bWJlciwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQotICAgICAgICA6IFN0YXRlbWVu
dE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFt
ZXRlck5vZGUqIHBhcmFtZXRlcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2JvZHkoYm9keSkKICAgICB7CiAgICAgICAgIG1f
Ym9keS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIHBhcmFtZXRlciwgaWRlbnQpOwpAQCAtODQ0LDI5
ICs4NDUsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBT
d2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
ciwgQ2FzZUJsb2NrTm9kZSogYmxvY2spCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBTd2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQ2FzZUJsb2NrTm9kZSogYmxv
Y2spCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAg
ICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9ibG9jayhibG9jaykKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIENvbnN0RGVjbE5vZGU6OkNvbnN0RGVjbE5vZGUoaW50IGxpbmVO
dW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdCkKLSAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBDb25zdERlY2xO
b2RlOjpDb25zdERlY2xOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluaXQpCisgICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1faWRlbnQo
aWRlbnQpCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgICAgICwgbV9pbml0KGluaXQpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBCbG9ja05vZGU6OkJsb2NrTm9kZShpbnQgbGluZU51bWJl
ciwgU291cmNlRWxlbWVudHMqIHN0YXRlbWVudHMpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShs
aW5lTnVtYmVyKQorICAgIGlubGluZSBCbG9ja05vZGU6OkJsb2NrTm9kZShpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgU291cmNlRWxlbWVudHMqIHN0YXRlbWVudHMpCisgICAgICAg
IDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9z
dGF0ZW1lbnRzKHN0YXRlbWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGb3JJbk5v
ZGU6OkZvckluTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogbCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0
YXRlbWVudCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IEZvckluTm9kZTo6Rm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsLCBFeHByZXNzaW9uTm9k
ZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQorICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1faWRlbnQoZ2xvYmFsRGF0
YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIpCiAgICAgICAgICwgbV9pbml0KDApCiAg
ICAgICAgICwgbV9sZXhwcihsKQpAQCAtODc2LDE3ICs4NzcsMTcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgRXhwcmVzc2lvbk5vZGUqIGluLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9k
ZSogc3RhdGVtZW50LCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCkK
LSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZvckluTm9k
ZTo6Rm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSog
aW4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBk
aXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQorICAgICAgICA6IFN0YXRlbWVu
dE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQp
CiAgICAgICAgICwgbV9pbml0KDApCi0gICAgICAgICwgbV9sZXhwcihuZXcgKGdsb2JhbERhdGEp
IFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50LCBkaXZvdCAtIHN0YXJ0T2Zmc2V0KSkKKyAg
ICAgICAgLCBtX2xleHByKG5ldyAoZ2xvYmFsRGF0YSkgUmVzb2x2ZU5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBpZGVudCwgZGl2b3QgLSBzdGFydE9mZnNldCkpCiAgICAgICAgICwgbV9l
eHByKGV4cHIpCiAgICAgICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAgICAgICAsIG1f
aWRlbnRJc1ZhckRlY2wodHJ1ZSkKICAgICB7CiAgICAgICAgIGlmIChpbikgewotICAgICAgICAg
ICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKGdsb2JhbERhdGEpIEFzc2lnblJlc29s
dmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50LCBpbiwgdHJ1ZSk7CisgICAgICAgICAgICBBc3NpZ25S
ZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAoZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBpZGVudCwgaW4sIHRydWUpOwogICAgICAgICAgICAgbm9k
ZS0+c2V0RXhjZXB0aW9uU291cmNlQ29kZShkaXZvdCwgZGl2b3QgLSBzdGFydE9mZnNldCwgZW5k
T2Zmc2V0IC0gZGl2b3QpOwogICAgICAgICAgICAgbV9pbml0ID0gbm9kZTsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBjMzJlNGM3M2EyNGViZWIy
MzNjZDVlMDFmZmZkNjNhNDg2ODVjODg2Li41YTc4NWMxZmY3N2YwYzk3YjBiMGRmNmIyOTZjZTY3
MzU1ZDE0M2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtNTIs
MTAgKzUyLDE4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gU3RhdGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Cit2b2lkIFN0YXRlbWVudE5vZGU6OnNldExvYyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUs
IGludCBjb2x1bW4pCit7CisgICAgbV9saW5lTnVtYmVyID0gZmlyc3RMaW5lOworICAgIG1fbGFz
dExpbmUgPSBsYXN0TGluZTsKKyAgICBtX2NvbHVtbk51bWJlciA9IGNvbHVtbjsKK30KKwogdm9p
ZCBTdGF0ZW1lbnROb2RlOjpzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQogewog
ICAgIG1fbGluZU51bWJlciA9IGZpcnN0TGluZTsKICAgICBtX2xhc3RMaW5lID0gbGFzdExpbmU7
CisgICAgbV9jb2x1bW5OdW1iZXIgPSAwOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gU291cmNlRWxlbWVudHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
QEAgLTc1LDggKzgzLDggQEAgU3RhdGVtZW50Tm9kZSogU291cmNlRWxlbWVudHM6OnNpbmdsZVN0
YXRlbWVudCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTY29w
ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU2NvcGVOb2RlOjpTY29wZU5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmlj
dENvbnRleHQpCi0gICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCitTY29wZU5vZGU6OlNj
b3BlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBib29sIGluU3RyaWN0Q29udGV4dCkKKyAgICA6IFN0YXRlbWVudE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICwgUGFyc2VyQXJlbmFSZWZDb3VudGVkKGdsb2Jh
bERhdGEpCiAgICAgLCBtX2ZlYXR1cmVzKGluU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVGZWF0
dXJlIDogTm9GZWF0dXJlcykKICAgICAsIG1fbnVtQ29uc3RhbnRzKDApCkBAIC04NCw4ICs5Miw4
IEBAIFNjb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxp
bmVOdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250CiB7CiB9CiAKLVNjb3BlTm9kZTo6U2NvcGVOb2Rl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ss
IEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJs
ZXMsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFN0YXRl
bWVudE5vZGUobGluZU51bWJlcikKK1Njb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3Rh
Y2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJp
YWJsZXMsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKKyAgICA6IFN0
YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICwgUGFyc2VyQXJlbmFS
ZWZDb3VudGVkKGdsb2JhbERhdGEpCiAgICAgLCBtX2ZlYXR1cmVzKGZlYXR1cmVzKQogICAgICwg
bV9zb3VyY2Uoc291cmNlKQpAQCAtMTA3LDE0ICsxMTUsMTQgQEAgU3RhdGVtZW50Tm9kZSogU2Nv
cGVOb2RlOjpzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gUHJvZ3JhbU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
aW5saW5lIFByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJT
dGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZh
cmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMs
IGludCBudW1Db25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJl
ciwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJs
ZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCitpbmxpbmUgUHJvZ3JhbU5vZGU6OlByb2dyYW1O
b2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5j
dGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNv
bnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFy
aWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogewogfQogCi1QYXNzUmVmUHRyPFByb2dy
YW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50
IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNr
LCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFi
bGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50
IG51bUNvbnN0YW50cykKK1Bhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVh
dGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0
aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzKQogewotICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gbm9kZSA9IG5ldyBQcm9ncmFtTm9k
ZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywg
IGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2UsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOworICAg
IFJlZlB0cjxQcm9ncmFtTm9kZT4gbm9kZSA9IG5ldyBQcm9ncmFtTm9kZShnbG9iYWxEYXRhLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCAg
Y2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAKICAg
ICBBU1NFUlQobm9kZS0+bV9hcmVuYS5sYXN0KCkgPT0gbm9kZSk7CiAgICAgbm9kZS0+bV9hcmVu
YS5yZW1vdmVMYXN0KCk7CkBAIC0xMjUsMTQgKzEzMywxNCBAQCBQYXNzUmVmUHRyPFByb2dyYW1O
b2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxp
bmVOdQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIEV2YWxOb2RlOjpFdmFsTm9kZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hp
bGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVu
dGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBD
b2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUo
Z2xvYmFsRGF0YSwgbGluZU51bWJlciwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNT
dGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCitpbmxpbmUg
RXZhbE5vZGU6OkV2YWxOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sq
IHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1
cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3Rh
Y2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogewogfQogCi1Q
YXNzUmVmUHRyPEV2YWxOb2RlPiBFdmFsTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgaW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sq
IHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1
cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cykKK1Bhc3NSZWZQdHI8RXZhbE5vZGU+IEV2YWxOb2RlOjpj
cmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1
bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKQogewotICAgIFJlZlB0cjxFdmFsTm9kZT4gbm9kZSA9IG5ldyBFdmFsTm9kZShn
bG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2Fw
dHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CisgICAgUmVm
UHRyPEV2YWxOb2RlPiBub2RlID0gbmV3IEV2YWxOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFy
aWFibGVzLCBzb3VyY2UsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOwogCiAgICAgQVNTRVJUKG5v
ZGUtPm1fYXJlbmEubGFzdCgpID09IG5vZGUpOwogICAgIG5vZGUtPm1fYXJlbmEucmVtb3ZlTGFz
dCgpOwpAQCAtMTQ5LDEzICsxNTcsMTMgQEAgRnVuY3Rpb25QYXJhbWV0ZXJzOjpGdW5jdGlvblBh
cmFtZXRlcnMoUGFyYW1ldGVyTm9kZSogZmlyc3RQYXJhbWV0ZXIpCiAgICAgICAgIGFwcGVuZChw
YXJhbWV0ZXItPmlkZW50KCkpOwogfQogCi1pbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rp
b25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBib29s
IGluU3RyaWN0Q29udGV4dCkKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVy
LCBpblN0cmljdENvbnRleHQpCitpbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBib29sIGluU3RyaWN0Q29udGV4dCkKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRh
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGluU3RyaWN0Q29udGV4dCkKIHsKIH0KIAotaW5s
aW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFj
ayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2Fw
dHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJl
cyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRh
LCBsaW5lTnVtYmVyLCBzb3VyY2VDb2RlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywg
Y2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCitpbmxpbmUgRnVuY3Rp
b25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4s
IFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVy
U2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorICAgIDogU2NvcGVOb2RlKGds
b2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlQ29kZSwgY2hpbGRyZW4s
IHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29u
c3RhbnRzKQogewogfQogCkBAIC0xNzIsMTQgKzE4MCwxNCBAQCB2b2lkIEZ1bmN0aW9uQm9keU5v
ZGU6OmZpbmlzaFBhcnNpbmcoUGFzc1JlZlB0cjxGdW5jdGlvblBhcmFtZXRlcnM+IHBhcmFtZXRl
cnMsCiAgICAgbV9pZGVudCA9IGlkZW50OwogfQogCi1GdW5jdGlvbkJvZHlOb2RlKiBGdW5jdGlv
bkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJl
ciwgYm9vbCBpblN0cmljdENvbnRleHQpCitGdW5jdGlvbkJvZHlOb2RlKiBGdW5jdGlvbkJvZHlO
b2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgYm9vbCBpblN0cmljdENvbnRleHQpCiB7Ci0gICAgcmV0dXJuIG5ldyBG
dW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCk7
CisgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgaW5TdHJpY3RDb250ZXh0KTsKIH0KIAotUGFzc1JlZlB0cjxGdW5jdGlv
bkJvZHlOb2RlPiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayog
dmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVy
ZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBm
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK1Bhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4g
RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFy
U3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQm
IGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVh
dHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiB7Ci0gICAgUmVmUHRyPEZ1bmN0aW9u
Qm9keU5vZGU+IG5vZGUgPSBuZXcgRnVuY3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBsaW5lTnVt
YmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNv
dXJjZUNvZGUsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOworICAgIFJlZlB0cjxGdW5jdGlvbkJv
ZHlOb2RlPiBub2RlID0gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRW
YXJpYWJsZXMsIHNvdXJjZUNvZGUsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOwogCiAgICAgQVNT
RVJUKG5vZGUtPm1fYXJlbmEubGFzdCgpID09IG5vZGUpOwogICAgIG5vZGUtPm1fYXJlbmEucmVt
b3ZlTGFzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDVjOTBiYjlm
ZTY2MzYwZTkyYTk5N2FkYjY0YjNlZTc5NjM3MzIyNjYuLjBiOGJhOTUzNGRjYTA4MzhjMzFkY2Uy
YjVmNDAwN2RlOTllMWQyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAg
LTEzMCw3ICsxMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE5vZGUgOiBwdWJs
aWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAgICAgcHJvdGVjdGVkOgotICAgICAgICBOb2RlKGlu
dCk7CisgICAgICAgIE5vZGUoaW50LCBpbnQpOwogCiAgICAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIH5Ob2RlKCkgeyB9CkBAIC0xMzksMTMgKzEzOSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBpbnQgbGluZU5vKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CiAKKyAg
ICAgICAgaW50IGNvbHVtbk5vKCkgY29uc3QgeyByZXR1cm4gbV9jb2x1bW5OdW1iZXI7IH0KKwog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgaW50IG1fbGluZU51bWJlcjsKKyAgICAgICAgaW50IG1f
Y29sdW1uTnVtYmVyOwogICAgIH07CiAKICAgICBjbGFzcyBFeHByZXNzaW9uTm9kZSA6IHB1Ymxp
YyBOb2RlIHsKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIEV4cHJlc3Npb25Ob2RlKGludCwgUmVz
dWx0VHlwZSA9IFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCkpOworICAgICAgICBFeHByZXNzaW9u
Tm9kZShpbnQsIGludCwgUmVzdWx0VHlwZSA9IFJlc3VsdFR5cGU6OnVua25vd25UeXBlKCkpOwog
CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNOdW1iZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQpAQCAtMTc1LDEyICsxNzgsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBTdGF0ZW1lbnROb2RlIDogcHVibGljIE5vZGUgewogICAgIHByb3RlY3RlZDoKLSAg
ICAgICAgU3RhdGVtZW50Tm9kZShpbnQpOworICAgICAgICBTdGF0ZW1lbnROb2RlKGludCwgaW50
KTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRMb2Mo
aW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKTsKKyAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKTsgCisgICAgICAgIHZvaWQg
c2V0TG9jKGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVtbik7CiAgICAgICAg
IGludCBmaXJzdExpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lTm8oKTsgfQogICAgICAgICBpbnQg
bGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CisgICAgICAgIGludCBjb2x1
bW4oKSBjb25zdCB7IHJldHVybiBjb2x1bW5ObygpO30KIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNFbXB0eVN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc1JldHVybk5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTk0LDcg
KzE5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTnVsbE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTnVsbE5vZGUoaW50KTsKKyAg
ICAgICAgTnVsbE5vZGUoaW50LCBpbnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOwpAQCAtMjA0LDcgKzIwOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
Qm9vbGVhbk5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQm9vbGVhbk5vZGUoaW50LCBib29sIHZhbHVlKTsKKyAgICAgICAgQm9vbGVhbk5vZGUoaW50
LCBpbnQsIGJvb2wgdmFsdWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
OwpAQCAtMjE2LDcgKzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTnVtYmVy
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBOdW1i
ZXJOb2RlKGludCwgZG91YmxlIHZhbHVlKTsKKyAgICAgICAgTnVtYmVyTm9kZShpbnQsIGludCwg
ZG91YmxlIHZhbHVlKTsKIAogICAgICAgICBkb3VibGUgdmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3ZhbHVlOyB9CiAgICAgICAgIHZvaWQgc2V0VmFsdWUoZG91YmxlIHZhbHVlKSB7IG1fdmFsdWUg
PSB2YWx1ZTsgfQpAQCAtMjMyLDcgKzIzNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgU3RyaW5nTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBTdHJpbmdOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBTdHJpbmdO
b2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAKQEAgLTM0Miw3ICszNDcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlZ0V4cE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAg
ICAgICBSZWdFeHBOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRl
bnRpZmllciYgZmxhZ3MpOworICAgICAgICBSZWdFeHBOb2RlKGludCwgaW50LCBjb25zdCBJZGVu
dGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncyk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0zNTMsNyArMzU4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBUaGlzTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBUaGlzTm9kZShpbnQpOworICAgICAgICBUaGlzTm9kZShpbnQsIGlu
dCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0zNjEsNyArMzY2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZXNvbHZlTm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBSZXNvbHZlTm9kZShpbnQsIGNv
bnN0IElkZW50aWZpZXImLCBpbnQgc3RhcnRPZmZzZXQpOworICAgICAgICBSZXNvbHZlTm9kZShp
bnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIGludCBzdGFydE9mZnNldCk7CiAKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0K
IApAQCAtMzkzLDExICszOTgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcnJh
eU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXJy
YXlOb2RlKGludCwgaW50IGVsaXNpb24pOwotICAgICAgICBBcnJheU5vZGUoaW50LCBFbGVtZW50
Tm9kZSopOwotICAgICAgICBBcnJheU5vZGUoaW50LCBpbnQgZWxpc2lvbiwgRWxlbWVudE5vZGUq
KTsKKyAgICAgICAgQXJyYXlOb2RlKGludCwgaW50LCBpbnQgZWxpc2lvbik7CisgICAgICAgIEFy
cmF5Tm9kZShpbnQsIGludCwgRWxlbWVudE5vZGUqKTsKKyAgICAgICAgQXJyYXlOb2RlKGludCwg
aW50LCBpbnQgZWxpc2lvbiwgRWxlbWVudE5vZGUqKTsKIAotICAgICAgICBBcmd1bWVudExpc3RO
b2RlKiB0b0FyZ3VtZW50TGlzdChKU0dsb2JhbERhdGEqLCBpbnQpIGNvbnN0OworICAgICAgICBB
cmd1bWVudExpc3ROb2RlKiB0b0FyZ3VtZW50TGlzdChKU0dsb2JhbERhdGEqLCBpbnQsIGludCkg
Y29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC00MjgsOCAr
NDMzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcm9wZXJ0eUxpc3ROb2RlIDog
cHVibGljIE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShpbnQs
IFByb3BlcnR5Tm9kZSopOwotICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKGludCwgUHJvcGVydHlO
b2RlKiwgUHJvcGVydHlMaXN0Tm9kZSopOworICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKGludCwg
aW50LCBQcm9wZXJ0eU5vZGUqKTsKKyAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShpbnQsIGludCwg
UHJvcGVydHlOb2RlKiwgUHJvcGVydHlMaXN0Tm9kZSopOwogCiAgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KTsKIApAQCAtNDQwLDggKzQ0NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgT2Jq
ZWN0TGl0ZXJhbE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgT2JqZWN0TGl0ZXJhbE5vZGUoaW50KTsKLSAgICAgICAgT2JqZWN0TGl0ZXJhbE5vZGUo
aW50LCBQcm9wZXJ0eUxpc3ROb2RlKik7CisgICAgICAgIE9iamVjdExpdGVyYWxOb2RlKGludCwg
aW50KTsKKyAgICAgICAgT2JqZWN0TGl0ZXJhbE5vZGUoaW50LCBpbnQsIFByb3BlcnR5TGlzdE5v
ZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTQ1MSw3ICs0
NTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBCcmFja2V0QWNjZXNzb3JO
b2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBib29sIHN1YnNjcmlw
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZShpbnQsIGludCwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vi
c2NyaXB0SGFzQXNzaWdubWVudHMpOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBiYXNlKCkg
Y29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3Jp
cHQoKSBjb25zdCB7IHJldHVybiBtX3N1YnNjcmlwdDsgfQpAQCAtNDY5LDcgKzQ3NCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRG90QWNjZXNzb3JOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgRG90QWNjZXNzb3JOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImKTsKKyAgICAgICAgRG90QWNjZXNzb3JOb2RlKGludCwgaW50LCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CkBAIC00ODYsOCAr
NDkxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcmd1bWVudExpc3ROb2RlIDog
cHVibGljIE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShpbnQs
IEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgICAgIEFyZ3VtZW50TGlzdE5vZGUoaW50LCBBcmd1bWVu
dExpc3ROb2RlKiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShp
bnQsIGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShpbnQs
IGludCwgQXJndW1lbnRMaXN0Tm9kZSosIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICAgICAgQXJn
dW1lbnRMaXN0Tm9kZSogbV9uZXh0OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwpA
QCAtNTA2LDggKzUxMSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTmV3RXhwck5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7CiAgICAgcHVibGljOgotICAgICAgICBOZXdFeHByTm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
Kik7Ci0gICAgICAgIE5ld0V4cHJOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNO
b2RlKik7CisgICAgICAgIE5ld0V4cHJOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwor
ICAgICAgICBOZXdFeHByTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNO
b2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01MTgsNyAr
NTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFdmFsRnVuY3Rpb25DYWxsTm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRh
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGludCwgQXJndW1l
bnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKKyAgICAgICAgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUoaW50LCBpbnQsIEFyZ3Vt
ZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01
MjgsNyArNTMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxW
YWx1ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSosIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIEZ1bmN0aW9uQ2Fs
bFZhbHVlTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKiwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTM5LDcgKzU0NCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElk
ZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxSZXNvbHZl
Tm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01NTIsNyArNTU3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7
CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2Rl
KiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShpbnQsIGludCwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05vZGUqLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01NjQsNyArNTY5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAg
RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwpAQCAtNTc3LDcgKzU4Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
KyAgICAgICAgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU4NSw3ICs1OTAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAKICAgICBjbGFzcyBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMg
RnVuY3Rpb25DYWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBBcHBseUZ1bmN0aW9u
Q2FsbERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYs
IEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQs
IGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNO
b2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTkzLDcg
KzU5OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlUG9zdFJlc29sdmVOb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlUG9zdFJlc29sdmVOb2RlKGludCwgY29uc3QgSWRl
bnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlUG9zdFJlc29sdmVOb2RlKGludCwgaW50LCBjb25zdCBJ
ZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBtX2lkZW50OwpAQCAtNjAxLDcgKzYwNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgUG9zdGZpeFJlc29sdmVOb2RlIDogcHVibGljIFByZVBvc3RSZXNvbHZlTm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBQb3N0Zml4UmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVy
JiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUG9zdGZpeFJlc29sdmVOb2RlKGludCwgaW50LCBjb25z
dCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKTsKQEAgLTYxMSw3ICs2MTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IFBvc3RmaXhCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93
YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBvc3RmaXhCcmFj
a2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2Ny
aXB0LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpOworICAgICAgICBQb3N0Zml4QnJhY2tldE5vZGUoaW50LCBpbnQsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjIzLDcgKzYyOCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUG9zdGZpeERvdE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgotICAgICAgICBQb3N0Zml4RG90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUG9zdGZpeERvdE5vZGUo
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0
b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTYzNSw3ICs2
NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFBvc3RmaXhFcnJvck5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7
CiAgICAgcHVibGljOgotICAgICAgICBQb3N0Zml4RXJyb3JOb2RlKGludCwgRXhwcmVzc2lvbk5v
ZGUqLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpOworICAgICAgICBQb3N0Zml4RXJyb3JOb2RlKGludCwgaW50LCBFeHBy
ZXNzaW9uTm9kZSosIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CkBAIC02NDYsNyArNjUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBE
ZWxldGVSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlbGV0ZVJlc29sdmVOb2Rl
KGludCwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRGVsZXRlUmVzb2x2ZU5vZGUoaW50
LCBpbnQsIGNvbnN0IElkZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CkBAIC02NTYsNyArNjYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBEZWxldGVCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlbGV0ZUJyYWNrZXRO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KTsKKyAgICAgICAgRGVsZXRlQnJhY2tldE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CkBAIC02NjcsNyArNjcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBEZWxldGVEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVsZXRlRG90Tm9k
ZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAg
ICBEZWxldGVEb3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTY3
OCw3ICs2ODMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERlbGV0ZVZhbHVlTm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVW
YWx1ZU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBEZWxldGVWYWx1ZU5vZGUo
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CkBAIC02ODgsNyArNjkzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBWb2lkTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBWb2lkTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIFZvaWROb2RlKGludCwg
aW50LCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpAQCAtNjk4LDcgKzcwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVHlw
ZU9mUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgVHlwZU9mUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAg
IFR5cGVPZlJlc29sdmVOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7
IH0KIApAQCAtNzEwLDcgKzcxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVHlw
ZU9mVmFsdWVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIFR5cGVPZlZhbHVlTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIFR5cGVP
ZlZhbHVlTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTcyMCw3ICs3MjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIFByZWZpeFJlc29sdmVOb2RlIDogcHVibGljIFByZVBvc3RSZXNvbHZlTm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBQcmVmaXhSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElk
ZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQcmVmaXhSZXNvbHZlTm9kZShpbnQsIGlu
dCwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CkBAIC03MzAsNyArNzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBQcmVmaXhCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGlj
IFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgUHJlZml4QnJhY2tldE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlZml4QnJhY2tldE5vZGUo
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0
LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAt
NzQyLDcgKzc0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlZml4RG90Tm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVByZWZpeGVkU3ViRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlZml4RG90Tm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAg
ICAgUHJlZml4RG90Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpAQCAtNzU0LDcgKzc1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJl
Zml4RXJyb3JOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlZml4RXJyb3JOb2RlKGludCwg
RXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQcmVmaXhFcnJvck5vZGUoaW50
LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTc2NSw3ICs3NzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIFVuYXJ5T3BOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFVuYXJ5T3BOb2RlKGludCwgUmVzdWx0VHlwZSwgRXhwcmVzc2lvbk5vZGUq
LCBPcGNvZGVJRCk7CisgICAgICAgIFVuYXJ5T3BOb2RlKGludCwgaW50LCBSZXN1bHRUeXBlLCBF
eHByZXNzaW9uTm9kZSosIE9wY29kZUlEKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIGV4cHIoKSB7IHJldHVybiBtX2V4cHI7IH0KQEAgLTc4Miw3ICs3ODcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFVuYXJ5UGx1c05vZGUgOiBwdWJsaWMgVW5h
cnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVW5hcnlQbHVzTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKik7CisgICAgICAgIFVuYXJ5UGx1c05vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25O
b2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIEV4cHJlc3Npb25Ob2RlKiBz
dHJpcFVuYXJ5UGx1cygpIHsgcmV0dXJuIGV4cHIoKTsgfQpAQCAtNzkwLDEyICs3OTUsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOZWdhdGVOb2RlIDogcHVibGljIFVuYXJ5T3BO
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5lZ2F0ZU5vZGUoaW50LCBFeHByZXNzaW9uTm9k
ZSopOworICAgICAgICBOZWdhdGVOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwogICAg
IH07CiAKICAgICBjbGFzcyBCaXR3aXNlTm90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBCaXR3aXNlTm90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
Kik7CisgICAgICAgIEJpdHdpc2VOb3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwog
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwcigpIHsgcmV0dXJu
IG1fZXhwcjsgfQpAQCAtODA5LDcgKzgxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogIAogICAgIGNs
YXNzIExvZ2ljYWxOb3ROb2RlIDogcHVibGljIFVuYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIExvZ2ljYWxOb3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgTG9n
aWNhbE5vdE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKik7CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBMYWJlbCogdHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBib29sIGZhbGxUaHJv
dWdoTWVhbnNUcnVlKTsKICAgICAgICAgdmlydHVhbCBib29sIGhhc0NvbmRpdGlvbkNvbnRleHRD
b2RlZ2VuKCkgY29uc3QgeyByZXR1cm4gZXhwcigpLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdl
bigpOyB9CkBAIC04MTcsOCArODIyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBC
aW5hcnlPcE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQmluYXJ5T3BOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgICAgICBC
aW5hcnlPcE5vZGUoaW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgICAgIEJpbmFyeU9wTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwor
ICAgICAgICBCaW5hcnlPcE5vZGUoaW50LCBpbnQsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0U3RyY2F0KEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uLCBSZWdpc3RlcklEKiBs
aHMgPSAwLCBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUqIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lID0g
MCk7CiAKQEAgLTg0Miw3MiArODQ3LDcyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
TXVsdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE11
bHROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIE11bHROb2RlKGludCwgaW50LCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgRGl2Tm9kZSA6IHB1YmxpYyBCaW5h
cnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGl2Tm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOworICAgICAgICBEaXZOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9Owog
CiAgICAgY2xhc3MgTW9kTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgTW9kTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBNb2ROb2RlKGlu
dCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgQWRkTm9kZSA6IHB1
YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQWRkTm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICBBZGROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBZGQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAg
ICAgfTsKIAogICAgIGNsYXNzIFN1Yk5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFN1Yk5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgU3Vi
Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlz
U3VidHJhY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAogICAgIGNsYXNzIExl
ZnRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IExlZnRTaGlmdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTGVmdFNoaWZ0Tm9k
ZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIFJpZ2h0U2hp
ZnROb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBSaWdo
dFNoaWZ0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBSaWdodFNoaWZ0Tm9kZShp
bnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIFVuc2lnbmVkUmln
aHRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IFVuc2lnbmVkUmlnaHRTaGlmdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgVW5z
aWduZWRSaWdodFNoaWZ0Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAog
ICAgIGNsYXNzIExlc3NOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBMZXNzTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBMZXNzTm9kZShp
bnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEdyZWF0ZXJOb2Rl
IDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBHcmVhdGVyTm9k
ZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBHcmVhdGVyTm9kZShpbnQsIGludCwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIExlc3NFcU5vZGUgOiBwdWJsaWMgQmlu
YXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExlc3NFcU5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKKyAgICAgICAgTGVzc0VxTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAg
ICAgfTsKIAogICAgIGNsYXNzIEdyZWF0ZXJFcU5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEdyZWF0ZXJFcU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
KyAgICAgICAgR3JlYXRlckVxTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsK
IAogICAgIGNsYXNzIFRocm93YWJsZUJpbmFyeU9wTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUs
IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBU
aHJvd2FibGVCaW5hcnlPcE5vZGUoaW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7Ci0gICAgICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKKyAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGludCwgaW50LCBSZXN1
bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bj
b2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIFRocm93YWJsZUJpbmFy
eU9wTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTE1LDcgKzkyMCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIAogICAgIGNsYXNzIEluc3RhbmNlT2ZOb2RlIDogcHVibGljIFRocm93YWJsZUJp
bmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBJbnN0YW5jZU9mTm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICBJbnN0YW5jZU9mTm9kZShpbnQsIGludCwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05MjMsMTIg
KzkyOCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEluTm9kZSA6IHB1YmxpYyBU
aHJvd2FibGVCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSW5Ob2RlKGludCwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CisgICAgICAgIEluTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CiAgICAgfTsKIAogICAgIGNsYXNzIEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgRXF1YWxOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAg
ICAgIEVxdWFsTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05MzYsMTIgKzk0MSwxMiBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIE5vdEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgTm90RXF1YWxOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAg
ICAgIE5vdEVxdWFsTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAg
IGNsYXNzIFN0cmljdEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgU3RyaWN0RXF1YWxOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAg
IFN0cmljdEVxdWFsTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05NDksMjggKzk1NCwyOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIE5vdFN0cmljdEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5v
ZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTm90U3RyaWN0RXF1YWxOb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CisgICAgICAgIE5vdFN0cmljdEVxdWFsTm9kZShpbnQsIGludCwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEJpdEFuZE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BO
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdEFuZE5vZGUoaW50LCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKKyAgICAgICAgQml0QW5kTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsK
IAogICAgIGNsYXNzIEJpdE9yTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgQml0T3JOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJpdE9y
Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEJpdFhP
ck5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdFhP
ck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQml0WE9yTm9kZShpbnQsIGludCwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIC8vIG1fZXhwcjEgJiYgbV9leHByMiwgbV9l
eHByMSB8fCBtX2V4cHIyCiAgICAgY2xhc3MgTG9naWNhbE9wTm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBMb2dpY2FsT3BOb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIExvZ2ljYWxPcGVyYXRvcik7
CisgICAgICAgIExvZ2ljYWxPcE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBMb2dpY2FsT3BlcmF0b3IpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTg1LDcgKzk5MCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIC8vIFRoZSB0ZXJuYXJ5IG9wZXJhdG9yLCAibV9sb2dpY2FsID8gbV9leHByMSA6IG1f
ZXhwcjIiCiAgICAgY2xhc3MgQ29uZGl0aW9uYWxOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENvbmRpdGlvbmFsTm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
Mik7CisgICAgICAgIENvbmRpdGlvbmFsTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGxv
Z2ljYWwsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTk5Nyw3ICsxMDAyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlm
aWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpOworICAgICAgICBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoaW50LCBpbnQsIGNvbnN0
IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CkBAIC0xMDExLDcgKzEwMTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFzc2ln
blJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUoaW50
LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZShpbnQsIGludCwgY29uc3Qg
SWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwMjQsNyAr
MTAyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVhZE1vZGlmeUJyYWNrZXRO
b2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lv
bkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGludCwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9y
LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUo
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0
LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2ln
bm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwMzksNyArMTA0NCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgQXNzaWduQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1
YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBBc3Np
Z25CcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSog
c3Vic2NyaXB0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdu
bWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBBc3NpZ25CcmFja2V0
Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJz
Y3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50
cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CkBAIC0xMDUzLDcgKzEwNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIEFzc2lnbkRvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBBc3NpZ25Eb3ROb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9u
Tm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBBc3NpZ25E
b3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDY2LDcgKzEwNzEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlYWRNb2RpZnlEb3ROb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1
YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShpbnQs
IGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwODAsNyArMTA4NSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXNzaWduRXJyb3JOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgQXNzaWduRXJyb3JOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIE9wZXJh
dG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXNzaWduRXJyb3JOb2RlKGlu
dCwgaW50LCBFeHByZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTA5NCw3
ICsxMDk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb21tYU5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBQYXJzZXJBcmVuYURlbGV0YWJsZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBDb21tYU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMik7CisgICAgICAgIENvbW1hTm9kZShpbnQsIGludCwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpOwogCiAgICAgICAgIHVzaW5nIFBh
cnNlckFyZW5hRGVsZXRhYmxlOjpvcGVyYXRvciBuZXc7CiAKQEAgLTExMDksNyArMTExNCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIENvbnN0RGVjbE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29uc3REZWNsTm9kZShpbnQs
IGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBDb25zdERlY2xO
b2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAg
ICAgICBib29sIGhhc0luaXRpYWxpemVyKCkgY29uc3QgeyByZXR1cm4gbV9pbml0OyB9CiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50KCkgeyByZXR1cm4gbV9pZGVudDsgfQpAQCAtMTEy
OSw3ICsxMTM0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zdFN0YXRlbWVu
dE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDb25z
dFN0YXRlbWVudE5vZGUoaW50LCBDb25zdERlY2xOb2RlKiBuZXh0KTsKKyAgICAgICAgQ29uc3RT
dGF0ZW1lbnROb2RlKGludCwgaW50LCBDb25zdERlY2xOb2RlKiBuZXh0KTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTExNTQsNyArMTE1OSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgQmxvY2tOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgQmxvY2tOb2RlKGludCwgU291cmNlRWxlbWVudHMqID0gMCk7
CisgICAgICAgIEJsb2NrTm9kZShpbnQsIGludCwgU291cmNlRWxlbWVudHMqID0gMCk7CiAKICAg
ICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50KCkgY29uc3Q7CiAgICAgICAgIFN0
YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnQoKSBjb25zdDsKQEAgLTExNjksNyArMTE3NCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRW1wdHlTdGF0ZW1lbnROb2RlIDogcHVibGlj
IFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRW1wdHlTdGF0ZW1lbnROb2Rl
KGludCk7CisgICAgICAgIEVtcHR5U3RhdGVtZW50Tm9kZShpbnQsIGludCk7CiAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMTc5LDcgKzExODQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBEZWJ1Z2dlclN0YXRlbWVudE5vZGUgOiBwdWJsaWMg
U3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5v
ZGUoaW50KTsKKyAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnROb2RlKGludCwgaW50KTsKICAgICAg
ICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTE4Nyw3ICsxMTky
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFeHByU3RhdGVtZW50Tm9kZSA6IHB1
YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV4cHJTdGF0ZW1lbnRO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUoaW50
LCBpbnQsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIo
KSBjb25zdCB7IHJldHVybiBtX2V4cHI7IH0KIApAQCAtMTIwMSw4ICsxMjA2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBWYXJTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVu
dE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVmFyU3RhdGVtZW50Tm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKik7ICAgICAgICAKLQorICAgICAgICBWYXJTdGF0ZW1lbnROb2RlKGludCwgaW50
LCBFeHByZXNzaW9uTm9kZSopOwogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
IApAQCAtMTIxMSw3ICsxMjE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZk5v
ZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBJZk5vZGUo
aW50LCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrKTsK
KyAgICAgICAgSWZOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0
ZW1lbnROb2RlKiBpZkJsb2NrKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpAQCAtMTIyMiw3ICsxMjI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJ
ZkVsc2VOb2RlIDogcHVibGljIElmTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBJZkVsc2VO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9j
aywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2NrKTsKKyAgICAgICAgSWZFbHNlTm9kZShpbnQsIGlu
dCwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3Rh
dGVtZW50Tm9kZSogZWxzZUJsb2NrKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTEyMzIsNyArMTIzNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
RG9XaGlsZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBEb1doaWxlTm9kZShpbnQsIFN0YXRlbWVudE5vZGUqLCBFeHByZXNzaW9uTm9kZSopOworICAg
ICAgICBEb1doaWxlTm9kZShpbnQsIGludCwgU3RhdGVtZW50Tm9kZSosIEV4cHJlc3Npb25Ob2Rl
Kik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjQzLDcgKzEy
NDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFdoaWxlTm9kZSA6IHB1YmxpYyBT
dGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdoaWxlTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSopOworICAgICAgICBXaGlsZU5vZGUoaW50LCBpbnQs
IEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwpAQCAtMTI1NCw3ICsxMjU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBGb3JOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgRm9yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0YXRlbWVudE5vZGUqLCBib29sIGV4
cHIxV2FzVmFyRGVjbCk7CisgICAgICAgIEZvck5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0
YXRlbWVudE5vZGUqLCBib29sIGV4cHIxV2FzVmFyRGVjbCk7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjY4LDggKzEyNzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEZvckluTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRm9ySW5Ob2RlKEpT
R2xvYmFsRGF0YSosIGludCwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRl
bWVudE5vZGUqKTsKLSAgICAgICAgRm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSosIGludCwgY29uc3Qg
SWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnRO
b2RlKiwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpOworICAgICAg
ICBGb3JJbk5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiwgRXhw
cmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7CisgICAgICAgIEZvckluTm9kZShKU0dsb2Jh
bERhdGEqLCBpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgRXhw
cmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQs
IGludCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpA
QCAtMTI4NCw4ICsxMjg4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb250aW51
ZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENvbnRpbnVlTm9kZShKU0dsb2JhbERhdGEqLCBp
bnQpOwotICAgICAgICBDb250aW51ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAg
ICAgIENvbnRpbnVlTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCk7CisgICAgICAgIENvbnRp
bnVlTm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjk1LDggKzEyOTksOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIEJyZWFrTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBw
dWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQnJl
YWtOb2RlKEpTR2xvYmFsRGF0YSosIGludCk7Ci0gICAgICAgIEJyZWFrTm9kZShpbnQsIGNvbnN0
IElkZW50aWZpZXImKTsKKyAgICAgICAgQnJlYWtOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgaW50
KTsKKyAgICAgICAgQnJlYWtOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAg
ICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEzMDYsNyArMTMx
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmV0dXJuTm9kZSA6IHB1YmxpYyBT
dGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgUmV0dXJuTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSk7CisgICAg
ICAgIFJldHVybk5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSk7CiAKICAgICAg
ICAgRXhwcmVzc2lvbk5vZGUqIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQogCkBAIC0xMzIw
LDcgKzEzMjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFdpdGhOb2RlIDogcHVi
bGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgV2l0aE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqLCB1aW50MzJfdCBkaXZvdCwgdWludDMyX3Qg
ZXhwcmVzc2lvbkxlbmd0aCk7CisgICAgICAgIFdpdGhOb2RlKGludCwgaW50LCBFeHByZXNzaW9u
Tm9kZSosIFN0YXRlbWVudE5vZGUqLCB1aW50MzJfdCBkaXZvdCwgdWludDMyX3QgZXhwcmVzc2lv
bkxlbmd0aCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMzMz
LDcgKzEzMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIExhYmVsTm9kZSA6IHB1
YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgTGFiZWxOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwg
U3RhdGVtZW50Tm9kZSopOworICAgICAgICBMYWJlbE5vZGUoaW50LCBpbnQsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKQEAgLTEzNDQsNyArMTM0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgVGhyb3dOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBUaHJvd05vZGUoaW50LCBFeHBy
ZXNzaW9uTm9kZSopOworICAgICAgICBUaHJvd05vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2Rl
Kik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMzU0LDcgKzEz
NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFRyeU5vZGUgOiBwdWJsaWMgU3Rh
dGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBUcnlOb2RlKGludCwgU3RhdGVtZW50
Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2VwdGlvbklkZW50LCBTdGF0ZW1l
bnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spOworICAgICAg
ICBUcnlOb2RlKGludCwgaW50LCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRp
ZmllciYgZXhjZXB0aW9uSWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVu
dE5vZGUqIGZpbmFsbHlCbG9jayk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CkBAIC0xMzgzLDggKzEzODcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRl
ZiBEZWNsYXJhdGlvblN0YWNrczo6VmFyU3RhY2sgVmFyU3RhY2s7CiAgICAgICAgIHR5cGVkZWYg
RGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2sgRnVuY3Rpb25TdGFjazsKIAotICAgICAg
ICBTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBib29sIGluU3RyaWN0Q29udGV4dCk7Ci0g
ICAgICAgIFNjb3BlTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGNvbnN0IFNvdXJjZUNvZGUmLCBT
b3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQm
LCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBTY29wZU5vZGUoSlNH
bG9iYWxEYXRhKiwgaW50LCBpbnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgU2Nv
cGVOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgaW50LCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNl
RWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgQ29k
ZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB1c2luZyBQYXJzZXJBcmVu
YVJlZkNvdW50ZWQ6Om9wZXJhdG9yIG5ldzsKIApAQCAtMTQ0NiwxMiArMTQ1MCwxMiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBQcm9ncmFtTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSBm
YWxzZTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IGNyZWF0ZShKU0ds
b2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNr
KiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBu
dW1Db25zdGFudHMpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gY3Jl
YXRlKEpTR2xvYmFsRGF0YSosIGludCwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwg
RnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBz
Y29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFByb2dyYW1O
b2RlKEpTR2xvYmFsRGF0YSosIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0
aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJl
cywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIFByb2dyYW1Ob2RlKEpTR2xvYmFsRGF0YSos
IGludCwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElk
ZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzKTsKIAogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CiAgICAgfTsKQEAgLTE0NTksMTIgKzE0
NjMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRXZhbE5vZGUgOiBwdWJsaWMgU2Nv
cGVOb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzRnVuY3Rp
b25Ob2RlID0gZmFsc2U7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2YWxOb2RlPiBjcmVh
dGUoSlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rp
b25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZhbE5vZGU+
IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFj
ayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENv
ZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAgICAgICBFdmFs
Tm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5j
dGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVy
ZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBFdmFsTm9kZShKU0dsb2JhbERhdGEqLCBp
bnQsIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVu
dGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cyk7CiAKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogICAgIH07CkBAIC0xNDgxLDggKzE0ODUs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvbkJvZHlOb2RlIDogcHVibGlj
IFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0Z1
bmN0aW9uTm9kZSA9IHRydWU7Ci0gICAgICAgIHN0YXRpYyBGdW5jdGlvbkJvZHlOb2RlKiBjcmVh
dGUoSlNHbG9iYWxEYXRhKiwgaW50LCBib29sIGlzU3RyaWN0TW9kZSk7Ci0gICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQs
IFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNl
dCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwor
ICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlKEpTR2xvYmFsRGF0YSosIGlu
dCwgaW50LCBib29sIGlzU3RyaWN0TW9kZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1
bmN0aW9uQm9keU5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCwgU291cmNlRWxl
bWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3Qg
U291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAg
RnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLmdldCgpOyB9CiAgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyYW1ldGVycy0+c2l6ZSgpOyB9CkBAIC0xNDk5LDggKzE1MDMsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gdHJ1
ZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRh
KiwgaW50LCBib29sIGluU3RyaWN0Q29udGV4dCk7Ci0gICAgICAgIEZ1bmN0aW9uQm9keU5vZGUo
SlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25T
dGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBp
bnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEq
LCBpbnQsIGludCwgYm9vbCBpblN0cmljdENvbnRleHQpOworICAgICAgICBGdW5jdGlvbkJvZHlO
b2RlKEpTR2xvYmFsRGF0YSosIGludCwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwg
RnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7
CiAgICAgICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7CkBAIC0xNTA5LDcgKzE1MTMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmNFeHByTm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jRXhwck5vZGUoaW50LCBjb25z
dCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJh
bWV0ZXJOb2RlKiA9IDApOworICAgICAgICBGdW5jRXhwck5vZGUoaW50LCBpbnQsIGNvbnN0IElk
ZW50aWZpZXImLCBGdW5jdGlvbkJvZHlOb2RlKiwgY29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRl
ck5vZGUqID0gMCk7CiAKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSgpIHsgcmV0dXJu
IG1fYm9keTsgfQogCkBAIC0xNTIzLDcgKzE1MjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIEZ1bmNEZWNsTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIEZ1bmNEZWNsTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbkJv
ZHlOb2RlKiwgY29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRlck5vZGUqID0gMCk7CisgICAgICAg
IEZ1bmNEZWNsTm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uQm9keU5v
ZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsKIAogICAgICAgICBG
dW5jdGlvbkJvZHlOb2RlKiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9CiAKQEAgLTE1NzQsNyAr
MTU3OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3dpdGNoTm9kZSA6IHB1Ymxp
YyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFN3aXRjaE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSosIENhc2VCbG9ja05vZGUqKTsKKyAgICAgICAgU3dpdGNoTm9kZShpbnQs
IGludCwgRXhwcmVzc2lvbk5vZGUqLCBDYXNlQmxvY2tOb2RlKik7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKaW5kZXggZDg4YTlhOGI3NmJlZGU4YTA5MmFlN2ZiMmM1ZmJkYzVhZDU4ZmEzOS4uZGY0YmM5
NTBjMTU0NTk3ZmQ1MTg3NTg2N2YwMTI1NmMxNmY2YmY1NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTcyLDYgKzE3Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRl
eHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFZBUikpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9
IHRva2VuQ29sdW1uKCk7CiAgICAgaW50IHN0YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVu
ZCA9IDA7CiAgICAgaW50IHNjcmF0Y2g7CkBAIC0xODIsMjAgKzE4MywyMSBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
VmFyRGVjbGFyYXRpbwogICAgIGZhaWxJZlRydWUobV9lcnJvcik7CiAgICAgZmFpbElmRmFsc2Uo
YXV0b1NlbWlDb2xvbigpKTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVWYXJTdGF0
ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdmFyRGVjbHMsIHN0YXJ0LCBlbmQpOwor
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVZhclN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgdmFyRGVjbHMsIHN0YXJ0LCBlbmQpOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnN0RGVjbGFyYXRpb24oVHJl
ZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKENPTlNUVE9LRU4pKTsKKyAg
ICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBzdGFydCA9IHRv
a2VuTGluZSgpOwogICAgIGludCBlbmQgPSAwOwogICAgIFRyZWVDb25zdERlY2xMaXN0IGNvbnN0
RGVjbHMgPSBwYXJzZUNvbnN0RGVjbGFyYXRpb25MaXN0KGNvbnRleHQpOwogICAgIGZhaWxJZlRy
dWUobV9lcnJvcik7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKICAgICAKLSAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVDb25zdFN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBjb25zdERlY2xzLCBzdGFydCwgZW5kKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVDb25zdFN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVt
biwgY29uc3REZWNscywgc3RhcnQsIGVuZCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+CkBAIC0yMTAsNiArMjEyLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURvV2hpbGVTdGF0ZW0KICAgICBl
bmRMb29wKCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICBpbnQgZW5kTGluZSA9
IHRva2VuTGluZSgpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAg
ICAgY29uc3VtZU9yRmFpbChXSElMRSk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwog
ICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CkBAIC0y
MTcsMTMgKzIyMCwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRG9XaGlsZVN0YXRlbQogICAgIGNvbnN1bWVPckZh
aWwoQ0xPU0VQQVJFTik7CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIG5leHQo
KTsgLy8gQWx3YXlzIHBlcmZvcm1zIGF1dG9tYXRpYyBzZW1pY29sb24gaW5zZXJ0aW9uLgotICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgc3RhdGVtZW50LCBleHByLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwga2V5VG9rZW5Db2x1bW4sIHN0YXRlbWVudCwgZXhwciwgc3RhcnRMaW5lLCBlbmRMaW5lKTsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaGlsZVN0YXRl
bWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goV0hJTEUpKTsK
KyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBzdGFydExp
bmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFS
RU4pOwpAQCAtMjM2LDcgKzI0MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaGlsZVN0YXRlbWVuCiAgICAgVHJl
ZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOwog
ICAgIGVuZExvb3AoKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwotICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZVdoaWxlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4
cHIsIHN0YXRlbWVudCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVXaGlsZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNv
bHVtbiwgZXhwciwgc3RhdGVtZW50LCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMjQ1LDYgKzI0OSw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFy
RGVjbGFyYXRpCiAgICAgVHJlZUV4cHJlc3Npb24gdmFyRGVjbHMgPSAwOwogICAgIGRvIHsKICAg
ICAgICAgZGVjbGFyYXRpb25zKys7CisgICAgICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2Vu
Q29sdW1uKCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwog
ICAgICAgICAKQEAgLTI2NiwxMSArMjcxLDExIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpCiAg
ICAgICAgICAgICBsYXN0SW5pdGlhbGl6ZXIgPSBpbml0aWFsaXplcjsKICAgICAgICAgICAgIGZh
aWxJZkZhbHNlKGluaXRpYWxpemVyKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgVHJlZUV4
cHJlc3Npb24gbm9kZSA9IGNvbnRleHQuY3JlYXRlQXNzaWduUmVzb2x2ZShtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCAqbmFtZSwgaW5pdGlhbGl6ZXIsIGluaXRpYWxBc3NpZ25tZW50cyAhPSBt
X2Fzc2lnbm1lbnRDb3VudCwgdmFyU3RhcnQsIHZhckRpdm90LCBsYXN0VG9rZW5FbmQoKSk7Cisg
ICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gY29udGV4dC5jcmVhdGVBc3NpZ25SZXNv
bHZlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCAqbmFtZSwgaW5p
dGlhbGl6ZXIsIGluaXRpYWxBc3NpZ25tZW50cyAhPSBtX2Fzc2lnbm1lbnRDb3VudCwgdmFyU3Rh
cnQsIHZhckRpdm90LCBsYXN0VG9rZW5FbmQoKSk7CiAgICAgICAgICAgICBpZiAoIXZhckRlY2xz
KQogICAgICAgICAgICAgICAgIHZhckRlY2xzID0gbm9kZTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICB2YXJEZWNscyA9IGNvbnRleHQuY29tYmluZUNvbW1hTm9kZXMobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgdmFyRGVjbHMsIG5vZGUpOworICAgICAgICAgICAgICAgIHZh
ckRlY2xzID0gY29udGV4dC5jb21iaW5lQ29tbWFOb2RlcyhtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBrZXlUb2tlbkNvbHVtbiwgdmFyRGVjbHMsIG5vZGUpOwogICAgICAgICB9CiAgICAgfSB3
aGlsZSAobWF0Y2goQ09NTUEpKTsKICAgICByZXR1cm4gdmFyRGVjbHM7CkBAIC0yODMsNiArMjg4
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ29uc3REZWNsTGlzdCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb25zdERlY2wKICAgICBUcmVlQ29uc3REZWNsTGlzdCBjb25z
dERlY2xzID0gMDsKICAgICBUcmVlQ29uc3REZWNsTGlzdCB0YWlsID0gMDsKICAgICBkbyB7Cisg
ICAgICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgICAgIG5leHQo
KTsKICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVy
KiBuYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CkBAIC0yOTUsNyArMzAxLDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ29uc3REZWNsTGlzdCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VDb25zdERlY2wKICAgICAgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWls
ZFN0cmluZ3MpOyAvLyBjb25zdW1lICc9JwogICAgICAgICAgICAgaW5pdGlhbGl6ZXIgPSBwYXJz
ZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICB9Ci0gICAgICAgIHRhaWwg
PSBjb250ZXh0LmFwcGVuZENvbnN0RGVjbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0YWls
LCBuYW1lLCBpbml0aWFsaXplcik7CisgICAgICAgIHRhaWwgPSBjb250ZXh0LmFwcGVuZENvbnN0
RGVjbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgdGFpbCwgbmFt
ZSwgaW5pdGlhbGl6ZXIpOwogICAgICAgICBpZiAoIWNvbnN0RGVjbHMpCiAgICAgICAgICAgICBj
b25zdERlY2xzID0gdGFpbDsKICAgICB9IHdoaWxlIChtYXRjaChDT01NQSkpOwpAQCAtMzA2LDYg
KzMxMiw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3Rh
dGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChGT1IpKTsK
KyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBzdGFydExp
bmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFS
RU4pOwpAQCAtMzU1LDcgKzM2Miw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgICAg
IGVuZExvb3AoKTsKICAgICAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICAgICAgCi0g
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBmb3JJblRhcmdldCwgZm9ySW5Jbml0aWFsaXplciwgZXhwciwgc3RhdGVtZW50LCBk
ZWNsc1N0YXJ0LCBpbkxvY2F0aW9uLCBleHByRW5kLCBpbml0U3RhcnQsIGluaXRFbmQsIHN0YXJ0
TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZm9ySW5UYXJnZXQsIGZv
ckluSW5pdGlhbGl6ZXIsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgaW5Mb2NhdGlvbiwg
ZXhwckVuZCwgaW5pdFN0YXJ0LCBpbml0RW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIH0K
ICAgICAKICAgICBpZiAoIW1hdGNoKFNFTUlDT0xPTikpIHsKQEAgLTM5MSw3ICszOTgsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAgICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9
IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CiAgICAgICAgIGVuZExvb3AoKTsKICAg
ICAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRm9yTG9vcChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBkZWNscywgY29uZGl0aW9uLCBp
bmNyZW1lbnQsIHN0YXRlbWVudCwgaGFzRGVjbGFyYXRpb24sIHN0YXJ0TGluZSwgZW5kTGluZSk7
CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckxvb3AobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGRlY2xzLCBjb25kaXRpb24sIGluY3JlbWVudCwgc3Rh
dGVtZW50LCBoYXNEZWNsYXJhdGlvbiwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICB9CiAgICAg
CiAgICAgLy8gRm9yLWluIGxvb3AKQEAgLTQwOCwxMyArNDE1LDE0IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JT
dGF0ZW1lbnQoCiAgICAgZW5kTG9vcCgpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAg
ICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIGRlY2xzLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBl
eHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZv
ckluTG9vcChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZGVjbHMs
IGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgZGVjbHNFbmQsIGV4cHJFbmQsIHN0YXJ0TGlu
ZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlQnJlYWtTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1h
dGNoKEJSRUFLKSk7CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAg
ICBpbnQgc3RhcnRDb2wgPSB0b2tlblN0YXJ0KCk7CiAgICAgaW50IGVuZENvbCA9IHRva2VuRW5k
KCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwpAQCAtNDIzLDcgKzQzMSw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VCcmVha1N0YXRlbWVuCiAgICAgCiAgICAgaWYgKGF1dG9TZW1pQ29sb24oKSkg
ewogICAgICAgICBmYWlsSWZGYWxzZVdpdGhNZXNzYWdlKGJyZWFrSXNWYWxpZCgpLCAiJ2JyZWFr
JyBpcyBvbmx5IHZhbGlkIGluc2lkZSBhIHN3aXRjaCBvciBsb29wIHN0YXRlbWVudCIpOwotICAg
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCcmVha1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVCcmVha1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRM
aW5lKTsKICAgICB9CiAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwogICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CkBAIC00MzIsMTMgKzQ0MCwxNCBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlQnJlYWtTdGF0ZW1lbgogICAgIGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBu
ZXh0KCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVCcmVha1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBpZGVu
dCwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVCcmVha1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlU
b2tlbkNvbHVtbiwgaWRlbnQsIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29udGludWVT
dGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKENPTlRJ
TlVFKSk7CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBpbnQg
c3RhcnRDb2wgPSB0b2tlblN0YXJ0KCk7CiAgICAgaW50IGVuZENvbCA9IHRva2VuRW5kKCk7CiAg
ICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwpAQCAtNDQ3LDcgKzQ1Niw3IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VDb250aW51ZVN0YXRlCiAgICAgCiAgICAgaWYgKGF1dG9TZW1pQ29sb24oKSkgewogICAg
ICAgICBmYWlsSWZGYWxzZVdpdGhNZXNzYWdlKGNvbnRpbnVlSXNWYWxpZCgpLCAiJ2NvbnRpbnVl
JyBpcyBvbmx5IHZhbGlkIGluc2lkZSBhIGxvb3Agc3RhdGVtZW50Iik7Ci0gICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGtleVRva2VuQ29sdW1uLCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUp
OwogICAgIH0KICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAgY29uc3QgSWRlbnRpZmllciog
aWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKQEAgLTQ1OCwxMyArNDY3LDE0IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VDb250aW51ZVN0YXRlCiAgICAgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQo
KTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwotICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGlkZW50
LCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtl
eVRva2VuQ29sdW1uLCBpZGVudCwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5l
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VSZXR1cm5T
dGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFJFVFVS
TikpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgZmFpbElm
RmFsc2UoY3VycmVudFNjb3BlKCktPmlzRnVuY3Rpb24oKSk7CiAgICAgaW50IHN0YXJ0TGluZSA9
IHRva2VuTGluZSgpOwogICAgIGludCBlbmRMaW5lID0gc3RhcnRMaW5lOwpAQCAtNDc3LDIwICs0
ODcsMjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVJldHVyblN0YXRlbWUKICAgICBpZiAobWF0Y2goU0VNSUNPTE9O
KSkKICAgICAgICAgZW5kTGluZSAgPSB0b2tlbkxpbmUoKTsKICAgICBpZiAoYXV0b1NlbWlDb2xv
bigpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgMCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsK
KyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCAwLCBzdGFydCwgZW5kLCBzdGFydExpbmUs
IGVuZExpbmUpOwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29u
dGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcik7CiAgICAgZW5kID0gbGFzdFRva2VuRW5kKCk7
CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIGVuZExpbmUgID0gdG9rZW5MaW5l
KCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwg
c3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVSZXR1cm5TdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1
bW4sIGV4cHIsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVGhyb3dTdGF0ZW1lbnQoVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFRIUk9XKSk7CisgICAgaW50IGtleVRv
a2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBpbnQgZVN0YXJ0ID0gdG9rZW5TdGFydCgp
OwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CkBAIC01MDMs
MTMgKzUxNCwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVGhyb3dTdGF0ZW1lbgogICAgIGludCBlbmRMaW5lID0g
dG9rZW5MaW5lKCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKICAgICAKLSAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVUaHJvd1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBleHByLCBlU3RhcnQsIGVFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlVGhyb3dTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwga2V5VG9rZW5Db2x1bW4sIGV4cHIsIGVTdGFydCwgZUVuZCwgc3RhcnRMaW5lLCBlbmRMaW5l
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaXRoU3Rh
dGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChXSVRIKSk7
CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBmYWlsSWZUcnVl
V2l0aE1lc3NhZ2Uoc3RyaWN0TW9kZSgpLCAiJ3dpdGgnIHN0YXRlbWVudHMgYXJlIG5vdCB2YWxp
ZCBpbiBzdHJpY3QgbW9kZSIpOwogICAgIGN1cnJlbnRTY29wZSgpLT5zZXROZWVkc0Z1bGxBY3Rp
dmF0aW9uKCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwpAQCAtNTI2LDEzICs1
MzgsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVdpdGhTdGF0ZW1lbnQKICAgICBUcmVlU3RhdGVtZW50IHN0YXRl
bWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CiAgICAgZmFpbElmRmFsc2Uo
c3RhdGVtZW50KTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaXRoU3RhdGVtZW50
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIHN0YXRlbWVudCwgc3RhcnQsIGVuZCwg
c3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaXRoU3RhdGVt
ZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBleHByLCBzdGF0
ZW1lbnQsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0
ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3dpdGNoU3RhdGVtZW50KFRyZWVCdWlsZGVy
JiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChTV0lUQ0gpKTsKKyAgICBpbnQga2V5VG9r
ZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUo
KTsKICAgICBuZXh0KCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwpAQCAtNTUzLDcg
KzU2Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VTd2l0Y2hTdGF0ZW1lCiAgICAgZW5kU3dpdGNoKCk7CiAgICAg
Y29uc3VtZU9yRmFpbChDTE9TRUJSQUNFKTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVTd2l0Y2hTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgZmlyc3RD
bGF1c2VzLCBkZWZhdWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2VzLCBzdGFydExpbmUsIGVuZExpbmUp
OworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVN3aXRjaFN0YXRlbWVudChtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZXhwciwgZmlyc3RDbGF1c2VzLCBkZWZhdWx0
Q2xhdXNlLCBzZWNvbmRDbGF1c2VzLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIAogfQogCkBA
IC02MzcsMjAgKzY1MCwyMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0
ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVHJ5U3RhdGVtZW50KAogICAgICAgICBmYWls
SWZGYWxzZShmaW5hbGx5QmxvY2spOwogICAgIH0KICAgICBmYWlsSWZGYWxzZShjYXRjaEJsb2Nr
IHx8IGZpbmFsbHlCbG9jayk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVHJ5U3RhdGVtZW50
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRyeUJsb2NrLCBpZGVudCwgY2F0Y2hCbG9jaywg
ZmluYWxseUJsb2NrLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVUcnlTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4o
KSwgdHJ5QmxvY2ssIGlkZW50LCBjYXRjaEJsb2NrLCBmaW5hbGx5QmxvY2ssIGZpcnN0TGluZSwg
bGFzdExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZURlYnVnZ2VyU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVCht
YXRjaChERUJVR0dFUikpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7
CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIGludCBlbmRMaW5lID0gc3Rh
cnRMaW5lOwogICAgIG5leHQoKTsKICAgICBpZiAobWF0Y2goU0VNSUNPTE9OKSkKICAgICAgICAg
c3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigp
KTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVEZWJ1Z2dlcihtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZURl
YnVnZ2VyKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBzdGFydExp
bmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtNjYx
LDEzICs2NzUsMTMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJsb2NrU3RhdGVtZW4KICAgICBuZXh0KCk7CiAgICAg
aWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
MCwgc3RhcnQsIG1fbGFzdExpbmUpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCbG9j
a1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCAwLCBz
dGFydCwgbV9sYXN0TGluZSk7CiAgICAgfQogICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdWJ0cmVl
ID0gcGFyc2VTb3VyY2VFbGVtZW50czxEb250Q2hlY2tGb3JTdHJpY3RNb2RlPihjb250ZXh0KTsK
ICAgICBmYWlsSWZGYWxzZShzdWJ0cmVlKTsKICAgICBtYXRjaE9yRmFpbChDTE9TRUJSQUNFKTsK
ICAgICBuZXh0KCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3VidHJlZSwgc3RhcnQsIG1fbGFzdExpbmUpOworICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2NrU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIHRva2VuQ29sdW1uKCksIHN1YnRyZWUsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTY5MCw3ICs3MDQsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlU3RhdGVtZW50KFRyZQogICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9u
KGNvbnRleHQpOwogICAgIGNhc2UgU0VNSUNPTE9OOgogICAgICAgICBuZXh0KCk7Ci0gICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUVtcHR5U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCkpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFbXB0eVN0YXRlbWVudChtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpKTsKICAgICBjYXNlIElGOgogICAg
ICAgICByZXR1cm4gcGFyc2VJZlN0YXRlbWVudChjb250ZXh0KTsKICAgICBjYXNlIERPOgpAQCAt
NzU5LDEyICs3NzMsMTIgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgaWYgKG1hdGNo
KENMT1NFQlJBQ0UpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHko
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RyaWN0TW9kZSgpKTsKKyAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRv
a2VuQ29sdW1uKCksIHN0cmljdE1vZGUoKSk7CiAgICAgRGVwdGhNYW5hZ2VyIHN0YXRlbWVudERl
cHRoKCZtX3N0YXRlbWVudERlcHRoKTsKICAgICBtX3N0YXRlbWVudERlcHRoID0gMDsKICAgICB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6RnVuY3Rpb25Cb2R5QnVpbGRlciBib2R5QnVpbGRlcihjb25z
dF9jYXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xvYmFsRGF0YSksIG1fbGV4ZXIuZ2V0KCkpOwogICAg
IGZhaWxJZkZhbHNlKHBhcnNlU291cmNlRWxlbWVudHM8Q2hlY2tGb3JTdHJpY3RNb2RlPihib2R5
QnVpbGRlcikpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBzdHJpY3RNb2RlKCkpOworICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigp
LCBzdHJpY3RNb2RlKCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAt
Nzk0LDcgKzgwOCw3IEBAIHRlbXBsYXRlIDxGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVu
dHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIGNsYXNzCiAgICAgaWYgKGNvbnN0IFNv
dXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBjYWNoZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1
bmN0aW9uQ2FjaGUgPyBmaW5kQ2FjaGVkRnVuY3Rpb25JbmZvKG9wZW5CcmFjZVBvcykgOiAwKSB7
CiAgICAgICAgIC8vIElmIHdlJ3JlIGluIGEgc3RyaWN0IGNvbnRleHQsIHRoZSBjYWNoZWQgZnVu
Y3Rpb24gaW5mbyBtdXN0IHNheSBpdCB3YXMgc3RyaWN0IHRvby4KICAgICAgICAgQVNTRVJUKCFz
dHJpY3RNb2RlKCkgfHwgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7Ci0gICAgICAgIGJvZHkgPSBj
b250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjYWNo
ZWRJbmZvLT5zdHJpY3RNb2RlKTsKKyAgICAgICAgYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rp
b25Cb2R5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGNhY2hlZElu
Zm8tPnN0cmljdE1vZGUpOwogICAgICAgICAKICAgICAgICAgZnVuY3Rpb25TY29wZS0+cmVzdG9y
ZUZ1bmN0aW9uSW5mbyhjYWNoZWRJbmZvKTsKICAgICAgICAgZmFpbElmRmFsc2UocG9wU2NvcGUo
ZnVuY3Rpb25TY29wZSwgVHJlZUJ1aWxkZXI6Ok5lZWRzRnJlZVZhcmlhYmxlSW5mbykpOwpAQCAt
ODU0LDcgKzg2OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhCiAgICAgZmFpbElmRmFsc2Uo
KHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTmVlZHNOYW1lLCB0cnVlPihjb250ZXh0LCBuYW1l
LCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFy
dExpbmUpKSk7CiAgICAgZmFpbElmRmFsc2UobmFtZSk7CiAgICAgZmFpbElmRmFsc2VJZlN0cmlj
dChkZWNsYXJlVmFyaWFibGUobmFtZSkpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmNE
ZWNsU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIG5hbWUsIGJvZHksIHBhcmFt
ZXRlcnMsIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0
TGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgbmFtZSwgYm9keSwgcGFyYW1ldGVy
cywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5l
KTsKIH0KIAogc3RydWN0IExhYmVsSW5mbyB7CkBAIC04ODIsNiArODk2LDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUV4cHJlc3Npb25PckwKICAgICBkbyB7CiAgICAgICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQo
KTsKICAgICAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgICAgICBpbnQga2V5
VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgICAgICBpZiAoIW5leHRUb2tlbklzQ29s
b24oKSkgewogICAgICAgICAgICAgLy8gSWYgd2UgaGl0IHRoaXMgcGF0aCB3ZSdyZSBtYWtpbmcg
YSBleHByZXNzaW9uIHN0YXRlbWVudCwgd2hpY2gKICAgICAgICAgICAgIC8vIGJ5IGRlZmluaXRp
b24gY2FuJ3QgbWFrZSB1c2Ugb2YgY29udGludWUvYnJlYWsgc28gd2UgY2FuIGp1c3QKQEAgLTg4
OSw3ICs5MDQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lvbk9yTAogICAgICAgICAgICAgVHJlZUV4
cHJlc3Npb24gZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKGV4cHJlc3Npb24pOwogICAgICAgICAgICAgZmFpbElmRmFsc2UoYXV0
b1NlbWlDb2xvbigpKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0
ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcmVzc2lvbiwgc3RhcnRMaW5lLCBt
X2xhc3RMaW5lKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1l
bnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGV4cHJlc3Npb24s
IHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CiAgICAgICAgIH0KICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgaW50IGVuZCA9IHRv
a2VuRW5kKCk7CkBAIC05MjgsNyArOTQzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb25PckwKICAg
ICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGFi
ZWxzLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGNvbnN0IExhYmVsSW5mbyYgaW5mbyA9IGxhYmVs
c1tsYWJlbHMuc2l6ZSgpIC0gaSAtIDFdOwotICAgICAgICBzdGF0ZW1lbnQgPSBjb250ZXh0LmNy
ZWF0ZUxhYmVsU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGluZm8ubV9pZGVu
dCwgc3RhdGVtZW50LCBpbmZvLm1fc3RhcnQsIGluZm8ubV9lbmQpOworICAgICAgICBzdGF0ZW1l
bnQgPSBjb250ZXh0LmNyZWF0ZUxhYmVsU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHRva2VuQ29sdW1uKCksIGluZm8ubV9pZGVudCwgc3RhdGVtZW50LCBpbmZvLm1fc3RhcnQs
IGluZm8ubV9lbmQpOwogICAgIH0KICAgICByZXR1cm4gc3RhdGVtZW50OwogfQpAQCAtOTM3LDE3
ICs5NTIsMTggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBy
ZXNzaW9uU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIGludCBzdGFydExp
bmUgPSB0b2tlbkxpbmUoKTsKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigp
OwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb24oY29udGV4
dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcmVzc2lvbik7CiAgICAgZmFpbElmRmFsc2UoYXV0b1Nl
bWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHJlc3Npb24sIHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7
CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZXhwcmVzc2lvbiwgc3RhcnRMaW5lLCBtX2xhc3RM
aW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJZlN0
YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goSUYpKTsK
LSAgICAKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBz
dGFydCA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICAKQEAgLTk2Myw3ICs5NzksNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVAogICAgIGZhaWxJZkZhbHNlKHRydWVCbG9jayk7CiAg
ICAgCiAgICAgaWYgKCFtYXRjaChFTFNFKSkKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
SWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxv
Y2ssIHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJZlN0YXRlbWVu
dChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgY29uZGl0aW9uLCB0
cnVlQmxvY2ssIHN0YXJ0LCBlbmQpOwogICAgIAogICAgIFZlY3RvcjxUcmVlRXhwcmVzc2lvbj4g
ZXhwclN0YWNrOwogICAgIFZlY3RvcjxwYWlyPGludCwgaW50PiA+IHBvc1N0YWNrOwpAQCAtMTAw
Myw3ICsxMDE5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlmU3RhdGVtZW50KFQKICAgICAgICAgc3RhdGVtZW50
U3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICBwYWlyPGludCwgaW50PiBwb3MgPSBwb3NTdGFj
ay5sYXN0KCk7CiAgICAgICAgIHBvc1N0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgc3RhdGVt
ZW50U3RhY2suYXBwZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHBvcy5maXJzdCwgcG9zLnNlY29uZCkp
OworICAgICAgICBzdGF0ZW1lbnRTdGFjay5hcHBlbmQoY29udGV4dC5jcmVhdGVJZlN0YXRlbWVu
dChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBjb25kaXRpb24sIHRy
dWVCbG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vjb25kKSk7CiAgICAgfQogICAgIAogICAgIHdoaWxl
ICghZXhwclN0YWNrLmlzRW1wdHkoKSkgewpAQCAtMTAxNSwxNiArMTAzMSwxNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSWZTdGF0ZW1lbnQoVAogICAgICAgICBzdGF0ZW1lbnRTdGFjay5yZW1vdmVMYXN0KCk7CiAg
ICAgICAgIHBhaXI8aW50LCBpbnQ+IHBvcyA9IHBvc1N0YWNrLmxhc3QoKTsKICAgICAgICAgcG9z
U3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICBzdGF0ZW1lbnRTdGFjay5hcHBlbmQoY29udGV4
dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjb25kaXRpb24s
IHRydWVCbG9jaywgZmFsc2VCbG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vjb25kKSk7CisgICAgICAg
IHN0YXRlbWVudFN0YWNrLmFwcGVuZChjb250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBm
YWxzZUJsb2NrLCBwb3MuZmlyc3QsIHBvcy5zZWNvbmQpKTsKICAgICB9CiAgICAgCi0gICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
Y29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXRlbWVudFN0YWNrLmxhc3QoKSwgc3RhcnQsIGVuZCk7
CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXRlbWVudFN0
YWNrLmxhc3QoKSwgc3RhcnQsIGVuZCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAg
ZmFpbElmU3RhY2tPdmVyZmxvdygpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29s
dW1uKCk7CiAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Np
b24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uobm9kZSk7CiAgICAgaWYgKCFtYXRjaChDT01N
QSkpCkBAIC0xMDM0LDcgKzEwNTEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb24oVAogICAgIG1f
bm9uTEhTQ291bnQrKzsKICAgICBUcmVlRXhwcmVzc2lvbiByaWdodCA9IHBhcnNlQXNzaWdubWVu
dEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UocmlnaHQpOwotICAgIHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpDb21tYSBjb21tYU5vZGUgPSBjb250ZXh0LmNyZWF0ZUNvbW1hRXhw
cihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBub2RlLCByaWdodCk7CisgICAgdHlwZW5hbWUg
VHJlZUJ1aWxkZXI6OkNvbW1hIGNvbW1hTm9kZSA9IGNvbnRleHQuY3JlYXRlQ29tbWFFeHByKG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBub2RlLCByaWdodCk7CiAg
ICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250
QnVpbGRTdHJpbmdzKTsKICAgICAgICAgcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9u
KGNvbnRleHQpOwpAQCAtMTA0OSw2ICsxMDY2LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW4K
IHsKICAgICBmYWlsSWZTdGFja092ZXJmbG93KCk7CiAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFy
dCgpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgaW50IGlu
aXRpYWxBc3NpZ25tZW50Q291bnQgPSBtX2Fzc2lnbm1lbnRDb3VudDsKICAgICBpbnQgaW5pdGlh
bE5vbkxIU0NvdW50ID0gbV9ub25MSFNDb3VudDsKICAgICBUcmVlRXhwcmVzc2lvbiBsaHMgPSBw
YXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTEwNzgsNyArMTA5Niw3IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlQXNzaWdubWVuCiAgICAgICAgIH0KICAgICAgICAgbV9ub25Ucml2aWFs
RXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgIGhhZEFzc2lnbm1lbnQgPSB0cnVlOwotICAgICAg
ICBjb250ZXh0LmFzc2lnbm1lbnRTdGFja0FwcGVuZChhc3NpZ25tZW50U3RhY2ssIGxocywgc3Rh
cnQsIHRva2VuU3RhcnQoKSwgbV9hc3NpZ25tZW50Q291bnQsIG9wKTsKKyAgICAgICAgY29udGV4
dC5hc3NpZ25tZW50U3RhY2tBcHBlbmQoYXNzaWdubWVudFN0YWNrLCBsaHMsIHN0YXJ0LCBrZXlU
b2tlbkNvbHVtbiwgbV9hc3NpZ25tZW50Q291bnQsIG9wKTsKICAgICAgICAgc3RhcnQgPSB0b2tl
blN0YXJ0KCk7CiAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgIG5leHQoVHJl
ZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwpAQCAtMTEwMSw3ICsxMTE5LDcgQEAgZW5kOgog
ICAgICAgICByZXR1cm4gbGhzOwogICAgIAogICAgIHdoaWxlIChhc3NpZ25tZW50U3RhY2spCi0g
ICAgICAgIGxocyA9IGNvbnRleHQuY3JlYXRlQXNzaWdubWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBhc3NpZ25tZW50U3RhY2ssIGxocywgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9h
c3NpZ25tZW50Q291bnQsIGxhc3RUb2tlbkVuZCgpKTsKKyAgICAgICAgbGhzID0gY29udGV4dC5j
cmVhdGVBc3NpZ25tZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1u
LCBhc3NpZ25tZW50U3RhY2ssIGxocywgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25t
ZW50Q291bnQsIGxhc3RUb2tlbkVuZCgpKTsKICAgICAKICAgICByZXR1cm4gbGhzOwogfQpAQCAt
MTEwOSw2ICsxMTI3LDcgQEAgZW5kOgogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewor
ICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgVHJlZUV4cHJlc3Np
b24gY29uZCA9IHBhcnNlQmluYXJ5RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxz
ZShjb25kKTsKICAgICBpZiAoIW1hdGNoKFFVRVNUSU9OKSkKQEAgLTExMjEsNyArMTE0MCw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlQ29uZGl0aW9uYWxFCiAgICAgCiAgICAgVHJlZUV4cHJlc3Npb24gcmhzID0g
cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShyaHMp
OwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbmRpdGlvbmFsRXhwcihtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBjb25kLCBsaHMsIHJocyk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
Q29uZGl0aW9uYWxFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1u
LCBjb25kLCBsaHMsIHJocyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgc3RhdGljIGJvb2wgaXNVbmFy
eU9wKEpTVG9rZW5UeXBlIHRva2VuKQpAQCAtMTE2NSw3ICsxMTg0LDcgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VC
aW5hcnlFeHByZXMKICAgICAgICAgICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpCaW5hcnlPcGVy
YW5kIHJocyA9IGNvbnRleHQuZ2V0RnJvbU9wZXJhbmRTdGFjaygtMSk7CiAgICAgICAgICAgICB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3BlcmFuZCBsaHMgPSBjb250ZXh0LmdldEZyb21P
cGVyYW5kU3RhY2soLTIpOwogICAgICAgICAgICAgY29udGV4dC5zaHJpbmtPcGVyYW5kU3RhY2tC
eShvcGVyYW5kU3RhY2tEZXB0aCwgMik7Ci0gICAgICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFy
eU9wZXJhdGlvbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBvcGVyYW5kU3RhY2tEZXB0aCwg
b3BlcmF0b3JTdGFja0RlcHRoLCBsaHMsIHJocyk7CisgICAgICAgICAgICBjb250ZXh0LmFwcGVu
ZEJpbmFyeU9wZXJhdGlvbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigp
LCBvcGVyYW5kU3RhY2tEZXB0aCwgb3BlcmF0b3JTdGFja0RlcHRoLCBsaHMsIHJocyk7CiAgICAg
ICAgICAgICBjb250ZXh0Lm9wZXJhdG9yU3RhY2tQb3Aob3BlcmF0b3JTdGFja0RlcHRoKTsKICAg
ICAgICAgfQogICAgICAgICBjb250ZXh0Lm9wZXJhdG9yU3RhY2tBcHBlbmQob3BlcmF0b3JTdGFj
a0RlcHRoLCBvcGVyYXRvclRva2VuLCBwcmVjZWRlbmNlKTsKQEAgLTExNzYsNyArMTE5NSw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlQmluYXJ5RXhwcmVzCiAgICAgICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpC
aW5hcnlPcGVyYW5kIHJocyA9IGNvbnRleHQuZ2V0RnJvbU9wZXJhbmRTdGFjaygtMSk7CiAgICAg
ICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpCaW5hcnlPcGVyYW5kIGxocyA9IGNvbnRleHQuZ2V0
RnJvbU9wZXJhbmRTdGFjaygtMik7CiAgICAgICAgIGNvbnRleHQuc2hyaW5rT3BlcmFuZFN0YWNr
Qnkob3BlcmFuZFN0YWNrRGVwdGgsIDIpOwotICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9w
ZXJhdGlvbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBvcGVyYW5kU3RhY2tEZXB0aCwgb3Bl
cmF0b3JTdGFja0RlcHRoLCBsaHMsIHJocyk7CisgICAgICAgIGNvbnRleHQuYXBwZW5kQmluYXJ5
T3BlcmF0aW9uKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIG9wZXJh
bmRTdGFja0RlcHRoLCBvcGVyYXRvclN0YWNrRGVwdGgsIGxocywgcmhzKTsKICAgICAgICAgY29u
dGV4dC5vcGVyYXRvclN0YWNrUG9wKG9wZXJhdG9yU3RhY2tEZXB0aCk7CiAgICAgfQogICAgIHJl
dHVybiBjb250ZXh0LnBvcE9wZXJhbmRTdGFjayhvcGVyYW5kU3RhY2tEZXB0aCk7CkBAIC0xMjI4
LDggKzEyNDcsOCBAQCB0ZW1wbGF0ZSA8Ym9vbCBjb21wbGV0ZSwgY2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFycwogICAgICAgICBuZXh0KCk7CiAg
ICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbzxGdW5jdGlvbk5vUmVxdWlyZW1l
bnRzLCBmYWxzZT4oY29udGV4dCwgYWNjZXNzb3JOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVu
QnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7CiAgICAgICAgIGlmIChz
dHJpbmdQcm9wZXJ0eU5hbWUpCi0gICAgICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBj
cmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCB0eXBlLCBzdHJpbmdQcm9wZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5C
cmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7Ci0gICAg
ICAgIHJldHVybiBjb250ZXh0LnRlbXBsYXRlIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8
Y29tcGxldGU+KGNvbnN0X2Nhc3Q8SlNHbG9iYWxEYXRhKj4obV9nbG9iYWxEYXRhKSwgbV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgdHlwZSwgbnVtZXJpY1Byb3BlcnR5TmFtZSwgcGFyYW1ldGVy
cywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xh
c3RMaW5lKTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnRlbXBsYXRlIGNyZWF0ZUdldHRl
ck9yU2V0dGVyUHJvcGVydHk8Y29tcGxldGU+KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRv
a2VuQ29sdW1uKCksIHR5cGUsIHN0cmluZ1Byb3BlcnR5TmFtZSwgcGFyYW1ldGVycywgYm9keSwg
b3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsK
KyAgICAgICAgcmV0dXJuIGNvbnRleHQudGVtcGxhdGUgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9w
ZXJ0eTxjb21wbGV0ZT4oY29uc3RfY2FzdDxKU0dsb2JhbERhdGEqPihtX2dsb2JhbERhdGEpLCBt
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCB0eXBlLCBudW1lcmljUHJv
cGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3Ms
IGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOwogICAgIH0KICAgICBjYXNlIE5VTUJFUjogewog
ICAgICAgICBkb3VibGUgcHJvcGVydHlOYW1lID0gbV90b2tlbi5tX2RhdGEuZG91YmxlVmFsdWU7
CkBAIC0xMjU3LDcgKzEyNzYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU9iamVjdExpdGVyYQogICAgIAogICAg
IGlmIChtYXRjaChDTE9TRUJSQUNFKSkgewogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSk7
CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSk7CiAgICAgfQogICAgIAogICAgIFRyZWVQcm9w
ZXJ0eSBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8ZmFsc2U+KGNvbnRleHQpOwpAQCAtMTI2OSw3
ICsxMjg4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VPYmplY3RMaXRlcmEKICAgICAgICAgbV9sZXhlci0+c2V0
TGluZU51bWJlcihvbGRMaW5lTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHBhcnNlU3RyaWN0T2Jq
ZWN0TGl0ZXJhbChjb250ZXh0KTsKICAgICB9Ci0gICAgVHJlZVByb3BlcnR5TGlzdCBwcm9wZXJ0
eUxpc3QgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBwcm9wZXJ0eSk7CisgICAgVHJlZVByb3BlcnR5TGlzdCBwcm9wZXJ0eUxpc3QgPSBjb250
ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNv
bHVtbigpLCBwcm9wZXJ0eSk7CiAgICAgVHJlZVByb3BlcnR5TGlzdCB0YWlsID0gcHJvcGVydHlM
aXN0OwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAgbmV4dChUcmVlQnVpbGRl
cjo6RG9udEJ1aWxkU3RyaW5ncyk7CkBAIC0xMjg1LDE0ICsxMzA0LDE0IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
T2JqZWN0TGl0ZXJhCiAgICAgICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG9sZExpbmVO
dW1iZXIpOwogICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3RyaWN0T2JqZWN0TGl0ZXJhbChjb250
ZXh0KTsKICAgICAgICAgfQotICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxp
c3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHksIHRhaWwpOworICAgICAgICB0
YWlsID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgdG9rZW5Db2x1bW4oKSwgcHJvcGVydHksIHRhaWwpOwogICAgIH0KICAgICAKICAgICBjb25z
dW1lT3JGYWlsKENMT1NFQlJBQ0UpOwogICAgIAogICAgIG1fbm9uTEhTQ291bnQgPSBvbGROb25M
SFNDb3VudDsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5TGlzdCk7CisgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNv
bHVtbigpLCBwcm9wZXJ0eUxpc3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgpAQCAtMTMwNCw3ICsxMzIzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdHJpY3RPYmplY3QKIAogICAgIGlm
IChtYXRjaChDTE9TRUJSQUNFKSkgewogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSk7Cisg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSk7CiAgICAgfQogICAgIAogICAgIFRyZWVQcm9wZXJ0
eSBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8dHJ1ZT4oY29udGV4dCk7CkBAIC0xMzE2LDcgKzEz
MzUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVN0cmljdE9iamVjdAogICAgIGlmICghbV9zeW50YXhBbHJlYWR5
VmFsaWRhdGVkKQogICAgICAgICBvYmplY3RWYWxpZGF0b3IuYWRkKGNvbnRleHQuZ2V0TmFtZShw
cm9wZXJ0eSkuaW1wbCgpLCBjb250ZXh0LmdldFR5cGUocHJvcGVydHkpKTsKICAgICAKLSAgICBU
cmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5KTsKKyAgICBUcmVlUHJvcGVydHlM
aXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHByb3BlcnR5KTsKICAgICBUcmVlUHJvcGVy
dHlMaXN0IHRhaWwgPSBwcm9wZXJ0eUxpc3Q7CiAgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewog
ICAgICAgICBuZXh0KCk7CkBAIC0xMzM0LDE0ICsxMzUzLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RyaWN0
T2JqZWN0CiAgICAgICAgICAgICAgICAgcHJvcGVydHlFbnRyeS5pdGVyYXRvci0+c2Vjb25kIHw9
IGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAg
ICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIHByb3BlcnR5LCB0YWlsKTsKKyAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRl
UHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHBy
b3BlcnR5LCB0YWlsKTsKICAgICB9CiAgICAgCiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNF
KTsKIAogICAgIG1fbm9uTEhTQ291bnQgPSBvbGROb25MSFNDb3VudDsKIAotICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJv
cGVydHlMaXN0KTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHByb3BlcnR5TGlzdCk7CiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0xMzU4LDcgKzEzNzcsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUFycmF5TGl0ZXJhbAogICAgIH0KICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDS0VUKSkg
ewogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKLSAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZWxp
c2lvbnMpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBlbGlzaW9ucyk7CiAgICAgfQogICAgIAogICAg
IFRyZWVFeHByZXNzaW9uIGVsZW0gPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQp
OwpAQCAtMTM3Nyw3ICsxMzk2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJheUxpdGVyYWwKICAgICAgICAg
CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNLRVQpKSB7CiAgICAgICAgICAgICBuZXh0KFRy
ZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUFycmF5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGVsaXNpb25zLCBlbGVtZW50
TGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBlbGlzaW9ucywgZWxlbWVudExpc3QpOwog
ICAgICAgICB9CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGVsZW0gPSBwYXJzZUFzc2lnbm1lbnRF
eHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShlbGVtKTsKQEAgLTEzODgs
NyArMTQwNyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJyYXlMaXRlcmFsCiAgICAgCiAgICAgbV9ub25MSFND
b3VudCA9IG9sZE5vbkxIU0NvdW50OwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFy
cmF5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGVsZW1lbnRMaXN0KTsKKyAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVt
bigpLCBlbGVtZW50TGlzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBA
IC0xNDEzLDcgKzE0MzIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHByZQogICAgIH0KICAgICBj
YXNlIFRISVNUT0tFTjogewogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0
LnRoaXNFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCkpOworICAgICAgICByZXR1cm4gY29u
dGV4dC50aGlzRXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpKTsK
ICAgICB9CiAgICAgY2FzZSBJREVOVDogewogICAgICAgICBpbnQgc3RhcnQgPSB0b2tlblN0YXJ0
KCk7CkBAIC0xNDIxLDI5ICsxNDQwLDI5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAgICAg
ICAgIG5leHQoKTsKICAgICAgICAgY3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBt
X2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmlkZW50KTsKICAgICAgICAgbV9s
YXN0SWRlbnRpZmllciA9IGlkZW50OwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXNv
bHZlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGlkZW50LCBzdGFydCk7CisgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZVJlc29sdmUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9r
ZW5Db2x1bW4oKSwgaWRlbnQsIHN0YXJ0KTsKICAgICB9CiAgICAgY2FzZSBTVFJJTkc6IHsKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAg
ICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVTdHJpbmcobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgaWRlbnQpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVTdHJpbmcobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgaWRlbnQp
OwogICAgIH0KICAgICBjYXNlIE5VTUJFUjogewogICAgICAgICBkb3VibGUgZCA9IG1fdG9rZW4u
bV9kYXRhLmRvdWJsZVZhbHVlOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZU51bWJlckV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZCk7CisgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU51bWJlckV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgdG9rZW5Db2x1bW4oKSwgZCk7CiAgICAgfQogICAgIGNhc2UgTlVMTFRPS0VOOiB7CiAg
ICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTnVsbChtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTnVsbCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpKTsKICAgICB9CiAgICAgY2Fz
ZSBUUlVFVE9LRU46IHsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVCb29sZWFuKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRydWUpOworICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVCb29sZWFuKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRv
a2VuQ29sdW1uKCksIHRydWUpOwogICAgIH0KICAgICBjYXNlIEZBTFNFVE9LRU46IHsKICAgICAg
ICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCb29sZWFuKG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
Qm9vbGVhbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBmYWxzZSk7
CiAgICAgfQogICAgIGNhc2UgRElWRVFVQUw6CiAgICAgY2FzZSBESVZJREU6IHsKQEAgLTE0NTcs
NyArMTQ3Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAgICAgICAgIAogICAgICAgICBp
bnQgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgVHJlZUV4
cHJlc3Npb24gcmUgPSBjb250ZXh0LmNyZWF0ZVJlZ0V4cChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCAqcGF0dGVybiwgKmZsYWdzLCBzdGFydCk7CisgICAgICAgIFRyZWVFeHByZXNzaW9uIHJl
ID0gY29udGV4dC5jcmVhdGVSZWdFeHAobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5D
b2x1bW4oKSwgKnBhdHRlcm4sICpmbGFncywgc3RhcnQpOwogICAgICAgICBpZiAoIXJlKSB7CiAg
ICAgICAgICAgICBjb25zdCBjaGFyKiB5YXJyRXJyb3JNc2cgPSBZYXJyOjpjaGVja1N5bnRheChw
YXR0ZXJuLT51c3RyaW5nKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFtX2Vycm9yTWVzc2FnZS5p
c051bGwoKSk7CkBAIC0xNDgxLDEzICsxNTAwLDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUFyZ3VtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcmd1bWVudHMoVHJl
CiAgICAgVHJlZUV4cHJlc3Npb24gZmlyc3RBcmcgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9u
KGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGZpcnN0QXJnKTsKICAgICAKLSAgICBUcmVlQXJn
dW1lbnRzTGlzdCBhcmdMaXN0ID0gY29udGV4dC5jcmVhdGVBcmd1bWVudHNMaXN0KG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIGZpcnN0QXJnKTsKKyAgICBUcmVlQXJndW1lbnRzTGlzdCBhcmdM
aXN0ID0gY29udGV4dC5jcmVhdGVBcmd1bWVudHNMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHRva2VuQ29sdW1uKCksIGZpcnN0QXJnKTsKICAgICBUcmVlQXJndW1lbnRzTGlzdCB0YWls
ID0gYXJnTGlzdDsKICAgICB3aGlsZSAobWF0Y2goQ09NTUEpKSB7CiAgICAgICAgIG5leHQoVHJl
ZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwogICAgICAgICBUcmVlRXhwcmVzc2lvbiBhcmcg
PSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxz
ZShhcmcpOwotICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVBcmd1bWVudHNMaXN0KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRhaWwsIGFyZyk7CisgICAgICAgIHRhaWwgPSBjb250ZXh0
LmNyZWF0ZUFyZ3VtZW50c0xpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1
bW4oKSwgdGFpbCwgYXJnKTsKICAgICB9CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsK
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcmd1bWVudHMoYXJnTGlzdCk7CkBAIC0xNTE0LDcg
KzE1MzMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICBpbnQgYm9keVN0YXJ0
TGluZSA9IDA7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVu
Y3Rpb25JbmZvPEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIGZhbHNlPihjb250ZXh0LCBuYW1lLCBw
YXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExp
bmUpKSk7Ci0gICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBuYW1lLCBib2R5LCBwYXJhbWV0ZXJzLCBvcGVuQnJhY2VQb3Ms
IGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOworICAgICAgICBiYXNl
ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
dG9rZW5Db2x1bW4oKSwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBjbG9z
ZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKICAgICB9IGVsc2UKICAgICAg
ICAgYmFzZSA9IHBhcnNlUHJpbWFyeUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgCkBAIC0xNTI5
LDcgKzE1NDgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgaW50IGlu
aXRpYWxBc3NpZ25tZW50cyA9IG1fYXNzaWdubWVudENvdW50OwogICAgICAgICAgICAgVHJlZUV4
cHJlc3Npb24gcHJvcGVydHkgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgICAg
ICBmYWlsSWZGYWxzZShwcm9wZXJ0eSk7Ci0gICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVh
dGVCcmFja2V0QWNjZXNzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGJhc2UsIHByb3BlcnR5
LCBpbml0aWFsQXNzaWdubWVudHMgIT0gbV9hc3NpZ25tZW50Q291bnQsIGV4cHJlc3Npb25TdGFy
dCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQoKSk7CisgICAgICAgICAgICBiYXNlID0gY29udGV4
dC5jcmVhdGVCcmFja2V0QWNjZXNzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29s
dW1uKCksIGJhc2UsIHByb3BlcnR5LCBpbml0aWFsQXNzaWdubWVudHMgIT0gbV9hc3NpZ25tZW50
Q291bnQsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQoKSk7CiAgICAg
ICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0tFVCk7CiAgICAgICAgICAgICBtX25vbkxI
U0NvdW50ID0gbm9uTEhTQ291bnQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1NDIsMTIgKzE1
NjEsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICBpbnQgZXhw
ckVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAgICAgICAgIFRyZWVBcmd1bWVudHMgYXJn
dW1lbnRzID0gcGFyc2VBcmd1bWVudHMoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgZmFpbElm
RmFsc2UoYXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVO
ZXdFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGJhc2UsIGFyZ3VtZW50cywgc3RhcnQs
IGV4cHJFbmQsIGxhc3RUb2tlbkVuZCgpKTsgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGJh
c2UgPSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9r
ZW5Db2x1bW4oKSwgYmFzZSwgYXJndW1lbnRzLCBzdGFydCwgZXhwckVuZCwgbGFzdFRva2VuRW5k
KCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpbnQgZXhwcmVzc2lv
bkVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAgICAgICAgIFRyZWVBcmd1bWVudHMgYXJn
dW1lbnRzID0gcGFyc2VBcmd1bWVudHMoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgZmFpbElm
RmFsc2UoYXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5tYWtlRnVu
Y3Rpb25DYWxsTm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBhcmd1bWVudHMs
IGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgbGFzdFRva2VuRW5kKCkpOworICAgICAg
ICAgICAgICAgIGJhc2UgPSBjb250ZXh0Lm1ha2VGdW5jdGlvbkNhbGxOb2RlKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGJhc2UsIGFyZ3VtZW50cywgZXhwcmVzc2lv
blN0YXJ0LCBleHByZXNzaW9uRW5kLCBsYXN0VG9rZW5FbmQoKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBtX25vbkxIU0NvdW50ID0gbm9uTEhTQ291bnQ7CiAgICAgICAgICAgICBicmVh
azsKQEAgLTE1NTcsNyArMTU3Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAg
ICAgICBpbnQgZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAgICAgbmV4
dEV4cGVjdElkZW50aWZpZXIoTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMgfCBUcmVlQnVp
bGRlcjo6RG9udEJ1aWxkS2V5d29yZHMpOwogICAgICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQp
OwotICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRG90QWNjZXNzKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlkZW50LCBleHByZXNzaW9uU3Rh
cnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kKCkpOworICAgICAgICAgICAgYmFzZSA9IGNvbnRl
eHQuY3JlYXRlRG90QWNjZXNzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1u
KCksIGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlkZW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Np
b25FbmQsIHRva2VuRW5kKCkpOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTE1NjcsNyArMTU4Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhw
cmVzCiAgICAgfQogZW5kTWVtYmVyRXhwcmVzc2lvbjoKICAgICB3aGlsZSAobmV3Q291bnQtLSkK
LSAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3RXhwcihtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBiYXNlLCBzdGFydCwgbGFzdFRva2VuRW5kKCkpOworICAgICAgICBiYXNlID0gY29u
dGV4dC5jcmVhdGVOZXdFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1u
KCksIGJhc2UsIHN0YXJ0LCBsYXN0VG9rZW5FbmQoKSk7CiAgICAgcmV0dXJuIGJhc2U7CiB9CiAK
QEAgLTE2MDAsNyArMTYxOSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgbV9ub25MSFNDb3VudCsrOwotICAgICAgICBjb250ZXh0
LmFwcGVuZFVuYXJ5VG9rZW4odG9rZW5TdGFja0RlcHRoLCBtX3Rva2VuLm1fdHlwZSwgdG9rZW5T
dGFydCgpKTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRVbmFyeVRva2VuKHRva2VuU3RhY2tEZXB0
aCwgbV90b2tlbi5tX3R5cGUsIHRva2VuQ29sdW1uKCkpOwogICAgICAgICBuZXh0KCk7CiAgICAg
ICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgIH0KQEAgLTE2MTcsNyArMTYz
Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgY2FzZSBQTFVTUExVUzoKICAgICAg
ICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgIG1fbm9uTEhTQ291bnQr
KzsKLSAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIGV4cHIsIE9wUGx1c1BsdXMsIHN1YkV4cHJTdGFydCwgbGFzdFRva2VuRW5k
KCksIHRva2VuRW5kKCkpOworICAgICAgICBleHByID0gY29udGV4dC5tYWtlUG9zdGZpeE5vZGUo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZXhwciwgT3BQbHVzUGx1
cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CiAgICAgICAgIG1f
YXNzaWdubWVudENvdW50Kys7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdFdpdGhOYW1lQW5k
TWVzc2FnZShpc0V2YWxPckFyZ3VtZW50cywgIiciLCBtX2xhc3RJZGVudGlmaWVyLT5pbXBsKCks
ICInIGNhbm5vdCBiZSBtb2RpZmllZCBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBmYWlsSWZU
cnVlSWZTdHJpY3QocmVxdWlyZXNMRXhwcik7CkBAIC0xNjI2LDcgKzE2NDUsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVVuYXJ5RXhwcmVzcwogICAgIGNhc2UgTUlOVVNNSU5VUzoKICAgICAgICAgbV9ub25Ucml2
aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgIG1fbm9uTEhTQ291bnQrKzsKLSAgICAgICAg
ZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IGV4cHIsIE9wTWludXNNaW51cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5F
bmQoKSk7CisgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZShtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBleHByLCBPcE1pbnVzTWludXMsIHN1YkV4
cHJTdGFydCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOwogICAgICAgICBtX2Fzc2lnbm1l
bnRDb3VudCsrOwogICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3RXaXRoTmFtZUFuZE1lc3NhZ2Uo
aXNFdmFsT3JBcmd1bWVudHMsICInIiwgbV9sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAiJyBjYW5u
b3QgYmUgbW9kaWZpZWQgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgZmFpbElmVHJ1ZUlmU3Ry
aWN0KHJlcXVpcmVzTEV4cHIpOwpAQCAtMTY0NCwzNiArMTY2MywzNiBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVu
YXJ5RXhwcmVzcwogICAgIHdoaWxlICh0b2tlblN0YWNrRGVwdGgpIHsKICAgICAgICAgc3dpdGNo
IChjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RUeXBlKHRva2VuU3RhY2tEZXB0aCkpIHsKICAg
ICAgICAgY2FzZSBFWENMQU1BVElPTjoKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0
ZUxvZ2ljYWxOb3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7CisgICAgICAgICAg
ICBleHByID0gY29udGV4dC5jcmVhdGVMb2dpY2FsTm90KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHRva2VuQ29sdW1uKCksIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgVElMREU6Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlQml0d2lzZU5vdE5vZGUo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7CisgICAgICAgICAgICBleHByID0gY29u
dGV4dC5tYWtlQml0d2lzZU5vdE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5D
b2x1bW4oKSwgZXhwcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNSU5VUzoK
LSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VOZWdhdGVOb2RlKG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIGV4cHIpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZU5lZ2F0
ZU5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZXhwcik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQTFVTOgotICAgICAgICAgICAgZXhwciA9
IGNvbnRleHQuY3JlYXRlVW5hcnlQbHVzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIp
OworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlVW5hcnlQbHVzKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgUExVU1BMVVM6CiAgICAgICAgIGNhc2UgQVVUT1BMVVNQTFVTOgotICAg
ICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgZXhwciwgT3BQbHVzUGx1cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3Rh
cnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKKyAgICAgICAgICAg
IGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IHRva2VuQ29sdW1uKCksIGV4cHIsIE9wUGx1c1BsdXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNr
TGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CiAgICAg
ICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgTUlOVVNNSU5VUzoKICAgICAgICAgY2FzZSBBVVRPTUlOVVNNSU5VUzoKLSAgICAgICAg
ICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGV4cHIsIE9wTWludXNNaW51cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQo
dG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKKyAgICAgICAgICAgIGV4
cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRv
a2VuQ29sdW1uKCksIGV4cHIsIE9wTWludXNNaW51cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tM
YXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKICAgICAg
ICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBUWVBFT0Y6Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlVHlwZU9mTm9kZSht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250
ZXh0Lm1ha2VUeXBlT2ZOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1u
KCksIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVk9JRFRPS0VOOgot
ICAgICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlVm9pZChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBleHByKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0ZVZvaWQobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZXhwcik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBERUxFVEVUT0tFTjoKICAgICAgICAgICAgIGZhaWxJZlRy
dWVJZlN0cmljdFdpdGhOYW1lQW5kTWVzc2FnZShjb250ZXh0LmlzUmVzb2x2ZShleHByKSwgIkNh
bm5vdCBkZWxldGUgdW5xdWFsaWZpZWQgcHJvcGVydHkiLCBtX2xhc3RJZGVudGlmaWVyLT5pbXBs
KCksICJpbiBzdHJpY3QgbW9kZSIpOwotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZURl
bGV0ZU5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgY29udGV4dC51bmFyeVRv
a2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgZW5kLCBlbmQpOworICAgICAgICAg
ICAgZXhwciA9IGNvbnRleHQubWFrZURlbGV0ZU5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgdG9rZW5Db2x1bW4oKSwgZXhwciwgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQo
dG9rZW5TdGFja0RlcHRoKSwgZW5kLCBlbmQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGRlZmF1bHQ6CiAgICAgICAgICAgICAvLyBJZiB3ZSBnZXQgaGVyZSBzb21ldGhpbmcgaGFzIGdv
bmUgaG9ycmlibHkgaG9ycmlibHkgd3JvbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCmluZGV4IGMyYTExZDY2NWI3OTEzZWM1ZjY0MzFjMDYzNmMxYThhNmRkNmEwMTYuLjhlNmMx
MGI4NTU3N2RmMGI3MGM2YjhhYzc0Mjg1ZDcwYTY4ZTUzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaApAQCAtNTU0LDcgKzU1NCwxMiBAQCBwcml2YXRlOgogICAgICAgICBy
ZXR1cm4gbV90b2tlbi5tX2luZm8uZW5kT2Zmc2V0OwogICAgIH0KICAgICAKLSAgICBjb25zdCBj
aGFyKiBnZXRUb2tlbk5hbWUoSlNUb2tlblR5cGUgdG9rKSAKKyAgICBBTFdBWVNfSU5MSU5FIGlu
dCB0b2tlbkNvbHVtbigpCisgICAgeworICAgICAgICByZXR1cm4gbV90b2tlbi5tX2luZm8uY29s
dW1uOworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIGdldFRva2VuTmFtZShKU1Rva2VuVHlwZSB0
b2spCiAgICAgewogICAgICAgICBzd2l0Y2ggKHRvaykgewogICAgICAgICBjYXNlIE5VTExUT0tF
TjogCkBAIC0xMDA1LDYgKzEwMTAsNyBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iagogICAgIGlm
IChtX3NvdXJjZUVsZW1lbnRzKSB7CiAgICAgICAgIHJlc3VsdCA9IFBhcnNlZE5vZGU6OmNyZWF0
ZSgmbGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4ZXItPmN1cnJlbnRDb2x1bW5OdW1iZXIoKSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc291cmNlRWxlbWVudHMsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhckRlY2xhcmF0aW9ucyA/ICZt
X3ZhckRlY2xhcmF0aW9ucy0+ZGF0YSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2Z1bmNEZWNsYXJhdGlvbnMgPyAmbV9mdW5jRGVjbGFyYXRpb25zLT5kYXRhIDog
MCwKQEAgLTEwMTIsNyArMTAxOCw3IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbV9zb3VyY2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2ZlYXR1cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9udW1Db25zdGFudHMpOwotICAgICAgICByZXN1bHQtPnNldExvYyhtX3Nv
dXJjZS0+Zmlyc3RMaW5lKCksIG1fbGFzdExpbmUpOworICAgICAgICByZXN1bHQtPnNldExvYyht
X3NvdXJjZS0+Zmlyc3RMaW5lKCksIG1fbGFzdExpbmUsIG1fbGV4ZXItPmN1cnJlbnRDb2x1bW5O
dW1iZXIoKSk7CiAgICAgfSBlbHNlIGlmIChsZXhpY2FsR2xvYmFsT2JqZWN0KSB7CiAgICAgICAg
IC8vIFdlIGNhbiBuZXZlciBzZWUgYSBzeW50YXggZXJyb3Igd2hlbiByZXBhcnNpbmcgYSBmdW5j
dGlvbiwgc2luY2Ugd2Ugc2hvdWxkIGhhdmUKICAgICAgICAgLy8gcmVwb3J0ZWQgdGhlIGVycm9y
IHdoZW4gcGFyc2luZyB0aGUgY29udGFpbmluZyBwcm9ncmFtIG9yIGV2YWwgY29kZS4gU28gaWYg
d2UncmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9r
ZW5zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCmluZGV4
IGExZWE3NTFhYzIwYTc5MmZmNGM1ZTYyMWEwMWJjNzc0OWVhM2E5YmYuLjYzYjNmYjgxZTlkMzQ3
MGEzNDdlYjIzNmQzOTBkMzFiMjVmMGM2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXJUb2tlbnMuaApAQCAtMTQxLDEwICsxNDEsMTEgQEAgdW5pb24gSlNUb2tlbkRh
dGEgewogfTsKIAogc3RydWN0IEpTVG9rZW5JbmZvIHsKLSAgICBKU1Rva2VuSW5mbygpIDogbGlu
ZSgwKSB7IH0KKyAgICBKU1Rva2VuSW5mbygpIDogbGluZSgwKSwgY29sdW1uKDApIHsgfQogICAg
IGludCBsaW5lOwogICAgIGludCBzdGFydE9mZnNldDsKICAgICBpbnQgZW5kT2Zmc2V0OworICAg
IGludCBjb2x1bW47CiB9OwogCiBzdHJ1Y3QgSlNUb2tlbiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IGMyYzkzNzU2ZGUwM2FiY2EyOTVkZTEz
YWM4ZWUxMzgxYzdkNDBjNDguLmMzM2JhMDZjYzQwYTQwZmViZWYwODkzZjU0YzkxOWUwZTdjOGEz
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBA
IC0xMTksNDIgKzExOSw0MiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIERv
bnRCdWlsZFN0cmluZ3MgPSBMZXhlckZsYWdzRG9udEJ1aWxkU3RyaW5nczsKIAogICAgIGludCBj
cmVhdGVTb3VyY2VFbGVtZW50cygpIHsgcmV0dXJuIDE7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBt
YWtlRnVuY3Rpb25DYWxsTm9kZShpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biBDYWxsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQ2FsbEV4cHI7IH0KICAg
ICB2b2lkIGFwcGVuZFRvQ29tbWEoRXhwcmVzc2lvblR5cGUmIGJhc2UsIEV4cHJlc3Npb25UeXBl
IHJpZ2h0KSB7IGJhc2UgPSByaWdodDsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbW1h
RXhwcihpbnQsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSByaWdodCkgeyByZXR1cm4g
cmlnaHQ7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlQXNzaWduTm9kZShpbnQsIEV4cHJlc3Np
b25UeXBlLCBPcGVyYXRvciwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGJvb2wsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZVBy
ZWZpeE5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIFByZUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlUG9zdGZpeE5vZGUoaW50
LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFBvc3RF
eHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZVR5cGVPZk5vZGUoaW50LCBFeHByZXNzaW9u
VHlwZSkgeyByZXR1cm4gVHlwZW9mRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VEZWxl
dGVOb2RlKGludCwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERlbGV0
ZUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlTmVnYXRlTm9kZShpbnQsIEV4cHJlc3Np
b25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlQml0
d2lzZU5vdE5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0g
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTG9naWNhbE5vdChpbnQsIEV4cHJlc3Npb25UeXBlKSB7
IHJldHVybiBVbmFyeUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVVbmFyeVBsdXMo
aW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlVm9pZChpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7
IH0KLSAgICBFeHByZXNzaW9uVHlwZSB0aGlzRXhwcihpbnQpIHsgcmV0dXJuIFRoaXNFeHByOyB9
Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVzb2x2ZShpbnQsIGNvbnN0IElkZW50aWZpZXIq
LCBpbnQpIHsgcmV0dXJuIFJlc29sdmVFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
T2JqZWN0TGl0ZXJhbChpbnQpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9CisgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlQ29tbWFFeHByKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSwgRXhw
cmVzc2lvblR5cGUgcmlnaHQpIHsgcmV0dXJuIHJpZ2h0OyB9CisgICAgRXhwcmVzc2lvblR5cGUg
bWFrZUFzc2lnbk5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgRXhwcmVz
c2lvblR5cGUsIGJvb2wsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRF
eHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVByZWZpeE5vZGUoaW50LCBpbnQsIEV4cHJl
c3Npb25UeXBlLCBPcGVyYXRvciwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gUHJlRXhwcjsgfQor
ICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQb3N0Zml4Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvblR5
cGUsIE9wZXJhdG9yLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQb3N0RXhwcjsgfQorICAgIEV4
cHJlc3Npb25UeXBlIG1ha2VUeXBlT2ZOb2RlKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSkgeyBy
ZXR1cm4gVHlwZW9mRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VEZWxldGVOb2RlKGlu
dCwgaW50LCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRGVsZXRlRXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VOZWdhdGVOb2RlKGludCwgaW50LCBFeHByZXNz
aW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZUJp
dHdpc2VOb3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHBy
OyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTG9naWNhbE5vdChpbnQsIGludCwgRXhwcmVz
c2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZVVuYXJ5UGx1cyhpbnQsIGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsg
fQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVZvaWQoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBl
KSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSB0aGlzRXhwcihpbnQs
IGludCkgeyByZXR1cm4gVGhpc0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZXNv
bHZlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiBSZXNvbHZlRXhw
cjsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVjdExpdGVyYWwoaW50LCBpbnQpIHsg
cmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJy
YXkoaW50LCBpbnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVPYmplY3RMaXRlcmFsKGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE9iamVjdExp
dGVyYWxFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyYXkoaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZU51bWJlckV4cHIoaW50LCBkb3VibGUpIHsgcmV0dXJuIE51bWJlckV4cHI7IH0KLSAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVTdHJpbmcoaW50LCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4g
U3RyaW5nRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oaW50LCBib29s
KSB7IHJldHVybiBCb29sRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoaW50
KSB7IHJldHVybiBOdWxsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJyYWNrZXRB
Y2Nlc3MoaW50LCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
RG90QWNjZXNzKGludCwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVn
RXhwKGludCwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYsIGlu
dCkgeyByZXR1cm4gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi51c3RyaW5nKCkpID8gMCA6IFJl
Z0V4cEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGludCwgRXhwcmVz
c2lvblR5cGUsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQotICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoaW50LCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQp
IHsgcmV0dXJuIE5ld0V4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVDb25kaXRpb25h
bEV4cHIoaW50LCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBl
KSB7IHJldHVybiBDb25kaXRpb25hbEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVB
c3NpZ25SZXNvbHZlKGludCwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBib29s
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQotICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KLSAgICBpbnQg
Y3JlYXRlRnVuY3Rpb25Cb2R5KGludCwgYm9vbCkgeyByZXR1cm4gMTsgfQorICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZUFycmF5KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQXJyYXlMaXRl
cmFsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bWJlckV4cHIoaW50LCBpbnQs
IGRvdWJsZSkgeyByZXR1cm4gTnVtYmVyRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZVN0cmluZyhpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIFN0cmluZ0V4cHI7
IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGludCwgaW50LCBib29sKSB7IHJl
dHVybiBCb29sRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU51bGwoaW50LCBpbnQp
IHsgcmV0dXJuIE51bGxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFj
Y2VzcyhpbnQsIGludCwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQs
IGludCwgaW50KSB7IHJldHVybiBCcmFja2V0RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZURvdEFjY2VzcyhpbnQsIGludCwgRXhwcmVzc2lvblR5cGUsIGNvbnN0IElkZW50aWZpZXIq
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEb3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUg
Y3JlYXRlUmVnRXhwKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJ
ZGVudGlmaWVyJiwgaW50KSB7IHJldHVybiBZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnVzdHJp
bmcoKSkgPyAwIDogUmVnRXhwRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4
cHIoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IE5ld0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGludCwgaW50LCBF
eHByZXNzaW9uVHlwZSwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KKyAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVDb25kaXRpb25hbEV4cHIoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlLCBF
eHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIENvbmRpdGlvbmFsRXhwcjsg
fQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFzc2lnblJlc29sdmUoaW50LCBpbnQsIGNvbnN0
IElkZW50aWZpZXImLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gQXNzaWdubWVudEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4
cHIoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50KSB7IHJldHVybiBGdW5jdGlvbkV4cHI7IH0KKyAgICBpbnQgY3JlYXRlRnVuY3Rpb25Cb2R5
KGludCwgaW50LCBib29sKSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygp
IHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKGludCkgeyByZXR1cm4gMTsg
fQotICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGludCwgaW50KSB7IHJldHVybiAxOyB9CiAg
ICAgaW50IGNyZWF0ZUFyZ3VtZW50c0xpc3QoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQor
ICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQogICAgIHRlbXBsYXRlIDxib29sIGNvbXBsZXRlPiBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0
eShjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlKQog
ICAgIHsKICAgICAgICAgaWYgKCFjb21wbGV0ZSkKQEAgLTE2OCw4ICsxNjgsOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CiAgICAgICAgIHJldHVybiBQcm9w
ZXJ0eSgmZ2xvYmFsRGF0YS0+cGFyc2VyQXJlbmEtPmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1l
cmljSWRlbnRpZmllcihnbG9iYWxEYXRhLCBuYW1lKSwgdHlwZSk7CiAgICAgfQotICAgIGludCBj
cmVhdGVQcm9wZXJ0eUxpc3QoaW50LCBQcm9wZXJ0eSkgeyByZXR1cm4gMTsgfQotICAgIGludCBj
cmVhdGVQcm9wZXJ0eUxpc3QoaW50LCBQcm9wZXJ0eSwgaW50KSB7IHJldHVybiAxOyB9CisgICAg
aW50IGNyZWF0ZVByb3BlcnR5TGlzdChpbnQsIGludCwgUHJvcGVydHkpIHsgcmV0dXJuIDE7IH0K
KyAgICBpbnQgY3JlYXRlUHJvcGVydHlMaXN0KGludCwgaW50LCBQcm9wZXJ0eSwgaW50KSB7IHJl
dHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUVsZW1lbnRMaXN0KGludCwgaW50KSB7IHJldHVybiAx
OyB9CiAgICAgaW50IGNyZWF0ZUVsZW1lbnRMaXN0KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KICAgICBpbnQgY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChjb25zdCBJZGVudGlmaWVyJikg
eyByZXR1cm4gMTsgfQpAQCAtMTc3LDQwICsxNzcsNDAgQEAgcHVibGljOgogICAgIGludCBjcmVh
dGVDbGF1c2UoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlz
dChpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQsIGludCkg
eyByZXR1cm4gMTsgfQotICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cyhpbnQpIHsgfQotICAgIGlu
dCBjcmVhdGVGdW5jRGVjbFN0YXRlbWVudChpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUJsb2Nr
U3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVh
dGVFeHByU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGlu
dCBjcmVhdGVJZlN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsg
fQorICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cyhpbnQsIGludCkgeyB9CisgICAgaW50IGNyZWF0
ZUZ1bmNEZWNsU3RhdGVtZW50KGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVCbG9ja1N0
YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBj
cmVhdGVFeHByU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9
CiAgICAgaW50IGNyZWF0ZUlmU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRm9yTG9vcChpbnQsIGludCwgaW50LCBpbnQs
IGludCwgYm9vbCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRm9ySW5M
b29wKGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVGb3JJbkxv
b3AoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQotICAgIGludCBjcmVhdGVFbXB0eVN0YXRlbWVudChpbnQpIHsgcmV0dXJuIDE7IH0KLSAg
ICBpbnQgY3JlYXRlVmFyU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsg
fQotICAgIGludCBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCcmVha1N0YXRl
bWVudChpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50
LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0g
ICAgaW50IGNyZWF0ZVRyeVN0YXRlbWVudChpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVTd2l0Y2hTdGF0
ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0g
ICAgaW50IGNyZWF0ZVdoaWxlU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVdpdGhTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZURvV2hpbGVTdGF0
ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3Jl
YXRlTGFiZWxTdGF0ZW1lbnQoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVUaHJvd1N0YXRlbWVudChpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZURlYnVnZ2VyKGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29uc3RTdGF0ZW1lbnQo
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGFwcGVuZENvbnN0RGVj
bChpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gMTsgfQotICAgIHRl
bXBsYXRlIDxib29sIHN0cmljdD4gUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0
eShpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KQorICAgIGludCBjcmVhdGVJZlN0YXRlbWVudChp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQg
Y3JlYXRlRm9yTG9vcChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBib29sLCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVGb3JJbkxvb3AoaW50LCBpbnQsIGNvbnN0
IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRm9ySW5Mb29wKGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAg
IGludCBjcmVhdGVFbXB0eVN0YXRlbWVudChpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGlu
dCBjcmVhdGVWYXJTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KKyAgICBpbnQgY3JlYXRlUmV0dXJuU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0
ZUJyZWFrU3RhdGVtZW50KGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRl
Q29udGludWVTdGF0ZW1lbnQoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlVHJ5U3RhdGVtZW50KGludCwg
aW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KKyAgICBpbnQgY3JlYXRlU3dpdGNoU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVdoaWxlU3Rh
dGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBp
bnQgY3JlYXRlV2l0aFN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlTGFi
ZWxTdGF0ZW1lbnQoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50KSB7
IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVRocm93U3RhdGVtZW50KGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVEZWJ1Z2dl
cihpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29uc3RT
dGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQg
YXBwZW5kQ29uc3REZWNsKGludCwgaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsg
cmV0dXJuIDE7IH0KKyAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdl
dHRlck9yU2V0dGVyUHJvcGVydHkoaW50LCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBj
b25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KQogICAg
IHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwogICAgICAgICBpZiAoIXN0cmljdCkKICAgICAgICAg
ICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICAgICAgcmV0dXJuIFByb3BlcnR5KG5hbWUs
IHR5cGUpOwogICAgIH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0
ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQsIFBy
b3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBkb3VibGUgbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCkKKyAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdldHRl
ck9yU2V0dGVyUHJvcGVydHkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQsIGludCwgUHJv
cGVydHlOb2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50KQogICAgIHsKICAgICAgICAgaWYgKCFzdHJpY3QpCiAgICAgICAgICAgICByZXR1cm4g
UHJvcGVydHkodHlwZSk7CkBAIC0yMTksNyArMjE5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBh
cHBlbmRTdGF0ZW1lbnQoaW50LCBpbnQpIHsgfQogICAgIHZvaWQgYWRkVmFyKGNvbnN0IElkZW50
aWZpZXIqLCBib29sKSB7IH0KLSAgICBpbnQgY29tYmluZUNvbW1hTm9kZXMoaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjb21iaW5lQ29tbWFOb2RlcyhpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgZXZhbENvdW50KCkgY29uc3QgeyByZXR1cm4g
MDsgfQogICAgIHZvaWQgYXBwZW5kQmluYXJ5RXhwcmVzc2lvbkluZm8oaW50JiBvcGVyYW5kU3Rh
Y2tEZXB0aCwgaW50IGV4cHIsIGludCwgaW50LCBpbnQsIGJvb2wpCiAgICAgewpAQCAtMjM1LDcg
KzIzNSw3IEBAIHB1YmxpYzoKICAgICBib29sIG9wZXJhdG9yU3RhY2tIYXNIaWdoZXJQcmVjZWRl
bmNlKGludCYsIGludCkgeyByZXR1cm4gdHJ1ZTsgfQogICAgIEJpbmFyeU9wZXJhbmQgZ2V0RnJv
bU9wZXJhbmRTdGFjayhpbnQpIHsgcmV0dXJuIG1fdG9wQmluYXJ5RXhwcjsgfQogICAgIHZvaWQg
c2hyaW5rT3BlcmFuZFN0YWNrQnkoaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50IGFtb3VudCkg
eyBvcGVyYW5kU3RhY2tEZXB0aCAtPSBhbW91bnQ7IH0KLSAgICB2b2lkIGFwcGVuZEJpbmFyeU9w
ZXJhdGlvbihpbnQsIGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCYsIEJpbmFyeU9wZXJhbmQs
IEJpbmFyeU9wZXJhbmQpIHsgb3BlcmFuZFN0YWNrRGVwdGgrKzsgfQorICAgIHZvaWQgYXBwZW5k
QmluYXJ5T3BlcmF0aW9uKGludCwgaW50LCBpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQmLCBC
aW5hcnlPcGVyYW5kLCBCaW5hcnlPcGVyYW5kKSB7IG9wZXJhbmRTdGFja0RlcHRoKys7IH0KICAg
ICB2b2lkIG9wZXJhdG9yU3RhY2tBcHBlbmQoaW50JiBvcGVyYXRvclN0YWNrRGVwdGgsIGludCwg
aW50KSB7IG9wZXJhdG9yU3RhY2tEZXB0aCsrOyB9CiAgICAgaW50IHBvcE9wZXJhbmRTdGFjayhp
bnQmKSB7IGludCByZXMgPSBtX3RvcEJpbmFyeUV4cHI7IG1fdG9wQmluYXJ5RXhwciA9IDA7IHJl
dHVybiByZXM7IH0KICAgICAKQEAgLTI0NSw3ICsyNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1
bmFyeVRva2VuU3RhY2tSZW1vdmVMYXN0KGludCYgc3RhY2tEZXB0aCkgeyBzdGFja0RlcHRoID0g
MDsgfQogICAgIAogICAgIHZvaWQgYXNzaWdubWVudFN0YWNrQXBwZW5kKGludCwgaW50LCBpbnQs
IGludCwgaW50LCBPcGVyYXRvcikgeyB9Ci0gICAgaW50IGNyZWF0ZUFzc2lnbm1lbnQoaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDE7
IH0KKyAgICBpbnQgY3JlYXRlQXNzaWdubWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAxOyB9CiAgICAgY29uc3QgSWRl
bnRpZmllciYgZ2V0TmFtZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsgQVNTRVJU
KHByb3BlcnR5Lm5hbWUpOyByZXR1cm4gKnByb3BlcnR5Lm5hbWU7IH0KICAgICBQcm9wZXJ0eU5v
ZGU6OlR5cGUgZ2V0VHlwZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsgcmV0dXJu
IHByb3BlcnR5LnR5cGU7IH0KICAgICBib29sIGlzUmVzb2x2ZShFeHByZXNzaW9uVHlwZSBleHBy
KSBjb25zdCB7IHJldHVybiBleHByID09IFJlc29sdmVFeHByIHx8IGV4cHIgPT0gUmVzb2x2ZUV2
YWxFeHByOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKaW5kZXggZjIyMjdjNzQ1Y2M4YTAxYmQzOGVhOGY0ZDBhYmM3NTM5M2FhMDM5OC4u
ZDNhOTJhN2M0NzU3NzM1MWVkYjBjMDZmZTIxMzhiNmMzNTkwMzFhNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNzUsMjAgKzc1
LDI4IEBAIFN0cmluZyBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludChjb25zdCBTdHJp
bmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVhCiAgICAgU291cmNlSWRUb0JyZWFrcG9pbnRz
TWFwOjppdGVyYXRvciBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmZpbmQoc291cmNlSURW
YWx1ZSk7CiAgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQogICAg
ICAgICBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLnNldChzb3VyY2VJRFZhbHVlLCBMaW5l
VG9CcmVha3BvaW50TWFwKCkpLml0ZXJhdG9yOwotICAgIGlmIChpdC0+c2Vjb25kLmNvbnRhaW5z
KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEpKQotICAgICAgICByZXR1cm4gIiI7Ci0g
ICAgaXQtPnNlY29uZC5zZXQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSwgc2NyaXB0
QnJlYWtwb2ludCk7CisgICAgTGluZVRvQnJlYWtwb2ludE1hcDo6aXRlcmF0b3IgYnJlYWtzSXQg
PSBpdC0+c2Vjb25kLmZpbmQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSk7CisgICAg
aWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisgICAgICAgIGJyZWFrc0l0ID0gaXQt
PnNlY29uZC5zZXQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSwgQnJlYWtwb2ludHNJ
bkxpbmUoKSkuaXRlcmF0b3I7CisKKyAgICBCcmVha3BvaW50c0luTGluZSYgYnJlYWtzVmVjdG9y
ID0gYnJlYWtzSXQtPnNlY29uZDsKKyAgICB1bnNpZ25lZCBicmVha3NDb3VudCA9IGJyZWFrc1Zl
Y3Rvci5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJyZWFrc0NvdW50OyBp
KyspIHsKKyAgICAgICAgaWYgKGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5OdW1iZXIgPT0gc2Ny
aXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXIpCisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAg
fQorICAgIGJyZWFrc1ZlY3Rvci5hcHBlbmQoc2NyaXB0QnJlYWtwb2ludCk7CisKICAgICAqYWN0
dWFsTGluZU51bWJlciA9IHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcjsKLSAgICAvLyBGSVhN
RShXSzUzMDAzKTogaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2ludHMgYnkgbGluZTpjb2x1bW4u
Ci0gICAgKmFjdHVhbENvbHVtbk51bWJlciA9IDA7Ci0gICAgcmV0dXJuIHNvdXJjZUlEICsgIjoi
ICsgU3RyaW5nOjpudW1iZXIoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyKTsKKyAgICAqYWN0
dWFsQ29sdW1uTnVtYmVyID0gc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXI7CisgICAgcmV0
dXJuIHNvdXJjZUlEICsgIjoiICsgU3RyaW5nOjpudW1iZXIoc2NyaXB0QnJlYWtwb2ludC5saW5l
TnVtYmVyKSArICI6IiArIFN0cmluZzo6bnVtYmVyKHNjcmlwdEJyZWFrcG9pbnQuY29sdW1uTnVt
YmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludChjb25z
dCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0b2tlbnM7CiAg
ICAgYnJlYWtwb2ludElkLnNwbGl0KCI6IiwgdG9rZW5zKTsKLSAgICBpZiAodG9rZW5zLnNpemUo
KSAhPSAyKQorICAgIGlmICh0b2tlbnMuc2l6ZSgpICE9IDMpCiAgICAgICAgIHJldHVybjsKICAg
ICBib29sIHN1Y2Nlc3M7CiAgICAgaW50cHRyX3Qgc291cmNlSURWYWx1ZSA9IHRva2Vuc1swXS50
b0ludFB0cigmc3VjY2Vzcyk7CkBAIC05Nyw5ICsxMDUsNjMgQEAgdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6cmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkKICAgICB1
bnNpZ25lZCBsaW5lTnVtYmVyID0gdG9rZW5zWzFdLnRvVUludCgmc3VjY2Vzcyk7CiAgICAgaWYg
KCFzdWNjZXNzKQogICAgICAgICByZXR1cm47CisgICAgdW5zaWduZWQgY29sdW1uTnVtYmVyID0g
dG9rZW5zWzJdLnRvVUludCgmc3VjY2Vzcyk7CisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICBy
ZXR1cm47CisKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9z
b3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRFZhbHVlKTsKLSAgICBpZiAoaXQgIT0g
bV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIGl0LT5zZWNvbmQucmVtb3Zl
KGxpbmVOdW1iZXIgKyAxKTsKKyAgICBpZiAoaXQgPT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMu
ZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBMaW5lVG9CcmVha3BvaW50TWFwOjppdGVyYXRv
ciBicmVha3NJdCA9IGl0LT5zZWNvbmQuZmluZChsaW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGJy
ZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEJyZWFr
cG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25kOworICAgIHVuc2ln
bmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykgeworICAgICAgICBpZiAoYnJlYWtzVmVjdG9y
LmF0KGkpLmNvbHVtbk51bWJlciA9PSBzdGF0aWNfY2FzdDxpbnQ+KGNvbHVtbk51bWJlcikpIHsK
KyAgICAgICAgICAgIGJyZWFrc1ZlY3Rvci5yZW1vdmUoaSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ3Vy
cmVudFN0YXRlbWVudFBvc2l0aW9uKGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZSkKK3sKKyAg
ICBpZiAobGluZSA8IDApCisgICAgICAgIHJldHVybjsKKworICAgIFNvdXJjZVByb3ZpZGVyKiBz
b3VyY2UgPSByZWludGVycHJldF9jYXN0PFNvdXJjZVByb3ZpZGVyKj4oc291cmNlSUQpOworCisg
ICAgaWYgKG1fY3VycmVudFNvdXJjZUlEICE9IHNvdXJjZUlEKSB7CisgICAgICAgIFN0cmluZyBz
b3VyY2VDb2RlID0gdXN0cmluZ1RvU3RyaW5nKEpTQzo6VVN0cmluZyhjb25zdF9jYXN0PFN0cmlu
Z0ltcGwqPihzb3VyY2UtPmRhdGEoKSkpKTsKKyAgICAgICAgbV9jdXJyZW50U291cmNlQ29kZS5j
bGVhcigpOworICAgICAgICBzb3VyY2VDb2RlLnNwbGl0KCJcbiIsIHRydWUsIG1fY3VycmVudFNv
dXJjZUNvZGUpOworICAgICAgICBtX2N1cnJlbnRTb3VyY2VJRCA9IHNvdXJjZUlEOworICAgICAg
ICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyID0gMDsKKyAgICAgICAgbV9j
dXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0gMDsKKyAgICB9CisKKyAgICBp
ZiAobGluZSAhPSBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyKSB7CisgICAg
ICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIgPSBsaW5lOworICAgICAg
ICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIgPSAwOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgaW50IHN0YXJ0TGluZSA9IHNvdXJjZS0+c3RhcnRQb3NpdGlv
bigpLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsKKyAgICBpZiAoKG1fY3VycmVudFN0YXRlbWVudFBv
c2l0aW9uLmxpbmVOdW1iZXIgLSBzdGFydExpbmUgLSAxKSA+PSBzdGF0aWNfY2FzdDxpbnQ+KG1f
Y3VycmVudFNvdXJjZUNvZGUuc2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbnN0IFN0
cmluZyYgY29kZUluTGluZSA9IG1fY3VycmVudFNvdXJjZUNvZGVbbV9jdXJyZW50U3RhdGVtZW50
UG9zaXRpb24ubGluZU51bWJlciAtIHN0YXJ0TGluZSAtIDFdOworICAgIGlmIChjb2RlSW5MaW5l
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGludCBuZXh0Q29sdW1uID0gY29kZUlu
TGluZS5maW5kKCI7IiwgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyKTsK
KyAgICBpZiAobmV4dENvbHVtbiAhPSAtMSkgeworICAgICAgICBVQ2hhciBjID0gY29kZUluTGlu
ZVtuZXh0Q29sdW1uICsgMV07CisgICAgICAgIGlmIChjID09ICcgJyB8fCBjID09ICdcdCcpCisg
ICAgICAgICAgICBuZXh0Q29sdW1uICs9IDE7CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBv
c2l0aW9uLmNvbHVtbk51bWJlciA9IG5leHRDb2x1bW4gKyAxOworICAgIH0gZWxzZQorICAgICAg
ICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIgPSAwOwogfQogCiBib29s
IFNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVha3BvaW50KGludHB0cl90IHNvdXJjZUlELCBjb25z
dCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdApAQCAtMTEwLDE5ICsxNzIsMzcgQEAgYm9v
bCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgY29u
c3QgVGV4dFBvc2l0aW9uJiBwb3MKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRCk7CiAg
ICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaW50IGxpbmVOdW1iZXIgPSBwb3NpdGlvbi5tX2xpbmUub25lQmFzZWRJ
bnQoKTsKLSAgICBpZiAobGluZU51bWJlciA8PSAwKQorCisgICAgaW50IGxpbmVOdW1iZXIgPSBw
b3NpdGlvbi5tX2xpbmUuemVyb0Jhc2VkSW50KCk7CisgICAgaW50IGNvbHVtbk51bWJlciA9IHBv
c2l0aW9uLm1fY29sdW1uLnplcm9CYXNlZEludCgpOworICAgIGlmIChsaW5lTnVtYmVyIDwgMCB8
fCBjb2x1bW5OdW1iZXIgPCAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBMaW5lVG9C
cmVha3BvaW50TWFwOjpjb25zdF9pdGVyYXRvciBicmVha3NJdCA9IGl0LT5zZWNvbmQuZmluZChs
aW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBMaW5lVG9CcmVha3BvaW50TWFwOjpjb25zdF9pdGVy
YXRvciBicmVha0l0ID0gaXQtPnNlY29uZC5maW5kKGxpbmVOdW1iZXIpOwotICAgIGlmIChicmVh
a0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisKKyAgICBib29sIGhpdCA9IGZhbHNlOworICAgIGNv
bnN0IEJyZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25kOwor
ICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKKyAgICB1bnNp
Z25lZCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBicmVha3NDb3VudDsgaSsrKSB7CisgICAgICAg
IGludCBicmVha0NvbHVtbiA9IGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5OdW1iZXI7CisgICAg
ICAgIGludCBicmVha0xpbmUgPSBicmVha3NWZWN0b3IuYXQoaSkubGluZU51bWJlcjsKKyAgICAg
ICAgaWYgKGxpbmVOdW1iZXIgPT0gYnJlYWtMaW5lICYmIGNvbHVtbk51bWJlciA9PSBicmVha0Nv
bHVtbikgeworICAgICAgICAgICAgaGl0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorICAgIGlmICghaGl0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAvLyBBbiBlbXB0eSBjb25kaXRpb24gY291bnRzIGFzIG5vIGNvbmRpdGlvbiB3aGljaCBpcyBl
cXVpdmFsZW50IHRvICJ0cnVlIi4KLSAgICBpZiAoYnJlYWtJdC0+c2Vjb25kLmNvbmRpdGlvbi5p
c0VtcHR5KCkpCisgICAgaWYgKGJyZWFrc1ZlY3Rvci5hdChpKS5jb25kaXRpb24uaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEpTVmFsdWUgZXhjZXB0aW9uOwotICAgIEpT
VmFsdWUgcmVzdWx0ID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5ldmFsdWF0ZShzdHJpbmdUb1VTdHJp
bmcoYnJlYWtJdC0+c2Vjb25kLmNvbmRpdGlvbiksIGV4Y2VwdGlvbik7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmV2YWx1YXRlKHN0cmluZ1RvVVN0cmluZyhicmVh
a3NWZWN0b3IuYXQoaSkuY29uZGl0aW9uKSwgZXhjZXB0aW9uKTsKICAgICBpZiAoZXhjZXB0aW9u
KSB7CiAgICAgICAgIC8vIEFuIGVycm9uZW91cyBjb25kaXRpb24gY291bnRzIGFzICJmYWxzZSIu
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0NywyMCArNDI3LDIwIEBAIHZvaWQgU2NyaXB0
RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhKYXZhU2NyaXB0RXhlY3V0
aW9uQ2FsbGJhY2sKICAgICBtX2NhbGxpbmdMaXN0ZW5lcnMgPSBmYWxzZTsKIH0KIAotdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6Y3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBE
ZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNyZWF0ZUNhbGxGcmFtZUFu
ZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1l
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7
Ci0gICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFz
ZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZpcnN0KCkpOworICAgIFRleHRQb3Np
dGlvbiB0ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1i
ZXIpLCBPcmRpbmFsTnVtYmVyOjpmcm9tWmVyb0Jhc2VkSW50KGNvbHVtbk51bWJlcikpOwogICAg
IG1fY3VycmVudENhbGxGcmFtZSA9IEphdmFTY3JpcHRDYWxsRnJhbWU6OmNyZWF0ZShkZWJ1Z2dl
ckNhbGxGcmFtZSwgbV9jdXJyZW50Q2FsbEZyYW1lLCBzb3VyY2VJRCwgdGV4dFBvc2l0aW9uKTsK
ICAgICBwYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLmR5bmFtaWNHbG9iYWxPYmplY3Qo
KSk7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNl
SWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp1
cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBk
ZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyKQogewogICAgIEFTU0VSVChtX2N1cnJlbnRDYWxsRnJhbWUpOwogICAgIGlm
ICghbV9jdXJyZW50Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBUZXh0UG9zaXRp
b24gdGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChsaW5lTnVtYmVy
KSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSk7CisgICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlv
bihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1i
ZXI6OmZyb21aZXJvQmFzZWRJbnQoY29sdW1uTnVtYmVyKSk7CiAgICAgbV9jdXJyZW50Q2FsbEZy
YW1lLT51cGRhdGUoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCB0ZXh0UG9zaXRpb24pOwog
ICAgIHBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUuZHluYW1pY0dsb2JhbE9iamVjdCgp
KTsKIH0KQEAgLTM5OSwyNCArNDc5LDI0IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNl
SWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QpCiAgICAgbV9wYXVz
ZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbEV2ZW50KGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbEV2ZW50KGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIGlmICghbV9wYXVzZWQp
Ci0gICAgICAgIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJh
bWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICAgICAgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1
c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcik7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmF0U3RhdGVtZW50KGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQoY29u
c3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7CiAgICAgaWYgKCFtX3BhdXNl
ZCkKLSAgICAgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxG
cmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAgICB1cGRhdGVDYWxsRnJhbWVBbmRQ
YXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmV0dXJuRXZlbnQoY29u
c3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZXR1cm5FdmVudChj
b25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAobV9wYXVz
ZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVk
ZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVD
YWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIAogICAgIC8vIGRldGFjaCBtYXkgaGF2ZSBiZWVuIGNh
bGxlZCBkdXJpbmcgcGF1c2VJZk5lZWRlZAogICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQpA
QCAtNDI4LDcgKzUwOCw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KGNv
bnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwKICAgICBtX2N1cnJlbnRD
YWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlcigpOwogfQogCi12b2lkIFNjcmlw
dERlYnVnU2VydmVyOjpleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFu
ZGxlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmV4Y2VwdGlvbihjb25zdCBEZWJ1Z2dlckNh
bGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCBoYXNIYW5kbGVyKQogewogICAgIGlmIChtX3Bh
dXNlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM2LDIxICs1MTYsMjEgQEAgdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6ZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNh
bGxGcmFtZSwgaW4KICAgICBpZiAobV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlID09IFBhdXNlT25B
bGxFeGNlcHRpb25zIHx8IChtX3BhdXNlT25FeGNlcHRpb25zU3RhdGUgPT0gUGF1c2VPblVuY2F1
Z2h0RXhjZXB0aW9ucyAmJiAhaGFzSGFuZGxlcikpCiAgICAgICAgIG1fcGF1c2VPbk5leHRTdGF0
ZW1lbnQgPSB0cnVlOwogCi0gICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1
Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgIHVwZGF0ZUNhbGxGcmFt
ZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpOwogfQogCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjp3aWxsRXhlY3V0
ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp3
aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZy
YW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIp
CiB7CiAgICAgaWYgKCFtX3BhdXNlZCkKLSAgICAgICAgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJ
Zk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAg
ICBjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3Vy
Y2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlw
dERlYnVnU2VydmVyOjpkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYg
ZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNv
dXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVk
KGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsK
IAogICAgIC8vIFRyZWF0IHN0ZXBwaW5nIG92ZXIgdGhlIGVuZCBvZiBhIHByb2dyYW0gbGlrZSBz
dGVwcGluZyBvdXQuCiAgICAgaWYgKG1fY3VycmVudENhbGxGcmFtZSA9PSBtX3BhdXNlT25DYWxs
RnJhbWUpCkBAIC00NTgsMTMgKzUzOCwxMyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaWRF
eGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRgogICAg
IG1fY3VycmVudENhbGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyKCk7CiB9CiAK
LXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dl
ckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGlu
ZU51bWJlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlYWNoQnJlYWtwb2ludChjb25z
dCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAobV9wYXVzZWQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGF1c2VPbk5leHRTdGF0ZW1lbnQgPSB0cnVlOwot
ICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNv
dXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVk
KGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsK
IH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29u
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCmlu
ZGV4IDg0ZmJhNWM2NzhmYzcyNWRmMjg2MmVlOWZmM2JlNjUxODQxMjFhYTYuLjlkOGRkZTc0MzAw
YWE4YjZkYzM3NGJlMGQwY2RmMThlNjNkMmEwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMTIzLDIyICsxMjMsMjUgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYg
bGlzdGVuZXJzLCBKU0M6OlNvdXJjZVByb3ZpZGVyKiwgYm9vbCBpc0NvbnRlbnRTY3JpcHQpOwog
ICAgIHZvaWQgZGlzcGF0Y2hGYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBs
aXN0ZW5lcnMsIEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSk7CiAKLSAgICB2b2lkIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZO
ZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlcik7Ci0gICAgdm9pZCB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVk
KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpOworICAgIHZvaWQgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25z
dCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2b2lkIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNl
SWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CiAgICAgdm9pZCBwYXVzZUlmTmVl
ZGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QpOwogCiAgICAgdmly
dHVhbCB2b2lkIGRldGFjaChKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc291cmNlUGFyc2VkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTb3VyY2VQcm92aWRlciosIGlu
dCBlcnJvckxpbmUsIGNvbnN0IEpTQzo6VVN0cmluZyYgZXJyb3JNc2cpOwotICAgIHZpcnR1YWwg
dm9pZCBjYWxsRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZU51bWJlcik7Ci0gICAgdmlydHVhbCB2b2lkIGF0U3RhdGVtZW50KGNv
bnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGZpcnN0
TGluZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0IEpTQzo6RGVidWdnZXJD
YWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOwotICAgIHZpcnR1
YWwgdm9pZCBleGNlcHRpb24oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90
IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgYm9vbCBoYXNIYW5kbGVyKTsKLSAgICB2aXJ0dWFs
IHZvaWQgd2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubyk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZEV4ZWN1
dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVubyk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25z
dCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8p
OwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPGxvbmcsIFNjcmlwdEJyZWFrcG9pbnQ+IExpbmVUb0Jy
ZWFrcG9pbnRNYXA7CisgICAgdmlydHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBKU0M6OkRlYnVn
Z2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgSlNDOjpEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgZmlyc3RMaW5lLCBpbnQgY29s
dW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuRXZlbnQoY29uc3QgSlNDOjpEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihjb25zdCBKU0M6OkRlYnVn
Z2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpOworICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhlY3V0
ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZW5vLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRXhl
Y3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVhY2hCcmVha3BvaW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBz
b3VyY2VJRCwgaW50IGxpbmVubywgaW50IGNvbHVtbk51bWJlcik7CisKKyAgICB2b2lkIHVwZGF0
ZUN1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbihpbnRwdHJfdCwgaW50KTsKKworICAgIHR5cGVkZWYg
VmVjdG9yPFNjcmlwdEJyZWFrcG9pbnQ+IEJyZWFrcG9pbnRzSW5MaW5lOworICAgIHR5cGVkZWYg
SGFzaE1hcDxsb25nLCBCcmVha3BvaW50c0luTGluZT4gTGluZVRvQnJlYWtwb2ludE1hcDsKICAg
ICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIExpbmVUb0JyZWFrcG9pbnRNYXA+IFNvdXJjZUlk
VG9CcmVha3BvaW50c01hcDsKIAogICAgIGJvb2wgbV9jYWxsaW5nTGlzdGVuZXJzOwpAQCAtMTUx
LDYgKzE1NCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+
IG1fY3VycmVudENhbGxGcmFtZTsKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXAgbV9zb3Vy
Y2VJZFRvQnJlYWtwb2ludHM7CiAgICAgVGltZXI8U2NyaXB0RGVidWdTZXJ2ZXI+IG1fcmVjb21w
aWxlVGltZXI7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2N1cnJlbnRTb3VyY2VDb2RlOworICAg
IGludHB0cl90IG1fY3VycmVudFNvdXJjZUlEOworICAgIFNjcmlwdEJyZWFrcG9pbnQgbV9jdXJy
ZW50U3RhdGVtZW50UG9zaXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150385</attachid>
            <date>2012-07-02 02:39:41 -0700</date>
            <delta_ts>2012-07-06 00:56:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120702173937.patch</filename>
            <type>text/plain</type>
            <size>306527</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZTFmMzk3YmNhOGMzYjlmZWUwMjAyOGQ3ZDNjOWZkYWIzMjdjNzAwLi5lNWY4MjY1ODVhNDJlMjg1
OTRmYjlhZjMwM2NlMTQzZDYwYzBjZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NTcgQEAKKzIwMTItMDctMDEgIFBldGVyIFdhbmcgIDxwZXRlci53YW5nQHRvcmNobW9i
aWxlLmNvbS5jbj4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbSlNDXSBpbXBsZW1lbnQgc2V0
dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMwMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdCBjYXNlIGZvciB0aGlzIGJ1Zy4KKwor
ICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6cGFkT3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2sp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAo
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KToKKyAgICAgICAg
KEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDb25kaXRpb25hbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0
U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RW1wdHlTdGF0ZW1l
bnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclN0YXRlbWVudE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpJZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Oklm
RWxzZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRvV2hpbGVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpXaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkZvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvckluTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29udGludWVOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OlJldHVybk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OldpdGhOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpMYWJlbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRo
cm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJv
ZHlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRo
cm93RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmRlYnVnKToKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAg
ICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEFTVEJ1aWxkZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVDb21tYUV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMb2dp
Y2FsTm90KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVW5hcnlQbHVzKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVm9pZCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OnRoaXNFeHByKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVzb2x2
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZU9iamVjdExpdGVyYWwpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJheSk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZU51bWJlckV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVh
dGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCb29sZWFuKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTnVsbCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUJyYWNrZXRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVSZWdFeHAp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVOZXdFeHByKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uZGl0aW9uYWxFeHByKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQXNzaWduUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1
bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUdldHRlck9yU2V0
dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcmd1bWVudHNM
aXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUHJvcGVydHlMaXN0KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUV4cHJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVJZlN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUZvckxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JJbkxvb3ApOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFbXB0eVN0YXRlbWVudCk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVZhclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZVJldHVyblN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUJyZWFrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlQ29udGludWVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVU
cnlTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVTd2l0Y2hTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVXaGlsZVN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVdpdGhTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVUaHJvd1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZURlYnVnZ2VyKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uc3RT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRDb25zdERlY2wpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmFwcGVuZEJpbmFyeU9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUFzc2lnbm1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlVHlwZU9mTm9kZSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VEZWxldGVOb2RlKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjptYWtlQml0d2lzZU5vdE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlTXVs
dE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRGl2Tm9kZSk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VNb2ROb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6bWFrZUFkZE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlU3ViTm9kZSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VMZWZ0U2hpZnROb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZVJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6bWFrZVVSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
Om1ha2VCaXRPck5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQml0QW5kTm9k
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VCaXRYT3JOb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1h
a2VBc3NpZ25Ob2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlUG9zdGZpeE5vZGUpOgorICAgICAgICAq
IHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6Ojo6c2V0Q29kZSk6CisgICAgICAgIChK
U0M6Ojo6aW50ZXJuYWxTaGlmdCk6CisgICAgICAgIChKU0M6Ojo6c2hpZnQpOgorICAgICAgICAo
SlNDOjo6OmxleCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6Okxl
eGVyOjpjdXJyZW50Q29sdW1uTnVtYmVyKToKKyAgICAgICAgKExleGVyKToKKyAgICAgICAgKEpT
Qzo6OjpsZXhFeHBlY3RJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oOgorICAgICAgICAoSlNDOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKEpTQzo6RXhwcmVz
c2lvbk5vZGU6OkV4cHJlc3Npb25Ob2RlKToKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6
U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6Ok51bGxOb2RlOjpOdWxsTm9kZSk6CisgICAg
ICAgIChKU0M6OkJvb2xlYW5Ob2RlOjpCb29sZWFuTm9kZSk6CisgICAgICAgIChKU0M6Ok51bWJl
ck5vZGU6Ok51bWJlck5vZGUpOgorICAgICAgICAoSlNDOjpTdHJpbmdOb2RlOjpTdHJpbmdOb2Rl
KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTm9kZTo6UmVnRXhwTm9kZSk6CisgICAgICAgIChKU0M6
OlRoaXNOb2RlOjpUaGlzTm9kZSk6CisgICAgICAgIChKU0M6OlJlc29sdmVOb2RlOjpSZXNvbHZl
Tm9kZSk6CisgICAgICAgIChKU0M6OkFycmF5Tm9kZTo6QXJyYXlOb2RlKToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZSk6CisgICAgICAgIChKU0M6Ok9i
amVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZSk6CisgICAgICAgIChKU0M6OkJyYWNr
ZXRBY2Nlc3Nvck5vZGU6OkJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoSlNDOjpEb3RB
Y2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZSk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50TGlz
dE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoSlNDOjpOZXdFeHByTm9kZTo6TmV3
RXhwck5vZGUpOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0
aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OkZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2Rl
OjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJy
YWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoSlNDOjpDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAo
SlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZSk6
CisgICAgICAgIChKU0M6OlByZVBvc3RSZXNvbHZlTm9kZTo6UHJlUG9zdFJlc29sdmVOb2RlKToK
KyAgICAgICAgKEpTQzo6UG9zdGZpeFJlc29sdmVOb2RlOjpQb3N0Zml4UmVzb2x2ZU5vZGUpOgor
ICAgICAgICAoSlNDOjpQb3N0Zml4QnJhY2tldE5vZGU6OlBvc3RmaXhCcmFja2V0Tm9kZSk6Cisg
ICAgICAgIChKU0M6OlBvc3RmaXhEb3ROb2RlOjpQb3N0Zml4RG90Tm9kZSk6CisgICAgICAgIChK
U0M6OlBvc3RmaXhFcnJvck5vZGU6OlBvc3RmaXhFcnJvck5vZGUpOgorICAgICAgICAoSlNDOjpE
ZWxldGVSZXNvbHZlTm9kZTo6RGVsZXRlUmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpEZWxl
dGVCcmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVE
b3ROb2RlOjpEZWxldGVEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlVmFsdWVOb2RlOjpE
ZWxldGVWYWx1ZU5vZGUpOgorICAgICAgICAoSlNDOjpWb2lkTm9kZTo6Vm9pZE5vZGUpOgorICAg
ICAgICAoSlNDOjpUeXBlT2ZSZXNvbHZlTm9kZTo6VHlwZU9mUmVzb2x2ZU5vZGUpOgorICAgICAg
ICAoSlNDOjpUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6
OlByZWZpeFJlc29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlBy
ZWZpeEJyYWNrZXROb2RlOjpQcmVmaXhCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OlByZWZp
eERvdE5vZGU6OlByZWZpeERvdE5vZGUpOgorICAgICAgICAoSlNDOjpQcmVmaXhFcnJvck5vZGU6
OlByZWZpeEVycm9yTm9kZSk6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjpVbmFyeU9wTm9k
ZSk6CisgICAgICAgIChKU0M6OlVuYXJ5UGx1c05vZGU6OlVuYXJ5UGx1c05vZGUpOgorICAgICAg
ICAoSlNDOjpOZWdhdGVOb2RlOjpOZWdhdGVOb2RlKToKKyAgICAgICAgKEpTQzo6Qml0d2lzZU5v
dE5vZGU6OkJpdHdpc2VOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6TG9naWNhbE5vdE5vZGU6Okxv
Z2ljYWxOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUp
OgorICAgICAgICAoSlNDOjpNdWx0Tm9kZTo6TXVsdE5vZGUpOgorICAgICAgICAoSlNDOjpEaXZO
b2RlOjpEaXZOb2RlKToKKyAgICAgICAgKEpTQzo6TW9kTm9kZTo6TW9kTm9kZSk6CisgICAgICAg
IChKU0M6OkFkZE5vZGU6OkFkZE5vZGUpOgorICAgICAgICAoSlNDOjpTdWJOb2RlOjpTdWJOb2Rl
KToKKyAgICAgICAgKEpTQzo6TGVmdFNoaWZ0Tm9kZTo6TGVmdFNoaWZ0Tm9kZSk6CisgICAgICAg
IChKU0M6OlJpZ2h0U2hpZnROb2RlOjpSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OlVu
c2lnbmVkUmlnaHRTaGlmdE5vZGU6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAo
SlNDOjpMZXNzTm9kZTo6TGVzc05vZGUpOgorICAgICAgICAoSlNDOjpHcmVhdGVyTm9kZTo6R3Jl
YXRlck5vZGUpOgorICAgICAgICAoSlNDOjpMZXNzRXFOb2RlOjpMZXNzRXFOb2RlKToKKyAgICAg
ICAgKEpTQzo6R3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9kZSk6CisgICAgICAgIChKU0M6OlRo
cm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlKToKKyAgICAgICAgKEpT
Qzo6SW5zdGFuY2VPZk5vZGU6Okluc3RhbmNlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6SW5Ob2Rl
OjpJbk5vZGUpOgorICAgICAgICAoSlNDOjpFcXVhbE5vZGU6OkVxdWFsTm9kZSk6CisgICAgICAg
IChKU0M6Ok5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKToKKyAgICAgICAgKEpTQzo6U3RyaWN0
RXF1YWxOb2RlOjpTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoSlNDOjpOb3RTdHJpY3RFcXVh
bE5vZGU6Ok5vdFN0cmljdEVxdWFsTm9kZSk6CisgICAgICAgIChKU0M6OkJpdEFuZE5vZGU6OkJp
dEFuZE5vZGUpOgorICAgICAgICAoSlNDOjpCaXRPck5vZGU6OkJpdE9yTm9kZSk6CisgICAgICAg
IChKU0M6OkJpdFhPck5vZGU6OkJpdFhPck5vZGUpOgorICAgICAgICAoSlNDOjpMb2dpY2FsT3BO
b2RlOjpMb2dpY2FsT3BOb2RlKToKKyAgICAgICAgKEpTQzo6Q29uZGl0aW9uYWxOb2RlOjpDb25k
aXRpb25hbE5vZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRN
b2RpZnlSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjpBc3Np
Z25SZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6UmVh
ZE1vZGlmeUJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduQnJhY2tldE5vZGU6OkFz
c2lnbkJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90
Tm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkVycm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKToKKyAg
ICAgICAgKEpTQzo6Q29tbWFOb2RlOjpDb21tYU5vZGUpOgorICAgICAgICAoSlNDOjpDb25zdFN0
YXRlbWVudE5vZGU6OkNvbnN0U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6OkVtcHR5U3Rh
dGVtZW50Tm9kZTo6RW1wdHlTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJT
dGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpFeHBy
U3RhdGVtZW50Tm9kZTo6RXhwclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0
ZW1lbnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6SWZOb2RlOjpJZk5v
ZGUpOgorICAgICAgICAoSlNDOjpJZkVsc2VOb2RlOjpJZkVsc2VOb2RlKToKKyAgICAgICAgKEpT
Qzo6RG9XaGlsZU5vZGU6OkRvV2hpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6V2hpbGVOb2RlOjpX
aGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjpGb3JOb2RlKToKKyAgICAgICAgKEpT
Qzo6Q29udGludWVOb2RlOjpDb250aW51ZU5vZGUpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6
OkJyZWFrTm9kZSk6CisgICAgICAgIChKU0M6OlJldHVybk5vZGU6OlJldHVybk5vZGUpOgorICAg
ICAgICAoSlNDOjpXaXRoTm9kZTo6V2l0aE5vZGUpOgorICAgICAgICAoSlNDOjpMYWJlbE5vZGU6
OkxhYmVsTm9kZSk6CisgICAgICAgIChKU0M6OlRocm93Tm9kZTo6VGhyb3dOb2RlKToKKyAgICAg
ICAgKEpTQzo6VHJ5Tm9kZTo6VHJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmNFeHByTm9kZTo6
RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUp
OgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKToKKyAgICAgICAgKEpTQzo6
Q29uc3REZWNsTm9kZTo6Q29uc3REZWNsTm9kZSk6CisgICAgICAgIChKU0M6OkJsb2NrTm9kZTo6
QmxvY2tOb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjpGb3JJbk5vZGUpOgorICAgICAg
ICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OnNldExv
Yyk6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6U2NvcGVOb2RlKToKKyAgICAgICAgKEpTQzo6
UHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkV2YWxOb2RlOjpFdmFsTm9kZSk6CisgICAgICAgIChKU0M6
OkV2YWxOb2RlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpGdW5j
dGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlND
OjpOb2RlOjpjb2x1bW5Obyk6CisgICAgICAgIChFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChT
dGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6Y29sdW1uKToKKyAg
ICAgICAgKE51bGxOb2RlKToKKyAgICAgICAgKEJvb2xlYW5Ob2RlKToKKyAgICAgICAgKE51bWJl
ck5vZGUpOgorICAgICAgICAoU3RyaW5nTm9kZSk6CisgICAgICAgIChSZWdFeHBOb2RlKToKKyAg
ICAgICAgKFRoaXNOb2RlKToKKyAgICAgICAgKFJlc29sdmVOb2RlKToKKyAgICAgICAgKEFycmF5
Tm9kZSk6CisgICAgICAgIChQcm9wZXJ0eUxpc3ROb2RlKToKKyAgICAgICAgKE9iamVjdExpdGVy
YWxOb2RlKToKKyAgICAgICAgKEJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoRG90QWNj
ZXNzb3JOb2RlKToKKyAgICAgICAgKEFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoTmV3RXhw
ck5vZGUpOgorICAgICAgICAoRXZhbEZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoRnVuY3Rp
b25DYWxsVmFsdWVOb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKToKKyAg
ICAgICAgKEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbERv
dE5vZGUpOgorICAgICAgICAoQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKFByZVBvc3RSZXNvbHZlTm9kZSk6Cisg
ICAgICAgIChQb3N0Zml4UmVzb2x2ZU5vZGUpOgorICAgICAgICAoUG9zdGZpeEJyYWNrZXROb2Rl
KToKKyAgICAgICAgKFBvc3RmaXhEb3ROb2RlKToKKyAgICAgICAgKFBvc3RmaXhFcnJvck5vZGUp
OgorICAgICAgICAoRGVsZXRlUmVzb2x2ZU5vZGUpOgorICAgICAgICAoRGVsZXRlQnJhY2tldE5v
ZGUpOgorICAgICAgICAoRGVsZXRlRG90Tm9kZSk6CisgICAgICAgIChEZWxldGVWYWx1ZU5vZGUp
OgorICAgICAgICAoVm9pZE5vZGUpOgorICAgICAgICAoVHlwZU9mUmVzb2x2ZU5vZGUpOgorICAg
ICAgICAoVHlwZU9mVmFsdWVOb2RlKToKKyAgICAgICAgKFByZWZpeFJlc29sdmVOb2RlKToKKyAg
ICAgICAgKFByZWZpeEJyYWNrZXROb2RlKToKKyAgICAgICAgKFByZWZpeERvdE5vZGUpOgorICAg
ICAgICAoUHJlZml4RXJyb3JOb2RlKToKKyAgICAgICAgKFVuYXJ5T3BOb2RlKToKKyAgICAgICAg
KFVuYXJ5UGx1c05vZGUpOgorICAgICAgICAoTmVnYXRlTm9kZSk6CisgICAgICAgIChCaXR3aXNl
Tm90Tm9kZSk6CisgICAgICAgIChMb2dpY2FsTm90Tm9kZSk6CisgICAgICAgIChCaW5hcnlPcE5v
ZGUpOgorICAgICAgICAoTXVsdE5vZGUpOgorICAgICAgICAoRGl2Tm9kZSk6CisgICAgICAgIChN
b2ROb2RlKToKKyAgICAgICAgKEFkZE5vZGUpOgorICAgICAgICAoU3ViTm9kZSk6CisgICAgICAg
IChMZWZ0U2hpZnROb2RlKToKKyAgICAgICAgKFJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKFVu
c2lnbmVkUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAoTGVzc05vZGUpOgorICAgICAgICAoR3Jl
YXRlck5vZGUpOgorICAgICAgICAoTGVzc0VxTm9kZSk6CisgICAgICAgIChHcmVhdGVyRXFOb2Rl
KToKKyAgICAgICAgKFRocm93YWJsZUJpbmFyeU9wTm9kZSk6CisgICAgICAgIChJbnN0YW5jZU9m
Tm9kZSk6CisgICAgICAgIChJbk5vZGUpOgorICAgICAgICAoRXF1YWxOb2RlKToKKyAgICAgICAg
KE5vdEVxdWFsTm9kZSk6CisgICAgICAgIChTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoTm90
U3RyaWN0RXF1YWxOb2RlKToKKyAgICAgICAgKEJpdEFuZE5vZGUpOgorICAgICAgICAoQml0T3JO
b2RlKToKKyAgICAgICAgKEJpdFhPck5vZGUpOgorICAgICAgICAoTG9naWNhbE9wTm9kZSk6Cisg
ICAgICAgIChDb25kaXRpb25hbE5vZGUpOgorICAgICAgICAoUmVhZE1vZGlmeVJlc29sdmVOb2Rl
KToKKyAgICAgICAgKEFzc2lnblJlc29sdmVOb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlCcmFj
a2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25CcmFja2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25E
b3ROb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKEFzc2lnbkVy
cm9yTm9kZSk6CisgICAgICAgIChDb21tYU5vZGUpOgorICAgICAgICAoQ29uc3REZWNsTm9kZSk6
CisgICAgICAgIChDb25zdFN0YXRlbWVudE5vZGUpOgorICAgICAgICAoQmxvY2tOb2RlKToKKyAg
ICAgICAgKEVtcHR5U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChEZWJ1Z2dlclN0YXRlbWVudE5v
ZGUpOgorICAgICAgICAoRXhwclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoVmFyU3RhdGVtZW50
Tm9kZSk6CisgICAgICAgIChJZk5vZGUpOgorICAgICAgICAoSWZFbHNlTm9kZSk6CisgICAgICAg
IChEb1doaWxlTm9kZSk6CisgICAgICAgIChXaGlsZU5vZGUpOgorICAgICAgICAoRm9yTm9kZSk6
CisgICAgICAgIChGb3JJbk5vZGUpOgorICAgICAgICAoQ29udGludWVOb2RlKToKKyAgICAgICAg
KEJyZWFrTm9kZSk6CisgICAgICAgIChSZXR1cm5Ob2RlKToKKyAgICAgICAgKFdpdGhOb2RlKToK
KyAgICAgICAgKExhYmVsTm9kZSk6CisgICAgICAgIChUaHJvd05vZGUpOgorICAgICAgICAoVHJ5
Tm9kZSk6CisgICAgICAgIChTY29wZU5vZGUpOgorICAgICAgICAoUHJvZ3JhbU5vZGUpOgorICAg
ICAgICAoRXZhbE5vZGUpOgorICAgICAgICAoRnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAgICAgIChG
dW5jRXhwck5vZGUpOgorICAgICAgICAoRnVuY0RlY2xOb2RlKToKKyAgICAgICAgKFN3aXRjaE5v
ZGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6OnBhcnNl
VmFyRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29uc3REZWNsYXJhdGlvbik6
CisgICAgICAgIChKU0M6Ojo6cGFyc2VEb1doaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZVdoaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVZhckRlY2xhcmF0
aW9uTGlzdCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25zdERlY2xhcmF0aW9uTGlzdCk6Cisg
ICAgICAgIChKU0M6Ojo6cGFyc2VGb3JTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNl
QnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29udGludWVTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjo6OnBhcnNlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZVRocm93U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVdpdGhTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZVRyeVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VEZWJ1Z2dlclN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VCbG9ja1N0YXRlbWVudCk6CisgICAgICAg
IChKU0M6Ojo6cGFyc2VTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlRnVuY3Rpb25C
b2R5KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJl
c3Npb25PckxhYmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJlc3Npb25T
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlSWZTdGF0ZW1lbnQpOgorICAgICAgICAo
SlNDOjo6OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjo6OnBhcnNlQmluYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VPYmplY3RMaXRlcmFsKToK
KyAgICAgICAgKEpTQzo6OjpwYXJzZVN0cmljdE9iamVjdExpdGVyYWwpOgorICAgICAgICAoSlND
Ojo6OnBhcnNlQXJyYXlMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVByaW1hcnlFeHBy
ZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVVuYXJ5RXhw
cmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQYXJz
ZXI6OnRva2VuQ29sdW1uKToKKyAgICAgICAgKFBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNl
cjo6Z2V0VG9rZW5OYW1lKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZSk6CisgICAgICAgICogcGFy
c2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAoSlNDOjpKU1Rva2VuSW5mbzo6SlNUb2tlbklu
Zm8pOgorICAgICAgICAoSlNUb2tlbkluZm8pOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVj
a2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2Rl
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ29tbWFFeHByKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjptYWtlUHJlZml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6Om1ha2VQb3N0Zml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VU
eXBlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZURlbGV0ZU5vZGUp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlTmVnYXRlTm9kZSk6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VCaXR3aXNlTm90Tm9kZSk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpTeW50YXhD
aGVja2VyOjpjcmVhdGVVbmFyeVBsdXMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVWb2lkKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6dGhpc0V4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUFycmF5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlTnVtYmVyRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN0cmlu
Zyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJvb2xlYW4pOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOdWxsKToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQnJhY2tldEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZVJlZ0V4cCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU5ld0V4cHIpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDb25kaXRpb25hbEV4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVBc3NpZ25SZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQXJndW1lbnRzTGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZVByb3BlcnR5TGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OnNl
dFVzZXNBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5j
RGVjbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJsb2Nr
U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRXhwclN0YXRl
bWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUlmU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRm9yTG9vcCk6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUVtcHR5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlVmFyU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlQnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVD
b250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRy
eVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN3aXRjaFN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVdoaWxlU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlV2l0aFN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6CisgICAg
ICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRocm93U3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRGVidWdnZXIpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVDb25zdFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENo
ZWNrZXI6OmFwcGVuZENvbnN0RGVjbCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2Vy
Ojpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJh
dG9yU3RhY2tQb3ApOgorCiAyMDEyLTA2LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgSlNDIHNob3VsZCB0cnkgdG8gbWFrZSBwcm9maWxpbmcgZGV0ZXJtaW5p
c3RpYyBiZWNhdXNlIG90aGVyd2lzZSByZXByb2R1Y2luZyBmYWlsdXJlcyBpcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDQ2ZGYxMDQ2MWMzYWVkMDUxNWQxODAzMTQ4NmQzMDRkY2RjMzQ5OWEuLmIxNWFjYjgxNjE1
YmRjNmQ5NzMwZmY3NDIwNWJmN2QxNWQ4N2UxOGMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBA
QAorMjAxMi0wNy0wMSAgUGV0ZXIgV2FuZyAgPHBldGVyLndhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtKU0NdIGltcGxlbWVudCBzZXR0aW5nIGJyZWFr
cG9pbnRzIGJ5IGxpbmU6Y29sdW1uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MzAwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0IGNhc2UgZm9yIHRoaXMgYnVnLiAoT09QUyEpCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6Omhh
c0JyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNyZWF0
ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpleGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OndpbGxFeGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZl
cjo6ZGlkRXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2
ZXI6OmRpZFJlYWNoQnJlYWtwb2ludCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToKKwogMjAxMi0wNi0yNiAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVmYWN0b3Jpbmc6
IFNpbXBsaWZ5IEZvcm1Db250cm9sbGVyIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCmluZGV4IGUwY2ZmMTY1YTg4YzkzM2E1ODgzMDM4NmNiNTgxOGE2ZmU3
YTEzMWEuLjUyNjIyY2Q3YThjNWI5NDFjM2Y1NGU3YTEwNDU3MTAyMTQ1NGY2MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKQEAgLTE5MCw3ICsxOTAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfdGhyb3csIDIpIFwKICAgICAgICAgbWFjcm8o
b3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yLCAyKSBcCiAgICAgICAgIFwKLSAgICAgICAgbWFjcm8o
b3BfZGVidWcsIDQpIFwKKyAgICAgICAgbWFjcm8ob3BfZGVidWcsIDUpIFwKICAgICAgICAgbWFj
cm8ob3BfcHJvZmlsZV93aWxsX2NhbGwsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfcHJvZmlsZV9k
aWRfY2FsbCwgMikgXAogICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDg5NjlhN2YyNWIy
N2U5ZmNlOTY1NTBhZWQ1NWYxMjczYzA0N2UyZmEuLjI5N2IwMDgyM2MwMTI2NjNlZDNhZGYwNjc3
ZmZlYTk2Y2I0OTgwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yMDM3LDcgKzIwMzcsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UG9wU2NvcGUoKQogICAgIG1fZHluYW1pY1Njb3Bl
RGVwdGgtLTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1
Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQordm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwg
aW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKQogewogI2lmIEVOQUJMRShE
RUJVR19XSVRIX0JSRUFLUE9JTlQpCiAgICAgaWYgKGRlYnVnSG9va0lEICE9IERpZFJlYWNoQnJl
YWtwb2ludCkKQEAgLTIwNTAsNiArMjA1MCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREZWJ1Z0hvb2soRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGluCiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRlYnVnSG9va0lEKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZmlyc3RMaW5lKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGFzdExpbmUp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjb2x1bW4pOwogfQogCiB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpwdXNoRmluYWxseUNvbnRleHQoU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2Nr
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCmluZGV4IDhiMWQxZDc0NGJhMmE5MmI0NDI2ZjczMGExZGMzOGQyM2Y3YjA3
ODkuLmIxNGI3MGFmZjFlZTI2MDJkNDNjMTE0YzI4ZGI1NGExN2U0ZmQzYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKQEAgLTUwNiw3ICs1MDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1c2hTY29wZShSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQgZW1pdFBv
cFNjb3BlKCk7CiAKLSAgICAgICAgdm9pZCBlbWl0RGVidWdIb29rKERlYnVnSG9va0lELCBpbnQg
Zmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAgICB2b2lkIGVtaXREZWJ1Z0hvb2soRGVi
dWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVtbik7CiAKICAg
ICAgICAgaW50IHNjb3BlRGVwdGgoKSB7IHJldHVybiBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9m
aW5hbGx5RGVwdGg7IH0KICAgICAgICAgYm9vbCBoYXNGaW5hbGlzZXIoKSB7IHJldHVybiBtX2Zp
bmFsbHlEZXB0aCAhPSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDI0M2U4Y2UwMDg0OWI1NTJkOThkYjA1MDFj
MzY5YTQxNWQyZWQwYS4uYzFiN2Y1NGFiNWIwZWM2ZTAwOTY3YzA5NGU2ZmEyMjVmNDRhMzkxMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcApAQCAtMjAyLDE4ICsyMDIsMTggQEAgYm9vbCBBcnJheU5vZGU6OmlzU2ltcGxlQXJy
YXkoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1Bcmd1bWVudExpc3ROb2RlKiBBcnJh
eU5vZGU6OnRvQXJndW1lbnRMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVO
dW1iZXIpIGNvbnN0CitBcmd1bWVudExpc3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2VsaXNpb24gJiYgIW1fb3B0aW9uYWwpOwogICAg
IEVsZW1lbnROb2RlKiBwdHIgPSBtX2VsZW1lbnQ7CiAgICAgaWYgKCFwdHIpCiAgICAgICAgIHJl
dHVybiAwOwotICAgIEFyZ3VtZW50TGlzdE5vZGUqIGhlYWQgPSBuZXcgKGdsb2JhbERhdGEpIEFy
Z3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgcHRyLT52YWx1ZSgpKTsKKyAgICBBcmd1bWVudExp
c3ROb2RlKiBoZWFkID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgcHRyLT52YWx1ZSgpKTsKICAgICBBcmd1bWVudExpc3ROb2RlKiB0
YWlsID0gaGVhZDsKICAgICBwdHIgPSBwdHItPm5leHQoKTsKICAgICBmb3IgKDsgcHRyOyBwdHIg
PSBwdHItPm5leHQoKSkgewogICAgICAgICBBU1NFUlQoIXB0ci0+ZWxpc2lvbigpKTsKLSAgICAg
ICAgdGFpbCA9IG5ldyAoZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVtYmVyLCB0
YWlsLCBwdHItPnZhbHVlKCkpOworICAgICAgICB0YWlsID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1
bWVudExpc3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdGFpbCwgcHRyLT52YWx1ZSgp
KTsKICAgICB9CiAgICAgcmV0dXJuIGhlYWQ7CiB9CkBAIC01MzYsNyArNTM2LDcgQEAgUmVnaXN0
ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9kZSo+KG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50TGlzdChnZW5lcmF0
b3IuZ2xvYmFsRGF0YSgpLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3RO
b2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQt
Pm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci5nbG9iYWxEYXRhKCksIDAsIDApOwog
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQo
KSk7CiAgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwpAQCAtMTEyOCw2
ICsxMTI4LDggQEAgUmVnaXN0ZXJJRCogQ29uZGl0aW9uYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKICAgICBSZWZQdHI8TGFiZWw+IGJl
Zm9yZUVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGFmdGVy
RWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogCisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxpbmVObygpLCBsaW5lTm8oKSwgY29sdW1uTm8oKSk7
CisKICAgICBpZiAobV9sb2dpY2FsLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKSB7CiAg
ICAgICAgIFJlZlB0cjxMYWJlbD4gYmVmb3JlVGhlbiA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9sb2dpY2FsLCBi
ZWZvcmVUaGVuLmdldCgpLCBiZWZvcmVFbHNlLmdldCgpLCB0cnVlKTsKQEAgLTEzODUsNyArMTM4
Nyw3IEBAIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIFJlZ2lzdGVySUQqIENvbnN0U3RhdGVt
ZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShtX25leHQpOwogfQogCkBAIC0xNDI4
LDcgKzE0MzAsNyBAQCBSZWdpc3RlcklEKiBCbG9ja05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogCiBSZWdpc3RlcklEKiBFbXB0
eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0xNDM2LDcgKzE0MzgsNyBA
QCBSZWdpc3RlcklEKiBFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpcwogCiBSZWdpc3RlcklEKiBEZWJ1Z2dlclN0YXRlbWVu
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkUmVhY2hCcmVha3Bv
aW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soRGlkUmVhY2hCcmVha3BvaW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkp
OwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTE0NDUsNyArMTQ0Nyw3IEBAIFJlZ2lzdGVySUQq
IERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlCiBSZWdpc3RlcklEKiBFeHByU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBB
U1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOyAKKyAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNv
bHVtbigpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9leHByKTsKIH0K
IApAQCAtMTQ1NCw3ICsxNDU2LDcgQEAgUmVnaXN0ZXJJRCogRXhwclN0YXRlbWVudE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIFJlZ2lzdGVy
SUQqIFZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKICAgICBBU1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50
LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdE5vZGUobV9leHByKTsKIH0KIApAQCAtMTQ2Miw3ICsxNDY0LDcgQEAgUmVnaXN0ZXJJ
RCogVmFyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGUKIAogUmVnaXN0ZXJJRCogSWZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQs
IGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPExh
YmVsPiBhZnRlclRoZW4gPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIApAQCAtMTQ4Niw3ICsxNDg4
LDcgQEAgUmVnaXN0ZXJJRCogSWZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiBSZWdpc3RlcklEKiBJZkVsc2VOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAg
ICAgCiAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVFbHNlID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
CiAgICAgUmVmUHRyPExhYmVsPiBhZnRlckVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKQEAg
LTE1MjIsMTIgKzE1MjQsMTEgQEAgUmVnaXN0ZXJJRCogRG9XaGlsZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgIFJlZlB0cjxM
YWJlbD4gdG9wT2ZMb29wID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbCh0b3BPZkxvb3AuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TG9vcEhpbnQoKTsK
LSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCkpOwogICAgCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9
IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxp
bmVObygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGlmIChtX2V4cHItPmhh
c0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUlu
Q29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFy
Z2V0KCksIGZhbHNlKTsKICAgICBlbHNlIHsKQEAgLTE1NDYsNyArMTU0Nyw3IEBAIFJlZ2lzdGVy
SUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3BlID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CiAgICAgUmVmUHRyPExhYmVsPiB0b3BP
Zkxvb3AgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxpbmVO
bygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
bV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5jb2x1bW5ObygpKTsK
ICAgICBpZiAobV9leHByLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKQogICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxvb3AuZ2V0
KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCB0cnVlKTsKICAgICBlbHNlIHsKQEAgLTE1NjAsNyAr
MTU2MSw3IEBAIFJlZ2lzdGVySUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29u
dGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIG1fZXhwci0+bGluZU5vKCksIG1fZXhwci0+bGluZU5vKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAgaWYgKG1fZXhwci0+aGFzQ29uZGl0aW9uQ29udGV4
dENvZGVnZW4oKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0
KG1fZXhwciwgdG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgZmFsc2UpOwpA
QCAtMTU4MSw3ICsxNTgyLDcgQEAgUmVnaXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBSZWZQ
dHI8TGFiZWxTY29wZT4gc2NvcGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3Bl
OjpMb29wKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAKICAgICBpZiAobV9leHByMSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjEpOwpAQCAtMTYwMiw3ICsxNjAzLDcgQEAgUmVn
aXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRM
YWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICBpZiAobV9leHByMykKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjMpOwogCkBAIC0x
NjI5LDcgKzE2MzAsNyBAQCBSZWdpc3RlcklEKiBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAgIGlmICghbV9sZXhw
ci0+aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gZW1pdFRocm93UmVmZXJlbmNlRXJyb3Io
Z2VuZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGZvci1pbiBzdGF0ZW1lbnQgaXMgbm90IGEgcmVmZXJl
bmNlLiIpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigp
KTsKIAogICAgIGlmIChtX2luaXQpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpLCBtX2luaXQpOwpAQCAtMTY5Miw3ICsxNjkzLDcgQEAgUmVnaXN0
ZXJJRCogRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHMKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRp
bnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TmV4dFByb3BlcnR5TmFtZShwcm9wZXJ0
eU5hbWUsIGJhc2UuZ2V0KCksIGkuZ2V0KCksIHNpemUuZ2V0KCksIGl0ZXIuZ2V0KCksIGxvb3BT
dGFydC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0
ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVt
bigpKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKICAg
ICByZXR1cm4gZHN0OwogfQpAQCAtMTcwMiw3ICsxNzAzLDcgQEAgUmVnaXN0ZXJJRCogRm9ySW5O
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHMKIC8vIEVDTUEgMTIuNwogUmVnaXN0ZXJJRCogQ29udGludWVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAg
TGFiZWxTY29wZSogc2NvcGUgPSBnZW5lcmF0b3IuY29udGludWVUYXJnZXQobV9pZGVudCk7CiAg
ICAgQVNTRVJUKHNjb3BlKTsKQEAgLTE3MTYsNyArMTcxNyw3IEBAIFJlZ2lzdGVySUQqIENvbnRp
bnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqCiAvLyBFQ01BIDEyLjgKIFJlZ2lzdGVySUQqIEJyZWFrTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIAogICAgIExh
YmVsU2NvcGUqIHNjb3BlID0gZ2VuZXJhdG9yLmJyZWFrVGFyZ2V0KG1faWRlbnQpOwogICAgIEFT
U0VSVChzY29wZSk7CkBAIC0xNzI5LDcgKzE3MzAsNyBAQCBSZWdpc3RlcklEKiBCcmVha05vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
cwogCiBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgQVNTRVJUKGdlbmVyYXRvci5jb2RlVHlw
ZSgpID09IEZ1bmN0aW9uQ29kZSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpCkBAIC0xNzQ1LDcgKzE3NDYsNyBAQCBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAog
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBTY29wZXMobDAuZ2V0KCksIDApOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKGwwLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFJldHVy
bihyMCk7CiB9CiAKQEAgLTE3NTMsNyArMTc1NCw3IEBAIFJlZ2lzdGVySUQqIFJldHVybk5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
CiAKIFJlZ2lzdGVySUQqIFdpdGhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNj
b3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShz
Y29wZS5nZXQoKSwgbV9leHByKTsgLy8gc2NvcGUgbXVzdCBiZSBwcm90ZWN0ZWQgdW50aWwgcG9w
cGVkCkBAIC0xOTE4LDcgKzE5MTksNyBAQCBSZWdpc3RlcklEKiBDYXNlQmxvY2tOb2RlOjplbWl0
Qnl0ZWNvZGVGb3JCbG9jayhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogCiBSZWdp
c3RlcklEKiBTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdp
bGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0
TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3BlID0g
Z2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6U3dpdGNoKTsKIApAQCAtMTkzMyw3
ICsxOTM0LDcgQEAgUmVnaXN0ZXJJRCogU3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAogUmVnaXN0ZXJJRCogTGFiZWxO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAKICAgICBBU1NFUlQoIWdlbmVyYXRvci5icmVha1RhcmdldChtX25hbWUpKTsKIApAQCAt
MTk0OCw3ICsxOTQ5LDcgQEAgUmVnaXN0ZXJJRCogTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCog
VGhyb3dOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBj
b2x1bW4oKSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAg
ICAgICAgIGRzdCA9IDA7CkBAIC0xOTY1LDcgKzE5NjYsNyBAQCBSZWdpc3RlcklEKiBUcnlOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogICAgIC8vIE5PVEU6IFRoZSBjYXRjaCBhbmQgZmluYWxseSBibG9ja3MgbXVzdCBiZSBs
YWJlbGVkIGV4cGxpY2l0bHksIHNvIHRoZQogICAgIC8vIG9wdGltaXplciBrbm93cyB0aGV5IG1h
eSBiZSBqdW1wZWQgdG8gZnJvbSBhbnl3aGVyZS4KIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBSZWZQdHI8TGFiZWw+IHRyeVN0YXJ0TGFi
ZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBpZiAobV9maW5hbGx5QmxvY2spCkBAIC0y
MDIyLDEzICsyMDIzLDEzIEBAIGlubGluZSB2b2lkIFNjb3BlTm9kZTo6ZW1pdFN0YXRlbWVudHNC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAKIFJlZ2lzdGVySUQq
IFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQ
cm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1u
KCkpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRzdFJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0TG9hZChkc3RSZWdpc3Rlci5nZXQoKSwg
anNVbmRlZmluZWQoKSk7CiAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGRz
dFJlZ2lzdGVyLmdldCgpKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1
dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1
bW4oKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFbmQoZHN0UmVnaXN0ZXIuZ2V0KCkpOwogICAgIHJl
dHVybiAwOwogfQpAQCAtMjAzNywxMyArMjAzOCwxMyBAQCBSZWdpc3RlcklEKiBQcm9ncmFtTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
KQogCiBSZWdpc3RlcklEKiBFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCksIGNvbHVtbigpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkc3RSZWdpc3RlciA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQoZHN0UmVn
aXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUo
Z2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY29sdW1uKCkpOwogICAgIGdlbmVyYXRvci5lbWl0RW5kKGRzdFJlZ2lzdGVyLmdl
dCgpKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTIwNTIsNyArMjA1Myw3IEBAIFJlZ2lzdGVySUQq
IEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCopCiAKIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQm9keU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1lLCBmaXJz
dExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNv
ZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAogICAgIFN0YXRlbWVu
dE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOwpAQCAtMjA2
OCw3ICsyMDY5LDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAvLyBJZiB0aGVyZSBp
cyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCiAgICAgaWYgKCFy
ZXR1cm5Ob2RlKSB7CiAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3Ry
dWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgw
LCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExl
YXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5oCmluZGV4IGEyMzczMjkxODc4MDNlZGE5NTdhMzdkM2EwYTkwN2FmZjBiODkyMzIuLmExZDIw
YjliYWY0ZTQ3MTMzZWI1ZWExMGU4MTlmYWIwMDNmODRhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC00MiwxNCArNDIsMTQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3QqKTsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEV4ZWNTdGF0ZSosIFNvdXJjZVByb3ZpZGVy
KiwgaW50IGVycm9yTGluZU51bWJlciwgY29uc3QgVVN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUm
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFuZGxlcikgPSAw
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmV0dXJu
RXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihjb25zdCBEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQsIGludCwgYm9vbCkgeyB9OworICAgICAgICB2
aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJf
dCwgaW50LCBpbnQpIHsgfTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBE
ZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQsIGludCkgeyB9OworICAgICAgICB2aXJ0
dWFsIHZvaWQgcmV0dXJuRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwg
aW50LCBpbnQpIHsgfTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4ZWN1dGVQcm9ncmFt
KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVt
YmVyKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBE
ZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAw
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0IERlYnVnZ2Vy
Q2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmLCBpbnRwdHJfdCwgaW50LCBpbnQpIHsgfTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEV4
ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCwgaW50
KSB7IH07CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVi
dWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50LCBpbnQpIHsgfTsKIAogICAgICAgICB2b2lk
IHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKEpTR2xvYmFsRGF0YSopOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBiODYxMGU3
YmZiYzg1ZTgxN2MxOWU5Y2Q4NjExMGI4MWJkNGU5MDFiLi4zMGQyODdmZDQ4MTBkNjVhY2MwMGI1
Njc5ZTU3ZWQwNDlhM2I4MGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTcxMiw5ICs3MTIsOSBAQCBORVZFUl9JTkxJTkUg
Ym9vbCBJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKENhbGxGcmFtZSomIGNhbGxGcmFtZSwg
SlNWYWx1ZSBleAogICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPmR5bmFt
aWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkgewogICAgICAgICBEZWJ1Z2dlckNhbGxGcmFt
ZSBkZWJ1Z2dlckNhbGxGcmFtZShjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlKTsKICAgICAgICAg
aWYgKGNhbGxGcmFtZS0+Y2FsbGVlKCkpCi0gICAgICAgICAgICBkZWJ1Z2dlci0+cmV0dXJuRXZl
bnQoZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJj
ZUlEKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmxhc3RMaW5lKCkpOworICAgICAg
ICAgICAgZGVidWdnZXItPnJldHVybkV2ZW50KGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLT5sYXN0TGluZSgpLCAwKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgZGVidWdnZXIt
PmRpZEV4ZWN1dGVQcm9ncmFtKGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5sYXN0
TGluZSgpKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRFeGVjdXRlUHJvZ3JhbShkZWJ1Z2dl
ckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bGFzdExpbmUoKSwgMCk7CiAgICAgfQogCiAgICAg
Ly8gSWYgdGhpcyBjYWxsIGZyYW1lIGNyZWF0ZWQgYW4gYWN0aXZhdGlvbiBvciBhbiAnYXJndW1l
bnRzJyBvYmplY3QsIHRlYXIgaXQgb2ZmLgpAQCAtMTAzNiw3ICsxMDM2LDcgQEAgTkVWRVJfSU5M
SU5FIEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6dGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYg
Y2FsbEZyYW1lLCBKU1YKICAgICBpZiAoRGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1lLT5k
eW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpIHsKICAgICAgICAgRGVidWdnZXJDYWxs
RnJhbWUgZGVidWdnZXJDYWxsRnJhbWUoY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSk7CiAgICAg
ICAgIGJvb2wgaGFzSGFuZGxlciA9IGNvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgZGVidWdnZXItPmV4Y2VwdGlvbihkZWJ1Z2dlckNh
bGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJs
b2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLCBoYXNIYW5k
bGVyKTsKKyAgICAgICAgZGVidWdnZXItPmV4Y2VwdGlvbihkZWJ1Z2dlckNhbGxGcmFtZSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJsb2NrLT5saW5lTnVt
YmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLCAwLCBoYXNIYW5kbGVyKTsKICAg
ICB9CiAKICAgICAvLyBDYWxjdWxhdGUgYW4gZXhjZXB0aW9uIGhhbmRsZXIgdlBDLCB1bndpbmRp
bmcgY2FsbCBmcmFtZXMgYXMgbmVjZXNzYXJ5LgpAQCAtMTYyNCw3ICsxNjI0LDcgQEAgSlNWYWx1
ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhlY3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTVmFsdWUKICAgICByZXR1cm4gY2hlY2tlZFJldHVybihyZXN1bHQpOwogfQog
Ci1ORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6ZGVidWcoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIERlYnVnSG9va0lEIGRlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUp
CitORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6ZGVidWcoQ2FsbEZyYW1lKiBjYWxsRnJh
bWUsIERlYnVnSG9va0lEIGRlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUs
IGludCBjb2x1bW4pCiB7CiAgICAgRGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1lLT5keW5h
bWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7CiAgICAgaWYgKCFkZWJ1Z2dlcikKQEAgLTE2
MzIsMjIgKzE2MzIsMjIgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRlYnVnKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2sKIAogICAgIHN3aXRjaCAo
ZGVidWdIb29rSUQpIHsKICAgICAgICAgY2FzZSBEaWRFbnRlckNhbGxGcmFtZToKLSAgICAgICAg
ICAgIGRlYnVnZ2VyLT5jYWxsRXZlbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
LT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgZmlyc3RMaW5lKTsKKyAgICAgICAgICAg
IGRlYnVnZ2VyLT5jYWxsRXZlbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5v
d25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgZmlyc3RMaW5lLCBjb2x1bW4pOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFdpbGxMZWF2ZUNhbGxGcmFtZToKLSAgICAgICAg
ICAgIGRlYnVnZ2VyLT5yZXR1cm5FdmVudChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSk7CisgICAgICAgICAg
ICBkZWJ1Z2dlci0+cmV0dXJuRXZlbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
LT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgbGFzdExpbmUsIGNvbHVtbik7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgV2lsbEV4ZWN1dGVTdGF0ZW1lbnQ6Ci0gICAg
ICAgICAgICBkZWJ1Z2dlci0+YXRTdGF0ZW1lbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgZmlyc3RMaW5lKTsKKyAgICAg
ICAgICAgIGRlYnVnZ2VyLT5hdFN0YXRlbWVudChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJzdExpbmUsIGNvbHVtbik7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgV2lsbEV4ZWN1dGVQcm9ncmFtOgot
ICAgICAgICAgICAgZGVidWdnZXItPndpbGxFeGVjdXRlUHJvZ3JhbShjYWxsRnJhbWUsIGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJzdExp
bmUpOworICAgICAgICAgICAgZGVidWdnZXItPndpbGxFeGVjdXRlUHJvZ3JhbShjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBm
aXJzdExpbmUsIGNvbHVtbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgRGlk
RXhlY3V0ZVByb2dyYW06Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+ZGlkRXhlY3V0ZVByb2dyYW0o
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291
cmNlSUQoKSwgbGFzdExpbmUpOworICAgICAgICAgICAgZGVidWdnZXItPmRpZEV4ZWN1dGVQcm9n
cmFtKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkt
PnNvdXJjZUlEKCksIGxhc3RMaW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjYXNlIERpZFJlYWNoQnJlYWtwb2ludDoKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRS
ZWFjaEJyZWFrcG9pbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4
ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgbGFzdExpbmUpOworICAgICAgICAgICAgZGVidWdnZXIt
PmRpZFJlYWNoQnJlYWtwb2ludChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93
bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSwgY29sdW1uKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCmluZGV4IGFkYjIzZjIzNzIzODRkYWY4ODNiMTRlZmY4YmFmNWRj
NWZlNmRmNDEuLjQ3ZDY2ODk4NTE1ZjIxOTFlNjU5MjVlMDI3Nzg3NGVlN2IwMDkwNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCkBAIC0y
MjAsNyArMjIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNhbXBsaW5nVG9vbCogc2Ft
cGxlcigpIHsgcmV0dXJuIG1fc2FtcGxlci5nZXQoKTsgfQogCiAgICAgICAgIE5FVkVSX0lOTElO
RSBIYW5kbGVySW5mbyogdGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYsIEpTVmFsdWUmLCB1bnNp
Z25lZCBieXRlY29kZU9mZnNldCk7Ci0gICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENh
bGxGcmFtZSosIERlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAg
ICAgICBORVZFUl9JTkxJTkUgdm9pZCBkZWJ1ZyhDYWxsRnJhbWUqLCBEZWJ1Z0hvb2tJRCwgaW50
IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKTsKICAgICAgICAgc3RhdGljIGNv
bnN0IFVTdHJpbmcgZ2V0VHJhY2VMaW5lKENhbGxGcmFtZSosIFN0YWNrRnJhbWVDb2RlVHlwZSwg
Y29uc3QgVVN0cmluZyYsIGludCk7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2
b2lkIGdldFN0YWNrVHJhY2UoSlNHbG9iYWxEYXRhKiwgVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1
bHRzKTsKICAgICAgICAgc3RhdGljIHZvaWQgYWRkU3RhY2tUcmFjZUlmTmVjZXNzYXJ5KENhbGxG
cmFtZSosIEpTT2JqZWN0KiBlcnJvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzLmNwcAppbmRleCAyZTQ0OGRkNTJhYTk2MWQ5YjI0MWFjMDVkMDQ3ODJhMDYxNTM2ZDE0Li42
YjRhNzc2NWM4YTdkNzMyOWRkZmZkYWNiZjlhMjk1MjYzYzYzNDEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTExNTksNiArMTE1OSw3IEBAIHZvaWQgSklU
OjplbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc3R1
YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9w
ZXJhbmQpKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudElu
c3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0
ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7CisgICAgc3R1YkNhbGwu
YWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQp
KTsKICAgICBzdHViQ2FsbC5jYWxsKCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCA0Zjg1ODk1NTcyYzBlOWYzMjI5YWI0
OTA4MGI2ZWU1OTYxNGE4MjUxLi5mOTk3YjNlOGJkMTEyYTM3ODUzNjE0ZTk0ZDEzNzA5NjdiMDEz
MDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CkBAIC0xNDgwLDYgKzE0ODAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVu
dChJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwu
YWRkQXJndW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJh
bmQpKTsKICAgICBzdHViQ2FsbC5jYWxsKCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5jcHAKaW5kZXggNmI4MDgyODg2OTY3NGIyMGU5NTQyOGU4NGRkMTg1OTU1
OTk3MjMxOC4uYzBkMTA5ZTFkOGYzYTAxODVjZWRjMmJmNzAyODI0ZDUwZDk3NjgwMCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTMzNjksOCArMzM2OSw5IEBAIERF
RklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX2RlYnVnKQogICAgIGludCBkZWJ1Z0hvb2tJRCA9
IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQzMigpOwogICAgIGludCBmaXJzdExpbmUgPSBzdGFja0Zy
YW1lLmFyZ3NbMV0uaW50MzIoKTsKICAgICBpbnQgbGFzdExpbmUgPSBzdGFja0ZyYW1lLmFyZ3Nb
Ml0uaW50MzIoKTsKKyAgICBpbnQgY29sdW1uID0gc3RhY2tGcmFtZS5hcmdzWzNdLmludDMyKCk7
CiAKLSAgICBzdGFja0ZyYW1lLmdsb2JhbERhdGEtPmludGVycHJldGVyLT5kZWJ1ZyhjYWxsRnJh
bWUsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFz
dExpbmUpOworICAgIHN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPmRlYnVnKGNh
bGxGcmFtZSwgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5l
LCBsYXN0TGluZSwgY29sdW1uKTsKIH0KIAogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIHZt
X3Rocm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKaW5kZXggYTc2OThiZTM3NDMyNjkzMDg1NWY1ZjI1MzAxOGRhMTY1ZmI2YzFlOS4uMTk1OGNm
NmE4MDZjNTE2M2EwMzZkZWVkOGQ2YmU1NDg2NzkwODBlZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xNTc4LDggKzE1NzgsOSBAQCBM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVidWcpCiAgICAgaW50IGRlYnVnSG9va0lE
ID0gcGNbMV0udS5vcGVyYW5kOwogICAgIGludCBmaXJzdExpbmUgPSBwY1syXS51Lm9wZXJhbmQ7
CiAgICAgaW50IGxhc3RMaW5lID0gcGNbM10udS5vcGVyYW5kOwotICAgIAotICAgIGdsb2JhbERh
dGEuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1
Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIGludCBjb2x1bW4gPSBwY1s0XS51
Lm9wZXJhbmQ7CisKKyAgICBnbG9iYWxEYXRhLmludGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0
aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lLCBj
b2x1bW4pOwogICAgIAogICAgIExMSU5UX0VORCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCAwZWI2MGNmODk5MmZmMDkyNDk5MTM0NDMyOGJmOTMx
YTFiZjczNmU3Li40YzVmNjgyNWFmNTQ3NDE3NTc3NDU5MDA3MGZkNjMzYWI2MWQ0MTg0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaApAQCAtMTEyLDggKzExMiw4
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgaW50ICBEb250QnVpbGRLZXl3b3JkcyA9IDA7
CiAgICAgc3RhdGljIGNvbnN0IGludCAgRG9udEJ1aWxkU3RyaW5ncyA9IDA7CiAKLSAgICBFeHBy
ZXNzaW9uTm9kZSogbWFrZUJpbmFyeU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCB0b2tlbiwgc3Rk
OjpwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiwgc3RkOjpwYWlyPEV4cHJlc3Np
b25Ob2RlKiwgQmluYXJ5T3BJbmZvPik7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VGdW5jdGlv
bkNhbGxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZnVuYywgQXJndW1lbnRz
Tm9kZSogYXJncywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOworICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlQmluYXJ5Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
aW50IHRva2VuLCBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+LCBzdGQ6
OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+KTsKKyAgICBFeHByZXNzaW9uTm9k
ZSogbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQgc3RhcnQsIGlu
dCBkaXZvdCwgaW50IGVuZCk7CiAKICAgICBKU0M6OlNvdXJjZUVsZW1lbnRzKiBjcmVhdGVTb3Vy
Y2VFbGVtZW50cygpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBKU0M6OlNvdXJjZUVsZW1l
bnRzKCk7IH0KIApAQCAtMTI0LDE2OCArMTI0LDE2OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFw
cGVuZFRvQ29tbWEoQ29tbWFOb2RlKiBjb21tYU5vZGUsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7
IGNvbW1hTm9kZS0+YXBwZW5kKGV4cHIpOyB9CiAKLSAgICBDb21tYU5vZGUqIGNyZWF0ZUNvbW1h
RXhwcihpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUq
IHJocykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbW1hTm9kZShsaW5lTnVtYmVyLCBs
aHMsIHJocyk7IH0KLQotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQXNzaWduTm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSog
cmlnaHQsIGJvb2wgbGVmdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMs
IGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFr
ZVByZWZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIGlu
dCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZVBv
c3RmaXhOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCBpbnQg
c3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VUeXBl
T2ZOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSopOwotICAgIEV4cHJlc3Npb25O
b2RlKiBtYWtlRGVsZXRlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqLCBpbnQg
c3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VOZWdh
dGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSopOwotICAgIEV4cHJlc3Npb25O
b2RlKiBtYWtlQml0d2lzZU5vdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7
Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VNdWx0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZURpdk5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VNb2ROb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQWRkTm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZVN1
Yk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUq
IG1ha2VCaXRYT3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJl
c3Npb25Ob2RlKiBtYWtlQml0QW5kTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
LSAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdE9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZUxlZnRTaGlmdE5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VSaWdodFNoaWZ0
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSog
bWFrZVVSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLQotICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVMb2dpY2FsTm90KGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxOb3ROb2Rl
KGxpbmVOdW1iZXIsIGV4cHIpOyB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVVuYXJ5UGx1
cyhpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBVbmFyeVBsdXNOb2RlKGxpbmVOdW1iZXIsIGV4cHIpOyB9Ci0gICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZVZvaWQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
KQorICAgIENvbW1hTm9kZSogY3JlYXRlQ29tbWFFeHByKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogcmhzKSB7IHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29tbWFOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgbGhzLCByaHMpOyB9CisKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUFzc2lnbk5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBPcGVy
YXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIGxlZnRIYXNBc3NpZ25tZW50cywgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7Cisg
ICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VQcmVmaXhOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCBpbnQgc3RhcnQsIGludCBkaXZv
dCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VQb3N0Zml4Tm9kZShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgaW50
IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlVHlw
ZU9mTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
KTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZURlbGV0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGlu
dCBlbmQpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTmVnYXRlTm9kZShpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICBFeHByZXNzaW9uTm9k
ZSogbWFrZUJpdHdpc2VOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSopOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTXVsdE5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lv
bk5vZGUqIG1ha2VEaXZOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTW9kTm9kZShpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSog
bWFrZUFkZE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VTdWJOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0
WE9yTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
KyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdEFuZE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRP
ck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBs
ZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VMZWZ0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlUmln
aHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VVUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisKKyAgICBFeHByZXNzaW9uTm9k
ZSogY3JlYXRlTG9naWNhbE5vdChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMb2dpY2FsTm90
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIpOyB9CisgICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZVVuYXJ5UGx1cyhpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbmFyeVBsdXNO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcik7IH0KKyAgICBFeHByZXNzaW9uTm9k
ZSogY3JlYXRlVm9pZChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIpCiAgICAgewogICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBWb2lkTm9kZShsaW5lTnVtYmVyLCBleHByKTsKKyAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBWb2lkTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIGV4cHIpOwogICAgIH0KLSAgICBFeHByZXNzaW9uTm9kZSogdGhpc0V4cHIoaW50IGxp
bmVOdW1iZXIpCisgICAgRXhwcmVzc2lvbk5vZGUqIHRoaXNFeHByKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyKQogICAgIHsKICAgICAgICAgdXNlc1RoaXMoKTsKLSAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUaGlzTm9kZShsaW5lTnVtYmVyKTsKKyAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUaGlzTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIp
OwogICAgIH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlUmVzb2x2ZShpbnQgbGluZU51bWJl
ciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBzdGFydCkKKyAgICBFeHByZXNzaW9uTm9k
ZSogY3JlYXRlUmVzb2x2ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQsIGludCBzdGFydCkKICAgICB7CiAgICAgICAgIGlmIChtX2dsb2Jh
bERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqaWRlbnQpCiAgICAgICAgICAgICB1
c2VzQXJndW1lbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVzb2x2
ZU5vZGUobGluZU51bWJlciwgKmlkZW50LCBzdGFydCk7CisgICAgICAgIHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgUmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAqaWRlbnQs
IHN0YXJ0KTsKICAgICB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU9iamVjdExpdGVyYWwo
aW50IGxpbmVOdW1iZXIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBPYmplY3RMaXRlcmFs
Tm9kZShsaW5lTnVtYmVyKTsgfQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVPYmplY3RMaXRl
cmFsKGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eUxpc3ROb2RlKiBwcm9wZXJ0aWVzKSB7IHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgT2JqZWN0TGl0ZXJhbE5vZGUobGluZU51bWJlciwgcHJvcGVy
dGllcyk7IH0KKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE9i
amVjdExpdGVyYWxOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7IH0KKyAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgUHJvcGVydHlMaXN0Tm9kZSogcHJvcGVydGllcykgeyByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIE9iamVjdExpdGVyYWxOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgcHJvcGVy
dGllcyk7IH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJheShpbnQgbGluZU51bWJl
ciwgaW50IGVsaXNpb25zKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJheShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgaW50IGVsaXNpb25zKQogICAgIHsKICAgICAgICAg
aWYgKGVsaXNpb25zKQogICAgICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJyYXlOb2RlKGxpbmVOdW1iZXIsIGVsaXNpb25zKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcnJheU5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBlbGlzaW9ucyk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZUFycmF5KGludCBsaW5lTnVtYmVyLCBFbGVtZW50Tm9kZSogZWxlbXMpIHsgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBBcnJheU5vZGUobGluZU51bWJlciwgZWxlbXMpOyB9Ci0gICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZUFycmF5KGludCBsaW5lTnVtYmVyLCBpbnQgZWxpc2lvbnMsIEVsZW1l
bnROb2RlKiBlbGVtcykKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEVsZW1lbnROb2RlKiBlbGVtcykgeyByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGVsZW1z
KTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJheShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgaW50IGVsaXNpb25zLCBFbGVtZW50Tm9kZSogZWxlbXMpCiAgICAgewog
ICAgICAgICBpZiAoZWxpc2lvbnMpCiAgICAgICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcnJheU5vZGUobGluZU51bWJlciwgZWxpc2lv
bnMsIGVsZW1zKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcnJheU5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBlbGlzaW9ucywgZWxlbXMpOwogICAgIH0KLSAgICBF
eHByZXNzaW9uTm9kZSogY3JlYXRlTnVtYmVyRXhwcihpbnQgbGluZU51bWJlciwgZG91YmxlIGQp
CisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bWJlckV4cHIoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGRvdWJsZSBkKQogICAgIHsKICAgICAgICAgaW5jQ29uc3RhbnRzKCk7
Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTnVtYmVyTm9kZShsaW5lTnVtYmVy
LCBkKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdW1iZXJOb2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgZCk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNy
ZWF0ZVN0cmluZyhpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciogc3RyaW5nKQorICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVTdHJpbmcoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIHN0cmluZykKICAgICB7CiAgICAgICAgIGluY0NvbnN0
YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN0cmluZ05vZGUobGlu
ZU51bWJlciwgKnN0cmluZyk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgU3Ry
aW5nTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICpzdHJpbmcpOwogICAgIH0KIAotICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVCb29sZWFuKGludCBsaW5lTnVtYmVyLCBib29sIGIpCisg
ICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJvb2xlYW4oaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIGJvb2wgYikKICAgICB7CiAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJvb2xlYW5Ob2RlKGxpbmVOdW1iZXIsIGIpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJvb2xlYW5Ob2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgYik7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51
bGwoaW50IGxpbmVOdW1iZXIpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bGwoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICBpbmNDb25zdGFudHMo
KTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdWxsTm9kZShsaW5lTnVtYmVy
KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdWxsTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVCcmFj
a2V0QWNjZXNzKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lv
bk5vZGUqIHByb3BlcnR5LCBib29sIHByb3BlcnR5SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwg
aW50IGRpdm90LCBpbnQgZW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVCcmFja2V0QWNj
ZXNzKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgRXhwcmVzc2lvbk5vZGUqIHByb3BlcnR5LCBib29sIHByb3BlcnR5SGFzQXNzaWdubWVudHMs
IGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgQnJhY2tldEFj
Y2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBCcmFja2V0QWNjZXNzb3JOb2Rl
KGxpbmVOdW1iZXIsIGJhc2UsIHByb3BlcnR5LCBwcm9wZXJ0eUhhc0Fzc2lnbm1lbnRzKTsKKyAg
ICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBCcmFj
a2V0QWNjZXNzb3JOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgYmFzZSwgcHJvcGVydHks
IHByb3BlcnR5SGFzQXNzaWdubWVudHMpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihu
b2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAot
ICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwgaW50IHN0YXJ0LCBp
bnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURvdEFjY2Vzcyhp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkK
ICAgICB7Ci0gICAgICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRh
KSBEb3RBY2Nlc3Nvck5vZGUobGluZU51bWJlciwgYmFzZSwgKnByb3BlcnR5KTsKKyAgICAgICAg
RG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIERvdEFjY2Vzc29yTm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJhc2UsICpwcm9wZXJ0eSk7CiAgICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAgICAgICAgcmV0
dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVJlZ0V4cChpbnQg
bGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYg
ZmxhZ3MsIGludCBzdGFydCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlUmVnRXhwKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBj
b25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50IHN0YXJ0KQogICAgIHsKICAgICAgICAgaWYgKFlh
cnI6OmNoZWNrU3ludGF4KHBhdHRlcm4udXN0cmluZygpKSkKICAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICBSZWdFeHBOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFJlZ0V4cE5v
ZGUobGluZU51bWJlciwgcGF0dGVybiwgZmxhZ3MpOworICAgICAgICBSZWdFeHBOb2RlKiBub2Rl
ID0gbmV3IChtX2dsb2JhbERhdGEpIFJlZ0V4cE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBwYXR0ZXJuLCBmbGFncyk7CiAgICAgICAgIGludCBzaXplID0gcGF0dGVybi5sZW5ndGgoKSAr
IDI7IC8vICsgMiBmb3IgdGhlIHR3byAvJ3MKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24o
bm9kZSwgc3RhcnQsIHN0YXJ0ICsgc2l6ZSwgc3RhcnQgKyBzaXplKTsKICAgICAgICAgcmV0dXJu
IG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU5ld0V4cHIoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmd1bWVudHMs
IGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVOZXdFeHByKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwciwgQXJndW1lbnRzTm9kZSogYXJndW1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwg
aW50IGVuZCkKICAgICB7Ci0gICAgICAgIE5ld0V4cHJOb2RlKiBub2RlID0gbmV3IChtX2dsb2Jh
bERhdGEpIE5ld0V4cHJOb2RlKGxpbmVOdW1iZXIsIGV4cHIsIGFyZ3VtZW50cyk7CisgICAgICAg
IE5ld0V4cHJOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIE5ld0V4cHJOb2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgZXhwciwgYXJndW1lbnRzKTsKICAgICAgICAgc2V0RXhjZXB0
aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9k
ZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTmV3RXhwcihpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkKKyAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlTmV3RXhwcihpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAg
ICAgIE5ld0V4cHJOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIE5ld0V4cHJOb2RlKGxp
bmVOdW1iZXIsIGV4cHIpOworICAgICAgICBOZXdFeHByTm9kZSogbm9kZSA9IG5ldyAobV9nbG9i
YWxEYXRhKSBOZXdFeHByTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIpOwogICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZW5kLCBlbmQpOwogICAgICAg
ICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQ29uZGl0
aW9uYWxFeHByKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogcmhzKQorICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVDb25kaXRpb25hbEV4cHIoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Np
b25Ob2RlKiByaHMpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENv
bmRpdGlvbmFsTm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24sIGxocywgcmhzKTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBDb25kaXRpb25hbE5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBjb25kaXRpb24sIGxocywgcmhzKTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlQXNzaWduUmVzb2x2ZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaHMsIGJvb2wgcmhzSGFzQXNzaWdubWVudCwgaW50
IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFz
c2lnblJlc29sdmUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmhzLCBib29sIHJoc0hhc0Fzc2lnbm1lbnQs
IGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogICAgIHsKICAgICAgICAgaWYgKHJocy0+
aXNGdW5jRXhwck5vZGUoKSkKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+
KHJocyktPmJvZHkoKS0+c2V0SW5mZXJyZWROYW1lKGlkZW50KTsKLSAgICAgICAgQXNzaWduUmVz
b2x2ZU5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobGlu
ZU51bWJlciwgaWRlbnQsIHJocywgcmhzSGFzQXNzaWdubWVudCk7CisgICAgICAgIEFzc2lnblJl
c29sdmVOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnblJlc29sdmVOb2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgaWRlbnQsIHJocywgcmhzSGFzQXNzaWdubWVudCk7CiAg
ICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAg
ICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUZ1
bmN0aW9uRXhwcihpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rp
b25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFj
ZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExp
bmUpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUZ1bmN0aW9uRXhwcihpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5
Tm9kZSogYm9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFjZVBvcywg
aW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCiAg
ICAgewotICAgICAgICBGdW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBG
dW5jRXhwck5vZGUobGluZU51bWJlciwgKm5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhw
cmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJh
bWV0ZXJzKTsKLSAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5l
KTsKKyAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVu
Y0V4cHJOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgKm5hbWUsIGJvZHksIG1fc291cmNl
Q29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFy
dExpbmUpLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUs
IGJvZHlFbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIAotICAgIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZUZ1bmN0aW9uQm9keShpbnQgbGluZU51
bWJlciwgYm9vbCBpblN0cmljdENvbnRleHQpCisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRl
RnVuY3Rpb25Cb2R5KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBib29sIGluU3Ry
aWN0Q29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVh
dGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBpblN0cmljdENvbnRleHQpOworICAgICAgICBy
ZXR1cm4gRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBpblN0cmljdENvbnRleHQpOwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0
ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGludCBs
aW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFt
ZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1zLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBpbnQgb3Bl
bkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5
RW5kTGluZSkKKyAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJP
clNldHRlclByb3BlcnR5KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBQcm9wZXJ0
eU5vZGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgUGFyYW1ldGVyTm9kZSog
cGFyYW1zLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xv
c2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChuYW1lKTsKLSAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUs
IGJvZHlFbmRMaW5lKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlF
bmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICBib2R5LT5zZXRJbmZlcnJlZE5hbWUoKm5h
bWUpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2ds
b2JhbERhdGEsICpuYW1lLCBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4cHJOb2RlKGxpbmVOdW1i
ZXIsIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1f
c291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJv
ZHlTdGFydExpbmUpLCBwYXJhbXMpLCB0eXBlKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCAqbmFtZSwgbmV3IChtX2dsb2JhbERh
dGEpIEZ1bmNFeHByTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIG1fZ2xvYmFsRGF0YS0+
cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhw
cmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJh
bXMpLCB0eXBlKTsKICAgICB9CiAgICAgCi0gICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9k
ZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShKU0dsb2JhbERhdGEqLCBpbnQgbGluZU51
bWJlciwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBuYW1lLCBQYXJhbWV0ZXJOb2Rl
KiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBj
bG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQorICAgIHRl
bXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHko
SlNHbG9iYWxEYXRhKiwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFByb3BlcnR5
Tm9kZTo6VHlwZSB0eXBlLCBkb3VibGUgbmFtZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1zLCBGdW5j
dGlvbkJvZHlOb2RlKiBib2R5LCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywg
aW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKICAgICB7Ci0gICAgICAgIGJvZHkt
PnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSk7Ci0gICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwgbmFtZSwgbmV3IChtX2ds
b2JhbERhdGEpIEZ1bmNFeHByTm9kZShsaW5lTnVtYmVyLCBtX2dsb2JhbERhdGEtPnByb3BlcnR5
TmFtZXMtPm51bGxJZGVudGlmaWVyLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24o
b3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1zKSwgdHlw
ZSk7CisgICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwgY29s
dW1uTnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5v
ZGUobV9nbG9iYWxEYXRhLCBuYW1lLCBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4cHJOb2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxs
SWRlbnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBv
cywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtcyksIHR5cGUpOwogICAgIH0K
IAogICAgIEFyZ3VtZW50c05vZGUqIGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBBcmd1bWVudHNOb2RlKCk7IH0KICAgICBBcmd1bWVudHNOb2RlKiBjcmVhdGVB
cmd1bWVudHMoQXJndW1lbnRMaXN0Tm9kZSogYXJncykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEFyZ3VtZW50c05vZGUoYXJncyk7IH0KLSAgICBBcmd1bWVudExpc3ROb2RlKiBjcmVhdGVB
cmd1bWVudHNMaXN0KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYXJnKSB7IHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVtYmVyLCBhcmcpOyB9
Ci0gICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRzTGlzdChpbnQgbGluZU51bWJl
ciwgQXJndW1lbnRMaXN0Tm9kZSogYXJncywgRXhwcmVzc2lvbk5vZGUqIGFyZykgeyByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgYXJncywgYXJn
KTsgfQorICAgIEFyZ3VtZW50TGlzdE5vZGUqIGNyZWF0ZUFyZ3VtZW50c0xpc3QoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBhcmcpIHsgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgYXJnKTsgfQorICAgIEFyZ3VtZW50TGlzdE5vZGUqIGNyZWF0ZUFyZ3VtZW50c0xpc3QoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MsIEV4
cHJlc3Npb25Ob2RlKiBhcmcpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudExp
c3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgYXJncywgYXJnKTsgfQogCiAgICAgdGVt
cGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmll
ciogcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBl
IHR5cGUpCiAgICAgewpAQCAtMjk0LDggKzI5NCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCAqcHJvcGVydHlO
YW1lLCBub2RlLCB0eXBlKTsKICAgICB9CiAgICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9k
ZSogY3JlYXRlUHJvcGVydHkoSlNHbG9iYWxEYXRhKiwgZG91YmxlIHByb3BlcnR5TmFtZSwgRXhw
cmVzc2lvbk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlKSB7IHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBu
b2RlLCB0eXBlKTsgfQotICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChp
bnQgbGluZU51bWJlciwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0eSkgeyByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIFByb3BlcnR5TGlzdE5vZGUobGluZU51bWJlciwgcHJvcGVydHkpOyB9Ci0gICAg
UHJvcGVydHlMaXN0Tm9kZSogY3JlYXRlUHJvcGVydHlMaXN0KGludCBsaW5lTnVtYmVyLCBQcm9w
ZXJ0eU5vZGUqIHByb3BlcnR5LCBQcm9wZXJ0eUxpc3ROb2RlKiB0YWlsKSB7IHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlMaXN0Tm9kZShsaW5lTnVtYmVyLCBwcm9wZXJ0eSwgdGFp
bCk7IH0KKyAgICBQcm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFByb3BlcnR5Tm9kZSogcHJvcGVydHkpIHsgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eUxpc3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgcHJvcGVydHkpOyB9CisgICAgUHJvcGVydHlMaXN0Tm9kZSogY3JlYXRlUHJvcGVydHlM
aXN0KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBQcm9wZXJ0eU5vZGUqIHByb3Bl
cnR5LCBQcm9wZXJ0eUxpc3ROb2RlKiB0YWlsKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
UHJvcGVydHlMaXN0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHByb3BlcnR5LCB0YWls
KTsgfQogCiAgICAgRWxlbWVudE5vZGUqIGNyZWF0ZUVsZW1lbnRMaXN0KGludCBlbGlzaW9ucywg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFbGVtZW50
Tm9kZShlbGlzaW9ucywgZXhwcik7IH0KICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExp
c3QoRWxlbWVudE5vZGUqIGVsZW1zLCBpbnQgZWxpc2lvbnMsIEV4cHJlc3Npb25Ob2RlKiBleHBy
KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRWxlbWVudE5vZGUoZWxlbXMsIGVsaXNpb25z
LCBleHByKTsgfQpAQCAtMzA5LDE5MSArMzA5LDE5MSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNl
dFVzZXNBcmd1bWVudHMoRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSkgeyBub2RlLT5zZXRVc2VzQXJn
dW1lbnRzKCk7IH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50
KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBGdW5jdGlvbkJvZHlOb2Rl
KiBib2R5LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJzLCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQg
Y2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKKyAgICBT
dGF0ZW1lbnROb2RlKiBjcmVhdGVGdW5jRGVjbFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSog
Ym9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFjZVBvcywgaW50IGNs
b3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCiAgICAgewot
ICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0RlY2xO
b2RlKGxpbmVOdW1iZXIsICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24o
b3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7
CisgICAgICAgIEZ1bmNEZWNsTm9kZSogZGVjbCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRGVj
bE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAqbmFtZSwgYm9keSwgbV9zb3VyY2VDb2Rl
LT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGlu
ZSksIHBhcmFtZXRlcnMpOwogICAgICAgICBpZiAoKm5hbWUgPT0gbV9nbG9iYWxEYXRhLT5wcm9w
ZXJ0eU5hbWVzLT5hcmd1bWVudHMpCiAgICAgICAgICAgICB1c2VzQXJndW1lbnRzKCk7CiAgICAg
ICAgIG1fc2NvcGUubV9mdW5jRGVjbGFyYXRpb25zLT5kYXRhLmFwcGVuZChkZWNsLT5ib2R5KCkp
OwotICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUpOworICAg
ICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUsIGNvbHVtbk51bWJl
cik7CiAgICAgICAgIHJldHVybiBkZWNsOwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZUJsb2NrU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBKU0M6OlNvdXJjZUVsZW1lbnRzKiBl
bGVtZW50cywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlQmxvY2tTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEpT
Qzo6U291cmNlRWxlbWVudHMqIGVsZW1lbnRzLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkK
ICAgICB7Ci0gICAgICAgIEJsb2NrTm9kZSogYmxvY2sgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQmxv
Y2tOb2RlKGxpbmVOdW1iZXIsIGVsZW1lbnRzKTsKLSAgICAgICAgYmxvY2stPnNldExvYyhzdGFy
dExpbmUsIGVuZExpbmUpOworICAgICAgICBCbG9ja05vZGUqIGJsb2NrID0gbmV3IChtX2dsb2Jh
bERhdGEpIEJsb2NrTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGVsZW1lbnRzKTsKKyAg
ICAgICAgYmxvY2stPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAg
ICAgICAgIHJldHVybiBibG9jazsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVF
eHByU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0
YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUV4cHJTdGF0ZW1lbnQoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQg
c3RhcnQsIGludCBlbmQpCiAgICAgewotICAgICAgICBFeHByU3RhdGVtZW50Tm9kZSogcmVzdWx0
ID0gbmV3IChtX2dsb2JhbERhdGEpIEV4cHJTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGV4cHIp
OwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAgICAgICAgRXhwclN0YXRl
bWVudE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBFeHByU3RhdGVtZW50Tm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIpOworICAgICAgICByZXN1bHQtPnNldExvYyhz
dGFydCwgZW5kLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnVlQmxvY2ssIGludCBz
dGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVJZlN0YXRlbWVudChpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwg
U3RhdGVtZW50Tm9kZSogdHJ1ZUJsb2NrLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewotICAg
ICAgICBJZk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBJZk5vZGUobGluZU51bWJl
ciwgY29uZGl0aW9uLCB0cnVlQmxvY2spOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwg
ZW5kKTsKKyAgICAgICAgSWZOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSWZOb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCB0cnVlQmxvY2spOworICAgICAg
ICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2Rl
KiB0cnVlQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZhbHNlQmxvY2ssIGludCBzdGFydCwgaW50IGVu
ZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVJZlN0YXRlbWVudChpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9k
ZSogdHJ1ZUJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmYWxzZUJsb2NrLCBpbnQgc3RhcnQsIGludCBl
bmQpCiAgICAgewotICAgICAgICBJZk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBJ
ZkVsc2VOb2RlKGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBmYWxzZUJsb2NrKTsK
LSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCk7CisgICAgICAgIElmTm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIElmRWxzZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBjb25kaXRpb24sIHRydWVCbG9jaywgZmFsc2VCbG9jayk7CisgICAgICAgIHJlc3VsdC0+
c2V0TG9jKHN0YXJ0LCBlbmQsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9yTG9vcChpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9u
LCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgYm9vbCBi
LCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9yTG9vcChp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxp
emVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3Rh
dGVtZW50Tm9kZSogc3RhdGVtZW50cywgYm9vbCBiLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAg
ewotICAgICAgICBGb3JOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9yTm9kZShs
aW5lTnVtYmVyLCBpbml0aWFsaXplciwgY29uZGl0aW9uLCBpdGVyLCBzdGF0ZW1lbnRzLCBiKTsK
LSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCk7CisgICAgICAgIEZvck5vZGUqIHJl
c3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgaW5pdGlhbGl6ZXIsIGNvbmRpdGlvbiwgaXRlciwgc3RhdGVtZW50cywgYik7CisgICAgICAg
IHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGlu
dCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGlu
aXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50
cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQsIGludCBpbml0U3RhcnQsIGludCBpbml0
RW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVh
dGVGb3JJbkxvb3AoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIsIEV4cHJlc3Npb25Ob2Rl
KiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwg
aW50IGVuZCwgaW50IGluaXRTdGFydCwgaW50IGluaXRFbmQsIGludCBzdGFydExpbmUsIGludCBl
bmRMaW5lKQogICAgIHsKLSAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgRm9ySW5Ob2RlKG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgKmlkZW50LCBpbml0aWFs
aXplciwgaXRlciwgc3RhdGVtZW50cywgaW5pdFN0YXJ0LCBpbml0U3RhcnQgLSBzdGFydCwgaW5p
dEVuZCAtIGluaXRTdGFydCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5k
TGluZSk7CisgICAgICAgIEZvckluTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZv
ckluTm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgKmlkZW50LCBp
bml0aWFsaXplciwgaXRlciwgc3RhdGVtZW50cywgaW5pdFN0YXJ0LCBpbml0U3RhcnQgLSBzdGFy
dCwgaW5pdEVuZCAtIGluaXRTdGFydCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGlu
ZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24o
cmVzdWx0LCBzdGFydCwgZGl2b3QgKyAxLCBlbmQpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5v
ZGUqIHN0YXRlbWVudHMsIGludCBlU3RhcnQsIGludCBlRGl2b3QsIGludCBlRW5kLCBpbnQgc3Rh
cnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9u
Tm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IGVTdGFydCwgaW50IGVE
aXZvdCwgaW50IGVFbmQsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIEZvcklu
Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZvckluTm9kZShtX2dsb2JhbERhdGEs
IGxpbmVOdW1iZXIsIGxocywgaXRlciwgc3RhdGVtZW50cyk7Ci0gICAgICAgIHJlc3VsdC0+c2V0
TG9jKHN0YXJ0LCBlbmQpOworICAgICAgICBGb3JJbk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9i
YWxEYXRhKSBGb3JJbk5vZGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IGxocywgaXRlciwgc3RhdGVtZW50cyk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBl
bmQsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwg
ZVN0YXJ0LCBlRGl2b3QsIGVFbmQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAot
ICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUVtcHR5U3RhdGVtZW50KGludCBsaW5lTnVtYmVyKSB7
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRW1wdHlTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIp
OyB9CisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRW1wdHlTdGF0ZW1lbnQoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFbXB0eVN0
YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsgfQogCi0gICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlVmFyU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVZhclN0
YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUq
IHJlc3VsdDsKICAgICAgICAgaWYgKCFleHByKQotICAgICAgICAgICAgcmVzdWx0ID0gbmV3ICht
X2dsb2JhbERhdGEpIEVtcHR5U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKTsKKyAgICAgICAgICAg
IHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBFbXB0eVN0YXRlbWVudE5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gbmV3
IChtX2dsb2JhbERhdGEpIFZhclN0YXRlbWVudE5vZGUobGluZU51bWJlciwgZXhwcik7Ci0gICAg
ICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgcmVzdWx0ID0gbmV3
IChtX2dsb2JhbERhdGEpIFZhclN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBleHByKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgY29sdW1uTnVtYmVy
KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVSZXR1cm5TdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
ZXNzaW9uLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUp
CisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlUmV0dXJuU3RhdGVtZW50KGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcmVzc2lvbiwgaW50IGVTdGFy
dCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAg
UmV0dXJuTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFJldHVybk5vZGUobGluZU51
bWJlciwgZXhwcmVzc2lvbik7CisgICAgICAgIFJldHVybk5vZGUqIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBSZXR1cm5Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcmVzc2lv
bik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBl
RW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAg
ICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJy
ZWFrU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0
YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQnJlYWtTdGF0
ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGludCBlU3RhcnQsIGludCBl
RW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIEJyZWFrTm9k
ZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEJyZWFrTm9kZShtX2dsb2JhbERhdGEsIGxp
bmVOdW1iZXIpOworICAgICAgICBCcmVha05vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRh
KSBCcmVha05vZGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0g
ICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJlc3Vs
dC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCcmVha1N0YXRl
bWVudChpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBlU3RhcnQs
IGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2Rl
KiBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRM
aW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3
IChtX2dsb2JhbERhdGEpIEJyZWFrTm9kZShsaW5lTnVtYmVyLCAqaWRlbnQpOworICAgICAgICBC
cmVha05vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBCcmVha05vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCAqaWRlbnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihy
ZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0
TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGlu
ZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBT
dGF0ZW1lbnROb2RlKiBjcmVhdGVDb250aW51ZVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50
IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExp
bmUpCiAgICAgewotICAgICAgICBDb250aW51ZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxE
YXRhKSBDb250aW51ZU5vZGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyKTsKKyAgICAgICAgQ29u
dGludWVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29udGludWVOb2RlKG1fZ2xv
YmFsRGF0YSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgc2V0RXhjZXB0aW9u
TG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQpOwotICAgICAgICByZXN1bHQtPnNl
dExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExp
bmUsIGVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50IGxpbmVO
dW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50
IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGlu
dWVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50
aWZpZXIqIGlkZW50LCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVu
ZExpbmUpCiAgICAgewotICAgICAgICBDb250aW51ZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9i
YWxEYXRhKSBDb250aW51ZU5vZGUobGluZU51bWJlciwgKmlkZW50KTsKKyAgICAgICAgQ29udGlu
dWVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29udGludWVOb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgKmlkZW50KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24o
cmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFy
dExpbmUsIGVuZExpbmUpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExp
bmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlVHJ5U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBTdGF0ZW1l
bnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUq
IGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jaywgaW50IHN0YXJ0TGluZSwg
aW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlVHJ5U3RhdGVtZW50KGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29u
c3QgSWRlbnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVu
dE5vZGUqIGZpbmFsbHlCbG9jaywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewot
ICAgICAgICBUcnlOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgVHJ5Tm9kZShsaW5l
TnVtYmVyLCB0cnlCbG9jaywgKmlkZW50LCBjYXRjaEJsb2NrLCBmaW5hbGx5QmxvY2spOworICAg
ICAgICBUcnlOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgVHJ5Tm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIHRyeUJsb2NrLCAqaWRlbnQsIGNhdGNoQmxvY2ssIGZpbmFsbHlC
bG9jayk7CiAgICAgICAgIGlmIChjYXRjaEJsb2NrKQogICAgICAgICAgICAgdXNlc0NhdGNoKCk7
Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJl
c3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVTd2l0Y2hT
dGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBDbGF1c2VMaXN0
Tm9kZSogZmlyc3RDbGF1c2VzLCBDYXNlQ2xhdXNlTm9kZSogZGVmYXVsdENsYXVzZSwgQ2xhdXNl
TGlzdE5vZGUqIHNlY29uZENsYXVzZXMsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAg
IFN0YXRlbWVudE5vZGUqIGNyZWF0ZVN3aXRjaFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIENsYXVzZUxpc3ROb2RlKiBmaXJz
dENsYXVzZXMsIENhc2VDbGF1c2VOb2RlKiBkZWZhdWx0Q2xhdXNlLCBDbGF1c2VMaXN0Tm9kZSog
c2Vjb25kQ2xhdXNlcywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewogICAgICAg
ICBDYXNlQmxvY2tOb2RlKiBjYXNlcyA9IG5ldyAobV9nbG9iYWxEYXRhKSBDYXNlQmxvY2tOb2Rl
KGZpcnN0Q2xhdXNlcywgZGVmYXVsdENsYXVzZSwgc2Vjb25kQ2xhdXNlcyk7Ci0gICAgICAgIFN3
aXRjaE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBTd2l0Y2hOb2RlKGxpbmVOdW1i
ZXIsIGV4cHIsIGNhc2VzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRM
aW5lKTsKKyAgICAgICAgU3dpdGNoTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFN3
aXRjaE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByLCBjYXNlcyk7CisgICAgICAg
IHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaGls
ZVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVu
dE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlV2hpbGVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGlu
dCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgV2hpbGVOb2RlKiByZXN1
bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgV2hpbGVOb2RlKGxpbmVOdW1iZXIsIGV4cHIsIHN0YXRl
bWVudCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAg
ICAgIFdoaWxlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFdoaWxlTm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIsIHN0YXRlbWVudCk7CisgICAgICAgIHJlc3VsdC0+
c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVEb1doaWxlU3RhdGVt
ZW50KGludCBsaW5lTnVtYmVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIEV4cHJlc3Npb25O
b2RlKiBleHByLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2Rl
KiBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3Rh
cnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIERvV2hpbGVOb2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgRG9XaGlsZU5vZGUobGluZU51bWJlciwgc3RhdGVtZW50LCBl
eHByKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAg
ICAgRG9XaGlsZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBEb1doaWxlTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRlbWVudCwgZXhwcik7CisgICAgICAgIHJlc3Vs
dC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVMYWJlbFN0YXRl
bWVudChpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5v
ZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZUxhYmVsU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnQs
IGludCBlbmQpCiAgICAgewotICAgICAgICBMYWJlbE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9i
YWxEYXRhKSBMYWJlbE5vZGUobGluZU51bWJlciwgKmlkZW50LCBzdGF0ZW1lbnQpOworICAgICAg
ICBMYWJlbE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBMYWJlbE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCAqaWRlbnQsIHN0YXRlbWVudCk7CiAgICAgICAgIHNldEV4Y2Vw
dGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGVuZCwgZW5kKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaXRoU3RhdGVtZW50KGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVt
ZW50LCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAg
IFN0YXRlbWVudE5vZGUqIGNyZWF0ZVdpdGhTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1l
bnQsIGludCBzdGFydCwgaW50IGVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAg
ewogICAgICAgICB1c2VzV2l0aCgpOwotICAgICAgICBXaXRoTm9kZSogcmVzdWx0ID0gbmV3ICht
X2dsb2JhbERhdGEpIFdpdGhOb2RlKGxpbmVOdW1iZXIsIGV4cHIsIHN0YXRlbWVudCwgZW5kLCBl
bmQgLSBzdGFydCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7
CisgICAgICAgIFdpdGhOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgV2l0aE5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByLCBzdGF0ZW1lbnQsIGVuZCwgZW5kIC0gc3Rh
cnQpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVtbk51
bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSAgICAKICAgICAKLSAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVUaHJvd1N0YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExp
bmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlVGhyb3dTdGF0ZW1lbnQoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGlu
dCBlbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgVGhyb3dO
b2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgVGhyb3dOb2RlKGxpbmVOdW1iZXIsIGV4
cHIpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAg
ICBUaHJvd05vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBUaHJvd05vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBleHByKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlv
bihyZXN1bHQsIHN0YXJ0LCBlbmQsIGVuZCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZURlYnVnZ2VyKGludCBsaW5lTnVtYmVy
LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVE
ZWJ1Z2dlcihpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgaW50IHN0YXJ0TGluZSwg
aW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5vZGUqIHJlc3Vs
dCA9IG5ldyAobV9nbG9iYWxEYXRhKSBEZWJ1Z2dlclN0YXRlbWVudE5vZGUobGluZU51bWJlcik7
Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIERl
YnVnZ2VyU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIERlYnVnZ2Vy
U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgICAgICByZXN1bHQt
PnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNvbnN0U3Rh
dGVtZW50KGludCBsaW5lTnVtYmVyLCBDb25zdERlY2xOb2RlKiBkZWNscywgaW50IHN0YXJ0TGlu
ZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29uc3RTdGF0ZW1lbnQo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIENvbnN0RGVjbE5vZGUqIGRlY2xzLCBp
bnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIENvbnN0U3RhdGVtZW50
Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnN0U3RhdGVtZW50Tm9kZShsaW5l
TnVtYmVyLCBkZWNscyk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGlu
ZSk7CisgICAgICAgIENvbnN0U3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERh
dGEpIENvbnN0U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGRlY2xzKTsK
KyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIENvbnN0RGVjbE5vZGUqIGFw
cGVuZENvbnN0RGVjbChpbnQgbGluZU51bWJlciwgQ29uc3REZWNsTm9kZSogdGFpbCwgY29uc3Qg
SWRlbnRpZmllciogbmFtZSwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyKQorICAgIENvbnN0
RGVjbE5vZGUqIGFwcGVuZENvbnN0RGVjbChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgQ29uc3REZWNsTm9kZSogdGFpbCwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRXhwcmVzc2lv
bk5vZGUqIGluaXRpYWxpemVyKQogICAgIHsKLSAgICAgICAgQ29uc3REZWNsTm9kZSogcmVzdWx0
ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnN0RGVjbE5vZGUobGluZU51bWJlciwgKm5hbWUsIGlu
aXRpYWxpemVyKTsKKyAgICAgICAgQ29uc3REZWNsTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2Jh
bERhdGEpIENvbnN0RGVjbE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAqbmFtZSwgaW5p
dGlhbGl6ZXIpOwogICAgICAgICBpZiAodGFpbCkKICAgICAgICAgICAgIHRhaWwtPm1fbmV4dCA9
IHJlc3VsdDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTUxMSw3ICs1MTEsNyBAQCBwdWJs
aWM6CiAgICAgICAgIG1fc2NvcGUubV92YXJEZWNsYXJhdGlvbnMtPmRhdGEuYXBwZW5kKHN0ZDo6
bWFrZV9wYWlyKGlkZW50LCBhdHRycykpOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBj
b21iaW5lQ29tbWFOb2RlcyhpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxpc3QsIEV4
cHJlc3Npb25Ob2RlKiBpbml0KQorICAgIEV4cHJlc3Npb25Ob2RlKiBjb21iaW5lQ29tbWFOb2Rl
cyhpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxpc3Qs
IEV4cHJlc3Npb25Ob2RlKiBpbml0KQogICAgIHsKICAgICAgICAgaWYgKCFsaXN0KQogICAgICAg
ICAgICAgcmV0dXJuIGluaXQ7CkBAIC01MTksNyArNTE5LDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8Q29tbWFOb2RlKj4obGlzdCktPmFwcGVuZChpbml0KTsKICAgICAgICAg
ICAgIHJldHVybiBsaXN0OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgQ29tbWFOb2RlKGxpbmVOdW1iZXIsIGxpc3QsIGluaXQpOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIENvbW1hTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxp
c3QsIGluaXQpOwogICAgIH0KIAogICAgIGludCBldmFsQ291bnQoKSBjb25zdCB7IHJldHVybiBt
X2V2YWxDb3VudDsgfQpAQCAtNTQ3LDEwICs1NDcsMTAgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQob3BlcmFuZFN0YWNrRGVwdGggPj0gMCk7CiAgICAgICAgIG1fYmluYXJ5T3BlcmFuZFN0YWNr
LnJlc2l6ZShtX2JpbmFyeU9wZXJhbmRTdGFjay5zaXplKCkgLSBhbW91bnQpOwogICAgIH0KLSAg
ICB2b2lkIGFwcGVuZEJpbmFyeU9wZXJhdGlvbihpbnQgbGluZU51bWJlciwgaW50JiBvcGVyYW5k
U3RhY2tEZXB0aCwgaW50JiwgY29uc3QgQmluYXJ5T3BlcmFuZCYgbGhzLCBjb25zdCBCaW5hcnlP
cGVyYW5kJiByaHMpCisgICAgdm9pZCBhcHBlbmRCaW5hcnlPcGVyYXRpb24oaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCYsIGNvbnN0
IEJpbmFyeU9wZXJhbmQmIGxocywgY29uc3QgQmluYXJ5T3BlcmFuZCYgcmhzKQogICAgIHsKICAg
ICAgICAgb3BlcmFuZFN0YWNrRGVwdGgrKzsKLSAgICAgICAgbV9iaW5hcnlPcGVyYW5kU3RhY2su
YXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG1ha2VCaW5hcnlOb2RlKGxpbmVOdW1iZXIsIG1fYmluYXJ5
T3BlcmF0b3JTdGFjay5sYXN0KCkuZmlyc3QsIGxocywgcmhzKSwgQmluYXJ5T3BJbmZvKGxocy5z
ZWNvbmQsIHJocy5zZWNvbmQpKSk7CisgICAgICAgIG1fYmluYXJ5T3BlcmFuZFN0YWNrLmFwcGVu
ZChzdGQ6Om1ha2VfcGFpcihtYWtlQmluYXJ5Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IG1fYmluYXJ5T3BlcmF0b3JTdGFjay5sYXN0KCkuZmlyc3QsIGxocywgcmhzKSwgQmluYXJ5T3BJ
bmZvKGxocy5zZWNvbmQsIHJocy5zZWNvbmQpKSk7CiAgICAgfQogICAgIHZvaWQgb3BlcmF0b3JT
dGFja0FwcGVuZChpbnQmIG9wZXJhdG9yU3RhY2tEZXB0aCwgaW50IG9wLCBpbnQgcHJlY2VkZW5j
ZSkKICAgICB7CkBAIC01OTIsOSArNTkyLDkgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2lnbm1l
bnRJbmZvU3RhY2suYXBwZW5kKEFzc2lnbm1lbnRJbmZvKG5vZGUsIHN0YXJ0LCBkaXZvdCwgYXNz
aWdubWVudENvdW50LCBvcCkpOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVB
c3NpZ25tZW50KGludCBsaW5lTnVtYmVyLCBpbnQmIGFzc2lnbm1lbnRTdGFja0RlcHRoLCBFeHBy
ZXNzaW9uTm9kZSogcmhzLCBpbnQgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgaW50IGN1cnJlbnRB
c3NpZ25tZW50Q291bnQsIGludCBsYXN0VG9rZW5FbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNy
ZWF0ZUFzc2lnbm1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGludCYgYXNz
aWdubWVudFN0YWNrRGVwdGgsIEV4cHJlc3Npb25Ob2RlKiByaHMsIGludCBpbml0aWFsQXNzaWdu
bWVudENvdW50LCBpbnQgY3VycmVudEFzc2lnbm1lbnRDb3VudCwgaW50IGxhc3RUb2tlbkVuZCkK
ICAgICB7Ci0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiByZXN1bHQgPSBtYWtlQXNzaWduTm9kZShs
aW5lTnVtYmVyLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fbm9kZSwgbV9hc3NpZ25t
ZW50SW5mb1N0YWNrLmxhc3QoKS5tX29wLCByaHMsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0
KCkubV9pbml0QXNzaWdubWVudHMgIT0gaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25t
ZW50SW5mb1N0YWNrLmxhc3QoKS5tX2luaXRBc3NpZ25tZW50cyAhPSBjdXJyZW50QXNzaWdubWVu
dENvdW50LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fc3RhcnQsIG1fYXNzaWdubWVu
dEluZm9TdGFjay5sYXN0KCkubV9kaXZvdCArIDEsIGxhc3RUb2tlbkVuZCk7CisgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiByZXN1bHQgPSBtYWtlQXNzaWduTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9ub2RlLCBtX2Fzc2lnbm1lbnRJ
bmZvU3RhY2subGFzdCgpLm1fb3AsIHJocywgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5t
X2luaXRBc3NpZ25tZW50cyAhPSBpbml0aWFsQXNzaWdubWVudENvdW50LCBtX2Fzc2lnbm1lbnRJ
bmZvU3RhY2subGFzdCgpLm1faW5pdEFzc2lnbm1lbnRzICE9IGN1cnJlbnRBc3NpZ25tZW50Q291
bnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9zdGFydCwgbV9hc3NpZ25tZW50SW5m
b1N0YWNrLmxhc3QoKS5tX2Rpdm90ICsgMSwgbGFzdFRva2VuRW5kKTsKICAgICAgICAgbV9hc3Np
Z25tZW50SW5mb1N0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgYXNzaWdubWVudFN0YWNrRGVw
dGgtLTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYzNSw5ICs2MzUsOSBAQCBwcml2YXRl
OgogICAgICAgICBtX2V2YWxDb3VudCsrOwogICAgICAgICBtX3Njb3BlLm1fZmVhdHVyZXMgfD0g
RXZhbEZlYXR1cmU7CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdW1iZXIoaW50
IGxpbmVOdW1iZXIsIGRvdWJsZSBkKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdW1iZXIo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGRvdWJsZSBkKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdW1iZXJOb2RlKGxpbmVOdW1iZXIsIGQpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bWJlck5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBkKTsKICAgICB9CiAgICAgCiAgICAgSlNHbG9iYWxEYXRhKiBtX2dsb2Jh
bERhdGE7CkBAIC02NTAsMzMgKzY1MCwzMyBAQCBwcml2YXRlOgogICAgIGludCBtX2V2YWxDb3Vu
dDsKIH07CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlVHlwZU9mTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCitFeHByZXNzaW9uTm9kZSogQVNUQnVp
bGRlcjo6bWFrZVR5cGVPZk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByKQogewogICAgIGlmIChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsK
ICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+
KGV4cHIpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFR5cGVPZlJlc29sdmVO
b2RlKGxpbmVOdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSk7CisgICAgICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgVHlwZU9mUmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCkpOwogICAgIH0KLSAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIFR5cGVPZlZhbHVlTm9kZShsaW5lTnVtYmVyLCBleHByKTsKKyAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIFR5cGVPZlZhbHVlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIGV4cHIpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZURlbGV0ZU5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBk
aXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGVsZXRlTm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIs
IGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlmICghZXhwci0+aXNMb2Nh
dGlvbigpKQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZVZhbHVlTm9k
ZShsaW5lTnVtYmVyLCBleHByKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBE
ZWxldGVWYWx1ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByKTsKICAgICBpZiAo
ZXhwci0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0g
c3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihleHByKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBEZWxldGVSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCByZXNvbHZlLT5pZGVudGlm
aWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlUmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQg
LSBkaXZvdCk7CiAgICAgfQogICAgIGlmIChleHByLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkg
ewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJh
Y2tldEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIERlbGV0ZUJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tl
dC0+c3Vic2NyaXB0KCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlQnJhY2tldE5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBk
aXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBBU1NFUlQoZXhw
ci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0
aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIERlbGV0ZURvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlRG90Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVu
ZCAtIGRpdm90KTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VOZWdhdGVO
b2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbikKK0V4cHJlc3Npb25Ob2RlKiBB
U1RCdWlsZGVyOjptYWtlTmVnYXRlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIG4pCiB7CiAgICAgaWYgKG4tPmlzTnVtYmVyKCkpIHsKICAgICAg
ICAgTnVtYmVyTm9kZSogbnVtYmVyTm9kZSA9IHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihuKTsK
QEAgLTY4NCwxMjggKzY4NCwxMjggQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VO
ZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbikKICAgICAgICAgcmV0
dXJuIG51bWJlck5vZGU7CiAgICAgfQogCi0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBO
ZWdhdGVOb2RlKGxpbmVOdW1iZXIsIG4pOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
TmVnYXRlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIG4pOwogfQogCi1FeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdHdpc2VOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcikKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0d2lz
ZU5vdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByKQogewogICAgIGlmIChleHByLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3Jl
YXRlTnVtYmVyKGxpbmVOdW1iZXIsIH50b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihl
eHByKS0+dmFsdWUoKSkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0d2lzZU5v
dE5vZGUobGluZU51bWJlciwgZXhwcik7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCB+dG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4o
ZXhwciktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdHdpc2VO
b3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcik7CiB9CiAKLUV4cHJlc3Npb25O
b2RlKiBBU1RCdWlsZGVyOjptYWtlTXVsdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU11bHROb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGV4cHIxID0gZXhw
cjEtPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAgZXhwcjIgPSBleHByMi0+c3RyaXBVbmFyeVBsdXMo
KTsKIAogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAg
ICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBzdGF0aWNfY2FzdDxOdW1iZXJO
b2RlKj4oZXhwcjEpLT52YWx1ZSgpICogc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+
dmFsdWUoKSk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpICogc3RhdGlj
X2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7CiAKICAgICBpZiAoZXhwcjEtPmlz
TnVtYmVyKCkgJiYgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSA9PSAx
KQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobGluZU51
bWJlciwgZXhwcjIpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1
c05vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMik7CiAKICAgICBpZiAoZXhwcjIt
PmlzTnVtYmVyKCkgJiYgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSA9
PSAxKQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobGlu
ZU51bWJlciwgZXhwcjEpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5
UGx1c05vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSk7CiAKLSAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIE11bHROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmln
aHRIYXNBc3NpZ25tZW50cyk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBNdWx0Tm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGl2Tm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlRGl2Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cykKIHsKICAgICBleHByMSA9IGV4cHIxLT5zdHJpcFVuYXJ5UGx1cygpOwogICAgIGV4cHIyID0g
ZXhwcjItPnN0cmlwVW5hcnlQbHVzKCk7CiAKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYg
ZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJl
ciwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAvIHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgRGl2Tm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAvIHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgRGl2Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIxLCBleHByMiwgcmln
aHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtl
TW9kTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBB
U1RCdWlsZGVyOjptYWtlTW9kTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKIHsKICAgICBleHByMSA9IGV4cHIxLT5zdHJpcFVuYXJ5UGx1cygpOwog
ICAgIGV4cHIyID0gZXhwcjItPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAgCiAgICAgaWYgKGV4cHIx
LT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRl
TnVtYmVyKGxpbmVOdW1iZXIsIGZtb2Qoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+
dmFsdWUoKSwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOwotICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTW9kTm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhw
cjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZm1vZChzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhw
cjEpLT52YWx1ZSgpLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7
CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBNb2ROb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBZGROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBZGROb2RlKGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHBy
MS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0
ZU51bWJlcihsaW5lTnVtYmVyLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1
ZSgpICsgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7Ci0gICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBZGROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1
ZSgpICsgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7CisgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBZGROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
ZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUq
IEFTVEJ1aWxkZXI6Om1ha2VTdWJOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQor
RXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VTdWJOb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0
cmlwVW5hcnlQbHVzKCk7CiAgICAgZXhwcjIgPSBleHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKIAog
ICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAg
cmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4o
ZXhwcjEpLT52YWx1ZSgpIC0gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUo
KSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBTdWJOb2RlKGxpbmVOdW1iZXIsIGV4
cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVO
dW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4o
ZXhwcjEpLT52YWx1ZSgpIC0gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUo
KSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBTdWJOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VMZWZ0U2hpZnROb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VMZWZ0U2hp
ZnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQog
ewogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAg
ICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB0b0ludDMyKHN0YXRpY19jYXN0PE51
bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpIDw8ICh0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1i
ZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSAmIDB4MWYpKTsKLSAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIExlZnRTaGlmdE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFs
dWUoKSkgPDwgKHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVl
KCkpICYgMHgxZikpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVmdFNoaWZ0Tm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUmlnaHRTaGlmdE5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVp
bGRlcjo6bWFrZVJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+
aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB0b0lu
dDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpID4+ICh0b1VJbnQz
MihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSAmIDB4MWYpKTsKLSAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGV4
cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVO
dW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJl
ck5vZGUqPihleHByMSktPnZhbHVlKCkpID4+ICh0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJO
b2RlKj4oZXhwcjIpLT52YWx1ZSgpKSAmIDB4MWYpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIFJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4
cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxk
ZXI6Om1ha2VVUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitF
eHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVVSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBpZiAoZXhwcjEt
PmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVO
dW1iZXIobGluZU51bWJlciwgdG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIx
KS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMikt
PnZhbHVlKCkpICYgMHgxZikpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5zaWdu
ZWRSaWdodFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgdG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkg
Pj4gKHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYg
MHgxZikpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5zaWduZWRSaWdodFNoaWZ0
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0T3JOb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxk
ZXI6Om1ha2VCaXRPck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJl
cigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3Rh
dGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgfCB0b0ludDMyKHN0YXRpY19j
YXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIEJpdE9yTm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNz
aWdubWVudHMpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgp
KSB8IHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOwor
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0T3JOb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRBbmROb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRBbmROb2RlKGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlm
IChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUq
PihleHByMSktPnZhbHVlKCkpICYgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhw
cjIpLT52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCaXRBbmROb2Rl
KGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAg
IHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0b0ludDMyKHN0
YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpICYgdG9JbnQzMihzdGF0aWNf
Y2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7CisgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBCaXRBbmROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4
cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxk
ZXI6Om1ha2VCaXRYT3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRYT3JOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1iZXIo
KSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5l
TnVtYmVyLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkp
IF4gdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7Ci0g
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCaXRYT3JOb2RlKGxpbmVOdW1iZXIsIGV4cHIx
LCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1i
ZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5v
ZGUqPihleHByMSktPnZhbHVlKCkpIF4gdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4o
ZXhwcjIpLT52YWx1ZSgpKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCaXRYT3JO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNh
bGxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZnVuYywgQXJndW1lbnRzTm9k
ZSogYXJncywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSog
QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQg
c3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKIHsKICAgICBpZiAoIWZ1bmMtPmlzTG9jYXRpb24o
KSkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxWYWx1ZU5v
ZGUobGluZU51bWJlciwgZnVuYywgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxWYWx1
ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBmdW5jLCBhcmdzLCBkaXZvdCwgZGl2b3Qg
LSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIGlmIChmdW5jLT5pc1Jlc29sdmVOb2RlKCkpIHsK
ICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+
KGZ1bmMpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyID0gcmVzb2x2ZS0+
aWRlbnRpZmllcigpOwogICAgICAgICBpZiAoaWRlbnRpZmllciA9PSBtX2dsb2JhbERhdGEtPnBy
b3BlcnR5TmFtZXMtPmV2YWwpIHsKICAgICAgICAgICAgIHVzZXNFdmFsKCk7Ci0gICAgICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGxpbmVOdW1i
ZXIsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9u
Q2FsbFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50aWZpZXIsIGFyZ3MsIGRpdm90LCBkaXZv
dCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBpZGVu
dGlmaWVyLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIH0K
ICAgICBpZiAoZnVuYy0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tl
dEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUq
PihmdW5jKTsKLSAgICAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUobGluZU51bWJlciwgYnJhY2tldC0+
YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQs
IGVuZCAtIGRpdm90KTsKKyAgICAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUqIG5vZGUgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBhcmdzLCBk
aXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgICAgICBub2RlLT5zZXRTdWJl
eHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5lbmRPZmZzZXQoKSk7CiAg
ICAgICAgIHJldHVybiBub2RlOwogICAgIH0KQEAgLTgxMywxMTggKzgxMywxMTggQEAgRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSoKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0
PERvdEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5vZGU7
CiAgICAgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1l
cy0+Y2FsbCkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBDYWxsRnVuY3Rpb25D
YWxsRG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFy
Z3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIG5vZGUgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBk
aXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVy
KCkgPT0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5hcHBseSkKLSAgICAgICAgbm9kZSA9
IG5ldyAobV9nbG9iYWxEYXRhKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51bWJlciwg
ZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFy
dCwgZW5kIC0gZGl2b3QpOworICAgICAgICBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGRvdC0+YmFzZSgp
LCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90KTsKICAgICBlbHNlCi0gICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rp
b25DYWxsRG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCks
IGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIG5vZGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRp
dm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5m
byhkb3QtPmRpdm90KCksIGRvdC0+ZW5kT2Zmc2V0KCkpOwogICAgIHJldHVybiBub2RlOwogfQog
Ci1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpbmFyeU5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCB0b2tlbiwgcGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4gbGhzLCBw
YWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiByaHMpCitFeHByZXNzaW9uTm9kZSog
QVNUQnVpbGRlcjo6bWFrZUJpbmFyeU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIGludCB0b2tlbiwgcGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4gbGhzLCBw
YWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiByaHMpCiB7CiAgICAgc3dpdGNoICh0
b2tlbikgewogICAgIGNhc2UgT1I6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
TG9naWNhbE9wTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgT3BMb2dpY2Fs
T3IpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxPcE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgT3BMb2dpY2FsT3Ip
OwogCiAgICAgY2FzZSBBTkQ6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9n
aWNhbE9wTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgT3BMb2dpY2FsQW5k
KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMb2dpY2FsT3BOb2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIE9wTG9naWNhbEFuZCk7
CiAKICAgICBjYXNlIEJJVE9SOgotICAgICAgICByZXR1cm4gbWFrZUJpdE9yTm9kZShsaW5lTnVt
YmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VCaXRPck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMu
Zmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2Ug
QklUWE9SOgotICAgICAgICByZXR1cm4gbWFrZUJpdFhPck5vZGUobGluZU51bWJlciwgbGhzLmZp
cnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVy
biBtYWtlQml0WE9yTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhz
LmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBCSVRBTkQ6Ci0g
ICAgICAgIHJldHVybiBtYWtlQml0QW5kTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5m
aXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VCaXRB
bmROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJo
cy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIEVRRVE6Ci0gICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgRXF1YWxOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhz
LmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIEVxdWFsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJz
dCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBORToK
LSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOb3RFcXVhbE5vZGUobGluZU51bWJl
ciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTm90RXF1YWxOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVu
dCk7CiAKICAgICBjYXNlIFNUUkVROgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IFN0cmljdEVxdWFsTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNl
Y29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBT
dHJpY3RFcXVhbE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5m
aXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgU1RSTkVROgotICAg
ICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE5vdFN0cmljdEVxdWFsTm9kZShsaW5lTnVt
YmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOb3RTdHJpY3RFcXVhbE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKIAogICAgIGNhc2UgTFQ6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgTGVzc05vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNv
bmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVz
c05vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhz
LnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgR1Q6Ci0gICAgICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgR3JlYXRlck5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMu
Zmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgR3JlYXRlck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmly
c3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgTEU6
Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVzc0VxTm9kZShsaW5lTnVtYmVy
LCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMZXNzRXFOb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7
CiAKICAgICBjYXNlIEdFOgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEdyZWF0
ZXJFcU5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFz
QXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgR3JlYXRlckVx
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMu
c2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBJTlNUQU5DRU9GOiB7Ci0gICAgICAg
IEluc3RhbmNlT2ZOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEluc3RhbmNlT2ZOb2Rl
KGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1l
bnQpOworICAgICAgICBJbnN0YW5jZU9mTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBJ
bnN0YW5jZU9mTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZp
cnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2Nh
dGlvbihub2RlLCBsaHMuc2Vjb25kLnN0YXJ0LCByaHMuc2Vjb25kLnN0YXJ0LCByaHMuc2Vjb25k
LmVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAogICAgIGNhc2UgSU5UT0tFTjog
ewotICAgICAgICBJbk5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSW5Ob2RlKGxpbmVO
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwor
ICAgICAgICBJbk5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSW5Ob2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNz
aWdubWVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIGxocy5zZWNvbmQu
c3RhcnQsIHJocy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuZW5kKTsKICAgICAgICAgcmV0dXJu
IG5vZGU7CiAgICAgfQogCiAgICAgY2FzZSBMU0hJRlQ6Ci0gICAgICAgIHJldHVybiBtYWtlTGVm
dFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5o
YXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VMZWZ0U2hpZnROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNz
aWdubWVudCk7CiAKICAgICBjYXNlIFJTSElGVDoKLSAgICAgICAgcmV0dXJuIG1ha2VSaWdodFNo
aWZ0Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VSaWdodFNoaWZ0Tm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2ln
bm1lbnQpOwogCiAgICAgY2FzZSBVUlNISUZUOgotICAgICAgICByZXR1cm4gbWFrZVVSaWdodFNo
aWZ0Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVUmlnaHRTaGlmdE5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3Np
Z25tZW50KTsKIAogICAgIGNhc2UgUExVUzoKLSAgICAgICAgcmV0dXJuIG1ha2VBZGROb2RlKGxp
bmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQp
OworICAgICAgICByZXR1cm4gbWFrZUFkZE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBs
aHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNh
c2UgTUlOVVM6Ci0gICAgICAgIHJldHVybiBtYWtlU3ViTm9kZShsaW5lTnVtYmVyLCBsaHMuZmly
c3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJu
IG1ha2VTdWJOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmly
c3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIFRJTUVTOgotICAgICAg
ICByZXR1cm4gbWFrZU11bHROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBy
aHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZU11bHROb2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQu
aGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIERJVklERToKLSAgICAgICAgcmV0dXJuIG1ha2VE
aXZOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fz
c2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZURpdk5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsK
IAogICAgIGNhc2UgTU9EOgotICAgICAgICByZXR1cm4gbWFrZU1vZE5vZGUobGluZU51bWJlciwg
bGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAg
IHJldHVybiBtYWtlTW9kTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwg
cmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogICAgIH0KICAgICBDUkFTSCgp
OwogICAgIHJldHVybiAwOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFz
c2lnbk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsb2MsIE9wZXJhdG9yIG9w
LCBFeHByZXNzaW9uTm9kZSogZXhwciwgYm9vbCBsb2NIYXNBc3NpZ25tZW50cywgYm9vbCBleHBy
SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorRXhwcmVzc2lv
bk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbG9jLCBPcGVyYXRvciBvcCwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIsIGJvb2wgbG9jSGFzQXNzaWdubWVudHMsIGJvb2wgZXhwckhhc0Fzc2lnbm1lbnRz
LCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKIHsKICAgICBpZiAoIWxvYy0+aXNMb2Nh
dGlvbigpKQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnbkVycm9yTm9k
ZShsaW5lTnVtYmVyLCBsb2MsIG9wLCBleHByLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0g
ZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnbkVycm9yTm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxvYywgb3AsIGV4cHIsIGRpdm90LCBkaXZvdCAt
IHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAKICAgICBpZiAobG9jLT5pc1Jlc29sdmVOb2RlKCkpIHsK
ICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+
KGxvYyk7CiAgICAgICAgIGlmIChvcCA9PSBPcEVxdWFsKSB7CiAgICAgICAgICAgICBpZiAoZXhw
ci0+aXNGdW5jRXhwck5vZGUoKSkKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxGdW5jRXhw
ck5vZGUqPihleHByKS0+Ym9keSgpLT5zZXRJbmZlcnJlZE5hbWUocmVzb2x2ZS0+aWRlbnRpZmll
cigpKTsKLSAgICAgICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChtX2dsb2Jh
bERhdGEpIEFzc2lnblJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIo
KSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgICAgIEFzc2lnblJlc29sdmVO
b2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnblJlc29sdmVOb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBleHByLCBleHBySGFzQXNz
aWdubWVudHMpOwogICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQs
IGRpdm90LCBlbmQpOwogICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUobGluZU51
bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRz
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50
cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICB9CiAgICAgaWYgKGxv
Yy0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9k
ZSogYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihsb2MpOwogICAg
ICAgICBpZiAob3AgPT0gT3BFcXVhbCkKLSAgICAgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgQXNzaWduQnJhY2tldE5vZGUobGluZU51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFj
a2V0LT5zdWJzY3JpcHQoKSwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25t
ZW50cywgYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBi
cmFja2V0LT5kaXZvdCgpKTsKLSAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKiBub2RlID0g
bmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFj
a2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZXhwciwgbG9jSGFzQXNzaWdu
bWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90KTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduQnJhY2tl
dE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQt
PnN1YnNjcmlwdCgpLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhhc0Fzc2lnbm1lbnRz
LCBicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5kaXZvdCgpIC0gc3RhcnQsIGVuZCAtIGJyYWNr
ZXQtPmRpdm90KCkpOworICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcg
KG1fZ2xvYmFsRGF0YSkgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgb3AsIGV4cHIsIGxv
Y0hhc0Fzc2lnbm1lbnRzLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0
LCBlbmQgLSBkaXZvdCk7CiAgICAgICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGJyYWNr
ZXQtPmRpdm90KCksIGJyYWNrZXQtPmVuZE9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7
CiAgICAgfQpAQCAtOTMzLDU1ICs5MzMsNTUgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6
Om1ha2VBc3NpZ25Ob2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbG9jLAogICAg
IGlmIChvcCA9PSBPcEVxdWFsKSB7CiAgICAgICAgIGlmIChleHByLT5pc0Z1bmNFeHByTm9kZSgp
KQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZXhwciktPmJvZHkoKS0+
c2V0SW5mZXJyZWROYW1lKGRvdC0+aWRlbnRpZmllcigpKTsKLSAgICAgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBBc3NpZ25Eb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3Qt
PmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkb3QtPmRpdm90KCksIGRv
dC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBkb3QtPmRpdm90KCkpOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIEFzc2lnbkRvdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50
cywgZG90LT5kaXZvdCgpLCBkb3QtPmRpdm90KCkgLSBzdGFydCwgZW5kIC0gZG90LT5kaXZvdCgp
KTsKICAgICB9CiAKLSAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxE
YXRhKSBSZWFkTW9kaWZ5RG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVu
dGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0
YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgUmVhZE1vZGlmeURvdE5vZGUqIG5vZGUgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgUmVhZE1vZGlmeURvdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBk
b3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVu
dHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgbm9kZS0+c2V0U3Vi
ZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPmVuZE9mZnNldCgpKTsKICAgICByZXR1
cm4gbm9kZTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VQcmVmaXhOb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3BlcmF0b3Igb3AsIGludCBz
dGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VQcmVmaXhOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwciwgT3BlcmF0b3Igb3AsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQog
ewogICAgIGlmICghZXhwci0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIFByZWZpeEVycm9yTm9kZShsaW5lTnVtYmVyLCBleHByLCBvcCwgZGl2b3QsIGRp
dm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBQcmVmaXhFcnJvck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByLCBvcCwg
ZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKIAogICAgIGlmIChleHByLT5pc1Jl
c29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2Fz
dDxSZXNvbHZlTm9kZSo+KGV4cHIpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IFByZWZpeFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3As
IGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgUHJlZml4UmVzb2x2ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCByZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0g
ZGl2b3QpOwogICAgIH0KICAgICBpZiAoZXhwci0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsK
ICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNr
ZXRBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICAgICAgUHJlZml4QnJhY2tldE5vZGUqIG5vZGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4QnJhY2tldE5vZGUobGluZU51bWJlciwgYnJhY2tl
dC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0
LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIFByZWZpeEJyYWNrZXROb2RlKiBub2RlID0gbmV3ICht
X2dsb2JhbERhdGEpIFByZWZpeEJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
YnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgb3AsIGRpdm90LCBkaXZvdCAt
IHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZv
KGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPnN0YXJ0T2Zmc2V0KCkpOwogICAgICAgICByZXR1
cm4gbm9kZTsKICAgICB9CiAgICAgQVNTRVJUKGV4cHItPmlzRG90QWNjZXNzb3JOb2RlKCkpOwog
ICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4o
ZXhwcik7Ci0gICAgUHJlZml4RG90Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQcmVm
aXhEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3As
IGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgUHJlZml4RG90Tm9kZSog
bm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhEb3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90
IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhk
b3QtPmRpdm90KCksIGRvdC0+c3RhcnRPZmZzZXQoKSk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAK
LUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUG9zdGZpeE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2
b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVBvc3RmaXhOb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwg
T3BlcmF0b3Igb3AsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlmICgh
ZXhwci0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFBv
c3RmaXhFcnJvck5vZGUobGluZU51bWJlciwgZXhwciwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0
LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZp
eEVycm9yTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIsIG9wLCBkaXZvdCwgZGl2
b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogCiAgICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUo
KSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVO
b2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeFJl
c29sdmVOb2RlKGxpbmVOdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBk
aXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgUG9zdGZpeFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgcmVzb2x2
ZS0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsK
ICAgICB9CiAgICAgaWYgKGV4cHItPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAg
IEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNz
b3JOb2RlKj4oZXhwcik7Ci0gICAgICAgIFBvc3RmaXhCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAo
bV9nbG9iYWxEYXRhKSBQb3N0Zml4QnJhY2tldE5vZGUobGluZU51bWJlciwgYnJhY2tldC0+YmFz
ZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQg
LSBkaXZvdCk7CisgICAgICAgIFBvc3RmaXhCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9i
YWxEYXRhKSBQb3N0Zml4QnJhY2tldE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBicmFj
a2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3Rh
cnQsIGVuZCAtIGRpdm90KTsKICAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJh
Y2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZW5kT2Zmc2V0KCkpOwogICAgICAgICByZXR1cm4gbm9k
ZTsKIAogICAgIH0KICAgICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAg
RG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihleHBy
KTsKLSAgICBQb3N0Zml4RG90Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4
RG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBk
aXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgIFBvc3RmaXhEb3ROb2RlKiBu
b2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhEb3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90
IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhk
b3QtPmRpdm90KCksIGRvdC0+ZW5kT2Zmc2V0KCkpOwogICAgIHJldHVybiBub2RlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCAzYjAyMGY0ZjJiMWIwOTZhNzBh
OTVhOWI1ODg4MjdiZDkwYjk4NTljLi5iZmQ3ZmQyYzI0NzJiODM3YWZhZjkxOWY1MTgxYzMwZDRl
N2I5MzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtNDE3LDYg
KzQxNyw3IEBAIHZvaWQgTGV4ZXI8VD46OnNldENvZGUoY29uc3QgU291cmNlQ29kZSYgc291cmNl
LCBQYXJzZXJBcmVuYSogYXJlbmEpCiAgICAgbV9jb2RlRW5kID0gbV9jb2RlU3RhcnQgKyBzb3Vy
Y2UuZW5kT2Zmc2V0KCk7CiAgICAgbV9lcnJvciA9IGZhbHNlOwogICAgIG1fYXRMaW5lU3RhcnQg
PSB0cnVlOworICAgIG1fY29sdW1uTnVtYmVyID0gMDsKICAgICBtX2xleEVycm9yTWVzc2FnZSA9
IFVTdHJpbmcoKTsKICAgICAKICAgICBtX2J1ZmZlcjgucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShp
bml0aWFsUmVhZEJ1ZmZlckNhcGFjaXR5KTsKQEAgLTQzMyw2ICs0MzQsNyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KIHRlbXBsYXRlIDxpbnQgc2hpZnRBbW91bnQ+IEFMV0FZU19JTkxJTkUgdm9p
ZCBMZXhlcjxUPjo6aW50ZXJuYWxTaGlmdCgpCiB7CiAgICAgbV9jb2RlICs9IHNoaWZ0QW1vdW50
OworICAgIG1fY29sdW1uTnVtYmVyICs9IHNoaWZ0QW1vdW50OwogICAgIG1fY3VycmVudCA9ICpt
X2NvZGU7CiB9CiAKQEAgLTQ0NCw2ICs0NDYsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8
VD46OnNoaWZ0KCkKICAgICArK21fY29kZTsKICAgICBpZiAoTElLRUxZKG1fY29kZSA8IG1fY29k
ZUVuZCkpCiAgICAgICAgIG1fY3VycmVudCA9ICptX2NvZGU7CisgICAgKyttX2NvbHVtbk51bWJl
cjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC0xMjAwLDYgKzEyMDMsNyBAQCBzdGFy
dDoKICAgICAgICAgcmV0dXJuIEVPRlRPSzsKICAgICAKICAgICB0b2tlbkluZm8tPnN0YXJ0T2Zm
c2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRva2VuSW5mby0+Y29sdW1uID0gbV9jb2x1bW5O
dW1iZXI7CiAKICAgICBDaGFyYWN0ZXJUeXBlIHR5cGU7CiAgICAgaWYgKExJS0VMWShpc0xhdGlu
MShtX2N1cnJlbnQpKSkKQEAgLTE1MjIsNiArMTUyNiw3IEBAIGluTnVtYmVyQWZ0ZXJEZWNpbWFs
UG9pbnQ6CiAgICAgICAgIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKICAgICAgICAgbV9hdExpbmVT
dGFydCA9IHRydWU7CiAgICAgICAgIG1fdGVybWluYXRvciA9IHRydWU7CisgICAgICAgIG1fY29s
dW1uTnVtYmVyID0gMDsKICAgICAgICAgZ290byBzdGFydDsKICAgICBjYXNlIENoYXJhY3Rlcklu
dmFsaWQ6CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gaW52YWxpZENoYXJhY3Rlck1lc3Nh
Z2UoKTsKQEAgLTE1NDQsNiArMTU0OSw3IEBAIGluU2luZ2xlTGluZUNvbW1lbnQ6CiAgICAgc2hp
ZnRMaW5lVGVybWluYXRvcigpOwogICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOwogICAgIG1fdGVy
bWluYXRvciA9IHRydWU7CisgICAgbV9jb2x1bW5OdW1iZXIgPSAwOwogICAgIGlmICghbGFzdFRv
a2VuV2FzUmVzdHJLZXl3b3JkKCkpCiAgICAgICAgIGdvdG8gc3RhcnQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCA0MWYxZjg1NTNlMWViMjVmNTQ0YmVlMTkzNWEyYWY0
YmJkMDY5ZTY0Li4yOGI1M2JiZTdkOGZjNzZiYzBiYTQ3ZjhkYjc2ZDc2NzhlYjA3Y2MwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC05MCw2ICs5MCw3IEBAIHB1YmxpYzoK
ICAgICBKU1Rva2VuVHlwZSBsZXgoSlNUb2tlbkRhdGEqLCBKU1Rva2VuSW5mbyosIHVuc2lnbmVk
LCBib29sIHN0cmljdE1vZGUpOwogICAgIGJvb2wgbmV4dFRva2VuSXNDb2xvbigpOwogICAgIGlu
dCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CisgICAgaW50IGN1
cnJlbnRDb2x1bW5OdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbHVtbk51bWJlcjsgfQogICAg
IHZvaWQgc2V0TGFzdExpbmVOdW1iZXIoaW50IGxhc3RMaW5lTnVtYmVyKSB7IG1fbGFzdExpbmVO
dW1iZXIgPSBsYXN0TGluZU51bWJlcjsgfQogICAgIGludCBsYXN0TGluZU51bWJlcigpIGNvbnN0
IHsgcmV0dXJuIG1fbGFzdExpbmVOdW1iZXI7IH0KICAgICBib29sIHByZXZUZXJtaW5hdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXJtaW5hdG9yOyB9CkBAIC0xNjYsNiArMTY3LDcgQEAgcHJpdmF0
ZToKIAogICAgIGludCBtX2xpbmVOdW1iZXI7CiAgICAgaW50IG1fbGFzdExpbmVOdW1iZXI7Cisg
ICAgaW50IG1fY29sdW1uTnVtYmVyOwogCiAgICAgVmVjdG9yPExDaGFyPiBtX2J1ZmZlcjg7CiAg
ICAgVmVjdG9yPFVDaGFyPiBtX2J1ZmZlcjE2OwpAQCAtMjg1LDYgKzI4Nyw3IEBAIEFMV0FZU19J
TkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbkRh
dGEqIHRva2VuRGF0YSwKICAgICAgICAgbV9jdXJyZW50ID0gMDsKIAogICAgIG1fY29kZSA9IHB0
cjsKKyAgICBtX2NvbHVtbk51bWJlciA9IG1fY29sdW1uTnVtYmVyICsgKG1fY29kZSAtIHN0YXJ0
KTsKIAogICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVkZWQKICAgICBpZiAobGV4
ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKQEAgLTI5NCw2ICsyOTcsNyBA
QCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVy
KEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsCiAgICAgdG9rZW5JbmZvLT5saW5lID0gbV9saW5lTnVt
YmVyOwogICAgIHRva2VuSW5mby0+c3RhcnRPZmZzZXQgPSBzdGFydCAtIG1fY29kZVN0YXJ0Owog
ICAgIHRva2VuSW5mby0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRva2VuSW5m
by0+Y29sdW1uID0gbV9jb2x1bW5OdW1iZXI7CiAgICAgbV9sYXN0VG9rZW4gPSBJREVOVDsKICAg
ICByZXR1cm4gSURFTlQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGU0OTZkMjM0MmIzNDAxZmE0YWU3NGUyNDYzOTRlYjk3
YzMzYmNhMWYuLjJhZTJmOWUzZGU2MWFjOGIwMzdmOWJjZGMwMWNjODU3ZjI5ZmUxY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC00
Miw2MCArNDIsNjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGdsb2JhbERhdGEtPnBhcnNl
ckFyZW5hLT5kZXJlZldpdGhBcmVuYShhZG9wdFJlZih0aGlzKSk7CiAgICAgfQogCi0gICAgaW5s
aW5lIE5vZGU6Ok5vZGUoaW50IGxpbmVOdW1iZXIpCisgICAgaW5saW5lIE5vZGU6Ok5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiAgICAgICAgIDogbV9saW5lTnVtYmVyKGxp
bmVOdW1iZXIpCisgICAgICAgICwgbV9jb2x1bW5OdW1iZXIoY29sdW1uTnVtYmVyKQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgRXhwcmVzc2lvbk5vZGU6OkV4cHJlc3Npb25Ob2RlKGludCBs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlIHJlc3VsdFR5cGUpCi0gICAgICAgIDogTm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBFeHByZXNzaW9uTm9kZTo6RXhwcmVzc2lvbk5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGUgcmVzdWx0VHlwZSkKKyAgICAgICAg
OiBOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX3Jlc3VsdFR5cGUo
cmVzdWx0VHlwZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFN0YXRlbWVudE5vZGU6OlN0
YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBTdGF0ZW1lbnROb2RlOjpTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyKQorICAgICAgICA6IE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
KQogICAgICAgICAsIG1fbGFzdExpbmUoLTEpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBO
dWxsTm9kZTo6TnVsbE5vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVsbFR5cGUoKSkKKyAgICBpbmxpbmUgTnVsbE5v
ZGU6Ok51bGxOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQorICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVs
bFR5cGUoKSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJvb2xlYW5Ob2RlOjpCb29sZWFu
Tm9kZShpbnQgbGluZU51bWJlciwgYm9vbCB2YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpKQorICAgIGlubGluZSBCb29s
ZWFuTm9kZTo6Qm9vbGVhbk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGJv
b2wgdmFsdWUpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpKQogICAgICAgICAsIG1fdmFsdWUodmFsdWUp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBOdW1iZXJOb2RlOjpOdW1iZXJOb2RlKGludCBs
aW5lTnVtYmVyLCBkb3VibGUgdmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51
bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpKQorICAgIGlubGluZSBOdW1iZXJOb2RlOjpO
dW1iZXJOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBkb3VibGUgdmFsdWUp
CisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1
bHRUeXBlOjpudW1iZXJUeXBlKCkpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIFN0cmluZ05vZGU6OlN0cmluZ05vZGUoaW50IGxpbmVOdW1iZXIs
IGNvbnN0IElkZW50aWZpZXImIHZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIsIFJlc3VsdFR5cGU6OnN0cmluZ1R5cGUoKSkKKyAgICBpbmxpbmUgU3RyaW5nTm9kZTo6
U3RyaW5nTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRp
ZmllciYgdmFsdWUpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1
ZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFJlZ0V4cE5vZGU6OlJlZ0V4cE5vZGUoaW50
IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXIm
IGZsYWdzKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IFJlZ0V4cE5vZGU6OlJlZ0V4cE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzKQorICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAg
LCBtX3BhdHRlcm4ocGF0dGVybikKICAgICAgICAgLCBtX2ZsYWdzKGZsYWdzKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgVGhpc05vZGU6OlRoaXNOb2RlKGludCBsaW5lTnVtYmVyKQotICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFRoaXNOb2RlOjpU
aGlzTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKKyAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBSZXNvbHZlTm9kZTo6UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBpbnQgc3RhcnRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmVzb2x2ZU5vZGU6OlJlc29sdmVOb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgaW50
IHN0YXJ0T2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcikKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fc3RhcnRPZmZz
ZXQoc3RhcnRPZmZzZXQpCiAgICAgewpAQCAtMTE2LDI0ICsxMTcsMjQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGwtPm1fbmV4dCA9IHRoaXM7CiAgICAgfQogCi0gICAgaW5saW5lIEFycmF5
Tm9kZTo6QXJyYXlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgZWxpc2lvbikKLSAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBBcnJheU5vZGU6OkFycmF5Tm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgaW50IGVsaXNpb24pCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1f
ZWxlbWVudCgwKQogICAgICAgICAsIG1fZWxpc2lvbihlbGlzaW9uKQogICAgICAgICAsIG1fb3B0
aW9uYWwodHJ1ZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFycmF5Tm9kZTo6QXJyYXlO
b2RlKGludCBsaW5lTnVtYmVyLCBFbGVtZW50Tm9kZSogZWxlbWVudCkKLSAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBBcnJheU5vZGU6OkFycmF5Tm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRWxlbWVudE5vZGUqIGVsZW1lbnQpCisg
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAg
ICAsIG1fZWxlbWVudChlbGVtZW50KQogICAgICAgICAsIG1fZWxpc2lvbigwKQogICAgICAgICAs
IG1fb3B0aW9uYWwoZmFsc2UpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcnJheU5vZGU6
OkFycmF5Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGVsaXNpb24sIEVsZW1lbnROb2RlKiBlbGVt
ZW50KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFy
cmF5Tm9kZTo6QXJyYXlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQg
ZWxpc2lvbiwgRWxlbWVudE5vZGUqIGVsZW1lbnQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZWxlbWVudChlbGVtZW50KQog
ICAgICAgICAsIG1fZWxpc2lvbihlbGlzaW9uKQogICAgICAgICAsIG1fb3B0aW9uYWwodHJ1ZSkK
QEAgLTE1NCw1NyArMTU1LDU3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgUHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZShpbnQgbGluZU51bWJl
ciwgUHJvcGVydHlOb2RlKiBub2RlKQotICAgICAgICA6IE5vZGUobGluZU51bWJlcikKKyAgICBp
bmxpbmUgUHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZShpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgUHJvcGVydHlOb2RlKiBub2RlKQorICAgICAgICA6IE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fbm9kZShub2RlKQogICAgICAgICAs
IG1fbmV4dCgwKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJvcGVydHlMaXN0Tm9kZTo6
UHJvcGVydHlMaXN0Tm9kZShpbnQgbGluZU51bWJlciwgUHJvcGVydHlOb2RlKiBub2RlLCBQcm9w
ZXJ0eUxpc3ROb2RlKiBsaXN0KQotICAgICAgICA6IE5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgUHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgUHJvcGVydHlOb2RlKiBub2RlLCBQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0
KQorICAgICAgICA6IE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1f
bm9kZShub2RlKQogICAgICAgICAsIG1fbmV4dCgwKQogICAgIHsKICAgICAgICAgbGlzdC0+bV9u
ZXh0ID0gdGhpczsKICAgICB9CiAKLSAgICBpbmxpbmUgT2JqZWN0TGl0ZXJhbE5vZGU6Ok9iamVj
dExpdGVyYWxOb2RlKGludCBsaW5lTnVtYmVyKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIE9iamVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKKyAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9saXN0KDApCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBPYmplY3RMaXRlcmFsTm9kZTo6T2JqZWN0TGl0ZXJhbE5v
ZGUoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgT2JqZWN0TGl0ZXJhbE5vZGU6Ok9i
amVjdExpdGVyYWxOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBQcm9wZXJ0
eUxpc3ROb2RlKiBsaXN0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcikKICAgICAgICAgLCBtX2xpc3QobGlzdCkKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIEJyYWNrZXRBY2Nlc3Nvck5vZGU6OkJyYWNrZXRBY2Nlc3Nvck5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBi
b29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIEJyYWNrZXRBY2Nlc3Nvck5vZGU6OkJyYWNrZXRBY2Nlc3Nv
ck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1l
bnRzKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikK
ICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQp
CiAgICAgICAgICwgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50cyhzdWJzY3JpcHRIYXNBc3NpZ25t
ZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERvdEFjY2Vzc29yTm9kZTo6RG90QWNj
ZXNzb3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgRG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFyZ3VtZW50TGlzdE5vZGU6OkFyZ3VtZW50TGlzdE5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IE5vZGUo
bGluZU51bWJlcikKKyAgICBpbmxpbmUgQXJndW1lbnRMaXN0Tm9kZTo6QXJndW1lbnRMaXN0Tm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIp
CisgICAgICAgIDogTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9u
ZXh0KDApCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBBcmd1bWVudExpc3ROb2RlOjpBcmd1bWVudExpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBBcmd1
bWVudExpc3ROb2RlKiBsaXN0Tm9kZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDog
Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBBcmd1bWVudExpc3ROb2RlOjpBcmd1bWVudExp
c3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBBcmd1bWVudExpc3ROb2Rl
KiBsaXN0Tm9kZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgICAgICwgbV9leHBy
KGV4cHIpCiAgICAgewpAQCAtMjIxLDQ1ICsyMjIsNDUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBOZXdFeHByTm9kZTo6TmV3RXhwck5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIE5ld0V4cHJOb2RlOjpOZXdFeHByTm9kZShpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhw
cihleHByKQogICAgICAgICAsIG1fYXJncygwKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
TmV3RXhwck5vZGU6Ok5ld0V4cHJOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgQXJndW1lbnRzTm9kZSogYXJncykKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBOZXdFeHByTm9kZTo6TmV3RXhwck5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2Rl
KiBhcmdzKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
cikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIEV2YWxGdW5jdGlvbkNhbGxOb2RlOjpFdmFsRnVuY3Rpb25D
YWxsTm9kZShpbnQgbGluZU51bWJlciwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRXZhbEZ1bmN0aW9uQ2FsbE5v
ZGU6OkV2YWxGdW5jdGlvbkNhbGxOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2
b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OkZ1bmN0aW9uQ2Fs
bFZhbHVlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50
c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAg
aW5saW5lIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQXJndW1l
bnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1f
YXJncyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsUmVzb2x2
ZU5vZGU6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OkZ1
bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAg
ICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6RnVuY3Rpb25DYWxsQnJhY2tl
dE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9k
ZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6RnVu
Y3Rpb25DYWxsQnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNO
b2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9z
dWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtMjY3LDggKzI2OCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25D
YWxsRG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5j
dGlvbkNhbGxEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFy
Z3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikK
ICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlk
ZW50KQpAQCAtMjc2LDMxICsyNzcsMzEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRnVuY3Rpb25DYWxs
RG90Tm9kZShsaW5lTnVtYmVyLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQpCisgICAgaW5saW5lIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVu
Y3Rpb25DYWxsRG90Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBh
cmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBs
eUZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAg
IDogRnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVtYmVyLCBiYXNlLCBpZGVudCwgYXJncywgZGl2
b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgaW5saW5lIEFwcGx5RnVuY3Rpb25DYWxs
RG90Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVQb3N0UmVzb2x2
ZU5vZGU6OlByZVBvc3RSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5
cGU6Om51bWJlclR5cGUoKSkgLy8gY291bGQgYmUgcmV1c2FibGUgZm9yIHByZT8KKyAgICBpbmxp
bmUgUHJlUG9zdFJlc29sdmVOb2RlOjpQcmVQb3N0UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJl
clR5cGUoKSkgLy8gY291bGQgYmUgcmV1c2FibGUgZm9yIHByZT8KICAgICAgICAgLCBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAg
LCBtX2lkZW50KGlkZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUG9zdGZpeFJlc29s
dmVOb2RlOjpQb3N0Zml4UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBQcmVQb3N0UmVzb2x2ZU5vZGUo
bGluZU51bWJlciwgaWRlbnQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgIGlu
bGluZSBQb3N0Zml4UmVzb2x2ZU5vZGU6OlBvc3RmaXhSZXNvbHZlTm9kZShpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9w
ZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KQorICAgICAgICA6IFByZVBvc3RSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIGlkZW50LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX29w
ZXJhdG9yKG9wZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQb3N0Zml4QnJhY2tldE5v
ZGU6OlBvc3RmaXhCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFBvc3RmaXhCcmFja2V0Tm9k
ZTo6UG9zdGZpeEJyYWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Ig
b3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
KQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1fc3Vic2Ny
aXB0KHN1YnNjcmlwdCkKQEAgLTMwOCw4ICszMDksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIFBvc3RmaXhEb3ROb2RlOjpQb3N0Zml4RG90Tm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBQb3N0Zml4RG90Tm9kZTo6UG9zdGZpeERvdE5vZGUoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRh
KGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQog
ICAgICAgICAsIG1faWRlbnQoaWRlbnQpCkBAIC0zMTcsNjkgKzMxOCw2OSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFBvc3RmaXhFcnJvck5vZGU6OlBvc3Rm
aXhFcnJvck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRv
ciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGlu
ZSBQb3N0Zml4RXJyb3JOb2RlOjpQb3N0Zml4RXJyb3JOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3BlcmF0b3Igb3BlciwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAs
IFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0
KQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlbGV0ZVJlc29sdmVOb2RlOjpEZWxldGVSZXNvbHZl
Tm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIERlbGV0ZVJlc29sdmVOb2Rl
OjpEZWxldGVSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVsZXRlQnJhY2tldE5vZGU6OkRlbGV0ZUJyYWNrZXRO
b2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUq
IHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBp
bmxpbmUgRGVsZXRlQnJhY2tldE5vZGU6OkRlbGV0ZUJyYWNrZXROb2RlKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUq
IHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9m
ZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1fc3Vi
c2NyaXB0KHN1YnNjcmlwdCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlbGV0ZURvdE5v
ZGU6OkRlbGV0ZURvdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51
bWJlcikKKyAgICBpbmxpbmUgRGVsZXRlRG90Tm9kZTo6RGVsZXRlRG90Tm9kZShpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9p
ZGVudChpZGVudCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlbGV0ZVZhbHVlTm9kZTo6
RGVsZXRlVmFsdWVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBEZWxldGVWYWx1
ZU5vZGU6OkRlbGV0ZVZhbHVlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgVm9pZE5vZGU6OlZvaWROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlu
bGluZSBWb2lkTm9kZTo6Vm9pZE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIFR5cGVPZlJlc29sdmVOb2RlOjpUeXBlT2ZSZXNvbHZlTm9kZShpbnQgbGlu
ZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQorICAgIGlubGluZSBUeXBl
T2ZSZXNvbHZlTm9kZTo6VHlwZU9mUmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQog
ICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBUeXBl
T2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlw
ZTo6c3RyaW5nVHlwZSgpKQorICAgIGlubGluZSBUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVl
Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBS
ZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBQcmVmaXhSZXNvbHZlTm9kZTo6UHJlZml4UmVzb2x2ZU5vZGUo
aW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
LSAgICAgICAgOiBQcmVQb3N0UmVzb2x2ZU5vZGUobGluZU51bWJlciwgaWRlbnQsIGRpdm90LCBz
dGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgIGlubGluZSBQcmVmaXhSZXNvbHZlTm9kZTo6UHJl
Zml4UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBQcmVQb3N0UmVzb2x2
ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBpZGVudCwgZGl2b3QsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgUHJlZml4QnJhY2tldE5vZGU6OlByZWZpeEJyYWNrZXROb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwg
T3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgUHJlZml4QnJhY2tldE5vZGU6OlByZWZpeEJyYWNrZXROb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZVByZWZpeGVkU3Vi
RXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwg
bV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtMzg3LDgg
KzM4OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJl
Zml4RG90Tm9kZTo6UHJlZml4RG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcmVmaXhEb3ROb2RlOjpQ
cmVmaXhEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAg
LCBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRlbnQoaWRl
bnQpCkBAIC0zOTYsNDQgKzM5Nyw0NCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIFByZWZpeEVycm9yTm9kZTo6UHJlZml4RXJyb3JOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUHJlZml4RXJyb3JOb2RlOjpQcmVm
aXhFcnJvck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByLCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEo
ZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAg
ICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVW5h
cnlPcE5vZGU6OlVuYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBSZXN1bHRUeXBlIHR5cGUsIEV4
cHJlc3Npb25Ob2RlKiBleHByLCBPcGNvZGVJRCBvcGNvZGVJRCkKLSAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyLCB0eXBlKQorICAgIGlubGluZSBVbmFyeU9wTm9kZTo6VW5hcnlP
cE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGUgdHlwZSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wY29kZUlEIG9wY29kZUlEKQorICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdHlwZSkKICAgICAgICAgLCBtX2V4
cHIoZXhwcikKICAgICAgICAgLCBtX29wY29kZUlEKG9wY29kZUlEKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgVW5hcnlQbHVzTm9kZTo6VW5hcnlQbHVzTm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogVW5hcnlPcE5vZGUobGluZU51bWJlciwg
UmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByLCBvcF90b19qc251bWJlcikKKyAgICBpbmxp
bmUgVW5hcnlQbHVzTm9kZTo6VW5hcnlQbHVzTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogVW5hcnlPcE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIsIG9w
X3RvX2pzbnVtYmVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTmVnYXRlTm9kZTo6TmVn
YXRlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDog
VW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByLCBv
cF9uZWdhdGUpCisgICAgaW5saW5lIE5lZ2F0ZU5vZGU6Ok5lZ2F0ZU5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IFVu
YXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlw
ZSgpLCBleHByLCBvcF9uZWdhdGUpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCaXR3aXNl
Tm90Tm9kZTo6Qml0d2lzZU5vdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZv
ckJpdE9wKCkpCisgICAgaW5saW5lIEJpdHdpc2VOb3ROb2RlOjpCaXR3aXNlTm90Tm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBl
Ojpmb3JCaXRPcCgpKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgTG9naWNhbE5vdE5vZGU6OkxvZ2ljYWxOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBS
ZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByLCBvcF9ub3QpCisgICAgaW5saW5lIExvZ2lj
YWxOb3ROb2RlOjpMb2dpY2FsTm90Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogVW5hcnlPcE5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByLCBvcF9ub3Qp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCaW5hcnlPcE5vZGU6OkJpbmFyeU9wTm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQmluYXJ5T3BOb2RlOjpC
aW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1f
ZXhwcjIoZXhwcjIpCiAgICAgICAgICwgbV9vcGNvZGVJRChvcGNvZGVJRCkKQEAgLTQ0MSw4ICs0
NDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJpbmFy
eU9wTm9kZTo6QmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBSZXN1bHRUeXBlIHR5cGUsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNv
ZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIsIHR5cGUpCisgICAgaW5saW5lIEJpbmFyeU9wTm9kZTo6QmluYXJ5T3BOb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlIHR5cGUsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJ
RCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdHlwZSkKICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQog
ICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCiAgICAgICAgICwgbV9vcGNvZGVJRChvcGNvZGVJRCkK
QEAgLTQ1MCwxNDAgKzQ1MSwxNDAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBNdWx0Tm9kZTo6TXVsdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJl
clR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9tdWwsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAg
aW5saW5lIE11bHROb2RlOjpNdWx0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbXVs
LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGl2Tm9k
ZTo6RGl2Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5h
cnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhw
cjIsIG9wX2RpdiwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgRGl2Tm9kZTo6RGl2
Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAg
ICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBl
OjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZGl2LCByaWdodEhhc0Fzc2lnbm1lbnRz
KQogICAgIHsKICAgICB9CiAKIAotICAgIGlubGluZSBNb2ROb2RlOjpNb2ROb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVy
LCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbW9kLCByaWdodEhh
c0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBNb2ROb2RlOjpNb2ROb2RlKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhw
cjEsIGV4cHIyLCBvcF9tb2QsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBBZGROb2RlOjpBZGROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JBZGQo
ZXhwcjEtPnJlc3VsdERlc2NyaXB0b3IoKSwgZXhwcjItPnJlc3VsdERlc2NyaXB0b3IoKSksIGV4
cHIxLCBleHByMiwgb3BfYWRkLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBBZGRO
b2RlOjpBZGROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJl
c3VsdFR5cGU6OmZvckFkZChleHByMS0+cmVzdWx0RGVzY3JpcHRvcigpLCBleHByMi0+cmVzdWx0
RGVzY3JpcHRvcigpKSwgZXhwcjEsIGV4cHIyLCBvcF9hZGQsIHJpZ2h0SGFzQXNzaWdubWVudHMp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBTdWJOb2RlOjpTdWJOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBS
ZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3Bfc3ViLCByaWdodEhhc0Fz
c2lnbm1lbnRzKQorICAgIGlubGluZSBTdWJOb2RlOjpTdWJOb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEs
IGV4cHIyLCBvcF9zdWIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBMZWZ0U2hpZnROb2RlOjpMZWZ0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBl
Ojpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2xzaGlmdCwgcmlnaHRIYXNBc3NpZ25tZW50
cykKKyAgICBpbmxpbmUgTGVmdFNoaWZ0Tm9kZTo6TGVmdFNoaWZ0Tm9kZShpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHBy
MSwgZXhwcjIsIG9wX2xzaGlmdCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIFJpZ2h0U2hpZnROb2RlOjpSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVz
dWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9yc2hpZnQsIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgaW5saW5lIFJpZ2h0U2hpZnROb2RlOjpSaWdodFNoaWZ0Tm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBC
aW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRP
cCgpLCBleHByMSwgZXhwcjIsIG9wX3JzaGlmdCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGU6OlVuc2lnbmVkUmln
aHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmlu
YXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4
cHIyLCBvcF91cnNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBVbnNpZ25l
ZFJpZ2h0U2hpZnROb2RlOjpVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEs
IGV4cHIyLCBvcF91cnNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgTGVzc05vZGU6Okxlc3NOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29s
ZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2xlc3MsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisg
ICAgaW5saW5lIExlc3NOb2RlOjpMZXNzTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9w
X2xlc3MsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBH
cmVhdGVyTm9kZTo6R3JlYXRlck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0g
ICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBl
KCksIGV4cHIxLCBleHByMiwgb3BfZ3JlYXRlciwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBp
bmxpbmUgR3JlYXRlck5vZGU6OkdyZWF0ZXJOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwg
b3BfZ3JlYXRlciwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIExlc3NFcU5vZGU6Okxlc3NFcU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
Ci0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5U
eXBlKCksIGV4cHIxLCBleHByMiwgb3BfbGVzc2VxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAg
IGlubGluZSBMZXNzRXFOb2RlOjpMZXNzRXFOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwg
b3BfbGVzc2VxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgR3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9v
bGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVyZXEsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCisgICAgaW5saW5lIEdyZWF0ZXJFcU5vZGU6OkdyZWF0ZXJFcU5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVyZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OlRocm93YWJsZUJpbmFy
eU9wTm9kZShpbnQgbGluZU51bWJlciwgUmVzdWx0VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgdHlw
ZSwgZXhwcjEsIGV4cHIyLCBvcGNvZGVJRCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxp
bmUgVGhyb3dhYmxlQmluYXJ5T3BOb2RlOjpUaHJvd2FibGVCaW5hcnlPcE5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgdHlwZSwgZXhwcjEsIGV4cHIyLCBvcGNvZGVJRCwgcmlnaHRIYXNBc3NpZ25t
ZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFRocm93YWJsZUJpbmFyeU9wTm9kZTo6
VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgZXhwcjEs
IGV4cHIyLCBvcGNvZGVJRCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgVGhyb3dh
YmxlQmluYXJ5T3BOb2RlOjpUaHJvd2FibGVCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAg
ICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIxLCBleHByMiwg
b3Bjb2RlSUQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBJbnN0YW5jZU9mTm9kZTo6SW5zdGFuY2VPZk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCi0gICAgICAgIDogVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3Vs
dFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfaW5zdGFuY2VvZiwgcmlnaHRI
YXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgSW5zdGFuY2VPZk5vZGU6Okluc3RhbmNlT2ZOb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAg
ICA6IFRocm93YWJsZUJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3Vs
dFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfaW5zdGFuY2VvZiwgcmlnaHRI
YXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEluTm9kZTo6SW5Ob2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IFRocm93YWJsZUJpbmFy
eU9wTm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIG9wX2luLCByaWdodEhhc0Fzc2lnbm1l
bnRzKQorICAgIGlubGluZSBJbk5vZGU6OkluTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBUaHJvd2FibGVCaW5hcnlPcE5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSwgZXhwcjIsIG9wX2luLCByaWdodEhhc0Fz
c2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRXF1YWxOb2RlOjpFcXVhbE5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2Rl
KGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3Bf
ZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEVxdWFsTm9kZTo6RXF1YWxOb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAg
ICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJv
b2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBOb3RFcXVhbE5vZGU6Ok5vdEVxdWFsTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51
bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9uZXEsIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIE5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAg
ICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJv
b2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbmVxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3RyaWN0RXF1YWxOb2RlOjpTdHJpY3RFcXVhbE5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2Rl
KGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3Bf
c3RyaWN0ZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIFN0cmljdEVxdWFsTm9k
ZTo6U3RyaWN0RXF1YWxOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3Bfc3RyaWN0ZXEs
IHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBOb3RTdHJp
Y3RFcXVhbE5vZGU6Ok5vdFN0cmljdEVxdWFsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9v
bGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9uc3RyaWN0ZXEsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCisgICAgaW5saW5lIE5vdFN0cmljdEVxdWFsTm9kZTo6Tm90U3RyaWN0RXF1YWxOb2RlKGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6
IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xl
YW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbnN0cmljdGVxLCByaWdodEhhc0Fzc2lnbm1lbnRz
KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQml0QW5kTm9kZTo6Qml0QW5kTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51
bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXRhbmQsIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEJpdEFuZE5vZGU6OkJpdEFuZE5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDog
QmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0
T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXRhbmQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBCaXRPck5vZGU6OkJpdE9yTm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVz
dWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXRvciwgcmlnaHRIYXNBc3Np
Z25tZW50cykKKyAgICBpbmxpbmUgQml0T3JOb2RlOjpCaXRPck5vZGUoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEs
IGV4cHIyLCBvcF9iaXRvciwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIEJpdFhPck5vZGU6OkJpdFhPck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZv
ckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfYml0eG9yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQor
ICAgIGlubGluZSBCaXRYT3JOb2RlOjpCaXRYT3JOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwg
b3BfYml0eG9yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgTG9naWNhbE9wTm9kZTo6TG9naWNhbE9wTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIExvZ2ljYWxPcGVyYXRvciBvcGVy
KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xl
YW5UeXBlKCkpCisgICAgaW5saW5lIExvZ2ljYWxPcE5vZGU6OkxvZ2ljYWxPcE5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBMb2dpY2FsT3BlcmF0b3Igb3BlcikKKyAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBl
KCkpCiAgICAgICAgICwgbV9leHByMShleHByMSkKICAgICAgICAgLCBtX2V4cHIyKGV4cHIyKQog
ICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENv
bmRpdGlvbmFsTm9kZTo6Q29uZGl0aW9uYWxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogbG9naWNhbCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQ29u
ZGl0aW9uYWxOb2RlOjpDb25kaXRpb25hbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9sb2dpY2FsKGxvZ2ljYWwpCiAgICAgICAgICwg
bV9leHByMShleHByMSkKICAgICAgICAgLCBtX2V4cHIyKGV4cHIyKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgUmVhZE1vZGlmeVJlc29sdmVOb2RlOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUo
aW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBF
eHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFJlYWRNb2RpZnlSZXNv
bHZlTm9kZTo6UmVhZE1vZGlmeVJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lv
bk5vZGUqICByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwg
bV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQpAQCAtNTkyLDE2ICs1OTMs
MTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25S
ZXNvbHZlTm9kZTo6QXNzaWduUmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBB
c3NpZ25SZXNvbHZlTm9kZTo6QXNzaWduUmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAg
ICAgLCBtX3JpZ2h0KHJpZ2h0KQogICAgICAgICAsIG1fcmlnaHRIYXNBc3NpZ25tZW50cyhyaWdo
dEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeUJy
YWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJl
cikKKyAgICBpbmxpbmUgUmVhZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9m
ZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1fc3Vi
c2NyaXB0KHN1YnNjcmlwdCkKQEAgLTYxMiw4ICs2MTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkJyYWNrZXROb2RlOjpBc3NpZ25CcmFja2V0
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2Rl
KiBzdWJzY3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3Np
Z25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBBc3NpZ25CcmFja2V0Tm9kZTo6QXNzaWduQnJh
Y2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
CisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAg
ICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zm
c2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1fc3Vic2NyaXB0KHN1YnNj
cmlwdCkKQEAgLTYyMyw4ICs2MjQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6OkFzc2lnbkRvdE5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6OkFzc2lnbkRv
dE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAg
ICAgLCBtX2lkZW50KGlkZW50KQpAQCAtNjMzLDggKzYzNCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlE
b3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0
YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkK
ICAgICAgICAgLCBtX2lkZW50KGlkZW50KQpAQCAtNjQ0LDggKzY0NSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXNzaWduRXJyb3JOb2RlOjpBc3NpZ25F
cnJvck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBPcGVyYXRvciBv
cGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIEFzc2lnbkVycm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgT3Bl
cmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9sZWZ0
KGxlZnQpCiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQpAQCAtNjUzLDE1ICs2NTQsMTUgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDb21tYU5vZGU6OkNv
bW1hTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBp
bmxpbmUgQ29tbWFOb2RlOjpDb21tYU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKQorICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CiAgICAg
ICAgIG1fZXhwcmVzc2lvbnMuYXBwZW5kKGV4cHIxKTsKICAgICAgICAgbV9leHByZXNzaW9ucy5h
cHBlbmQoZXhwcjIpOwogICAgIH0KIAotICAgIGlubGluZSBDb25zdFN0YXRlbWVudE5vZGU6OkNv
bnN0U3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlciwgQ29uc3REZWNsTm9kZSogbmV4dCkKLSAg
ICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIENvbnN0U3RhdGVt
ZW50Tm9kZTo6Q29uc3RTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBDb25zdERlY2xOb2RlKiBuZXh0KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fbmV4dChuZXh0KQogICAgIHsKICAgICB9
CkBAIC02NzAsNTcgKzY3MSw1NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIEVtcHR5U3RhdGVtZW50Tm9kZTo6RW1wdHlTdGF0ZW1lbnROb2RlKGludCBsaW5l
TnVtYmVyKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
RW1wdHlTdGF0ZW1lbnROb2RlOjpFbXB0eVN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBEZWJ1Z2dlclN0YXRlbWVudE5v
ZGU6OkRlYnVnZ2VyU3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBTdGF0
ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6
RGVidWdnZXJTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQor
ICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsK
ICAgICB9CiAgICAgCi0gICAgaW5saW5lIEV4cHJTdGF0ZW1lbnROb2RlOjpFeHByU3RhdGVtZW50
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogU3Rh
dGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBFeHByU3RhdGVtZW50Tm9kZTo6RXhw
clN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgVmFyU3RhdGVtZW50Tm9kZTo6VmFyU3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBWYXJTdGF0ZW1lbnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBT
dGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2V4cHIo
ZXhwcikKICAgICB7CiAgICAgfQogICAgIAotICAgIGlubGluZSBJZk5vZGU6OklmTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZC
bG9jaykKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIElm
Tm9kZTo6SWZOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrKQorICAgICAgICA6IFN0YXRl
bWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fY29uZGl0aW9u
KGNvbmRpdGlvbikKICAgICAgICAgLCBtX2lmQmxvY2soaWZCbG9jaykKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIElmRWxzZU5vZGU6OklmRWxzZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5v
ZGUqIGVsc2VCbG9jaykKLSAgICAgICAgOiBJZk5vZGUobGluZU51bWJlciwgY29uZGl0aW9uLCBp
ZkJsb2NrKQorICAgIGlubGluZSBJZkVsc2VOb2RlOjpJZkVsc2VOb2RlKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnRO
b2RlKiBpZkJsb2NrLCBTdGF0ZW1lbnROb2RlKiBlbHNlQmxvY2spCisgICAgICAgIDogSWZOb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBpZkJsb2NrKQogICAgICAgICAs
IG1fZWxzZUJsb2NrKGVsc2VCbG9jaykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERvV2hp
bGVOb2RlOjpEb1doaWxlTm9kZShpbnQgbGluZU51bWJlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVt
ZW50LCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVO
dW1iZXIpCisgICAgaW5saW5lIERvV2hpbGVOb2RlOjpEb1doaWxlTm9kZShpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBFeHByZXNzaW9u
Tm9kZSogZXhwcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcikKICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCiAgICAgICAgICwgbV9leHBy
KGV4cHIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBXaGlsZU5vZGU6OldoaWxlTm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRl
bWVudCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFdo
aWxlTm9kZTo6V2hpbGVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQorICAgICAgICA6IFN0
YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhwcihl
eHByKQogICAgICAgICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIEZvck5vZGU6OkZvck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0
YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgYm9vbCBleHByMVdhc1ZhckRlY2wpCi0gICAgICAgIDog
U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGb3JOb2RlOjpGb3JOb2RlKGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIzLCBTdGF0ZW1lbnROb2Rl
KiBzdGF0ZW1lbnQsIGJvb2wgZXhwcjFXYXNWYXJEZWNsKQorICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhwcjEoZXhwcjEpCiAg
ICAgICAgICwgbV9leHByMihleHByMikKICAgICAgICAgLCBtX2V4cHIzKGV4cHIzKQpAQCAtNzMw
LDM4ICs3MzEsMzggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEFTU0VSVChzdGF0ZW1lbnQp
OwogICAgIH0KIAotICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNvbnRpbnVlTm9kZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyKQotICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQ29udGludWVOb2RlOjpDb250aW51ZU5vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikK
KyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAg
ICAgLCBtX2lkZW50KGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQ29udGludWVOb2RlOjpDb250aW51ZU5vZGUoaW50
IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQotICAgICAgICA6IFN0YXRlbWVu
dE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQ29udGludWVOb2RlOjpDb250aW51ZU5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAg
ICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgQnJl
YWtOb2RlOjpCcmVha05vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJl
cikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEJyZWFr
Tm9kZTo6QnJlYWtOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9pZGVudChnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVz
LT5udWxsSWRlbnRpZmllcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJyZWFrTm9kZTo6
QnJlYWtOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLSAgICAg
ICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEJyZWFrTm9kZTo6QnJl
YWtOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
cikKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAgICB9CiAgICAgCi0gICAgaW5s
aW5lIFJldHVybk5vZGU6OlJldHVybk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiB2YWx1ZSkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IFJldHVybk5vZGU6OlJldHVybk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgV2l0aE5vZGU6OldpdGhOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCB1aW50MzJfdCBkaXZvdCwg
dWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVO
dW1iZXIpCisgICAgaW5saW5lIFdpdGhOb2RlOjpXaXRoTm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRl
bWVudCwgdWludDMyX3QgZGl2b3QsIHVpbnQzMl90IGV4cHJlc3Npb25MZW5ndGgpCisgICAgICAg
IDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9l
eHByKGV4cHIpCiAgICAgICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAgICAgICAsIG1f
ZGl2b3QoZGl2b3QpCkBAIC03NjksMjEgKzc3MCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIExhYmVsTm9kZTo6TGFiZWxOb2RlKGludCBsaW5lTnVtYmVy
LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCi0gICAg
ICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBMYWJlbE5vZGU6Okxh
YmVsTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQorICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAg
ICAgICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IFRocm93Tm9kZTo6VGhyb3dOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFRocm93
Tm9kZTo6VGhyb3dOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIFRyeU5vZGU6OlRyeU5vZGUoaW50IGxpbmVOdW1iZXIsIFN0YXRlbWVudE5vZGUqIHRyeUJs
b2NrLCBjb25zdCBJZGVudGlmaWVyJiBleGNlcHRpb25JZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0
Y2hCbG9jaywgU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrKQotICAgICAgICA6IFN0YXRlbWVu
dE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgVHJ5Tm9kZTo6VHJ5Tm9kZShpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElk
ZW50aWZpZXImIGV4Y2VwdGlvbklkZW50LCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0
ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV90cnlCbG9jayh0cnlCbG9jaykKICAgICAg
ICAgLCBtX2V4Y2VwdGlvbklkZW50KGV4Y2VwdGlvbklkZW50KQogICAgICAgICAsIG1fY2F0Y2hC
bG9jayhjYXRjaEJsb2NrKQpAQCAtODA0LDE1ICs4MDUsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGwtPm1fbmV4dCA9IHRoaXM7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmNFeHByTm9k
ZTo6RnVuY0V4cHJOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
RnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJhbWV0
ZXJOb2RlKiBwYXJhbWV0ZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2Rl
KiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRl
cikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAg
ICAgICAgICwgbV9ib2R5KGJvZHkpCiAgICAgewogICAgICAgICBtX2JvZHktPmZpbmlzaFBhcnNp
bmcoc291cmNlLCBwYXJhbWV0ZXIsIGlkZW50KTsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY0Rl
Y2xOb2RlOjpGdW5jRGVjbE5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBh
cmFtZXRlck5vZGUqIHBhcmFtZXRlcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIEZ1bmNEZWNsTm9kZTo6RnVuY0RlY2xOb2RlKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Cb2R5
Tm9kZSogYm9keSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJhbWV0ZXJOb2RlKiBwYXJh
bWV0ZXIpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIp
CiAgICAgICAgICwgbV9ib2R5KGJvZHkpCiAgICAgewogICAgICAgICBtX2JvZHktPmZpbmlzaFBh
cnNpbmcoc291cmNlLCBwYXJhbWV0ZXIsIGlkZW50KTsKQEAgLTg0NCwyOSArODQ1LDI5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3dpdGNoTm9kZTo6U3dp
dGNoTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIENhc2VCbG9ja05v
ZGUqIGJsb2NrKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgU3dpdGNoTm9kZTo6U3dpdGNoTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIENhc2VCbG9ja05vZGUqIGJsb2NrKQorICAgICAgICA6
IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fZXhw
cihleHByKQogICAgICAgICAsIG1fYmxvY2soYmxvY2spCiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBDb25zdERlY2xOb2RlOjpDb25zdERlY2xOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluaXQpCi0gICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQ29uc3REZWNsTm9kZTo6Q29uc3REZWNs
Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBpbml0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAg
ICAsIG1fbmV4dCgwKQogICAgICAgICAsIG1faW5pdChpbml0KQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgQmxvY2tOb2RlOjpCbG9ja05vZGUoaW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1l
bnRzKiBzdGF0ZW1lbnRzKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgQmxvY2tOb2RlOjpCbG9ja05vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBzdGF0ZW1lbnRzKQorICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fc3RhdGVtZW50cyhzdGF0
ZW1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJbk5vZGUo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGwsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCi0gICAg
ICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGb3JJbk5vZGU6OkZv
ckluTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRl
bWVudE5vZGUqIHN0YXRlbWVudCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2lkZW50KGdsb2JhbERhdGEtPnByb3BlcnR5TmFt
ZXMtPm51bGxJZGVudGlmaWVyKQogICAgICAgICAsIG1faW5pdCgwKQogICAgICAgICAsIG1fbGV4
cHIobCkKQEAgLTg3NiwxNyArODc3LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJbk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25O
b2RlKiBpbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwg
aW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpCi0gICAgICAgIDogU3Rh
dGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluLCBFeHByZXNzaW9u
Tm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgZGl2b3QsIGludCBzdGFy
dE9mZnNldCwgaW50IGVuZE9mZnNldCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1f
aW5pdCgwKQotICAgICAgICAsIG1fbGV4cHIobmV3IChnbG9iYWxEYXRhKSBSZXNvbHZlTm9kZShs
aW5lTnVtYmVyLCBpZGVudCwgZGl2b3QgLSBzdGFydE9mZnNldCkpCisgICAgICAgICwgbV9sZXhw
cihuZXcgKGdsb2JhbERhdGEpIFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
aWRlbnQsIGRpdm90IC0gc3RhcnRPZmZzZXQpKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAg
ICAgICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkKICAgICAgICAgLCBtX2lkZW50SXNWYXJEZWNs
KHRydWUpCiAgICAgewogICAgICAgICBpZiAoaW4pIHsKLSAgICAgICAgICAgIEFzc2lnblJlc29s
dmVOb2RlKiBub2RlID0gbmV3IChnbG9iYWxEYXRhKSBBc3NpZ25SZXNvbHZlTm9kZShsaW5lTnVt
YmVyLCBpZGVudCwgaW4sIHRydWUpOworICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5v
ZGUgPSBuZXcgKGdsb2JhbERhdGEpIEFzc2lnblJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlciwgaWRlbnQsIGluLCB0cnVlKTsKICAgICAgICAgICAgIG5vZGUtPnNldEV4Y2VwdGlv
blNvdXJjZUNvZGUoZGl2b3QsIGRpdm90IC0gc3RhcnRPZmZzZXQsIGVuZE9mZnNldCAtIGRpdm90
KTsKICAgICAgICAgICAgIG1faW5pdCA9IG5vZGU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggYzMyZTRjNzNhMjRlYmViMjMzY2Q1ZTAxZmZmZDYz
YTQ4Njg1Yzg4Ni4uNWE3ODVjMWZmNzdmMGM5N2IwYjBkZjZiMjk2Y2U2NzM1NWQxNDNjMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTUyLDEwICs1MiwxOCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0YXRl
bWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAordm9pZCBTdGF0ZW1l
bnROb2RlOjpzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKQor
eworICAgIG1fbGluZU51bWJlciA9IGZpcnN0TGluZTsKKyAgICBtX2xhc3RMaW5lID0gbGFzdExp
bmU7CisgICAgbV9jb2x1bW5OdW1iZXIgPSBjb2x1bW47Cit9CisKIHZvaWQgU3RhdGVtZW50Tm9k
ZTo6c2V0TG9jKGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKIHsKICAgICBtX2xpbmVOdW1i
ZXIgPSBmaXJzdExpbmU7CiAgICAgbV9sYXN0TGluZSA9IGxhc3RMaW5lOworICAgIG1fY29sdW1u
TnVtYmVyID0gMDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNvdXJj
ZUVsZW1lbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03NSw4ICs4Myw4
IEBAIFN0YXRlbWVudE5vZGUqIFNvdXJjZUVsZW1lbnRzOjpzaW5nbGVTdGF0ZW1lbnQoKSBjb25z
dAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU2NvcGVOb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVNjb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQotICAg
IDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9v
bCBpblN0cmljdENvbnRleHQpCisgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcikKICAgICAsIFBhcnNlckFyZW5hUmVmQ291bnRlZChnbG9iYWxEYXRhKQogICAgICwg
bV9mZWF0dXJlcyhpblN0cmljdENvbnRleHQgPyBTdHJpY3RNb2RlRmVhdHVyZSA6IE5vRmVhdHVy
ZXMpCiAgICAgLCBtX251bUNvbnN0YW50cygwKQpAQCAtODQsOCArOTIsOCBAQCBTY29wZU5vZGU6
OlNjb3BlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBib29s
IGluU3RyaWN0Q29udAogewogfQogCi1TY29wZU5vZGU6OlNjb3BlTm9kZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFNv
dXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNr
KiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBDb2RlRmVhdHVy
ZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCi0gICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVO
dW1iZXIpCitTY29wZU5vZGU6OlNjb3BlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0
YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBDb2RlRmVh
dHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCisgICAgOiBTdGF0ZW1lbnROb2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAsIFBhcnNlckFyZW5hUmVmQ291bnRlZChnbG9i
YWxEYXRhKQogICAgICwgbV9mZWF0dXJlcyhmZWF0dXJlcykKICAgICAsIG1fc291cmNlKHNvdXJj
ZSkKQEAgLTEwNywxNCArMTE1LDE0IEBAIFN0YXRlbWVudE5vZGUqIFNjb3BlTm9kZTo6c2luZ2xl
U3RhdGVtZW50KCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFBy
b2dyYW1Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBQcm9ncmFt
Tm9kZTo6UHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJl
ciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9u
U3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3Rh
bnRzKQotICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIHNvdXJjZSwgY2hp
bGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywg
bnVtQ29uc3RhbnRzKQoraW5saW5lIFByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTb3VyY2VF
bGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVu
Y1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCisgICAg
OiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2Us
IGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVy
ZXMsIG51bUNvbnN0YW50cykKIHsKIH0KIAotUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3Jh
bU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBT
b3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFj
ayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMp
CitQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFNvdXJjZUVs
ZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5j
U3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKIHsKLSAg
ICBSZWZQdHI8UHJvZ3JhbU5vZGU+IG5vZGUgPSBuZXcgUHJvZ3JhbU5vZGUoZ2xvYmFsRGF0YSwg
bGluZU51bWJlciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssICBjYXB0dXJlZFZhcmlh
Ymxlcywgc291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKKyAgICBSZWZQdHI8UHJvZ3Jh
bU5vZGU+IG5vZGUgPSBuZXcgUHJvZ3JhbU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgIGNhcHR1cmVkVmFyaWFi
bGVzLCBzb3VyY2UsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOwogCiAgICAgQVNTRVJUKG5vZGUt
Pm1fYXJlbmEubGFzdCgpID09IG5vZGUpOwogICAgIG5vZGUtPm1fYXJlbmEucmVtb3ZlTGFzdCgp
OwpAQCAtMTI1LDE0ICsxMzMsMTQgQEAgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5v
ZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnUKIAogLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLWlubGluZSBFdmFsTm9kZTo6RXZhbE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFj
ayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2Fw
dHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQotICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxp
bmVOdW1iZXIsIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVk
VmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQoraW5saW5lIEV2YWxOb2RlOjpFdmFs
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVu
Y3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1D
b25zdGFudHMpCisgICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZh
cmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKIHsKIH0KIAotUGFzc1JlZlB0cjxFdmFs
Tm9kZT4gRXZhbE5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5l
TnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVu
Y3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1D
b25zdGFudHMpCitQYXNzUmVmUHRyPEV2YWxOb2RlPiBFdmFsTm9kZTo6Y3JlYXRlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFNvdXJj
ZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBm
dW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKIHsK
LSAgICBSZWZQdHI8RXZhbE5vZGU+IG5vZGUgPSBuZXcgRXZhbE5vZGUoZ2xvYmFsRGF0YSwgbGlu
ZU51bWJlciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVz
LCBzb3VyY2UsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOworICAgIFJlZlB0cjxFdmFsTm9kZT4g
bm9kZSA9IG5ldyBFdmFsTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNl
LCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIAogICAgIEFTU0VSVChub2RlLT5tX2FyZW5hLmxh
c3QoKSA9PSBub2RlKTsKICAgICBub2RlLT5tX2FyZW5hLnJlbW92ZUxhc3QoKTsKQEAgLTE0OSwx
MyArMTU3LDEzIEBAIEZ1bmN0aW9uUGFyYW1ldGVyczo6RnVuY3Rpb25QYXJhbWV0ZXJzKFBhcmFt
ZXRlck5vZGUqIGZpcnN0UGFyYW1ldGVyKQogICAgICAgICBhcHBlbmQocGFyYW1ldGVyLT5pZGVu
dCgpKTsKIH0KIAotaW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmljdENvbnRl
eHQpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgaW5TdHJpY3RDb250
ZXh0KQoraW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCBp
blN0cmljdENvbnRleHQpCisgICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBpblN0cmljdENvbnRleHQpCiB7CiB9CiAKLWlubGluZSBGdW5jdGlvbkJv
ZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxp
bmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBG
dW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVz
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGlu
dCBudW1Db25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwg
c291cmNlQ29kZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFi
bGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQoraW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1
bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFy
U3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRW
YXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVu
Y1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKIHsKIH0K
IApAQCAtMTcyLDE0ICsxODAsMTQgQEAgdm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpmaW5pc2hQYXJz
aW5nKFBhc3NSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzLAogICAgIG1faWRl
bnQgPSBpZGVudDsKIH0KIAotRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3Jl
YXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5TdHJp
Y3RDb250ZXh0KQorRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IGJvb2wgaW5TdHJpY3RDb250ZXh0KQogewotICAgIHJldHVybiBuZXcgRnVuY3Rpb25Cb2R5Tm9k
ZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBpblN0cmljdENvbnRleHQpOworICAgIHJldHVybiBu
ZXcgRnVuY3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IGluU3RyaWN0Q29udGV4dCk7CiB9CiAKLVBhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gRnVu
Y3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVO
dW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5j
dGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBu
dW1Db25zdGFudHMpCitQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IEZ1bmN0aW9uQm9keU5v
ZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFj
aywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlh
YmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKQogewotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBub2Rl
ID0gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgY2hpbGRyZW4s
IHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2VDb2RlLCBmZWF0
dXJlcywgbnVtQ29uc3RhbnRzKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gbm9kZSA9
IG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBzb3Vy
Y2VDb2RlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIAogICAgIEFTU0VSVChub2RlLT5tX2Fy
ZW5hLmxhc3QoKSA9PSBub2RlKTsKICAgICBub2RlLT5tX2FyZW5hLnJlbW92ZUxhc3QoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA1YzkwYmI5ZmU2NjM2MGU5MmE5OTdh
ZGI2NGIzZWU3OTYzNzMyMjY2Li4wYjhiYTk1MzRkY2EwODM4YzMxZGNlMmI1ZjQwMDdkZTk5ZTFk
MjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xMzAsNyArMTMwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOb2RlIDogcHVibGljIFBhcnNlckFyZW5h
RnJlZWFibGUgewogICAgIHByb3RlY3RlZDoKLSAgICAgICAgTm9kZShpbnQpOworICAgICAgICBO
b2RlKGludCwgaW50KTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+Tm9kZSgpIHsg
fQpAQCAtMTM5LDEzICsxMzksMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgaW50IGxp
bmVObygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51bWJlcjsgfQogCisgICAgICAgIGludCBjb2x1
bW5ObygpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1uTnVtYmVyOyB9CisKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIGludCBtX2xpbmVOdW1iZXI7CisgICAgICAgIGludCBtX2NvbHVtbk51bWJlcjsK
ICAgICB9OwogCiAgICAgY2xhc3MgRXhwcmVzc2lvbk5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgICAg
cHJvdGVjdGVkOgotICAgICAgICBFeHByZXNzaW9uTm9kZShpbnQsIFJlc3VsdFR5cGUgPSBSZXN1
bHRUeXBlOjp1bmtub3duVHlwZSgpKTsKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUoaW50LCBpbnQs
IFJlc3VsdFR5cGUgPSBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpKTsKIAogICAgIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
QEAgLTE3NSwxMiArMTc4LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3RhdGVt
ZW50Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFN0YXRlbWVu
dE5vZGUoaW50KTsKKyAgICAgICAgU3RhdGVtZW50Tm9kZShpbnQsIGludCk7CiAKICAgICBwdWJs
aWM6Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TG9jKGludCBmaXJzdExpbmUs
IGludCBsYXN0TGluZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TG9jKGlu
dCBmaXJzdExpbmUsIGludCBsYXN0TGluZSk7IAorICAgICAgICB2b2lkIHNldExvYyhpbnQgZmly
c3RMaW5lLCBpbnQgbGFzdExpbmUsIGludCBjb2x1bW4pOwogICAgICAgICBpbnQgZmlyc3RMaW5l
KCkgY29uc3QgeyByZXR1cm4gbGluZU5vKCk7IH0KICAgICAgICAgaW50IGxhc3RMaW5lKCkgY29u
c3QgeyByZXR1cm4gbV9sYXN0TGluZTsgfQorICAgICAgICBpbnQgY29sdW1uKCkgY29uc3QgeyBy
ZXR1cm4gY29sdW1uTm8oKTt9CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzRW1wdHlTdGF0ZW1l
bnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZXR1
cm5Ob2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE5NCw3ICsxOTksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE51bGxOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE51bGxOb2RlKGludCk7CisgICAgICAgIE51bGxOb2Rl
KGludCwgaW50KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTIw
NCw3ICsyMDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJvb2xlYW5Ob2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJvb2xlYW5Ob2Rl
KGludCwgYm9vbCB2YWx1ZSk7CisgICAgICAgIEJvb2xlYW5Ob2RlKGludCwgaW50LCBib29sIHZh
bHVlKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTIxNiw3ICsy
MjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE51bWJlck5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTnVtYmVyTm9kZShpbnQsIGRv
dWJsZSB2YWx1ZSk7CisgICAgICAgIE51bWJlck5vZGUoaW50LCBpbnQsIGRvdWJsZSB2YWx1ZSk7
CiAKICAgICAgICAgZG91YmxlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAg
ICAgICB2b2lkIHNldFZhbHVlKGRvdWJsZSB2YWx1ZSkgeyBtX3ZhbHVlID0gdmFsdWU7IH0KQEAg
LTIzMiw3ICsyMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFN0cmluZ05vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgU3RyaW5nTm9k
ZShpbnQsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgU3RyaW5nTm9kZShpbnQsIGludCwg
Y29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIHZhbHVlKCkg
eyByZXR1cm4gbV92YWx1ZTsgfQogCkBAIC0zNDIsNyArMzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBSZWdFeHBOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVnRXhwTm9k
ZShpbnQsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdz
KTsKKyAgICAgICAgUmVnRXhwTm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVy
biwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApOwpAQCAtMzUzLDcgKzM1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgVGhpc05vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgVGhpc05vZGUoaW50KTsKKyAgICAgICAgVGhpc05vZGUoaW50LCBpbnQpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMzYxLDcgKzM2Niw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVy
JiwgaW50IHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgUmVzb2x2ZU5vZGUoaW50LCBpbnQsIGNvbnN0
IElkZW50aWZpZXImLCBpbnQgc3RhcnRPZmZzZXQpOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CiAKQEAgLTM5MywxMSAr
Mzk4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJyYXlOb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFycmF5Tm9kZShpbnQsIGlu
dCBlbGlzaW9uKTsKLSAgICAgICAgQXJyYXlOb2RlKGludCwgRWxlbWVudE5vZGUqKTsKLSAgICAg
ICAgQXJyYXlOb2RlKGludCwgaW50IGVsaXNpb24sIEVsZW1lbnROb2RlKik7CisgICAgICAgIEFy
cmF5Tm9kZShpbnQsIGludCwgaW50IGVsaXNpb24pOworICAgICAgICBBcnJheU5vZGUoaW50LCBp
bnQsIEVsZW1lbnROb2RlKik7CisgICAgICAgIEFycmF5Tm9kZShpbnQsIGludCwgaW50IGVsaXNp
b24sIEVsZW1lbnROb2RlKik7CiAKLSAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogdG9Bcmd1bWVu
dExpc3QoSlNHbG9iYWxEYXRhKiwgaW50KSBjb25zdDsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9k
ZSogdG9Bcmd1bWVudExpc3QoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQpIGNvbnN0OwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNDI4LDggKzQzMyw4IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJvcGVydHlMaXN0Tm9kZSA6IHB1YmxpYyBOb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFByb3BlcnR5TGlzdE5vZGUoaW50LCBQcm9wZXJ0eU5vZGUq
KTsKLSAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShpbnQsIFByb3BlcnR5Tm9kZSosIFByb3BlcnR5
TGlzdE5vZGUqKTsKKyAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShpbnQsIGludCwgUHJvcGVydHlO
b2RlKik7CisgICAgICAgIFByb3BlcnR5TGlzdE5vZGUoaW50LCBpbnQsIFByb3BlcnR5Tm9kZSos
IFByb3BlcnR5TGlzdE5vZGUqKTsKIAogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CiAKQEAgLTQ0MCw4
ICs0NDUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE9iamVjdExpdGVyYWxOb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE9iamVjdExp
dGVyYWxOb2RlKGludCk7Ci0gICAgICAgIE9iamVjdExpdGVyYWxOb2RlKGludCwgUHJvcGVydHlM
aXN0Tm9kZSopOworICAgICAgICBPYmplY3RMaXRlcmFsTm9kZShpbnQsIGludCk7CisgICAgICAg
IE9iamVjdExpdGVyYWxOb2RlKGludCwgaW50LCBQcm9wZXJ0eUxpc3ROb2RlKik7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC00NTEsNyArNDU2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgQnJhY2tldEFjY2Vzc29yTm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50
cyk7CisgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2ln
bm1lbnRzKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYmFzZTsgfQogICAgICAgICBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdWJzY3JpcHQ7IH0KQEAgLTQ2OSw3ICs0NzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIERvdEFjY2Vzc29yTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVi
bGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERvdEFj
Y2Vzc29yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJik7
CisgICAgICAgIERvdEFjY2Vzc29yTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNv
bnN0IHsgcmV0dXJuIG1fYmFzZTsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQpAQCAtNDg2LDggKzQ5MSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJndW1lbnRMaXN0Tm9kZSA6IHB1YmxpYyBOb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEFyZ3VtZW50TGlzdE5vZGUoaW50LCBFeHByZXNzaW9uTm9k
ZSopOwotICAgICAgICBBcmd1bWVudExpc3ROb2RlKGludCwgQXJndW1lbnRMaXN0Tm9kZSosIEV4
cHJlc3Npb25Ob2RlKik7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUoaW50LCBpbnQsIEV4cHJl
c3Npb25Ob2RlKik7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUoaW50LCBpbnQsIEFyZ3VtZW50
TGlzdE5vZGUqLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUq
IG1fbmV4dDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKQEAgLTUwNiw4ICs1MTEs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE5ld0V4cHJOb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgTmV3RXhwck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOwotICAgICAgICBO
ZXdFeHByTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSopOworICAgICAg
ICBOZXdFeHByTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgTmV3RXhw
ck5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSopOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTE4LDcgKzUyMyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUgOiBwdWJsaWMgRXhw
cmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGlj
OgotICAgICAgICBFdmFsRnVuY3Rpb25DYWxsTm9kZShpbnQsIEFyZ3VtZW50c05vZGUqLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7Cisg
ICAgICAgIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGludCwgaW50LCBBcmd1bWVudHNOb2RlKiwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTI4LDcgKzUzMyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsVmFsdWVOb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKGludCwgRXhwcmVzc2lvbk5v
ZGUqLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoaW50
LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTUzOSw3ICs1NDQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgQXJn
dW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoaW50LCBpbnQs
IGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTUyLDcgKzU1Nyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIAogICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAg
RnVuY3Rpb25DYWxsQnJhY2tldE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBF
eHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTY0LDcgKzU2OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbERv
dE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwg
QXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
QEAgLTU3Nyw3ICs1ODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENhbGxGdW5j
dGlvbkNhbGxEb3ROb2RlIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIENhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CkBAIC01ODUsNyArNTkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAg
ICAgY2xhc3MgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGljIEZ1bmN0aW9uQ2FsbERv
dE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGlu
dCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2Rl
KiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpOworICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBpbnQsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU5Myw3ICs1OTgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFByZVBvc3RSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIFByZVBvc3RSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7Cisg
ICAgICAgIFByZVBvc3RSZXNvbHZlTm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
IAogICAgIHByb3RlY3RlZDoKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKQEAg
LTYwMSw3ICs2MDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFBvc3RmaXhSZXNv
bHZlTm9kZSA6IHB1YmxpYyBQcmVQb3N0UmVzb2x2ZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgUG9zdGZpeFJlc29sdmVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7
CisgICAgICAgIFBvc3RmaXhSZXNvbHZlTm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYs
IE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02
MTEsNyArNjE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQb3N0Zml4QnJhY2tl
dE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQb3N0Zml4QnJhY2tldE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Is
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KTsKKyAgICAgICAgUG9zdGZpeEJyYWNrZXROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTYyMyw3ICs2MjgsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIFBvc3RmaXhEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
LCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgUG9zdGZpeERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFBvc3RmaXhEb3ROb2RlKGludCwgaW50LCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02MzUsNyArNjQwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBQb3N0Zml4RXJyb3JOb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgUG9zdGZpeEVycm9yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3Is
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KTsKKyAgICAgICAgUG9zdGZpeEVycm9yTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqLCBP
cGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjQ2
LDcgKzY1MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVsZXRlUmVzb2x2ZU5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElk
ZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7CisgICAgICAgIERlbGV0ZVJlc29sdmVOb2RlKGludCwgaW50LCBjb25zdCBJ
ZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAt
NjU2LDcgKzY2MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVsZXRlQnJhY2tl
dE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVCcmFja2V0Tm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIERl
bGV0ZUJyYWNrZXROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
OwpAQCAtNjY3LDcgKzY3Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVsZXRl
RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlbGV0ZURvdE5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRGVsZXRlRG90Tm9k
ZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02NzgsNyArNjgzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWxldGVWYWx1ZU5vZGUgOiBwdWJsaWMgRXhw
cmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVsZXRlVmFsdWVOb2RlKGludCwg
RXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgRGVsZXRlVmFsdWVOb2RlKGludCwgaW50LCBFeHBy
ZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAt
Njg4LDcgKzY5Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVm9pZE5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVm9pZE5vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBWb2lkTm9kZShpbnQsIGludCwgRXhwcmVzc2lv
bk5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTY5OCw3
ICs3MDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFR5cGVPZlJlc29sdmVOb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFR5cGVPZlJl
c29sdmVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBUeXBlT2ZSZXNvbHZl
Tm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CiAKQEAgLTcxMCw3
ICs3MTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFR5cGVPZlZhbHVlTm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBUeXBlT2ZWYWx1
ZU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBUeXBlT2ZWYWx1ZU5vZGUoaW50
LCBpbnQsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CkBAIC03MjAsNyArNzI1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQ
cmVmaXhSZXNvbHZlTm9kZSA6IHB1YmxpYyBQcmVQb3N0UmVzb2x2ZU5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgUHJlZml4UmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgT3Bl
cmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KTsKKyAgICAgICAgUHJlZml4UmVzb2x2ZU5vZGUoaW50LCBpbnQsIGNvbnN0IElkZW50
aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
OwpAQCAtNzMwLDcgKzczNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlZml4
QnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVQcmVm
aXhlZFN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFByZWZpeEJyYWNr
ZXROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3Jp
cHQsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCk7CisgICAgICAgIFByZWZpeEJyYWNrZXROb2RlKGludCwgaW50LCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTc0Miw3ICs3NDcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFByZWZpeERvdE5vZGUgOiBwdWJsaWMgRXhw
cmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFByZWZpeERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFByZWZpeERvdE5v
ZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3Bl
cmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTc1NCw3
ICs3NTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFByZWZpeEVycm9yTm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFByZWZpeEVycm9yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
KiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlZml4RXJyb3JOb2RlKGludCwgaW50LCBFeHByZXNz
aW9uTm9kZSosIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CkBAIC03NjUsNyArNzcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBVbmFy
eU9wTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBV
bmFyeU9wTm9kZShpbnQsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiwgT3Bjb2RlSUQpOwor
ICAgICAgICBVbmFyeU9wTm9kZShpbnQsIGludCwgUmVzdWx0VHlwZSwgRXhwcmVzc2lvbk5vZGUq
LCBPcGNvZGVJRCk7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBl
eHByKCkgeyByZXR1cm4gbV9leHByOyB9CkBAIC03ODIsNyArNzg3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBVbmFyeVBsdXNOb2RlIDogcHVibGljIFVuYXJ5T3BOb2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFVuYXJ5UGx1c05vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOwor
ICAgICAgICBVbmFyeVBsdXNOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBFeHByZXNzaW9uTm9kZSogc3RyaXBVbmFyeVBsdXMo
KSB7IHJldHVybiBleHByKCk7IH0KQEAgLTc5MCwxMiArNzk1LDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgTmVnYXRlTm9kZSA6IHB1YmxpYyBVbmFyeU9wTm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBOZWdhdGVOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAg
TmVnYXRlTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqKTsKICAgICB9OwogCiAgICAgY2xh
c3MgQml0d2lzZU5vdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgQml0d2lzZU5vdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBC
aXR3aXNlTm90Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByb3RlY3Rl
ZDoKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIoKSB7IHJldHVybiBtX2V4cHI7IH0KQEAg
LTgwOSw3ICs4MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAKICAgICBjbGFzcyBMb2dpY2FsTm90
Tm9kZSA6IHB1YmxpYyBVbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBMb2dpY2Fs
Tm90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIExvZ2ljYWxOb3ROb2RlKGlu
dCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgZW1p
dEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwqIHRy
dWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgYm9vbCBmYWxsVGhyb3VnaE1lYW5zVHJ1ZSk7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpIGNvbnN0
IHsgcmV0dXJuIGV4cHIoKS0+aGFzQ29uZGl0aW9uQ29udGV4dENvZGVnZW4oKTsgfQpAQCAtODE3
LDggKzgyMiw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQmluYXJ5T3BOb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpbmFyeU9wTm9k
ZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNv
ZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICAgICAgQmluYXJ5T3BOb2RlKGlu
dCwgUmVzdWx0VHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBCaW5hcnlP
cE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQmluYXJ5
T3BOb2RlKGludCwgaW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFN0cmNhdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbiwgUmVnaXN0ZXJJRCogbGhzID0gMCwgUmVhZE1v
ZGlmeVJlc29sdmVOb2RlKiBlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZSA9IDApOwogCkBAIC04NDIs
NzIgKzg0Nyw3MiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE11bHROb2RlIDogcHVi
bGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBNdWx0Tm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICBNdWx0Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CiAgICAgfTsKIAogICAgIGNsYXNzIERpdk5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIERpdk5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAg
RGl2Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIE1v
ZE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE1vZE5v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTW9kTm9kZShpbnQsIGludCwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEFkZE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BO
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFkZE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
KyAgICAgICAgQWRkTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICAgICAgdmly
dHVhbCBib29sIGlzQWRkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKICAgICBj
bGFzcyBTdWJOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBTdWJOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIFN1Yk5vZGUoaW50LCBpbnQs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N1YnRyYWN0KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKICAgICBjbGFzcyBMZWZ0U2hpZnROb2RlIDog
cHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBMZWZ0U2hpZnROb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIExlZnRTaGlmdE5vZGUoaW50LCBpbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBSaWdodFNoaWZ0Tm9kZSA6IHB1Ymxp
YyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmlnaHRTaGlmdE5vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgUmlnaHRTaGlmdE5vZGUoaW50LCBpbnQsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlIDog
cHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBVbnNpZ25lZFJpZ2h0
U2hpZnROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIFVuc2lnbmVkUmlnaHRTaGlm
dE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBMZXNz
Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTGVzc05v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTGVzc05vZGUoaW50LCBpbnQsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBHcmVhdGVyTm9kZSA6IHB1YmxpYyBCaW5h
cnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgR3JlYXRlck5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKKyAgICAgICAgR3JlYXRlck5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwog
ICAgIH07CiAKICAgICBjbGFzcyBMZXNzRXFOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBMZXNzRXFOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAg
ICAgIExlc3NFcU5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBj
bGFzcyBHcmVhdGVyRXFOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBHcmVhdGVyRXFOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEdyZWF0
ZXJFcU5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBU
aHJvd2FibGVCaW5hcnlPcE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlLCBwdWJsaWMgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgVGhyb3dhYmxlQmluYXJ5
T3BOb2RlKGludCwgUmVzdWx0VHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgICAg
ICBUaHJvd2FibGVCaW5hcnlPcE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQsIGludCwgUmVzdWx0VHlwZSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBUaHJvd2FibGVCaW5hcnlPcE5vZGUoaW50LCBp
bnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJ
RCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKQEAgLTkxNSw3ICs5MjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAg
ICBjbGFzcyBJbnN0YW5jZU9mTm9kZSA6IHB1YmxpYyBUaHJvd2FibGVCaW5hcnlPcE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgSW5zdGFuY2VPZk5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
KyAgICAgICAgSW5zdGFuY2VPZk5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTIzLDEyICs5MjgsMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJbk5vZGUgOiBwdWJsaWMgVGhyb3dhYmxlQmluYXJ5
T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEluTm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
OworICAgICAgICBJbk5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAg
ICBjbGFzcyBFcXVhbE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIEVxdWFsTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBFcXVhbE5vZGUo
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOwpAQCAtOTM2LDEyICs5NDEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBOb3RFcXVhbE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIE5vdEVxdWFsTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBOb3RFcXVhbE5v
ZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBTdHJpY3RF
cXVhbE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFN0
cmljdEVxdWFsTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBTdHJpY3RFcXVhbE5v
ZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApOwpAQCAtOTQ5LDI4ICs5NTQsMjggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBOb3RTdHJpY3RFcXVhbE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIE5vdFN0cmljdEVxdWFsTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAg
ICAgICBOb3RTdHJpY3RFcXVhbE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07
CiAKICAgICBjbGFzcyBCaXRBbmROb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBCaXRBbmROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJp
dEFuZE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBC
aXRPck5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJp
dE9yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBCaXRPck5vZGUoaW50LCBpbnQs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBCaXRYT3JOb2RlIDogcHVibGlj
IEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBCaXRYT3JOb2RlKGludCwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CisgICAgICAgIEJpdFhPck5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
OwogICAgIH07CiAKICAgICAvLyBtX2V4cHIxICYmIG1fZXhwcjIsIG1fZXhwcjEgfHwgbV9leHBy
MgogICAgIGNsYXNzIExvZ2ljYWxPcE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgTG9naWNhbE9wTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBMb2dpY2FsT3BlcmF0b3IpOworICAgICAgICBMb2dp
Y2FsT3BOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgTG9naWNhbE9wZXJhdG9yKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKTsKQEAgLTk4NSw3ICs5OTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBUaGUg
dGVybmFyeSBvcGVyYXRvciwgIm1fbG9naWNhbCA/IG1fZXhwcjEgOiBtX2V4cHIyIgogICAgIGNs
YXNzIENvbmRpdGlvbmFsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBDb25kaXRpb25hbE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogbG9naWNhbCwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpOworICAgICAgICBD
b25kaXRpb25hbE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2FsLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMik7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05OTcsNyArMTAwMiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgUmVhZE1vZGlmeVJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25O
b2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9y
LCBFeHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAg
ICAgICAgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiwg
T3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTAxMSw3ICsx
MDE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25SZXNvbHZlTm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEFzc2lnblJlc29sdmVOb2RlKGludCwgY29uc3QgSWRlbnRp
ZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
KyAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXImLCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDI0LDcgKzEwMjksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlYWRNb2RpZnlCcmFja2V0Tm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKKyAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGludCwgaW50LCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CkBAIC0xMDM5LDcgKzEwNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFz
c2lnbkJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNzaWduQnJhY2tldE5vZGUo
aW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXNzaWduQnJhY2tldE5vZGUoaW50LCBpbnQs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpA
QCAtMTA1Myw3ICsxMDU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25E
b3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNzaWduRG90Tm9kZShpbnQsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXNzaWduRG90Tm9kZShpbnQsIGlu
dCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTA2Niw3ICsxMDcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBSZWFkTW9kaWZ5RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwg
cHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IFJlYWRNb2RpZnlEb3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKKyAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoaW50LCBpbnQsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDgwLDcgKzEwODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEFzc2lnbkVycm9yTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVi
bGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFzc2ln
bkVycm9yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBPcGVyYXRvciwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCk7CisgICAgICAgIEFzc2lnbkVycm9yTm9kZShpbnQsIGludCwgRXhwcmVz
c2lvbk5vZGUqIGxlZnQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwOTQsNyArMTA5OSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29tbWFOb2RlIDogcHVibGljIEV4cHJlc3Npb25O
b2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
Q29tbWFOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIpOworICAgICAgICBDb21tYU5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyKTsKIAogICAgICAgICB1c2luZyBQYXJzZXJBcmVuYURlbGV0
YWJsZTo6b3BlcmF0b3IgbmV3OwogCkBAIC0xMTA5LDcgKzExMTQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAKICAgICBjbGFzcyBDb25zdERlY2xOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENvbnN0RGVjbE5vZGUoaW50LCBjb25zdCBJZGVudGlm
aWVyJiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgQ29uc3REZWNsTm9kZShpbnQsIGludCwg
Y29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICAgICAgYm9vbCBoYXNJ
bml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIG1faW5pdDsgfQogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCgpIHsgcmV0dXJuIG1faWRlbnQ7IH0KQEAgLTExMjksNyArMTEzNCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29uc3RTdGF0ZW1lbnROb2RlIDogcHVibGlj
IFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29uc3RTdGF0ZW1lbnROb2Rl
KGludCwgQ29uc3REZWNsTm9kZSogbmV4dCk7CisgICAgICAgIENvbnN0U3RhdGVtZW50Tm9kZShp
bnQsIGludCwgQ29uc3REZWNsTm9kZSogbmV4dCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CkBAIC0xMTU0LDcgKzExNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIEJsb2NrTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIEJsb2NrTm9kZShpbnQsIFNvdXJjZUVsZW1lbnRzKiA9IDApOworICAgICAgICBCbG9j
a05vZGUoaW50LCBpbnQsIFNvdXJjZUVsZW1lbnRzKiA9IDApOwogCiAgICAgICAgIFN0YXRlbWVu
dE5vZGUqIHNpbmdsZVN0YXRlbWVudCgpIGNvbnN0OwogICAgICAgICBTdGF0ZW1lbnROb2RlKiBs
YXN0U3RhdGVtZW50KCkgY29uc3Q7CkBAIC0xMTY5LDcgKzExNzQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEVtcHR5U3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEVtcHR5U3RhdGVtZW50Tm9kZShpbnQpOworICAgICAg
ICBFbXB0eVN0YXRlbWVudE5vZGUoaW50LCBpbnQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwpAQCAtMTE3OSw3ICsxMTg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
CiAgICAgY2xhc3MgRGVidWdnZXJTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnROb2RlKGludCk7CisgICAg
ICAgIERlYnVnZ2VyU3RhdGVtZW50Tm9kZShpbnQsIGludCk7CiAgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTExODcsNyArMTE5Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgRXhwclN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBFeHByU3RhdGVtZW50Tm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKik7CisgICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKGludCwgaW50LCBFeHByZXNz
aW9uTm9kZSopOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHByKCkgY29uc3QgeyByZXR1
cm4gbV9leHByOyB9CiAKQEAgLTEyMDEsOCArMTIwNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgVmFyU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFZhclN0YXRlbWVudE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOyAg
ICAgICAgCi0KKyAgICAgICAgVmFyU3RhdGVtZW50Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5v
ZGUqKTsKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CiAKQEAgLTEyMTEsNyAr
MTIxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWZOb2RlIDogcHVibGljIFN0
YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSWZOb2RlKGludCwgRXhwcmVzc2lv
bk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jayk7CisgICAgICAgIElmTm9k
ZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZC
bG9jayk7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyMjIs
NyArMTIyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWZFbHNlTm9kZSA6IHB1
YmxpYyBJZk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSWZFbHNlTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5v
ZGUqIGVsc2VCbG9jayk7CisgICAgICAgIElmRWxzZU5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25O
b2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5vZGUqIGVs
c2VCbG9jayk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjMy
LDcgKzEyMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERvV2hpbGVOb2RlIDog
cHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRG9XaGlsZU5vZGUo
aW50LCBTdGF0ZW1lbnROb2RlKiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgRG9XaGlsZU5v
ZGUoaW50LCBpbnQsIFN0YXRlbWVudE5vZGUqLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTI0Myw3ICsxMjQ3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBXaGlsZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBXaGlsZU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSosIFN0
YXRlbWVudE5vZGUqKTsKKyAgICAgICAgV2hpbGVOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9k
ZSosIFN0YXRlbWVudE5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KTsKQEAgLTEyNTQsNyArMTI1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRm9y
Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZvck5v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIzLCBTdGF0ZW1lbnROb2RlKiwgYm9vbCBleHByMVdhc1ZhckRlY2wp
OworICAgICAgICBGb3JOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIzLCBTdGF0ZW1lbnROb2RlKiwg
Ym9vbCBleHByMVdhc1ZhckRlY2wpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpAQCAtMTI2OCw4ICsxMjcyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBG
b3JJbk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZvckluTm9kZShKU0dsb2JhbERhdGEqLCBp
bnQsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7Ci0g
ICAgICAgIEZvckluTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGNvbnN0IElkZW50aWZpZXImLCBF
eHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIGludCBkaXZv
dCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRm9ySW5Ob2RlKEpT
R2xvYmFsRGF0YSosIGludCwgaW50LCBFeHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwg
U3RhdGVtZW50Tm9kZSopOworICAgICAgICBGb3JJbk5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBp
bnQsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwg
U3RhdGVtZW50Tm9kZSosIGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyODQsOCArMTI4
OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29udGludWVOb2RlIDogcHVibGlj
IFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVi
bGljOgotICAgICAgICBDb250aW51ZU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50KTsKLSAgICAgICAg
Q29udGludWVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBDb250aW51ZU5v
ZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQpOworICAgICAgICBDb250aW51ZU5vZGUoaW50LCBp
bnQsIGNvbnN0IElkZW50aWZpZXImKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwpAQCAtMTI5NSw4ICsxMjk5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBCcmVha05vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJyZWFrTm9kZShKU0dsb2Jh
bERhdGEqLCBpbnQpOwotICAgICAgICBCcmVha05vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJik7
CisgICAgICAgIEJyZWFrTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCk7CisgICAgICAgIEJy
ZWFrTm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMzA2LDcgKzEzMTAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIFJldHVybk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwg
cHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJl
dHVybk5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogdmFsdWUpOworICAgICAgICBSZXR1cm5Ob2Rl
KGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogdmFsdWUpOwogCiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KIApAQCAtMTMyMCw3ICsxMzI0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBXaXRoTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnRO
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdpdGhOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUq
LCBTdGF0ZW1lbnROb2RlKiwgdWludDMyX3QgZGl2b3QsIHVpbnQzMl90IGV4cHJlc3Npb25MZW5n
dGgpOworICAgICAgICBXaXRoTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1l
bnROb2RlKiwgdWludDMyX3QgZGl2b3QsIHVpbnQzMl90IGV4cHJlc3Npb25MZW5ndGgpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTMzMyw3ICsxMzM3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBMYWJlbE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50
Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIExhYmVsTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUq
KTsKKyAgICAgICAgTGFiZWxOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBT
dGF0ZW1lbnROb2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBA
IC0xMzQ0LDcgKzEzNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFRocm93Tm9k
ZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgVGhyb3dOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsK
KyAgICAgICAgVGhyb3dOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTM1NCw3ICsxMzU4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBUcnlOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgVHJ5Tm9kZShpbnQsIFN0YXRlbWVudE5vZGUqIHRyeUJsb2Nr
LCBjb25zdCBJZGVudGlmaWVyJiBleGNlcHRpb25JZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hC
bG9jaywgU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrKTsKKyAgICAgICAgVHJ5Tm9kZShpbnQs
IGludCwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2VwdGlv
bklkZW50LCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5
QmxvY2spOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTM4Myw4
ICsxMzg3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25T
dGFja3M6OlZhclN0YWNrIFZhclN0YWNrOwogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3Rh
Y2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAgICAgU2NvcGVOb2RlKEpT
R2xvYmFsRGF0YSosIGludCwgYm9vbCBpblN0cmljdENvbnRleHQpOwotICAgICAgICBTY29wZU5v
ZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNlRWxlbWVudHMq
LCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIGlu
dCwgaW50LCBib29sIGluU3RyaWN0Q29udGV4dCk7CisgICAgICAgIFNjb3BlTm9kZShKU0dsb2Jh
bERhdGEqLCBpbnQsIGludCwgY29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUVsZW1lbnRzKiwgVmFy
U3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIENvZGVGZWF0dXJlcywgaW50
IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgdXNpbmcgUGFyc2VyQXJlbmFSZWZDb3VudGVkOjpv
cGVyYXRvciBuZXc7CiAKQEAgLTE0NDYsMTIgKzE0NTAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgUHJvZ3JhbU5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzRnVuY3Rpb25Ob2RlID0gZmFsc2U7Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgaW50
LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJT
ZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsK
KyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IGNyZWF0ZShKU0dsb2JhbERh
dGEqLCBpbnQsIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sq
LCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cyk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9u
ID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAgICAgICBQcm9ncmFtTm9kZShKU0dsb2JhbERh
dGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRl
bnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25z
dGFudHMpOworICAgICAgICBQcm9ncmFtTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCwgU291
cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0Jiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApOwogICAgIH07CkBAIC0xNDU5LDEyICsxNDYzLDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNsYXNzIEV2YWxOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0Z1bmN0aW9uTm9kZSA9IGZhbHNl
OwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmFsTm9kZT4gY3JlYXRlKEpTR2xvYmFsRGF0
YSosIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVu
dGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cyk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2YWxOb2RlPiBjcmVhdGUoSlNHbG9i
YWxEYXRhKiwgaW50LCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0
YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGlu
dCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNGdW5j
dGlvbiA9IGZhbHNlOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRXZhbE5vZGUoSlNHbG9iYWxE
YXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElk
ZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzKTsKKyAgICAgICAgRXZhbE5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQsIFNvdXJj
ZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNv
bnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKICAgICB9OwpAQCAtMTQ4MSw4ICsxNDg1LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSB0
cnVlOwotICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlKEpTR2xvYmFsRGF0
YSosIGludCwgYm9vbCBpc1N0cmljdE1vZGUpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxG
dW5jdGlvbkJvZHlOb2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVtZW50
cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgc3RhdGlj
IEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCwgYm9vbCBp
c1N0cmljdE1vZGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2Rl
PiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3Rh
Y2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBD
b2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIEZ1bmN0aW9uUGFyYW1l
dGVycyogcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5nZXQoKTsgfQog
ICAgICAgICBzaXplX3QgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRl
cnMtPnNpemUoKTsgfQpAQCAtMTQ5OSw4ICsxNTAzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IHRydWU7CiAKICAgICBwcml2
YXRlOgotICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgYm9vbCBp
blN0cmljdENvbnRleHQpOwotICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSos
IGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlm
aWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cyk7CisgICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQsIGJv
b2wgaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERh
dGEqLCBpbnQsIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sq
LCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cyk7CiAKICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50OwogICAgICAgICBJZGVu
dGlmaWVyIG1faW5mZXJyZWROYW1lOwpAQCAtMTUwOSw3ICsxNTEzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY0V4cHJOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYs
IEZ1bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAw
KTsKKyAgICAgICAgRnVuY0V4cHJOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRnVu
Y3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOwog
CiAgICAgICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KIApA
QCAtMTUyMyw3ICsxNTI3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jRGVj
bE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5j
RGVjbE5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGNvbnN0
IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOworICAgICAgICBGdW5jRGVjbE5vZGUo
aW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbkJvZHlOb2RlKiwgY29uc3QgU291
cmNlQ29kZSYsIFBhcmFtZXRlck5vZGUqID0gMCk7CiAKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9k
ZSogYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogCkBAIC0xNTc0LDcgKzE1NzgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFN3aXRjaE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBTd2l0Y2hOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUq
LCBDYXNlQmxvY2tOb2RlKik7CisgICAgICAgIFN3aXRjaE5vZGUoaW50LCBpbnQsIEV4cHJlc3Np
b25Ob2RlKiwgQ2FzZUJsb2NrTm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGQ4OGE5
YThiNzZiZWRlOGEwOTJhZTdmYjJjNWZiZGM1YWQ1OGZhMzkuLmRmNGJjOTUwYzE1NDU5N2ZkNTE4
NzU4NjdmMDEyNTZjMTZmNmJmNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKQEAgLTE3Miw2ICsxNzIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgog
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZVZhckRlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFT
U0VSVChtYXRjaChWQVIpKTsKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigp
OwogICAgIGludCBzdGFydCA9IHRva2VuTGluZSgpOwogICAgIGludCBlbmQgPSAwOwogICAgIGlu
dCBzY3JhdGNoOwpAQCAtMTgyLDIwICsxODMsMjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xhcmF0aW8K
ICAgICBmYWlsSWZUcnVlKG1fZXJyb3IpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24o
KSk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVmFyU3RhdGVtZW50KG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIHZhckRlY2xzLCBzdGFydCwgZW5kKTsKKyAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVWYXJTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9r
ZW5Db2x1bW4sIHZhckRlY2xzLCBzdGFydCwgZW5kKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb25zdERlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiBjb250
ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChDT05TVFRPS0VOKSk7CisgICAgaW50IGtleVRva2Vu
Q29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBpbnQgc3RhcnQgPSB0b2tlbkxpbmUoKTsKICAg
ICBpbnQgZW5kID0gMDsKICAgICBUcmVlQ29uc3REZWNsTGlzdCBjb25zdERlY2xzID0gcGFyc2VD
b25zdERlY2xhcmF0aW9uTGlzdChjb250ZXh0KTsKICAgICBmYWlsSWZUcnVlKG1fZXJyb3IpOwog
ICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlQ29uc3RTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uc3RE
ZWNscywgc3RhcnQsIGVuZCk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29uc3RTdGF0ZW1l
bnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGNvbnN0RGVjbHMs
IHN0YXJ0LCBlbmQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMjEw
LDYgKzIxMiw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEb1doaWxlU3RhdGVtCiAgICAgZW5kTG9vcCgpOwogICAg
IGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsK
KyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGNvbnN1bWVPckZh
aWwoV0hJTEUpOwogICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKICAgICBUcmVlRXhwcmVz
c2lvbiBleHByID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwpAQCAtMjE3LDEzICsyMjAsMTQg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZURvV2hpbGVTdGF0ZW0KICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4p
OwogICAgIGlmIChtYXRjaChTRU1JQ09MT04pKQogICAgICAgICBuZXh0KCk7IC8vIEFsd2F5cyBw
ZXJmb3JtcyBhdXRvbWF0aWMgc2VtaWNvbG9uIGluc2VydGlvbi4KLSAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVEb1doaWxlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHN0YXRl
bWVudCwgZXhwciwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVEb1doaWxlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29s
dW1uLCBzdGF0ZW1lbnQsIGV4cHIsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlV2hpbGVTdGF0ZW1lbnQoVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFdISUxFKSk7CisgICAgaW50IGtleVRv
a2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5l
KCk7CiAgICAgbmV4dCgpOwogICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKQEAgLTIzNiw3
ICsyNDAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlV2hpbGVTdGF0ZW1lbgogICAgIFRyZWVTdGF0ZW1lbnQgc3Rh
dGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICBlbmRMb29wKCk7
CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVX
aGlsZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBzdGF0ZW1lbnQs
IHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlV2hpbGVTdGF0
ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGV4cHIsIHN0
YXRlbWVudCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KQEAgLTI0NSw2ICsyNDksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xhcmF0aQogICAg
IFRyZWVFeHByZXNzaW9uIHZhckRlY2xzID0gMDsKICAgICBkbyB7CiAgICAgICAgIGRlY2xhcmF0
aW9ucysrOworICAgICAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAg
ICAgICBuZXh0KCk7CiAgICAgICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICAgICAgCkBAIC0y
NjYsMTEgKzI3MSwxMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xhcmF0aQogICAgICAgICAgICAgbGFz
dEluaXRpYWxpemVyID0gaW5pdGlhbGl6ZXI7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShpbml0
aWFsaXplcik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUg
PSBjb250ZXh0LmNyZWF0ZUFzc2lnblJlc29sdmUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
Km5hbWUsIGluaXRpYWxpemVyLCBpbml0aWFsQXNzaWdubWVudHMgIT0gbV9hc3NpZ25tZW50Q291
bnQsIHZhclN0YXJ0LCB2YXJEaXZvdCwgbGFzdFRva2VuRW5kKCkpOworICAgICAgICAgICAgVHJl
ZUV4cHJlc3Npb24gbm9kZSA9IGNvbnRleHQuY3JlYXRlQXNzaWduUmVzb2x2ZShtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgKm5hbWUsIGluaXRpYWxpemVyLCBpbml0
aWFsQXNzaWdubWVudHMgIT0gbV9hc3NpZ25tZW50Q291bnQsIHZhclN0YXJ0LCB2YXJEaXZvdCwg
bGFzdFRva2VuRW5kKCkpOwogICAgICAgICAgICAgaWYgKCF2YXJEZWNscykKICAgICAgICAgICAg
ICAgICB2YXJEZWNscyA9IG5vZGU7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
dmFyRGVjbHMgPSBjb250ZXh0LmNvbWJpbmVDb21tYU5vZGVzKG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIHZhckRlY2xzLCBub2RlKTsKKyAgICAgICAgICAgICAgICB2YXJEZWNscyA9IGNvbnRl
eHQuY29tYmluZUNvbW1hTm9kZXMobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5D
b2x1bW4sIHZhckRlY2xzLCBub2RlKTsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKG1hdGNoKENP
TU1BKSk7CiAgICAgcmV0dXJuIHZhckRlY2xzOwpAQCAtMjgzLDYgKzI4OCw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNvbnN0RGVjbExpc3QgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlQ29uc3REZWNsCiAgICAgVHJlZUNvbnN0RGVjbExpc3QgY29uc3REZWNscyA9IDA7CiAg
ICAgVHJlZUNvbnN0RGVjbExpc3QgdGFpbCA9IDA7CiAgICAgZG8geworICAgICAgICBpbnQga2V5
VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIG1h
dGNoT3JGYWlsKElERU5UKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbmFtZSA9IG1fdG9r
ZW4ubV9kYXRhLmlkZW50OwpAQCAtMjk1LDcgKzMwMSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUNvbnN0RGVjbExpc3QgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29uc3RE
ZWNsCiAgICAgICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsgLy8g
Y29uc3VtZSAnPScKICAgICAgICAgICAgIGluaXRpYWxpemVyID0gcGFyc2VBc3NpZ25tZW50RXhw
cmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgfQotICAgICAgICB0YWlsID0gY29udGV4dC5hcHBl
bmRDb25zdERlY2wobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdGFpbCwgbmFtZSwgaW5pdGlh
bGl6ZXIpOworICAgICAgICB0YWlsID0gY29udGV4dC5hcHBlbmRDb25zdERlY2wobV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIHRhaWwsIG5hbWUsIGluaXRpYWxpemVy
KTsKICAgICAgICAgaWYgKCFjb25zdERlY2xzKQogICAgICAgICAgICAgY29uc3REZWNscyA9IHRh
aWw7CiAgICAgfSB3aGlsZSAobWF0Y2goQ09NTUEpKTsKQEAgLTMwNiw2ICszMTIsNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0YXRlbWVudChUcmVlQnVp
bGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goRk9SKSk7CisgICAgaW50IGtleVRv
a2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5l
KCk7CiAgICAgbmV4dCgpOwogICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKQEAgLTM1NSw3
ICszNjIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAgICAgICBlbmRMb29wKCk7CiAg
ICAgICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgICAgIAotICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVGb3JJbkxvb3AobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZm9ySW5U
YXJnZXQsIGZvckluSW5pdGlhbGl6ZXIsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgaW5M
b2NhdGlvbiwgZXhwckVuZCwgaW5pdFN0YXJ0LCBpbml0RW5kLCBzdGFydExpbmUsIGVuZExpbmUp
OworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJbkxvb3AobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGZvckluVGFyZ2V0LCBmb3JJbkluaXRpYWxpemVy
LCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGluTG9jYXRpb24sIGV4cHJFbmQsIGluaXRT
dGFydCwgaW5pdEVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICB9CiAgICAgCiAgICAgaWYg
KCFtYXRjaChTRU1JQ09MT04pKSB7CkBAIC0zOTEsNyArMzk4LDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0
YXRlbWVudCgKICAgICAgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVu
dChjb250ZXh0LCB1bnVzZWQpOwogICAgICAgICBlbmRMb29wKCk7CiAgICAgICAgIGZhaWxJZkZh
bHNlKHN0YXRlbWVudCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckxvb3AobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZGVjbHMsIGNvbmRpdGlvbiwgaW5jcmVtZW50LCBzdGF0
ZW1lbnQsIGhhc0RlY2xhcmF0aW9uLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVGb3JMb29wKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRv
a2VuQ29sdW1uLCBkZWNscywgY29uZGl0aW9uLCBpbmNyZW1lbnQsIHN0YXRlbWVudCwgaGFzRGVj
bGFyYXRpb24sIHN0YXJ0TGluZSwgZW5kTGluZSk7CiAgICAgfQogICAgIAogICAgIC8vIEZvci1p
biBsb29wCkBAIC00MDgsMTMgKzQxNSwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAg
IGVuZExvb3AoKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIAotICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBkZWNs
cywgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBkZWNsc0VuZCwgZXhwckVuZCwgc3RhcnRM
aW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJbkxvb3AobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGRlY2xzLCBleHByLCBzdGF0ZW1l
bnQsIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJyZWFrU3RhdGVt
ZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChCUkVBSykpOwor
ICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgaW50IHN0YXJ0Q29s
ID0gdG9rZW5TdGFydCgpOwogICAgIGludCBlbmRDb2wgPSB0b2tlbkVuZCgpOwogICAgIGludCBz
dGFydExpbmUgPSB0b2tlbkxpbmUoKTsKQEAgLTQyMyw3ICs0MzEsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQnJl
YWtTdGF0ZW1lbgogICAgIAogICAgIGlmIChhdXRvU2VtaUNvbG9uKCkpIHsKICAgICAgICAgZmFp
bElmRmFsc2VXaXRoTWVzc2FnZShicmVha0lzVmFsaWQoKSwgIidicmVhaycgaXMgb25seSB2YWxp
ZCBpbnNpZGUgYSBzd2l0Y2ggb3IgbG9vcCBzdGF0ZW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlQnJlYWtTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3Rh
cnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlQnJlYWtTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9r
ZW5Db2x1bW4sIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiAgICAgfQog
ICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1f
dG9rZW4ubV9kYXRhLmlkZW50OwpAQCAtNDMyLDEzICs0NDAsMTQgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJyZWFr
U3RhdGVtZW4KICAgICBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogICAgIGZh
aWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQnJl
YWtTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgaWRlbnQsIHN0YXJ0Q29sLCBl
bmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQnJl
YWtTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGlk
ZW50LCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnRpbnVlU3RhdGVtZW50KFRyZWVC
dWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChDT05USU5VRSkpOworICAgIGlu
dCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgaW50IHN0YXJ0Q29sID0gdG9r
ZW5TdGFydCgpOwogICAgIGludCBlbmRDb2wgPSB0b2tlbkVuZCgpOwogICAgIGludCBzdGFydExp
bmUgPSB0b2tlbkxpbmUoKTsKQEAgLTQ0Nyw3ICs0NTYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29udGludWVT
dGF0ZQogICAgIAogICAgIGlmIChhdXRvU2VtaUNvbG9uKCkpIHsKICAgICAgICAgZmFpbElmRmFs
c2VXaXRoTWVzc2FnZShjb250aW51ZUlzVmFsaWQoKSwgIidjb250aW51ZScgaXMgb25seSB2YWxp
ZCBpbnNpZGUgYSBsb29wIHN0YXRlbWVudCIpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVDb250aW51ZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBzdGFydENvbCwg
ZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVDb250aW51ZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNv
bHVtbiwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICB9CiAgICAg
bWF0Y2hPckZhaWwoSURFTlQpOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tl
bi5tX2RhdGEuaWRlbnQ7CkBAIC00NTgsMTMgKzQ2NywxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29udGludWVT
dGF0ZQogICAgIGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgZmFpbElm
RmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDb250aW51
ZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBpZGVudCwgc3RhcnRDb2wsIGVu
ZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDb250
aW51ZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwg
aWRlbnQsIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUmV0dXJuU3RhdGVtZW50KFRyZWVC
dWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChSRVRVUk4pKTsKKyAgICBpbnQg
a2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGZhaWxJZkZhbHNlKGN1cnJlbnRT
Y29wZSgpLT5pc0Z1bmN0aW9uKCkpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsK
ICAgICBpbnQgZW5kTGluZSA9IHN0YXJ0TGluZTsKQEAgLTQ3NywyMCArNDg3LDIxIEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VSZXR1cm5TdGF0ZW1lCiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIGVu
ZExpbmUgID0gdG9rZW5MaW5lKCk7CiAgICAgaWYgKGF1dG9TZW1pQ29sb24oKSkKLSAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIDAsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZVJldHVyblN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCBrZXlUb2tlbkNvbHVtbiwgMCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAg
ICBUcmVlRXhwcmVzc2lvbiBleHByID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZh
aWxJZkZhbHNlKGV4cHIpOwogICAgIGVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgIGlmIChtYXRj
aChTRU1JQ09MT04pKQogICAgICAgICBlbmRMaW5lICA9IHRva2VuTGluZSgpOwogICAgIGZhaWxJ
ZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJu
U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIHN0YXJ0LCBlbmQsIHN0
YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVt
ZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBleHByLCBzdGFy
dCwgZW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVRocm93U3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQog
ewogICAgIEFTU0VSVChtYXRjaChUSFJPVykpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRv
a2VuQ29sdW1uKCk7CiAgICAgaW50IGVTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICBpbnQgc3Rh
cnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwpAQCAtNTAzLDEzICs1MTQsMTQgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZVRocm93U3RhdGVtZW4KICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwog
ICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlVGhyb3dTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwg
ZVN0YXJ0LCBlRW5kLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZVRocm93U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29s
dW1uLCBleHByLCBlU3RhcnQsIGVFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlV2l0aFN0YXRlbWVudChUcmVlQnVp
bGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goV0lUSCkpOworICAgIGludCBrZXlU
b2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgZmFpbElmVHJ1ZVdpdGhNZXNzYWdlKHN0
cmljdE1vZGUoKSwgIid3aXRoJyBzdGF0ZW1lbnRzIGFyZSBub3QgdmFsaWQgaW4gc3RyaWN0IG1v
ZGUiKTsKICAgICBjdXJyZW50U2NvcGUoKS0+c2V0TmVlZHNGdWxsQWN0aXZhdGlvbigpOwogICAg
IGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKQEAgLTUyNiwxMyArNTM4LDE0IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VXaXRoU3RhdGVtZW50CiAgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0
YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAg
ICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlV2l0aFN0YXRlbWVudChtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBleHByLCBzdGF0ZW1lbnQsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5k
TGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlV2l0aFN0YXRlbWVudChtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZXhwciwgc3RhdGVtZW50LCBzdGFydCwg
ZW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZVN3aXRjaFN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsK
ICAgICBBU1NFUlQobWF0Y2goU1dJVENIKSk7CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9r
ZW5Db2x1bW4oKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgp
OwogICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKQEAgLTU1Myw3ICs1NjYsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlU3dpdGNoU3RhdGVtZQogICAgIGVuZFN3aXRjaCgpOwogICAgIGNvbnN1bWVPckZhaWwo
Q0xPU0VCUkFDRSk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlU3dpdGNoU3RhdGVt
ZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIGZpcnN0Q2xhdXNlcywgZGVmYXVs
dENsYXVzZSwgc2Vjb25kQ2xhdXNlcywgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
a2V5VG9rZW5Db2x1bW4sIGV4cHIsIGZpcnN0Q2xhdXNlcywgZGVmYXVsdENsYXVzZSwgc2Vjb25k
Q2xhdXNlcywgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICAKIH0KIApAQCAtNjM3LDIwICs2NTAs
MjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZVRyeVN0YXRlbWVudCgKICAgICAgICAgZmFpbElmRmFsc2UoZmluYWxs
eUJsb2NrKTsKICAgICB9CiAgICAgZmFpbElmRmFsc2UoY2F0Y2hCbG9jayB8fCBmaW5hbGx5Qmxv
Y2spOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVRyeVN0YXRlbWVudChtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCB0cnlCbG9jaywgaWRlbnQsIGNhdGNoQmxvY2ssIGZpbmFsbHlCbG9jaywg
Zmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVHJ5U3RhdGVt
ZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHRyeUJsb2NrLCBp
ZGVudCwgY2F0Y2hCbG9jaywgZmluYWxseUJsb2NrLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZWJ1Z2dlclN0YXRl
bWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goREVCVUdHRVIp
KTsKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBzdGFy
dExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQgZW5kTGluZSA9IHN0YXJ0TGluZTsKICAgICBu
ZXh0KCk7CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIHN0YXJ0TGluZSA9IHRv
a2VuTGluZSgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlRGVidWdnZXIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RhcnRM
aW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVEZWJ1Z2dlcihtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgc3RhcnRMaW5lLCBlbmRMaW5lKTsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTY2MSwxMyArNjc1LDEzIEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VCbG9ja1N0YXRlbWVuCiAgICAgbmV4dCgpOwogICAgIGlmIChtYXRjaChDTE9T
RUJSQUNFKSkgewogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUJsb2NrU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIDAsIHN0YXJ0LCBtX2xh
c3RMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgMCwgc3RhcnQsIG1fbGFzdExp
bmUpOwogICAgIH0KICAgICBUcmVlU291cmNlRWxlbWVudHMgc3VidHJlZSA9IHBhcnNlU291cmNl
RWxlbWVudHM8RG9udENoZWNrRm9yU3RyaWN0TW9kZT4oY29udGV4dCk7CiAgICAgZmFpbElmRmFs
c2Uoc3VidHJlZSk7CiAgICAgbWF0Y2hPckZhaWwoQ0xPU0VCUkFDRSk7CiAgICAgbmV4dCgpOwot
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2NrU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIHN1YnRyZWUsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKKyAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVCbG9ja1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNv
bHVtbigpLCBzdWJ0cmVlLCBzdGFydCwgbV9sYXN0TGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBMZXhlclR5cGU+CkBAIC02OTAsNyArNzA0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudChU
cmUKICAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihjb250ZXh0KTsKICAg
ICBjYXNlIFNFTUlDT0xPTjoKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVFbXB0eVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRW1wdHlTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgdG9rZW5Db2x1bW4oKSk7CiAgICAgY2FzZSBJRjoKICAgICAgICAgcmV0dXJuIHBh
cnNlSWZTdGF0ZW1lbnQoY29udGV4dCk7CiAgICAgY2FzZSBETzoKQEAgLTc1OSwxMiArNzczLDEy
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25C
b2R5KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkK
LSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIHN0cmljdE1vZGUoKSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUZ1bmN0aW9uQm9keShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBz
dHJpY3RNb2RlKCkpOwogICAgIERlcHRoTWFuYWdlciBzdGF0ZW1lbnREZXB0aCgmbV9zdGF0ZW1l
bnREZXB0aCk7CiAgICAgbV9zdGF0ZW1lbnREZXB0aCA9IDA7CiAgICAgdHlwZW5hbWUgVHJlZUJ1
aWxkZXI6OkZ1bmN0aW9uQm9keUJ1aWxkZXIgYm9keUJ1aWxkZXIoY29uc3RfY2FzdDxKU0dsb2Jh
bERhdGEqPihtX2dsb2JhbERhdGEpLCBtX2xleGVyLmdldCgpKTsKICAgICBmYWlsSWZGYWxzZShw
YXJzZVNvdXJjZUVsZW1lbnRzPENoZWNrRm9yU3RyaWN0TW9kZT4oYm9keUJ1aWxkZXIpKTsKLSAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgc3RyaWN0TW9kZSgpKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJv
ZHkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgc3RyaWN0TW9kZSgp
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTc5NCw3ICs4MDgsNyBA
QCB0ZW1wbGF0ZSA8RnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBib29sIG5hbWVJ
c0luQ29udGFpbmluZ1Njb3BlLCBjbGFzcwogICAgIGlmIChjb25zdCBTb3VyY2VQcm92aWRlckNh
Y2hlSXRlbSogY2FjaGVkSW5mbyA9IFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5jdGlvbkNhY2hlID8g
ZmluZENhY2hlZEZ1bmN0aW9uSW5mbyhvcGVuQnJhY2VQb3MpIDogMCkgewogICAgICAgICAvLyBJ
ZiB3ZSdyZSBpbiBhIHN0cmljdCBjb250ZXh0LCB0aGUgY2FjaGVkIGZ1bmN0aW9uIGluZm8gbXVz
dCBzYXkgaXQgd2FzIHN0cmljdCB0b28uCiAgICAgICAgIEFTU0VSVCghc3RyaWN0TW9kZSgpIHx8
IGNhY2hlZEluZm8tPnN0cmljdE1vZGUpOwotICAgICAgICBib2R5ID0gY29udGV4dC5jcmVhdGVG
dW5jdGlvbkJvZHkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY2FjaGVkSW5mby0+c3RyaWN0
TW9kZSk7CisgICAgICAgIGJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBjYWNoZWRJbmZvLT5zdHJpY3RNb2Rl
KTsKICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGdW5jdGlvbkluZm8o
Y2FjaGVkSW5mbyk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUs
IFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pKTsKQEAgLTg1NCw3ICs4NjgsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYQogICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9u
SW5mbzxGdW5jdGlvbk5lZWRzTmFtZSwgdHJ1ZT4oY29udGV4dCwgbmFtZSwgcGFyYW1ldGVycywg
Ym9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSkpOwogICAg
IGZhaWxJZkZhbHNlKG5hbWUpOwogICAgIGZhaWxJZkZhbHNlSWZTdHJpY3QoZGVjbGFyZVZhcmlh
YmxlKG5hbWUpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVudCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBuYW1lLCBib2R5LCBwYXJhbWV0ZXJzLCBvcGVuQnJh
Y2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOworICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIHRva2VuQ29sdW1uKCksIG5hbWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZVBv
cywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CiB9CiAKIHN0cnVj
dCBMYWJlbEluZm8gewpAQCAtODgyLDYgKzg5Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uT3JM
CiAgICAgZG8gewogICAgICAgICBpbnQgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgICAgIGlu
dCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICAgICAgaW50IGtleVRva2VuQ29sdW1uID0g
dG9rZW5Db2x1bW4oKTsKICAgICAgICAgaWYgKCFuZXh0VG9rZW5Jc0NvbG9uKCkpIHsKICAgICAg
ICAgICAgIC8vIElmIHdlIGhpdCB0aGlzIHBhdGggd2UncmUgbWFraW5nIGEgZXhwcmVzc2lvbiBz
dGF0ZW1lbnQsIHdoaWNoCiAgICAgICAgICAgICAvLyBieSBkZWZpbml0aW9uIGNhbid0IG1ha2Ug
dXNlIG9mIGNvbnRpbnVlL2JyZWFrIHNvIHdlIGNhbiBqdXN0CkBAIC04ODksNyArOTA0LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUV4cHJlc3Npb25PckwKICAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIGV4cHJl
c3Npb24gPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxz
ZShleHByZXNzaW9uKTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7
Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIGV4cHJlc3Npb24sIHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7Cisg
ICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBleHByZXNzaW9uLCBzdGFydExpbmUsIG1f
bGFzdExpbmUpOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0g
bV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIGludCBlbmQgPSB0b2tlbkVuZCgpOwpAQCAt
OTI4LDcgKzk0Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uT3JMCiAgICAgZmFpbElmRmFsc2Uo
c3RhdGVtZW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxhYmVscy5zaXplKCk7IGkr
KykgewogICAgICAgICBjb25zdCBMYWJlbEluZm8mIGluZm8gPSBsYWJlbHNbbGFiZWxzLnNpemUo
KSAtIGkgLSAxXTsKLSAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5jcmVhdGVMYWJlbFN0YXRl
bWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBpbmZvLm1faWRlbnQsIHN0YXRlbWVudCwg
aW5mby5tX3N0YXJ0LCBpbmZvLm1fZW5kKTsKKyAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5j
cmVhdGVMYWJlbFN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVt
bigpLCBpbmZvLm1faWRlbnQsIHN0YXRlbWVudCwgaW5mby5tX3N0YXJ0LCBpbmZvLm1fZW5kKTsK
ICAgICB9CiAgICAgcmV0dXJuIHN0YXRlbWVudDsKIH0KQEAgLTkzNywxNyArOTUyLDE4IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lvblN0YXRlbWVu
dChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5l
KCk7CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBUcmVlRXhw
cmVzc2lvbiBleHByZXNzaW9uID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJ
ZkZhbHNlKGV4cHJlc3Npb24pOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0g
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBleHByZXNzaW9uLCBzdGFydExpbmUsIG1fbGFzdExpbmUpOworICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5
VG9rZW5Db2x1bW4sIGV4cHJlc3Npb24sIHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVHJlZUJ1
aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKElGKSk7Ci0gICAgCisgICAgaW50
IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBpbnQgc3RhcnQgPSB0b2tlbkxp
bmUoKTsKICAgICBuZXh0KCk7CiAgICAgCkBAIC05NjMsNyArOTc5LDcgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlm
U3RhdGVtZW50KFQKICAgICBmYWlsSWZGYWxzZSh0cnVlQmxvY2spOwogICAgIAogICAgIGlmICgh
bWF0Y2goRUxTRSkpCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBzdGFydCwgZW5k
KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBzdGFy
dCwgZW5kKTsKICAgICAKICAgICBWZWN0b3I8VHJlZUV4cHJlc3Npb24+IGV4cHJTdGFjazsKICAg
ICBWZWN0b3I8cGFpcjxpbnQsIGludD4gPiBwb3NTdGFjazsKQEAgLTEwMDMsNyArMTAxOSw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VJZlN0YXRlbWVudChUCiAgICAgICAgIHN0YXRlbWVudFN0YWNrLnJlbW92ZUxh
c3QoKTsKICAgICAgICAgcGFpcjxpbnQsIGludD4gcG9zID0gcG9zU3RhY2subGFzdCgpOwogICAg
ICAgICBwb3NTdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgICAgIHN0YXRlbWVudFN0YWNrLmFwcGVu
ZChjb250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGNv
bmRpdGlvbiwgdHJ1ZUJsb2NrLCBwb3MuZmlyc3QsIHBvcy5zZWNvbmQpKTsKKyAgICAgICAgc3Rh
dGVtZW50U3RhY2suYXBwZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHBvcy5m
aXJzdCwgcG9zLnNlY29uZCkpOwogICAgIH0KICAgICAKICAgICB3aGlsZSAoIWV4cHJTdGFjay5p
c0VtcHR5KCkpIHsKQEAgLTEwMTUsMTYgKzEwMzEsMTcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlmU3RhdGVtZW50
KFQKICAgICAgICAgc3RhdGVtZW50U3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICBwYWlyPGlu
dCwgaW50PiBwb3MgPSBwb3NTdGFjay5sYXN0KCk7CiAgICAgICAgIHBvc1N0YWNrLnJlbW92ZUxh
c3QoKTsKLSAgICAgICAgc3RhdGVtZW50U3RhY2suYXBwZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0
ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIGZh
bHNlQmxvY2ssIHBvcy5maXJzdCwgcG9zLnNlY29uZCkpOworICAgICAgICBzdGF0ZW1lbnRTdGFj
ay5hcHBlbmQoY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCB0b2tlbkNvbHVtbigpLCBjb25kaXRpb24sIHRydWVCbG9jaywgZmFsc2VCbG9jaywgcG9z
LmZpcnN0LCBwb3Muc2Vjb25kKSk7CiAgICAgfQogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUlmU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGNvbmRpdGlvbiwgdHJ1
ZUJsb2NrLCBzdGF0ZW1lbnRTdGFjay5sYXN0KCksIHN0YXJ0LCBlbmQpOworICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2Vu
Q29sdW1uKCksIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBzdGF0ZW1lbnRTdGFjay5sYXN0KCksIHN0
YXJ0LCBlbmQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIGZhaWxJZlN0YWNrT3Zl
cmZsb3coKTsKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIFRy
ZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwog
ICAgIGZhaWxJZkZhbHNlKG5vZGUpOwogICAgIGlmICghbWF0Y2goQ09NTUEpKQpAQCAtMTAzNCw3
ICsxMDUxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uKFQKICAgICBtX25vbkxIU0NvdW50Kys7
CiAgICAgVHJlZUV4cHJlc3Npb24gcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNv
bnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHJpZ2h0KTsKLSAgICB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6Q29tbWEgY29tbWFOb2RlID0gY29udGV4dC5jcmVhdGVDb21tYUV4cHIobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwgbm9kZSwgcmlnaHQpOworICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpD
b21tYSBjb21tYU5vZGUgPSBjb250ZXh0LmNyZWF0ZUNvbW1hRXhwcihtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgbm9kZSwgcmlnaHQpOwogICAgIHdoaWxlIChtYXRj
aChDT01NQSkpIHsKICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7
CiAgICAgICAgIHJpZ2h0ID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKQEAg
LTEwNDksNiArMTA2Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVuCiB7CiAgICAgZmFpbElm
U3RhY2tPdmVyZmxvdygpOwogICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICBpbnQg
a2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBpbml0aWFsQXNzaWdubWVu
dENvdW50ID0gbV9hc3NpZ25tZW50Q291bnQ7CiAgICAgaW50IGluaXRpYWxOb25MSFNDb3VudCA9
IG1fbm9uTEhTQ291bnQ7CiAgICAgVHJlZUV4cHJlc3Npb24gbGhzID0gcGFyc2VDb25kaXRpb25h
bEV4cHJlc3Npb24oY29udGV4dCk7CkBAIC0xMDc4LDcgKzEwOTYsNyBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUFzc2lnbm1lbgogICAgICAgICB9CiAgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3Vu
dCsrOwogICAgICAgICBoYWRBc3NpZ25tZW50ID0gdHJ1ZTsKLSAgICAgICAgY29udGV4dC5hc3Np
Z25tZW50U3RhY2tBcHBlbmQoYXNzaWdubWVudFN0YWNrLCBsaHMsIHN0YXJ0LCB0b2tlblN0YXJ0
KCksIG1fYXNzaWdubWVudENvdW50LCBvcCk7CisgICAgICAgIGNvbnRleHQuYXNzaWdubWVudFN0
YWNrQXBwZW5kKGFzc2lnbm1lbnRTdGFjaywgbGhzLCBzdGFydCwga2V5VG9rZW5Db2x1bW4sIG1f
YXNzaWdubWVudENvdW50LCBvcCk7CiAgICAgICAgIHN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAg
ICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250
QnVpbGRTdHJpbmdzKTsKQEAgLTExMDEsNyArMTExOSw3IEBAIGVuZDoKICAgICAgICAgcmV0dXJu
IGxoczsKICAgICAKICAgICB3aGlsZSAoYXNzaWdubWVudFN0YWNrKQotICAgICAgICBsaHMgPSBj
b250ZXh0LmNyZWF0ZUFzc2lnbm1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgYXNzaWdu
bWVudFN0YWNrLCBsaHMsIGluaXRpYWxBc3NpZ25tZW50Q291bnQsIG1fYXNzaWdubWVudENvdW50
LCBsYXN0VG9rZW5FbmQoKSk7CisgICAgICAgIGxocyA9IGNvbnRleHQuY3JlYXRlQXNzaWdubWVu
dChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgYXNzaWdubWVudFN0
YWNrLCBsaHMsIGluaXRpYWxBc3NpZ25tZW50Q291bnQsIG1fYXNzaWdubWVudENvdW50LCBsYXN0
VG9rZW5FbmQoKSk7CiAgICAgCiAgICAgcmV0dXJuIGxoczsKIH0KQEAgLTExMDksNiArMTEyNyw3
IEBAIGVuZDoKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbmRp
dGlvbmFsRXhwcmVzc2lvbihUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKKyAgICBpbnQga2V5VG9r
ZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIFRyZWVFeHByZXNzaW9uIGNvbmQgPSBwYXJz
ZUJpbmFyeUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoY29uZCk7CiAgICAg
aWYgKCFtYXRjaChRVUVTVElPTikpCkBAIC0xMTIxLDcgKzExNDAsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNv
bmRpdGlvbmFsRQogICAgIAogICAgIFRyZWVFeHByZXNzaW9uIHJocyA9IHBhcnNlQXNzaWdubWVu
dEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UocmhzKTsKLSAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVDb25kaXRpb25hbEV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
Y29uZCwgbGhzLCByaHMpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbmRpdGlvbmFsRXhw
cihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgY29uZCwgbGhzLCBy
aHMpOwogfQogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlw
ZSB0b2tlbikKQEAgLTExNjUsNyArMTE4NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQmluYXJ5RXhwcmVzCiAg
ICAgICAgICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3BlcmFuZCByaHMgPSBjb250
ZXh0LmdldEZyb21PcGVyYW5kU3RhY2soLTEpOwogICAgICAgICAgICAgdHlwZW5hbWUgVHJlZUJ1
aWxkZXI6OkJpbmFyeU9wZXJhbmQgbGhzID0gY29udGV4dC5nZXRGcm9tT3BlcmFuZFN0YWNrKC0y
KTsKICAgICAgICAgICAgIGNvbnRleHQuc2hyaW5rT3BlcmFuZFN0YWNrQnkob3BlcmFuZFN0YWNr
RGVwdGgsIDIpOwotICAgICAgICAgICAgY29udGV4dC5hcHBlbmRCaW5hcnlPcGVyYXRpb24obV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgb3BlcmFuZFN0YWNrRGVwdGgsIG9wZXJhdG9yU3RhY2tE
ZXB0aCwgbGhzLCByaHMpOworICAgICAgICAgICAgY29udGV4dC5hcHBlbmRCaW5hcnlPcGVyYXRp
b24obV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgb3BlcmFuZFN0YWNr
RGVwdGgsIG9wZXJhdG9yU3RhY2tEZXB0aCwgbGhzLCByaHMpOwogICAgICAgICAgICAgY29udGV4
dC5vcGVyYXRvclN0YWNrUG9wKG9wZXJhdG9yU3RhY2tEZXB0aCk7CiAgICAgICAgIH0KICAgICAg
ICAgY29udGV4dC5vcGVyYXRvclN0YWNrQXBwZW5kKG9wZXJhdG9yU3RhY2tEZXB0aCwgb3BlcmF0
b3JUb2tlbiwgcHJlY2VkZW5jZSk7CkBAIC0xMTc2LDcgKzExOTUsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJp
bmFyeUV4cHJlcwogICAgICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3BlcmFuZCBy
aHMgPSBjb250ZXh0LmdldEZyb21PcGVyYW5kU3RhY2soLTEpOwogICAgICAgICB0eXBlbmFtZSBU
cmVlQnVpbGRlcjo6QmluYXJ5T3BlcmFuZCBsaHMgPSBjb250ZXh0LmdldEZyb21PcGVyYW5kU3Rh
Y2soLTIpOwogICAgICAgICBjb250ZXh0LnNocmlua09wZXJhbmRTdGFja0J5KG9wZXJhbmRTdGFj
a0RlcHRoLCAyKTsKLSAgICAgICAgY29udGV4dC5hcHBlbmRCaW5hcnlPcGVyYXRpb24obV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgb3BlcmFuZFN0YWNrRGVwdGgsIG9wZXJhdG9yU3RhY2tEZXB0
aCwgbGhzLCByaHMpOworICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9wZXJhdGlvbihtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBvcGVyYW5kU3RhY2tEZXB0aCwg
b3BlcmF0b3JTdGFja0RlcHRoLCBsaHMsIHJocyk7CiAgICAgICAgIGNvbnRleHQub3BlcmF0b3JT
dGFja1BvcChvcGVyYXRvclN0YWNrRGVwdGgpOwogICAgIH0KICAgICByZXR1cm4gY29udGV4dC5w
b3BPcGVyYW5kU3RhY2sob3BlcmFuZFN0YWNrRGVwdGgpOwpAQCAtMTIyOCw4ICsxMjQ3LDggQEAg
dGVtcGxhdGUgPGJvb2wgY29tcGxldGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkg
UGFyc2VyPExleGVyVHlwZT46OnBhcnMKICAgICAgICAgbmV4dCgpOwogICAgICAgICBmYWlsSWZG
YWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgZmFsc2U+KGNv
bnRleHQsIGFjY2Vzc29yTmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9z
ZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSkpOwogICAgICAgICBpZiAoc3RyaW5nUHJvcGVydHlO
YW1lKQotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQudGVtcGxhdGUgY3JlYXRlR2V0dGVyT3JT
ZXR0ZXJQcm9wZXJ0eTxjb21wbGV0ZT4obV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdHlwZSwg
c3RyaW5nUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3Nl
QnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOwotICAgICAgICByZXR1cm4gY29u
dGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihjb25z
dF9jYXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xvYmFsRGF0YSksIG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIHR5cGUsIG51bWVyaWNQcm9wZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5C
cmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAg
ICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3Bl
cnR5PGNvbXBsZXRlPihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCB0
eXBlLCBzdHJpbmdQcm9wZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywg
Y2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgICAgIHJldHVy
biBjb250ZXh0LnRlbXBsYXRlIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8Y29tcGxldGU+
KGNvbnN0X2Nhc3Q8SlNHbG9iYWxEYXRhKj4obV9nbG9iYWxEYXRhKSwgbV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgdHlwZSwgbnVtZXJpY1Byb3BlcnR5TmFtZSwgcGFy
YW1ldGVycywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5l
LCBtX2xhc3RMaW5lKTsKICAgICB9CiAgICAgY2FzZSBOVU1CRVI6IHsKICAgICAgICAgZG91Ymxl
IHByb3BlcnR5TmFtZSA9IG1fdG9rZW4ubV9kYXRhLmRvdWJsZVZhbHVlOwpAQCAtMTI1Nyw3ICsx
Mjc2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VPYmplY3RMaXRlcmEKICAgICAKICAgICBpZiAobWF0Y2goQ0xP
U0VCUkFDRSkpIHsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVPYmplY3RMaXRlcmFsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCkpOworICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IHRva2VuQ29sdW1uKCkpOwogICAgIH0KICAgICAKICAgICBUcmVlUHJvcGVydHkgcHJvcGVydHkg
PSBwYXJzZVByb3BlcnR5PGZhbHNlPihjb250ZXh0KTsKQEAgLTEyNjksNyArMTI4OCw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlT2JqZWN0TGl0ZXJhCiAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIob2xk
TGluZU51bWJlcik7CiAgICAgICAgIHJldHVybiBwYXJzZVN0cmljdE9iamVjdExpdGVyYWwoY29u
dGV4dCk7CiAgICAgfQotICAgIFRyZWVQcm9wZXJ0eUxpc3QgcHJvcGVydHlMaXN0ID0gY29udGV4
dC5jcmVhdGVQcm9wZXJ0eUxpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHkp
OworICAgIFRyZWVQcm9wZXJ0eUxpc3QgcHJvcGVydHlMaXN0ID0gY29udGV4dC5jcmVhdGVQcm9w
ZXJ0eUxpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgcHJvcGVy
dHkpOwogICAgIFRyZWVQcm9wZXJ0eUxpc3QgdGFpbCA9IHByb3BlcnR5TGlzdDsKICAgICB3aGls
ZSAobWF0Y2goQ09NTUEpKSB7CiAgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0
cmluZ3MpOwpAQCAtMTI4NSwxNCArMTMwNCwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU9iamVjdExpdGVyYQog
ICAgICAgICAgICAgbV9sZXhlci0+c2V0TGluZU51bWJlcihvbGRMaW5lTnVtYmVyKTsKICAgICAg
ICAgICAgIHJldHVybiBwYXJzZVN0cmljdE9iamVjdExpdGVyYWwoY29udGV4dCk7CiAgICAgICAg
IH0KLSAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIHByb3BlcnR5LCB0YWlsKTsKKyAgICAgICAgdGFpbCA9IGNvbnRleHQu
Y3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1u
KCksIHByb3BlcnR5LCB0YWlsKTsKICAgICB9CiAgICAgCiAgICAgY29uc3VtZU9yRmFpbChDTE9T
RUJSQUNFKTsKICAgICAKICAgICBtX25vbkxIU0NvdW50ID0gb2xkTm9uTEhTQ291bnQ7CiAgICAg
Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBwcm9wZXJ0eUxpc3QpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVj
dExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgcHJvcGVy
dHlMaXN0KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTEzMDQsNyAr
MTMyMyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlU3RyaWN0T2JqZWN0CiAKICAgICBpZiAobWF0Y2goQ0xPU0VC
UkFDRSkpIHsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVP
YmplY3RMaXRlcmFsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCkpOworICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRv
a2VuQ29sdW1uKCkpOwogICAgIH0KICAgICAKICAgICBUcmVlUHJvcGVydHkgcHJvcGVydHkgPSBw
YXJzZVByb3BlcnR5PHRydWU+KGNvbnRleHQpOwpAQCAtMTMxNiw3ICsxMzM1LDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VTdHJpY3RPYmplY3QKICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCkKICAg
ICAgICAgb2JqZWN0VmFsaWRhdG9yLmFkZChjb250ZXh0LmdldE5hbWUocHJvcGVydHkpLmltcGwo
KSwgY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSk7CiAgICAgCi0gICAgVHJlZVByb3BlcnR5TGlz
dCBwcm9wZXJ0eUxpc3QgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBwcm9wZXJ0eSk7CisgICAgVHJlZVByb3BlcnR5TGlzdCBwcm9wZXJ0eUxp
c3QgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCB0b2tlbkNvbHVtbigpLCBwcm9wZXJ0eSk7CiAgICAgVHJlZVByb3BlcnR5TGlzdCB0YWlsID0g
cHJvcGVydHlMaXN0OwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAgbmV4dCgp
OwpAQCAtMTMzNCwxNCArMTM1MywxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0cmljdE9iamVjdAogICAgICAg
ICAgICAgICAgIHByb3BlcnR5RW50cnkuaXRlcmF0b3ItPnNlY29uZCB8PSBjb250ZXh0LmdldFR5
cGUocHJvcGVydHkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHRhaWwgPSBj
b250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBwcm9w
ZXJ0eSwgdGFpbCk7CisgICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBwcm9wZXJ0eSwgdGFpbCk7
CiAgICAgfQogICAgIAogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDRSk7CiAKICAgICBtX25v
bkxIU0NvdW50ID0gb2xkTm9uTEhTQ291bnQ7CiAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVP
YmplY3RMaXRlcmFsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5TGlzdCk7Cisg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCB0b2tlbkNvbHVtbigpLCBwcm9wZXJ0eUxpc3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMTM1OCw3ICsxMzc3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJheUxp
dGVyYWwKICAgICB9CiAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0tFVCkpIHsKICAgICAgICAgbmV4
dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUFycmF5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGVsaXNpb25zKTsKKyAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
dG9rZW5Db2x1bW4oKSwgZWxpc2lvbnMpOwogICAgIH0KICAgICAKICAgICBUcmVlRXhwcmVzc2lv
biBlbGVtID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTEzNzcsNyAr
MTM5Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlQXJyYXlMaXRlcmFsCiAgICAgICAgIAogICAgICAgICBpZiAo
bWF0Y2goQ0xPU0VCUkFDS0VUKSkgewogICAgICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9u
dEJ1aWxkU3RyaW5ncyk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheSht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBlbGlzaW9ucywgZWxlbWVudExpc3QpOworICAgICAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgdG9rZW5Db2x1bW4oKSwgZWxpc2lvbnMsIGVsZW1lbnRMaXN0KTsKICAgICAgICAgfQogICAg
ICAgICBUcmVlRXhwcmVzc2lvbiBlbGVtID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250
ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UoZWxlbSk7CkBAIC0xMzg4LDcgKzE0MDcsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUFycmF5TGl0ZXJhbAogICAgIAogICAgIG1fbm9uTEhTQ291bnQgPSBvbGROb25M
SFNDb3VudDsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCBlbGVtZW50TGlzdCk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
QXJyYXkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZWxlbWVudExp
c3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMTQxMyw3ICsxNDMy
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmUKICAgICB9CiAgICAgY2FzZSBUSElTVE9LRU46
IHsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC50aGlzRXhwcihtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQudGhpc0V4cHIo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSk7CiAgICAgfQogICAgIGNh
c2UgSURFTlQ6IHsKICAgICAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOwpAQCAtMTQyMSwy
OSArMTQ0MCwyOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHByZQogICAgICAgICBuZXh0KCk7CiAg
ICAgICAgIGN1cnJlbnRTY29wZSgpLT51c2VWYXJpYWJsZShpZGVudCwgbV9nbG9iYWxEYXRhLT5w
cm9wZXJ0eU5hbWVzLT5ldmFsID09ICppZGVudCk7CiAgICAgICAgIG1fbGFzdElkZW50aWZpZXIg
PSBpZGVudDsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmVzb2x2ZShtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCBpZGVudCwgc3RhcnQpOworICAgICAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVSZXNvbHZlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGlk
ZW50LCBzdGFydCk7CiAgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7CiAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIG5leHQoKTsK
LSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlU3RyaW5nKG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIGlkZW50KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlU3RyaW5nKG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGlkZW50KTsKICAgICB9CiAgICAg
Y2FzZSBOVU1CRVI6IHsKICAgICAgICAgZG91YmxlIGQgPSBtX3Rva2VuLm1fZGF0YS5kb3VibGVW
YWx1ZTsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVOdW1i
ZXJFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGQpOworICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVOdW1iZXJFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29s
dW1uKCksIGQpOwogICAgIH0KICAgICBjYXNlIE5VTExUT0tFTjogewogICAgICAgICBuZXh0KCk7
Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU51bGwobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU51bGwobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSk7CiAgICAgfQogICAgIGNhc2UgVFJVRVRPS0VOOiB7
CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQm9vbGVhbiht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlQm9vbGVhbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCB0
cnVlKTsKICAgICB9CiAgICAgY2FzZSBGQUxTRVRPS0VOOiB7CiAgICAgICAgIG5leHQoKTsKLSAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQm9vbGVhbihtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBmYWxzZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJvb2xlYW4obV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZmFsc2UpOwogICAgIH0KICAgICBj
YXNlIERJVkVRVUFMOgogICAgIGNhc2UgRElWSURFOiB7CkBAIC0xNDU3LDcgKzE0NzYsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZVByaW1hcnlFeHByZQogICAgICAgICAKICAgICAgICAgaW50IHN0YXJ0ID0gdG9r
ZW5TdGFydCgpOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIFRyZWVFeHByZXNzaW9uIHJlID0g
Y29udGV4dC5jcmVhdGVSZWdFeHAobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgKnBhdHRlcm4s
ICpmbGFncywgc3RhcnQpOworICAgICAgICBUcmVlRXhwcmVzc2lvbiByZSA9IGNvbnRleHQuY3Jl
YXRlUmVnRXhwKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksICpwYXR0
ZXJuLCAqZmxhZ3MsIHN0YXJ0KTsKICAgICAgICAgaWYgKCFyZSkgewogICAgICAgICAgICAgY29u
c3QgY2hhciogeWFyckVycm9yTXNnID0gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi0+dXN0cmlu
ZygpKTsKICAgICAgICAgICAgIEFTU0VSVCghbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkpOwpAQCAt
MTQ4MSwxMyArMTUwMCwxMyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVBcmd1
bWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJndW1lbnRzKFRyZQogICAgIFRyZWVFeHBy
ZXNzaW9uIGZpcnN0QXJnID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAg
ICBmYWlsSWZGYWxzZShmaXJzdEFyZyk7CiAgICAgCi0gICAgVHJlZUFyZ3VtZW50c0xpc3QgYXJn
TGlzdCA9IGNvbnRleHQuY3JlYXRlQXJndW1lbnRzTGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBmaXJzdEFyZyk7CisgICAgVHJlZUFyZ3VtZW50c0xpc3QgYXJnTGlzdCA9IGNvbnRleHQu
Y3JlYXRlQXJndW1lbnRzTGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVt
bigpLCBmaXJzdEFyZyk7CiAgICAgVHJlZUFyZ3VtZW50c0xpc3QgdGFpbCA9IGFyZ0xpc3Q7CiAg
ICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250
QnVpbGRTdHJpbmdzKTsKICAgICAgICAgVHJlZUV4cHJlc3Npb24gYXJnID0gcGFyc2VBc3NpZ25t
ZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UoYXJnKTsKLSAgICAg
ICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlQXJndW1lbnRzTGlzdChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCB0YWlsLCBhcmcpOworICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVBcmd1bWVu
dHNMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHRhaWwsIGFy
Zyk7CiAgICAgfQogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlQXJndW1lbnRzKGFyZ0xpc3QpOwpAQCAtMTUxNCw3ICsxNTMzLDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgaW50IGJvZHlTdGFydExpbmUgPSAwOwogICAg
ICAgICBuZXh0KCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbzxGdW5j
dGlvbk5vUmVxdWlyZW1lbnRzLCBmYWxzZT4oY29udGV4dCwgbmFtZSwgcGFyYW1ldGVycywgYm9k
eSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSkpOwotICAgICAg
ICBiYXNlID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9z
LCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKKyAgICAgICAgYmFzZSA9IGNvbnRleHQuY3Jl
YXRlRnVuY3Rpb25FeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCks
IG5hbWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9k
eVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGJhc2UgPSBwYXJz
ZVByaW1hcnlFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIApAQCAtMTUyOSw3ICsxNTQ4LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgIGludCBpbml0aWFsQXNzaWdubWVu
dHMgPSBtX2Fzc2lnbm1lbnRDb3VudDsKICAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIHByb3Bl
cnR5ID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICAgICAgZmFpbElmRmFsc2Uo
cHJvcGVydHkpOwotICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlQnJhY2tldEFjY2Vz
cyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBwcm9wZXJ0eSwgaW5pdGlhbEFzc2ln
bm1lbnRzICE9IG1fYXNzaWdubWVudENvdW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25F
bmQsIHRva2VuRW5kKCkpOworICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlQnJhY2tl
dEFjY2VzcyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBiYXNlLCBw
cm9wZXJ0eSwgaW5pdGlhbEFzc2lnbm1lbnRzICE9IG1fYXNzaWdubWVudENvdW50LCBleHByZXNz
aW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kKCkpOwogICAgICAgICAgICAgY29uc3Vt
ZU9yRmFpbChDTE9TRUJSQUNLRVQpOwogICAgICAgICAgICAgbV9ub25MSFNDb3VudCA9IG5vbkxI
U0NvdW50OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTQyLDEyICsxNTYxLDEyIEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICAgICAgaW50IGV4cHJFbmQgPSBsYXN0VG9r
ZW5FbmQoKTsKICAgICAgICAgICAgICAgICBUcmVlQXJndW1lbnRzIGFyZ3VtZW50cyA9IHBhcnNl
QXJndW1lbnRzKGNvbnRleHQpOwogICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGFyZ3VtZW50
cyk7Ci0gICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3RXhwcihtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBhcmd1bWVudHMsIHN0YXJ0LCBleHByRW5kLCBsYXN0
VG9rZW5FbmQoKSk7ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5j
cmVhdGVOZXdFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGJh
c2UsIGFyZ3VtZW50cywgc3RhcnQsIGV4cHJFbmQsIGxhc3RUb2tlbkVuZCgpKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaW50IGV4cHJlc3Npb25FbmQgPSBsYXN0VG9r
ZW5FbmQoKTsKICAgICAgICAgICAgICAgICBUcmVlQXJndW1lbnRzIGFyZ3VtZW50cyA9IHBhcnNl
QXJndW1lbnRzKGNvbnRleHQpOwogICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGFyZ3VtZW50
cyk7Ci0gICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQubWFrZUZ1bmN0aW9uQ2FsbE5vZGUo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgYmFzZSwgYXJndW1lbnRzLCBleHByZXNzaW9uU3Rh
cnQsIGV4cHJlc3Npb25FbmQsIGxhc3RUb2tlbkVuZCgpKTsKKyAgICAgICAgICAgICAgICBiYXNl
ID0gY29udGV4dC5tYWtlRnVuY3Rpb25DYWxsTm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCB0b2tlbkNvbHVtbigpLCBiYXNlLCBhcmd1bWVudHMsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVz
c2lvbkVuZCwgbGFzdFRva2VuRW5kKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9u
b25MSFNDb3VudCA9IG5vbkxIU0NvdW50OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTU3LDcg
KzE1NzYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgaW50IGV4cHJl
c3Npb25FbmQgPSBsYXN0VG9rZW5FbmQoKTsKICAgICAgICAgICAgIG5leHRFeHBlY3RJZGVudGlm
aWVyKExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzIHwgVHJlZUJ1aWxkZXI6OkRvbnRCdWls
ZEtleXdvcmRzKTsKICAgICAgICAgICAgIG1hdGNoT3JGYWlsKElERU5UKTsKLSAgICAgICAgICAg
IGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2VzcyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCBiYXNlLCBtX3Rva2VuLm1fZGF0YS5pZGVudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9u
RW5kLCB0b2tlbkVuZCgpKTsKKyAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFj
Y2VzcyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBiYXNlLCBtX3Rv
a2VuLm1fZGF0YS5pZGVudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVu
ZCgpKTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CkBAIC0xNTY3LDcgKzE1ODYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgIH0KIGVu
ZE1lbWJlckV4cHJlc3Npb246CiAgICAgd2hpbGUgKG5ld0NvdW50LS0pCi0gICAgICAgIGJhc2Ug
PSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgYmFzZSwg
c3RhcnQsIGxhc3RUb2tlbkVuZCgpKTsKKyAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3
RXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBiYXNlLCBzdGFy
dCwgbGFzdFRva2VuRW5kKCkpOwogICAgIHJldHVybiBiYXNlOwogfQogCkBAIC0xNjAwLDcgKzE2
MTksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgICAgIG1fbm9uTEhTQ291bnQrKzsKLSAgICAgICAgY29udGV4dC5hcHBlbmRVbmFyeVRv
a2VuKHRva2VuU3RhY2tEZXB0aCwgbV90b2tlbi5tX3R5cGUsIHRva2VuU3RhcnQoKSk7CisgICAg
ICAgIGNvbnRleHQuYXBwZW5kVW5hcnlUb2tlbih0b2tlblN0YWNrRGVwdGgsIG1fdG9rZW4ubV90
eXBlLCB0b2tlbkNvbHVtbigpKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBtX25vblRyaXZp
YWxFeHByZXNzaW9uQ291bnQrKzsKICAgICB9CkBAIC0xNjE3LDcgKzE2MzYsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVVuYXJ5RXhwcmVzcwogICAgIGNhc2UgUExVU1BMVVM6CiAgICAgICAgIG1fbm9uVHJpdmlh
bEV4cHJlc3Npb25Db3VudCsrOwogICAgICAgICBtX25vbkxIU0NvdW50Kys7Ci0gICAgICAgIGV4
cHIgPSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBl
eHByLCBPcFBsdXNQbHVzLCBzdWJFeHByU3RhcnQsIGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgp
KTsKKyAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGV4cHIsIE9wUGx1c1BsdXMsIHN1YkV4cHJTdGFy
dCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOwogICAgICAgICBtX2Fzc2lnbm1lbnRDb3Vu
dCsrOwogICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3RXaXRoTmFtZUFuZE1lc3NhZ2UoaXNFdmFs
T3JBcmd1bWVudHMsICInIiwgbV9sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAiJyBjYW5ub3QgYmUg
bW9kaWZpZWQgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KHJl
cXVpcmVzTEV4cHIpOwpAQCAtMTYyNiw3ICsxNjQ1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJl
c3MKICAgICBjYXNlIE1JTlVTTUlOVVM6CiAgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25D
b3VudCsrOwogICAgICAgICBtX25vbkxIU0NvdW50Kys7Ci0gICAgICAgIGV4cHIgPSBjb250ZXh0
Lm1ha2VQb3N0Zml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBPcE1pbnVz
TWludXMsIHN1YkV4cHJTdGFydCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOworICAgICAg
ICBleHByID0gY29udGV4dC5tYWtlUG9zdGZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgdG9rZW5Db2x1bW4oKSwgZXhwciwgT3BNaW51c01pbnVzLCBzdWJFeHByU3RhcnQsIGxhc3RU
b2tlbkVuZCgpLCB0b2tlbkVuZCgpKTsKICAgICAgICAgbV9hc3NpZ25tZW50Q291bnQrKzsKICAg
ICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0V2l0aE5hbWVBbmRNZXNzYWdlKGlzRXZhbE9yQXJndW1l
bnRzLCAiJyIsIG1fbGFzdElkZW50aWZpZXItPmltcGwoKSwgIicgY2Fubm90IGJlIG1vZGlmaWVk
IGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChyZXF1aXJlc0xF
eHByKTsKQEAgLTE2NDQsMzYgKzE2NjMsMzYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAg
ICB3aGlsZSAodG9rZW5TdGFja0RlcHRoKSB7CiAgICAgICAgIHN3aXRjaCAoY29udGV4dC51bmFy
eVRva2VuU3RhY2tMYXN0VHlwZSh0b2tlblN0YWNrRGVwdGgpKSB7CiAgICAgICAgIGNhc2UgRVhD
TEFNQVRJT046Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVMb2dpY2FsTm90KG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIpOworICAgICAgICAgICAgZXhwciA9IGNvbnRl
eHQuY3JlYXRlTG9naWNhbE5vdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVt
bigpLCBleHByKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRJTERFOgotICAg
ICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZUJpdHdpc2VOb3ROb2RlKG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIGV4cHIpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZUJpdHdp
c2VOb3ROb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGV4cHIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTUlOVVM6Ci0gICAgICAgICAgICBl
eHByID0gY29udGV4dC5tYWtlTmVnYXRlTm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBl
eHByKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VOZWdhdGVOb2RlKG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGV4cHIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgUExVUzoKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0
ZVVuYXJ5UGx1cyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByKTsKKyAgICAgICAgICAg
IGV4cHIgPSBjb250ZXh0LmNyZWF0ZVVuYXJ5UGx1cyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCB0b2tlbkNvbHVtbigpLCBleHByKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFBMVVNQTFVTOgogICAgICAgICBjYXNlIEFVVE9QTFVTUExVUzoKLSAgICAgICAgICAgIGV4cHIg
PSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIs
IE9wUGx1c1BsdXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tE
ZXB0aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CisgICAgICAgICAgICBleHByID0gY29udGV4
dC5tYWtlUHJlZml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigp
LCBleHByLCBPcFBsdXNQbHVzLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tl
blN0YWNrRGVwdGgpLCBzdWJFeHByU3RhcnQgKyAxLCBlbmQpOwogICAgICAgICAgICAgbV9hc3Np
Z25tZW50Q291bnQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1JTlVTTUlO
VVM6CiAgICAgICAgIGNhc2UgQVVUT01JTlVTTUlOVVM6Ci0gICAgICAgICAgICBleHByID0gY29u
dGV4dC5tYWtlUHJlZml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBPcE1p
bnVzTWludXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0
aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5t
YWtlUHJlZml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBl
eHByLCBPcE1pbnVzTWludXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2Vu
U3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CiAgICAgICAgICAgICBtX2Fzc2ln
bm1lbnRDb3VudCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVFlQRU9GOgot
ICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVR5cGVPZk5vZGUobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgZXhwcik7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlVHlwZU9m
Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBleHByKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZPSURUT0tFTjoKLSAgICAgICAgICAgIGV4
cHIgPSBjb250ZXh0LmNyZWF0ZVZvaWQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7
CisgICAgICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVWb2lkKG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgREVMRVRFVE9LRU46CiAgICAgICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3RXaXRo
TmFtZUFuZE1lc3NhZ2UoY29udGV4dC5pc1Jlc29sdmUoZXhwciksICJDYW5ub3QgZGVsZXRlIHVu
cXVhbGlmaWVkIHByb3BlcnR5IiwgbV9sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAiaW4gc3RyaWN0
IG1vZGUiKTsKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VEZWxldGVOb2RlKG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0
YXJ0KHRva2VuU3RhY2tEZXB0aCksIGVuZCwgZW5kKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250
ZXh0Lm1ha2VEZWxldGVOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1u
KCksIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0
aCksIGVuZCwgZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgc29tZXRoaW5nIGhhcyBnb25lIGhvcnJpYmx5IGhv
cnJpYmx5IHdyb25nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBjMmEx
MWQ2NjViNzkxM2VjNWY2NDMxYzA2MzZjMWE4YTZkZDZhMDE2Li44ZTZjMTBiODU1NzdkZjBiNzBj
NmI4YWM3NDI4NWQ3MGE2OGU1MzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKQEAgLTU1NCw3ICs1NTQsMTIgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1fdG9rZW4u
bV9pbmZvLmVuZE9mZnNldDsKICAgICB9CiAgICAgCi0gICAgY29uc3QgY2hhciogZ2V0VG9rZW5O
YW1lKEpTVG9rZW5UeXBlIHRvaykgCisgICAgQUxXQVlTX0lOTElORSBpbnQgdG9rZW5Db2x1bW4o
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9pbmZvLmNvbHVtbjsKKyAgICB9CisK
KyAgICBjb25zdCBjaGFyKiBnZXRUb2tlbk5hbWUoSlNUb2tlblR5cGUgdG9rKQogICAgIHsKICAg
ICAgICAgc3dpdGNoICh0b2spIHsKICAgICAgICAgY2FzZSBOVUxMVE9LRU46IApAQCAtMTAwNSw2
ICsxMDEwLDcgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2UoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmoKICAgICBpZiAobV9zb3VyY2VFbGVt
ZW50cykgewogICAgICAgICByZXN1bHQgPSBQYXJzZWROb2RlOjpjcmVhdGUoJmxleGljYWxHbG9i
YWxPYmplY3QtPmdsb2JhbERhdGEoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2xleGVyLT5jdXJyZW50Q29sdW1uTnVtYmVyKCksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX3NvdXJjZUVsZW1lbnRzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV92YXJEZWNsYXJhdGlvbnMgPyAmbV92YXJEZWNsYXJhdGlv
bnMtPmRhdGEgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mdW5j
RGVjbGFyYXRpb25zID8gJm1fZnVuY0RlY2xhcmF0aW9ucy0+ZGF0YSA6IDAsCkBAIC0xMDEyLDcg
KzEwMTgsNyBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iagogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKm1fc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9mZWF0dXJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
bnVtQ29uc3RhbnRzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2MobV9zb3VyY2UtPmZpcnN0TGlu
ZSgpLCBtX2xhc3RMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2MobV9zb3VyY2UtPmZpcnN0
TGluZSgpLCBtX2xhc3RMaW5lLCBtX2xleGVyLT5jdXJyZW50Q29sdW1uTnVtYmVyKCkpOwogICAg
IH0gZWxzZSBpZiAobGV4aWNhbEdsb2JhbE9iamVjdCkgewogICAgICAgICAvLyBXZSBjYW4gbmV2
ZXIgc2VlIGEgc3ludGF4IGVycm9yIHdoZW4gcmVwYXJzaW5nIGEgZnVuY3Rpb24sIHNpbmNlIHdl
IHNob3VsZCBoYXZlCiAgICAgICAgIC8vIHJlcG9ydGVkIHRoZSBlcnJvciB3aGVuIHBhcnNpbmcg
dGhlIGNvbnRhaW5pbmcgcHJvZ3JhbSBvciBldmFsIGNvZGUuIFNvIGlmIHdlJ3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAppbmRleCBhMWVhNzUxYWMyMGE3
OTJmZjRjNWU2MjFhMDFiYzc3NDllYTNhOWJmLi42M2IzZmI4MWU5ZDM0NzBhMzQ3ZWIyMzZkMzkw
ZDMxYjI1ZjBjNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9r
ZW5zLmgKQEAgLTE0MSwxMCArMTQxLDExIEBAIHVuaW9uIEpTVG9rZW5EYXRhIHsKIH07CiAKIHN0
cnVjdCBKU1Rva2VuSW5mbyB7Ci0gICAgSlNUb2tlbkluZm8oKSA6IGxpbmUoMCkgeyB9CisgICAg
SlNUb2tlbkluZm8oKSA6IGxpbmUoMCksIGNvbHVtbigwKSB7IH0KICAgICBpbnQgbGluZTsKICAg
ICBpbnQgc3RhcnRPZmZzZXQ7CiAgICAgaW50IGVuZE9mZnNldDsKKyAgICBpbnQgY29sdW1uOwog
fTsKIAogc3RydWN0IEpTVG9rZW4gewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5
bnRheENoZWNrZXIuaAppbmRleCBjMmM5Mzc1NmRlMDNhYmNhMjk1ZGUxM2FjOGVlMTM4MWM3ZDQw
YzQ4Li5jMzNiYTA2Y2M0MGE0MGZlYmVmMDg5M2Y1NGM5MTllMGU3YzhhM2UwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtMTE5LDQyICsxMTks
NDIgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBEb250QnVpbGRTdHJpbmdz
ID0gTGV4ZXJGbGFnc0RvbnRCdWlsZFN0cmluZ3M7CiAKICAgICBpbnQgY3JlYXRlU291cmNlRWxl
bWVudHMoKSB7IHJldHVybiAxOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZUZ1bmN0aW9uQ2Fs
bE5vZGUoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQ2FsbEV4cHI7IH0K
KyAgICBFeHByZXNzaW9uVHlwZSBtYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIENhbGxFeHByOyB9CiAgICAgdm9pZCBhcHBlbmRU
b0NvbW1hKEV4cHJlc3Npb25UeXBlJiBiYXNlLCBFeHByZXNzaW9uVHlwZSByaWdodCkgeyBiYXNl
ID0gcmlnaHQ7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVDb21tYUV4cHIoaW50LCBFeHBy
ZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUgcmlnaHQpIHsgcmV0dXJuIHJpZ2h0OyB9Ci0gICAg
RXhwcmVzc2lvblR5cGUgbWFrZUFzc2lnbk5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0
b3IsIEV4cHJlc3Npb25UeXBlLCBib29sLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBB
c3NpZ25tZW50RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQcmVmaXhOb2RlKGludCwg
RXhwcmVzc2lvblR5cGUsIE9wZXJhdG9yLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQcmVFeHBy
OyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZVBvc3RmaXhOb2RlKGludCwgRXhwcmVzc2lvblR5
cGUsIE9wZXJhdG9yLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQb3N0RXhwcjsgfQotICAgIEV4
cHJlc3Npb25UeXBlIG1ha2VUeXBlT2ZOb2RlKGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJu
IFR5cGVvZkV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlRGVsZXRlTm9kZShpbnQsIEV4
cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEZWxldGVFeHByOyB9Ci0gICAg
RXhwcmVzc2lvblR5cGUgbWFrZU5lZ2F0ZU5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1
cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZUJpdHdpc2VOb3ROb2RlKGlu
dCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQotICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZUxvZ2ljYWxOb3QoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlF
eHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlVW5hcnlQbHVzKGludCwgRXhwcmVzc2lv
blR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVZv
aWQoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVz
c2lvblR5cGUgdGhpc0V4cHIoaW50KSB7IHJldHVybiBUaGlzRXhwcjsgfQotICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZVJlc29sdmUoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVy
biBSZXNvbHZlRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVjdExpdGVyYWwo
aW50KSB7IHJldHVybiBPYmplY3RMaXRlcmFsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUNvbW1hRXhwcihpbnQsIGludCwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlIHJp
Z2h0KSB7IHJldHVybiByaWdodDsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VBc3NpZ25Ob2Rl
KGludCwgaW50LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIEV4cHJlc3Npb25UeXBlLCBib29s
LCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQorICAgIEV4
cHJlc3Npb25UeXBlIG1ha2VQcmVmaXhOb2RlKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSwgT3Bl
cmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFByZUV4cHI7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBtYWtlUG9zdGZpeE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gUG9zdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBt
YWtlVHlwZU9mTm9kZShpbnQsIGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFR5cGVvZkV4
cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlRGVsZXRlTm9kZShpbnQsIGludCwgRXhwcmVz
c2lvblR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERlbGV0ZUV4cHI7IH0KKyAgICBFeHBy
ZXNzaW9uVHlwZSBtYWtlTmVnYXRlTm9kZShpbnQsIGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0
dXJuIFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VCaXR3aXNlTm90Tm9kZShp
bnQsIGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQorICAgIEV4cHJl
c3Npb25UeXBlIGNyZWF0ZUxvZ2ljYWxOb3QoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJl
dHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVVbmFyeVBsdXMoaW50
LCBpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVWb2lkKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5h
cnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgdGhpc0V4cHIoaW50LCBpbnQpIHsgcmV0dXJu
IFRoaXNFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVzb2x2ZShpbnQsIGludCwg
Y29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gUmVzb2x2ZUV4cHI7IH0KICAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVPYmplY3RMaXRlcmFsKGludCwgaW50KSB7IHJldHVybiBPYmplY3RM
aXRlcmFsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5KGludCwgaW50KSB7
IHJldHVybiBBcnJheUxpdGVyYWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlT2Jq
ZWN0TGl0ZXJhbChpbnQsIGludCwgaW50KSB7IHJldHVybiBPYmplY3RMaXRlcmFsRXhwcjsgfQog
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFy
cmF5TGl0ZXJhbEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdW1iZXJFeHByKGlu
dCwgZG91YmxlKSB7IHJldHVybiBOdW1iZXJFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlU3RyaW5nKGludCwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIFN0cmluZ0V4cHI7IH0K
LSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGludCwgYm9vbCkgeyByZXR1cm4gQm9v
bEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGludCkgeyByZXR1cm4gTnVs
bEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKGludCwgRXhw
cmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVy
biBCcmFja2V0RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2VzcyhpbnQs
IEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gRG90RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChpbnQsIGNvbnN0
IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImLCBpbnQpIHsgcmV0dXJuIFlh
cnI6OmNoZWNrU3ludGF4KHBhdHRlcm4udXN0cmluZygpKSA/IDAgOiBSZWdFeHBFeHByOyB9Ci0g
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihpbnQsIEV4cHJlc3Npb25UeXBlLCBpbnQs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVOZXdFeHByKGludCwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50KSB7IHJldHVybiBOZXdF
eHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29uZGl0aW9uYWxFeHByKGludCwgRXhw
cmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gQ29u
ZGl0aW9uYWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXNzaWduUmVzb2x2ZShp
bnQsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVG
dW5jdGlvbkV4cHIoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9u
Qm9keShpbnQsIGJvb2wpIHsgcmV0dXJuIDE7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVB
cnJheShpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KKyAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdW1iZXJFeHByKGludCwgaW50LCBkb3VibGUpIHsgcmV0
dXJuIE51bWJlckV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVTdHJpbmcoaW50LCBp
bnQsIGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVybiBTdHJpbmdFeHByOyB9CisgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlQm9vbGVhbihpbnQsIGludCwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7
IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGludCwgaW50KSB7IHJldHVybiBOdWxs
RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoaW50LCBpbnQs
IEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyBy
ZXR1cm4gQnJhY2tldEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nlc3Mo
aW50LCBpbnQsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gRG90RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChp
bnQsIGludCwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYsIGlu
dCkgeyByZXR1cm4gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi51c3RyaW5nKCkpID8gMCA6IFJl
Z0V4cEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGludCwgaW50LCBF
eHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9Cisg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihpbnQsIGludCwgRXhwcmVzc2lvblR5cGUs
IGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
Q29uZGl0aW9uYWxFeHByKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUs
IEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBDb25kaXRpb25hbEV4cHI7IH0KKyAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVBc3NpZ25SZXNvbHZlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiwg
RXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRF
eHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGludCwgaW50LCBj
b25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
RnVuY3Rpb25FeHByOyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uQm9keShpbnQsIGludCwgYm9v
bCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiAxOyB9
CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cyhpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3Jl
YXRlQXJndW1lbnRzTGlzdChpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVB
cmd1bWVudHNMaXN0KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRl
QXJndW1lbnRzTGlzdChpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICB0ZW1w
bGF0ZSA8Ym9vbCBjb21wbGV0ZT4gUHJvcGVydHkgY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRp
ZmllciogbmFtZSwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSkKICAgICB7CiAgICAgICAg
IGlmICghY29tcGxldGUpCkBAIC0xNjgsOCArMTY4LDggQEAgcHVibGljOgogICAgICAgICAgICAg
cmV0dXJuIFByb3BlcnR5KHR5cGUpOwogICAgICAgICByZXR1cm4gUHJvcGVydHkoJmdsb2JhbERh
dGEtPnBhcnNlckFyZW5hLT5pZGVudGlmaWVyQXJlbmEoKS5tYWtlTnVtZXJpY0lkZW50aWZpZXIo
Z2xvYmFsRGF0YSwgbmFtZSksIHR5cGUpOwogICAgIH0KLSAgICBpbnQgY3JlYXRlUHJvcGVydHlM
aXN0KGludCwgUHJvcGVydHkpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlUHJvcGVydHlM
aXN0KGludCwgUHJvcGVydHksIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVQcm9w
ZXJ0eUxpc3QoaW50LCBpbnQsIFByb3BlcnR5KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0
ZVByb3BlcnR5TGlzdChpbnQsIGludCwgUHJvcGVydHksIGludCkgeyByZXR1cm4gMTsgfQogICAg
IGludCBjcmVhdGVFbGVtZW50TGlzdChpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBj
cmVhdGVFbGVtZW50TGlzdChpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNy
ZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIDE7IH0K
QEAgLTE3Nyw0MCArMTc3LDQwIEBAIHB1YmxpYzoKICAgICBpbnQgY3JlYXRlQ2xhdXNlKGludCwg
aW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUNsYXVzZUxpc3QoaW50KSB7IHJldHVy
biAxOyB9CiAgICAgaW50IGNyZWF0ZUNsYXVzZUxpc3QoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0K
LSAgICB2b2lkIHNldFVzZXNBcmd1bWVudHMoaW50KSB7IH0KLSAgICBpbnQgY3JlYXRlRnVuY0Rl
Y2xTdGF0ZW1lbnQoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCbG9ja1N0YXRlbWVudChpbnQs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRXhwclN0YXRlbWVu
dChpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlSWZTdGF0
ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICB2b2lkIHNl
dFVzZXNBcmd1bWVudHMoaW50LCBpbnQpIHsgfQorICAgIGludCBjcmVhdGVGdW5jRGVjbFN0YXRl
bWVudChpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQmxvY2tTdGF0ZW1lbnQoaW50LCBp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRXhwclN0YXRl
bWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVh
dGVJZlN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9
Ci0gICAgaW50IGNyZWF0ZUZvckxvb3AoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGJvb2wsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUZvckluTG9vcChpbnQsIGNvbnN0
IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRm9ySW5Mb29wKGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQg
Y3JlYXRlRW1wdHlTdGF0ZW1lbnQoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVZh
clN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3Jl
YXRlUmV0dXJuU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICBpbnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50LCBjb25z
dCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50
IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9Ci0gICAgaW50IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGludCwgY29uc3QgSWRlbnRp
ZmllciosIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVU
cnlTdGF0ZW1lbnQoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlU3dpdGNoU3RhdGVtZW50KGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVX
aGlsZVN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAg
IGludCBjcmVhdGVXaXRoU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGludCwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUxhYmVsU3RhdGVt
ZW50KGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0K
LSAgICBpbnQgY3JlYXRlVGhyb3dTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVEZWJ1Z2dlcihpbnQsIGludCwgaW50KSB7
IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUNvbnN0U3RhdGVtZW50KGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBhcHBlbmRDb25zdERlY2woaW50LCBpbnQsIGNv
bnN0IElkZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBz
dHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoaW50LCBQcm9wZXJ0
eU5vZGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCkKKyAgICBpbnQgY3JlYXRlSWZTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUZvckxvb3Ao
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgYm9vbCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KKyAgICBpbnQgY3JlYXRlRm9ySW5Mb29wKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9CisgICAgaW50IGNyZWF0ZUZvckluTG9vcChpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRW1w
dHlTdGF0ZW1lbnQoaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlVmFyU3Rh
dGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNy
ZWF0ZVJldHVyblN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVu
dChpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gMTsgfQorICAgIGludCBjcmVhdGVDb250aW51ZVN0YXRlbWVudChpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUNvbnRpbnVlU3RhdGVt
ZW50KGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVRyeVN0YXRlbWVudChpbnQsIGludCwgaW50LCBjb25z
dCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50
IGNyZWF0ZVN3aXRjaFN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVXaGlsZVN0YXRlbWVudChpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVdpdGhT
dGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KKyAgICBpbnQgY3JlYXRlRG9XaGlsZVN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUxhYmVsU3RhdGVtZW50KGlu
dCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQor
ICAgIGludCBjcmVhdGVUaHJvd1N0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRGVidWdnZXIoaW50LCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUNvbnN0U3RhdGVtZW50KGludCwg
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGFwcGVuZENvbnN0RGVj
bChpbnQsIGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiAxOyB9Cisg
ICAgdGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclBy
b3BlcnR5KGludCwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmll
ciogbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChuYW1lKTsKICAgICAgICAgaWYgKCFzdHJpY3QpCiAgICAgICAgICAgICByZXR1cm4gUHJv
cGVydHkodHlwZSk7CiAgICAgICAgIHJldHVybiBQcm9wZXJ0eShuYW1lLCB0eXBlKTsKICAgICB9
Ci0gICAgdGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRl
clByb3BlcnR5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5
cGUgdHlwZSwgZG91YmxlIG5hbWUsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpCisgICAg
dGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3Bl
cnR5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50LCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlw
ZSB0eXBlLCBkb3VibGUgbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkKICAgICB7
CiAgICAgICAgIGlmICghc3RyaWN0KQogICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUp
OwpAQCAtMjE5LDcgKzIxOSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kU3RhdGVtZW50
KGludCwgaW50KSB7IH0KICAgICB2b2lkIGFkZFZhcihjb25zdCBJZGVudGlmaWVyKiwgYm9vbCkg
eyB9Ci0gICAgaW50IGNvbWJpbmVDb21tYU5vZGVzKGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KKyAgICBpbnQgY29tYmluZUNvbW1hTm9kZXMoaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9CiAgICAgaW50IGV2YWxDb3VudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICB2b2lk
IGFwcGVuZEJpbmFyeUV4cHJlc3Npb25JbmZvKGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCBl
eHByLCBpbnQsIGludCwgaW50LCBib29sKQogICAgIHsKQEAgLTIzNSw3ICsyMzUsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBvcGVyYXRvclN0YWNrSGFzSGlnaGVyUHJlY2VkZW5jZShpbnQmLCBpbnQp
IHsgcmV0dXJuIHRydWU7IH0KICAgICBCaW5hcnlPcGVyYW5kIGdldEZyb21PcGVyYW5kU3RhY2so
aW50KSB7IHJldHVybiBtX3RvcEJpbmFyeUV4cHI7IH0KICAgICB2b2lkIHNocmlua09wZXJhbmRT
dGFja0J5KGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCBhbW91bnQpIHsgb3BlcmFuZFN0YWNr
RGVwdGggLT0gYW1vdW50OyB9Ci0gICAgdm9pZCBhcHBlbmRCaW5hcnlPcGVyYXRpb24oaW50LCBp
bnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQmLCBCaW5hcnlPcGVyYW5kLCBCaW5hcnlPcGVyYW5k
KSB7IG9wZXJhbmRTdGFja0RlcHRoKys7IH0KKyAgICB2b2lkIGFwcGVuZEJpbmFyeU9wZXJhdGlv
bihpbnQsIGludCwgaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50JiwgQmluYXJ5T3BlcmFuZCwg
QmluYXJ5T3BlcmFuZCkgeyBvcGVyYW5kU3RhY2tEZXB0aCsrOyB9CiAgICAgdm9pZCBvcGVyYXRv
clN0YWNrQXBwZW5kKGludCYgb3BlcmF0b3JTdGFja0RlcHRoLCBpbnQsIGludCkgeyBvcGVyYXRv
clN0YWNrRGVwdGgrKzsgfQogICAgIGludCBwb3BPcGVyYW5kU3RhY2soaW50JikgeyBpbnQgcmVz
ID0gbV90b3BCaW5hcnlFeHByOyBtX3RvcEJpbmFyeUV4cHIgPSAwOyByZXR1cm4gcmVzOyB9CiAg
ICAgCkBAIC0yNDUsNyArMjQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5hcnlUb2tlblN0YWNr
UmVtb3ZlTGFzdChpbnQmIHN0YWNrRGVwdGgpIHsgc3RhY2tEZXB0aCA9IDA7IH0KICAgICAKICAg
ICB2b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQsIGludCwgaW50LCBpbnQsIGludCwgT3Bl
cmF0b3IpIHsgfQotICAgIGludCBjcmVhdGVBc3NpZ25tZW50KGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAxOyB9CisgICAgaW50IGNy
ZWF0ZUFzc2lnbm1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gMTsgfQogICAgIGNvbnN0IElkZW50aWZpZXImIGdldE5h
bWUoY29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7IEFTU0VSVChwcm9wZXJ0eS5uYW1l
KTsgcmV0dXJuICpwcm9wZXJ0eS5uYW1lOyB9CiAgICAgUHJvcGVydHlOb2RlOjpUeXBlIGdldFR5
cGUoY29uc3QgUHJvcGVydHkmIHByb3BlcnR5KSBjb25zdCB7IHJldHVybiBwcm9wZXJ0eS50eXBl
OyB9CiAgICAgYm9vbCBpc1Jlc29sdmUoRXhwcmVzc2lvblR5cGUgZXhwcikgY29uc3QgeyByZXR1
cm4gZXhwciA9PSBSZXNvbHZlRXhwciB8fCBleHByID09IFJlc29sdmVFdmFsRXhwcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4
IGYyMjI3Yzc0NWNjOGEwMWJkMzhlYThmNGQwYWJjNzUzOTNhYTAzOTguLmQzYTkyYTdjNDc1Nzcz
NTFlZGIwYzA2ZmUyMTM4YjZjMzU5MDMxYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTc1LDIwICs3NSwyOCBAQCBTdHJpbmcg
U2NyaXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwg
Y29uc3QgU2NyaXB0QnJlYQogICAgIFNvdXJjZUlkVG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3Ig
aXQgPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5maW5kKHNvdXJjZUlEVmFsdWUpOwogICAgIGlm
IChpdCA9PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKICAgICAgICAgaXQgPSBtX3Nv
dXJjZUlkVG9CcmVha3BvaW50cy5zZXQoc291cmNlSURWYWx1ZSwgTGluZVRvQnJlYWtwb2ludE1h
cCgpKS5pdGVyYXRvcjsKLSAgICBpZiAoaXQtPnNlY29uZC5jb250YWlucyhzY3JpcHRCcmVha3Bv
aW50LmxpbmVOdW1iZXIgKyAxKSkKLSAgICAgICAgcmV0dXJuICIiOwotICAgIGl0LT5zZWNvbmQu
c2V0KHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEsIHNjcmlwdEJyZWFrcG9pbnQpOwor
ICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6Oml0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5m
aW5kKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEpOworICAgIGlmIChicmVha3NJdCA9
PSBpdC0+c2Vjb25kLmVuZCgpKQorICAgICAgICBicmVha3NJdCA9IGl0LT5zZWNvbmQuc2V0KHNj
cmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEsIEJyZWFrcG9pbnRzSW5MaW5lKCkpLml0ZXJh
dG9yOworCisgICAgQnJlYWtwb2ludHNJbkxpbmUmIGJyZWFrc1ZlY3RvciA9IGJyZWFrc0l0LT5z
ZWNvbmQ7CisgICAgdW5zaWduZWQgYnJlYWtzQ291bnQgPSBicmVha3NWZWN0b3Iuc2l6ZSgpOwor
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBicmVha3NDb3VudDsgaSsrKSB7CisgICAgICAg
IGlmIChicmVha3NWZWN0b3IuYXQoaSkuY29sdW1uTnVtYmVyID09IHNjcmlwdEJyZWFrcG9pbnQu
Y29sdW1uTnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuICIiOworICAgIH0KKyAgICBicmVha3NW
ZWN0b3IuYXBwZW5kKHNjcmlwdEJyZWFrcG9pbnQpOworCiAgICAgKmFjdHVhbExpbmVOdW1iZXIg
PSBzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXI7Ci0gICAgLy8gRklYTUUoV0s1MzAwMyk6IGlt
cGxlbWVudCBzZXR0aW5nIGJyZWFrcG9pbnRzIGJ5IGxpbmU6Y29sdW1uLgotICAgICphY3R1YWxD
b2x1bW5OdW1iZXIgPSAwOwotICAgIHJldHVybiBzb3VyY2VJRCArICI6IiArIFN0cmluZzo6bnVt
YmVyKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcik7CisgICAgKmFjdHVhbENvbHVtbk51bWJl
ciA9IHNjcmlwdEJyZWFrcG9pbnQuY29sdW1uTnVtYmVyOworICAgIHJldHVybiBzb3VyY2VJRCAr
ICI6IiArIFN0cmluZzo6bnVtYmVyKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcikgKyAiOiIg
KyBTdHJpbmc6Om51bWJlcihzY3JpcHRCcmVha3BvaW50LmNvbHVtbk51bWJlcik7CiB9CiAKIHZv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVh
a3BvaW50SWQpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gdG9rZW5zOwogICAgIGJyZWFrcG9pbnRJ
ZC5zcGxpdCgiOiIsIHRva2Vucyk7Ci0gICAgaWYgKHRva2Vucy5zaXplKCkgIT0gMikKKyAgICBp
ZiAodG9rZW5zLnNpemUoKSAhPSAzKQogICAgICAgICByZXR1cm47CiAgICAgYm9vbCBzdWNjZXNz
OwogICAgIGludHB0cl90IHNvdXJjZUlEVmFsdWUgPSB0b2tlbnNbMF0udG9JbnRQdHIoJnN1Y2Nl
c3MpOwpAQCAtOTcsOSArMTA1LDYzIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJy
ZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQpCiAgICAgdW5zaWduZWQgbGluZU51
bWJlciA9IHRva2Vuc1sxXS50b1VJbnQoJnN1Y2Nlc3MpOwogICAgIGlmICghc3VjY2VzcykKICAg
ICAgICAgcmV0dXJuOworICAgIHVuc2lnbmVkIGNvbHVtbk51bWJlciA9IHRva2Vuc1syXS50b1VJ
bnQoJnN1Y2Nlc3MpOworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgcmV0dXJuOworCiAgICAg
U291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBpdCA9IG1fc291cmNlSWRUb0JyZWFr
cG9pbnRzLmZpbmQoc291cmNlSURWYWx1ZSk7Ci0gICAgaWYgKGl0ICE9IG1fc291cmNlSWRUb0Jy
ZWFrcG9pbnRzLmVuZCgpKQotICAgICAgICBpdC0+c2Vjb25kLnJlbW92ZShsaW5lTnVtYmVyICsg
MSk7CisgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQorICAgICAg
ICByZXR1cm47CisgICAgTGluZVRvQnJlYWtwb2ludE1hcDo6aXRlcmF0b3IgYnJlYWtzSXQgPSBp
dC0+c2Vjb25kLmZpbmQobGluZU51bWJlciArIDEpOworICAgIGlmIChicmVha3NJdCA9PSBpdC0+
c2Vjb25kLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBCcmVha3BvaW50c0luTGluZSYg
YnJlYWtzVmVjdG9yID0gYnJlYWtzSXQtPnNlY29uZDsKKyAgICB1bnNpZ25lZCBicmVha3NDb3Vu
dCA9IGJyZWFrc1ZlY3Rvci5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJy
ZWFrc0NvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5O
dW1iZXIgPT0gc3RhdGljX2Nhc3Q8aW50Pihjb2x1bW5OdW1iZXIpKSB7CisgICAgICAgICAgICBi
cmVha3NWZWN0b3IucmVtb3ZlKGkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQ
b3NpdGlvbihpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmUpCit7CisgICAgaWYgKGxpbmUgPCAw
KQorICAgICAgICByZXR1cm47CisKKyAgICBTb3VyY2VQcm92aWRlciogc291cmNlID0gcmVpbnRl
cnByZXRfY2FzdDxTb3VyY2VQcm92aWRlcio+KHNvdXJjZUlEKTsKKworICAgIGlmIChtX2N1cnJl
bnRTb3VyY2VJRCAhPSBzb3VyY2VJRCkgeworICAgICAgICBTdHJpbmcgc291cmNlQ29kZSA9IHVz
dHJpbmdUb1N0cmluZyhKU0M6OlVTdHJpbmcoY29uc3RfY2FzdDxTdHJpbmdJbXBsKj4oc291cmNl
LT5kYXRhKCkpKSk7CisgICAgICAgIG1fY3VycmVudFNvdXJjZUNvZGUuY2xlYXIoKTsKKyAgICAg
ICAgc291cmNlQ29kZS5zcGxpdCgiXG4iLCB0cnVlLCBtX2N1cnJlbnRTb3VyY2VDb2RlKTsKKyAg
ICAgICAgbV9jdXJyZW50U291cmNlSUQgPSBzb3VyY2VJRDsKKyAgICAgICAgbV9jdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24ubGluZU51bWJlciA9IDA7CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVu
dFBvc2l0aW9uLmNvbHVtbk51bWJlciA9IDA7CisgICAgfQorCisgICAgaWYgKGxpbmUgIT0gbV9j
dXJyZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51bWJlcikgeworICAgICAgICBtX2N1cnJlbnRT
dGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyID0gbGluZTsKKyAgICAgICAgbV9jdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGludCBzdGFydExpbmUgPSBzb3VyY2UtPnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUuemVy
b0Jhc2VkSW50KCk7CisgICAgaWYgKChtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVt
YmVyIC0gc3RhcnRMaW5lIC0gMSkgPj0gc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnRTb3VyY2VD
b2RlLnNpemUoKSkpCisgICAgICAgIHJldHVybjsKKyAgICBjb25zdCBTdHJpbmcmIGNvZGVJbkxp
bmUgPSBtX2N1cnJlbnRTb3VyY2VDb2RlW21fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVO
dW1iZXIgLSBzdGFydExpbmUgLSAxXTsKKyAgICBpZiAoY29kZUluTGluZS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpbnQgbmV4dENvbHVtbiA9IGNvZGVJbkxpbmUuZmluZCgiOyIs
IG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmNvbHVtbk51bWJlcik7CisgICAgaWYgKG5leHRD
b2x1bW4gIT0gLTEpIHsKKyAgICAgICAgVUNoYXIgYyA9IGNvZGVJbkxpbmVbbmV4dENvbHVtbiAr
IDFdOworICAgICAgICBpZiAoYyA9PSAnICcgfHwgYyA9PSAnXHQnKQorICAgICAgICAgICAgbmV4
dENvbHVtbiArPSAxOworICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5O
dW1iZXIgPSBuZXh0Q29sdW1uICsgMTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9jdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0gMDsKIH0KIAogYm9vbCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6aGFzQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9u
JiBwb3NpdGlvbikgY29uc3QKQEAgLTExMCwxOSArMTcyLDM3IEBAIGJvb2wgU2NyaXB0RGVidWdT
ZXJ2ZXI6Omhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlv
biYgcG9zCiAgICAgU291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmZpbmQoc291cmNlSUQpOwogICAgIGlmIChpdCA9PSBt
X3NvdXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGludCBsaW5lTnVtYmVyID0gcG9zaXRpb24ubV9saW5lLm9uZUJhc2VkSW50KCk7Ci0gICAgaWYg
KGxpbmVOdW1iZXIgPD0gMCkKKworICAgIGludCBsaW5lTnVtYmVyID0gcG9zaXRpb24ubV9saW5l
Lnplcm9CYXNlZEludCgpOworICAgIGludCBjb2x1bW5OdW1iZXIgPSBwb3NpdGlvbi5tX2NvbHVt
bi56ZXJvQmFzZWRJbnQoKTsKKyAgICBpZiAobGluZU51bWJlciA8IDAgfHwgY29sdW1uTnVtYmVy
IDwgMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTGluZVRvQnJlYWtwb2ludE1hcDo6
Y29uc3RfaXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+c2Vjb25kLmZpbmQobGluZU51bWJlciArIDEp
OworICAgIGlmIChicmVha3NJdCA9PSBpdC0+c2Vjb25kLmVuZCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgTGluZVRvQnJlYWtwb2ludE1hcDo6Y29uc3RfaXRlcmF0b3IgYnJlYWtJdCA9
IGl0LT5zZWNvbmQuZmluZChsaW5lTnVtYmVyKTsKLSAgICBpZiAoYnJlYWtJdCA9PSBpdC0+c2Vj
b25kLmVuZCgpKQorCisgICAgYm9vbCBoaXQgPSBmYWxzZTsKKyAgICBjb25zdCBCcmVha3BvaW50
c0luTGluZSYgYnJlYWtzVmVjdG9yID0gYnJlYWtzSXQtPnNlY29uZDsKKyAgICB1bnNpZ25lZCBi
cmVha3NDb3VudCA9IGJyZWFrc1ZlY3Rvci5zaXplKCk7CisgICAgdW5zaWduZWQgaTsKKyAgICBm
b3IgKGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykgeworICAgICAgICBpbnQgYnJlYWtDb2x1
bW4gPSBicmVha3NWZWN0b3IuYXQoaSkuY29sdW1uTnVtYmVyOworICAgICAgICBpbnQgYnJlYWtM
aW5lID0gYnJlYWtzVmVjdG9yLmF0KGkpLmxpbmVOdW1iZXI7CisgICAgICAgIGlmIChsaW5lTnVt
YmVyID09IGJyZWFrTGluZSAmJiBjb2x1bW5OdW1iZXIgPT0gYnJlYWtDb2x1bW4pIHsKKyAgICAg
ICAgICAgIGhpdCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0K
KyAgICBpZiAoIWhpdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQW4gZW1wdHkg
Y29uZGl0aW9uIGNvdW50cyBhcyBubyBjb25kaXRpb24gd2hpY2ggaXMgZXF1aXZhbGVudCB0byAi
dHJ1ZSIuCi0gICAgaWYgKGJyZWFrSXQtPnNlY29uZC5jb25kaXRpb24uaXNFbXB0eSgpKQorICAg
IGlmIChicmVha3NWZWN0b3IuYXQoaSkuY29uZGl0aW9uLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9
IG1fY3VycmVudENhbGxGcmFtZS0+ZXZhbHVhdGUoc3RyaW5nVG9VU3RyaW5nKGJyZWFrSXQtPnNl
Y29uZC5jb25kaXRpb24pLCBleGNlcHRpb24pOworICAgIEpTVmFsdWUgcmVzdWx0ID0gbV9jdXJy
ZW50Q2FsbEZyYW1lLT5ldmFsdWF0ZShzdHJpbmdUb1VTdHJpbmcoYnJlYWtzVmVjdG9yLmF0KGkp
LmNvbmRpdGlvbiksIGV4Y2VwdGlvbik7CiAgICAgaWYgKGV4Y2VwdGlvbikgewogICAgICAgICAv
LyBBbiBlcnJvbmVvdXMgY29uZGl0aW9uIGNvdW50cyBhcyAiZmFsc2UiLgogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0zNDcsMjAgKzQyNywyMCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpk
aXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoSmF2YVNjcmlwdEV4ZWN1dGlvbkNhbGxiYWNrCiAg
ICAgbV9jYWxsaW5nTGlzdGVuZXJzID0gZmFsc2U7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OmNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIp
Cit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVk
KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291
cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewotICAgIFRleHRQb3Np
dGlvbiB0ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1i
ZXIpLCBPcmRpbmFsTnVtYmVyOjpmaXJzdCgpKTsKKyAgICBUZXh0UG9zaXRpb24gdGV4dFBvc2l0
aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChsaW5lTnVtYmVyKSwgT3JkaW5hbE51
bWJlcjo6ZnJvbVplcm9CYXNlZEludChjb2x1bW5OdW1iZXIpKTsKICAgICBtX2N1cnJlbnRDYWxs
RnJhbWUgPSBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpjcmVhdGUoZGVidWdnZXJDYWxsRnJhbWUsIG1f
Y3VycmVudENhbGxGcmFtZSwgc291cmNlSUQsIHRleHRQb3NpdGlvbik7CiAgICAgcGF1c2VJZk5l
ZWRlZChkZWJ1Z2dlckNhbGxGcmFtZS5keW5hbWljR2xvYmFsT2JqZWN0KCkpOwogfQogCi12b2lk
IFNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbEZyYW1l
QW5kUGF1c2VJZk5lZWRlZChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJh
bWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikK
IHsKICAgICBBU1NFUlQobV9jdXJyZW50Q2FsbEZyYW1lKTsKICAgICBpZiAoIW1fY3VycmVudENh
bGxGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlv
bihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1i
ZXI6OmZpcnN0KCkpOworICAgIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJl
cjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpmcm9tWmVyb0Jh
c2VkSW50KGNvbHVtbk51bWJlcikpOwogICAgIG1fY3VycmVudENhbGxGcmFtZS0+dXBkYXRlKGRl
YnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgdGV4dFBvc2l0aW9uKTsKICAgICBwYXVzZUlmTmVl
ZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CiB9CkBAIC0zOTks
MjQgKzQ3OSwyNCBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpwYXVzZUlmTmVlZGVkKEpTR2xv
YmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KQogICAgIG1fcGF1c2VkID0gZmFsc2U7CiB9
CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxG
cmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJl
cikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxG
cmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAoIW1fcGF1c2VkKQotICAgICAgICBjcmVh
dGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwg
bGluZU51bWJlcik7CisgICAgICAgIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVi
dWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogfQog
Ci12b2lkIFNjcmlwdERlYnVnU2VydmVyOjphdFN0YXRlbWVudChjb25zdCBEZWJ1Z2dlckNhbGxG
cmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJl
cikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmF0U3RhdGVtZW50KGNvbnN0IERlYnVnZ2VyQ2Fs
bEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIGlmICghbV9wYXVzZWQpCi0gICAgICAgIHVw
ZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlE
LCBsaW5lTnVtYmVyKTsKKyAgICAgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChk
ZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiB9
CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KGNvbnN0IERlYnVnZ2VyQ2Fs
bEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVt
YmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmV0dXJuRXZlbnQoY29uc3QgRGVidWdnZXJD
YWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2Fs
bEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1
c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcik7CiAKICAgICAvLyBkZXRhY2ggbWF5IGhhdmUgYmVlbiBjYWxsZWQgZHVyaW5nIHBh
dXNlSWZOZWVkZWQKICAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkKQEAgLTQyOCw3ICs1MDgs
NyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNh
bGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsCiAgICAgbV9jdXJyZW50Q2FsbEZyYW1lID0gbV9j
dXJyZW50Q2FsbEZyYW1lLT5jYWxsZXIoKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
ZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50
cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpCit2b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVn
Z2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIGJvb2wgaGFzSGFuZGxlcikKIHsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAg
IHJldHVybjsKQEAgLTQzNiwyMSArNTE2LDIxIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmV4
Y2VwdGlvbihjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGluCiAg
ICAgaWYgKG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9PSBQYXVzZU9uQWxsRXhjZXB0aW9ucyB8
fCAobV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlID09IFBhdXNlT25VbmNhdWdodEV4Y2VwdGlvbnMg
JiYgIWhhc0hhbmRsZXIpKQogICAgICAgICBtX3BhdXNlT25OZXh0U3RhdGVtZW50ID0gdHJ1ZTsK
IAotICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUs
IHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVl
ZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
KTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6d2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6d2lsbEV4ZWN1dGVQcm9n
cmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qg
c291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIGlmICgh
bV9wYXVzZWQpCi0gICAgICAgIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdn
ZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICAgICAgY3JlYXRlQ2FsbEZy
YW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcik7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZEV4ZWN1
dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50
cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZy
YW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIp
CiB7CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVDYWxs
RnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51
bWJlcik7CisgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxG
cmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAKICAgICAvLyBUcmVh
dCBzdGVwcGluZyBvdmVyIHRoZSBlbmQgb2YgYSBwcm9ncmFtIGxpa2Ugc3RlcHBpbmcgb3V0Lgog
ICAgIGlmIChtX2N1cnJlbnRDYWxsRnJhbWUgPT0gbV9wYXVzZU9uQ2FsbEZyYW1lKQpAQCAtNDU4
LDEzICs1MzgsMTMgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0o
Y29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEYKICAgICBtX2N1cnJlbnRDYWxs
RnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlcigpOwogfQogCi12b2lkIFNjcmlwdERl
YnVnU2VydmVyOjpkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRl
YnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lk
IFNjcmlwdERlYnVnU2VydmVyOjpkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxs
RnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICByZXR1
cm47CiAKICAgICBtX3BhdXNlT25OZXh0U3RhdGVtZW50ID0gdHJ1ZTsKLSAgICB1cGRhdGVDYWxs
RnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51
bWJlcik7CisgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxG
cmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiB9CiAKIHZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCA4NGZiYTVjNjc4
ZmM3MjVkZjI4NjJlZTlmZjNiZTY1MTg0MTIxYWE2Li45ZDhkZGU3NDMwMGFhOGI2ZGMzNzRiZTBk
MGNkZjE4ZTYzZDJhMDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dERlYnVnU2VydmVyLmgKQEAgLTEyMywyMiArMTIzLDI1IEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IGRpc3BhdGNoRGlkUGFyc2VTb3VyY2UoY29uc3QgTGlzdGVuZXJTZXQmIGxpc3RlbmVycywgSlND
OjpTb3VyY2VQcm92aWRlciosIGJvb2wgaXNDb250ZW50U2NyaXB0KTsKICAgICB2b2lkIGRpc3Bh
dGNoRmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzLCBKU0M6
OlNvdXJjZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3Nh
Z2UpOwogCi0gICAgdm9pZCBjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IEpT
Qzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIp
OwotICAgIHZvaWQgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBKU0M6OkRl
YnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKTsKKyAg
ICB2b2lkIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dl
ckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlcik7CisgICAgdm9pZCB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0
IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIpOwogICAgIHZvaWQgcGF1c2VJZk5lZWRlZChKU0M6OkpTR2xv
YmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBkZXRh
Y2goSlNDOjpKU0dsb2JhbE9iamVjdCopOwogCiAgICAgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNl
ZChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5lLCBj
b25zdCBKU0M6OlVTdHJpbmcmIGVycm9yTXNnKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsbEV2ZW50
KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpOwotICAgIHZpcnR1YWwgdm9pZCBhdFN0YXRlbWVudChjb25zdCBKU0M6OkRlYnVn
Z2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBmaXJzdExpbmUpOwotICAgIHZp
cnR1YWwgdm9pZCByZXR1cm5FdmVudChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50
cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhjZXB0
aW9uKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50
IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFuZGxlcik7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxFeGVj
dXRlUHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNl
SUQsIGludCBsaW5lbm8pOwotICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25z
dCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8p
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dl
ckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vKTsKLQotICAgIHR5cGVk
ZWYgSGFzaE1hcDxsb25nLCBTY3JpcHRCcmVha3BvaW50PiBMaW5lVG9CcmVha3BvaW50TWFwOwor
ICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYs
IGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7Cisg
ICAgdmlydHVhbCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUm
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGZpcnN0TGluZSwgaW50IGNvbHVtbk51bWJlcik7Cisg
ICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUm
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOwor
ICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYs
IGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9v
bCBoYXNIYW5kbGVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0
IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubywg
aW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNv
bnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVu
bywgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2lu
dChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBs
aW5lbm8sIGludCBjb2x1bW5OdW1iZXIpOworCisgICAgdm9pZCB1cGRhdGVDdXJyZW50U3RhdGVt
ZW50UG9zaXRpb24oaW50cHRyX3QsIGludCk7CisKKyAgICB0eXBlZGVmIFZlY3RvcjxTY3JpcHRC
cmVha3BvaW50PiBCcmVha3BvaW50c0luTGluZTsKKyAgICB0eXBlZGVmIEhhc2hNYXA8bG9uZywg
QnJlYWtwb2ludHNJbkxpbmU+IExpbmVUb0JyZWFrcG9pbnRNYXA7CiAgICAgdHlwZWRlZiBIYXNo
TWFwPGludHB0cl90LCBMaW5lVG9CcmVha3BvaW50TWFwPiBTb3VyY2VJZFRvQnJlYWtwb2ludHNN
YXA7CiAKICAgICBib29sIG1fY2FsbGluZ0xpc3RlbmVyczsKQEAgLTE1MSw2ICsxNTQsMTAgQEAg
cHJvdGVjdGVkOgogICAgIFJlZlB0cjxKYXZhU2NyaXB0Q2FsbEZyYW1lPiBtX2N1cnJlbnRDYWxs
RnJhbWU7CiAgICAgU291cmNlSWRUb0JyZWFrcG9pbnRzTWFwIG1fc291cmNlSWRUb0JyZWFrcG9p
bnRzOwogICAgIFRpbWVyPFNjcmlwdERlYnVnU2VydmVyPiBtX3JlY29tcGlsZVRpbWVyOworCisg
ICAgVmVjdG9yPFN0cmluZz4gbV9jdXJyZW50U291cmNlQ29kZTsKKyAgICBpbnRwdHJfdCBtX2N1
cnJlbnRTb3VyY2VJRDsKKyAgICBTY3JpcHRCcmVha3BvaW50IG1fY3VycmVudFN0YXRlbWVudFBv
c2l0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151028</attachid>
            <date>2012-07-06 00:56:51 -0700</date>
            <delta_ts>2012-07-20 00:28:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120706155648.patch</filename>
            <type>text/plain</type>
            <size>306808</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZTFmMzk3YmNhOGMzYjlmZWUwMjAyOGQ3ZDNjOWZkYWIzMjdjNzAwLi5lNWY4MjY1ODVhNDJlMjg1
OTRmYjlhZjMwM2NlMTQzZDYwYzBjZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NTcgQEAKKzIwMTItMDctMDEgIFBldGVyIFdhbmcgIDxwZXRlci53YW5nQHRvcmNobW9i
aWxlLmNvbS5jbj4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbSlNDXSBpbXBsZW1lbnQgc2V0
dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMwMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdCBjYXNlIGZvciB0aGlzIGJ1Zy4KKwor
ICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6cGFkT3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2sp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAo
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KToKKyAgICAgICAg
KEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDb25kaXRpb25hbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0
U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RW1wdHlTdGF0ZW1l
bnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclN0YXRlbWVudE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpJZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Oklm
RWxzZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRvV2hpbGVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpXaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkZvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvckluTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29udGludWVOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OlJldHVybk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OldpdGhOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpMYWJlbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRo
cm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJv
ZHlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRo
cm93RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmRlYnVnKToKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAg
ICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEFTVEJ1aWxkZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVDb21tYUV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMb2dp
Y2FsTm90KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVW5hcnlQbHVzKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVm9pZCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OnRoaXNFeHByKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVzb2x2
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZU9iamVjdExpdGVyYWwpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJheSk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZU51bWJlckV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVh
dGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCb29sZWFuKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTnVsbCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUJyYWNrZXRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVSZWdFeHAp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVOZXdFeHByKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uZGl0aW9uYWxFeHByKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQXNzaWduUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1
bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUdldHRlck9yU2V0
dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcmd1bWVudHNM
aXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUHJvcGVydHlMaXN0KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUV4cHJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVJZlN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUZvckxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JJbkxvb3ApOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFbXB0eVN0YXRlbWVudCk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVZhclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZVJldHVyblN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUJyZWFrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlQ29udGludWVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVU
cnlTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVTd2l0Y2hTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVXaGlsZVN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVdpdGhTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVUaHJvd1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZURlYnVnZ2VyKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uc3RT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRDb25zdERlY2wpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmFwcGVuZEJpbmFyeU9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUFzc2lnbm1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlVHlwZU9mTm9kZSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VEZWxldGVOb2RlKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjptYWtlQml0d2lzZU5vdE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlTXVs
dE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRGl2Tm9kZSk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VNb2ROb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6bWFrZUFkZE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlU3ViTm9kZSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VMZWZ0U2hpZnROb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZVJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6bWFrZVVSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
Om1ha2VCaXRPck5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQml0QW5kTm9k
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VCaXRYT3JOb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1h
a2VBc3NpZ25Ob2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlUG9zdGZpeE5vZGUpOgorICAgICAgICAq
IHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6Ojo6c2V0Q29kZSk6CisgICAgICAgIChK
U0M6Ojo6aW50ZXJuYWxTaGlmdCk6CisgICAgICAgIChKU0M6Ojo6c2hpZnQpOgorICAgICAgICAo
SlNDOjo6OmxleCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6Okxl
eGVyOjpjdXJyZW50Q29sdW1uTnVtYmVyKToKKyAgICAgICAgKExleGVyKToKKyAgICAgICAgKEpT
Qzo6OjpsZXhFeHBlY3RJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oOgorICAgICAgICAoSlNDOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKEpTQzo6RXhwcmVz
c2lvbk5vZGU6OkV4cHJlc3Npb25Ob2RlKToKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6
U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6Ok51bGxOb2RlOjpOdWxsTm9kZSk6CisgICAg
ICAgIChKU0M6OkJvb2xlYW5Ob2RlOjpCb29sZWFuTm9kZSk6CisgICAgICAgIChKU0M6Ok51bWJl
ck5vZGU6Ok51bWJlck5vZGUpOgorICAgICAgICAoSlNDOjpTdHJpbmdOb2RlOjpTdHJpbmdOb2Rl
KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTm9kZTo6UmVnRXhwTm9kZSk6CisgICAgICAgIChKU0M6
OlRoaXNOb2RlOjpUaGlzTm9kZSk6CisgICAgICAgIChKU0M6OlJlc29sdmVOb2RlOjpSZXNvbHZl
Tm9kZSk6CisgICAgICAgIChKU0M6OkFycmF5Tm9kZTo6QXJyYXlOb2RlKToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZSk6CisgICAgICAgIChKU0M6Ok9i
amVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZSk6CisgICAgICAgIChKU0M6OkJyYWNr
ZXRBY2Nlc3Nvck5vZGU6OkJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoSlNDOjpEb3RB
Y2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZSk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50TGlz
dE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoSlNDOjpOZXdFeHByTm9kZTo6TmV3
RXhwck5vZGUpOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0
aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OkZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2Rl
OjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJy
YWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoSlNDOjpDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAo
SlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZSk6
CisgICAgICAgIChKU0M6OlByZVBvc3RSZXNvbHZlTm9kZTo6UHJlUG9zdFJlc29sdmVOb2RlKToK
KyAgICAgICAgKEpTQzo6UG9zdGZpeFJlc29sdmVOb2RlOjpQb3N0Zml4UmVzb2x2ZU5vZGUpOgor
ICAgICAgICAoSlNDOjpQb3N0Zml4QnJhY2tldE5vZGU6OlBvc3RmaXhCcmFja2V0Tm9kZSk6Cisg
ICAgICAgIChKU0M6OlBvc3RmaXhEb3ROb2RlOjpQb3N0Zml4RG90Tm9kZSk6CisgICAgICAgIChK
U0M6OlBvc3RmaXhFcnJvck5vZGU6OlBvc3RmaXhFcnJvck5vZGUpOgorICAgICAgICAoSlNDOjpE
ZWxldGVSZXNvbHZlTm9kZTo6RGVsZXRlUmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpEZWxl
dGVCcmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVE
b3ROb2RlOjpEZWxldGVEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlVmFsdWVOb2RlOjpE
ZWxldGVWYWx1ZU5vZGUpOgorICAgICAgICAoSlNDOjpWb2lkTm9kZTo6Vm9pZE5vZGUpOgorICAg
ICAgICAoSlNDOjpUeXBlT2ZSZXNvbHZlTm9kZTo6VHlwZU9mUmVzb2x2ZU5vZGUpOgorICAgICAg
ICAoSlNDOjpUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6
OlByZWZpeFJlc29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlBy
ZWZpeEJyYWNrZXROb2RlOjpQcmVmaXhCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OlByZWZp
eERvdE5vZGU6OlByZWZpeERvdE5vZGUpOgorICAgICAgICAoSlNDOjpQcmVmaXhFcnJvck5vZGU6
OlByZWZpeEVycm9yTm9kZSk6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjpVbmFyeU9wTm9k
ZSk6CisgICAgICAgIChKU0M6OlVuYXJ5UGx1c05vZGU6OlVuYXJ5UGx1c05vZGUpOgorICAgICAg
ICAoSlNDOjpOZWdhdGVOb2RlOjpOZWdhdGVOb2RlKToKKyAgICAgICAgKEpTQzo6Qml0d2lzZU5v
dE5vZGU6OkJpdHdpc2VOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6TG9naWNhbE5vdE5vZGU6Okxv
Z2ljYWxOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUp
OgorICAgICAgICAoSlNDOjpNdWx0Tm9kZTo6TXVsdE5vZGUpOgorICAgICAgICAoSlNDOjpEaXZO
b2RlOjpEaXZOb2RlKToKKyAgICAgICAgKEpTQzo6TW9kTm9kZTo6TW9kTm9kZSk6CisgICAgICAg
IChKU0M6OkFkZE5vZGU6OkFkZE5vZGUpOgorICAgICAgICAoSlNDOjpTdWJOb2RlOjpTdWJOb2Rl
KToKKyAgICAgICAgKEpTQzo6TGVmdFNoaWZ0Tm9kZTo6TGVmdFNoaWZ0Tm9kZSk6CisgICAgICAg
IChKU0M6OlJpZ2h0U2hpZnROb2RlOjpSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OlVu
c2lnbmVkUmlnaHRTaGlmdE5vZGU6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAo
SlNDOjpMZXNzTm9kZTo6TGVzc05vZGUpOgorICAgICAgICAoSlNDOjpHcmVhdGVyTm9kZTo6R3Jl
YXRlck5vZGUpOgorICAgICAgICAoSlNDOjpMZXNzRXFOb2RlOjpMZXNzRXFOb2RlKToKKyAgICAg
ICAgKEpTQzo6R3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9kZSk6CisgICAgICAgIChKU0M6OlRo
cm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlKToKKyAgICAgICAgKEpT
Qzo6SW5zdGFuY2VPZk5vZGU6Okluc3RhbmNlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6SW5Ob2Rl
OjpJbk5vZGUpOgorICAgICAgICAoSlNDOjpFcXVhbE5vZGU6OkVxdWFsTm9kZSk6CisgICAgICAg
IChKU0M6Ok5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKToKKyAgICAgICAgKEpTQzo6U3RyaWN0
RXF1YWxOb2RlOjpTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoSlNDOjpOb3RTdHJpY3RFcXVh
bE5vZGU6Ok5vdFN0cmljdEVxdWFsTm9kZSk6CisgICAgICAgIChKU0M6OkJpdEFuZE5vZGU6OkJp
dEFuZE5vZGUpOgorICAgICAgICAoSlNDOjpCaXRPck5vZGU6OkJpdE9yTm9kZSk6CisgICAgICAg
IChKU0M6OkJpdFhPck5vZGU6OkJpdFhPck5vZGUpOgorICAgICAgICAoSlNDOjpMb2dpY2FsT3BO
b2RlOjpMb2dpY2FsT3BOb2RlKToKKyAgICAgICAgKEpTQzo6Q29uZGl0aW9uYWxOb2RlOjpDb25k
aXRpb25hbE5vZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRN
b2RpZnlSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjpBc3Np
Z25SZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6UmVh
ZE1vZGlmeUJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduQnJhY2tldE5vZGU6OkFz
c2lnbkJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90
Tm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkVycm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKToKKyAg
ICAgICAgKEpTQzo6Q29tbWFOb2RlOjpDb21tYU5vZGUpOgorICAgICAgICAoSlNDOjpDb25zdFN0
YXRlbWVudE5vZGU6OkNvbnN0U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6OkVtcHR5U3Rh
dGVtZW50Tm9kZTo6RW1wdHlTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJT
dGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpFeHBy
U3RhdGVtZW50Tm9kZTo6RXhwclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0
ZW1lbnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6SWZOb2RlOjpJZk5v
ZGUpOgorICAgICAgICAoSlNDOjpJZkVsc2VOb2RlOjpJZkVsc2VOb2RlKToKKyAgICAgICAgKEpT
Qzo6RG9XaGlsZU5vZGU6OkRvV2hpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6V2hpbGVOb2RlOjpX
aGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjpGb3JOb2RlKToKKyAgICAgICAgKEpT
Qzo6Q29udGludWVOb2RlOjpDb250aW51ZU5vZGUpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6
OkJyZWFrTm9kZSk6CisgICAgICAgIChKU0M6OlJldHVybk5vZGU6OlJldHVybk5vZGUpOgorICAg
ICAgICAoSlNDOjpXaXRoTm9kZTo6V2l0aE5vZGUpOgorICAgICAgICAoSlNDOjpMYWJlbE5vZGU6
OkxhYmVsTm9kZSk6CisgICAgICAgIChKU0M6OlRocm93Tm9kZTo6VGhyb3dOb2RlKToKKyAgICAg
ICAgKEpTQzo6VHJ5Tm9kZTo6VHJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmNFeHByTm9kZTo6
RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUp
OgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKToKKyAgICAgICAgKEpTQzo6
Q29uc3REZWNsTm9kZTo6Q29uc3REZWNsTm9kZSk6CisgICAgICAgIChKU0M6OkJsb2NrTm9kZTo6
QmxvY2tOb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjpGb3JJbk5vZGUpOgorICAgICAg
ICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OnNldExv
Yyk6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6U2NvcGVOb2RlKToKKyAgICAgICAgKEpTQzo6
UHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkV2YWxOb2RlOjpFdmFsTm9kZSk6CisgICAgICAgIChKU0M6
OkV2YWxOb2RlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpGdW5j
dGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlND
OjpOb2RlOjpjb2x1bW5Obyk6CisgICAgICAgIChFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChT
dGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6Y29sdW1uKToKKyAg
ICAgICAgKE51bGxOb2RlKToKKyAgICAgICAgKEJvb2xlYW5Ob2RlKToKKyAgICAgICAgKE51bWJl
ck5vZGUpOgorICAgICAgICAoU3RyaW5nTm9kZSk6CisgICAgICAgIChSZWdFeHBOb2RlKToKKyAg
ICAgICAgKFRoaXNOb2RlKToKKyAgICAgICAgKFJlc29sdmVOb2RlKToKKyAgICAgICAgKEFycmF5
Tm9kZSk6CisgICAgICAgIChQcm9wZXJ0eUxpc3ROb2RlKToKKyAgICAgICAgKE9iamVjdExpdGVy
YWxOb2RlKToKKyAgICAgICAgKEJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoRG90QWNj
ZXNzb3JOb2RlKToKKyAgICAgICAgKEFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoTmV3RXhw
ck5vZGUpOgorICAgICAgICAoRXZhbEZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoRnVuY3Rp
b25DYWxsVmFsdWVOb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKToKKyAg
ICAgICAgKEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbERv
dE5vZGUpOgorICAgICAgICAoQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKFByZVBvc3RSZXNvbHZlTm9kZSk6Cisg
ICAgICAgIChQb3N0Zml4UmVzb2x2ZU5vZGUpOgorICAgICAgICAoUG9zdGZpeEJyYWNrZXROb2Rl
KToKKyAgICAgICAgKFBvc3RmaXhEb3ROb2RlKToKKyAgICAgICAgKFBvc3RmaXhFcnJvck5vZGUp
OgorICAgICAgICAoRGVsZXRlUmVzb2x2ZU5vZGUpOgorICAgICAgICAoRGVsZXRlQnJhY2tldE5v
ZGUpOgorICAgICAgICAoRGVsZXRlRG90Tm9kZSk6CisgICAgICAgIChEZWxldGVWYWx1ZU5vZGUp
OgorICAgICAgICAoVm9pZE5vZGUpOgorICAgICAgICAoVHlwZU9mUmVzb2x2ZU5vZGUpOgorICAg
ICAgICAoVHlwZU9mVmFsdWVOb2RlKToKKyAgICAgICAgKFByZWZpeFJlc29sdmVOb2RlKToKKyAg
ICAgICAgKFByZWZpeEJyYWNrZXROb2RlKToKKyAgICAgICAgKFByZWZpeERvdE5vZGUpOgorICAg
ICAgICAoUHJlZml4RXJyb3JOb2RlKToKKyAgICAgICAgKFVuYXJ5T3BOb2RlKToKKyAgICAgICAg
KFVuYXJ5UGx1c05vZGUpOgorICAgICAgICAoTmVnYXRlTm9kZSk6CisgICAgICAgIChCaXR3aXNl
Tm90Tm9kZSk6CisgICAgICAgIChMb2dpY2FsTm90Tm9kZSk6CisgICAgICAgIChCaW5hcnlPcE5v
ZGUpOgorICAgICAgICAoTXVsdE5vZGUpOgorICAgICAgICAoRGl2Tm9kZSk6CisgICAgICAgIChN
b2ROb2RlKToKKyAgICAgICAgKEFkZE5vZGUpOgorICAgICAgICAoU3ViTm9kZSk6CisgICAgICAg
IChMZWZ0U2hpZnROb2RlKToKKyAgICAgICAgKFJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKFVu
c2lnbmVkUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAoTGVzc05vZGUpOgorICAgICAgICAoR3Jl
YXRlck5vZGUpOgorICAgICAgICAoTGVzc0VxTm9kZSk6CisgICAgICAgIChHcmVhdGVyRXFOb2Rl
KToKKyAgICAgICAgKFRocm93YWJsZUJpbmFyeU9wTm9kZSk6CisgICAgICAgIChJbnN0YW5jZU9m
Tm9kZSk6CisgICAgICAgIChJbk5vZGUpOgorICAgICAgICAoRXF1YWxOb2RlKToKKyAgICAgICAg
KE5vdEVxdWFsTm9kZSk6CisgICAgICAgIChTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoTm90
U3RyaWN0RXF1YWxOb2RlKToKKyAgICAgICAgKEJpdEFuZE5vZGUpOgorICAgICAgICAoQml0T3JO
b2RlKToKKyAgICAgICAgKEJpdFhPck5vZGUpOgorICAgICAgICAoTG9naWNhbE9wTm9kZSk6Cisg
ICAgICAgIChDb25kaXRpb25hbE5vZGUpOgorICAgICAgICAoUmVhZE1vZGlmeVJlc29sdmVOb2Rl
KToKKyAgICAgICAgKEFzc2lnblJlc29sdmVOb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlCcmFj
a2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25CcmFja2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25E
b3ROb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKEFzc2lnbkVy
cm9yTm9kZSk6CisgICAgICAgIChDb21tYU5vZGUpOgorICAgICAgICAoQ29uc3REZWNsTm9kZSk6
CisgICAgICAgIChDb25zdFN0YXRlbWVudE5vZGUpOgorICAgICAgICAoQmxvY2tOb2RlKToKKyAg
ICAgICAgKEVtcHR5U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChEZWJ1Z2dlclN0YXRlbWVudE5v
ZGUpOgorICAgICAgICAoRXhwclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoVmFyU3RhdGVtZW50
Tm9kZSk6CisgICAgICAgIChJZk5vZGUpOgorICAgICAgICAoSWZFbHNlTm9kZSk6CisgICAgICAg
IChEb1doaWxlTm9kZSk6CisgICAgICAgIChXaGlsZU5vZGUpOgorICAgICAgICAoRm9yTm9kZSk6
CisgICAgICAgIChGb3JJbk5vZGUpOgorICAgICAgICAoQ29udGludWVOb2RlKToKKyAgICAgICAg
KEJyZWFrTm9kZSk6CisgICAgICAgIChSZXR1cm5Ob2RlKToKKyAgICAgICAgKFdpdGhOb2RlKToK
KyAgICAgICAgKExhYmVsTm9kZSk6CisgICAgICAgIChUaHJvd05vZGUpOgorICAgICAgICAoVHJ5
Tm9kZSk6CisgICAgICAgIChTY29wZU5vZGUpOgorICAgICAgICAoUHJvZ3JhbU5vZGUpOgorICAg
ICAgICAoRXZhbE5vZGUpOgorICAgICAgICAoRnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAgICAgIChG
dW5jRXhwck5vZGUpOgorICAgICAgICAoRnVuY0RlY2xOb2RlKToKKyAgICAgICAgKFN3aXRjaE5v
ZGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6OnBhcnNl
VmFyRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29uc3REZWNsYXJhdGlvbik6
CisgICAgICAgIChKU0M6Ojo6cGFyc2VEb1doaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZVdoaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVZhckRlY2xhcmF0
aW9uTGlzdCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25zdERlY2xhcmF0aW9uTGlzdCk6Cisg
ICAgICAgIChKU0M6Ojo6cGFyc2VGb3JTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNl
QnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29udGludWVTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjo6OnBhcnNlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZVRocm93U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVdpdGhTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZVRyeVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VEZWJ1Z2dlclN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VCbG9ja1N0YXRlbWVudCk6CisgICAgICAg
IChKU0M6Ojo6cGFyc2VTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlRnVuY3Rpb25C
b2R5KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJl
c3Npb25PckxhYmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJlc3Npb25T
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlSWZTdGF0ZW1lbnQpOgorICAgICAgICAo
SlNDOjo6OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjo6OnBhcnNlQmluYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VPYmplY3RMaXRlcmFsKToK
KyAgICAgICAgKEpTQzo6OjpwYXJzZVN0cmljdE9iamVjdExpdGVyYWwpOgorICAgICAgICAoSlND
Ojo6OnBhcnNlQXJyYXlMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVByaW1hcnlFeHBy
ZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVVuYXJ5RXhw
cmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQYXJz
ZXI6OnRva2VuQ29sdW1uKToKKyAgICAgICAgKFBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNl
cjo6Z2V0VG9rZW5OYW1lKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZSk6CisgICAgICAgICogcGFy
c2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAoSlNDOjpKU1Rva2VuSW5mbzo6SlNUb2tlbklu
Zm8pOgorICAgICAgICAoSlNUb2tlbkluZm8pOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVj
a2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2Rl
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ29tbWFFeHByKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjptYWtlUHJlZml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6Om1ha2VQb3N0Zml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VU
eXBlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZURlbGV0ZU5vZGUp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlTmVnYXRlTm9kZSk6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VCaXR3aXNlTm90Tm9kZSk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpTeW50YXhD
aGVja2VyOjpjcmVhdGVVbmFyeVBsdXMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVWb2lkKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6dGhpc0V4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUFycmF5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlTnVtYmVyRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN0cmlu
Zyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJvb2xlYW4pOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOdWxsKToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQnJhY2tldEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZVJlZ0V4cCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU5ld0V4cHIpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDb25kaXRpb25hbEV4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVBc3NpZ25SZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQXJndW1lbnRzTGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZVByb3BlcnR5TGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OnNl
dFVzZXNBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5j
RGVjbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJsb2Nr
U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRXhwclN0YXRl
bWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUlmU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRm9yTG9vcCk6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUVtcHR5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlVmFyU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlQnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVD
b250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRy
eVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN3aXRjaFN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVdoaWxlU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlV2l0aFN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6CisgICAg
ICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRocm93U3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRGVidWdnZXIpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVDb25zdFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENo
ZWNrZXI6OmFwcGVuZENvbnN0RGVjbCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2Vy
Ojpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJh
dG9yU3RhY2tQb3ApOgorCiAyMDEyLTA2LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgSlNDIHNob3VsZCB0cnkgdG8gbWFrZSBwcm9maWxpbmcgZGV0ZXJtaW5p
c3RpYyBiZWNhdXNlIG90aGVyd2lzZSByZXByb2R1Y2luZyBmYWlsdXJlcyBpcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDQ2ZGYxMDQ2MWMzYWVkMDUxNWQxODAzMTQ4NmQzMDRkY2RjMzQ5OWEuLmIxNWFjYjgxNjE1
YmRjNmQ5NzMwZmY3NDIwNWJmN2QxNWQ4N2UxOGMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBA
QAorMjAxMi0wNy0wMSAgUGV0ZXIgV2FuZyAgPHBldGVyLndhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtKU0NdIGltcGxlbWVudCBzZXR0aW5nIGJyZWFr
cG9pbnRzIGJ5IGxpbmU6Y29sdW1uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MzAwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0IGNhc2UgZm9yIHRoaXMgYnVnLiAoT09QUyEpCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6Omhh
c0JyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNyZWF0
ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpleGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OndpbGxFeGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZl
cjo6ZGlkRXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2
ZXI6OmRpZFJlYWNoQnJlYWtwb2ludCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToKKwogMjAxMi0wNi0yNiAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVmYWN0b3Jpbmc6
IFNpbXBsaWZ5IEZvcm1Db250cm9sbGVyIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCmluZGV4IGUwY2ZmMTY1YTg4YzkzM2E1ODgzMDM4NmNiNTgxOGE2ZmU3
YTEzMWEuLjUyNjIyY2Q3YThjNWI5NDFjM2Y1NGU3YTEwNDU3MTAyMTQ1NGY2MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKQEAgLTE5MCw3ICsxOTAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfdGhyb3csIDIpIFwKICAgICAgICAgbWFjcm8o
b3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yLCAyKSBcCiAgICAgICAgIFwKLSAgICAgICAgbWFjcm8o
b3BfZGVidWcsIDQpIFwKKyAgICAgICAgbWFjcm8ob3BfZGVidWcsIDUpIFwKICAgICAgICAgbWFj
cm8ob3BfcHJvZmlsZV93aWxsX2NhbGwsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfcHJvZmlsZV9k
aWRfY2FsbCwgMikgXAogICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDg5NjlhN2YyNWIy
N2U5ZmNlOTY1NTBhZWQ1NWYxMjczYzA0N2UyZmEuLjI5N2IwMDgyM2MwMTI2NjNlZDNhZGYwNjc3
ZmZlYTk2Y2I0OTgwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yMDM3LDcgKzIwMzcsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UG9wU2NvcGUoKQogICAgIG1fZHluYW1pY1Njb3Bl
RGVwdGgtLTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1
Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQordm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwg
aW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKQogewogI2lmIEVOQUJMRShE
RUJVR19XSVRIX0JSRUFLUE9JTlQpCiAgICAgaWYgKGRlYnVnSG9va0lEICE9IERpZFJlYWNoQnJl
YWtwb2ludCkKQEAgLTIwNTAsNiArMjA1MCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREZWJ1Z0hvb2soRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGluCiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRlYnVnSG9va0lEKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZmlyc3RMaW5lKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGFzdExpbmUp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjb2x1bW4pOwogfQogCiB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpwdXNoRmluYWxseUNvbnRleHQoU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2Nr
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCmluZGV4IDhiMWQxZDc0NGJhMmE5MmI0NDI2ZjczMGExZGMzOGQyM2Y3YjA3
ODkuLmIxNGI3MGFmZjFlZTI2MDJkNDNjMTE0YzI4ZGI1NGExN2U0ZmQzYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKQEAgLTUwNiw3ICs1MDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1c2hTY29wZShSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQgZW1pdFBv
cFNjb3BlKCk7CiAKLSAgICAgICAgdm9pZCBlbWl0RGVidWdIb29rKERlYnVnSG9va0lELCBpbnQg
Zmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAgICB2b2lkIGVtaXREZWJ1Z0hvb2soRGVi
dWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVtbik7CiAKICAg
ICAgICAgaW50IHNjb3BlRGVwdGgoKSB7IHJldHVybiBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9m
aW5hbGx5RGVwdGg7IH0KICAgICAgICAgYm9vbCBoYXNGaW5hbGlzZXIoKSB7IHJldHVybiBtX2Zp
bmFsbHlEZXB0aCAhPSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDI0M2U4Y2UwMDg0OWI1NTJkOThkYjA1MDFj
MzY5YTQxNWQyZWQwYS4uYzFiN2Y1NGFiNWIwZWM2ZTAwOTY3YzA5NGU2ZmEyMjVmNDRhMzkxMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcApAQCAtMjAyLDE4ICsyMDIsMTggQEAgYm9vbCBBcnJheU5vZGU6OmlzU2ltcGxlQXJy
YXkoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1Bcmd1bWVudExpc3ROb2RlKiBBcnJh
eU5vZGU6OnRvQXJndW1lbnRMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVO
dW1iZXIpIGNvbnN0CitBcmd1bWVudExpc3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2VsaXNpb24gJiYgIW1fb3B0aW9uYWwpOwogICAg
IEVsZW1lbnROb2RlKiBwdHIgPSBtX2VsZW1lbnQ7CiAgICAgaWYgKCFwdHIpCiAgICAgICAgIHJl
dHVybiAwOwotICAgIEFyZ3VtZW50TGlzdE5vZGUqIGhlYWQgPSBuZXcgKGdsb2JhbERhdGEpIEFy
Z3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgcHRyLT52YWx1ZSgpKTsKKyAgICBBcmd1bWVudExp
c3ROb2RlKiBoZWFkID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgcHRyLT52YWx1ZSgpKTsKICAgICBBcmd1bWVudExpc3ROb2RlKiB0
YWlsID0gaGVhZDsKICAgICBwdHIgPSBwdHItPm5leHQoKTsKICAgICBmb3IgKDsgcHRyOyBwdHIg
PSBwdHItPm5leHQoKSkgewogICAgICAgICBBU1NFUlQoIXB0ci0+ZWxpc2lvbigpKTsKLSAgICAg
ICAgdGFpbCA9IG5ldyAoZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVtYmVyLCB0
YWlsLCBwdHItPnZhbHVlKCkpOworICAgICAgICB0YWlsID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1
bWVudExpc3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdGFpbCwgcHRyLT52YWx1ZSgp
KTsKICAgICB9CiAgICAgcmV0dXJuIGhlYWQ7CiB9CkBAIC01MzYsNyArNTM2LDcgQEAgUmVnaXN0
ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9kZSo+KG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50TGlzdChnZW5lcmF0
b3IuZ2xvYmFsRGF0YSgpLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3RO
b2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQt
Pm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci5nbG9iYWxEYXRhKCksIDAsIDApOwog
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQo
KSk7CiAgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwpAQCAtMTEyOCw2
ICsxMTI4LDggQEAgUmVnaXN0ZXJJRCogQ29uZGl0aW9uYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKICAgICBSZWZQdHI8TGFiZWw+IGJl
Zm9yZUVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGFmdGVy
RWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogCisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxpbmVObygpLCBsaW5lTm8oKSwgY29sdW1uTm8oKSk7
CisKICAgICBpZiAobV9sb2dpY2FsLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKSB7CiAg
ICAgICAgIFJlZlB0cjxMYWJlbD4gYmVmb3JlVGhlbiA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9sb2dpY2FsLCBi
ZWZvcmVUaGVuLmdldCgpLCBiZWZvcmVFbHNlLmdldCgpLCB0cnVlKTsKQEAgLTEzODUsNyArMTM4
Nyw3IEBAIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIFJlZ2lzdGVySUQqIENvbnN0U3RhdGVt
ZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShtX25leHQpOwogfQogCkBAIC0xNDI4
LDcgKzE0MzAsNyBAQCBSZWdpc3RlcklEKiBCbG9ja05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogCiBSZWdpc3RlcklEKiBFbXB0
eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0xNDM2LDcgKzE0MzgsNyBA
QCBSZWdpc3RlcklEKiBFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpcwogCiBSZWdpc3RlcklEKiBEZWJ1Z2dlclN0YXRlbWVu
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkUmVhY2hCcmVha3Bv
aW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soRGlkUmVhY2hCcmVha3BvaW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkp
OwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTE0NDUsNyArMTQ0Nyw3IEBAIFJlZ2lzdGVySUQq
IERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlCiBSZWdpc3RlcklEKiBFeHByU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBB
U1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOyAKKyAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNv
bHVtbigpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9leHByKTsKIH0K
IApAQCAtMTQ1NCw3ICsxNDU2LDcgQEAgUmVnaXN0ZXJJRCogRXhwclN0YXRlbWVudE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIFJlZ2lzdGVy
SUQqIFZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKICAgICBBU1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50
LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdE5vZGUobV9leHByKTsKIH0KIApAQCAtMTQ2Miw3ICsxNDY0LDcgQEAgUmVnaXN0ZXJJ
RCogVmFyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGUKIAogUmVnaXN0ZXJJRCogSWZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQs
IGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPExh
YmVsPiBhZnRlclRoZW4gPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIApAQCAtMTQ4Niw3ICsxNDg4
LDcgQEAgUmVnaXN0ZXJJRCogSWZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiBSZWdpc3RlcklEKiBJZkVsc2VOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAg
ICAgCiAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVFbHNlID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
CiAgICAgUmVmUHRyPExhYmVsPiBhZnRlckVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKQEAg
LTE1MjIsMTIgKzE1MjQsMTEgQEAgUmVnaXN0ZXJJRCogRG9XaGlsZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgIFJlZlB0cjxM
YWJlbD4gdG9wT2ZMb29wID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbCh0b3BPZkxvb3AuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TG9vcEhpbnQoKTsK
LSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCkpOwogICAgCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9
IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxp
bmVObygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGlmIChtX2V4cHItPmhh
c0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUlu
Q29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFy
Z2V0KCksIGZhbHNlKTsKICAgICBlbHNlIHsKQEAgLTE1NDYsNyArMTU0Nyw3IEBAIFJlZ2lzdGVy
SUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3BlID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CiAgICAgUmVmUHRyPExhYmVsPiB0b3BP
Zkxvb3AgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxpbmVO
bygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
bV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5jb2x1bW5ObygpKTsK
ICAgICBpZiAobV9leHByLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKQogICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxvb3AuZ2V0
KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCB0cnVlKTsKICAgICBlbHNlIHsKQEAgLTE1NjAsNyAr
MTU2MSw3IEBAIFJlZ2lzdGVySUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29u
dGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIG1fZXhwci0+bGluZU5vKCksIG1fZXhwci0+bGluZU5vKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAgaWYgKG1fZXhwci0+aGFzQ29uZGl0aW9uQ29udGV4
dENvZGVnZW4oKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0
KG1fZXhwciwgdG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgZmFsc2UpOwpA
QCAtMTU4MSw3ICsxNTgyLDcgQEAgUmVnaXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBSZWZQ
dHI8TGFiZWxTY29wZT4gc2NvcGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3Bl
OjpMb29wKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAKICAgICBpZiAobV9leHByMSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjEpOwpAQCAtMTYwMiw3ICsxNjAzLDcgQEAgUmVn
aXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRM
YWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICBpZiAobV9leHByMykKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjMpOwogCkBAIC0x
NjI5LDcgKzE2MzAsNyBAQCBSZWdpc3RlcklEKiBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAgIGlmICghbV9sZXhw
ci0+aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gZW1pdFRocm93UmVmZXJlbmNlRXJyb3Io
Z2VuZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGZvci1pbiBzdGF0ZW1lbnQgaXMgbm90IGEgcmVmZXJl
bmNlLiIpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigp
KTsKIAogICAgIGlmIChtX2luaXQpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpLCBtX2luaXQpOwpAQCAtMTY5Miw3ICsxNjkzLDcgQEAgUmVnaXN0
ZXJJRCogRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHMKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRp
bnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TmV4dFByb3BlcnR5TmFtZShwcm9wZXJ0
eU5hbWUsIGJhc2UuZ2V0KCksIGkuZ2V0KCksIHNpemUuZ2V0KCksIGl0ZXIuZ2V0KCksIGxvb3BT
dGFydC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0
ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVt
bigpKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKICAg
ICByZXR1cm4gZHN0OwogfQpAQCAtMTcwMiw3ICsxNzAzLDcgQEAgUmVnaXN0ZXJJRCogRm9ySW5O
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHMKIC8vIEVDTUEgMTIuNwogUmVnaXN0ZXJJRCogQ29udGludWVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAg
TGFiZWxTY29wZSogc2NvcGUgPSBnZW5lcmF0b3IuY29udGludWVUYXJnZXQobV9pZGVudCk7CiAg
ICAgQVNTRVJUKHNjb3BlKTsKQEAgLTE3MTYsNyArMTcxNyw3IEBAIFJlZ2lzdGVySUQqIENvbnRp
bnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqCiAvLyBFQ01BIDEyLjgKIFJlZ2lzdGVySUQqIEJyZWFrTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIAogICAgIExh
YmVsU2NvcGUqIHNjb3BlID0gZ2VuZXJhdG9yLmJyZWFrVGFyZ2V0KG1faWRlbnQpOwogICAgIEFT
U0VSVChzY29wZSk7CkBAIC0xNzI5LDcgKzE3MzAsNyBAQCBSZWdpc3RlcklEKiBCcmVha05vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
cwogCiBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgQVNTRVJUKGdlbmVyYXRvci5jb2RlVHlw
ZSgpID09IEZ1bmN0aW9uQ29kZSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpCkBAIC0xNzQ1LDcgKzE3NDYsNyBAQCBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAog
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBTY29wZXMobDAuZ2V0KCksIDApOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKGwwLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFJldHVy
bihyMCk7CiB9CiAKQEAgLTE3NTMsNyArMTc1NCw3IEBAIFJlZ2lzdGVySUQqIFJldHVybk5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
CiAKIFJlZ2lzdGVySUQqIFdpdGhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNj
b3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShz
Y29wZS5nZXQoKSwgbV9leHByKTsgLy8gc2NvcGUgbXVzdCBiZSBwcm90ZWN0ZWQgdW50aWwgcG9w
cGVkCkBAIC0xOTE4LDcgKzE5MTksNyBAQCBSZWdpc3RlcklEKiBDYXNlQmxvY2tOb2RlOjplbWl0
Qnl0ZWNvZGVGb3JCbG9jayhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogCiBSZWdp
c3RlcklEKiBTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdp
bGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0
TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3BlID0g
Z2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6U3dpdGNoKTsKIApAQCAtMTkzMyw3
ICsxOTM0LDcgQEAgUmVnaXN0ZXJJRCogU3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAogUmVnaXN0ZXJJRCogTGFiZWxO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAKICAgICBBU1NFUlQoIWdlbmVyYXRvci5icmVha1RhcmdldChtX25hbWUpKTsKIApAQCAt
MTk0OCw3ICsxOTQ5LDcgQEAgUmVnaXN0ZXJJRCogTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCog
VGhyb3dOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBj
b2x1bW4oKSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAg
ICAgICAgIGRzdCA9IDA7CkBAIC0xOTY1LDcgKzE5NjYsNyBAQCBSZWdpc3RlcklEKiBUcnlOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogICAgIC8vIE5PVEU6IFRoZSBjYXRjaCBhbmQgZmluYWxseSBibG9ja3MgbXVzdCBiZSBs
YWJlbGVkIGV4cGxpY2l0bHksIHNvIHRoZQogICAgIC8vIG9wdGltaXplciBrbm93cyB0aGV5IG1h
eSBiZSBqdW1wZWQgdG8gZnJvbSBhbnl3aGVyZS4KIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBSZWZQdHI8TGFiZWw+IHRyeVN0YXJ0TGFi
ZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBpZiAobV9maW5hbGx5QmxvY2spCkBAIC0y
MDIyLDEzICsyMDIzLDEzIEBAIGlubGluZSB2b2lkIFNjb3BlTm9kZTo6ZW1pdFN0YXRlbWVudHNC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAKIFJlZ2lzdGVySUQq
IFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQ
cm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1u
KCkpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRzdFJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0TG9hZChkc3RSZWdpc3Rlci5nZXQoKSwg
anNVbmRlZmluZWQoKSk7CiAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGRz
dFJlZ2lzdGVyLmdldCgpKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1
dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1
bW4oKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFbmQoZHN0UmVnaXN0ZXIuZ2V0KCkpOwogICAgIHJl
dHVybiAwOwogfQpAQCAtMjAzNywxMyArMjAzOCwxMyBAQCBSZWdpc3RlcklEKiBQcm9ncmFtTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
KQogCiBSZWdpc3RlcklEKiBFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCksIGNvbHVtbigpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkc3RSZWdpc3RlciA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQoZHN0UmVn
aXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUo
Z2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY29sdW1uKCkpOwogICAgIGdlbmVyYXRvci5lbWl0RW5kKGRzdFJlZ2lzdGVyLmdl
dCgpKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTIwNTIsNyArMjA1Myw3IEBAIFJlZ2lzdGVySUQq
IEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCopCiAKIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQm9keU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1lLCBmaXJz
dExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNv
ZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAogICAgIFN0YXRlbWVu
dE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOwpAQCAtMjA2
OCw3ICsyMDY5LDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAvLyBJZiB0aGVyZSBp
cyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCiAgICAgaWYgKCFy
ZXR1cm5Ob2RlKSB7CiAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3Ry
dWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgw
LCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExl
YXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5oCmluZGV4IGEyMzczMjkxODc4MDNlZGE5NTdhMzdkM2EwYTkwN2FmZjBiODkyMzIuLmE2YTQz
M2FkZjUyNzA4ZjFlODk4ZjVkZTIyN2MzZTE3ZjViODkyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC00MiwxNCArNDIsMjUgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3QqKTsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEV4ZWNTdGF0ZSosIFNvdXJjZVByb3ZpZGVy
KiwgaW50IGVycm9yTGluZU51bWJlciwgY29uc3QgVVN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUm
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFuZGxlcikgPSAw
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmV0dXJu
RXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpID0gMDsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4ZWN1dGVQcm9ncmFt
KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVt
YmVyKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBE
ZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAw
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0IERlYnVnZ2Vy
Q2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRw
dHJfdCwgaW50LCBib29sKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhdFN0YXRlbWVudChj
b25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBp
bnQpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0IERlYnVnZ2Vy
Q2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCkgPSAwOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBl
eGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50LCBpbnQsIGJv
b2wpIHsgfTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0IERlYnVnZ2Vy
Q2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCwgaW50KSB7IH07CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBjYWxsRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50LCBpbnQp
IHsgfTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0IERlYnVnZ2VyQ2Fs
bEZyYW1lJiwgaW50cHRyX3QsIGludCwgaW50KSB7IH07CisKKworICAgICAgICB2aXJ0dWFsIHZv
aWQgd2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qs
IGludCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRXhlY3V0ZVByb2dyYW0oY29uc3Qg
RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50KSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJf
dCwgaW50KSA9IDA7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxFeGVjdXRlUHJvZ3JhbShj
b25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQsIGludCkgeyB9OworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUm
LCBpbnRwdHJfdCwgaW50LCBpbnQpIHsgfTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWNo
QnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQsIGludCkg
eyB9OworCiAKICAgICAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhKU0dsb2JhbERh
dGEqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKaW5kZXggYjg2MTBlN2JmYmM4NWU4MTdjMTllOWNkODYxMTBiODFiZDRlOTAxYi4u
MzBkMjg3ZmQ0ODEwZDY1YWNjMDBiNTY3OWU1N2VkMDQ5YTNiODBkYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC03MTIsOSAr
NzEyLDkgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZShD
YWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVmFsdWUgZXgKICAgICBpZiAoRGVidWdnZXIqIGRlYnVn
Z2VyID0gY2FsbEZyYW1lLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpIHsKICAg
ICAgICAgRGVidWdnZXJDYWxsRnJhbWUgZGVidWdnZXJDYWxsRnJhbWUoY2FsbEZyYW1lLCBleGNl
cHRpb25WYWx1ZSk7CiAgICAgICAgIGlmIChjYWxsRnJhbWUtPmNhbGxlZSgpKQotICAgICAgICAg
ICAgZGVidWdnZXItPnJldHVybkV2ZW50KGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LT5sYXN0TGluZSgpKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5yZXR1cm5FdmVudChkZWJ1Z2dl
ckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bGFzdExpbmUoKSwgMCk7CiAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRFeGVjdXRlUHJvZ3JhbShkZWJ1Z2dlckNhbGxGcmFt
ZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKS0+bGFzdExpbmUoKSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+ZGlk
RXhlY3V0ZVByb2dyYW0oZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmxhc3RMaW5l
KCksIDApOwogICAgIH0KIAogICAgIC8vIElmIHRoaXMgY2FsbCBmcmFtZSBjcmVhdGVkIGFuIGFj
dGl2YXRpb24gb3IgYW4gJ2FyZ3VtZW50cycgb2JqZWN0LCB0ZWFyIGl0IG9mZi4KQEAgLTEwMzYs
NyArMTAzNiw3IEBAIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnRocm93
RXhjZXB0aW9uKENhbGxGcmFtZSomIGNhbGxGcmFtZSwgSlNWCiAgICAgaWYgKERlYnVnZ2VyKiBk
ZWJ1Z2dlciA9IGNhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKSB7
CiAgICAgICAgIERlYnVnZ2VyQ2FsbEZyYW1lIGRlYnVnZ2VyQ2FsbEZyYW1lKGNhbGxGcmFtZSwg
ZXhjZXB0aW9uVmFsdWUpOwogICAgICAgICBib29sIGhhc0hhbmRsZXIgPSBjb2RlQmxvY2stPmhh
bmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7Ci0gICAgICAgIGRlYnVnZ2Vy
LT5leGNlcHRpb24oZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KSwgaGFzSGFuZGxlcik7CisgICAgICAgIGRlYnVnZ2VyLT5leGNlcHRpb24o
ZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlE
KCksIGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
KSwgMCwgaGFzSGFuZGxlcik7CiAgICAgfQogCiAgICAgLy8gQ2FsY3VsYXRlIGFuIGV4Y2VwdGlv
biBoYW5kbGVyIHZQQywgdW53aW5kaW5nIGNhbGwgZnJhbWVzIGFzIG5lY2Vzc2FyeS4KQEAgLTE2
MjQsNyArMTYyNCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFi
bGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlCiAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4ocmVzdWx0KTsKIH0KIAotTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRl
YnVnKENhbGxGcmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZp
cnN0TGluZSwgaW50IGxhc3RMaW5lKQorTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRl
YnVnKENhbGxGcmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZp
cnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKQogewogICAgIERlYnVnZ2VyKiBkZWJ1
Z2dlciA9IGNhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpOwogICAg
IGlmICghZGVidWdnZXIpCkBAIC0xNjMyLDIyICsxNjMyLDIyIEBAIE5FVkVSX0lOTElORSB2b2lk
IEludGVycHJldGVyOjpkZWJ1ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVi
dWdIb29rCiAKICAgICBzd2l0Y2ggKGRlYnVnSG9va0lEKSB7CiAgICAgICAgIGNhc2UgRGlkRW50
ZXJDYWxsRnJhbWU6Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+Y2FsbEV2ZW50KGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGZp
cnN0TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+Y2FsbEV2ZW50KGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGZpcnN0
TGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBXaWxsTGVh
dmVDYWxsRnJhbWU6Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+cmV0dXJuRXZlbnQoY2FsbEZyYW1l
LCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwg
bGFzdExpbmUpOworICAgICAgICAgICAgZGVidWdnZXItPnJldHVybkV2ZW50KGNhbGxGcmFtZSwg
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxh
c3RMaW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFdpbGxF
eGVjdXRlU3RhdGVtZW50OgotICAgICAgICAgICAgZGVidWdnZXItPmF0U3RhdGVtZW50KGNhbGxG
cmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlE
KCksIGZpcnN0TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+YXRTdGF0ZW1lbnQoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQo
KSwgZmlyc3RMaW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNl
IFdpbGxFeGVjdXRlUHJvZ3JhbToKLSAgICAgICAgICAgIGRlYnVnZ2VyLT53aWxsRXhlY3V0ZVBy
b2dyYW0oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUo
KS0+c291cmNlSUQoKSwgZmlyc3RMaW5lKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT53aWxsRXhl
Y3V0ZVByb2dyYW0oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1
dGFibGUoKS0+c291cmNlSUQoKSwgZmlyc3RMaW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBjYXNlIERpZEV4ZWN1dGVQcm9ncmFtOgotICAgICAgICAgICAgZGVidWdn
ZXItPmRpZEV4ZWN1dGVQcm9ncmFtKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+
b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5lKTsKKyAgICAgICAgICAgIGRl
YnVnZ2VyLT5kaWRFeGVjdXRlUHJvZ3JhbShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSwgY29sdW1uKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBEaWRSZWFjaEJyZWFrcG9pbnQ6Ci0gICAg
ICAgICAgICBkZWJ1Z2dlci0+ZGlkUmVhY2hCcmVha3BvaW50KGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5lKTsK
KyAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRSZWFjaEJyZWFrcG9pbnQoY2FsbEZyYW1lLCBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgbGFzdExp
bmUsIGNvbHVtbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCBhZGIyM2YyMzcy
Mzg0ZGFmODgzYjE0ZWZmOGJhZjVkYzVmZTZkZjQxLi40N2Q2Njg5ODUxNWYyMTkxZTY1OTI1ZTAy
Nzc4NzRlZTdiMDA5MDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaApAQCAtMjIwLDcgKzIyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBTYW1wbGluZ1Rvb2wqIHNhbXBsZXIoKSB7IHJldHVybiBtX3NhbXBsZXIuZ2V0KCk7IH0K
IAogICAgICAgICBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIHRocm93RXhjZXB0aW9uKENhbGxG
cmFtZSomLCBKU1ZhbHVlJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICBORVZF
Ul9JTkxJTkUgdm9pZCBkZWJ1ZyhDYWxsRnJhbWUqLCBEZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGlu
ZSwgaW50IGxhc3RMaW5lKTsKKyAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgZGVidWcoQ2FsbEZy
YW1lKiwgRGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVt
bik7CiAgICAgICAgIHN0YXRpYyBjb25zdCBVU3RyaW5nIGdldFRyYWNlTGluZShDYWxsRnJhbWUq
LCBTdGFja0ZyYW1lQ29kZVR5cGUsIGNvbnN0IFVTdHJpbmcmLCBpbnQpOwogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRTdGFja1RyYWNlKEpTR2xvYmFsRGF0YSosIFZl
Y3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGFkZFN0YWNr
VHJhY2VJZk5lY2Vzc2FyeShDYWxsRnJhbWUqLCBKU09iamVjdCogZXJyb3IpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggMmU0NDhkZDUyYWE5NjFkOWIyNDFh
YzA1ZDA0NzgyYTA2MTUzNmQxNC4uNmI0YTc3NjVjOGE3ZDczMjlkZGZmZGFjYmY5YTI5NTI2M2M2
MzQxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xMTU5
LDYgKzExNTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
VHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKICAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZCkpOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5z
dHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuY2FsbCgpOwogI2VuZGlmCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXgg
NGY4NTg5NTU3MmMwZTlmMzIyOWFiNDkwODBiNmVlNTk2MTRhODI1MS4uZjk5N2IzZThiZDExMmEz
Nzg1MzYxNGU5NGQxMzcwOTY3YjAxMzAyOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMTQ4MCw2ICsxNDgwLDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBzdHViQ2Fs
bC5hZGRBcmd1bWVudChJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CiAg
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCkpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQpKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW0zMihjdXJyZW50
SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuY2FsbCgpOwogI2VuZGlm
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IDZiODA4Mjg4Njk2
NzRiMjBlOTU0MjhlODRkZDE4NTk1NTk5NzIzMTguLmMwZDEwOWUxZDhmM2EwMTg1Y2VkYzJiZjcw
MjgyNGQ1MGQ5NzY4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBA
IC0zMzY5LDggKzMzNjksOSBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9kZWJ1ZykK
ICAgICBpbnQgZGVidWdIb29rSUQgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKTsKICAgICBp
bnQgZmlyc3RMaW5lID0gc3RhY2tGcmFtZS5hcmdzWzFdLmludDMyKCk7CiAgICAgaW50IGxhc3RM
aW5lID0gc3RhY2tGcmFtZS5hcmdzWzJdLmludDMyKCk7CisgICAgaW50IGNvbHVtbiA9IHN0YWNr
RnJhbWUuYXJnc1szXS5pbnQzMigpOwogCi0gICAgc3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5pbnRl
cnByZXRlci0+ZGVidWcoY2FsbEZyYW1lLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdI
b29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICBzdGFja0ZyYW1lLmdsb2JhbERhdGEt
PmludGVycHJldGVyLT5kZWJ1ZyhjYWxsRnJhbWUsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihk
ZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUsIGNvbHVtbik7CiB9CiAKIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQqLCB2bV90aHJvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGE3Njk4YmUzNzQzMjY5MzA4NTVmNWYyNTMw
MThkYTE2NWZiNmMxZTkuLjE5NThjZjZhODA2YzUxNjNhMDM2ZGVlZDhkNmJlNTQ4Njc5MDgwZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApA
QCAtMTU3OCw4ICsxNTc4LDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlYnVn
KQogICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFdLnUub3BlcmFuZDsKICAgICBpbnQgZmlyc3RM
aW5lID0gcGNbMl0udS5vcGVyYW5kOwogICAgIGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFu
ZDsKLSAgICAKLSAgICBnbG9iYWxEYXRhLmludGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0aWNf
Y2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAg
ICBpbnQgY29sdW1uID0gcGNbNF0udS5vcGVyYW5kOworCisgICAgZ2xvYmFsRGF0YS5pbnRlcnBy
ZXRlci0+ZGVidWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwg
Zmlyc3RMaW5lLCBsYXN0TGluZSwgY29sdW1uKTsKICAgICAKICAgICBMTElOVF9FTkQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggMGViNjBjZjg5
OTJmZjA5MjQ5OTEzNDQzMjhiZjkzMWExYmY3MzZlNy4uNGM1ZjY4MjVhZjU0NzQxNzU3NzQ1OTAw
NzBmZDYzM2FiNjFkNDE4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmgKQEAgLTExMiw4ICsxMTIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGludCAg
RG9udEJ1aWxkS2V5d29yZHMgPSAwOwogICAgIHN0YXRpYyBjb25zdCBpbnQgIERvbnRCdWlsZFN0
cmluZ3MgPSAwOwogCi0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaW5hcnlOb2RlKGludCBsaW5l
TnVtYmVyLCBpbnQgdG9rZW4sIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5m
bz4sIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4pOwotICAgIEV4cHJl
c3Npb25Ob2RlKiBtYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGZ1bmMsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGludCBzdGFydCwgaW50IGRpdm90LCBp
bnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpbmFyeU5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIGludCB0b2tlbiwgc3RkOjpwYWlyPEV4cHJlc3Npb25Ob2Rl
KiwgQmluYXJ5T3BJbmZvPiwgc3RkOjpwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZv
Pik7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZnVuYywgQXJndW1lbnRzTm9k
ZSogYXJncywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwogCiAgICAgSlNDOjpTb3Vy
Y2VFbGVtZW50cyogY3JlYXRlU291cmNlRWxlbWVudHMoKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgSlNDOjpTb3VyY2VFbGVtZW50cygpOyB9CiAKQEAgLTEyNCwxNjggKzEyNCwxNjggQEAg
cHVibGljOgogCiAgICAgdm9pZCBhcHBlbmRUb0NvbW1hKENvbW1hTm9kZSogY29tbWFOb2RlLCBF
eHByZXNzaW9uTm9kZSogZXhwcikgeyBjb21tYU5vZGUtPmFwcGVuZChleHByKTsgfQogCi0gICAg
Q29tbWFOb2RlKiBjcmVhdGVDb21tYUV4cHIoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBsaHMsIEV4cHJlc3Npb25Ob2RlKiByaHMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBD
b21tYU5vZGUobGluZU51bWJlciwgbGhzLCByaHMpOyB9Ci0KLSAgICBFeHByZXNzaW9uTm9kZSog
bWFrZUFzc2lnbk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBPcGVy
YXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIGxlZnRIYXNBc3NpZ25tZW50cywgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7Ci0g
ICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VQcmVmaXhOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSosIE9wZXJhdG9yLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7Ci0gICAg
RXhwcmVzc2lvbk5vZGUqIG1ha2VQb3N0Zml4Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlVHlwZU9mTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZURlbGV0ZU5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlTmVnYXRlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdHdpc2VOb3ROb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSopOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTXVsdE5vZGUo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VE
aXZOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2Rl
KiBtYWtlTW9kTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJl
c3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNz
aW9uTm9kZSogbWFrZUFkZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0
LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAg
RXhwcmVzc2lvbk5vZGUqIG1ha2VTdWJOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
OwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0WE9yTm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdEFuZE5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRPck5vZGUo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VM
ZWZ0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VVUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7Ci0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTG9naWNhbE5vdChp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBMb2dpY2FsTm90Tm9kZShsaW5lTnVtYmVyLCBleHByKTsgfQotICAgIEV4cHJlc3Np
b25Ob2RlKiBjcmVhdGVVbmFyeVBsdXMoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVtYmVy
LCBleHByKTsgfQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVWb2lkKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICBDb21tYU5vZGUqIGNyZWF0ZUNvbW1hRXhwcihp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhw
cmVzc2lvbk5vZGUqIHJocykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbW1hTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocywgcmhzKTsgfQorCisgICAgRXhwcmVzc2lvbk5v
ZGUqIG1ha2VBc3NpZ25Ob2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBs
ZWZ0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBp
bnQgZGl2b3QsIGludCBlbmQpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlUHJlZml4Tm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRv
ciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOworICAgIEV4cHJlc3Npb25Ob2RlKiBt
YWtlUG9zdGZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiwgT3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBF
eHByZXNzaW9uTm9kZSogbWFrZVR5cGVPZk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VEZWxldGVO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSosIGlu
dCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZU5l
Z2F0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
Kik7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXR3aXNlTm90Tm9kZShpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICBFeHByZXNzaW9uTm9k
ZSogbWFrZU11bHROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGl2Tm9kZShpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFr
ZU1vZE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VBZGROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlU3ViTm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBF
eHByZXNzaW9uTm9kZSogbWFrZUJpdFhPck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRBbmROb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlQml0T3JOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTGVmdFNoaWZ0Tm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBF
eHByZXNzaW9uTm9kZSogbWFrZVJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlVVJpZ2h0
U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
OworCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUxvZ2ljYWxOb3QoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgTG9naWNhbE5vdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHBy
KTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVVbmFyeVBsdXMoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIp
OyB9CisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVZvaWQoaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQogICAgIHsKICAgICAgICAgaW5jQ29u
c3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVm9pZE5vZGUobGlu
ZU51bWJlciwgZXhwcik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVm9pZE5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByKTsKICAgICB9Ci0gICAgRXhwcmVzc2lv
bk5vZGUqIHRoaXNFeHByKGludCBsaW5lTnVtYmVyKQorICAgIEV4cHJlc3Npb25Ob2RlKiB0aGlz
RXhwcihpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgICAgIHVz
ZXNUaGlzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVGhpc05vZGUobGlu
ZU51bWJlcik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVGhpc05vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZVJlc29sdmUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgc3Rh
cnQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVJlc29sdmUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgc3RhcnQpCiAgICAg
ewogICAgICAgICBpZiAobV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0g
KmlkZW50KQogICAgICAgICAgICAgdXNlc0FyZ3VtZW50cygpOwotICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsICppZGVudCwgc3RhcnQpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFJlc29sdmVOb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgKmlkZW50LCBzdGFydCk7CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVPYmplY3RMaXRlcmFsKGludCBsaW5lTnVtYmVyKSB7IHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgT2JqZWN0TGl0ZXJhbE5vZGUobGluZU51bWJlcik7IH0KLSAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQgbGluZU51bWJlciwgUHJvcGVydHlMaXN0Tm9k
ZSogcHJvcGVydGllcykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE9iamVjdExpdGVyYWxO
b2RlKGxpbmVOdW1iZXIsIHByb3BlcnRpZXMpOyB9CisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZU9iamVjdExpdGVyYWwoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpIHsgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBPYmplY3RMaXRlcmFsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpOyB9CisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU9iamVjdExpdGVyYWwoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFByb3BlcnR5TGlzdE5vZGUqIHByb3BlcnRpZXMp
IHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBPYmplY3RMaXRlcmFsTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHByb3BlcnRpZXMpOyB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIGludCBlbGlzaW9ucykKKyAgICBFeHByZXNzaW9uTm9k
ZSogY3JlYXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGludCBlbGlz
aW9ucykKICAgICB7CiAgICAgICAgIGlmIChlbGlzaW9ucykKICAgICAgICAgICAgIGluY0NvbnN0
YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5l
TnVtYmVyLCBlbGlzaW9ucyk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJy
YXlOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZWxpc2lvbnMpOwogICAgIH0KIAotICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJheShpbnQgbGluZU51bWJlciwgRWxlbWVudE5vZGUq
IGVsZW1zKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJyYXlOb2RlKGxpbmVOdW1iZXIs
IGVsZW1zKTsgfQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJheShpbnQgbGluZU51bWJl
ciwgaW50IGVsaXNpb25zLCBFbGVtZW50Tm9kZSogZWxlbXMpCisgICAgRXhwcmVzc2lvbk5vZGUq
IGNyZWF0ZUFycmF5KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFbGVtZW50Tm9k
ZSogZWxlbXMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcnJheU5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBlbGVtcyk7IH0KKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJy
YXkoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGludCBlbGlzaW9ucywgRWxlbWVu
dE5vZGUqIGVsZW1zKQogICAgIHsKICAgICAgICAgaWYgKGVsaXNpb25zKQogICAgICAgICAgICAg
aW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJyYXlO
b2RlKGxpbmVOdW1iZXIsIGVsaXNpb25zLCBlbGVtcyk7CisgICAgICAgIHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgQXJyYXlOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZWxpc2lvbnMs
IGVsZW1zKTsKICAgICB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bWJlckV4cHIoaW50
IGxpbmVOdW1iZXIsIGRvdWJsZSBkKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdW1iZXJF
eHByKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBkb3VibGUgZCkKICAgICB7CiAg
ICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IE51bWJlck5vZGUobGluZU51bWJlciwgZCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgTnVtYmVyTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGQpOwogICAgIH0KIAot
ICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVTdHJpbmcoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElk
ZW50aWZpZXIqIHN0cmluZykKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlU3RyaW5nKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBzdHJpbmcpCiAg
ICAgewogICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBTdHJpbmdOb2RlKGxpbmVOdW1iZXIsICpzdHJpbmcpOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIFN0cmluZ05vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAq
c3RyaW5nKTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQm9vbGVhbihpbnQg
bGluZU51bWJlciwgYm9vbCBiKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVCb29sZWFuKGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBib29sIGIpCiAgICAgewogICAgICAgICBp
bmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCb29sZWFu
Tm9kZShsaW5lTnVtYmVyLCBiKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBC
b29sZWFuTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGIpOwogICAgIH0KIAotICAgIEV4
cHJlc3Npb25Ob2RlKiBjcmVhdGVOdWxsKGludCBsaW5lTnVtYmVyKQorICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVOdWxsKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogICAgIHsK
ICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgTnVsbE5vZGUobGluZU51bWJlcik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgTnVsbE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKICAgICB9CiAKLSAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlQnJhY2tldEFjY2VzcyhpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eSwgYm9vbCBwcm9wZXJ0eUhhc0Fz
c2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlQnJhY2tldEFjY2VzcyhpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eSwgYm9vbCBw
cm9wZXJ0eUhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKICAg
ICB7Ci0gICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgQnJhY2tldEFjY2Vzc29yTm9kZShsaW5lTnVtYmVyLCBiYXNlLCBwcm9wZXJ0eSwgcHJvcGVy
dHlIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIG5vZGUgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgQnJhY2tldEFjY2Vzc29yTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIGJhc2UsIHByb3BlcnR5LCBwcm9wZXJ0eUhhc0Fzc2lnbm1lbnRzKTsKICAgICAgICAg
c2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICBy
ZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRG90QWNjZXNz
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciog
cHJvcGVydHksIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVEb3RBY2Nlc3MoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwgaW50IHN0YXJ0
LCBpbnQgZGl2b3QsIGludCBlbmQpCiAgICAgewotICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5v
ZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRG90QWNjZXNzb3JOb2RlKGxpbmVOdW1iZXIsIGJhc2Us
ICpwcm9wZXJ0eSk7CisgICAgICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9nbG9i
YWxEYXRhKSBEb3RBY2Nlc3Nvck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBiYXNlLCAq
cHJvcGVydHkpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2
b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVSZWdFeHAoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIHBhdHRl
cm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBpbnQgc3RhcnQpCisgICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZVJlZ0V4cChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3Qg
SWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MsIGludCBzdGFydCkK
ICAgICB7CiAgICAgICAgIGlmIChZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnVzdHJpbmcoKSkp
CiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgUmVnRXhwTm9kZSogbm9kZSA9IG5ldyAo
bV9nbG9iYWxEYXRhKSBSZWdFeHBOb2RlKGxpbmVOdW1iZXIsIHBhdHRlcm4sIGZsYWdzKTsKKyAg
ICAgICAgUmVnRXhwTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWdFeHBOb2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgcGF0dGVybiwgZmxhZ3MpOwogICAgICAgICBpbnQgc2l6
ZSA9IHBhdHRlcm4ubGVuZ3RoKCkgKyAyOyAvLyArIDIgZm9yIHRoZSB0d28gLydzCiAgICAgICAg
IHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBzdGFydCArIHNpemUsIHN0YXJ0ICsg
c2l6ZSk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVOZXdFeHByKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQXJn
dW1lbnRzTm9kZSogYXJndW1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKKyAg
ICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTmV3RXhwcihpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3VtZW50cywg
aW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiAgICAgewotICAgICAgICBOZXdFeHByTm9k
ZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBOZXdFeHByTm9kZShsaW5lTnVtYmVyLCBleHBy
LCBhcmd1bWVudHMpOworICAgICAgICBOZXdFeHByTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxE
YXRhKSBOZXdFeHByTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIsIGFyZ3VtZW50
cyk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5k
KTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNy
ZWF0ZU5ld0V4cHIoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3Rh
cnQsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU5ld0V4cHIoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQs
IGludCBlbmQpCiAgICAgewotICAgICAgICBOZXdFeHByTm9kZSogbm9kZSA9IG5ldyAobV9nbG9i
YWxEYXRhKSBOZXdFeHByTm9kZShsaW5lTnVtYmVyLCBleHByKTsKKyAgICAgICAgTmV3RXhwck5v
ZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTmV3RXhwck5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBleHByKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3Rh
cnQsIGVuZCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGNvbmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIHJo
cykKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQ29uZGl0aW9uYWxFeHByKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBFeHByZXNz
aW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogcmhzKQogICAgIHsKLSAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBDb25kaXRpb25hbE5vZGUobGluZU51bWJlciwgY29uZGl0aW9u
LCBsaHMsIHJocyk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uZGl0aW9u
YWxOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBsaHMsIHJocyk7CiAg
ICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFzc2lnblJlc29sdmUoaW50IGxpbmVO
dW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmhzLCBib29s
IHJoc0hhc0Fzc2lnbm1lbnQsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorICAgIEV4
cHJlc3Npb25Ob2RlKiBjcmVhdGVBc3NpZ25SZXNvbHZlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJocywg
Ym9vbCByaHNIYXNBc3NpZ25tZW50LCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKICAg
ICB7CiAgICAgICAgIGlmIChyaHMtPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxGdW5jRXhwck5vZGUqPihyaHMpLT5ib2R5KCktPnNldEluZmVycmVkTmFtZShpZGVu
dCk7Ci0gICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEp
IEFzc2lnblJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50LCByaHMsIHJoc0hhc0Fzc2lnbm1l
bnQpOworICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRh
KSBBc3NpZ25SZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGlkZW50LCByaHMs
IHJoc0hhc0Fzc2lnbm1lbnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBz
dGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4
cHJlc3Npb25Ob2RlKiBjcmVhdGVGdW5jdGlvbkV4cHIoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElk
ZW50aWZpZXIqIG5hbWUsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFtZXRlck5vZGUqIHBh
cmFtZXRlcnMsIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0
YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVGdW5j
dGlvbkV4cHIoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXIqIG5hbWUsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRl
cnMsIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGlu
ZSwgaW50IGJvZHlFbmRMaW5lKQogICAgIHsKLSAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4cHJOb2RlKGxpbmVOdW1iZXIsICpuYW1lLCBib2R5
LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9z
LCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5
U3RhcnRMaW5lLCBib2R5RW5kTGluZSk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0g
bmV3IChtX2dsb2JhbERhdGEpIEZ1bmNFeHByTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
ICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBj
bG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7CisgICAgICAgIGJvZHkt
PnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGVG
dW5jdGlvbkJvZHkoaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQorICAgIEZ1
bmN0aW9uQm9keU5vZGUqIGNyZWF0ZUZ1bmN0aW9uQm9keShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgYm9vbCBpblN0cmljdENvbnRleHQpCiAgICAgewotICAgICAgICByZXR1cm4g
RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgaW5TdHJp
Y3RDb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX2ds
b2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgaW5TdHJpY3RDb250ZXh0KTsKICAg
ICB9CiAgICAgCi0gICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVy
T3JTZXR0ZXJQcm9wZXJ0eShpbnQgbGluZU51bWJlciwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUs
IGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25C
b2R5Tm9kZSogYm9keSwgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBi
b2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCisgICAgdGVtcGxhdGUgPGJvb2w+IFByb3Bl
cnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIq
IG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgaW50
IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQg
Ym9keUVuZExpbmUpCiAgICAgewogICAgICAgICBBU1NFUlQobmFtZSk7Ci0gICAgICAgIGJvZHkt
PnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSk7CisgICAgICAgIGJvZHktPnNldExv
Yyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgYm9k
eS0+c2V0SW5mZXJyZWROYW1lKCpuYW1lKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCAqbmFtZSwgbmV3IChtX2dsb2JhbERhdGEp
IEZ1bmNFeHByTm9kZShsaW5lTnVtYmVyLCBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51
bGxJZGVudGlmaWVyLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNl
UG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1zKSwgdHlwZSk7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwg
Km5hbWUsIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBib2R5
LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9z
LCBib2R5U3RhcnRMaW5lKSwgcGFyYW1zKSwgdHlwZSk7CiAgICAgfQogICAgIAotICAgIHRlbXBs
YXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoSlNH
bG9iYWxEYXRhKiwgaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBkb3Vi
bGUgbmFtZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1zLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBp
bnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGlu
dCBib2R5RW5kTGluZSkKKyAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVH
ZXR0ZXJPclNldHRlclByb3BlcnR5KEpTR2xvYmFsRGF0YSosIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUsIFBhcmFt
ZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgaW50IG9wZW5CcmFjZVBv
cywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUp
CiAgICAgewotICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUp
OwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2Jh
bERhdGEsIG5hbWUsIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobGluZU51bWJlciwg
bV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgYm9keSwgbV9zb3Vy
Y2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0
YXJ0TGluZSksIHBhcmFtcyksIHR5cGUpOworICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0
TGluZSwgYm9keUVuZExpbmUsIGNvbHVtbk51bWJlcik7CisgICAgICAgIHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgUHJvcGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwgbmFtZSwgbmV3IChtX2dsb2Jh
bERhdGEpIEZ1bmNFeHByTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIG1fZ2xvYmFsRGF0
YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3Vi
RXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBw
YXJhbXMpLCB0eXBlKTsKICAgICB9CiAKICAgICBBcmd1bWVudHNOb2RlKiBjcmVhdGVBcmd1bWVu
dHMoKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRzTm9kZSgpOyB9CiAgICAg
QXJndW1lbnRzTm9kZSogY3JlYXRlQXJndW1lbnRzKEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MpIHsg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudHNOb2RlKGFyZ3MpOyB9Ci0gICAgQXJn
dW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRzTGlzdChpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGFyZykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5v
ZGUobGluZU51bWJlciwgYXJnKTsgfQotICAgIEFyZ3VtZW50TGlzdE5vZGUqIGNyZWF0ZUFyZ3Vt
ZW50c0xpc3QoaW50IGxpbmVOdW1iZXIsIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MsIEV4cHJlc3Np
b25Ob2RlKiBhcmcpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2Rl
KGxpbmVOdW1iZXIsIGFyZ3MsIGFyZyk7IH0KKyAgICBBcmd1bWVudExpc3ROb2RlKiBjcmVhdGVB
cmd1bWVudHNMaXN0KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogYXJnKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGFyZyk7IH0KKyAgICBBcmd1bWVudExpc3ROb2RlKiBj
cmVhdGVBcmd1bWVudHNMaXN0KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBBcmd1
bWVudExpc3ROb2RlKiBhcmdzLCBFeHByZXNzaW9uTm9kZSogYXJnKSB7IHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGFy
Z3MsIGFyZyk7IH0KIAogICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVBy
b3BlcnR5KGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5v
ZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlKQogICAgIHsKQEAgLTI5NCw4ICsyOTQsOCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlOb2RlKG1f
Z2xvYmFsRGF0YSwgKnByb3BlcnR5TmFtZSwgbm9kZSwgdHlwZSk7CiAgICAgfQogICAgIHRlbXBs
YXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KEpTR2xvYmFsRGF0YSosIGRv
dWJsZSBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5
cGUgdHlwZSkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2Jh
bERhdGEsIHByb3BlcnR5TmFtZSwgbm9kZSwgdHlwZSk7IH0KLSAgICBQcm9wZXJ0eUxpc3ROb2Rl
KiBjcmVhdGVQcm9wZXJ0eUxpc3QoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5Tm9kZSogcHJvcGVy
dHkpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eUxpc3ROb2RlKGxpbmVOdW1i
ZXIsIHByb3BlcnR5KTsgfQotICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlz
dChpbnQgbGluZU51bWJlciwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0eSwgUHJvcGVydHlMaXN0Tm9k
ZSogdGFpbCkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5TGlzdE5vZGUobGlu
ZU51bWJlciwgcHJvcGVydHksIHRhaWwpOyB9CisgICAgUHJvcGVydHlMaXN0Tm9kZSogY3JlYXRl
UHJvcGVydHlMaXN0KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBQcm9wZXJ0eU5v
ZGUqIHByb3BlcnR5KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlMaXN0Tm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHByb3BlcnR5KTsgfQorICAgIFByb3BlcnR5TGlz
dE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0eSwgUHJvcGVydHlMaXN0Tm9kZSogdGFpbCkgeyByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5TGlzdE5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBwcm9wZXJ0eSwgdGFpbCk7IH0KIAogICAgIEVsZW1lbnROb2RlKiBjcmVhdGVFbGVt
ZW50TGlzdChpbnQgZWxpc2lvbnMsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgRWxlbWVudE5vZGUoZWxpc2lvbnMsIGV4cHIpOyB9CiAgICAgRWxlbWVu
dE5vZGUqIGNyZWF0ZUVsZW1lbnRMaXN0KEVsZW1lbnROb2RlKiBlbGVtcywgaW50IGVsaXNpb25z
LCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVsZW1l
bnROb2RlKGVsZW1zLCBlbGlzaW9ucywgZXhwcik7IH0KQEAgLTMwOSwxOTEgKzMwOSwxOTEgQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZXRVc2VzQXJndW1lbnRzKEZ1bmN0aW9uQm9keU5vZGUqIG5v
ZGUpIHsgbm9kZS0+c2V0VXNlc0FyZ3VtZW50cygpOyB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVGdW5jRGVjbFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciog
bmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVycywg
aW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBp
bnQgYm9keUVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRnVuY0RlY2xTdGF0ZW1l
bnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIG5h
bWUsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcnMsIGlu
dCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50
IGJvZHlFbmRMaW5lKQogICAgIHsKLSAgICAgICAgRnVuY0RlY2xOb2RlKiBkZWNsID0gbmV3ICht
X2dsb2JhbERhdGEpIEZ1bmNEZWNsTm9kZShsaW5lTnVtYmVyLCAqbmFtZSwgYm9keSwgbV9zb3Vy
Y2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0
YXJ0TGluZSksIHBhcmFtZXRlcnMpOworICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wgPSBuZXcg
KG1fZ2xvYmFsRGF0YSkgRnVuY0RlY2xOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgKm5h
bWUsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3Nl
QnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbWV0ZXJzKTsKICAgICAgICAgaWYgKCpuYW1l
ID09IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKQogICAgICAgICAgICAg
dXNlc0FyZ3VtZW50cygpOwogICAgICAgICBtX3Njb3BlLm1fZnVuY0RlY2xhcmF0aW9ucy0+ZGF0
YS5hcHBlbmQoZGVjbC0+Ym9keSgpKTsKLSAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExp
bmUsIGJvZHlFbmRMaW5lKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJv
ZHlFbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gZGVjbDsKICAgICB9CiAK
LSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCbG9ja1N0YXRlbWVudChpbnQgbGluZU51bWJlciwg
SlNDOjpTb3VyY2VFbGVtZW50cyogZWxlbWVudHMsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5l
KQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJsb2NrU3RhdGVtZW50KGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBKU0M6OlNvdXJjZUVsZW1lbnRzKiBlbGVtZW50cywgaW50IHN0
YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBCbG9ja05vZGUqIGJsb2NrID0g
bmV3IChtX2dsb2JhbERhdGEpIEJsb2NrTm9kZShsaW5lTnVtYmVyLCBlbGVtZW50cyk7Ci0gICAg
ICAgIGJsb2NrLT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgQmxvY2tOb2Rl
KiBibG9jayA9IG5ldyAobV9nbG9iYWxEYXRhKSBCbG9ja05vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBlbGVtZW50cyk7CisgICAgICAgIGJsb2NrLT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRM
aW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gYmxvY2s7CiAgICAgfQogCi0gICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlRXhwclN0YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVFeHByU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRXhw
clN0YXRlbWVudE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBFeHByU3RhdGVtZW50
Tm9kZShsaW5lTnVtYmVyLCBleHByKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVu
ZCk7CisgICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgRXhwclN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByKTsKKyAg
ICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgY29sdW1uTnVtYmVyKTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVJZlN0YXRl
bWVudChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50
Tm9kZSogdHJ1ZUJsb2NrLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlSWZTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywgaW50IHN0YXJ0
LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgSWZOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgSWZOb2RlKGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrKTsKLSAgICAgICAg
cmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCk7CisgICAgICAgIElmTm9kZSogcmVzdWx0ID0gbmV3
IChtX2dsb2JhbERhdGEpIElmTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlv
biwgdHJ1ZUJsb2NrKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgY29sdW1u
TnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnRO
b2RlKiBjcmVhdGVJZlN0YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNv
bmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogdHJ1ZUJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmYWxzZUJs
b2NrLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlSWZTdGF0
ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBj
b25kaXRpb24sIFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywgU3RhdGVtZW50Tm9kZSogZmFsc2VC
bG9jaywgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgSWZOb2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgSWZFbHNlTm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24sIHRy
dWVCbG9jaywgZmFsc2VCbG9jayk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQp
OworICAgICAgICBJZk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBJZkVsc2VOb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIGZhbHNlQmxv
Y2spOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBjb2x1bW5OdW1iZXIpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0
ZUZvckxvb3AoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplciwgRXhw
cmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5v
ZGUqIHN0YXRlbWVudHMsIGJvb2wgYiwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZUZvckxvb3AoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGJvb2wgYiwgaW50
IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRm9yTm9kZSogcmVzdWx0ID0gbmV3ICht
X2dsb2JhbERhdGEpIEZvck5vZGUobGluZU51bWJlciwgaW5pdGlhbGl6ZXIsIGNvbmRpdGlvbiwg
aXRlciwgc3RhdGVtZW50cywgYik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQp
OworICAgICAgICBGb3JOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9yTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGluaXRpYWxpemVyLCBjb25kaXRpb24sIGl0ZXIsIHN0
YXRlbWVudHMsIGIpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBjb2x1bW5O
dW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5v
ZGUqIGNyZWF0ZUZvckluTG9vcChpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciogaWRl
bnQsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplciwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0
YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCBp
bnQgaW5pdFN0YXJ0LCBpbnQgaW5pdEVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisg
ICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluaXRp
YWxpemVyLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywg
aW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQsIGludCBpbml0U3RhcnQsIGludCBpbml0RW5k
LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIEZvckluTm9kZSog
cmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZvckluTm9kZShtX2dsb2JhbERhdGEsIGxpbmVO
dW1iZXIsICppZGVudCwgaW5pdGlhbGl6ZXIsIGl0ZXIsIHN0YXRlbWVudHMsIGluaXRTdGFydCwg
aW5pdFN0YXJ0IC0gc3RhcnQsIGluaXRFbmQgLSBpbml0U3RhcnQpOwotICAgICAgICByZXN1bHQt
PnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICBGb3JJbk5vZGUqIHJlc3VsdCA9
IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JJbk5vZGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsICppZGVudCwgaW5pdGlhbGl6ZXIsIGl0ZXIsIHN0YXRlbWVudHMsIGluaXRT
dGFydCwgaW5pdFN0YXJ0IC0gc3RhcnQsIGluaXRFbmQgLSBpbml0U3RhcnQpOworICAgICAgICBy
ZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAg
IHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGRpdm90ICsgMSwgZW5kKTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVG
b3JJbkxvb3AoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25O
b2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgZVN0YXJ0LCBpbnQgZURp
dm90LCBpbnQgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZUZvckluTG9vcChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVu
dHMsIGludCBlU3RhcnQsIGludCBlRGl2b3QsIGludCBlRW5kLCBpbnQgc3RhcnQsIGludCBlbmQp
CiAgICAgewotICAgICAgICBGb3JJbk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBG
b3JJbk5vZGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBsaHMsIGl0ZXIsIHN0YXRlbWVudHMp
OwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAgICAgICAgRm9ySW5Ob2Rl
KiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9ySW5Ob2RlKG1fZ2xvYmFsRGF0YSwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMsIGl0ZXIsIHN0YXRlbWVudHMpOworICAgICAgICBy
ZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZURpdm90LCBlRW5kKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVFbXB0eVN0YXRl
bWVudChpbnQgbGluZU51bWJlcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVtcHR5U3Rh
dGVtZW50Tm9kZShsaW5lTnVtYmVyKTsgfQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUVtcHR5
U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKSB7IHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgRW1wdHlTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
cik7IH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVZhclN0YXRlbWVudChpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVWYXJTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewog
ICAgICAgICBTdGF0ZW1lbnROb2RlKiByZXN1bHQ7CiAgICAgICAgIGlmICghZXhwcikKLSAgICAg
ICAgICAgIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBFbXB0eVN0YXRlbWVudE5vZGUobGlu
ZU51bWJlcik7CisgICAgICAgICAgICByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRW1wdHlT
dGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBWYXJTdGF0ZW1lbnROb2RlKGxp
bmVOdW1iZXIsIGV4cHIpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBWYXJTdGF0ZW1lbnROb2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0
YXJ0LCBlbmQsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
Ci0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlUmV0dXJuU3RhdGVtZW50KGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcmVzc2lvbiwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBz
dGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVJldHVyblN0
YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHJlc3Npb24sIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5k
TGluZSkKICAgICB7Ci0gICAgICAgIFJldHVybk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxE
YXRhKSBSZXR1cm5Ob2RlKGxpbmVOdW1iZXIsIGV4cHJlc3Npb24pOworICAgICAgICBSZXR1cm5O
b2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmV0dXJuTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGV4cHJlc3Npb24pOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihy
ZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0
TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGlu
ZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBT
dGF0ZW1lbnROb2RlKiBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGVT
dGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZUJyZWFrU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAg
ICAgewotICAgICAgICBCcmVha05vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBCcmVh
a05vZGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyKTsKKyAgICAgICAgQnJlYWtOb2RlKiByZXN1
bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJlYWtOb2RlKG1fZ2xvYmFsRGF0YSwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBl
U3RhcnQsIGVFbmQsIGVFbmQpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVu
ZExpbmUpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVt
bk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50LCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExp
bmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgZVN0YXJ0
LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBC
cmVha05vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBCcmVha05vZGUobGluZU51bWJl
ciwgKmlkZW50KTsKKyAgICAgICAgQnJlYWtOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgQnJlYWtOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgKmlkZW50KTsKICAgICAgICAg
c2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQpOwotICAgICAg
ICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXN1bHQtPnNl
dExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGludWVTdGF0ZW1l
bnQoaW50IGxpbmVOdW1iZXIsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBp
bnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVDb250aW51ZVN0YXRlbWVudChp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgaW50IGVTdGFydCwgaW50IGVFbmQsIGlu
dCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQ29udGludWVOb2RlKiBy
ZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29udGludWVOb2RlKG1fZ2xvYmFsRGF0YSwgbGlu
ZU51bWJlcik7CisgICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERh
dGEpIENvbnRpbnVlTm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7
CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5k
KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAg
cmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNvbnRp
bnVlU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgaW50
IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgaW50IGVTdGFydCwgaW50IGVFbmQs
IGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQ29udGludWVOb2Rl
KiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29udGludWVOb2RlKGxpbmVOdW1iZXIsICpp
ZGVudCk7CisgICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEp
IENvbnRpbnVlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICppZGVudCk7CiAgICAgICAg
IHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAg
ICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5z
ZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVRyeVN0YXRlbWVudChp
bnQgbGluZU51bWJlciwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50LCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5
QmxvY2ssIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZVRyeVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU3RhdGVt
ZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBTdGF0ZW1lbnROb2Rl
KiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2ssIGludCBzdGFydExpbmUs
IGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgVHJ5Tm9kZSogcmVzdWx0ID0gbmV3IChtX2ds
b2JhbERhdGEpIFRyeU5vZGUobGluZU51bWJlciwgdHJ5QmxvY2ssICppZGVudCwgY2F0Y2hCbG9j
aywgZmluYWxseUJsb2NrKTsKKyAgICAgICAgVHJ5Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2Jh
bERhdGEpIFRyeU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0cnlCbG9jaywgKmlkZW50
LCBjYXRjaEJsb2NrLCBmaW5hbGx5QmxvY2spOwogICAgICAgICBpZiAoY2F0Y2hCbG9jaykKICAg
ICAgICAgICAgIHVzZXNDYXRjaCgpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUs
IGVuZExpbmUpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNv
bHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlU3dpdGNoU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwciwgQ2xhdXNlTGlzdE5vZGUqIGZpcnN0Q2xhdXNlcywgQ2FzZUNsYXVzZU5vZGUq
IGRlZmF1bHRDbGF1c2UsIENsYXVzZUxpc3ROb2RlKiBzZWNvbmRDbGF1c2VzLCBpbnQgc3RhcnRM
aW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVTd2l0Y2hTdGF0ZW1l
bnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
LCBDbGF1c2VMaXN0Tm9kZSogZmlyc3RDbGF1c2VzLCBDYXNlQ2xhdXNlTm9kZSogZGVmYXVsdENs
YXVzZSwgQ2xhdXNlTGlzdE5vZGUqIHNlY29uZENsYXVzZXMsIGludCBzdGFydExpbmUsIGludCBl
bmRMaW5lKQogICAgIHsKICAgICAgICAgQ2FzZUJsb2NrTm9kZSogY2FzZXMgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgQ2FzZUJsb2NrTm9kZShmaXJzdENsYXVzZXMsIGRlZmF1bHRDbGF1c2UsIHNlY29u
ZENsYXVzZXMpOwotICAgICAgICBTd2l0Y2hOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgU3dpdGNoTm9kZShsaW5lTnVtYmVyLCBleHByLCBjYXNlcyk7Ci0gICAgICAgIHJlc3VsdC0+
c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIFN3aXRjaE5vZGUqIHJlc3VsdCA9
IG5ldyAobV9nbG9iYWxEYXRhKSBTd2l0Y2hOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
ZXhwciwgY2FzZXMpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUs
IGNvbHVtbk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlV2hpbGVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBzdGFydExpbmUsIGlu
dCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVdoaWxlU3RhdGVtZW50KGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0g
ICAgICAgIFdoaWxlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFdoaWxlTm9kZShs
aW5lTnVtYmVyLCBleHByLCBzdGF0ZW1lbnQpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFy
dExpbmUsIGVuZExpbmUpOworICAgICAgICBXaGlsZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9i
YWxEYXRhKSBXaGlsZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByLCBzdGF0ZW1l
bnQpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVtbk51
bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlRG9XaGlsZVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgU3RhdGVtZW50Tm9kZSog
c3RhdGVtZW50LCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExp
bmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRG9XaGlsZVN0YXRlbWVudChpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBFeHByZXNz
aW9uTm9kZSogZXhwciwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAg
ICBEb1doaWxlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIERvV2hpbGVOb2RlKGxp
bmVOdW1iZXIsIHN0YXRlbWVudCwgZXhwcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0
TGluZSwgZW5kTGluZSk7CisgICAgICAgIERvV2hpbGVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgRG9XaGlsZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0ZW1lbnQs
IGV4cHIpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGNvbHVt
bk51bWJlcik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlTGFiZWxTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50LCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBzdGFydCwgaW50IGVuZCkK
KyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVMYWJlbFN0YXRlbWVudChpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUq
IHN0YXRlbWVudCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgTGFiZWxOb2Rl
KiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTGFiZWxOb2RlKGxpbmVOdW1iZXIsICppZGVu
dCwgc3RhdGVtZW50KTsKKyAgICAgICAgTGFiZWxOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgTGFiZWxOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgKmlkZW50LCBzdGF0ZW1l
bnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIHN0YXJ0LCBlbmQsIGVu
ZCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlV2l0aFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIs
IFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRM
aW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaXRoU3RhdGVtZW50
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwg
U3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBzdGFydExp
bmUsIGludCBlbmRMaW5lKQogICAgIHsKICAgICAgICAgdXNlc1dpdGgoKTsKLSAgICAgICAgV2l0
aE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBXaXRoTm9kZShsaW5lTnVtYmVyLCBl
eHByLCBzdGF0ZW1lbnQsIGVuZCwgZW5kIC0gc3RhcnQpOwotICAgICAgICByZXN1bHQtPnNldExv
YyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICBXaXRoTm9kZSogcmVzdWx0ID0gbmV3ICht
X2dsb2JhbERhdGEpIFdpdGhOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwciwgc3Rh
dGVtZW50LCBlbmQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lLCBjb2x1bW5OdW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0gICAgCiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlVGhyb3dTdGF0ZW1lbnQoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQsIGlu
dCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVRocm93
U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkK
ICAgICB7Ci0gICAgICAgIFRocm93Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFRo
cm93Tm9kZShsaW5lTnVtYmVyLCBleHByKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lKTsKKyAgICAgICAgVGhyb3dOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgVGhyb3dOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcik7CisgICAgICAg
IHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAg
ICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBzdGFydCwgZW5kLCBlbmQpOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVE
ZWJ1Z2dlcihpbnQgbGluZU51bWJlciwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlRGVidWdnZXIoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgRGVidWdn
ZXJTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVidWdnZXJTdGF0
ZW1lbnROb2RlKGxpbmVOdW1iZXIpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUs
IGVuZExpbmUpOworICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5vZGUqIHJlc3VsdCA9IG5ldyAo
bV9nbG9iYWxEYXRhKSBEZWJ1Z2dlclN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBjb2x1bW5O
dW1iZXIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBTdGF0ZW1l
bnROb2RlKiBjcmVhdGVDb25zdFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgQ29uc3REZWNsTm9k
ZSogZGVjbHMsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZUNvbnN0U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBD
b25zdERlY2xOb2RlKiBkZWNscywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewot
ICAgICAgICBDb25zdFN0YXRlbWVudE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBD
b25zdFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgZGVjbHMpOwotICAgICAgICByZXN1bHQtPnNl
dExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICBDb25zdFN0YXRlbWVudE5vZGUqIHJl
c3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb25zdFN0YXRlbWVudE5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBkZWNscyk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwg
ZW5kTGluZSwgY29sdW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAK
LSAgICBDb25zdERlY2xOb2RlKiBhcHBlbmRDb25zdERlY2woaW50IGxpbmVOdW1iZXIsIENvbnN0
RGVjbE5vZGUqIHRhaWwsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiBp
bml0aWFsaXplcikKKyAgICBDb25zdERlY2xOb2RlKiBhcHBlbmRDb25zdERlY2woaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIENvbnN0RGVjbE5vZGUqIHRhaWwsIGNvbnN0IElkZW50
aWZpZXIqIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikKICAgICB7Ci0gICAgICAg
IENvbnN0RGVjbE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb25zdERlY2xOb2Rl
KGxpbmVOdW1iZXIsICpuYW1lLCBpbml0aWFsaXplcik7CisgICAgICAgIENvbnN0RGVjbE5vZGUq
IHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb25zdERlY2xOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgKm5hbWUsIGluaXRpYWxpemVyKTsKICAgICAgICAgaWYgKHRhaWwpCiAgICAg
ICAgICAgICB0YWlsLT5tX25leHQgPSByZXN1bHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBA
IC01MTEsNyArNTExLDcgQEAgcHVibGljOgogICAgICAgICBtX3Njb3BlLm1fdmFyRGVjbGFyYXRp
b25zLT5kYXRhLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpZGVudCwgYXR0cnMpKTsKICAgICB9CiAK
LSAgICBFeHByZXNzaW9uTm9kZSogY29tYmluZUNvbW1hTm9kZXMoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBsaXN0LCBFeHByZXNzaW9uTm9kZSogaW5pdCkKKyAgICBFeHByZXNzaW9u
Tm9kZSogY29tYmluZUNvbW1hTm9kZXMoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBsaXN0LCBFeHByZXNzaW9uTm9kZSogaW5pdCkKICAgICB7CiAgICAg
ICAgIGlmICghbGlzdCkKICAgICAgICAgICAgIHJldHVybiBpbml0OwpAQCAtNTE5LDcgKzUxOSw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHN0YXRpY19jYXN0PENvbW1hTm9kZSo+KGxpc3QpLT5h
cHBlbmQoaW5pdCk7CiAgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAgfQotICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbW1hTm9kZShsaW5lTnVtYmVyLCBsaXN0LCBp
bml0KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBDb21tYU5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBsaXN0LCBpbml0KTsKICAgICB9CiAKICAgICBpbnQgZXZhbENv
dW50KCkgY29uc3QgeyByZXR1cm4gbV9ldmFsQ291bnQ7IH0KQEAgLTU0NywxMCArNTQ3LDEwIEBA
IHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG9wZXJhbmRTdGFja0RlcHRoID49IDApOwogICAgICAg
ICBtX2JpbmFyeU9wZXJhbmRTdGFjay5yZXNpemUobV9iaW5hcnlPcGVyYW5kU3RhY2suc2l6ZSgp
IC0gYW1vdW50KTsKICAgICB9Ci0gICAgdm9pZCBhcHBlbmRCaW5hcnlPcGVyYXRpb24oaW50IGxp
bmVOdW1iZXIsIGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCYsIGNvbnN0IEJpbmFyeU9wZXJh
bmQmIGxocywgY29uc3QgQmluYXJ5T3BlcmFuZCYgcmhzKQorICAgIHZvaWQgYXBwZW5kQmluYXJ5
T3BlcmF0aW9uKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQmIG9wZXJhbmRT
dGFja0RlcHRoLCBpbnQmLCBjb25zdCBCaW5hcnlPcGVyYW5kJiBsaHMsIGNvbnN0IEJpbmFyeU9w
ZXJhbmQmIHJocykKICAgICB7CiAgICAgICAgIG9wZXJhbmRTdGFja0RlcHRoKys7Ci0gICAgICAg
IG1fYmluYXJ5T3BlcmFuZFN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihtYWtlQmluYXJ5Tm9k
ZShsaW5lTnVtYmVyLCBtX2JpbmFyeU9wZXJhdG9yU3RhY2subGFzdCgpLmZpcnN0LCBsaHMsIHJo
cyksIEJpbmFyeU9wSW5mbyhsaHMuc2Vjb25kLCByaHMuc2Vjb25kKSkpOworICAgICAgICBtX2Jp
bmFyeU9wZXJhbmRTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIobWFrZUJpbmFyeU5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBtX2JpbmFyeU9wZXJhdG9yU3RhY2subGFzdCgpLmZpcnN0
LCBsaHMsIHJocyksIEJpbmFyeU9wSW5mbyhsaHMuc2Vjb25kLCByaHMuc2Vjb25kKSkpOwogICAg
IH0KICAgICB2b2lkIG9wZXJhdG9yU3RhY2tBcHBlbmQoaW50JiBvcGVyYXRvclN0YWNrRGVwdGgs
IGludCBvcCwgaW50IHByZWNlZGVuY2UpCiAgICAgewpAQCAtNTkyLDkgKzU5Miw5IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmFwcGVuZChBc3NpZ25tZW50SW5mbyhu
b2RlLCBzdGFydCwgZGl2b3QsIGFzc2lnbm1lbnRDb3VudCwgb3ApKTsKICAgICB9CiAKLSAgICBF
eHByZXNzaW9uTm9kZSogY3JlYXRlQXNzaWdubWVudChpbnQgbGluZU51bWJlciwgaW50JiBhc3Np
Z25tZW50U3RhY2tEZXB0aCwgRXhwcmVzc2lvbk5vZGUqIHJocywgaW50IGluaXRpYWxBc3NpZ25t
ZW50Q291bnQsIGludCBjdXJyZW50QXNzaWdubWVudENvdW50LCBpbnQgbGFzdFRva2VuRW5kKQor
ICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBc3NpZ25tZW50KGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBpbnQmIGFzc2lnbm1lbnRTdGFja0RlcHRoLCBFeHByZXNzaW9uTm9kZSog
cmhzLCBpbnQgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgaW50IGN1cnJlbnRBc3NpZ25tZW50Q291
bnQsIGludCBsYXN0VG9rZW5FbmQpCiAgICAgewotICAgICAgICBFeHByZXNzaW9uTm9kZSogcmVz
dWx0ID0gbWFrZUFzc2lnbk5vZGUobGluZU51bWJlciwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxh
c3QoKS5tX25vZGUsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9vcCwgcmhzLCBtX2Fz
c2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1faW5pdEFzc2lnbm1lbnRzICE9IGluaXRpYWxBc3Np
Z25tZW50Q291bnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9pbml0QXNzaWdubWVu
dHMgIT0gY3VycmVudEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3Qo
KS5tX3N0YXJ0LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fZGl2b3QgKyAxLCBsYXN0
VG9rZW5FbmQpOworICAgICAgICBFeHByZXNzaW9uTm9kZSogcmVzdWx0ID0gbWFrZUFzc2lnbk5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgp
Lm1fbm9kZSwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX29wLCByaHMsIG1fYXNzaWdu
bWVudEluZm9TdGFjay5sYXN0KCkubV9pbml0QXNzaWdubWVudHMgIT0gaW5pdGlhbEFzc2lnbm1l
bnRDb3VudCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX2luaXRBc3NpZ25tZW50cyAh
PSBjdXJyZW50QXNzaWdubWVudENvdW50LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1f
c3RhcnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9kaXZvdCArIDEsIGxhc3RUb2tl
bkVuZCk7CiAgICAgICAgIG1fYXNzaWdubWVudEluZm9TdGFjay5yZW1vdmVMYXN0KCk7CiAgICAg
ICAgIGFzc2lnbm1lbnRTdGFja0RlcHRoLS07CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC02
MzUsOSArNjM1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgbV9ldmFsQ291bnQrKzsKICAgICAgICAg
bV9zY29wZS5tX2ZlYXR1cmVzIHw9IEV2YWxGZWF0dXJlOwogICAgIH0KLSAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlTnVtYmVyKGludCBsaW5lTnVtYmVyLCBkb3VibGUgZCkKKyAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlTnVtYmVyKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBk
b3VibGUgZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTnVtYmVy
Tm9kZShsaW5lTnVtYmVyLCBkKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBO
dW1iZXJOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZCk7CiAgICAgfQogICAgIAogICAg
IEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwpAQCAtNjUwLDMzICs2NTAsMzMgQEAgcHJpdmF0
ZToKICAgICBpbnQgbV9ldmFsQ291bnQ7CiB9OwogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRl
cjo6bWFrZVR5cGVPZk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQor
RXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VUeXBlT2ZOb2RlKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKIHsKICAgICBpZiAoZXhw
ci0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3Rh
dGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihleHByKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBUeXBlT2ZSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVy
KCkpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFR5cGVPZlJlc29sdmVOb2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpKTsKICAgICB9
Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUeXBlT2ZWYWx1ZU5vZGUobGluZU51bWJl
ciwgZXhwcik7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUeXBlT2ZWYWx1ZU5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFT
VEJ1aWxkZXI6Om1ha2VEZWxldGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZURlbGV0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKIHsK
ICAgICBpZiAoIWV4cHItPmlzTG9jYXRpb24oKSkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBEZWxldGVWYWx1ZU5vZGUobGluZU51bWJlciwgZXhwcik7CisgICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlVmFsdWVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgZXhwcik7CiAgICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBS
ZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZXhwcik7Ci0g
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlUmVzb2x2ZU5vZGUobGluZU51
bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0g
ZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZVJlc29sdmVO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBkaXZv
dCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBpZiAoZXhwci0+aXNC
cmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJh
Y2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEZWxldGVCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBi
cmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBkaXZvdCwgZGl2b3QgLSBzdGFy
dCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0
ZUJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBi
cmFja2V0LT5zdWJzY3JpcHQoKSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsK
ICAgICB9CiAgICAgQVNTRVJUKGV4cHItPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFj
Y2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZXhwcik7Ci0g
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEZWxldGVEb3ROb2RlKGxpbmVOdW1iZXIsIGRv
dC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAt
IGRpdm90KTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZURvdE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRp
dm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBB
U1RCdWlsZGVyOjptYWtlTmVnYXRlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IG4pCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBuKQogewogICAgIGlmIChu
LT5pc051bWJlcigpKSB7CiAgICAgICAgIE51bWJlck5vZGUqIG51bWJlck5vZGUgPSBzdGF0aWNf
Y2FzdDxOdW1iZXJOb2RlKj4obik7CkBAIC02ODQsMTI4ICs2ODQsMTI4IEBAIEV4cHJlc3Npb25O
b2RlKiBBU1RCdWlsZGVyOjptYWtlTmVnYXRlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIG4pCiAgICAgICAgIHJldHVybiBudW1iZXJOb2RlOwogICAgIH0KIAotICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgTmVnYXRlTm9kZShsaW5lTnVtYmVyLCBuKTsKKyAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIE5lZ2F0ZU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBuKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXR3aXNlTm90Tm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCitFeHByZXNzaW9uTm9kZSog
QVNUQnVpbGRlcjo6bWFrZUJpdHdpc2VOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKIHsKICAgICBpZiAoZXhwci0+aXNOdW1iZXIo
KSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB+dG9JbnQzMihzdGF0
aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwciktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIEJpdHdpc2VOb3ROb2RlKGxpbmVOdW1iZXIsIGV4cHIpOworICAgICAgICBy
ZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgfnRvSW50MzIoc3Rh
dGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIpLT52YWx1ZSgpKSk7CisgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBCaXR3aXNlTm90Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4
cHIpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU11bHROb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VNdWx0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cykKIHsKICAgICBleHByMSA9IGV4cHIxLT5zdHJpcFVuYXJ5UGx1cygpOwogICAgIGV4cHIyID0g
ZXhwcjItPnN0cmlwVW5hcnlQbHVzKCk7CiAKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYg
ZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJl
ciwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAqIHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVt
YmVyKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4
cHIxKS0+dmFsdWUoKSAqIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkp
OwogCiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIHN0YXRpY19jYXN0PE51bWJlck5vZGUq
PihleHByMSktPnZhbHVlKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBVbmFyeVBsdXNOb2RlKGxpbmVOdW1iZXIsIGV4cHIyKTsKKyAgICAgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBVbmFyeVBsdXNOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhw
cjIpOwogCiAgICAgaWYgKGV4cHIyLT5pc051bWJlcigpICYmIHN0YXRpY19jYXN0PE51bWJlck5v
ZGUqPihleHByMiktPnZhbHVlKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBVbmFyeVBsdXNOb2RlKGxpbmVOdW1iZXIsIGV4cHIxKTsKKyAgICAgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBVbmFyeVBsdXNOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwg
ZXhwcjEpOwogCi0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBNdWx0Tm9kZShsaW5lTnVt
YmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgTXVsdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSwg
ZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVp
bGRlcjo6bWFrZURpdk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNz
aW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZURpdk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgZXhwcjEgPSBleHByMS0+c3RyaXBVbmFy
eVBsdXMoKTsKICAgICBleHByMiA9IGV4cHIyLT5zdHJpcFVuYXJ5UGx1cygpOwogCiAgICAgaWYg
KGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4g
Y3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSkt
PnZhbHVlKCkgLyBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKLSAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERpdk5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4
cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSkt
PnZhbHVlKCkgLyBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKKyAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERpdk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZU1vZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU1vZE5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgZXhwcjEgPSBleHBy
MS0+c3RyaXBVbmFyeVBsdXMoKTsKICAgICBleHByMiA9IGV4cHIyLT5zdHJpcFVuYXJ5UGx1cygp
OwogICAgIAogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBmbW9kKHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCksIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihl
eHByMiktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE1vZE5vZGUo
bGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGZtb2Qoc3RhdGlj
X2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9k
ZSo+KGV4cHIyKS0+dmFsdWUoKSkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTW9k
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQWRkTm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVy
OjptYWtlQWRkTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKIHsKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkp
Ci0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgc3RhdGljX2Nhc3Q8TnVt
YmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSArIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHBy
MiktPnZhbHVlKCkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQWRkTm9kZShsaW5l
TnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICByZXR1
cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGljX2Nhc3Q8TnVt
YmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSArIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHBy
MiktPnZhbHVlKCkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQWRkTm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlU3ViTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlU3Vi
Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsK
ICAgICBleHByMSA9IGV4cHIxLT5zdHJpcFVuYXJ5UGx1cygpOwogICAgIGV4cHIyID0gZXhwcjIt
PnN0cmlwVW5hcnlQbHVzKCk7CiAKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjIt
PmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgc3Rh
dGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAtIHN0YXRpY19jYXN0PE51bWJl
ck5vZGUqPihleHByMiktPnZhbHVlKCkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
U3ViTm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwor
ICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3Rh
dGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAtIHN0YXRpY19jYXN0PE51bWJl
ck5vZGUqPihleHByMiktPnZhbHVlKCkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
U3ViTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTGVmdFNo
aWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBB
U1RCdWlsZGVyOjptYWtlTGVmdFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhw
cjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwg
dG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA8PCAodG9V
SW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7
Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMZWZ0U2hpZnROb2RlKGxpbmVOdW1iZXIs
IGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVh
dGVOdW1iZXIobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCB0b0ludDMyKHN0YXRpY19jYXN0PE51
bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpIDw8ICh0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1i
ZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSAmIDB4MWYpKTsKKyAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIExlZnRTaGlmdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHByMSwg
ZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVp
bGRlcjo6bWFrZVJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQor
RXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBpZiAoZXhwcjEt
PmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVO
dW1iZXIobGluZU51bWJlciwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEp
LT52YWx1ZSgpKSA+PiAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+
dmFsdWUoKSkgJiAweDFmKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBSaWdodFNo
aWZ0Tm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwor
ICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdG9J
bnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA+PiAodG9VSW50
MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7Cisg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBSaWdodFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4
cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlVVJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VVUmln
aHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQot
ICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvVUludDMyKHN0YXRpY19j
YXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpID4+ICh0b1VJbnQzMihzdGF0aWNfY2Fz
dDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSAmIDB4MWYpKTsKLSAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGUobGluZU51bWJlciwgZXhwcjEs
IGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJl
cihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5v
ZGUqPihleHByMSktPnZhbHVlKCkpID4+ICh0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2Rl
Kj4oZXhwcjIpLT52YWx1ZSgpKSAmIDB4MWYpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBleHBy
MSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZUJpdE9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4
cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0T3JOb2RlKGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1i
ZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihs
aW5lTnVtYmVyLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVl
KCkpIHwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7
Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCaXRPck5vZGUobGluZU51bWJlciwgZXhw
cjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51
bWJlcihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVy
Tm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgfCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUq
PihleHByMiktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdE9y
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0QW5kTm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWls
ZGVyOjptYWtlQml0QW5kTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cykKIHsKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVt
YmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgdG9JbnQzMihz
dGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSAmIHRvSW50MzIoc3RhdGlj
X2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOwotICAgIHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgQml0QW5kTm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1
ZSgpKSAmIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkp
OworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0QW5kTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4
cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0WE9yTm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0WE9yTm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAg
ICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJl
dHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJO
b2RlKj4oZXhwcjEpLT52YWx1ZSgpKSBeIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIyKS0+dmFsdWUoKSkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0WE9y
Tm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAg
ICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgdG9JbnQz
MihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSBeIHRvSW50MzIoc3Rh
dGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOworICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgQml0WE9yTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGV4cHIx
LCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RC
dWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGZ1bmMsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQg
ZW5kKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZnVuYywgQXJn
dW1lbnRzTm9kZSogYXJncywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiB7CiAgICAg
aWYgKCFmdW5jLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKGxpbmVOdW1iZXIsIGZ1bmMsIGFyZ3MsIGRpdm90LCBk
aXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZnVu
YywgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBpZiAoZnVu
Yy0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3Rh
dGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihmdW5jKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllciA9IHJlc29sdmUtPmlkZW50aWZpZXIoKTsKICAgICAgICAgaWYgKGlkZW50aWZp
ZXIgPT0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFsKSB7CiAgICAgICAgICAgICB1
c2VzRXZhbCgpOwotICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFdmFsRnVu
Y3Rpb25DYWxsTm9kZShsaW5lTnVtYmVyLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5k
IC0gZGl2b3QpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFdmFsRnVu
Y3Rpb25DYWxsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGFyZ3MsIGRpdm90LCBkaXZv
dCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBpZGVudGlm
aWVyLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgaWRlbnRpZmllciwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQs
IGVuZCAtIGRpdm90KTsKICAgICB9CiAgICAgaWYgKGZ1bmMtPmlzQnJhY2tldEFjY2Vzc29yTm9k
ZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBzdGF0aWNfY2Fz
dDxCcmFja2V0QWNjZXNzb3JOb2RlKj4oZnVuYyk7Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbEJyYWNr
ZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2Rl
KGxpbmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGFyZ3Ms
IGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIEZ1bmN0aW9uQ2Fs
bEJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbEJyYWNr
ZXROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0
LT5zdWJzY3JpcHQoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsK
ICAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJh
Y2tldC0+ZW5kT2Zmc2V0KCkpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CkBAIC04MTMs
MTE4ICs4MTMsMTE4IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25D
YWxsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqCiAgICAgRG90QWNjZXNzb3JO
b2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihmdW5jKTsKICAgICBGdW5j
dGlvbkNhbGxEb3ROb2RlKiBub2RlOwogICAgIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX2ds
b2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmNhbGwpCi0gICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNlKCks
IGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOworICAgICAgICBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIENhbGxGdW5jdGlvbkNhbGxE
b3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIGVs
c2UgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+
YXBwbHkpCi0gICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXBwbHlGdW5jdGlvbkNh
bGxEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJn
cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgbm9kZSA9IG5l
dyAobV9nbG9iYWxEYXRhKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBk
aXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgZWxzZQotICAgICAgICBub2RlID0gbmV3
IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNl
KCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0g
ZGl2b3QpOworICAgICAgICBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbERv
dE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlm
aWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgbm9k
ZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPmVuZE9mZnNldCgpKTsK
ICAgICByZXR1cm4gbm9kZTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VC
aW5hcnlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgdG9rZW4sIHBhaXI8RXhwcmVzc2lvbk5vZGUq
LCBCaW5hcnlPcEluZm8+IGxocywgcGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4g
cmhzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaW5hcnlOb2RlKGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBpbnQgdG9rZW4sIHBhaXI8RXhwcmVzc2lvbk5vZGUq
LCBCaW5hcnlPcEluZm8+IGxocywgcGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4g
cmhzKQogewogICAgIHN3aXRjaCAodG9rZW4pIHsKICAgICBjYXNlIE9SOgotICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxPcE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0
LCByaHMuZmlyc3QsIE9wTG9naWNhbE9yKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBMb2dpY2FsT3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCBy
aHMuZmlyc3QsIE9wTG9naWNhbE9yKTsKIAogICAgIGNhc2UgQU5EOgotICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxPcE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCBy
aHMuZmlyc3QsIE9wTG9naWNhbEFuZCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgTG9naWNhbE9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhz
LmZpcnN0LCBPcExvZ2ljYWxBbmQpOwogCiAgICAgY2FzZSBCSVRPUjoKLSAgICAgICAgcmV0dXJu
IG1ha2VCaXRPck5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNv
bmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlQml0T3JOb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNz
aWdubWVudCk7CiAKICAgICBjYXNlIEJJVFhPUjoKLSAgICAgICAgcmV0dXJuIG1ha2VCaXRYT3JO
b2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2ln
bm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZUJpdFhPck5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsK
IAogICAgIGNhc2UgQklUQU5EOgotICAgICAgICByZXR1cm4gbWFrZUJpdEFuZE5vZGUobGluZU51
bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7Cisg
ICAgICAgIHJldHVybiBtYWtlQml0QW5kTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxo
cy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2Fz
ZSBFUUVROgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVxdWFsTm9kZShsaW5l
TnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsK
KyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFcXVhbE5vZGUobGluZU51bWJlciwg
Y29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25t
ZW50KTsKIAogICAgIGNhc2UgTkU6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
Tm90RXF1YWxOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25k
Lmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE5vdEVx
dWFsTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBy
aHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBTVFJFUToKLSAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBTdHJpY3RFcXVhbE5vZGUobGluZU51bWJlciwgbGhzLmZp
cnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgU3RyaWN0RXF1YWxOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAK
ICAgICBjYXNlIFNUUk5FUToKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOb3RT
dHJpY3RFcXVhbE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNv
bmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTm90
U3RyaWN0RXF1YWxOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMu
Zmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIExUOgotICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExlc3NOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJz
dCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIExlc3NOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhz
LmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNl
IEdUOgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEdyZWF0ZXJOb2RlKGxpbmVO
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEdyZWF0ZXJOb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdu
bWVudCk7CiAKICAgICBjYXNlIExFOgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IExlc3NFcU5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQu
aGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVzc0Vx
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMu
c2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBHRToKLSAgICAgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBHcmVhdGVyRXFOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhz
LmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIEdyZWF0ZXJFcU5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMu
Zmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2Ug
SU5TVEFOQ0VPRjogewotICAgICAgICBJbnN0YW5jZU9mTm9kZSogbm9kZSA9IG5ldyAobV9nbG9i
YWxEYXRhKSBJbnN0YW5jZU9mTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwg
cmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgSW5zdGFuY2VPZk5vZGUqIG5vZGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgSW5zdGFuY2VPZk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKICAg
ICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgbGhzLnNlY29uZC5zdGFydCwgcmhzLnNl
Y29uZC5zdGFydCwgcmhzLnNlY29uZC5lbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9
CiAKICAgICBjYXNlIElOVE9LRU46IHsKLSAgICAgICAgSW5Ob2RlKiBub2RlID0gbmV3IChtX2ds
b2JhbERhdGEpIEluTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNl
Y29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgSW5Ob2RlKiBub2RlID0gbmV3IChtX2dsb2Jh
bERhdGEpIEluTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZp
cnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2Nh
dGlvbihub2RlLCBsaHMuc2Vjb25kLnN0YXJ0LCByaHMuc2Vjb25kLnN0YXJ0LCByaHMuc2Vjb25k
LmVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAogICAgIGNhc2UgTFNISUZUOgot
ICAgICAgICByZXR1cm4gbWFrZUxlZnRTaGlmdE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCBy
aHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtl
TGVmdFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwgcmhzLmZp
cnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBSU0hJRlQ6Ci0gICAg
ICAgIHJldHVybiBtYWtlUmlnaHRTaGlmdE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMu
Zmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlUmln
aHRTaGlmdE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJz
dCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgVVJTSElGVDoKLSAgICAg
ICAgcmV0dXJuIG1ha2VVUmlnaHRTaGlmdE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMu
Zmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlVVJp
Z2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmly
c3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIFBMVVM6Ci0gICAgICAg
IHJldHVybiBtYWtlQWRkTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhz
LnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VBZGROb2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFz
QXNzaWdubWVudCk7CiAKICAgICBjYXNlIE1JTlVTOgotICAgICAgICByZXR1cm4gbWFrZVN1Yk5v
ZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdu
bWVudCk7CisgICAgICAgIHJldHVybiBtYWtlU3ViTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAg
ICAgY2FzZSBUSU1FUzoKLSAgICAgICAgcmV0dXJuIG1ha2VNdWx0Tm9kZShsaW5lTnVtYmVyLCBs
aHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAg
cmV0dXJuIG1ha2VNdWx0Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGxocy5maXJzdCwg
cmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBESVZJREU6
Ci0gICAgICAgIHJldHVybiBtYWtlRGl2Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5m
aXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VEaXZO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5z
ZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIE1PRDoKLSAgICAgICAgcmV0dXJuIG1h
a2VNb2ROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhh
c0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZU1vZE5vZGUobGluZU51bWJlciwgY29s
dW1uTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50
KTsKICAgICB9CiAgICAgQ1JBU0goKTsKICAgICByZXR1cm4gMDsKIH0KIAotRXhwcmVzc2lvbk5v
ZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogbG9jLCBPcGVyYXRvciBvcCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGJvb2wgbG9jSGFz
QXNzaWdubWVudHMsIGJvb2wgZXhwckhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZv
dCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxvYywgT3Bl
cmF0b3Igb3AsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBib29sIGxvY0hhc0Fzc2lnbm1lbnRzLCBi
b29sIGV4cHJIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiB7
CiAgICAgaWYgKCFsb2MtPmlzTG9jYXRpb24oKSkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBBc3NpZ25FcnJvck5vZGUobGluZU51bWJlciwgbG9jLCBvcCwgZXhwciwgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBBc3NpZ25FcnJvck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBsb2MsIG9w
LCBleHByLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogCiAgICAgaWYgKGxv
Yy0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3Rh
dGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihsb2MpOwogICAgICAgICBpZiAob3AgPT0gT3BFcXVhbCkg
ewogICAgICAgICAgICAgaWYgKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZXhwciktPmJvZHkoKS0+c2V0SW5mZXJyZWRO
YW1lKHJlc29sdmUtPmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICBBc3NpZ25SZXNvbHZlTm9k
ZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25SZXNvbHZlTm9kZShsaW5lTnVtYmVy
LCByZXNvbHZlLT5pZGVudGlmaWVyKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cyk7CisgICAg
ICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBBc3Np
Z25SZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHJlc29sdmUtPmlkZW50aWZp
ZXIoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzKTsKICAgICAgICAgICAgIHNldEV4Y2VwdGlv
bkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAgICAgICAgICAgIHJldHVybiBu
b2RlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1v
ZGlmeVJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGV4
cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5UmVzb2x2ZU5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wLCBl
eHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZv
dCk7CiAgICAgfQogICAgIGlmIChsb2MtPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAg
ICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNj
ZXNzb3JOb2RlKj4obG9jKTsKICAgICAgICAgaWYgKG9wID09IE9wRXF1YWwpCi0gICAgICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnbkJyYWNrZXROb2RlKGxpbmVOdW1iZXIs
IGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGV4cHIsIGxvY0hhc0Fzc2ln
bm1lbnRzLCBleHBySGFzQXNzaWdubWVudHMsIGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPmRp
dm90KCkgLSBzdGFydCwgZW5kIC0gYnJhY2tldC0+ZGl2b3QoKSk7Ci0gICAgICAgIFJlYWRNb2Rp
ZnlCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5QnJhY2tl
dE5vZGUobGluZU51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwg
b3AsIGV4cHIsIGxvY0hhc0Fzc2lnbm1lbnRzLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBk
aXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIEFzc2lnbkJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgYnJh
Y2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgZXhwciwgbG9jSGFzQXNzaWdubWVu
dHMsIGV4cHJIYXNBc3NpZ25tZW50cywgYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZGl2b3Qo
KSAtIHN0YXJ0LCBlbmQgLSBicmFja2V0LT5kaXZvdCgpKTsKKyAgICAgICAgUmVhZE1vZGlmeUJy
YWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlCcmFja2V0Tm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vi
c2NyaXB0KCksIG9wLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhhc0Fzc2lnbm1lbnRz
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgICAgICBub2RlLT5zZXRT
dWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5lbmRPZmZzZXQoKSk7
CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KQEAgLTkzMyw1NSArOTMzLDU1IEBAIEV4cHJl
c3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGxvYywKICAgICBpZiAob3AgPT0gT3BFcXVhbCkgewogICAgICAgICBpZiAo
ZXhwci0+aXNGdW5jRXhwck5vZGUoKSkKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEZ1bmNFeHBy
Tm9kZSo+KGV4cHIpLT5ib2R5KCktPnNldEluZmVycmVkTmFtZShkb3QtPmlkZW50aWZpZXIoKSk7
Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduRG90Tm9kZShsaW5lTnVt
YmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25t
ZW50cywgZG90LT5kaXZvdCgpLCBkb3QtPmRpdm90KCkgLSBzdGFydCwgZW5kIC0gZG90LT5kaXZv
dCgpKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25Eb3ROb2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBl
eHByLCBleHBySGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdCgpIC0gc3Rh
cnQsIGVuZCAtIGRvdC0+ZGl2b3QoKSk7CiAgICAgfQogCi0gICAgUmVhZE1vZGlmeURvdE5vZGUq
IG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1vZGlmeURvdE5vZGUobGluZU51bWJlciwg
ZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1l
bnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgIFJlYWRNb2RpZnlE
b3ROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlEb3ROb2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwg
ZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5l
bmRPZmZzZXQoKSk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RC
dWlsZGVyOjptYWtlUHJlZml4Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Np
b25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUHJlZml4Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQs
IGludCBkaXZvdCwgaW50IGVuZCkKIHsKICAgICBpZiAoIWV4cHItPmlzTG9jYXRpb24oKSkKLSAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhFcnJvck5vZGUobGluZU51bWJl
ciwgZXhwciwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4RXJyb3JOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgZXhwciwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7
CiAKICAgICBpZiAoZXhwci0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2Rl
KiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihleHByKTsKLSAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCByZXNv
bHZlLT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3Qp
OworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeFJlc29sdmVOb2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICB9CiAgICAgaWYgKGV4cHItPmlzQnJh
Y2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNr
ZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4oZXhwcik7Ci0gICAgICAgIFBy
ZWZpeEJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeEJyYWNrZXRO
b2RlKGxpbmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9w
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBQcmVmaXhCcmFj
a2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhCcmFja2V0Tm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0
KCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgICAgICBub2Rl
LT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5zdGFydE9m
ZnNldCgpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogICAgIEFTU0VSVChleHByLT5p
c0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19j
YXN0PERvdEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgIFByZWZpeERvdE5vZGUqIG5vZGUgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4RG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwg
ZG90LT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3Qp
OworICAgIFByZWZpeERvdE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4RG90
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZp
ZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgbm9kZS0+
c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPnN0YXJ0T2Zmc2V0KCkpOwog
ICAgIHJldHVybiBub2RlOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVBv
c3RmaXhOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3BlcmF0b3Ig
b3AsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1
aWxkZXI6Om1ha2VQb3N0Zml4Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQsIGludCBkaXZvdCwg
aW50IGVuZCkKIHsKICAgICBpZiAoIWV4cHItPmlzTG9jYXRpb24oKSkKLSAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4RXJyb3JOb2RlKGxpbmVOdW1iZXIsIGV4cHIsIG9w
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIFBvc3RmaXhFcnJvck5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBleHByLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKIAogICAgIGlm
IChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUg
PSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHIpOwotICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIFBvc3RmaXhSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCByZXNvbHZlLT5pZGVu
dGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhSZXNvbHZlTm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAt
IHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIGlmIChleHByLT5pc0JyYWNrZXRBY2Nl
c3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3Rh
dGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgICAgICBQb3N0Zml4QnJh
Y2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeEJyYWNrZXROb2RlKGxp
bmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBkaXZv
dCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBQb3N0Zml4QnJhY2tldE5v
ZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeEJyYWNrZXROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwg
b3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgICAgIG5vZGUtPnNl
dFN1YmV4cHJlc3Npb25JbmZvKGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPmVuZE9mZnNldCgp
KTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAKICAgICB9CiAgICAgQVNTRVJUKGV4cHItPmlzRG90
QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8
RG90QWNjZXNzb3JOb2RlKj4oZXhwcik7Ci0gICAgUG9zdGZpeERvdE5vZGUqIG5vZGUgPSBuZXcg
KG1fZ2xvYmFsRGF0YSkgUG9zdGZpeERvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRv
dC0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsK
KyAgICBQb3N0Zml4RG90Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4RG90
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZp
ZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgbm9kZS0+
c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPmVuZE9mZnNldCgpKTsKICAg
ICByZXR1cm4gbm9kZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5k
ZXggM2IwMjBmNGYyYjFiMDk2YTcwYTk1YTliNTg4ODI3YmQ5MGI5ODU5Yy4uYmZkN2ZkMmMyNDcy
YjgzN2FmYWY5MTlmNTE4MWMzMGQ0ZTdiOTM0NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5jcHAKQEAgLTQxNyw2ICs0MTcsNyBAQCB2b2lkIExleGVyPFQ+OjpzZXRDb2RlKGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyQXJlbmEqIGFyZW5hKQogICAgIG1fY29kZUVu
ZCA9IG1fY29kZVN0YXJ0ICsgc291cmNlLmVuZE9mZnNldCgpOwogICAgIG1fZXJyb3IgPSBmYWxz
ZTsKICAgICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsKKyAgICBtX2NvbHVtbk51bWJlciA9IDA7CiAg
ICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBVU3RyaW5nKCk7CiAgICAgCiAgICAgbV9idWZmZXI4LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoaW5pdGlhbFJlYWRCdWZmZXJDYXBhY2l0eSk7CkBAIC00MzMs
NiArNDM0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiB0ZW1wbGF0ZSA8aW50IHNoaWZ0QW1v
dW50PiBBTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VD46OmludGVybmFsU2hpZnQoKQogewogICAg
IG1fY29kZSArPSBzaGlmdEFtb3VudDsKKyAgICBtX2NvbHVtbk51bWJlciArPSBzaGlmdEFtb3Vu
dDsKICAgICBtX2N1cnJlbnQgPSAqbV9jb2RlOwogfQogCkBAIC00NDQsNiArNDQ2LDcgQEAgQUxX
QVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjpzaGlmdCgpCiAgICAgKyttX2NvZGU7CiAgICAgaWYg
KExJS0VMWShtX2NvZGUgPCBtX2NvZGVFbmQpKQogICAgICAgICBtX2N1cnJlbnQgPSAqbV9jb2Rl
OworICAgICsrbV9jb2x1bW5OdW1iZXI7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAt
MTIwMCw2ICsxMjAzLDcgQEAgc3RhcnQ6CiAgICAgICAgIHJldHVybiBFT0ZUT0s7CiAgICAgCiAg
ICAgdG9rZW5JbmZvLT5zdGFydE9mZnNldCA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICB0b2tlbklu
Zm8tPmNvbHVtbiA9IG1fY29sdW1uTnVtYmVyOwogCiAgICAgQ2hhcmFjdGVyVHlwZSB0eXBlOwog
ICAgIGlmIChMSUtFTFkoaXNMYXRpbjEobV9jdXJyZW50KSkpCkBAIC0xNTIyLDYgKzE1MjYsNyBA
QCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBzaGlmdExpbmVUZXJtaW5hdG9y
KCk7CiAgICAgICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOwogICAgICAgICBtX3Rlcm1pbmF0b3Ig
PSB0cnVlOworICAgICAgICBtX2NvbHVtbk51bWJlciA9IDA7CiAgICAgICAgIGdvdG8gc3RhcnQ7
CiAgICAgY2FzZSBDaGFyYWN0ZXJJbnZhbGlkOgogICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
IGludmFsaWRDaGFyYWN0ZXJNZXNzYWdlKCk7CkBAIC0xNTQ0LDYgKzE1NDksNyBAQCBpblNpbmds
ZUxpbmVDb21tZW50OgogICAgIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKICAgICBtX2F0TGluZVN0
YXJ0ID0gdHJ1ZTsKICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVlOworICAgIG1fY29sdW1uTnVtYmVy
ID0gMDsKICAgICBpZiAoIWxhc3RUb2tlbldhc1Jlc3RyS2V5d29yZCgpKQogICAgICAgICBnb3Rv
IHN0YXJ0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKaW5kZXggNDFmMWY4NTUz
ZTFlYjI1ZjU0NGJlZTE5MzVhMmFmNGJiZDA2OWU2NC4uMjhiNTNiYmU3ZDhmYzc2YmMwYmE0N2Y4
ZGI3NmQ3Njc4ZWIwN2NjMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAt
OTAsNiArOTAsNyBAQCBwdWJsaWM6CiAgICAgSlNUb2tlblR5cGUgbGV4KEpTVG9rZW5EYXRhKiwg
SlNUb2tlbkluZm8qLCB1bnNpZ25lZCwgYm9vbCBzdHJpY3RNb2RlKTsKICAgICBib29sIG5leHRU
b2tlbklzQ29sb24oKTsKICAgICBpbnQgbGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGlu
ZU51bWJlcjsgfQorICAgIGludCBjdXJyZW50Q29sdW1uTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
bV9jb2x1bW5OdW1iZXI7IH0KICAgICB2b2lkIHNldExhc3RMaW5lTnVtYmVyKGludCBsYXN0TGlu
ZU51bWJlcikgeyBtX2xhc3RMaW5lTnVtYmVyID0gbGFzdExpbmVOdW1iZXI7IH0KICAgICBpbnQg
bGFzdExpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lTnVtYmVyOyB9CiAgICAg
Ym9vbCBwcmV2VGVybWluYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fdGVybWluYXRvcjsgfQpAQCAt
MTY2LDYgKzE2Nyw3IEBAIHByaXZhdGU6CiAKICAgICBpbnQgbV9saW5lTnVtYmVyOwogICAgIGlu
dCBtX2xhc3RMaW5lTnVtYmVyOworICAgIGludCBtX2NvbHVtbk51bWJlcjsKIAogICAgIFZlY3Rv
cjxMQ2hhcj4gbV9idWZmZXI4OwogICAgIFZlY3RvcjxVQ2hhcj4gbV9idWZmZXIxNjsKQEAgLTI4
NSw2ICsyODcsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBl
Y3RJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsCiAgICAgICAgIG1fY3VycmVudCA9
IDA7CiAKICAgICBtX2NvZGUgPSBwdHI7CisgICAgbV9jb2x1bW5OdW1iZXIgPSBtX2NvbHVtbk51
bWJlciArIChtX2NvZGUgLSBzdGFydCk7CiAKICAgICAvLyBDcmVhdGUgdGhlIGlkZW50aWZpZXIg
aWYgbmVlZGVkCiAgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29y
ZHMpCkBAIC0yOTQsNiArMjk3LDcgQEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxU
Pjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLAogICAgIHRva2Vu
SW5mby0+bGluZSA9IG1fbGluZU51bWJlcjsKICAgICB0b2tlbkluZm8tPnN0YXJ0T2Zmc2V0ID0g
c3RhcnQgLSBtX2NvZGVTdGFydDsKICAgICB0b2tlbkluZm8tPmVuZE9mZnNldCA9IGN1cnJlbnRP
ZmZzZXQoKTsKKyAgICB0b2tlbkluZm8tPmNvbHVtbiA9IG1fY29sdW1uTnVtYmVyOwogICAgIG1f
bGFzdFRva2VuID0gSURFTlQ7CiAgICAgcmV0dXJuIElERU5UOwogICAgIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCBlNDk2ZDIzNDJi
MzQwMWZhNGFlNzRlMjQ2Mzk0ZWI5N2MzM2JjYTFmLi4yYWUyZjllM2RlNjFhYzhiMDM3ZjliY2Rj
MDFjYzg1N2YyOWZlMWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaApAQCAtNDIsNjAgKzQyLDYxIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBnbG9iYWxEYXRhLT5wYXJzZXJBcmVuYS0+ZGVyZWZXaXRoQXJlbmEoYWRvcHRSZWYodGhp
cykpOwogICAgIH0KIAotICAgIGlubGluZSBOb2RlOjpOb2RlKGludCBsaW5lTnVtYmVyKQorICAg
IGlubGluZSBOb2RlOjpOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogICAg
ICAgICA6IG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQorICAgICAgICAsIG1fY29sdW1uTnVtYmVy
KGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEV4cHJlc3Npb25Ob2Rl
OjpFeHByZXNzaW9uTm9kZShpbnQgbGluZU51bWJlciwgUmVzdWx0VHlwZSByZXN1bHRUeXBlKQot
ICAgICAgICA6IE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRXhwcmVzc2lvbk5vZGU6OkV4
cHJlc3Npb25Ob2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBl
IHJlc3VsdFR5cGUpCisgICAgICAgIDogTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAg
ICAgICAgICwgbV9yZXN1bHRUeXBlKHJlc3VsdFR5cGUpCiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBTdGF0ZW1lbnROb2RlOjpTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyKQotICAgICAg
ICA6IE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgU3RhdGVtZW50Tm9kZTo6U3RhdGVtZW50
Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKKyAgICAgICAgOiBOb2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2xhc3RMaW5lKC0xKQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgTnVsbE5vZGU6Ok51bGxOb2RlKGludCBsaW5lTnVtYmVyKQot
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bGxUeXBl
KCkpCisgICAgaW5saW5lIE51bGxOb2RlOjpOdWxsTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIFJlc3VsdFR5cGU6Om51bGxUeXBlKCkpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBCb29sZWFuTm9kZTo6Qm9vbGVhbk5vZGUoaW50IGxpbmVOdW1iZXIsIGJvb2wgdmFsdWUpCi0g
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5
cGUoKSkKKyAgICBpbmxpbmUgQm9vbGVhbk5vZGU6OkJvb2xlYW5Ob2RlKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBib29sIHZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSkKICAg
ICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTnVtYmVy
Tm9kZTo6TnVtYmVyTm9kZShpbnQgbGluZU51bWJlciwgZG91YmxlIHZhbHVlKQotICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSkKKyAg
ICBpbmxpbmUgTnVtYmVyTm9kZTo6TnVtYmVyTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgZG91YmxlIHZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpKQogICAgICAgICAsIG1f
dmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBTdHJpbmdOb2RlOjpTdHJp
bmdOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiB2YWx1ZSkKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCisg
ICAgaW5saW5lIFN0cmluZ05vZGU6OlN0cmluZ05vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIHZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQog
ICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZWdF
eHBOb2RlOjpSZWdFeHBOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0
ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncykKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyKQorICAgIGlubGluZSBSZWdFeHBOb2RlOjpSZWdFeHBOb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJ
ZGVudGlmaWVyJiBmbGFncykKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9wYXR0ZXJuKHBhdHRlcm4pCiAgICAgICAgICwgbV9m
bGFncyhmbGFncykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFRoaXNOb2RlOjpUaGlzTm9k
ZShpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBUaGlzTm9kZTo6VGhpc05vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVzb2x2ZU5vZGU6OlJlc29sdmVOb2RlKGlu
dCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgaW50IHN0YXJ0T2Zmc2V0KQot
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFJlc29sdmVO
b2RlOjpSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIGludCBzdGFydE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkK
ICAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQogICAgIHsKQEAgLTExNiwyNCAr
MTE3LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBsLT5tX25leHQgPSB0aGlzOwogICAg
IH0KIAotICAgIGlubGluZSBBcnJheU5vZGU6OkFycmF5Tm9kZShpbnQgbGluZU51bWJlciwgaW50
IGVsaXNpb24pCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgQXJyYXlOb2RlOjpBcnJheU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IGludCBlbGlzaW9uKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcikKICAgICAgICAgLCBtX2VsZW1lbnQoMCkKICAgICAgICAgLCBtX2VsaXNpb24oZWxp
c2lvbikKICAgICAgICAgLCBtX29wdGlvbmFsKHRydWUpCiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBBcnJheU5vZGU6OkFycmF5Tm9kZShpbnQgbGluZU51bWJlciwgRWxlbWVudE5vZGUqIGVs
ZW1lbnQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
QXJyYXlOb2RlOjpBcnJheU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEVs
ZW1lbnROb2RlKiBlbGVtZW50KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAgICAgLCBt
X2VsaXNpb24oMCkKICAgICAgICAgLCBtX29wdGlvbmFsKGZhbHNlKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBlbGlz
aW9uLCBFbGVtZW50Tm9kZSogZWxlbWVudCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBBcnJheU5vZGU6OkFycmF5Tm9kZShpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgaW50IGVsaXNpb24sIEVsZW1lbnROb2RlKiBlbGVtZW50KQorICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAg
LCBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAgICAgLCBtX2VsaXNpb24oZWxpc2lvbikKICAgICAg
ICAgLCBtX29wdGlvbmFsKHRydWUpCkBAIC0xNTQsNTcgKzE1NSw1NyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFByb3BlcnR5TGlzdE5vZGU6OlByb3BlcnR5
TGlzdE5vZGUoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5Tm9kZSogbm9kZSkKLSAgICAgICAgOiBO
b2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFByb3BlcnR5TGlzdE5vZGU6OlByb3BlcnR5TGlz
dE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFByb3BlcnR5Tm9kZSogbm9k
ZSkKKyAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBt
X25vZGUobm9kZSkKICAgICAgICAgLCBtX25leHQoMCkKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIFByb3BlcnR5TGlzdE5vZGU6OlByb3BlcnR5TGlzdE5vZGUoaW50IGxpbmVOdW1iZXIsIFBy
b3BlcnR5Tm9kZSogbm9kZSwgUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkKLSAgICAgICAgOiBOb2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFByb3BlcnR5TGlzdE5vZGU6OlByb3BlcnR5TGlzdE5v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFByb3BlcnR5Tm9kZSogbm9kZSwg
UHJvcGVydHlMaXN0Tm9kZSogbGlzdCkKKyAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcikKICAgICAgICAgLCBtX25vZGUobm9kZSkKICAgICAgICAgLCBtX25leHQoMCkKICAg
ICB7CiAgICAgICAgIGxpc3QtPm1fbmV4dCA9IHRoaXM7CiAgICAgfQogCi0gICAgaW5saW5lIE9i
amVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZShpbnQgbGluZU51bWJlcikKLSAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBPYmplY3RMaXRlcmFs
Tm9kZTo6T2JqZWN0TGl0ZXJhbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIp
CisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAg
ICAgICAsIG1fbGlzdCgwKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgT2JqZWN0TGl0ZXJh
bE5vZGU6Ok9iamVjdExpdGVyYWxOb2RlKGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eUxpc3ROb2Rl
KiBsaXN0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IE9iamVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkKKyAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9saXN0KGxpc3Qp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCcmFja2V0QWNjZXNzb3JOb2RlOjpCcmFja2V0
QWNjZXNzb3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVz
c2lvbk5vZGUqIHN1YnNjcmlwdCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cykKLSAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBCcmFja2V0QWNjZXNz
b3JOb2RlOjpCcmFja2V0QWNjZXNzb3JOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgYm9v
bCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwg
bV9zdWJzY3JpcHQoc3Vic2NyaXB0KQogICAgICAgICAsIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVu
dHMoc3Vic2NyaXB0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBE
b3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQotICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIERvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNz
b3JOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAg
ICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcmd1bWVudExp
c3ROb2RlOjpBcmd1bWVudExpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikKLSAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFyZ3VtZW50TGlz
dE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IE5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyKQogICAgICAgICAsIG1fbmV4dCgwKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXJndW1lbnRMaXN0Tm9kZTo6QXJndW1lbnRMaXN0Tm9k
ZShpbnQgbGluZU51bWJlciwgQXJndW1lbnRMaXN0Tm9kZSogbGlzdE5vZGUsIEV4cHJlc3Npb25O
b2RlKiBleHByKQotICAgICAgICA6IE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXJndW1l
bnRMaXN0Tm9kZTo6QXJndW1lbnRMaXN0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgQXJndW1lbnRMaXN0Tm9kZSogbGlzdE5vZGUsIEV4cHJlc3Npb25Ob2RlKiBleHByKQor
ICAgICAgICA6IE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fbmV4
dCgwKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKQEAgLTIyMSw0NSArMjIyLDQ1IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTmV3RXhwck5vZGU6
Ok5ld0V4cHJOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBOZXdFeHByTm9kZTo6
TmV3RXhwck5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX2FyZ3MoMCkKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIE5ld0V4cHJOb2RlOjpOZXdFeHByTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3MpCi0gICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgTmV3RXhwck5vZGU6Ok5l
d0V4cHJOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwciwgQXJndW1lbnRzTm9kZSogYXJncykKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAg
ICwgbV9hcmdzKGFyZ3MpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBFdmFsRnVuY3Rpb25D
YWxsTm9kZTo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1iZXIsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5s
aW5lIEV2YWxGdW5jdGlvbkNhbGxOb2RlOjpFdmFsRnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAg
ICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxs
VmFsdWVOb2RlOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OkZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2V4
cHIoZXhwcikKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShpbnQg
bGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3Ms
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZ1bmN0
aW9uQ2FsbFJlc29sdmVOb2RlOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fYXJn
cyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsQnJhY2tldE5v
ZGU6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgQXJndW1lbnRzTm9kZSogYXJncywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
Ci0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRnVuY3Rp
b25DYWxsQnJhY2tldE5vZGU6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUq
IHN1YnNjcmlwdCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFz
ZShiYXNlKQogICAgICAgICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKQEAgLTI2Nyw4ICsyNjgs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmN0aW9u
Q2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJn
cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRnVu
Y3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRh
dGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2Up
CiAgICAgICAgICwgbV9pZGVudChpZGVudCkKQEAgLTI3NiwzMSArMjc3LDMxIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5v
ZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQot
ICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51bWJlciwgYmFzZSwgaWRlbnQsIGFy
Z3MsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgIGlubGluZSBDYWxsRnVuY3Rp
b25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgc3Rh
cnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFwcGx5RnVu
Y3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50
c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51bWJlciwg
YmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgIGlu
bGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBG
dW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgYmFzZSwgaWRlbnQs
IGFyZ3MsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgUHJlUG9zdFJlc29sdmVOb2RlOjpQcmVQb3N0UmVzb2x2ZU5vZGUoaW50IGxpbmVO
dW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCkpIC8vIGNvdWxkIGJlIHJldXNh
YmxlIGZvciBwcmU/CisgICAgaW5saW5lIFByZVBvc3RSZXNvbHZlTm9kZTo6UHJlUG9zdFJlc29s
dmVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCkpIC8vIGNvdWxkIGJlIHJldXNhYmxlIGZvciBw
cmU/CiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIFBvc3RmaXhSZXNvbHZlTm9kZTo6UG9zdGZpeFJlc29sdmVOb2RlKGludCBsaW5l
TnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAg
IDogUHJlUG9zdFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50LCBkaXZvdCwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgUG9zdGZpeFJlc29sdmVOb2RlOjpQb3N0Zml4UmVz
b2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBQcmVQb3N0UmVzb2x2ZU5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBpZGVudCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpCiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgIHsKICAgICB9CiAKLSAgICBp
bmxpbmUgUG9zdGZpeEJyYWNrZXROb2RlOjpQb3N0Zml4QnJhY2tldE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVy
YXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlu
bGluZSBQb3N0Zml4QnJhY2tldE5vZGU6OlBvc3RmaXhCcmFja2V0Tm9kZShpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2Rl
KiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9u
RGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFz
ZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCkBAIC0zMDgsOCArMzA5LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQb3N0Zml4RG90Tm9k
ZTo6UG9zdGZpeERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUG9zdGZpeERvdE5vZGU6OlBvc3RmaXhE
b3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJv
d2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAg
ICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQpAQCAtMzE3LDY5
ICszMTgsNjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQ
b3N0Zml4RXJyb3JOb2RlOjpQb3N0Zml4RXJyb3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwciwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bGluZU51bWJlcikKKyAgICBpbmxpbmUgUG9zdGZpeEVycm9yTm9kZTo6UG9zdGZpeEVycm9yTm9k
ZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIs
IE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwg
c3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAg
LCBtX29wZXJhdG9yKG9wZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBEZWxldGVSZXNv
bHZlTm9kZTo6RGVsZXRlUmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlu
bGluZSBEZWxldGVSZXNvbHZlTm9kZTo6RGVsZXRlUmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAg
ICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlbGV0ZUJyYWNr
ZXROb2RlOjpEZWxldGVCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIERlbGV0ZUJyYWNrZXROb2RlOjpEZWxldGVCcmFj
a2V0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2Uo
YmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBEZWxldGVEb3ROb2RlOjpEZWxldGVEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIERlbGV0ZURvdE5vZGU6OkRl
bGV0ZURvdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFz
ZShiYXNlKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBEZWxldGVWYWx1ZU5vZGU6OkRlbGV0ZVZhbHVlTm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgRGVsZXRlVmFsdWVOb2RlOjpEZWxldGVWYWx1ZU5vZGUoaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2V4cHIo
ZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFZvaWROb2RlOjpWb2lkTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgVm9pZE5vZGU6OlZvaWROb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9leHBy
KGV4cHIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBUeXBlT2ZSZXNvbHZlTm9kZTo6VHlw
ZU9mUmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQot
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OnN0cmluZ1R5
cGUoKSkKKyAgICBpbmxpbmUgVHlwZU9mUmVzb2x2ZU5vZGU6OlR5cGVPZlJlc29sdmVOb2RlKGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkK
KyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3Vs
dFR5cGU6OnN0cmluZ1R5cGUoKSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgVHlwZU9mVmFsdWVOb2RlOjpUeXBlT2ZWYWx1ZU5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OnN0cmluZ1R5cGUoKSkKKyAgICBpbmxpbmUgVHlwZU9m
VmFsdWVOb2RlOjpUeXBlT2ZWYWx1ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQogICAgICAgICAs
IG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJlZml4UmVzb2x2ZU5v
ZGU6OlByZWZpeFJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogUHJlUG9zdFJlc29sdmVOb2RlKGxpbmVO
dW1iZXIsIGlkZW50LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUg
UHJlZml4UmVzb2x2ZU5vZGU6OlByZWZpeFJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisg
ICAgICAgIDogUHJlUG9zdFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgaWRl
bnQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fb3BlcmF0b3Io
b3BlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFByZWZpeEJyYWNrZXROb2RlOjpQcmVm
aXhCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJl
c3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFByZWZpeEJyYWNrZXROb2RlOjpQcmVmaXhC
cmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAg
LCBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1fc3Vic2NyaXB0
KHN1YnNjcmlwdCkKQEAgLTM4Nyw4ICszODgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIFByZWZpeERvdE5vZGU6OlByZWZpeERvdE5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3Bl
cmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBp
bmxpbmUgUHJlZml4RG90Tm9kZTo6UHJlZml4RG90Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0
YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkK
ICAgICAgICAgLCBtX2lkZW50KGlkZW50KQpAQCAtMzk2LDQ0ICszOTcsNDQgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVmaXhFcnJvck5vZGU6OlByZWZp
eEVycm9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9y
IG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IFByZWZpeEVycm9yTm9kZTo6UHJlZml4RXJyb3JOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAg
ICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIFVuYXJ5T3BOb2RlOjpVbmFyeU9wTm9kZShpbnQgbGluZU51bWJl
ciwgUmVzdWx0VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3Bjb2RlSUQgb3Bjb2Rl
SUQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgdHlwZSkKKyAgICBpbmxp
bmUgVW5hcnlPcE5vZGU6OlVuYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBSZXN1bHRUeXBlIHR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGNvZGVJRCBvcGNv
ZGVJRCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IHR5cGUpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9vcGNvZGVJRChvcGNv
ZGVJRCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFVuYXJ5UGx1c05vZGU6OlVuYXJ5UGx1
c05vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFVu
YXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwciwgb3Bf
dG9fanNudW1iZXIpCisgICAgaW5saW5lIFVuYXJ5UGx1c05vZGU6OlVuYXJ5UGx1c05vZGUoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAg
ICAgICA6IFVuYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6
bnVtYmVyVHlwZSgpLCBleHByLCBvcF90b19qc251bWJlcikKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIE5lZ2F0ZU5vZGU6Ok5lZ2F0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByKQotICAgICAgICA6IFVuYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6
Om51bWJlclR5cGUoKSwgZXhwciwgb3BfbmVnYXRlKQorICAgIGlubGluZSBOZWdhdGVOb2RlOjpO
ZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcikKKyAgICAgICAgOiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIs
IFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwciwgb3BfbmVnYXRlKQogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgQml0d2lzZU5vdE5vZGU6OkJpdHdpc2VOb3ROb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpKQorICAgIGlubGluZSBCaXR3aXNlTm90Tm9k
ZTo6Qml0d2lzZU5vdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSkKICAgICAgICAgLCBtX2V4cHIoZXhw
cikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIExvZ2ljYWxOb3ROb2RlOjpMb2dpY2FsTm90
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogVW5h
cnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwciwgb3Bf
bm90KQorICAgIGlubGluZSBMb2dpY2FsTm90Tm9kZTo6TG9naWNhbE5vdE5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6
IFVuYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVh
blR5cGUoKSwgZXhwciwgb3Bfbm90KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQmluYXJ5
T3BOb2RlOjpCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAg
aW5saW5lIEJpbmFyeU9wTm9kZTo6QmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
T3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9leHBy
MShleHByMSkKICAgICAgICAgLCBtX2V4cHIyKGV4cHIyKQogICAgICAgICAsIG1fb3Bjb2RlSUQo
b3Bjb2RlSUQpCkBAIC00NDEsOCArNDQyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBCaW5hcnlPcE5vZGU6OkJpbmFyeU9wTm9kZShpbnQgbGluZU51bWJl
ciwgUmVzdWx0VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCB0eXBlKQorICAgIGlubGluZSBCaW5h
cnlPcE5vZGU6OkJpbmFyeU9wTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
UmVzdWx0VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHR5cGUpCiAgICAg
ICAgICwgbV9leHByMShleHByMSkKICAgICAgICAgLCBtX2V4cHIyKGV4cHIyKQogICAgICAgICAs
IG1fb3Bjb2RlSUQob3Bjb2RlSUQpCkBAIC00NTAsMTQwICs0NTEsMTQwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTXVsdE5vZGU6Ok11bHROb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVt
YmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbXVsLCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBNdWx0Tm9kZTo6TXVsdE5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5
T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgp
LCBleHByMSwgZXhwcjIsIG9wX211bCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIERpdk5vZGU6OkRpdk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51
bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9kaXYsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisg
ICAgaW5saW5lIERpdk5vZGU6OkRpdk5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2Rp
diwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCiAKLSAgICBpbmxpbmUgTW9k
Tm9kZTo6TW9kTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBC
aW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwg
ZXhwcjIsIG9wX21vZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTW9kTm9kZTo6
TW9kTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
KyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRU
eXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbW9kLCByaWdodEhhc0Fzc2lnbm1l
bnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQWRkTm9kZTo6QWRkTm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJl
ciwgUmVzdWx0VHlwZTo6Zm9yQWRkKGV4cHIxLT5yZXN1bHREZXNjcmlwdG9yKCksIGV4cHIyLT5y
ZXN1bHREZXNjcmlwdG9yKCkpLCBleHByMSwgZXhwcjIsIG9wX2FkZCwgcmlnaHRIYXNBc3NpZ25t
ZW50cykKKyAgICBpbmxpbmUgQWRkTm9kZTo6QWRkTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JBZGQoZXhwcjEtPnJlc3VsdERlc2Ny
aXB0b3IoKSwgZXhwcjItPnJlc3VsdERlc2NyaXB0b3IoKSksIGV4cHIxLCBleHByMiwgb3BfYWRk
LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3ViTm9k
ZTo6U3ViTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5h
cnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhw
cjIsIG9wX3N1YiwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgU3ViTm9kZTo6U3Vi
Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAg
ICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBl
OjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3Bfc3ViLCByaWdodEhhc0Fzc2lnbm1lbnRz
KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTGVmdFNoaWZ0Tm9kZTo6TGVmdFNoaWZ0Tm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUo
bGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9sc2hp
ZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIExlZnRTaGlmdE5vZGU6OkxlZnRT
aGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
CisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0
VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9sc2hpZnQsIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSaWdodFNoaWZ0Tm9kZTo6UmlnaHRT
aGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5
T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwg
b3BfcnNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBSaWdodFNoaWZ0Tm9k
ZTo6UmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
ciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9yc2hpZnQsIHJpZ2h0
SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBVbnNpZ25lZFJpZ2h0
U2hpZnROb2RlOjpVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpu
dW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfdXJzaGlmdCwgcmlnaHRIYXNBc3NpZ25tZW50
cykKKyAgICBpbmxpbmUgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZTo6VW5zaWduZWRSaWdodFNoaWZ0
Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAg
ICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBl
OjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfdXJzaGlmdCwgcmlnaHRIYXNBc3NpZ25t
ZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIExlc3NOb2RlOjpMZXNzTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51
bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9sZXNzLCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBMZXNzTm9kZTo6TGVzc05vZGUoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmlu
YXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5
cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9sZXNzLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgR3JlYXRlck5vZGU6OkdyZWF0ZXJOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBS
ZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2dyZWF0ZXIsIHJpZ2h0
SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEdyZWF0ZXJOb2RlOjpHcmVhdGVyTm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBC
aW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFu
VHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2dyZWF0ZXIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBMZXNzRXFOb2RlOjpMZXNzRXFOb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVy
LCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2xlc3NlcSwgcmln
aHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTGVzc0VxTm9kZTo6TGVzc0VxTm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBC
aW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFu
VHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2xlc3NlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIEdyZWF0ZXJFcU5vZGU6OkdyZWF0ZXJFcU5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVO
dW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZ3JlYXRl
cmVxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBHcmVhdGVyRXFOb2RlOjpHcmVh
dGVyRXFOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3Vs
dFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZ3JlYXRlcmVxLCByaWdodEhh
c0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVGhyb3dhYmxlQmluYXJ5
T3BOb2RlOjpUaHJvd2FibGVCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3VsdFR5cGUg
dHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29k
ZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5
T3BOb2RlKGxpbmVOdW1iZXIsIHR5cGUsIGV4cHIxLCBleHByMiwgb3Bjb2RlSUQsIHJpZ2h0SGFz
QXNzaWdubWVudHMpCisgICAgaW5saW5lIFRocm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxl
QmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBl
IHR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNv
ZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFy
eU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHR5cGUsIGV4cHIxLCBleHByMiwgb3Bj
b2RlSUQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBU
aHJvd2FibGVCaW5hcnlPcE5vZGU6OlRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlE
IG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BO
b2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgb3Bjb2RlSUQsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCisgICAgaW5saW5lIFRocm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5T3BO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBleHByMSwgZXhwcjIsIG9wY29kZUlELCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgSW5zdGFuY2VPZk5vZGU6Okluc3RhbmNlT2ZOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IFRocm93YWJsZUJpbmFyeU9w
Tm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIs
IG9wX2luc3RhbmNlb2YsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEluc3RhbmNl
T2ZOb2RlOjpJbnN0YW5jZU9mTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBUaHJvd2FibGVCaW5hcnlPcE5vZGUobGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIs
IG9wX2luc3RhbmNlb2YsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBJbk5vZGU6OkluTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAg
ICAgICAgOiBUaHJvd2FibGVCaW5hcnlPcE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCBv
cF9pbiwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgSW5Ob2RlOjpJbk5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDog
VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZXhwcjEsIGV4
cHIyLCBvcF9pbiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIEVxdWFsTm9kZTo6RXF1YWxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQot
ICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlw
ZSgpLCBleHByMSwgZXhwcjIsIG9wX2VxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGlu
ZSBFcXVhbE5vZGU6OkVxdWFsTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2VxLCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTm90RXF1YWxO
b2RlOjpOb3RFcXVhbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAg
IDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4
cHIxLCBleHByMiwgb3BfbmVxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBOb3RF
cXVhbE5vZGU6Ok5vdEVxdWFsTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX25lcSwg
cmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFN0cmljdEVx
dWFsTm9kZTo6U3RyaWN0RXF1YWxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQot
ICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlw
ZSgpLCBleHByMSwgZXhwcjIsIG9wX3N0cmljdGVxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAg
IGlubGluZSBTdHJpY3RFcXVhbE5vZGU6OlN0cmljdEVxdWFsTm9kZShpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUo
bGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHBy
MSwgZXhwcjIsIG9wX3N0cmljdGVxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgTm90U3RyaWN0RXF1YWxOb2RlOjpOb3RTdHJpY3RFcXVhbE5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVO
dW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbnN0cmlj
dGVxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBOb3RTdHJpY3RFcXVhbE5vZGU6
Ok5vdFN0cmljdEVxdWFsTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVt
YmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX25zdHJpY3Rl
cSwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJpdEFu
ZE5vZGU6OkJpdEFuZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAg
IDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIx
LCBleHByMiwgb3BfYml0YW5kLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBCaXRB
bmROb2RlOjpCaXRBbmROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfYml0YW5kLCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQml0T3JOb2RlOjpC
aXRPck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5
T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwg
b3BfYml0b3IsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEJpdE9yTm9kZTo6Qml0
T3JOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQor
ICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIFJlc3VsdFR5
cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfYml0b3IsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCaXRYT3JOb2RlOjpCaXRYT3JOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5l
TnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdHhvciwg
cmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgQml0WE9yTm9kZTo6Qml0WE9yTm9kZShp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAg
OiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JC
aXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdHhvciwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIExvZ2ljYWxPcE5vZGU6OkxvZ2ljYWxPcE5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBMb2dpY2FsT3BlcmF0b3Igb3BlcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVt
YmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpKQorICAgIGlubGluZSBMb2dpY2FsT3BOb2Rl
OjpMb2dpY2FsT3BOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgTG9naWNhbE9wZXJhdG9yIG9w
ZXIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBS
ZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpKQogICAgICAgICAsIG1fZXhwcjEoZXhwcjEpCiAgICAg
ICAgICwgbV9leHByMihleHByMikKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBDb25kaXRpb25hbE5vZGU6OkNvbmRpdGlvbmFsTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxvZ2ljYWwsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIpCisgICAgaW5saW5lIENvbmRpdGlvbmFsTm9kZTo6Q29uZGl0aW9uYWxOb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbG9naWNhbCwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpCisgICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fbG9naWNh
bChsb2dpY2FsKQogICAgICAgICAsIG1fZXhwcjEoZXhwcjEpCiAgICAgICAgICwgbV9leHByMihl
eHByMikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6
UmVhZE1vZGlmeVJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAg
IGlubGluZSBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZShpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9w
ZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVy
KQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9yaWdodChy
aWdodCkKQEAgLTU5MiwxNiArNTkzLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgQXNzaWduUmVzb2x2ZU5vZGU6OkFzc2lnblJlc29sdmVOb2RlKGludCBs
aW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGlu
ZU51bWJlcikKKyAgICBpbmxpbmUgQXNzaWduUmVzb2x2ZU5vZGU6OkFzc2lnblJlc29sdmVOb2Rl
KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAs
IG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkKICAgICAgICAgLCBtX3Jp
Z2h0SGFzQXNzaWdubWVudHMocmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIFJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6UmVhZE1vZGlmeUJyYWNrZXROb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNj
cmlwdCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlw
dEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFJlYWRNb2RpZnlCcmFja2V0Tm9k
ZTo6UmVhZE1vZGlmeUJyYWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0
b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1l
bnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2Uo
YmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCkBAIC02MTIsOCArNjEzLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25CcmFj
a2V0Tm9kZTo6QXNzaWduQnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
Ci0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXNzaWdu
QnJhY2tldE5vZGU6OkFzc2lnbkJyYWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAg
ICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCkBAIC02MjMsOCArNjI0LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25Eb3ROb2RlOjpBc3NpZ25E
b3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBB
c3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJl
c3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAg
ICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKQEAgLTYzMyw4ICs2MzQs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFJlYWRNb2Rp
ZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJl
YWRNb2RpZnlEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgVGhy
b3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAg
ICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKQEAgLTY0NCw4
ICs2NDUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFz
c2lnbkVycm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogbGVmdCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBBc3NpZ25FcnJvck5v
ZGU6OkFzc2lnbkVycm9yTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGxlZnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
CisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAg
ICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zm
c2V0KQogICAgICAgICAsIG1fbGVmdChsZWZ0KQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikK
QEAgLTY1MywxNSArNjU0LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgQ29tbWFOb2RlOjpDb21tYU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKQotICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIENvbW1hTm9kZTo6Q29tbWFOb2RlKGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpCiAgICAgewogICAgICAgICBtX2V4cHJlc3Npb25zLmFwcGVuZChleHByMSk7CiAg
ICAgICAgIG1fZXhwcmVzc2lvbnMuYXBwZW5kKGV4cHIyKTsKICAgICB9CiAKLSAgICBpbmxpbmUg
Q29uc3RTdGF0ZW1lbnROb2RlOjpDb25zdFN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIENv
bnN0RGVjbE5vZGUqIG5leHQpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBDb25zdFN0YXRlbWVudE5vZGU6OkNvbnN0U3RhdGVtZW50Tm9kZShpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgQ29uc3REZWNsTm9kZSogbmV4dCkKKyAgICAgICAg
OiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX25l
eHQobmV4dCkKICAgICB7CiAgICAgfQpAQCAtNjcwLDU3ICs2NzEsNTcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBFbXB0eVN0YXRlbWVudE5vZGU6OkVtcHR5
U3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIEVtcHR5U3RhdGVtZW50Tm9kZTo6RW1wdHlTdGF0ZW1lbnRO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQorICAgICAgICA6IFN0YXRlbWVu
dE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgRGVidWdnZXJTdGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGUoaW50IGxpbmVO
dW1iZXIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBE
ZWJ1Z2dlclN0YXRlbWVudE5vZGU6OkRlYnVnZ2VyU3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgfQogICAgIAotICAgIGlubGluZSBFeHByU3RhdGVt
ZW50Tm9kZTo6RXhwclN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
RXhwclN0YXRlbWVudE5vZGU6OkV4cHJTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBTdGF0ZW1lbnRO
b2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIFZhclN0YXRlbWVudE5vZGU6OlZhclN0YXRlbWVudE5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFN0YXRl
bWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgVmFyU3RhdGVtZW50Tm9kZTo6VmFyU3Rh
dGVtZW50Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxp
bmUgSWZOb2RlOjpJZk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRp
b24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2spCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBJZk5vZGU6OklmTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZC
bG9jaykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikK
ICAgICAgICAgLCBtX2NvbmRpdGlvbihjb25kaXRpb24pCiAgICAgICAgICwgbV9pZkJsb2NrKGlm
QmxvY2spCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBJZkVsc2VOb2RlOjpJZkVsc2VOb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2Rl
KiBpZkJsb2NrLCBTdGF0ZW1lbnROb2RlKiBlbHNlQmxvY2spCi0gICAgICAgIDogSWZOb2RlKGxp
bmVOdW1iZXIsIGNvbmRpdGlvbiwgaWZCbG9jaykKKyAgICBpbmxpbmUgSWZFbHNlTm9kZTo6SWZF
bHNlTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxzZUJs
b2NrKQorICAgICAgICA6IElmTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlv
biwgaWZCbG9jaykKICAgICAgICAgLCBtX2Vsc2VCbG9jayhlbHNlQmxvY2spCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBEb1doaWxlTm9kZTo6RG9XaGlsZU5vZGUoaW50IGxpbmVOdW1iZXIs
IFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAg
IDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBEb1doaWxlTm9kZTo6RG9X
aGlsZU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFN0YXRlbWVudE5vZGUq
IHN0YXRlbWVudCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogU3RhdGVtZW50Tm9k
ZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVt
ZW50KQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
V2hpbGVOb2RlOjpXaGlsZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
LCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBXaGlsZU5vZGU6OldoaWxlTm9kZShpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0
YXRlbWVudCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
cikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1l
bnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGb3JOb2RlOjpGb3JOb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIzLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGJvb2wgZXhwcjFX
YXNWYXJEZWNsKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgRm9yTm9kZTo6Rm9yTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMywgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBib29sIGV4cHIxV2FzVmFyRGVjbCkK
KyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAg
ICAgLCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCiAgICAgICAgICwg
bV9leHByMyhleHByMykKQEAgLTczMCwzOCArNzMxLDM4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBBU1NFUlQoc3RhdGVtZW50KTsKICAgICB9CiAKLSAgICBpbmxpbmUgQ29udGludWVOb2Rl
OjpDb250aW51ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlcikK
LSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIENvbnRpbnVl
Tm9kZTo6Q29udGludWVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9pZGVudChnbG9iYWxEYXRhLT5wcm9wZXJ0eU5h
bWVzLT5udWxsSWRlbnRpZmllcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENvbnRpbnVl
Tm9kZTo6Q29udGludWVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIENvbnRp
bnVlTm9kZTo6Q29udGludWVOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAgICB9
CiAgICAgCi0gICAgaW5saW5lIEJyZWFrTm9kZTo6QnJlYWtOb2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBCcmVha05vZGU6OkJyZWFrTm9kZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQorICAgICAgICA6IFN0YXRl
bWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1faWRlbnQoZ2xv
YmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBCcmVha05vZGU6OkJyZWFrTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAg
IGlubGluZSBCcmVha05vZGU6OkJyZWFrTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7
CiAgICAgfQogICAgIAotICAgIGlubGluZSBSZXR1cm5Ob2RlOjpSZXR1cm5Ob2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogdmFsdWUpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShs
aW5lTnVtYmVyKQorICAgIGlubGluZSBSZXR1cm5Ob2RlOjpSZXR1cm5Ob2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogdmFsdWUpCisgICAgICAgIDog
U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV92YWx1
ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFdpdGhOb2RlOjpXaXRoTm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRl
bWVudCwgdWludDMyX3QgZGl2b3QsIHVpbnQzMl90IGV4cHJlc3Npb25MZW5ndGgpCi0gICAgICAg
IDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBXaXRoTm9kZTo6V2l0aE5v
ZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
LCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIHVpbnQzMl90IGRpdm90LCB1aW50MzJfdCBleHBy
ZXNzaW9uTGVuZ3RoKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1u
TnVtYmVyKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fc3RhdGVtZW50KHN0
YXRlbWVudCkKICAgICAgICAgLCBtX2Rpdm90KGRpdm90KQpAQCAtNzY5LDIxICs3NzAsMjEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBMYWJlbE5vZGU6Okxh
YmVsTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgU3RhdGVtZW50
Tm9kZSogc3RhdGVtZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgTGFiZWxOb2RlOjpMYWJlbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkK
KyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAg
ICAgLCBtX25hbWUobmFtZSkKICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBUaHJvd05vZGU6OlRocm93Tm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBUaHJvd05vZGU6OlRocm93Tm9kZShpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogU3RhdGVtZW50
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBUcnlOb2RlOjpUcnlOb2RlKGludCBsaW5lTnVtYmVy
LCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciYgZXhjZXB0aW9uSWRl
bnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9j
aykKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFRyeU5v
ZGU6OlRyeU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFN0YXRlbWVudE5v
ZGUqIHRyeUJsb2NrLCBjb25zdCBJZGVudGlmaWVyJiBleGNlcHRpb25JZGVudCwgU3RhdGVtZW50
Tm9kZSogY2F0Y2hCbG9jaywgU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrKQorICAgICAgICA6
IFN0YXRlbWVudE5vZGUobGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fdHJ5
QmxvY2sodHJ5QmxvY2spCiAgICAgICAgICwgbV9leGNlcHRpb25JZGVudChleGNlcHRpb25JZGVu
dCkKICAgICAgICAgLCBtX2NhdGNoQmxvY2soY2F0Y2hCbG9jaykKQEAgLTgwNCwxNSArODA1LDE1
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBsLT5tX25leHQgPSB0aGlzOwogICAgIH0KIAot
ICAgIGlubGluZSBGdW5jRXhwck5vZGU6OkZ1bmNFeHByTm9kZShpbnQgbGluZU51bWJlciwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQotICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQ
YXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51
bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fYm9keShib2R5KQogICAgIHsKICAgICAg
ICAgbV9ib2R5LT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgcGFyYW1ldGVyLCBpZGVudCk7CiAgICAg
fQogCi0gICAgaW5saW5lIEZ1bmNEZWNsTm9kZTo6RnVuY0RlY2xOb2RlKGludCBsaW5lTnVtYmVy
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXIpCi0gICAgICAgIDog
U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNE
ZWNsTm9kZShpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgICAgICAsIG1fYm9keShib2R5KQogICAgIHsKICAg
ICAgICAgbV9ib2R5LT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgcGFyYW1ldGVyLCBpZGVudCk7CkBA
IC04NDQsMjkgKzg0NSwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIFN3aXRjaE5vZGU6OlN3aXRjaE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByLCBDYXNlQmxvY2tOb2RlKiBibG9jaykKLSAgICAgICAgOiBTdGF0ZW1lbnROb2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFN3aXRjaE5vZGU6OlN3aXRjaE5vZGUoaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBDYXNlQmxvY2tO
b2RlKiBibG9jaykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX2Jsb2NrKGJsb2NrKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQ29uc3REZWNsTm9kZTo6Q29uc3REZWNsTm9kZShp
bnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBp
bml0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIENv
bnN0RGVjbE5vZGU6OkNvbnN0RGVjbE5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdCkKKyAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwg
bV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX25leHQoMCkKICAgICAgICAgLCBtX2luaXQoaW5p
dCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJsb2NrTm9kZTo6QmxvY2tOb2RlKGludCBs
aW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogc3RhdGVtZW50cykKLSAgICAgICAgOiBTdGF0ZW1l
bnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEJsb2NrTm9kZTo6QmxvY2tOb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogc3RhdGVtZW50cykK
KyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICAg
ICAgLCBtX3N0YXRlbWVudHMoc3RhdGVtZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IEZvckluTm9kZTo6Rm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50
Tm9kZSogc3RhdGVtZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJbk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGwsIEV4cHJl
c3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCisgICAgICAgIDogU3Rh
dGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9pZGVudChn
bG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcikKICAgICAgICAgLCBtX2lu
aXQoMCkKICAgICAgICAgLCBtX2xleHByKGwpCkBAIC04NzYsMTcgKzg3NywxNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZvckluTm9kZTo6Rm9ySW5Ob2Rl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0
ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5k
T2Zmc2V0KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
Rm9ySW5Ob2RlOjpGb3JJbk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Np
b25Ob2RlKiBpbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVu
dCwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpCisgICAgICAgIDog
U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgICAgICwgbV9pZGVu
dChpZGVudCkKICAgICAgICAgLCBtX2luaXQoMCkKLSAgICAgICAgLCBtX2xleHByKG5ldyAoZ2xv
YmFsRGF0YSkgUmVzb2x2ZU5vZGUobGluZU51bWJlciwgaWRlbnQsIGRpdm90IC0gc3RhcnRPZmZz
ZXQpKQorICAgICAgICAsIG1fbGV4cHIobmV3IChnbG9iYWxEYXRhKSBSZXNvbHZlTm9kZShsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIGlkZW50LCBkaXZvdCAtIHN0YXJ0T2Zmc2V0KSkKICAgICAg
ICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCiAgICAg
ICAgICwgbV9pZGVudElzVmFyRGVjbCh0cnVlKQogICAgIHsKICAgICAgICAgaWYgKGluKSB7Ci0g
ICAgICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAoZ2xvYmFsRGF0YSkgQXNz
aWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwgaWRlbnQsIGluLCB0cnVlKTsKKyAgICAgICAgICAg
IEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChnbG9iYWxEYXRhKSBBc3NpZ25SZXNvbHZl
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGlkZW50LCBpbiwgdHJ1ZSk7CiAgICAgICAg
ICAgICBub2RlLT5zZXRFeGNlcHRpb25Tb3VyY2VDb2RlKGRpdm90LCBkaXZvdCAtIHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQgLSBkaXZvdCk7CiAgICAgICAgICAgICBtX2luaXQgPSBub2RlOwogICAg
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGMzMmU0Yzcz
YTI0ZWJlYjIzM2NkNWUwMWZmZmQ2M2E0ODY4NWM4ODYuLjVhNzg1YzFmZjc3ZjBjOTdiMGIwZGY2
YjI5NmNlNjczNTVkMTQzYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3Bw
CkBAIC01MiwxMCArNTIsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBTdGF0ZW1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKK3ZvaWQgU3RhdGVtZW50Tm9kZTo6c2V0TG9jKGludCBmaXJzdExpbmUsIGludCBs
YXN0TGluZSwgaW50IGNvbHVtbikKK3sKKyAgICBtX2xpbmVOdW1iZXIgPSBmaXJzdExpbmU7Cisg
ICAgbV9sYXN0TGluZSA9IGxhc3RMaW5lOworICAgIG1fY29sdW1uTnVtYmVyID0gY29sdW1uOwor
fQorCiB2b2lkIFN0YXRlbWVudE5vZGU6OnNldExvYyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExp
bmUpCiB7CiAgICAgbV9saW5lTnVtYmVyID0gZmlyc3RMaW5lOwogICAgIG1fbGFzdExpbmUgPSBs
YXN0TGluZTsKKyAgICBtX2NvbHVtbk51bWJlciA9IDA7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSBTb3VyY2VFbGVtZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQpAQCAtNzUsOCArODMsOCBAQCBTdGF0ZW1lbnROb2RlKiBTb3VyY2VFbGVtZW50czo6
c2luZ2xlU3RhdGVtZW50KCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIFNjb3BlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1TY29wZU5vZGU6
OlNjb3BlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBib29s
IGluU3RyaWN0Q29udGV4dCkKLSAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKK1Njb3Bl
Tm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQorICAgIDogU3RhdGVtZW50
Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgLCBQYXJzZXJBcmVuYVJlZkNvdW50
ZWQoZ2xvYmFsRGF0YSkKICAgICAsIG1fZmVhdHVyZXMoaW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0
TW9kZUZlYXR1cmUgOiBOb0ZlYXR1cmVzKQogICAgICwgbV9udW1Db25zdGFudHMoMCkKQEAgLTg0
LDggKzkyLDggQEAgU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmljdENvbnQKIHsKIH0KIAotU2NvcGVOb2RlOjpT
Y29wZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2
YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJl
ZFZhcmlhYmxlcywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQotICAg
IDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNr
KiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0
dXJlZFZhcmlhYmxlcywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQor
ICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgLCBQYXJz
ZXJBcmVuYVJlZkNvdW50ZWQoZ2xvYmFsRGF0YSkKICAgICAsIG1fZmVhdHVyZXMoZmVhdHVyZXMp
CiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCkBAIC0xMDcsMTQgKzExNSwxNCBAQCBTdGF0ZW1lbnRO
b2RlKiBTY29wZU5vZGU6OnNpbmdsZVN0YXRlbWVudCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9ncmFtTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1pbmxpbmUgUHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3Rh
Y2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNh
cHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBm
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBs
aW5lTnVtYmVyLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJl
ZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKK2lubGluZSBQcm9ncmFtTm9kZTo6
UHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50
IGNvbHVtbk51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3Rh
Y2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJp
YWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBp
bnQgbnVtQ29uc3RhbnRzKQorICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2Fw
dHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCiB7CiB9CiAKLVBhc3NSZWZQ
dHI8UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayog
dmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVy
ZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1
cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5v
ZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFj
aywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlh
YmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGlu
dCBudW1Db25zdGFudHMpCiB7Ci0gICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBub2RlID0gbmV3IFBy
b2dyYW1Ob2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVu
Y1N0YWNrLCAgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50
cyk7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBub2RlID0gbmV3IFByb2dyYW1Ob2RlKGdsb2Jh
bERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5j
U3RhY2ssICBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRz
KTsKIAogICAgIEFTU0VSVChub2RlLT5tX2FyZW5hLmxhc3QoKSA9PSBub2RlKTsKICAgICBub2Rl
LT5tX2FyZW5hLnJlbW92ZUxhc3QoKTsKQEAgLTEyNSwxNCArMTMzLDE0IEBAIFBhc3NSZWZQdHI8
UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBpbnQgbGluZU51CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgRXZhbE5vZGU6OkV2YWxO
b2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1l
bnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3Rh
Y2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFNj
b3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJTdGFj
aywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykK
K2lubGluZSBFdmFsTm9kZTo6RXZhbE5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBW
YXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNl
dCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1
cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorICAgIDogU2NvcGVOb2RlKGdsb2JhbERh
dGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ss
IGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCiB7
CiB9CiAKLVBhc3NSZWZQdHI8RXZhbE5vZGU+IEV2YWxOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBW
YXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNl
dCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1
cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorUGFzc1JlZlB0cjxFdmFsTm9kZT4gRXZh
bE5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJT
dGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZh
cmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMs
IGludCBudW1Db25zdGFudHMpCiB7Ci0gICAgUmVmUHRyPEV2YWxOb2RlPiBub2RlID0gbmV3IEV2
YWxOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0
YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsK
KyAgICBSZWZQdHI8RXZhbE5vZGU+IG5vZGUgPSBuZXcgRXZhbE5vZGUoZ2xvYmFsRGF0YSwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2Fw
dHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAKICAgICBB
U1NFUlQobm9kZS0+bV9hcmVuYS5sYXN0KCkgPT0gbm9kZSk7CiAgICAgbm9kZS0+bV9hcmVuYS5y
ZW1vdmVMYXN0KCk7CkBAIC0xNDksMTMgKzE1NywxMyBAQCBGdW5jdGlvblBhcmFtZXRlcnM6OkZ1
bmN0aW9uUGFyYW1ldGVycyhQYXJhbWV0ZXJOb2RlKiBmaXJzdFBhcmFtZXRlcikKICAgICAgICAg
YXBwZW5kKHBhcmFtZXRlci0+aWRlbnQoKSk7CiB9CiAKLWlubGluZSBGdW5jdGlvbkJvZHlOb2Rl
OjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1i
ZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQotICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxp
bmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCkKK2lubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5j
dGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQorICAgIDogU2NvcGVOb2RlKGds
b2JhbERhdGEsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgaW5TdHJpY3RDb250ZXh0KQogewog
fQogCi1pbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4s
IFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVy
U2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQotICAgIDogU2NvcGVOb2RlKGds
b2JhbERhdGEsIGxpbmVOdW1iZXIsIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVu
Y1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKK2lubGlu
ZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBj
aGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElk
ZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VD
b2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCisgICAgOiBTY29w
ZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzb3VyY2VDb2RlLCBj
aGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVz
LCBudW1Db25zdGFudHMpCiB7CiB9CiAKQEAgLTE3MiwxNCArMTgwLDE0IEBAIHZvaWQgRnVuY3Rp
b25Cb2R5Tm9kZTo6ZmluaXNoUGFyc2luZyhQYXNzUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4g
cGFyYW1ldGVycywKICAgICBtX2lkZW50ID0gaWRlbnQ7CiB9CiAKLUZ1bmN0aW9uQm9keU5vZGUq
IEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBs
aW5lTnVtYmVyLCBib29sIGluU3RyaWN0Q29udGV4dCkKK0Z1bmN0aW9uQm9keU5vZGUqIEZ1bmN0
aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBib29sIGluU3RyaWN0Q29udGV4dCkKIHsKLSAgICByZXR1
cm4gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgaW5TdHJpY3RD
b250ZXh0KTsKKyAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBpblN0cmljdENvbnRleHQpOwogfQogCi1QYXNzUmVmUHRy
PEZ1bmN0aW9uQm9keU5vZGU+IEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZh
clN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0
JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZl
YXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorUGFzc1JlZlB0cjxGdW5jdGlvbkJv
ZHlOb2RlPiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxk
cmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRp
ZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUs
IENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKIHsKLSAgICBSZWZQdHI8
RnVuY3Rpb25Cb2R5Tm9kZT4gbm9kZSA9IG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEs
IGxpbmVOdW1iZXIsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlh
Ymxlcywgc291cmNlQ29kZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CisgICAgUmVmUHRyPEZ1
bmN0aW9uQm9keU5vZGU+IG5vZGUgPSBuZXcgRnVuY3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBj
YXB0dXJlZFZhcmlhYmxlcywgc291cmNlQ29kZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAK
ICAgICBBU1NFUlQobm9kZS0+bV9hcmVuYS5sYXN0KCkgPT0gbm9kZSk7CiAgICAgbm9kZS0+bV9h
cmVuYS5yZW1vdmVMYXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXgg
NWM5MGJiOWZlNjYzNjBlOTJhOTk3YWRiNjRiM2VlNzk2MzczMjI2Ni4uMGI4YmE5NTM0ZGNhMDgz
OGMzMWRjZTJiNWY0MDA3ZGU5OWUxZDIwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZXMuaApAQCAtMTMwLDcgKzEzMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTm9k
ZSA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAg
IE5vZGUoaW50KTsKKyAgICAgICAgTm9kZShpbnQsIGludCk7CiAKICAgICBwdWJsaWM6CiAgICAg
ICAgIHZpcnR1YWwgfk5vZGUoKSB7IH0KQEAgLTEzOSwxMyArMTM5LDE2IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIGludCBsaW5lTm8oKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7
IH0KIAorICAgICAgICBpbnQgY29sdW1uTm8oKSBjb25zdCB7IHJldHVybiBtX2NvbHVtbk51bWJl
cjsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBpbnQgbV9saW5lTnVtYmVyOworICAgICAg
ICBpbnQgbV9jb2x1bW5OdW1iZXI7CiAgICAgfTsKIAogICAgIGNsYXNzIEV4cHJlc3Npb25Ob2Rl
IDogcHVibGljIE5vZGUgewogICAgIHByb3RlY3RlZDoKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUo
aW50LCBSZXN1bHRUeXBlID0gUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSk7CisgICAgICAgIEV4
cHJlc3Npb25Ob2RlKGludCwgaW50LCBSZXN1bHRUeXBlID0gUmVzdWx0VHlwZTo6dW5rbm93blR5
cGUoKSk7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bWJlcigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xNzUsMTIgKzE3OCwxNCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIFN0YXRlbWVudE5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgICAgcHJvdGVj
dGVkOgotICAgICAgICBTdGF0ZW1lbnROb2RlKGludCk7CisgICAgICAgIFN0YXRlbWVudE5vZGUo
aW50LCBpbnQpOwogCiAgICAgcHVibGljOgotICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHNldExvYyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHNldExvYyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOyAKKyAgICAg
ICAgdm9pZCBzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKTsK
ICAgICAgICAgaW50IGZpcnN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmVObygpOyB9CiAgICAg
ICAgIGludCBsYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdExpbmU7IH0KKyAgICAgICAg
aW50IGNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIGNvbHVtbk5vKCk7fQogCiAgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0VtcHR5U3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAg
ICAgdmlydHVhbCBib29sIGlzUmV0dXJuTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBA
IC0xOTQsNyArMTk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOdWxsTm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBOdWxsTm9kZShp
bnQpOworICAgICAgICBOdWxsTm9kZShpbnQsIGludCk7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CkBAIC0yMDQsNyArMjA5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBCb29sZWFuTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBCb29sZWFuTm9kZShpbnQsIGJvb2wgdmFsdWUpOworICAgICAgICBCb29sZWFu
Tm9kZShpbnQsIGludCwgYm9vbCB2YWx1ZSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CkBAIC0yMTYsNyArMjIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBOdW1iZXJOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIE51bWJlck5vZGUoaW50LCBkb3VibGUgdmFsdWUpOworICAgICAgICBOdW1iZXJOb2RlKGlu
dCwgaW50LCBkb3VibGUgdmFsdWUpOwogCiAgICAgICAgIGRvdWJsZSB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWU7IH0KICAgICAgICAgdm9pZCBzZXRWYWx1ZShkb3VibGUgdmFsdWUpIHsg
bV92YWx1ZSA9IHZhbHVlOyB9CkBAIC0yMzIsNyArMjM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBTdHJpbmdOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFN0cmluZ05vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAg
IFN0cmluZ05vZGUoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KIApAQCAtMzQyLDcgKzM0
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVnRXhwTm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFJlZ0V4cE5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBj
b25zdCBJZGVudGlmaWVyJiBmbGFncyk7CisgICAgICAgIFJlZ0V4cE5vZGUoaW50LCBpbnQsIGNv
bnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTM1Myw3ICszNTgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFRoaXNOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFRoaXNOb2RlKGludCk7CisgICAgICAgIFRoaXNOb2Rl
KGludCwgaW50KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTM2
MSw3ICszNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlc29sdmVOb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlc29sdmVOb2Rl
KGludCwgY29uc3QgSWRlbnRpZmllciYsIGludCBzdGFydE9mZnNldCk7CisgICAgICAgIFJlc29s
dmVOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiwgaW50IHN0YXJ0T2Zmc2V0KTsKIAog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudDsgfQogCkBAIC0zOTMsMTEgKzM5OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIEFycmF5Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBBcnJheU5vZGUoaW50LCBpbnQgZWxpc2lvbik7Ci0gICAgICAgIEFycmF5Tm9kZShpbnQs
IEVsZW1lbnROb2RlKik7Ci0gICAgICAgIEFycmF5Tm9kZShpbnQsIGludCBlbGlzaW9uLCBFbGVt
ZW50Tm9kZSopOworICAgICAgICBBcnJheU5vZGUoaW50LCBpbnQsIGludCBlbGlzaW9uKTsKKyAg
ICAgICAgQXJyYXlOb2RlKGludCwgaW50LCBFbGVtZW50Tm9kZSopOworICAgICAgICBBcnJheU5v
ZGUoaW50LCBpbnQsIGludCBlbGlzaW9uLCBFbGVtZW50Tm9kZSopOwogCi0gICAgICAgIEFyZ3Vt
ZW50TGlzdE5vZGUqIHRvQXJndW1lbnRMaXN0KEpTR2xvYmFsRGF0YSosIGludCkgY29uc3Q7Cisg
ICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIHRvQXJndW1lbnRMaXN0KEpTR2xvYmFsRGF0YSosIGlu
dCwgaW50KSBjb25zdDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAg
LTQyOCw4ICs0MzMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFByb3BlcnR5TGlz
dE5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBQcm9wZXJ0eUxpc3RO
b2RlKGludCwgUHJvcGVydHlOb2RlKik7Ci0gICAgICAgIFByb3BlcnR5TGlzdE5vZGUoaW50LCBQ
cm9wZXJ0eU5vZGUqLCBQcm9wZXJ0eUxpc3ROb2RlKik7CisgICAgICAgIFByb3BlcnR5TGlzdE5v
ZGUoaW50LCBpbnQsIFByb3BlcnR5Tm9kZSopOworICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKGlu
dCwgaW50LCBQcm9wZXJ0eU5vZGUqLCBQcm9wZXJ0eUxpc3ROb2RlKik7CiAKICAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApOwogCkBAIC00NDAsOCArNDQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBPYmplY3RMaXRlcmFsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBPYmplY3RMaXRlcmFsTm9kZShpbnQpOwotICAgICAgICBPYmplY3RMaXRl
cmFsTm9kZShpbnQsIFByb3BlcnR5TGlzdE5vZGUqKTsKKyAgICAgICAgT2JqZWN0TGl0ZXJhbE5v
ZGUoaW50LCBpbnQpOworICAgICAgICBPYmplY3RMaXRlcmFsTm9kZShpbnQsIGludCwgUHJvcGVy
dHlMaXN0Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAt
NDUxLDcgKzQ1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIEJyYWNrZXRB
Y2Nlc3Nvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKGlu
dCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wg
c3Vic2NyaXB0SGFzQXNzaWdubWVudHMpOworICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKGlu
dCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwg
Ym9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IHN1YnNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic2NyaXB0OyB9CkBAIC00NjksNyArNDc0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgotICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoaW50LCBpbnQs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KQEAg
LTQ4Niw4ICs0OTEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFyZ3VtZW50TGlz
dE5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBBcmd1bWVudExpc3RO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKLSAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShpbnQs
IEFyZ3VtZW50TGlzdE5vZGUqLCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBBcmd1bWVudExp
c3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBBcmd1bWVudExpc3RO
b2RlKGludCwgaW50LCBBcmd1bWVudExpc3ROb2RlKiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAg
ICAgICBBcmd1bWVudExpc3ROb2RlKiBtX25leHQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBt
X2V4cHI7CkBAIC01MDYsOCArNTExLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBO
ZXdFeHByTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5ld0V4cHJOb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqKTsKLSAgICAgICAgTmV3RXhwck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSosIEFy
Z3VtZW50c05vZGUqKTsKKyAgICAgICAgTmV3RXhwck5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25O
b2RlKik7CisgICAgICAgIE5ld0V4cHJOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSosIEFy
Z3VtZW50c05vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAg
LTUxOCw3ICs1MjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV2YWxGdW5jdGlv
bkNhbGxOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUoaW50
LCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBFdmFsRnVuY3Rpb25DYWxsTm9kZShpbnQsIGlu
dCwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KTsKQEAgLTUyOCw3ICs1MzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbFZhbHVl
Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRnVu
Y3Rpb25DYWxsVmFsdWVOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSosIEFyZ3VtZW50c05v
ZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01MzksNyAr
NTQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxSZXNvbHZl
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGludCwg
Y29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIEZ1bmN0aW9uQ2Fs
bFJlc29sdmVOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSos
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU1Miw3ICs1NTcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxCcmFja2V0
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Np
b25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGlu
dCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3Vt
ZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7CisgICAgICAgIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGludCwgaW50LCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgQXJndW1lbnRz
Tm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU2NCw3
ICs1NjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbERvdE5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGludCwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwor
ICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01NzcsNyArNTgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBGdW5jdGlvbkNh
bGxEb3ROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENhbGxGdW5jdGlvbkNhbGxEb3ROb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNO
b2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOworICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShpbnQsIGludCwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTg1LDcgKzU5MCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZSA6
IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFy
Z3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBA
IC01OTMsNyArNTk4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVQb3N0UmVz
b2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQcmVQb3N0UmVzb2x2ZU5vZGUoaW50LCBj
b25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQcmVQb3N0UmVzb2x2ZU5vZGUoaW50LCBpbnQs
IGNvbnN0IElkZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXImIG1faWRlbnQ7CkBAIC02MDEsNyArNjA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBQb3N0Zml4UmVzb2x2ZU5vZGUgOiBwdWJsaWMgUHJlUG9zdFJlc29sdmVOb2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBvc3RmaXhSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElk
ZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQb3N0Zml4UmVzb2x2ZU5vZGUoaW50LCBp
bnQsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwpAQCAtNjExLDcgKzYxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgUG9zdGZpeEJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJs
aWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUG9z
dGZpeEJyYWNrZXROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2Rl
KiBzdWJzY3JpcHQsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFBvc3RmaXhCcmFja2V0Tm9kZShpbnQs
IGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9w
ZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02MjMs
NyArNjI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQb3N0Zml4RG90Tm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRh
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBvc3RmaXhEb3ROb2RlKGludCwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQb3N0Zml4
RG90Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAt
NjM1LDcgKzY0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUG9zdGZpeEVycm9y
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Np
b25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBvc3RmaXhFcnJvck5vZGUoaW50LCBFeHBy
ZXNzaW9uTm9kZSosIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFBvc3RmaXhFcnJvck5vZGUoaW50LCBp
bnQsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKQEAgLTY0Niw3ICs2NTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIERlbGV0ZVJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMg
VGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVsZXRlUmVz
b2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBEZWxldGVSZXNvbHZl
Tm9kZShpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTY1Niw3ICs2NjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIERlbGV0ZUJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJs
aWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVsZXRl
QnJhY2tldE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1
YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpOworICAgICAgICBEZWxldGVCcmFja2V0Tm9kZShpbnQsIGludCwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTY2Nyw3ICs2NzIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIERlbGV0ZURvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1
YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWxl
dGVEb3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7
CisgICAgICAgIERlbGV0ZURvdE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
OwpAQCAtNjc4LDcgKzY4Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVsZXRl
VmFsdWVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IERlbGV0ZVZhbHVlTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIERlbGV0ZVZh
bHVlTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTY4OCw3ICs2OTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIFZvaWROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIFZvaWROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgVm9pZE5v
ZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CkBAIC02OTgsNyArNzAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBUeXBlT2ZSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBUeXBlT2ZSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImKTsK
KyAgICAgICAgVHlwZU9mUmVzb2x2ZU5vZGUoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXImKTsK
IAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9pZGVudDsgfQogCkBAIC03MTAsNyArNzE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBUeXBlT2ZWYWx1ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgVHlwZU9mVmFsdWVOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAg
ICAgVHlwZU9mVmFsdWVOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNzIwLDcgKzcyNSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgUHJlZml4UmVzb2x2ZU5vZGUgOiBwdWJsaWMgUHJlUG9zdFJl
c29sdmVOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFByZWZpeFJlc29sdmVOb2RlKGludCwg
Y29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFByZWZpeFJlc29sdmVOb2Rl
KGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTczMCw3ICs3MzUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIFByZWZpeEJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
LCBwdWJsaWMgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGlj
OgotICAgICAgICBQcmVmaXhCcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBF
eHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQcmVmaXhCcmFj
a2V0Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBz
dWJzY3JpcHQsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CkBAIC03NDIsNyArNzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVm
aXhEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlUHJlZml4
ZWRTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQcmVmaXhEb3ROb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
OworICAgICAgICBQcmVmaXhEb3ROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CkBAIC03NTQsNyArNzU5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBQcmVmaXhFcnJvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQcmVmaXhFcnJvck5v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFByZWZpeEVycm9y
Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNzY1LDcgKzc3MCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgVW5hcnlPcE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgVW5hcnlPcE5vZGUoaW50LCBSZXN1bHRUeXBlLCBFeHByZXNz
aW9uTm9kZSosIE9wY29kZUlEKTsKKyAgICAgICAgVW5hcnlPcE5vZGUoaW50LCBpbnQsIFJlc3Vs
dFR5cGUsIEV4cHJlc3Npb25Ob2RlKiwgT3Bjb2RlSUQpOwogCiAgICAgcHJvdGVjdGVkOgogICAg
ICAgICBFeHByZXNzaW9uTm9kZSogZXhwcigpIHsgcmV0dXJuIG1fZXhwcjsgfQpAQCAtNzgyLDcg
Kzc4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVW5hcnlQbHVzTm9kZSA6IHB1
YmxpYyBVbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBVbmFyeVBsdXNOb2RlKGlu
dCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgVW5hcnlQbHVzTm9kZShpbnQsIGludCwgRXhw
cmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgRXhwcmVzc2lv
bk5vZGUqIHN0cmlwVW5hcnlQbHVzKCkgeyByZXR1cm4gZXhwcigpOyB9CkBAIC03OTAsMTIgKzc5
NSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE5lZ2F0ZU5vZGUgOiBwdWJsaWMg
VW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTmVnYXRlTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKik7CisgICAgICAgIE5lZ2F0ZU5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2Rl
Kik7CiAgICAgfTsKIAogICAgIGNsYXNzIEJpdHdpc2VOb3ROb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdHdpc2VOb3ROb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqKTsKKyAgICAgICAgQml0d2lzZU5vdE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25O
b2RlKik7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHByKCkg
eyByZXR1cm4gbV9leHByOyB9CkBAIC04MDksNyArODE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
CiAgICAgY2xhc3MgTG9naWNhbE5vdE5vZGUgOiBwdWJsaWMgVW5hcnlPcE5vZGUgewogICAgIHB1
YmxpYzoKLSAgICAgICAgTG9naWNhbE5vdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAg
ICAgICBMb2dpY2FsTm90Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqKTsKICAgICBwcml2
YXRlOgogICAgICAgICB2b2lkIGVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29k
ZUdlbmVyYXRvciYsIExhYmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VUYXJnZXQsIGJvb2wg
ZmFsbFRocm91Z2hNZWFuc1RydWUpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzQ29uZGl0aW9u
Q29udGV4dENvZGVnZW4oKSBjb25zdCB7IHJldHVybiBleHByKCktPmhhc0NvbmRpdGlvbkNvbnRl
eHRDb2RlZ2VuKCk7IH0KQEAgLTgxNyw4ICs4MjIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIEJpbmFyeU9wTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBCaW5hcnlPcE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0g
ICAgICAgIEJpbmFyeU9wTm9kZShpbnQsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKKyAgICAgICAgQmluYXJ5T3BOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CisgICAgICAgIEJpbmFyeU9wTm9kZShpbnQsIGludCwgUmVzdWx0VHlwZSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRTdHJjYXQoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24sIFJlZ2lz
dGVySUQqIGxocyA9IDAsIFJlYWRNb2RpZnlSZXNvbHZlTm9kZSogZW1pdEV4cHJlc3Npb25JbmZv
Rm9yTWUgPSAwKTsKIApAQCAtODQyLDcyICs4NDcsNzIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBNdWx0Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgTXVsdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTXVsdE5vZGUoaW50
LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBEaXZOb2RlIDogcHVi
bGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBEaXZOb2RlKGludCwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CisgICAgICAgIERpdk5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwog
ICAgIH07CiAKICAgICBjbGFzcyBNb2ROb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBNb2ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIE1v
ZE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBBZGRO
b2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBBZGROb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEFkZE5vZGUoaW50LCBpbnQsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FkZCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KICAgICB9OwogCiAgICAgY2xhc3MgU3ViTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgU3ViTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAg
ICAgICBTdWJOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNTdWJ0cmFjdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwogCiAgICAg
Y2xhc3MgTGVmdFNoaWZ0Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgTGVmdFNoaWZ0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBMZWZ0
U2hpZnROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3Mg
UmlnaHRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIFJpZ2h0U2hpZnROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIFJpZ2h0U2hp
ZnROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgVW5z
aWduZWRSaWdodFNoaWZ0Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAg
ICAgICBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAg
ICB9OwogCiAgICAgY2xhc3MgTGVzc05vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIExlc3NOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIExl
c3NOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgR3Jl
YXRlck5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEdy
ZWF0ZXJOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEdyZWF0ZXJOb2RlKGludCwg
aW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgTGVzc0VxTm9kZSA6IHB1
YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTGVzc0VxTm9kZShpbnQs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpOworICAgICAgICBMZXNzRXFOb2RlKGludCwgaW50LCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgR3JlYXRlckVxTm9kZSA6IHB1YmxpYyBCaW5hcnlP
cE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgR3JlYXRlckVxTm9kZShpbnQsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOworICAgICAgICBHcmVhdGVyRXFOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
ICAgICB9OwogCiAgICAgY2xhc3MgVGhyb3dhYmxlQmluYXJ5T3BOb2RlIDogcHVibGljIEJpbmFy
eU9wTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKLSAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBUaHJvd2FibGVCaW5hcnlPcE5vZGUoaW50LCBp
bnQsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgVGhyb3dh
YmxlQmluYXJ5T3BOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05MTUsNyArOTIwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgSW5zdGFuY2VPZk5vZGUgOiBwdWJsaWMgVGhy
b3dhYmxlQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEluc3RhbmNlT2ZOb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEluc3RhbmNlT2ZOb2RlKGludCwgaW50LCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAg
LTkyMywxMiArOTI4LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSW5Ob2RlIDog
cHVibGljIFRocm93YWJsZUJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBJbk5v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgSW5Ob2RlKGludCwgaW50LCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgRXF1YWxOb2RlIDogcHVibGljIEJpbmFyeU9w
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBFcXVhbE5vZGUoaW50LCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKKyAgICAgICAgRXF1YWxOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTkzNiwxMiArOTQxLDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgTm90RXF1YWxOb2RlIDogcHVibGljIEJpbmFyeU9wTm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBOb3RFcXVhbE5vZGUoaW50LCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKKyAgICAgICAgTm90RXF1YWxOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9
OwogCiAgICAgY2xhc3MgU3RyaWN0RXF1YWxOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBTdHJpY3RFcXVhbE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
KyAgICAgICAgU3RyaWN0RXF1YWxOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTk0OSwyOCArOTU0LDI4IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTm90U3RyaWN0RXF1YWxOb2RlIDogcHVibGljIEJp
bmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBOb3RTdHJpY3RFcXVhbE5vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTm90U3RyaWN0RXF1YWxOb2RlKGludCwgaW50LCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgQml0QW5kTm9kZSA6IHB1YmxpYyBC
aW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQml0QW5kTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOworICAgICAgICBCaXRBbmROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
ICAgICB9OwogCiAgICAgY2xhc3MgQml0T3JOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBCaXRPck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAg
ICAgQml0T3JOb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xh
c3MgQml0WE9yTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQml0WE9yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBCaXRYT3JOb2RlKGlu
dCwgaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgLy8gbV9leHByMSAmJiBtX2V4
cHIyLCBtX2V4cHIxIHx8IG1fZXhwcjIKICAgICBjbGFzcyBMb2dpY2FsT3BOb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExvZ2ljYWxPcE5vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgTG9naWNhbE9w
ZXJhdG9yKTsKKyAgICAgICAgTG9naWNhbE9wTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIExvZ2ljYWxPcGVyYXRvcik7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05ODUsNyArOTkwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgLy8gVGhlIHRlcm5hcnkgb3BlcmF0b3IsICJtX2xvZ2ljYWwgPyBtX2V4
cHIxIDogbV9leHByMiIKICAgICBjbGFzcyBDb25kaXRpb25hbE5vZGUgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29uZGl0aW9uYWxOb2RlKGludCwgRXhw
cmVzc2lvbk5vZGUqIGxvZ2ljYWwsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyKTsKKyAgICAgICAgQ29uZGl0aW9uYWxOb2RlKGludCwgaW50LCBFeHByZXNzaW9u
Tm9kZSogbG9naWNhbCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTk3LDcgKzEw
MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlYWRNb2RpZnlSZXNvbHZlTm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRh
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlYWRNb2RpZnlSZXNvbHZlTm9kZShpbnQsIGNvbnN0
IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFJlYWRNb2RpZnlSZXNvbHZlTm9kZShpbnQsIGlu
dCwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogIHJpZ2h0LCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKTsKQEAgLTEwMTEsNyArMTAxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgQXNzaWduUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBBc3NpZ25SZXNvbHZl
Tm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEFzc2lnblJlc29sdmVOb2RlKGludCwgaW50
LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAt
MTAyNCw3ICsxMDI5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWFkTW9kaWZ5
QnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJF
eHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwg
T3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25t
ZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFJlYWRNb2RpZnlCcmFj
a2V0Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBz
dWJzY3JpcHQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0
SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTAzOSw3ICsxMDQ0LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25CcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEFzc2lnbkJyYWNrZXROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Np
b25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRI
YXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIEFzc2ln
bkJyYWNrZXROb2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YnNjcmlwdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fz
c2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwNTMsNyArMTA1OCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgQXNzaWduRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVi
bGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFzc2ln
bkRvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAg
IEFzc2lnbkRvdE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwNjYsNyArMTA3
MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVhZE1vZGlmeURvdE5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7
CiAgICAgcHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFJlYWRNb2RpZnlEb3RO
b2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9w
ZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTA4MCw3ICsxMDg1
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25FcnJvck5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgotICAgICAgICBBc3NpZ25FcnJvck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogbGVm
dCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBBc3NpZ25FcnJv
ck5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBPcGVyYXRvciwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBA
IC0xMDk0LDcgKzEwOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbW1hTm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFBhcnNlckFyZW5hRGVsZXRhYmxlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIENvbW1hTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKTsKKyAgICAgICAgQ29tbWFOb2RlKGludCwgaW50LCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMik7CiAKICAgICAgICAg
dXNpbmcgUGFyc2VyQXJlbmFEZWxldGFibGU6Om9wZXJhdG9yIG5ldzsKIApAQCAtMTEwOSw3ICsx
MTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgQ29uc3REZWNsTm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDb25zdERlY2xO
b2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIENv
bnN0RGVjbE5vZGUoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSop
OwogCiAgICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBtX2luaXQ7
IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQoKSB7IHJldHVybiBtX2lkZW50OyB9
CkBAIC0xMTI5LDcgKzExMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnN0
U3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIENvbnN0U3RhdGVtZW50Tm9kZShpbnQsIENvbnN0RGVjbE5vZGUqIG5leHQpOworICAgICAg
ICBDb25zdFN0YXRlbWVudE5vZGUoaW50LCBpbnQsIENvbnN0RGVjbE5vZGUqIG5leHQpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTE1NCw3ICsxMTU5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBCbG9ja05vZGUgOiBwdWJsaWMgU3RhdGVtZW50
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBCbG9ja05vZGUoaW50LCBTb3VyY2VFbGVtZW50
cyogPSAwKTsKKyAgICAgICAgQmxvY2tOb2RlKGludCwgaW50LCBTb3VyY2VFbGVtZW50cyogPSAw
KTsKIAogICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdDsKICAg
ICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudCgpIGNvbnN0OwpAQCAtMTE2OSw3ICsx
MTc0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFbXB0eVN0YXRlbWVudE5vZGUg
OiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBFbXB0eVN0YXRl
bWVudE5vZGUoaW50KTsKKyAgICAgICAgRW1wdHlTdGF0ZW1lbnROb2RlKGludCwgaW50KTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTExNzksNyArMTE4NCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIERlYnVnZ2VyU3RhdGVtZW50Tm9kZSA6
IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlYnVnZ2VyU3Rh
dGVtZW50Tm9kZShpbnQpOworICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5vZGUoaW50LCBpbnQp
OwogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMTg3
LDcgKzExOTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV4cHJTdGF0ZW1lbnRO
b2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXhwclN0
YXRlbWVudE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBFeHByU3RhdGVtZW50
Tm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogZXhwcigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcjsgfQogCkBAIC0xMjAxLDggKzEyMDYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFZhclN0YXRlbWVudE5vZGUgOiBwdWJsaWMg
U3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBWYXJTdGF0ZW1lbnROb2RlKGlu
dCwgRXhwcmVzc2lvbk5vZGUqKTsgICAgICAgIAotCisgICAgICAgIFZhclN0YXRlbWVudE5vZGUo
aW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKik7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOwogCkBAIC0xMjExLDcgKzEyMTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIElmTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IElmTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlm
QmxvY2spOworICAgICAgICBJZk5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRp
b24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2spOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CkBAIC0xMjIyLDcgKzEyMjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIElmRWxzZU5vZGUgOiBwdWJsaWMgSWZOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IElmRWxzZU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2Rl
KiBpZkJsb2NrLCBTdGF0ZW1lbnROb2RlKiBlbHNlQmxvY2spOworICAgICAgICBJZkVsc2VOb2Rl
KGludCwgaW50LCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJs
b2NrLCBTdGF0ZW1lbnROb2RlKiBlbHNlQmxvY2spOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwpAQCAtMTIzMiw3ICsxMjM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBEb1doaWxlTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIERvV2hpbGVOb2RlKGludCwgU3RhdGVtZW50Tm9kZSosIEV4cHJlc3Npb25Ob2Rl
Kik7CisgICAgICAgIERvV2hpbGVOb2RlKGludCwgaW50LCBTdGF0ZW1lbnROb2RlKiwgRXhwcmVz
c2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEy
NDMsNyArMTI0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgV2hpbGVOb2RlIDog
cHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgV2hpbGVOb2RlKGlu
dCwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7CisgICAgICAgIFdoaWxlTm9kZShp
bnQsIGludCwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjU0LDcgKzEyNTgsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIEZvck5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBGb3JOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIEV4cHJlc3Npb25Ob2RlKiBleHByMywgU3RhdGVtZW50Tm9kZSos
IGJvb2wgZXhwcjFXYXNWYXJEZWNsKTsKKyAgICAgICAgRm9yTm9kZShpbnQsIGludCwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMywgU3RhdGVtZW50Tm9kZSosIGJvb2wgZXhwcjFXYXNWYXJEZWNsKTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyNjgsOCArMTI3Miw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgRm9ySW5Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1
YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGb3JJ
bk5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBFeHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2Rl
KiwgU3RhdGVtZW50Tm9kZSopOwotICAgICAgICBGb3JJbk5vZGUoSlNHbG9iYWxEYXRhKiwgaW50
LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0
YXRlbWVudE5vZGUqLCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCk7
CisgICAgICAgIEZvckluTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCwgRXhwcmVzc2lvbk5v
ZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsKKyAgICAgICAgRm9ySW5Ob2Rl
KEpTR2xvYmFsRGF0YSosIGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5v
ZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqLCBpbnQgZGl2b3QsIGludCBzdGFy
dE9mZnNldCwgaW50IGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CkBAIC0xMjg0LDggKzEyODgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IENvbnRpbnVlTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29udGludWVOb2RlKEpTR2xvYmFs
RGF0YSosIGludCk7Ci0gICAgICAgIENvbnRpbnVlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICAgICAgQ29udGludWVOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgaW50KTsKKyAgICAg
ICAgQ29udGludWVOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyOTUsOCArMTI5OSw4IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQnJlYWtOb2RlIDogcHVibGljIFN0YXRlbWVu
dE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAg
ICAgICBCcmVha05vZGUoSlNHbG9iYWxEYXRhKiwgaW50KTsKLSAgICAgICAgQnJlYWtOb2RlKGlu
dCwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBCcmVha05vZGUoSlNHbG9iYWxEYXRhKiwg
aW50LCBpbnQpOworICAgICAgICBCcmVha05vZGUoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIm
KTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTMw
Niw3ICsxMzEwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZXR1cm5Ob2RlIDog
cHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBSZXR1cm5Ob2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIHZhbHVl
KTsKKyAgICAgICAgUmV0dXJuTm9kZShpbnQsIGludCwgRXhwcmVzc2lvbk5vZGUqIHZhbHVlKTsK
IAogICAgICAgICBFeHByZXNzaW9uTm9kZSogdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAK
QEAgLTEzMjAsNyArMTMyNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgV2l0aE5v
ZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBXaXRoTm9k
ZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIHVpbnQzMl90IGRpdm90LCB1
aW50MzJfdCBleHByZXNzaW9uTGVuZ3RoKTsKKyAgICAgICAgV2l0aE5vZGUoaW50LCBpbnQsIEV4
cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIHVpbnQzMl90IGRpdm90LCB1aW50MzJfdCBl
eHByZXNzaW9uTGVuZ3RoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
QEAgLTEzMzMsNyArMTMzNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTGFiZWxO
b2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7CiAgICAgcHVibGljOgotICAgICAgICBMYWJlbE5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBTdGF0ZW1lbnROb2RlKik7CisgICAgICAgIExhYmVsTm9kZShpbnQsIGludCwgY29u
c3QgSWRlbnRpZmllciYgbmFtZSwgU3RhdGVtZW50Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTM0NCw3ICsxMzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBUaHJvd05vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFRocm93Tm9kZShp
bnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIFRocm93Tm9kZShpbnQsIGludCwgRXhwcmVz
c2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEz
NTQsNyArMTM1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVHJ5Tm9kZSA6IHB1
YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFRyeU5vZGUoaW50LCBT
dGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciYgZXhjZXB0aW9uSWRlbnQs
IFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jayk7
CisgICAgICAgIFRyeU5vZGUoaW50LCBpbnQsIFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBjb25z
dCBJZGVudGlmaWVyJiBleGNlcHRpb25JZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywg
U3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKQEAgLTEzODMsOCArMTM4Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayBWYXJTdGFjazsKICAgICAgICAg
dHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwog
Ci0gICAgICAgIFNjb3BlTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGJvb2wgaW5TdHJpY3RDb250
ZXh0KTsKLSAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgY29uc3QgU291cmNl
Q29kZSYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRp
ZmllclNldCYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIFNjb3Bl
Tm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGludCwgYm9vbCBpblN0cmljdENvbnRleHQpOworICAg
ICAgICBTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQsIGNvbnN0IFNvdXJjZUNvZGUm
LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJT
ZXQmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHVzaW5nIFBh
cnNlckFyZW5hUmVmQ291bnRlZDo6b3BlcmF0b3IgbmV3OwogCkBAIC0xNDQ2LDEyICsxNDUwLDEy
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFByb2dyYW1Ob2RlIDogcHVibGljIFNjb3Bl
Tm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0Z1bmN0aW9u
Tm9kZSA9IGZhbHNlOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gY3Jl
YXRlKEpTR2xvYmFsRGF0YSosIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0
aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJl
cywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2dyYW1O
b2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFy
U3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUm
LCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHN0YXRpYyBjb25z
dCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IGZhbHNlOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
UHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNr
KiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29k
ZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgUHJvZ3JhbU5vZGUoSlNHbG9i
YWxEYXRhKiwgaW50LCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0
YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGlu
dCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKICAgICB9OwpAQCAtMTQ1
OSwxMiArMTQ2MywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFdmFsTm9kZSA6IHB1
YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
aXNGdW5jdGlvbk5vZGUgPSBmYWxzZTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZhbE5v
ZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sq
LCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2Rl
RmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxF
dmFsTm9kZT4gY3JlYXRlKEpTR2xvYmFsRGF0YSosIGludCwgaW50LCBTb3VyY2VFbGVtZW50cyos
IFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VD
b2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIEV2YWxOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFj
ayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENv
ZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIEV2YWxOb2RlKEpTR2xvYmFs
RGF0YSosIGludCwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFj
ayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQg
bnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CiAgICAgfTsKQEAgLTE0ODEs
OCArMTQ4NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGUg
OiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBi
b29sIGlzRnVuY3Rpb25Ob2RlID0gdHJ1ZTsKLSAgICAgICAgc3RhdGljIEZ1bmN0aW9uQm9keU5v
ZGUqIGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIGJvb2wgaXNTdHJpY3RNb2RlKTsKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gY3JlYXRlKEpTR2xvYmFsRGF0
YSosIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVu
dGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cyk7CisgICAgICAgIHN0YXRpYyBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGUoSlNHbG9iYWxE
YXRhKiwgaW50LCBpbnQsIGJvb2wgaXNTdHJpY3RNb2RlKTsKKyAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gY3JlYXRlKEpTR2xvYmFsRGF0YSosIGludCwgaW50LCBT
b3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQm
LCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAog
ICAgICAgICBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBt
X3BhcmFtZXRlcnMuZ2V0KCk7IH0KICAgICAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29u
c3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLT5zaXplKCk7IH0KQEAgLTE0OTksOCArMTUwMyw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rp
b24gPSB0cnVlOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0ds
b2JhbERhdGEqLCBpbnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKLSAgICAgICAgRnVuY3Rpb25C
b2R5Tm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBG
dW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVh
dHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xv
YmFsRGF0YSosIGludCwgaW50LCBib29sIGluU3RyaWN0Q29udGV4dCk7CisgICAgICAgIEZ1bmN0
aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFy
U3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUm
LCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIElkZW50aWZpZXIg
bV9pZGVudDsKICAgICAgICAgSWRlbnRpZmllciBtX2luZmVycmVkTmFtZTsKQEAgLTE1MDksNyAr
MTUxMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY0V4cHJOb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmNFeHByTm9kZShp
bnQsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbkJvZHlOb2RlKiwgY29uc3QgU291cmNlQ29k
ZSYsIFBhcmFtZXRlck5vZGUqID0gMCk7CisgICAgICAgIEZ1bmNFeHByTm9kZShpbnQsIGludCwg
Y29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwg
UGFyYW1ldGVyTm9kZSogPSAwKTsKIAogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5KCkg
eyByZXR1cm4gbV9ib2R5OyB9CiAKQEAgLTE1MjMsNyArMTUyNyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgRnVuY0RlY2xOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgRnVuY0RlY2xOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIEZ1
bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsK
KyAgICAgICAgRnVuY0RlY2xOb2RlKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rp
b25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOwogCiAg
ICAgICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KIApAQCAt
MTU3NCw3ICsxNTc4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBTd2l0Y2hOb2Rl
IDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgU3dpdGNoTm9k
ZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwgQ2FzZUJsb2NrTm9kZSopOworICAgICAgICBTd2l0Y2hO
b2RlKGludCwgaW50LCBFeHByZXNzaW9uTm9kZSosIENhc2VCbG9ja05vZGUqKTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAppbmRleCBkODhhOWE4Yjc2YmVkZThhMDkyYWU3ZmIyYzVmYmRjNWFkNThmYTM5
Li5kZjRiYzk1MGMxNTQ1OTdmZDUxODc1ODY3ZjAxMjU2YzE2ZjZiZjU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xNzIsNiArMTcyLDcgQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJEZWNsYXJhdGlvbihUcmVlQnVpbGRl
ciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goVkFSKSk7CisgICAgaW50IGtleVRva2Vu
Q29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBpbnQgc3RhcnQgPSB0b2tlbkxpbmUoKTsKICAg
ICBpbnQgZW5kID0gMDsKICAgICBpbnQgc2NyYXRjaDsKQEAgLTE4MiwyMCArMTgzLDIxIEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VWYXJEZWNsYXJhdGlvCiAgICAgZmFpbElmVHJ1ZShtX2Vycm9yKTsKICAgICBmYWls
SWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZVZhclN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB2YXJEZWNscywgc3RhcnQs
IGVuZCk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVmFyU3RhdGVtZW50KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCB2YXJEZWNscywgc3RhcnQsIGVuZCk7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29uc3REZWNsYXJh
dGlvbihUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goQ09OU1RUT0tF
TikpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgaW50IHN0
YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVuZCA9IDA7CiAgICAgVHJlZUNvbnN0RGVjbExp
c3QgY29uc3REZWNscyA9IHBhcnNlQ29uc3REZWNsYXJhdGlvbkxpc3QoY29udGV4dCk7CiAgICAg
ZmFpbElmVHJ1ZShtX2Vycm9yKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwog
ICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnN0U3RhdGVtZW50KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGNvbnN0RGVjbHMsIHN0YXJ0LCBlbmQpOworICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUNvbnN0U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRv
a2VuQ29sdW1uLCBjb25zdERlY2xzLCBzdGFydCwgZW5kKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KQEAgLTIxMCw2ICsyMTIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRG9XaGlsZVN0YXRl
bQogICAgIGVuZExvb3AoKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIGludCBl
bmRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1
bW4oKTsKICAgICBjb25zdW1lT3JGYWlsKFdISUxFKTsKICAgICBjb25zdW1lT3JGYWlsKE9QRU5Q
QVJFTik7CiAgICAgVHJlZUV4cHJlc3Npb24gZXhwciA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0
KTsKQEAgLTIxNywxMyArMjIwLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEb1doaWxlU3RhdGVtCiAgICAgY29u
c3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKICAgICBpZiAobWF0Y2goU0VNSUNPTE9OKSkKICAgICAg
ICAgbmV4dCgpOyAvLyBBbHdheXMgcGVyZm9ybXMgYXV0b21hdGljIHNlbWljb2xvbiBpbnNlcnRp
b24uCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRG9XaGlsZVN0YXRlbWVudChtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCBzdGF0ZW1lbnQsIGV4cHIsIHN0YXJ0TGluZSwgZW5kTGluZSk7Cisg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRG9XaGlsZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgc3RhdGVtZW50LCBleHByLCBzdGFydExpbmUsIGVu
ZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVdo
aWxlU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChX
SElMRSkpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgaW50
IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICBjb25zdW1lT3JGYWls
KE9QRU5QQVJFTik7CkBAIC0yMzYsNyArMjQwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVdoaWxlU3RhdGVtZW4K
ICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVu
dXNlZCk7CiAgICAgZW5kTG9vcCgpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7Ci0gICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlV2hpbGVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgZXhwciwgc3RhdGVtZW50LCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZVdoaWxlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtl
eVRva2VuQ29sdW1uLCBleHByLCBzdGF0ZW1lbnQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0yNDUsNiArMjQ5LDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VWYXJEZWNsYXJhdGkKICAgICBUcmVlRXhwcmVzc2lvbiB2YXJEZWNscyA9IDA7CiAgICAg
ZG8gewogICAgICAgICBkZWNsYXJhdGlvbnMrKzsKKyAgICAgICAgaW50IGtleVRva2VuQ29sdW1u
ID0gdG9rZW5Db2x1bW4oKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBtYXRjaE9yRmFpbChJ
REVOVCk7CiAgICAgICAgIApAQCAtMjY2LDExICsyNzEsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJEZWNs
YXJhdGkKICAgICAgICAgICAgIGxhc3RJbml0aWFsaXplciA9IGluaXRpYWxpemVyOwogICAgICAg
ICAgICAgZmFpbElmRmFsc2UoaW5pdGlhbGl6ZXIpOwogICAgICAgICAgICAgCi0gICAgICAgICAg
ICBUcmVlRXhwcmVzc2lvbiBub2RlID0gY29udGV4dC5jcmVhdGVBc3NpZ25SZXNvbHZlKG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksICpuYW1lLCBpbml0aWFsaXplciwgaW5pdGlhbEFzc2lnbm1l
bnRzICE9IG1fYXNzaWdubWVudENvdW50LCB2YXJTdGFydCwgdmFyRGl2b3QsIGxhc3RUb2tlbkVu
ZCgpKTsKKyAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBjb250ZXh0LmNyZWF0ZUFz
c2lnblJlc29sdmUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sICpu
YW1lLCBpbml0aWFsaXplciwgaW5pdGlhbEFzc2lnbm1lbnRzICE9IG1fYXNzaWdubWVudENvdW50
LCB2YXJTdGFydCwgdmFyRGl2b3QsIGxhc3RUb2tlbkVuZCgpKTsKICAgICAgICAgICAgIGlmICgh
dmFyRGVjbHMpCiAgICAgICAgICAgICAgICAgdmFyRGVjbHMgPSBub2RlOwogICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHZhckRlY2xzID0gY29udGV4dC5jb21iaW5lQ29tbWFOb2Rl
cyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB2YXJEZWNscywgbm9kZSk7CisgICAgICAgICAg
ICAgICAgdmFyRGVjbHMgPSBjb250ZXh0LmNvbWJpbmVDb21tYU5vZGVzKG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCB2YXJEZWNscywgbm9kZSk7CiAgICAgICAgIH0K
ICAgICB9IHdoaWxlIChtYXRjaChDT01NQSkpOwogICAgIHJldHVybiB2YXJEZWNsczsKQEAgLTI4
Myw2ICsyODgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDb25zdERlY2xM
aXN0IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnN0RGVjbAogICAgIFRyZWVDb25zdERlY2xM
aXN0IGNvbnN0RGVjbHMgPSAwOwogICAgIFRyZWVDb25zdERlY2xMaXN0IHRhaWwgPSAwOwogICAg
IGRvIHsKKyAgICAgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICAg
ICAgbmV4dCgpOwogICAgICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXIqIG5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKQEAgLTI5NSw3ICszMDEsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDb25zdERlY2xMaXN0IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUNvbnN0RGVjbAogICAgICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6
RG9udEJ1aWxkU3RyaW5ncyk7IC8vIGNvbnN1bWUgJz0nCiAgICAgICAgICAgICBpbml0aWFsaXpl
ciA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIH0KLSAgICAg
ICAgdGFpbCA9IGNvbnRleHQuYXBwZW5kQ29uc3REZWNsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHRhaWwsIG5hbWUsIGluaXRpYWxpemVyKTsKKyAgICAgICAgdGFpbCA9IGNvbnRleHQuYXBw
ZW5kQ29uc3REZWNsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCB0
YWlsLCBuYW1lLCBpbml0aWFsaXplcik7CiAgICAgICAgIGlmICghY29uc3REZWNscykKICAgICAg
ICAgICAgIGNvbnN0RGVjbHMgPSB0YWlsOwogICAgIH0gd2hpbGUgKG1hdGNoKENPTU1BKSk7CkBA
IC0zMDYsNiArMzEyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGb3JTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNo
KEZPUikpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgaW50
IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICBjb25zdW1lT3JGYWls
KE9QRU5QQVJFTik7CkBAIC0zNTUsNyArMzYyLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0YXRlbWVudCgK
ICAgICAgICAgZW5kTG9vcCgpOwogICAgICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAg
ICAgICAKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGZvckluVGFyZ2V0LCBmb3JJbkluaXRpYWxpemVyLCBleHByLCBzdGF0
ZW1lbnQsIGRlY2xzU3RhcnQsIGluTG9jYXRpb24sIGV4cHJFbmQsIGluaXRTdGFydCwgaW5pdEVu
ZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9y
SW5Mb29wKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBmb3JJblRh
cmdldCwgZm9ySW5Jbml0aWFsaXplciwgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBpbkxv
Y2F0aW9uLCBleHByRW5kLCBpbml0U3RhcnQsIGluaXRFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7
CiAgICAgfQogICAgIAogICAgIGlmICghbWF0Y2goU0VNSUNPTE9OKSkgewpAQCAtMzkxLDcgKzM5
OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgc3Rh
dGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICAgICAgZW5kTG9v
cCgpOwogICAgICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwotICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVGb3JMb29wKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGRlY2xzLCBjb25k
aXRpb24sIGluY3JlbWVudCwgc3RhdGVtZW50LCBoYXNEZWNsYXJhdGlvbiwgc3RhcnRMaW5lLCBl
bmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9yTG9vcChtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZGVjbHMsIGNvbmRpdGlvbiwgaW5jcmVt
ZW50LCBzdGF0ZW1lbnQsIGhhc0RlY2xhcmF0aW9uLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAg
IH0KICAgICAKICAgICAvLyBGb3ItaW4gbG9vcApAQCAtNDA4LDEzICs0MTUsMTQgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUZvclN0YXRlbWVudCgKICAgICBlbmRMb29wKCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVt
ZW50KTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJbkxvb3AobV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwgZGVjbHMsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgZGVj
bHNFbmQsIGV4cHJFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRm9ySW5Mb29wKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1u
LCBkZWNscywgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBkZWNsc0VuZCwgZXhwckVuZCwg
c3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VCcmVha1N0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBB
U1NFUlQobWF0Y2goQlJFQUspKTsKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVt
bigpOwogICAgIGludCBzdGFydENvbCA9IHRva2VuU3RhcnQoKTsKICAgICBpbnQgZW5kQ29sID0g
dG9rZW5FbmQoKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CkBAIC00MjMsNyAr
NDMxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUJyZWFrU3RhdGVtZW4KICAgICAKICAgICBpZiAoYXV0b1NlbWlD
b2xvbigpKSB7CiAgICAgICAgIGZhaWxJZkZhbHNlV2l0aE1lc3NhZ2UoYnJlYWtJc1ZhbGlkKCks
ICInYnJlYWsnIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGEgc3dpdGNoIG9yIGxvb3Agc3RhdGVtZW50
Iik7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7
CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExp
bmUsIGVuZExpbmUpOwogICAgIH0KICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKQEAgLTQzMiwxMyArNDQw
LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VCcmVha1N0YXRlbWVuCiAgICAgZW5kTGluZSA9IHRva2VuTGluZSgp
OwogICAgIG5leHQoKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwotICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGlkZW50LCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGtleVRva2VuQ29sdW1uLCBpZGVudCwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBl
bmRMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VD
b250aW51ZVN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0
Y2goQ09OVElOVUUpKTsKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwog
ICAgIGludCBzdGFydENvbCA9IHRva2VuU3RhcnQoKTsKICAgICBpbnQgZW5kQ29sID0gdG9rZW5F
bmQoKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CkBAIC00NDcsNyArNDU2LDcg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUNvbnRpbnVlU3RhdGUKICAgICAKICAgICBpZiAoYXV0b1NlbWlDb2xvbigp
KSB7CiAgICAgICAgIGZhaWxJZkZhbHNlV2l0aE1lc3NhZ2UoY29udGludWVJc1ZhbGlkKCksICIn
Y29udGludWUnIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGEgbG9vcCBzdGF0ZW1lbnQiKTsKLSAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwg
ZW5kTGluZSk7CiAgICAgfQogICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwpAQCAtNDU4LDEzICs0NjcsMTQg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUNvbnRpbnVlU3RhdGUKICAgICBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAg
ICAgbmV4dCgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgaWRlbnQsIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwga2V5VG9rZW5Db2x1bW4sIGlkZW50LCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUs
IGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZVJldHVyblN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0
Y2goUkVUVVJOKSk7CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAg
ICBmYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aXNGdW5jdGlvbigpKTsKICAgICBpbnQgc3Rh
cnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVuZExpbmUgPSBzdGFydExpbmU7CkBAIC00
NzcsMjAgKzQ4NywyMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUmV0dXJuU3RhdGVtZQogICAgIGlmIChtYXRjaChT
RU1JQ09MT04pKQogICAgICAgICBlbmRMaW5lICA9IHRva2VuTGluZSgpOwogICAgIGlmIChhdXRv
U2VtaUNvbG9uKCkpCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVJldHVyblN0YXRlbWVu
dChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCAwLCBzdGFydCwgZW5kLCBzdGFydExpbmUsIGVu
ZExpbmUpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIDAsIHN0YXJ0LCBlbmQsIHN0
YXJ0TGluZSwgZW5kTGluZSk7CiAgICAgVHJlZUV4cHJlc3Npb24gZXhwciA9IHBhcnNlRXhwcmVz
c2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShleHByKTsKICAgICBlbmQgPSBsYXN0VG9r
ZW5FbmQoKTsKICAgICBpZiAobWF0Y2goU0VNSUNPTE9OKSkKICAgICAgICAgZW5kTGluZSAgPSB0
b2tlbkxpbmUoKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwotICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZVJldHVyblN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCBleHByLCBzdGFydCwgZW5kLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZVJldHVyblN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlU
b2tlbkNvbHVtbiwgZXhwciwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VUaHJvd1N0YXRlbWVudChU
cmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goVEhST1cpKTsKKyAgICBp
bnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGludCBlU3RhcnQgPSB0b2tl
blN0YXJ0KCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsK
QEAgLTUwMywxMyArNTE0LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VUaHJvd1N0YXRlbWVuCiAgICAgaW50IGVu
ZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwog
ICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVRocm93U3RhdGVtZW50KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGV4cHIsIGVTdGFydCwgZUVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsK
KyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVUaHJvd1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZXhwciwgZVN0YXJ0LCBlRW5kLCBzdGFydExpbmUs
IGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZVdpdGhTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNo
KFdJVEgpKTsKKyAgICBpbnQga2V5VG9rZW5Db2x1bW4gPSB0b2tlbkNvbHVtbigpOwogICAgIGZh
aWxJZlRydWVXaXRoTWVzc2FnZShzdHJpY3RNb2RlKCksICInd2l0aCcgc3RhdGVtZW50cyBhcmUg
bm90IHZhbGlkIGluIHN0cmljdCBtb2RlIik7CiAgICAgY3VycmVudFNjb3BlKCktPnNldE5lZWRz
RnVsbEFjdGl2YXRpb24oKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CkBAIC01
MjYsMTMgKzUzOCwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlV2l0aFN0YXRlbWVudAogICAgIFRyZWVTdGF0ZW1l
bnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICBmYWls
SWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVdpdGhT
dGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgc3RhdGVtZW50LCBzdGFy
dCwgZW5kLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVdp
dGhTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIGV4
cHIsIHN0YXRlbWVudCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTd2l0Y2hTdGF0ZW1lbnQoVHJl
ZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFNXSVRDSCkpOworICAgIGlu
dCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRv
a2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICBjb25zdW1lT3JGYWlsKE9QRU5QQVJFTik7CkBA
IC01NTMsNyArNTY2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN3aXRjaFN0YXRlbWUKICAgICBlbmRTd2l0Y2go
KTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0UpOwogICAgIAotICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZVN3aXRjaFN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHBy
LCBmaXJzdENsYXVzZXMsIGRlZmF1bHRDbGF1c2UsIHNlY29uZENsYXVzZXMsIHN0YXJ0TGluZSwg
ZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlU3dpdGNoU3RhdGVtZW50KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBleHByLCBmaXJzdENsYXVzZXMs
IGRlZmF1bHRDbGF1c2UsIHNlY29uZENsYXVzZXMsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiAgICAg
CiB9CiAKQEAgLTYzNywyMCArNjUwLDIxIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VUcnlTdGF0ZW1lbnQoCiAgICAg
ICAgIGZhaWxJZkZhbHNlKGZpbmFsbHlCbG9jayk7CiAgICAgfQogICAgIGZhaWxJZkZhbHNlKGNh
dGNoQmxvY2sgfHwgZmluYWxseUJsb2NrKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVUcnlT
dGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdHJ5QmxvY2ssIGlkZW50LCBjYXRj
aEJsb2NrLCBmaW5hbGx5QmxvY2ssIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZVRyeVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tl
bkNvbHVtbigpLCB0cnlCbG9jaywgaWRlbnQsIGNhdGNoQmxvY2ssIGZpbmFsbHlCbG9jaywgZmly
c3RMaW5lLCBsYXN0TGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRGVidWdnZXJTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAg
QVNTRVJUKG1hdGNoKERFQlVHR0VSKSk7CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5D
b2x1bW4oKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVuZExp
bmUgPSBzdGFydExpbmU7CiAgICAgbmV4dCgpOwogICAgIGlmIChtYXRjaChTRU1JQ09MT04pKQog
ICAgICAgICBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2Vt
aUNvbG9uKCkpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZURlYnVnZ2VyKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRGVidWdnZXIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4s
IHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+
CkBAIC02NjEsMTMgKzY3NSwxMyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQmxvY2tTdGF0ZW1lbgogICAgIG5leHQo
KTsKICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgbmV4dCgpOwotICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVCbG9ja1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCAwLCBzdGFydCwgbV9sYXN0TGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUJsb2NrU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1u
KCksIDAsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKICAgICB9CiAgICAgVHJlZVNvdXJjZUVsZW1lbnRz
IHN1YnRyZWUgPSBwYXJzZVNvdXJjZUVsZW1lbnRzPERvbnRDaGVja0ZvclN0cmljdE1vZGU+KGNv
bnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHN1YnRyZWUpOwogICAgIG1hdGNoT3JGYWlsKENMT1NF
QlJBQ0UpOwogICAgIG5leHQoKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCbG9ja1N0YXRl
bWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBzdWJ0cmVlLCBzdGFydCwgbV9sYXN0TGlu
ZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgc3VidHJlZSwgc3RhcnQsIG1fbGFzdExpbmUp
OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtNjkwLDcgKzcwNCw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VTdGF0ZW1lbnQoVHJlCiAgICAgICAgIHJldHVybiBwYXJzZUZ1bmN0aW9uRGVj
bGFyYXRpb24oY29udGV4dCk7CiAgICAgY2FzZSBTRU1JQ09MT046CiAgICAgICAgIG5leHQoKTsK
LSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRW1wdHlTdGF0ZW1lbnQobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUVtcHR5U3RhdGVt
ZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCkpOwogICAgIGNhc2Ug
SUY6CiAgICAgICAgIHJldHVybiBwYXJzZUlmU3RhdGVtZW50KGNvbnRleHQpOwogICAgIGNhc2Ug
RE86CkBAIC03NTksMTIgKzc3MywxMiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgog
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBp
ZiAobWF0Y2goQ0xPU0VCUkFDRSkpCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0
aW9uQm9keShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBzdHJpY3RNb2RlKCkpOworICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgdG9rZW5Db2x1bW4oKSwgc3RyaWN0TW9kZSgpKTsKICAgICBEZXB0aE1hbmFnZXIgc3Rh
dGVtZW50RGVwdGgoJm1fc3RhdGVtZW50RGVwdGgpOwogICAgIG1fc3RhdGVtZW50RGVwdGggPSAw
OwogICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGdW5jdGlvbkJvZHlCdWlsZGVyIGJvZHlCdWls
ZGVyKGNvbnN0X2Nhc3Q8SlNHbG9iYWxEYXRhKj4obV9nbG9iYWxEYXRhKSwgbV9sZXhlci5nZXQo
KSk7CiAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50czxDaGVja0ZvclN0cmljdE1v
ZGU+KGJvZHlCdWlsZGVyKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHN0cmljdE1vZGUoKSk7CisgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2Vu
Q29sdW1uKCksIHN0cmljdE1vZGUoKSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+CkBAIC03OTQsNyArODA4LDcgQEAgdGVtcGxhdGUgPEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJl
cXVpcmVtZW50cywgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgY2xhc3MKICAgICBpZiAo
Y29uc3QgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0qIGNhY2hlZEluZm8gPSBUcmVlQnVpbGRlcjo6
Q2FuVXNlRnVuY3Rpb25DYWNoZSA/IGZpbmRDYWNoZWRGdW5jdGlvbkluZm8ob3BlbkJyYWNlUG9z
KSA6IDApIHsKICAgICAgICAgLy8gSWYgd2UncmUgaW4gYSBzdHJpY3QgY29udGV4dCwgdGhlIGNh
Y2hlZCBmdW5jdGlvbiBpbmZvIG11c3Qgc2F5IGl0IHdhcyBzdHJpY3QgdG9vLgogICAgICAgICBB
U1NFUlQoIXN0cmljdE1vZGUoKSB8fCBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlKTsKLSAgICAgICAg
Ym9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGNhY2hlZEluZm8tPnN0cmljdE1vZGUpOworICAgICAgICBib2R5ID0gY29udGV4dC5jcmVh
dGVGdW5jdGlvbkJvZHkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwg
Y2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7CiAgICAgICAgIAogICAgICAgICBmdW5jdGlvblNjb3Bl
LT5yZXN0b3JlRnVuY3Rpb25JbmZvKGNhY2hlZEluZm8pOwogICAgICAgICBmYWlsSWZGYWxzZShw
b3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZv
KSk7CkBAIC04NTQsNyArODY4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGEKICAgICBmYWls
SWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25OZWVkc05hbWUsIHRydWU+KGNvbnRl
eHQsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywg
Ym9keVN0YXJ0TGluZSkpKTsKICAgICBmYWlsSWZGYWxzZShuYW1lKTsKICAgICBmYWlsSWZGYWxz
ZUlmU3RyaWN0KGRlY2xhcmVWYXJpYWJsZShuYW1lKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRnVuY0RlY2xTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgbmFtZSwgYm9k
eSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5l
LCBtX2xhc3RMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVu
dChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBuYW1lLCBib2R5LCBw
YXJhbWV0ZXJzLCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1f
bGFzdExpbmUpOwogfQogCiBzdHJ1Y3QgTGFiZWxJbmZvIHsKQEAgLTg4Miw2ICs4OTYsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRXhwcmVzc2lvbk9yTAogICAgIGRvIHsKICAgICAgICAgaW50IHN0YXJ0ID0gdG9r
ZW5TdGFydCgpOwogICAgICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgICAg
IGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAgICAgICAgIGlmICghbmV4dFRv
a2VuSXNDb2xvbigpKSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBoaXQgdGhpcyBwYXRoIHdlJ3Jl
IG1ha2luZyBhIGV4cHJlc3Npb24gc3RhdGVtZW50LCB3aGljaAogICAgICAgICAgICAgLy8gYnkg
ZGVmaW5pdGlvbiBjYW4ndCBtYWtlIHVzZSBvZiBjb250aW51ZS9icmVhayBzbyB3ZSBjYW4ganVz
dApAQCAtODg5LDcgKzkwNCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uT3JMCiAgICAgICAgICAg
ICBUcmVlRXhwcmVzc2lvbiBleHByZXNzaW9uID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwog
ICAgICAgICAgICAgZmFpbElmRmFsc2UoZXhwcmVzc2lvbik7CiAgICAgICAgICAgICBmYWlsSWZG
YWxzZShhdXRvU2VtaUNvbG9uKCkpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
RXhwclN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByZXNzaW9uLCBzdGFy
dExpbmUsIG1fbGFzdExpbmUpOworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhw
clN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBrZXlUb2tlbkNvbHVtbiwgZXhw
cmVzc2lvbiwgc3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKICAgICAgICAgfQogICAgICAgICBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBpbnQg
ZW5kID0gdG9rZW5FbmQoKTsKQEAgLTkyOCw3ICs5NDMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lv
bk9yTAogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBsYWJlbHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgY29uc3QgTGFiZWxJbmZvJiBpbmZv
ID0gbGFiZWxzW2xhYmVscy5zaXplKCkgLSBpIC0gMV07Ci0gICAgICAgIHN0YXRlbWVudCA9IGNv
bnRleHQuY3JlYXRlTGFiZWxTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgaW5m
by5tX2lkZW50LCBzdGF0ZW1lbnQsIGluZm8ubV9zdGFydCwgaW5mby5tX2VuZCk7CisgICAgICAg
IHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlTGFiZWxTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgaW5mby5tX2lkZW50LCBzdGF0ZW1lbnQsIGluZm8u
bV9zdGFydCwgaW5mby5tX2VuZCk7CiAgICAgfQogICAgIHJldHVybiBzdGF0ZW1lbnQ7CiB9CkBA
IC05MzcsMTcgKzk1MiwxOCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgaW50
IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2Vu
Q29sdW1uKCk7CiAgICAgVHJlZUV4cHJlc3Npb24gZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lv
bihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShleHByZXNzaW9uKTsKICAgICBmYWlsSWZGYWxz
ZShhdXRvU2VtaUNvbG9uKCkpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1l
bnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcmVzc2lvbiwgc3RhcnRMaW5lLCBtX2xh
c3RMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBleHByZXNzaW9uLCBzdGFydExpbmUs
IG1fbGFzdExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUlmU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRj
aChJRikpOwotICAgIAorICAgIGludCBrZXlUb2tlbkNvbHVtbiA9IHRva2VuQ29sdW1uKCk7CiAg
ICAgaW50IHN0YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogICAgIApAQCAtOTYzLDcg
Kzk3OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VJZlN0YXRlbWVudChUCiAgICAgZmFpbElmRmFsc2UodHJ1ZUJs
b2NrKTsKICAgICAKICAgICBpZiAoIW1hdGNoKEVMU0UpKQotICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjb25kaXRpb24s
IHRydWVCbG9jaywgc3RhcnQsIGVuZCk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUlm
U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGtleVRva2VuQ29sdW1uLCBjb25k
aXRpb24sIHRydWVCbG9jaywgc3RhcnQsIGVuZCk7CiAgICAgCiAgICAgVmVjdG9yPFRyZWVFeHBy
ZXNzaW9uPiBleHByU3RhY2s7CiAgICAgVmVjdG9yPHBhaXI8aW50LCBpbnQ+ID4gcG9zU3RhY2s7
CkBAIC0xMDAzLDcgKzEwMTksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVAogICAgICAgICBz
dGF0ZW1lbnRTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgIHBhaXI8aW50LCBpbnQ+IHBvcyA9
IHBvc1N0YWNrLmxhc3QoKTsKICAgICAgICAgcG9zU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAg
ICBzdGF0ZW1lbnRTdGFjay5hcHBlbmQoY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBjb25kaXRpb24sIHRydWVCbG9jaywgcG9zLmZpcnN0LCBwb3Mu
c2Vjb25kKSk7CisgICAgICAgIHN0YXRlbWVudFN0YWNrLmFwcGVuZChjb250ZXh0LmNyZWF0ZUlm
U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGNvbmRp
dGlvbiwgdHJ1ZUJsb2NrLCBwb3MuZmlyc3QsIHBvcy5zZWNvbmQpKTsKICAgICB9CiAgICAgCiAg
ICAgd2hpbGUgKCFleHByU3RhY2suaXNFbXB0eSgpKSB7CkBAIC0xMDE1LDE2ICsxMDMxLDE3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VJZlN0YXRlbWVudChUCiAgICAgICAgIHN0YXRlbWVudFN0YWNrLnJlbW92ZUxh
c3QoKTsKICAgICAgICAgcGFpcjxpbnQsIGludD4gcG9zID0gcG9zU3RhY2subGFzdCgpOwogICAg
ICAgICBwb3NTdGFjay5yZW1vdmVMYXN0KCk7Ci0gICAgICAgIHN0YXRlbWVudFN0YWNrLmFwcGVu
ZChjb250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGNv
bmRpdGlvbiwgdHJ1ZUJsb2NrLCBmYWxzZUJsb2NrLCBwb3MuZmlyc3QsIHBvcy5zZWNvbmQpKTsK
KyAgICAgICAgc3RhdGVtZW50U3RhY2suYXBwZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgY29uZGl0aW9uLCB0cnVl
QmxvY2ssIGZhbHNlQmxvY2ssIHBvcy5maXJzdCwgcG9zLnNlY29uZCkpOwogICAgIH0KICAgICAK
LSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBjb25kaXRpb24sIHRydWVCbG9jaywgc3RhdGVtZW50U3RhY2subGFzdCgpLCBzdGFy
dCwgZW5kKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBjb25kaXRpb24sIHRydWVCbG9jaywgc3Rh
dGVtZW50U3RhY2subGFzdCgpLCBzdGFydCwgZW5kKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lvbihUcmVlQnVpbGRlciYgY29udGV4dCkK
IHsKICAgICBmYWlsSWZTdGFja092ZXJmbG93KCk7CisgICAgaW50IGtleVRva2VuQ29sdW1uID0g
dG9rZW5Db2x1bW4oKTsKICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gcGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShub2RlKTsKICAgICBpZiAoIW1h
dGNoKENPTU1BKSkKQEAgLTEwMzQsNyArMTA1MSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lvbihU
CiAgICAgbV9ub25MSFNDb3VudCsrOwogICAgIFRyZWVFeHByZXNzaW9uIHJpZ2h0ID0gcGFyc2VB
c3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShyaWdodCk7Ci0g
ICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkNvbW1hIGNvbW1hTm9kZSA9IGNvbnRleHQuY3JlYXRl
Q29tbWFFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIG5vZGUsIHJpZ2h0KTsKKyAgICB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6Q29tbWEgY29tbWFOb2RlID0gY29udGV4dC5jcmVhdGVDb21t
YUV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9rZW5Db2x1bW4sIG5vZGUsIHJp
Z2h0KTsKICAgICB3aGlsZSAobWF0Y2goQ09NTUEpKSB7CiAgICAgICAgIG5leHQoVHJlZUJ1aWxk
ZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwogICAgICAgICByaWdodCA9IHBhcnNlQXNzaWdubWVudEV4
cHJlc3Npb24oY29udGV4dCk7CkBAIC0xMDQ5LDYgKzEwNjYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFz
c2lnbm1lbgogewogICAgIGZhaWxJZlN0YWNrT3ZlcmZsb3coKTsKICAgICBpbnQgc3RhcnQgPSB0
b2tlblN0YXJ0KCk7CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAg
ICBpbnQgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCA9IG1fYXNzaWdubWVudENvdW50OwogICAgIGlu
dCBpbml0aWFsTm9uTEhTQ291bnQgPSBtX25vbkxIU0NvdW50OwogICAgIFRyZWVFeHByZXNzaW9u
IGxocyA9IHBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKGNvbnRleHQpOwpAQCAtMTA3OCw3ICsx
MDk2LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW4KICAgICAgICAgfQogICAgICAgICBtX25v
blRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgaGFkQXNzaWdubWVudCA9IHRydWU7
Ci0gICAgICAgIGNvbnRleHQuYXNzaWdubWVudFN0YWNrQXBwZW5kKGFzc2lnbm1lbnRTdGFjaywg
bGhzLCBzdGFydCwgdG9rZW5TdGFydCgpLCBtX2Fzc2lnbm1lbnRDb3VudCwgb3ApOworICAgICAg
ICBjb250ZXh0LmFzc2lnbm1lbnRTdGFja0FwcGVuZChhc3NpZ25tZW50U3RhY2ssIGxocywgc3Rh
cnQsIGtleVRva2VuQ29sdW1uLCBtX2Fzc2lnbm1lbnRDb3VudCwgb3ApOwogICAgICAgICBzdGFy
dCA9IHRva2VuU3RhcnQoKTsKICAgICAgICAgbV9hc3NpZ25tZW50Q291bnQrKzsKICAgICAgICAg
bmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CkBAIC0xMTAxLDcgKzExMTksNyBA
QCBlbmQ6CiAgICAgICAgIHJldHVybiBsaHM7CiAgICAgCiAgICAgd2hpbGUgKGFzc2lnbm1lbnRT
dGFjaykKLSAgICAgICAgbGhzID0gY29udGV4dC5jcmVhdGVBc3NpZ25tZW50KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGFzc2lnbm1lbnRTdGFjaywgbGhzLCBpbml0aWFsQXNzaWdubWVudENv
dW50LCBtX2Fzc2lnbm1lbnRDb3VudCwgbGFzdFRva2VuRW5kKCkpOworICAgICAgICBsaHMgPSBj
b250ZXh0LmNyZWF0ZUFzc2lnbm1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9r
ZW5Db2x1bW4sIGFzc2lnbm1lbnRTdGFjaywgbGhzLCBpbml0aWFsQXNzaWdubWVudENvdW50LCBt
X2Fzc2lnbm1lbnRDb3VudCwgbGFzdFRva2VuRW5kKCkpOwogICAgIAogICAgIHJldHVybiBsaHM7
CiB9CkBAIC0xMTA5LDYgKzExMjcsNyBAQCBlbmQ6CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNvbnRl
eHQpCiB7CisgICAgaW50IGtleVRva2VuQ29sdW1uID0gdG9rZW5Db2x1bW4oKTsKICAgICBUcmVl
RXhwcmVzc2lvbiBjb25kID0gcGFyc2VCaW5hcnlFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZh
aWxJZkZhbHNlKGNvbmQpOwogICAgIGlmICghbWF0Y2goUVVFU1RJT04pKQpAQCAtMTEyMSw3ICsx
MTQwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb25kaXRpb25hbEUKICAgICAKICAgICBUcmVlRXhwcmVzc2lv
biByaHMgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZh
bHNlKHJocyk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29uZGl0aW9uYWxFeHByKG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIGNvbmQsIGxocywgcmhzKTsKKyAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVDb25kaXRpb25hbEV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwga2V5VG9r
ZW5Db2x1bW4sIGNvbmQsIGxocywgcmhzKTsKIH0KIAogQUxXQVlTX0lOTElORSBzdGF0aWMgYm9v
bCBpc1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCkBAIC0xMTY1LDcgKzExODQsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUJpbmFyeUV4cHJlcwogICAgICAgICAgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkJp
bmFyeU9wZXJhbmQgcmhzID0gY29udGV4dC5nZXRGcm9tT3BlcmFuZFN0YWNrKC0xKTsKICAgICAg
ICAgICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpCaW5hcnlPcGVyYW5kIGxocyA9IGNvbnRleHQu
Z2V0RnJvbU9wZXJhbmRTdGFjaygtMik7CiAgICAgICAgICAgICBjb250ZXh0LnNocmlua09wZXJh
bmRTdGFja0J5KG9wZXJhbmRTdGFja0RlcHRoLCAyKTsKLSAgICAgICAgICAgIGNvbnRleHQuYXBw
ZW5kQmluYXJ5T3BlcmF0aW9uKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIG9wZXJhbmRTdGFj
a0RlcHRoLCBvcGVyYXRvclN0YWNrRGVwdGgsIGxocywgcmhzKTsKKyAgICAgICAgICAgIGNvbnRl
eHQuYXBwZW5kQmluYXJ5T3BlcmF0aW9uKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2Vu
Q29sdW1uKCksIG9wZXJhbmRTdGFja0RlcHRoLCBvcGVyYXRvclN0YWNrRGVwdGgsIGxocywgcmhz
KTsKICAgICAgICAgICAgIGNvbnRleHQub3BlcmF0b3JTdGFja1BvcChvcGVyYXRvclN0YWNrRGVw
dGgpOwogICAgICAgICB9CiAgICAgICAgIGNvbnRleHQub3BlcmF0b3JTdGFja0FwcGVuZChvcGVy
YXRvclN0YWNrRGVwdGgsIG9wZXJhdG9yVG9rZW4sIHByZWNlZGVuY2UpOwpAQCAtMTE3Niw3ICsx
MTk1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VCaW5hcnlFeHByZXMKICAgICAgICAgdHlwZW5hbWUgVHJlZUJ1
aWxkZXI6OkJpbmFyeU9wZXJhbmQgcmhzID0gY29udGV4dC5nZXRGcm9tT3BlcmFuZFN0YWNrKC0x
KTsKICAgICAgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkJpbmFyeU9wZXJhbmQgbGhzID0gY29u
dGV4dC5nZXRGcm9tT3BlcmFuZFN0YWNrKC0yKTsKICAgICAgICAgY29udGV4dC5zaHJpbmtPcGVy
YW5kU3RhY2tCeShvcGVyYW5kU3RhY2tEZXB0aCwgMik7Ci0gICAgICAgIGNvbnRleHQuYXBwZW5k
QmluYXJ5T3BlcmF0aW9uKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIG9wZXJhbmRTdGFja0Rl
cHRoLCBvcGVyYXRvclN0YWNrRGVwdGgsIGxocywgcmhzKTsKKyAgICAgICAgY29udGV4dC5hcHBl
bmRCaW5hcnlPcGVyYXRpb24obV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4o
KSwgb3BlcmFuZFN0YWNrRGVwdGgsIG9wZXJhdG9yU3RhY2tEZXB0aCwgbGhzLCByaHMpOwogICAg
ICAgICBjb250ZXh0Lm9wZXJhdG9yU3RhY2tQb3Aob3BlcmF0b3JTdGFja0RlcHRoKTsKICAgICB9
CiAgICAgcmV0dXJuIGNvbnRleHQucG9wT3BlcmFuZFN0YWNrKG9wZXJhbmRTdGFja0RlcHRoKTsK
QEAgLTEyMjgsOCArMTI0Nyw4IEBAIHRlbXBsYXRlIDxib29sIGNvbXBsZXRlLCBjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzCiAgICAgICAgIG5l
eHQoKTsKICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTm9S
ZXF1aXJlbWVudHMsIGZhbHNlPihjb250ZXh0LCBhY2Nlc3Nvck5hbWUsIHBhcmFtZXRlcnMsIGJv
ZHksIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSkpKTsKICAgICAg
ICAgaWYgKHN0cmluZ1Byb3BlcnR5TmFtZSkKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnRl
bXBsYXRlIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8Y29tcGxldGU+KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIHR5cGUsIHN0cmluZ1Byb3BlcnR5TmFtZSwgcGFyYW1ldGVycywgYm9k
eSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5l
KTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQudGVtcGxhdGUgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQ
cm9wZXJ0eTxjb21wbGV0ZT4oY29uc3RfY2FzdDxKU0dsb2JhbERhdGEqPihtX2dsb2JhbERhdGEp
LCBtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0eXBlLCBudW1lcmljUHJvcGVydHlOYW1lLCBw
YXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExp
bmUsIG1fbGFzdExpbmUpOworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQudGVtcGxhdGUgY3Jl
YXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eTxjb21wbGV0ZT4obV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgdG9rZW5Db2x1bW4oKSwgdHlwZSwgc3RyaW5nUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJz
LCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFz
dExpbmUpOworICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNl
dHRlclByb3BlcnR5PGNvbXBsZXRlPihjb25zdF9jYXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xvYmFs
RGF0YSksIG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIHR5cGUsIG51
bWVyaWNQcm9wZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VC
cmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CiAgICAgfQogICAgIGNhc2UgTlVN
QkVSOiB7CiAgICAgICAgIGRvdWJsZSBwcm9wZXJ0eU5hbWUgPSBtX3Rva2VuLm1fZGF0YS5kb3Vi
bGVWYWx1ZTsKQEAgLTEyNTcsNyArMTI3Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlT2JqZWN0TGl0ZXJhCiAg
ICAgCiAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgIG5leHQoKTsKLSAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpKTsKICAgICB9CiAgICAgCiAgICAg
VHJlZVByb3BlcnR5IHByb3BlcnR5ID0gcGFyc2VQcm9wZXJ0eTxmYWxzZT4oY29udGV4dCk7CkBA
IC0xMjY5LDcgKzEyODgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU9iamVjdExpdGVyYQogICAgICAgICBtX2xl
eGVyLT5zZXRMaW5lTnVtYmVyKG9sZExpbmVOdW1iZXIpOwogICAgICAgICByZXR1cm4gcGFyc2VT
dHJpY3RPYmplY3RMaXRlcmFsKGNvbnRleHQpOwogICAgIH0KLSAgICBUcmVlUHJvcGVydHlMaXN0
IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIHByb3BlcnR5KTsKKyAgICBUcmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlz
dCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IHRva2VuQ29sdW1uKCksIHByb3BlcnR5KTsKICAgICBUcmVlUHJvcGVydHlMaXN0IHRhaWwgPSBw
cm9wZXJ0eUxpc3Q7CiAgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewogICAgICAgICBuZXh0KFRy
ZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKQEAgLTEyODUsMTQgKzEzMDQsMTQgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VPYmplY3RMaXRlcmEKICAgICAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIo
b2xkTGluZU51bWJlcik7CiAgICAgICAgICAgICByZXR1cm4gcGFyc2VTdHJpY3RPYmplY3RMaXRl
cmFsKGNvbnRleHQpOwogICAgICAgICB9Ci0gICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZVBy
b3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBwcm9wZXJ0eSwgdGFpbCk7Cisg
ICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBwcm9wZXJ0eSwgdGFpbCk7CiAgICAgfQogICAgIAog
ICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDRSk7CiAgICAgCiAgICAgbV9ub25MSFNDb3VudCA9
IG9sZE5vbkxIU0NvdW50OwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExp
dGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHlMaXN0KTsKKyAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IHRva2VuQ29sdW1uKCksIHByb3BlcnR5TGlzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CkBAIC0xMzA0LDcgKzEzMjMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0cmljdE9iamVjdAog
CiAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpKTsKICAgICB9CiAgICAgCiAgICAgVHJl
ZVByb3BlcnR5IHByb3BlcnR5ID0gcGFyc2VQcm9wZXJ0eTx0cnVlPihjb250ZXh0KTsKQEAgLTEz
MTYsNyArMTMzNSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RyaWN0T2JqZWN0CiAgICAgaWYgKCFtX3N5bnRh
eEFscmVhZHlWYWxpZGF0ZWQpCiAgICAgICAgIG9iamVjdFZhbGlkYXRvci5hZGQoY29udGV4dC5n
ZXROYW1lKHByb3BlcnR5KS5pbXBsKCksIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkpOwogICAg
IAotICAgIFRyZWVQcm9wZXJ0eUxpc3QgcHJvcGVydHlMaXN0ID0gY29udGV4dC5jcmVhdGVQcm9w
ZXJ0eUxpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHkpOworICAgIFRyZWVQ
cm9wZXJ0eUxpc3QgcHJvcGVydHlMaXN0ID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgcHJvcGVydHkpOwogICAgIFRy
ZWVQcm9wZXJ0eUxpc3QgdGFpbCA9IHByb3BlcnR5TGlzdDsKICAgICB3aGlsZSAobWF0Y2goQ09N
TUEpKSB7CiAgICAgICAgIG5leHQoKTsKQEAgLTEzMzQsMTQgKzEzNTMsMTQgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VTdHJpY3RPYmplY3QKICAgICAgICAgICAgICAgICBwcm9wZXJ0eUVudHJ5Lml0ZXJhdG9yLT5z
ZWNvbmQgfD0gY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QobV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHksIHRhaWwpOworICAgICAgICB0YWlsID0gY29udGV4
dC5jcmVhdGVQcm9wZXJ0eUxpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1
bW4oKSwgcHJvcGVydHksIHRhaWwpOwogICAgIH0KICAgICAKICAgICBjb25zdW1lT3JGYWlsKENM
T1NFQlJBQ0UpOwogCiAgICAgbV9ub25MSFNDb3VudCA9IG9sZE5vbkxIU0NvdW50OwogCi0gICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBwcm9wZXJ0eUxpc3QpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVy
YWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgcHJvcGVydHlMaXN0
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTEzNTgsNyArMTM3Nyw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlQXJyYXlMaXRlcmFsCiAgICAgfQogICAgIGlmIChtYXRjaChDTE9TRUJS
QUNLRVQpKSB7CiAgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwot
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBlbGlzaW9ucyk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFycmF5KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGVsaXNpb25zKTsKICAgICB9CiAg
ICAgCiAgICAgVHJlZUV4cHJlc3Npb24gZWxlbSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24o
Y29udGV4dCk7CkBAIC0xMzc3LDcgKzEzOTYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFycmF5TGl0ZXJhbAog
ICAgICAgICAKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0tFVCkpIHsKICAgICAgICAgICAg
IG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwotICAgICAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlQXJyYXkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZWxpc2lvbnMs
IGVsZW1lbnRMaXN0KTsKKyAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFycmF5KG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGVsaXNpb25zLCBlbGVtZW50
TGlzdCk7CiAgICAgICAgIH0KICAgICAgICAgVHJlZUV4cHJlc3Npb24gZWxlbSA9IHBhcnNlQXNz
aWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGVsZW0pOwpA
QCAtMTM4OCw3ICsxNDA3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJheUxpdGVyYWwKICAgICAKICAgICBt
X25vbkxIU0NvdW50ID0gb2xkTm9uTEhTQ291bnQ7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlQXJyYXkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZWxlbWVudExpc3QpOworICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUFycmF5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRv
a2VuQ29sdW1uKCksIGVsZW1lbnRMaXN0KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KQEAgLTE0MTMsNyArMTQzMiw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAgICAg
fQogICAgIGNhc2UgVEhJU1RPS0VOOiB7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJu
IGNvbnRleHQudGhpc0V4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSk7CisgICAgICAgIHJl
dHVybiBjb250ZXh0LnRoaXNFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29s
dW1uKCkpOwogICAgIH0KICAgICBjYXNlIElERU5UOiB7CiAgICAgICAgIGludCBzdGFydCA9IHRv
a2VuU3RhcnQoKTsKQEAgLTE0MjEsMjkgKzE0NDAsMjkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhw
cmUKICAgICAgICAgbmV4dCgpOwogICAgICAgICBjdXJyZW50U2NvcGUoKS0+dXNlVmFyaWFibGUo
aWRlbnQsIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAqaWRlbnQpOwogICAg
ICAgICBtX2xhc3RJZGVudGlmaWVyID0gaWRlbnQ7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZVJlc29sdmUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgaWRlbnQsIHN0YXJ0KTsKKyAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmVzb2x2ZShtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCB0b2tlbkNvbHVtbigpLCBpZGVudCwgc3RhcnQpOwogICAgIH0KICAgICBjYXNlIFNUUklO
RzogewogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlk
ZW50OwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVN0cmlu
ZyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBpZGVudCk7CisgICAgICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZVN0cmluZyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigp
LCBpZGVudCk7CiAgICAgfQogICAgIGNhc2UgTlVNQkVSOiB7CiAgICAgICAgIGRvdWJsZSBkID0g
bV90b2tlbi5tX2RhdGEuZG91YmxlVmFsdWU7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlTnVtYmVyRXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBk
KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTnVtYmVyRXhwcihtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBkKTsKICAgICB9CiAgICAgY2FzZSBOVUxMVE9L
RU46IHsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVOdWxs
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCkpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVOdWxsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCkpOwogICAgIH0K
ICAgICBjYXNlIFRSVUVUT0tFTjogewogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUJvb2xlYW4obV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdHJ1ZSk7Cisg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJvb2xlYW4obV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgdG9rZW5Db2x1bW4oKSwgdHJ1ZSk7CiAgICAgfQogICAgIGNhc2UgRkFMU0VUT0tFTjog
ewogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJvb2xlYW4o
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZmFsc2UpOworICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVCb29sZWFuKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCks
IGZhbHNlKTsKICAgICB9CiAgICAgY2FzZSBESVZFUVVBTDoKICAgICBjYXNlIERJVklERTogewpA
QCAtMTQ1Nyw3ICsxNDc2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmUKICAgICAgICAgCiAg
ICAgICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICAgICAgbmV4dCgpOwotICAgICAg
ICBUcmVlRXhwcmVzc2lvbiByZSA9IGNvbnRleHQuY3JlYXRlUmVnRXhwKG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksICpwYXR0ZXJuLCAqZmxhZ3MsIHN0YXJ0KTsKKyAgICAgICAgVHJlZUV4cHJl
c3Npb24gcmUgPSBjb250ZXh0LmNyZWF0ZVJlZ0V4cChtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCB0b2tlbkNvbHVtbigpLCAqcGF0dGVybiwgKmZsYWdzLCBzdGFydCk7CiAgICAgICAgIGlmICgh
cmUpIHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHlhcnJFcnJvck1zZyA9IFlhcnI6OmNoZWNr
U3ludGF4KHBhdHRlcm4tPnVzdHJpbmcoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIW1fZXJyb3JN
ZXNzYWdlLmlzTnVsbCgpKTsKQEAgLTE0ODEsMTMgKzE1MDAsMTMgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlQXJndW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFyZ3Vt
ZW50cyhUcmUKICAgICBUcmVlRXhwcmVzc2lvbiBmaXJzdEFyZyA9IHBhcnNlQXNzaWdubWVudEV4
cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZmlyc3RBcmcpOwogICAgIAotICAg
IFRyZWVBcmd1bWVudHNMaXN0IGFyZ0xpc3QgPSBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50c0xpc3Qo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZmlyc3RBcmcpOworICAgIFRyZWVBcmd1bWVudHNM
aXN0IGFyZ0xpc3QgPSBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50c0xpc3QobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZmlyc3RBcmcpOwogICAgIFRyZWVBcmd1bWVudHNM
aXN0IHRhaWwgPSBhcmdMaXN0OwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAg
bmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAgICAgICAgIFRyZWVFeHByZXNz
aW9uIGFyZyA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIGZh
aWxJZkZhbHNlKGFyZyk7Ci0gICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50c0xp
c3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdGFpbCwgYXJnKTsKKyAgICAgICAgdGFpbCA9
IGNvbnRleHQuY3JlYXRlQXJndW1lbnRzTGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0
b2tlbkNvbHVtbigpLCB0YWlsLCBhcmcpOwogICAgIH0KICAgICBjb25zdW1lT3JGYWlsKENMT1NF
UEFSRU4pOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50cyhhcmdMaXN0KTsKQEAg
LTE1MTQsNyArMTUzMyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgIGludCBi
b2R5U3RhcnRMaW5lID0gMDsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBmYWlsSWZGYWxzZSgo
cGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgZmFsc2U+KGNvbnRleHQs
IG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9k
eVN0YXJ0TGluZSkpKTsKLSAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHBy
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIG5hbWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5C
cmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAg
ICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCB0b2tlbkNvbHVtbigpLCBuYW1lLCBib2R5LCBwYXJhbWV0ZXJzLCBvcGVuQnJhY2VQ
b3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOwogICAgIH0gZWxz
ZQogICAgICAgICBiYXNlID0gcGFyc2VQcmltYXJ5RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAK
QEAgLTE1MjksNyArMTU0OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAg
ICBpbnQgaW5pdGlhbEFzc2lnbm1lbnRzID0gbV9hc3NpZ25tZW50Q291bnQ7CiAgICAgICAgICAg
ICBUcmVlRXhwcmVzc2lvbiBwcm9wZXJ0eSA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAg
ICAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5KTsKLSAgICAgICAgICAgIGJhc2UgPSBjb250
ZXh0LmNyZWF0ZUJyYWNrZXRBY2Nlc3MobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgYmFzZSwg
cHJvcGVydHksIGluaXRpYWxBc3NpZ25tZW50cyAhPSBtX2Fzc2lnbm1lbnRDb3VudCwgZXhwcmVz
c2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZCgpKTsKKyAgICAgICAgICAgIGJhc2Ug
PSBjb250ZXh0LmNyZWF0ZUJyYWNrZXRBY2Nlc3MobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
dG9rZW5Db2x1bW4oKSwgYmFzZSwgcHJvcGVydHksIGluaXRpYWxBc3NpZ25tZW50cyAhPSBtX2Fz
c2lnbm1lbnRDb3VudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZCgp
KTsKICAgICAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDS0VUKTsKICAgICAgICAgICAg
IG1fbm9uTEhTQ291bnQgPSBub25MSFNDb3VudDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU0
MiwxMiArMTU2MSwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgICAg
IGludCBleHByRW5kID0gbGFzdFRva2VuRW5kKCk7CiAgICAgICAgICAgICAgICAgVHJlZUFyZ3Vt
ZW50cyBhcmd1bWVudHMgPSBwYXJzZUFyZ3VtZW50cyhjb250ZXh0KTsKICAgICAgICAgICAgICAg
ICBmYWlsSWZGYWxzZShhcmd1bWVudHMpOwotICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0
LmNyZWF0ZU5ld0V4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgYmFzZSwgYXJndW1lbnRz
LCBzdGFydCwgZXhwckVuZCwgbGFzdFRva2VuRW5kKCkpOyAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3RXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCB0b2tlbkNvbHVtbigpLCBiYXNlLCBhcmd1bWVudHMsIHN0YXJ0LCBleHByRW5kLCBsYXN0
VG9rZW5FbmQoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGludCBl
eHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kKCk7CiAgICAgICAgICAgICAgICAgVHJlZUFyZ3Vt
ZW50cyBhcmd1bWVudHMgPSBwYXJzZUFyZ3VtZW50cyhjb250ZXh0KTsKICAgICAgICAgICAgICAg
ICBmYWlsSWZGYWxzZShhcmd1bWVudHMpOwotICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0
Lm1ha2VGdW5jdGlvbkNhbGxOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGJhc2UsIGFy
Z3VtZW50cywgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCBsYXN0VG9rZW5FbmQoKSk7
CisgICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQubWFrZUZ1bmN0aW9uQ2FsbE5vZGUobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgYmFzZSwgYXJndW1lbnRzLCBl
eHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIGxhc3RUb2tlbkVuZCgpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIG1fbm9uTEhTQ291bnQgPSBub25MSFNDb3VudDsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTU1Nyw3ICsxNTc2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMK
ICAgICAgICAgICAgIGludCBleHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kKCk7CiAgICAgICAg
ICAgICBuZXh0RXhwZWN0SWRlbnRpZmllcihMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcyB8
IFRyZWVCdWlsZGVyOjpEb250QnVpbGRLZXl3b3Jkcyk7CiAgICAgICAgICAgICBtYXRjaE9yRmFp
bChJREVOVCk7Ci0gICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVEb3RBY2Nlc3MobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgYmFzZSwgbV90b2tlbi5tX2RhdGEuaWRlbnQsIGV4cHJl
c3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQoKSk7CisgICAgICAgICAgICBiYXNl
ID0gY29udGV4dC5jcmVhdGVEb3RBY2Nlc3MobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9r
ZW5Db2x1bW4oKSwgYmFzZSwgbV90b2tlbi5tX2RhdGEuaWRlbnQsIGV4cHJlc3Npb25TdGFydCwg
ZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQoKSk7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTU2Nyw3ICsxNTg2LDcgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VN
ZW1iZXJFeHByZXMKICAgICB9CiBlbmRNZW1iZXJFeHByZXNzaW9uOgogICAgIHdoaWxlIChuZXdD
b3VudC0tKQotICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVOZXdFeHByKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGJhc2UsIHN0YXJ0LCBsYXN0VG9rZW5FbmQoKSk7CisgICAgICAgIGJh
c2UgPSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9r
ZW5Db2x1bW4oKSwgYmFzZSwgc3RhcnQsIGxhc3RUb2tlbkVuZCgpKTsKICAgICByZXR1cm4gYmFz
ZTsKIH0KIApAQCAtMTYwMCw3ICsxNjE5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBtX25vbkxIU0NvdW50Kys7Ci0gICAgICAg
IGNvbnRleHQuYXBwZW5kVW5hcnlUb2tlbih0b2tlblN0YWNrRGVwdGgsIG1fdG9rZW4ubV90eXBl
LCB0b2tlblN0YXJ0KCkpOworICAgICAgICBjb250ZXh0LmFwcGVuZFVuYXJ5VG9rZW4odG9rZW5T
dGFja0RlcHRoLCBtX3Rva2VuLm1fdHlwZSwgdG9rZW5Db2x1bW4oKSk7CiAgICAgICAgIG5leHQo
KTsKICAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgfQpAQCAtMTYx
Nyw3ICsxNjM2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICBjYXNlIFBMVVNQTFVT
OgogICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgbV9ub25M
SFNDb3VudCsrOwotICAgICAgICBleHByID0gY29udGV4dC5tYWtlUG9zdGZpeE5vZGUobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgT3BQbHVzUGx1cywgc3ViRXhwclN0YXJ0LCBsYXN0
VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CisgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQb3N0
Zml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBleHByLCBP
cFBsdXNQbHVzLCBzdWJFeHByU3RhcnQsIGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpKTsKICAg
ICAgICAgbV9hc3NpZ25tZW50Q291bnQrKzsKICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0V2l0
aE5hbWVBbmRNZXNzYWdlKGlzRXZhbE9yQXJndW1lbnRzLCAiJyIsIG1fbGFzdElkZW50aWZpZXIt
PmltcGwoKSwgIicgY2Fubm90IGJlIG1vZGlmaWVkIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAg
IGZhaWxJZlRydWVJZlN0cmljdChyZXF1aXJlc0xFeHByKTsKQEAgLTE2MjYsNyArMTY0NSw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgY2FzZSBNSU5VU01JTlVTOgogICAgICAgICBt
X25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgbV9ub25MSFNDb3VudCsrOwot
ICAgICAgICBleHByID0gY29udGV4dC5tYWtlUG9zdGZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgZXhwciwgT3BNaW51c01pbnVzLCBzdWJFeHByU3RhcnQsIGxhc3RUb2tlbkVuZCgp
LCB0b2tlbkVuZCgpKTsKKyAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRva2VuQ29sdW1uKCksIGV4cHIsIE9wTWludXNNaW51
cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CiAgICAgICAgIG1f
YXNzaWdubWVudENvdW50Kys7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdFdpdGhOYW1lQW5k
TWVzc2FnZShpc0V2YWxPckFyZ3VtZW50cywgIiciLCBtX2xhc3RJZGVudGlmaWVyLT5pbXBsKCks
ICInIGNhbm5vdCBiZSBtb2RpZmllZCBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBmYWlsSWZU
cnVlSWZTdHJpY3QocmVxdWlyZXNMRXhwcik7CkBAIC0xNjQ0LDM2ICsxNjYzLDM2IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgd2hpbGUgKHRva2VuU3RhY2tEZXB0aCkgewogICAgICAg
ICBzd2l0Y2ggKGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFR5cGUodG9rZW5TdGFja0RlcHRo
KSkgewogICAgICAgICBjYXNlIEVYQ0xBTUFUSU9OOgotICAgICAgICAgICAgZXhwciA9IGNvbnRl
eHQuY3JlYXRlTG9naWNhbE5vdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByKTsKKyAg
ICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0ZUxvZ2ljYWxOb3QobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZXhwcik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBUSUxERToKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VCaXR3aXNl
Tm90Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByKTsKKyAgICAgICAgICAgIGV4
cHIgPSBjb250ZXh0Lm1ha2VCaXR3aXNlTm90Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCB0b2tlbkNvbHVtbigpLCBleHByKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IE1JTlVTOgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZU5lZ2F0ZU5vZGUobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5t
YWtlTmVnYXRlTm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBl
eHByKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBMVVM6Ci0gICAgICAgICAg
ICBleHByID0gY29udGV4dC5jcmVhdGVVbmFyeVBsdXMobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgZXhwcik7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVVbmFyeVBsdXMobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZXhwcik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBQTFVTUExVUzoKICAgICAgICAgY2FzZSBBVVRPUExVU1BM
VVM6Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlUHJlZml4Tm9kZShtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCBleHByLCBPcFBsdXNQbHVzLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFj
a0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBzdWJFeHByU3RhcnQgKyAxLCBlbmQpOworICAg
ICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgdG9rZW5Db2x1bW4oKSwgZXhwciwgT3BQbHVzUGx1cywgY29udGV4dC51bmFyeVRv
a2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5k
KTsKICAgICAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgY2FzZSBNSU5VU01JTlVTOgogICAgICAgICBjYXNlIEFVVE9NSU5VU01JTlVTOgot
ICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5vZGUobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgZXhwciwgT3BNaW51c01pbnVzLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xh
c3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBzdWJFeHByU3RhcnQgKyAxLCBlbmQpOworICAgICAg
ICAgICAgZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgdG9rZW5Db2x1bW4oKSwgZXhwciwgT3BNaW51c01pbnVzLCBjb250ZXh0LnVuYXJ5VG9r
ZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBzdWJFeHByU3RhcnQgKyAxLCBlbmQp
OwogICAgICAgICAgICAgbV9hc3NpZ25tZW50Q291bnQrKzsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIFRZUEVPRjoKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VUeXBl
T2ZOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIpOworICAgICAgICAgICAgZXhw
ciA9IGNvbnRleHQubWFrZVR5cGVPZk5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdG9r
ZW5Db2x1bW4oKSwgZXhwcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWT0lE
VE9LRU46Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVWb2lkKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGV4cHIpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRl
Vm9pZChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBleHByKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERFTEVURVRPS0VOOgogICAgICAgICAgICAg
ZmFpbElmVHJ1ZUlmU3RyaWN0V2l0aE5hbWVBbmRNZXNzYWdlKGNvbnRleHQuaXNSZXNvbHZlKGV4
cHIpLCAiQ2Fubm90IGRlbGV0ZSB1bnF1YWxpZmllZCBwcm9wZXJ0eSIsIG1fbGFzdElkZW50aWZp
ZXItPmltcGwoKSwgImluIHN0cmljdCBtb2RlIik7Ci0gICAgICAgICAgICBleHByID0gY29udGV4
dC5tYWtlRGVsZXRlTm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBjb250ZXh0
LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBlbmQsIGVuZCk7Cisg
ICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlRGVsZXRlTm9kZShtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCB0b2tlbkNvbHVtbigpLCBleHByLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xh
c3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBlbmQsIGVuZCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIC8vIElmIHdlIGdldCBoZXJlIHNvbWV0aGlu
ZyBoYXMgZ29uZSBob3JyaWJseSBob3JyaWJseSB3cm9uZwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKaW5kZXggYzJhMTFkNjY1Yjc5MTNlYzVmNjQzMWMwNjM2YzFhOGE2ZGQ2YTAx
Ni4uOGU2YzEwYjg1NTc3ZGYwYjcwYzZiOGFjNzQyODVkNzBhNjhlNTM4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC01NTQsNyArNTU0LDEyIEBAIHByaXZhdGU6CiAg
ICAgICAgIHJldHVybiBtX3Rva2VuLm1faW5mby5lbmRPZmZzZXQ7CiAgICAgfQogICAgIAotICAg
IGNvbnN0IGNoYXIqIGdldFRva2VuTmFtZShKU1Rva2VuVHlwZSB0b2spIAorICAgIEFMV0FZU19J
TkxJTkUgaW50IHRva2VuQ29sdW1uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Rva2VuLm1f
aW5mby5jb2x1bW47CisgICAgfQorCisgICAgY29uc3QgY2hhciogZ2V0VG9rZW5OYW1lKEpTVG9r
ZW5UeXBlIHRvaykKICAgICB7CiAgICAgICAgIHN3aXRjaCAodG9rKSB7CiAgICAgICAgIGNhc2Ug
TlVMTFRPS0VOOiAKQEAgLTEwMDUsNiArMTAxMCw3IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
CiAgICAgaWYgKG1fc291cmNlRWxlbWVudHMpIHsKICAgICAgICAgcmVzdWx0ID0gUGFyc2VkTm9k
ZTo6Y3JlYXRlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhlci0+Y3VycmVudENvbHVtbk51
bWJlcigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9zb3VyY2VFbGVt
ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFyRGVjbGFyYXRp
b25zID8gJm1fdmFyRGVjbGFyYXRpb25zLT5kYXRhIDogMCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fZnVuY0RlY2xhcmF0aW9ucyA/ICZtX2Z1bmNEZWNsYXJhdGlvbnMt
PmRhdGEgOiAwLApAQCAtMTAxMiw3ICsxMDE4LDcgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICptX3NvdXJjZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZmVhdHVyZXMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX251bUNvbnN0YW50cyk7Ci0gICAgICAgIHJlc3VsdC0+c2V0
TG9jKG1fc291cmNlLT5maXJzdExpbmUoKSwgbV9sYXN0TGluZSk7CisgICAgICAgIHJlc3VsdC0+
c2V0TG9jKG1fc291cmNlLT5maXJzdExpbmUoKSwgbV9sYXN0TGluZSwgbV9sZXhlci0+Y3VycmVu
dENvbHVtbk51bWJlcigpKTsKICAgICB9IGVsc2UgaWYgKGxleGljYWxHbG9iYWxPYmplY3QpIHsK
ICAgICAgICAgLy8gV2UgY2FuIG5ldmVyIHNlZSBhIHN5bnRheCBlcnJvciB3aGVuIHJlcGFyc2lu
ZyBhIGZ1bmN0aW9uLCBzaW5jZSB3ZSBzaG91bGQgaGF2ZQogICAgICAgICAvLyByZXBvcnRlZCB0
aGUgZXJyb3Igd2hlbiBwYXJzaW5nIHRoZSBjb250YWluaW5nIHByb2dyYW0gb3IgZXZhbCBjb2Rl
LiBTbyBpZiB3ZSdyZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJUb2tlbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5z
LmgKaW5kZXggYTFlYTc1MWFjMjBhNzkyZmY0YzVlNjIxYTAxYmM3NzQ5ZWEzYTliZi4uNjNiM2Zi
ODFlOWQzNDcwYTM0N2ViMjM2ZDM5MGQzMWIyNWYwYzZhZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCkBAIC0xNDEsMTAgKzE0MSwxMSBAQCB1bmlvbiBK
U1Rva2VuRGF0YSB7CiB9OwogCiBzdHJ1Y3QgSlNUb2tlbkluZm8gewotICAgIEpTVG9rZW5JbmZv
KCkgOiBsaW5lKDApIHsgfQorICAgIEpTVG9rZW5JbmZvKCkgOiBsaW5lKDApLCBjb2x1bW4oMCkg
eyB9CiAgICAgaW50IGxpbmU7CiAgICAgaW50IHN0YXJ0T2Zmc2V0OwogICAgIGludCBlbmRPZmZz
ZXQ7CisgICAgaW50IGNvbHVtbjsKIH07CiAKIHN0cnVjdCBKU1Rva2VuIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggYzJjOTM3NTZkZTAzYWJj
YTI5NWRlMTNhYzhlZTEzODFjN2Q0MGM0OC4uYzMzYmEwNmNjNDBhNDBmZWJlZjA4OTNmNTRjOTE5
ZTBlN2M4YTNlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50
YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVj
a2VyLmgKQEAgLTExOSw0MiArMTE5LDQyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgRG9udEJ1aWxkU3RyaW5ncyA9IExleGVyRmxhZ3NEb250QnVpbGRTdHJpbmdzOwogCiAg
ICAgaW50IGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkgeyByZXR1cm4gMTsgfQotICAgIEV4cHJlc3Np
b25UeXBlIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIENhbGxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZUZ1bmN0aW9uQ2Fs
bE5vZGUoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBDYWxsRXhw
cjsgfQogICAgIHZvaWQgYXBwZW5kVG9Db21tYShFeHByZXNzaW9uVHlwZSYgYmFzZSwgRXhwcmVz
c2lvblR5cGUgcmlnaHQpIHsgYmFzZSA9IHJpZ2h0OyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlQ29tbWFFeHByKGludCwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlIHJpZ2h0KSB7
IHJldHVybiByaWdodDsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VBc3NpZ25Ob2RlKGludCwg
RXhwcmVzc2lvblR5cGUsIE9wZXJhdG9yLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgYm9vbCwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlw
ZSBtYWtlUHJlZml4Tm9kZShpbnQsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gUHJlRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQb3N0Zml4
Tm9kZShpbnQsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gUG9zdEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlVHlwZU9mTm9kZShpbnQsIEV4
cHJlc3Npb25UeXBlKSB7IHJldHVybiBUeXBlb2ZFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUg
bWFrZURlbGV0ZU5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gRGVsZXRlRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VOZWdhdGVOb2RlKGludCwg
RXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBl
IG1ha2VCaXR3aXNlTm90Tm9kZShpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4
cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVMb2dpY2FsTm90KGludCwgRXhwcmVzc2lv
blR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVVu
YXJ5UGx1cyhpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KLSAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVWb2lkKGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVu
YXJ5RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIHRoaXNFeHByKGludCkgeyByZXR1cm4gVGhp
c0V4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZXNvbHZlKGludCwgY29uc3QgSWRl
bnRpZmllciosIGludCkgeyByZXR1cm4gUmVzb2x2ZUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVPYmplY3RMaXRlcmFsKGludCkgeyByZXR1cm4gT2JqZWN0TGl0ZXJhbEV4cHI7IH0K
KyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVDb21tYUV4cHIoaW50LCBpbnQsIEV4cHJlc3Npb25U
eXBlLCBFeHByZXNzaW9uVHlwZSByaWdodCkgeyByZXR1cm4gcmlnaHQ7IH0KKyAgICBFeHByZXNz
aW9uVHlwZSBtYWtlQXNzaWduTm9kZShpbnQsIGludCwgRXhwcmVzc2lvblR5cGUsIE9wZXJhdG9y
LCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQXNz
aWdubWVudEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlUHJlZml4Tm9kZShpbnQsIGlu
dCwgRXhwcmVzc2lvblR5cGUsIE9wZXJhdG9yLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQcmVF
eHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVBvc3RmaXhOb2RlKGludCwgaW50LCBFeHBy
ZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFBvc3RFeHByOyB9
CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVR5cGVPZk5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25U
eXBlKSB7IHJldHVybiBUeXBlb2ZFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZURlbGV0
ZU5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBE
ZWxldGVFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZU5lZ2F0ZU5vZGUoaW50LCBpbnQs
IEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlw
ZSBtYWtlQml0d2lzZU5vdE5vZGUoaW50LCBpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBV
bmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVMb2dpY2FsTm90KGludCwgaW50
LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlVW5hcnlQbHVzKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5h
cnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlVm9pZChpbnQsIGludCwgRXhwcmVz
c2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIHRoaXNF
eHByKGludCwgaW50KSB7IHJldHVybiBUaGlzRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZVJlc29sdmUoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJuIFJl
c29sdmVFeHByOyB9CiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQs
IGludCkgeyByZXR1cm4gT2JqZWN0TGl0ZXJhbEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVBcnJheShpbnQsIGludCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhwcjsgfQorICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVjdExpdGVyYWwoaW50LCBpbnQsIGludCkgeyByZXR1cm4g
T2JqZWN0TGl0ZXJhbEV4cHI7IH0KICAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJheShpbnQs
IGludCwgaW50KSB7IHJldHVybiBBcnJheUxpdGVyYWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlTnVtYmVyRXhwcihpbnQsIGRvdWJsZSkgeyByZXR1cm4gTnVtYmVyRXhwcjsgfQot
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVN0cmluZyhpbnQsIGNvbnN0IElkZW50aWZpZXIqKSB7
IHJldHVybiBTdHJpbmdFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQm9vbGVhbihp
bnQsIGJvb2wpIHsgcmV0dXJuIEJvb2xFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
TnVsbChpbnQpIHsgcmV0dXJuIE51bGxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
QnJhY2tldEFjY2VzcyhpbnQsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gQnJhY2tldEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVEb3RBY2Nlc3MoaW50LCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllcios
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERvdEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVSZWdFeHAoaW50LCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlm
aWVyJiwgaW50KSB7IHJldHVybiBZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnVzdHJpbmcoKSkg
PyAwIDogUmVnRXhwRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoaW50
LCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9
Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihpbnQsIEV4cHJlc3Npb25UeXBlLCBp
bnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNv
bmRpdGlvbmFsRXhwcihpbnQsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVz
c2lvblR5cGUpIHsgcmV0dXJuIENvbmRpdGlvbmFsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZUFzc2lnblJlc29sdmUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvblR5
cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9Ci0gICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGludCwgY29uc3QgSWRlbnRpZmllcios
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQot
ICAgIGludCBjcmVhdGVGdW5jdGlvbkJvZHkoaW50LCBib29sKSB7IHJldHVybiAxOyB9CisgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyYXkoaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBB
cnJheUxpdGVyYWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVtYmVyRXhwcihp
bnQsIGludCwgZG91YmxlKSB7IHJldHVybiBOdW1iZXJFeHByOyB9CisgICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlU3RyaW5nKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4gU3Ry
aW5nRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oaW50LCBpbnQsIGJv
b2wpIHsgcmV0dXJuIEJvb2xFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVsbChp
bnQsIGludCkgeyByZXR1cm4gTnVsbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVC
cmFja2V0QWNjZXNzKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIGJv
b2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9CisgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlRG90QWNjZXNzKGludCwgaW50LCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRl
bnRpZmllciosIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERvdEV4cHI7IH0KKyAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVSZWdFeHAoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4s
IGNvbnN0IElkZW50aWZpZXImLCBpbnQpIHsgcmV0dXJuIFlhcnI6OmNoZWNrU3ludGF4KHBhdHRl
cm4udXN0cmluZygpKSA/IDAgOiBSZWdFeHBFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlTmV3RXhwcihpbnQsIGludCwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gTmV3RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoaW50
LCBpbnQsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQorICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihpbnQsIGludCwgRXhwcmVzc2lv
blR5cGUsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gQ29uZGl0aW9u
YWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXNzaWduUmVzb2x2ZShpbnQsIGlu
dCwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50
KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1
bmN0aW9uRXhwcihpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQorICAgIGludCBjcmVhdGVGdW5j
dGlvbkJvZHkoaW50LCBpbnQsIGJvb2wpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlQXJn
dW1lbnRzKCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoaW50KSB7IHJl
dHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUFyZ3VtZW50c0xpc3QoaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRzTGlzdChpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9CisgICAgaW50IGNyZWF0ZUFyZ3VtZW50c0xpc3QoaW50LCBpbnQsIGludCwgaW50KSB7
IHJldHVybiAxOyB9CiAgICAgdGVtcGxhdGUgPGJvb2wgY29tcGxldGU+IFByb3BlcnR5IGNyZWF0
ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIGludCwgUHJvcGVydHlOb2RlOjpUeXBl
IHR5cGUpCiAgICAgewogICAgICAgICBpZiAoIWNvbXBsZXRlKQpAQCAtMTY4LDggKzE2OCw4IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICAgICAgcmV0
dXJuIFByb3BlcnR5KCZnbG9iYWxEYXRhLT5wYXJzZXJBcmVuYS0+aWRlbnRpZmllckFyZW5hKCku
bWFrZU51bWVyaWNJZGVudGlmaWVyKGdsb2JhbERhdGEsIG5hbWUpLCB0eXBlKTsKICAgICB9Ci0g
ICAgaW50IGNyZWF0ZVByb3BlcnR5TGlzdChpbnQsIFByb3BlcnR5KSB7IHJldHVybiAxOyB9Ci0g
ICAgaW50IGNyZWF0ZVByb3BlcnR5TGlzdChpbnQsIFByb3BlcnR5LCBpbnQpIHsgcmV0dXJuIDE7
IH0KKyAgICBpbnQgY3JlYXRlUHJvcGVydHlMaXN0KGludCwgaW50LCBQcm9wZXJ0eSkgeyByZXR1
cm4gMTsgfQorICAgIGludCBjcmVhdGVQcm9wZXJ0eUxpc3QoaW50LCBpbnQsIFByb3BlcnR5LCBp
bnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlRWxlbWVudExpc3QoaW50LCBpbnQpIHsg
cmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlRWxlbWVudExpc3QoaW50LCBpbnQsIGludCkgeyBy
ZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVGb3JtYWxQYXJhbWV0ZXJMaXN0KGNvbnN0IElkZW50
aWZpZXImKSB7IHJldHVybiAxOyB9CkBAIC0xNzcsNDAgKzE3Nyw0MCBAQCBwdWJsaWM6CiAgICAg
aW50IGNyZWF0ZUNsYXVzZShpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVD
bGF1c2VMaXN0KGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVDbGF1c2VMaXN0KGlu
dCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgdm9pZCBzZXRVc2VzQXJndW1lbnRzKGludCkgeyB9
Ci0gICAgaW50IGNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGludCwgY29uc3QgSWRlbnRpZmllcios
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3Jl
YXRlQmxvY2tTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAg
aW50IGNyZWF0ZUV4cHJTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9
Ci0gICAgaW50IGNyZWF0ZUlmU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9CisgICAgdm9pZCBzZXRVc2VzQXJndW1lbnRzKGludCwgaW50KSB7IH0KKyAgICBp
bnQgY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0
ZUJsb2NrU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Cisg
ICAgaW50IGNyZWF0ZUV4cHJTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlSWZTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVGb3JMb29wKGludCwgaW50LCBp
bnQsIGludCwgaW50LCBib29sLCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVh
dGVGb3JJbkxvb3AoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0
ZUZvckluTG9vcChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7
IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUVtcHR5U3RhdGVtZW50KGludCkgeyByZXR1cm4g
MTsgfQotICAgIGludCBjcmVhdGVWYXJTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVJldHVyblN0YXRlbWVudChpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUJyZWFrU3RhdGVtZW50
KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUJy
ZWFrU3RhdGVtZW50KGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVDb250aW51ZVN0YXRlbWVudChpbnQsIGludCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVDb250aW51ZVN0YXRl
bWVudChpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICBpbnQgY3JlYXRlVHJ5U3RhdGVtZW50KGludCwgaW50LCBjb25zdCBJZGVudGlm
aWVyKiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVN3
aXRjaFN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICBpbnQgY3JlYXRlV2hpbGVTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlV2l0aFN0YXRlbWVudChpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRG9X
aGlsZVN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAg
IGludCBjcmVhdGVMYWJlbFN0YXRlbWVudChpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVRocm93U3RhdGVtZW50KGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRGVi
dWdnZXIoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVDb25zdFN0
YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgYXBwZW5k
Q29uc3REZWNsKGludCwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiAxOyB9
Ci0gICAgdGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRl
clByb3BlcnR5KGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIq
IG5hbWUsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpCisgICAgaW50IGNyZWF0ZUlmU3Rh
dGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQor
ICAgIGludCBjcmVhdGVGb3JMb29wKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGJvb2ws
IGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUZvckluTG9vcChpbnQsIGlu
dCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVGb3JJbkxvb3AoaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAx
OyB9CisgICAgaW50IGNyZWF0ZUVtcHR5U3RhdGVtZW50KGludCwgaW50KSB7IHJldHVybiAxOyB9
CisgICAgaW50IGNyZWF0ZVZhclN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyBy
ZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQoaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUJyZWFrU3Rh
dGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBp
bnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0
ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGlu
dCBjcmVhdGVDb250aW51ZVN0YXRlbWVudChpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVUcnlTdGF0ZW1l
bnQoaW50LCBpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRl
V2hpbGVTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsg
fQorICAgIGludCBjcmVhdGVXaXRoU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZURvV2hpbGVTdGF0ZW1l
bnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBj
cmVhdGVMYWJlbFN0YXRlbWVudChpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlVGhyb3dTdGF0ZW1lbnQoaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0
ZURlYnVnZ2VyKGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVh
dGVDb25zdFN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQor
ICAgIGludCBhcHBlbmRDb25zdERlY2woaW50LCBpbnQsIGludCwgY29uc3QgSWRlbnRpZmllcios
IGludCkgeyByZXR1cm4gMTsgfQorICAgIHRlbXBsYXRlIDxib29sIHN0cmljdD4gUHJvcGVydHkg
Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShpbnQsIGludCwgUHJvcGVydHlOb2RlOjpUeXBl
IHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQpCiAgICAgewogICAgICAgICBBU1NFUlQobmFtZSk7CiAgICAgICAgIGlmICghc3RyaWN0KQog
ICAgICAgICAgICAgcmV0dXJuIFByb3BlcnR5KHR5cGUpOwogICAgICAgICByZXR1cm4gUHJvcGVy
dHkobmFtZSwgdHlwZSk7CiAgICAgfQotICAgIHRlbXBsYXRlIDxib29sIHN0cmljdD4gUHJvcGVy
dHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBuYW1lLCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50KQorICAgIHRlbXBsYXRlIDxib29sIHN0cmljdD4gUHJvcGVydHkgY3Jl
YXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCwg
aW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUsIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQpCiAgICAgewogICAgICAgICBpZiAoIXN0cmljdCkKICAgICAgICAgICAg
IHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKQEAgLTIxOSw3ICsyMTksNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGFwcGVuZFN0YXRlbWVudChpbnQsIGludCkgeyB9CiAgICAgdm9pZCBhZGRWYXIoY29u
c3QgSWRlbnRpZmllciosIGJvb2wpIHsgfQotICAgIGludCBjb21iaW5lQ29tbWFOb2RlcyhpbnQs
IGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNvbWJpbmVDb21tYU5vZGVzKGludCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBldmFsQ291bnQoKSBjb25zdCB7
IHJldHVybiAwOyB9CiAgICAgdm9pZCBhcHBlbmRCaW5hcnlFeHByZXNzaW9uSW5mbyhpbnQmIG9w
ZXJhbmRTdGFja0RlcHRoLCBpbnQgZXhwciwgaW50LCBpbnQsIGludCwgYm9vbCkKICAgICB7CkBA
IC0yMzUsNyArMjM1LDcgQEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3JTdGFja0hhc0hpZ2hl
clByZWNlZGVuY2UoaW50JiwgaW50KSB7IHJldHVybiB0cnVlOyB9CiAgICAgQmluYXJ5T3BlcmFu
ZCBnZXRGcm9tT3BlcmFuZFN0YWNrKGludCkgeyByZXR1cm4gbV90b3BCaW5hcnlFeHByOyB9CiAg
ICAgdm9pZCBzaHJpbmtPcGVyYW5kU3RhY2tCeShpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQg
YW1vdW50KSB7IG9wZXJhbmRTdGFja0RlcHRoIC09IGFtb3VudDsgfQotICAgIHZvaWQgYXBwZW5k
QmluYXJ5T3BlcmF0aW9uKGludCwgaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50JiwgQmluYXJ5
T3BlcmFuZCwgQmluYXJ5T3BlcmFuZCkgeyBvcGVyYW5kU3RhY2tEZXB0aCsrOyB9CisgICAgdm9p
ZCBhcHBlbmRCaW5hcnlPcGVyYXRpb24oaW50LCBpbnQsIGludCYgb3BlcmFuZFN0YWNrRGVwdGgs
IGludCYsIEJpbmFyeU9wZXJhbmQsIEJpbmFyeU9wZXJhbmQpIHsgb3BlcmFuZFN0YWNrRGVwdGgr
KzsgfQogICAgIHZvaWQgb3BlcmF0b3JTdGFja0FwcGVuZChpbnQmIG9wZXJhdG9yU3RhY2tEZXB0
aCwgaW50LCBpbnQpIHsgb3BlcmF0b3JTdGFja0RlcHRoKys7IH0KICAgICBpbnQgcG9wT3BlcmFu
ZFN0YWNrKGludCYpIHsgaW50IHJlcyA9IG1fdG9wQmluYXJ5RXhwcjsgbV90b3BCaW5hcnlFeHBy
ID0gMDsgcmV0dXJuIHJlczsgfQogICAgIApAQCAtMjQ1LDcgKzI0NSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHVuYXJ5VG9rZW5TdGFja1JlbW92ZUxhc3QoaW50JiBzdGFja0RlcHRoKSB7IHN0YWNr
RGVwdGggPSAwOyB9CiAgICAgCiAgICAgdm9pZCBhc3NpZ25tZW50U3RhY2tBcHBlbmQoaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIE9wZXJhdG9yKSB7IH0KLSAgICBpbnQgY3JlYXRlQXNzaWdubWVu
dChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyBy
ZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVBc3NpZ25tZW50KGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDE7IH0KICAgICBj
b25zdCBJZGVudGlmaWVyJiBnZXROYW1lKGNvbnN0IFByb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3Qg
eyBBU1NFUlQocHJvcGVydHkubmFtZSk7IHJldHVybiAqcHJvcGVydHkubmFtZTsgfQogICAgIFBy
b3BlcnR5Tm9kZTo6VHlwZSBnZXRUeXBlKGNvbnN0IFByb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3Qg
eyByZXR1cm4gcHJvcGVydHkudHlwZTsgfQogICAgIGJvb2wgaXNSZXNvbHZlKEV4cHJlc3Npb25U
eXBlIGV4cHIpIGNvbnN0IHsgcmV0dXJuIGV4cHIgPT0gUmVzb2x2ZUV4cHIgfHwgZXhwciA9PSBS
ZXNvbHZlRXZhbEV4cHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dERlYnVnU2VydmVyLmNwcAppbmRleCBmMjIyN2M3NDVjYzhhMDFiZDM4ZWE4ZjRkMGFiYzc1Mzkz
YWEwMzk4Li5lZmVhOGJmNTc3MzcyMzhlOGIwMjY4OWM0ZmUyM2MzYjVmODQwNWJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC03
NSwyMCArNzUsMjggQEAgU3RyaW5nIFNjcmlwdERlYnVnU2VydmVyOjpzZXRCcmVha3BvaW50KGNv
bnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFNjcmlwdEJyZWEKICAgICBTb3VyY2VJZFRvQnJl
YWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChz
b3VyY2VJRFZhbHVlKTsKICAgICBpZiAoaXQgPT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5k
KCkpCiAgICAgICAgIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuc2V0KHNvdXJjZUlEVmFs
dWUsIExpbmVUb0JyZWFrcG9pbnRNYXAoKSkuaXRlcmF0b3I7Ci0gICAgaWYgKGl0LT5zZWNvbmQu
Y29udGFpbnMoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSkpCi0gICAgICAgIHJldHVy
biAiIjsKLSAgICBpdC0+c2Vjb25kLnNldChzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIgKyAx
LCBzY3JpcHRCcmVha3BvaW50KTsKKyAgICBMaW5lVG9CcmVha3BvaW50TWFwOjppdGVyYXRvciBi
cmVha3NJdCA9IGl0LT5zZWNvbmQuZmluZChzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIgKyAx
KTsKKyAgICBpZiAoYnJlYWtzSXQgPT0gaXQtPnNlY29uZC5lbmQoKSkKKyAgICAgICAgYnJlYWtz
SXQgPSBpdC0+c2Vjb25kLnNldChzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIgKyAxLCBCcmVh
a3BvaW50c0luTGluZSgpKS5pdGVyYXRvcjsKKworICAgIEJyZWFrcG9pbnRzSW5MaW5lJiBicmVh
a3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25kOworICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50ID0g
YnJlYWtzVmVjdG9yLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnJlYWtz
Q291bnQ7IGkrKykgeworICAgICAgICBpZiAoYnJlYWtzVmVjdG9yLmF0KGkpLmNvbHVtbk51bWJl
ciA9PSBzY3JpcHRCcmVha3BvaW50LmNvbHVtbk51bWJlcikKKyAgICAgICAgICAgIHJldHVybiAi
IjsKKyAgICB9CisgICAgYnJlYWtzVmVjdG9yLmFwcGVuZChzY3JpcHRCcmVha3BvaW50KTsKKwog
ICAgICphY3R1YWxMaW5lTnVtYmVyID0gc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyOwotICAg
IC8vIEZJWE1FKFdLNTMwMDMpOiBpbXBsZW1lbnQgc2V0dGluZyBicmVha3BvaW50cyBieSBsaW5l
OmNvbHVtbi4KLSAgICAqYWN0dWFsQ29sdW1uTnVtYmVyID0gMDsKLSAgICByZXR1cm4gc291cmNl
SUQgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIpOwor
ICAgICphY3R1YWxDb2x1bW5OdW1iZXIgPSBzY3JpcHRCcmVha3BvaW50LmNvbHVtbk51bWJlcjsK
KyAgICByZXR1cm4gc291cmNlSUQgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihzY3JpcHRCcmVha3Bv
aW50LmxpbmVOdW1iZXIpICsgIjoiICsgU3RyaW5nOjpudW1iZXIoc2NyaXB0QnJlYWtwb2ludC5j
b2x1bW5OdW1iZXIpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3Bv
aW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHRv
a2VuczsKICAgICBicmVha3BvaW50SWQuc3BsaXQoIjoiLCB0b2tlbnMpOwotICAgIGlmICh0b2tl
bnMuc2l6ZSgpICE9IDIpCisgICAgaWYgKHRva2Vucy5zaXplKCkgIT0gMykKICAgICAgICAgcmV0
dXJuOwogICAgIGJvb2wgc3VjY2VzczsKICAgICBpbnRwdHJfdCBzb3VyY2VJRFZhbHVlID0gdG9r
ZW5zWzBdLnRvSW50UHRyKCZzdWNjZXNzKTsKQEAgLTk3LDkgKzEwNSw2MyBAQCB2b2lkIFNjcmlw
dERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElk
KQogICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIgPSB0b2tlbnNbMV0udG9VSW50KCZzdWNjZXNzKTsK
ICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgIHJldHVybjsKKyAgICB1bnNpZ25lZCBjb2x1bW5O
dW1iZXIgPSB0b2tlbnNbMl0udG9VSW50KCZzdWNjZXNzKTsKKyAgICBpZiAoIXN1Y2Nlc3MpCisg
ICAgICAgIHJldHVybjsKKwogICAgIFNvdXJjZUlkVG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3Ig
aXQgPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5maW5kKHNvdXJjZUlEVmFsdWUpOwotICAgIGlm
IChpdCAhPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKLSAgICAgICAgaXQtPnNlY29u
ZC5yZW1vdmUobGluZU51bWJlciArIDEpOworICAgIGlmIChpdCA9PSBtX3NvdXJjZUlkVG9CcmVh
a3BvaW50cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6
Oml0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5maW5kKGxpbmVOdW1iZXIgKyAxKTsKKyAg
ICBpZiAoYnJlYWtzSXQgPT0gaXQtPnNlY29uZC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgQnJlYWtwb2ludHNJbkxpbmUmIGJyZWFrc1ZlY3RvciA9IGJyZWFrc0l0LT5zZWNvbmQ7Cisg
ICAgdW5zaWduZWQgYnJlYWtzQ291bnQgPSBicmVha3NWZWN0b3Iuc2l6ZSgpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBicmVha3NDb3VudDsgaSsrKSB7CisgICAgICAgIGlmIChicmVh
a3NWZWN0b3IuYXQoaSkuY29sdW1uTnVtYmVyID09IHN0YXRpY19jYXN0PGludD4oY29sdW1uTnVt
YmVyKSkgeworICAgICAgICAgICAgYnJlYWtzVmVjdG9yLnJlbW92ZShpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp1
cGRhdGVDdXJyZW50U3RhdGVtZW50UG9zaXRpb24oaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5l
KQoreworICAgIGlmIChsaW5lIDwgMCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU291cmNlUHJv
dmlkZXIqIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8U291cmNlUHJvdmlkZXIqPihzb3VyY2VJ
RCk7CisKKyAgICBpZiAobV9jdXJyZW50U291cmNlSUQgIT0gc291cmNlSUQpIHsKKyAgICAgICAg
U3RyaW5nIHNvdXJjZUNvZGUgPSB1c3RyaW5nVG9TdHJpbmcoSlNDOjpVU3RyaW5nKGNvbnN0X2Nh
c3Q8U3RyaW5nSW1wbCo+KHNvdXJjZS0+ZGF0YSgpKSkpOworICAgICAgICBtX2N1cnJlbnRTb3Vy
Y2VDb2RlLmNsZWFyKCk7CisgICAgICAgIHNvdXJjZUNvZGUuc3BsaXQoIlxuIiwgdHJ1ZSwgbV9j
dXJyZW50U291cmNlQ29kZSk7CisgICAgICAgIG1fY3VycmVudFNvdXJjZUlEID0gc291cmNlSUQ7
CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIgPSAwOworICAg
ICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIgPSAwOworICAgIH0K
KworICAgIGlmIChsaW5lICE9IG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIp
IHsKKyAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51bWJlciA9IGxpbmU7
CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmNvbHVtbk51bWJlciA9IDA7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgc3RhcnRMaW5lID0gc291cmNlLT5zdGFy
dFBvc2l0aW9uKCkubV9saW5lLnplcm9CYXNlZEludCgpOworICAgIGlmICgobV9jdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24ubGluZU51bWJlciAtIHN0YXJ0TGluZSAtIDEpID49IHN0YXRpY19jYXN0
PGludD4obV9jdXJyZW50U291cmNlQ29kZS5zaXplKCkpKQorICAgICAgICByZXR1cm47CisgICAg
Y29uc3QgU3RyaW5nJiBjb2RlSW5MaW5lID0gbV9jdXJyZW50U291cmNlQ29kZVttX2N1cnJlbnRT
dGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyIC0gc3RhcnRMaW5lIC0gMV07CisgICAgaWYgKGNv
ZGVJbkxpbmUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgaW50IG5leHRDb2x1bW4g
PSBjb2RlSW5MaW5lLmZpbmQoIjsiLCBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5O
dW1iZXIpOworICAgIGlmIChuZXh0Q29sdW1uICE9IC0xKSB7CisgICAgICAgIFVDaGFyIGMgPSBj
b2RlSW5MaW5lW25leHRDb2x1bW4gKyAxXTsKKyAgICAgICAgaWYgKGMgPT0gJyAnIHx8IGMgPT0g
J1x0JykKKyAgICAgICAgICAgIG5leHRDb2x1bW4gKz0gMTsKKyAgICAgICAgbV9jdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0gbmV4dENvbHVtbiArIDE7CisgICAgfSBlbHNl
CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmNvbHVtbk51bWJlciA9IDA7CiB9
CiAKIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNl
SUQsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pIGNvbnN0CkBAIC0xMTAsMTkgKzE3Miwz
NyBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVha3BvaW50KGludHB0cl90IHNvdXJj
ZUlELCBjb25zdCBUZXh0UG9zaXRpb24mIHBvcwogICAgIFNvdXJjZUlkVG9CcmVha3BvaW50c01h
cDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5maW5kKHNvdXJj
ZUlEKTsKICAgICBpZiAoaXQgPT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpbnQgbGluZU51bWJlciA9IHBvc2l0aW9uLm1fbGluZS5v
bmVCYXNlZEludCgpOwotICAgIGlmIChsaW5lTnVtYmVyIDw9IDApCisKKyAgICBpbnQgbGluZU51
bWJlciA9IHBvc2l0aW9uLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsKKyAgICBpbnQgY29sdW1uTnVt
YmVyID0gcG9zaXRpb24ubV9jb2x1bW4uemVyb0Jhc2VkSW50KCk7CisgICAgaWYgKGxpbmVOdW1i
ZXIgPCAwIHx8IGNvbHVtbk51bWJlciA8IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IExpbmVUb0JyZWFrcG9pbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnNlY29u
ZC5maW5kKGxpbmVOdW1iZXIgKyAxKTsKKyAgICBpZiAoYnJlYWtzSXQgPT0gaXQtPnNlY29uZC5l
bmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6OmNv
bnN0X2l0ZXJhdG9yIGJyZWFrSXQgPSBpdC0+c2Vjb25kLmZpbmQobGluZU51bWJlcik7Ci0gICAg
aWYgKGJyZWFrSXQgPT0gaXQtPnNlY29uZC5lbmQoKSkKKworICAgIGJvb2wgaGl0ID0gZmFsc2U7
CisgICAgY29uc3QgQnJlYWtwb2ludHNJbkxpbmUmIGJyZWFrc1ZlY3RvciA9IGJyZWFrc0l0LT5z
ZWNvbmQ7CisgICAgdW5zaWduZWQgYnJlYWtzQ291bnQgPSBicmVha3NWZWN0b3Iuc2l6ZSgpOwor
ICAgIHVuc2lnbmVkIGk7CisgICAgZm9yIChpID0gMDsgaSA8IGJyZWFrc0NvdW50OyBpKyspIHsK
KyAgICAgICAgaW50IGJyZWFrQ29sdW1uID0gYnJlYWtzVmVjdG9yLmF0KGkpLmNvbHVtbk51bWJl
cjsKKyAgICAgICAgaW50IGJyZWFrTGluZSA9IGJyZWFrc1ZlY3Rvci5hdChpKS5saW5lTnVtYmVy
OworICAgICAgICBpZiAobGluZU51bWJlciA9PSBicmVha0xpbmUgJiYgY29sdW1uTnVtYmVyID09
IGJyZWFrQ29sdW1uKSB7CisgICAgICAgICAgICBoaXQgPSB0cnVlOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFoaXQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIC8vIEFuIGVtcHR5IGNvbmRpdGlvbiBjb3VudHMgYXMgbm8gY29uZGl0aW9uIHdo
aWNoIGlzIGVxdWl2YWxlbnQgdG8gInRydWUiLgotICAgIGlmIChicmVha0l0LT5zZWNvbmQuY29u
ZGl0aW9uLmlzRW1wdHkoKSkKKyAgICBpZiAoYnJlYWtzVmVjdG9yLmF0KGkpLmNvbmRpdGlvbi5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgSlNWYWx1ZSBleGNlcHRpb247
Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmV2YWx1YXRlKHN0cmlu
Z1RvVVN0cmluZyhicmVha0l0LT5zZWNvbmQuY29uZGl0aW9uKSwgZXhjZXB0aW9uKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IG1fY3VycmVudENhbGxGcmFtZS0+ZXZhbHVhdGUoc3RyaW5nVG9VU3Ry
aW5nKGJyZWFrc1ZlY3Rvci5hdChpKS5jb25kaXRpb24pLCBleGNlcHRpb24pOwogICAgIGlmIChl
eGNlcHRpb24pIHsKICAgICAgICAgLy8gQW4gZXJyb25lb3VzIGNvbmRpdGlvbiBjb3VudHMgYXMg
ImZhbHNlIi4KICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzQ3LDIwICs0MjcsMjAgQEAgdm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKEphdmFTY3Jp
cHRFeGVjdXRpb25DYWxsYmFjawogICAgIG1fY2FsbGluZ0xpc3RlbmVycyA9IGZhbHNlOwogfQog
Ci12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVk
KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291
cmNlSUQsIGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y3JlYXRlQ2Fs
bEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJD
YWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51
bWJlcikKIHsKLSAgICBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZy
b21PbmVCYXNlZEludChsaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSk7CisgICAg
VGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQo
bGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZyb21aZXJvQmFzZWRJbnQoY29sdW1uTnVtYmVy
KSk7CiAgICAgbV9jdXJyZW50Q2FsbEZyYW1lID0gSmF2YVNjcmlwdENhbGxGcmFtZTo6Y3JlYXRl
KGRlYnVnZ2VyQ2FsbEZyYW1lLCBtX2N1cnJlbnRDYWxsRnJhbWUsIHNvdXJjZUlELCB0ZXh0UG9z
aXRpb24pOwogICAgIHBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUuZHluYW1pY0dsb2Jh
bE9iamVjdCgpKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbEZyYW1l
QW5kUGF1c2VJZk5lZWRlZChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJh
bWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKK3ZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxs
RnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7CiAgICAgQVNTRVJUKG1fY3VycmVudENhbGxGcmFtZSk7
CiAgICAgaWYgKCFtX2N1cnJlbnRDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFRl
eHRQb3NpdGlvbiB0ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxp
bmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpmaXJzdCgpKTsKKyAgICBUZXh0UG9zaXRpb24gdGV4
dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChsaW5lTnVtYmVyKSwgT3Jk
aW5hbE51bWJlcjo6ZnJvbVplcm9CYXNlZEludChjb2x1bW5OdW1iZXIpKTsKICAgICBtX2N1cnJl
bnRDYWxsRnJhbWUtPnVwZGF0ZShkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIHRleHRQb3Np
dGlvbik7CiAgICAgcGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZS5keW5hbWljR2xvYmFs
T2JqZWN0KCkpOwogfQpAQCAtNDAxLDIyICs0ODEsMzcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZl
cjo6cGF1c2VJZk5lZWRlZChKU0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVjdCkKIAog
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1l
JiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQog
eworICAgIGNhbGxFdmVudChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIs
IDApOworfQorCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjYWxsRXZlbnQoY29uc3QgRGVidWdn
ZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCit7CiAgICAgaWYgKCFtX3BhdXNlZCkKLSAgICAg
ICAgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291
cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAgICBjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVl
ZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
KTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQoY29uc3QgRGVidWdn
ZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpCiB7CisgICAgYXRTdGF0ZW1lbnQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlE
LCBsaW5lTnVtYmVyLCAwKTsKK30KKwordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1l
bnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBz
b3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCit7CiAgICAgaWYgKCFt
X3BhdXNlZCkKLSAgICAgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dl
ckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAgICB1cGRhdGVDYWxsRnJh
bWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmV0dXJuRXZl
bnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBz
b3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCiB7CisgICAgcmV0dXJuRXZlbnQoZGVidWdnZXJDYWxs
RnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCAwKTsKK30KKwordm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6cmV0dXJuRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZy
YW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIp
Cit7CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVDYWxs
RnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51
bWJlcik7CisgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxG
cmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAKICAgICAvLyBkZXRh
Y2ggbWF5IGhhdmUgYmVlbiBjYWxsZWQgZHVyaW5nIHBhdXNlSWZOZWVkZWQKICAgICBpZiAoIW1f
Y3VycmVudENhbGxGcmFtZSkKQEAgLTQzMCwyNyArNTI1LDQyIEBAIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnJldHVybkV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxG
cmFtZSwKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2Vy
Q2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5l
TnVtYmVyLCBib29sIGhhc0hhbmRsZXIpCiB7CisgICAgZXhjZXB0aW9uKGRlYnVnZ2VyQ2FsbEZy
YW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgMCwgaGFzSGFuZGxlcik7Cit9CisKK3ZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OmV4Y2VwdGlvbihjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdn
ZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlciwgYm9vbCBoYXNIYW5kbGVyKQorewogICAgIGlmIChtX3BhdXNlZCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9PSBQYXVzZU9uQWxs
RXhjZXB0aW9ucyB8fCAobV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlID09IFBhdXNlT25VbmNhdWdo
dEV4Y2VwdGlvbnMgJiYgIWhhc0hhbmRsZXIpKQogICAgICAgICBtX3BhdXNlT25OZXh0U3RhdGVt
ZW50ID0gdHJ1ZTsKIAotICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdn
ZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVDYWxsRnJhbWVB
bmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6d2lsbEV4ZWN1dGVQ
cm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQogeworICAgIHdpbGxFeGVjdXRlUHJvZ3JhbShk
ZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIDApOworfQorCit2b2lkIFNj
cmlwdERlYnVnU2VydmVyOjp3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIpCit7CiAgICAgaWYgKCFtX3BhdXNlZCkKLSAgICAgICAgY3JlYXRl
Q2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxp
bmVOdW1iZXIpOworICAgICAgICBjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVn
Z2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAog
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJD
YWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVO
dW1iZXIpCiB7CisgICAgZGlkRXhlY3V0ZVByb2dyYW0oZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJj
ZUlELCBsaW5lTnVtYmVyLCAwKTsKK30KKwordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkRXhl
Y3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCit7CiAg
ICAgaWYgKG1fcGF1c2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVDYWxsRnJhbWVB
bmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlcik7
CisgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwg
c291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiAKICAgICAvLyBUcmVhdCBzdGVw
cGluZyBvdmVyIHRoZSBlbmQgb2YgYSBwcm9ncmFtIGxpa2Ugc3RlcHBpbmcgb3V0LgogICAgIGlm
IChtX2N1cnJlbnRDYWxsRnJhbWUgPT0gbV9wYXVzZU9uQ2FsbEZyYW1lKQpAQCAtNDYwLDExICs1
NzAsMTYgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3Qg
RGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEYKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZl
cjo6ZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNh
bGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQogeworICAgIGRpZFJl
YWNoQnJlYWtwb2ludChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIDAp
OworfQorCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3Qg
RGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCit7CiAgICAgaWYgKG1fcGF1c2VkKQog
ICAgICAgICByZXR1cm47CiAKICAgICBtX3BhdXNlT25OZXh0U3RhdGVtZW50ID0gdHJ1ZTsKLSAg
ICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3Vy
Y2VJRCwgbGluZU51bWJlcik7CisgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChk
ZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiB9
CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRl
eCA4NGZiYTVjNjc4ZmM3MjVkZjI4NjJlZTlmZjNiZTY1MTg0MTIxYWE2Li45ZDk3YzE2N2U1Yzdk
NDliZDZlNGVkYTFkNmJhYjQxM2YzYzhmZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTEyMyw4ICsxMjMsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBkaXNwYXRjaERpZFBhcnNlU291cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0
ZW5lcnMsIEpTQzo6U291cmNlUHJvdmlkZXIqLCBib29sIGlzQ29udGVudFNjcmlwdCk7CiAgICAg
dm9pZCBkaXNwYXRjaEZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgTGlzdGVuZXJTZXQmIGxpc3Rl
bmVycywgSlNDOjpTb3VyY2VQcm92aWRlciosIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYg
ZXJyb3JNZXNzYWdlKTsKIAotICAgIHZvaWQgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRl
ZChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBs
aW5lTnVtYmVyKTsKLSAgICB2b2lkIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29u
c3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51
bWJlcik7CisgICAgdm9pZCBjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IEpT
Qzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIpOworICAgIHZvaWQgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5l
ZWRlZChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKICAgICB2b2lkIHBhdXNlSWZOZWVkZWQo
SlNDOjpKU0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVjdCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGV0YWNoKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKQEAgLTEzOCw3ICsxMzgsMTkgQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6
OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxG
cmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vKTsKIAotICAgIHR5cGVkZWYgSGFz
aE1hcDxsb25nLCBTY3JpcHRCcmVha3BvaW50PiBMaW5lVG9CcmVha3BvaW50TWFwOworICAgIHZp
cnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0
cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmly
dHVhbCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGZpcnN0TGluZSwgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmly
dHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOworICAgIHZp
cnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0
cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCBoYXNI
YW5kbGVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6
RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubywgaW50IGNv
bHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpT
Qzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubywgaW50
IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25z
dCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8s
IGludCBjb2x1bW5OdW1iZXIpOworCisKKyAgICB2b2lkIHVwZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQ
b3NpdGlvbihpbnRwdHJfdCwgaW50KTsKKworICAgIHR5cGVkZWYgVmVjdG9yPFNjcmlwdEJyZWFr
cG9pbnQ+IEJyZWFrcG9pbnRzSW5MaW5lOworICAgIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBCcmVh
a3BvaW50c0luTGluZT4gTGluZVRvQnJlYWtwb2ludE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8
aW50cHRyX3QsIExpbmVUb0JyZWFrcG9pbnRNYXA+IFNvdXJjZUlkVG9CcmVha3BvaW50c01hcDsK
IAogICAgIGJvb2wgbV9jYWxsaW5nTGlzdGVuZXJzOwpAQCAtMTUxLDYgKzE2MywxMCBAQCBwcm90
ZWN0ZWQ6CiAgICAgUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+IG1fY3VycmVudENhbGxGcmFt
ZTsKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXAgbV9zb3VyY2VJZFRvQnJlYWtwb2ludHM7
CiAgICAgVGltZXI8U2NyaXB0RGVidWdTZXJ2ZXI+IG1fcmVjb21waWxlVGltZXI7CisKKyAgICBW
ZWN0b3I8U3RyaW5nPiBtX2N1cnJlbnRTb3VyY2VDb2RlOworICAgIGludHB0cl90IG1fY3VycmVu
dFNvdXJjZUlEOworICAgIFNjcmlwdEJyZWFrcG9pbnQgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRp
b247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153432</attachid>
            <date>2012-07-20 00:28:41 -0700</date>
            <delta_ts>2012-08-01 03:44:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120720152834.patch</filename>
            <type>text/plain</type>
            <size>315559</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZTFmMzk3YmNhOGMzYjlmZWUwMjAyOGQ3ZDNjOWZkYWIzMjdjNzAwLi5lNWY4MjY1ODVhNDJlMjg1
OTRmYjlhZjMwM2NlMTQzZDYwYzBjZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NTcgQEAKKzIwMTItMDctMDEgIFBldGVyIFdhbmcgIDxwZXRlci53YW5nQHRvcmNobW9i
aWxlLmNvbS5jbj4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbSlNDXSBpbXBsZW1lbnQgc2V0
dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMwMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdCBjYXNlIGZvciB0aGlzIGJ1Zy4KKwor
ICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6cGFkT3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2sp
OgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAo
Qnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4u
Y3BwOgorICAgICAgICAoSlNDOjpBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KToKKyAgICAgICAg
KEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpDb25kaXRpb25hbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0
U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RW1wdHlTdGF0ZW1l
bnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclN0YXRlbWVudE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpJZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6Oklm
RWxzZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRvV2hpbGVOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpXaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkZvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvckluTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29udGludWVOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OlJldHVybk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OldpdGhOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpMYWJlbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRo
cm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJv
ZHlOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRo
cm93RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmRlYnVnKToKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgor
ICAgICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29w
X2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjplbWl0X29wX2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAg
ICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcGFyc2VyL0FTVEJ1
aWxkZXIuaDoKKyAgICAgICAgKEFTVEJ1aWxkZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVDb21tYUV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMb2dp
Y2FsTm90KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVW5hcnlQbHVzKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVm9pZCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OnRoaXNFeHByKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmVzb2x2
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZU9iamVjdExpdGVyYWwpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJheSk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZU51bWJlckV4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVh
dGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCb29sZWFuKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTnVsbCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUJyYWNrZXRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVSZWdFeHAp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVOZXdFeHByKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uZGl0aW9uYWxFeHByKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQXNzaWduUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1
bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUdldHRlck9yU2V0
dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcmd1bWVudHNM
aXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUHJvcGVydHlMaXN0KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCbG9ja1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUV4cHJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVJZlN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUZvckxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JJbkxvb3ApOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFbXB0eVN0YXRlbWVudCk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVZhclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZVJldHVyblN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUJyZWFrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlQ29udGludWVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVU
cnlTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVTd2l0Y2hTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVXaGlsZVN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVdpdGhTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVUaHJvd1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZURlYnVnZ2VyKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uc3RT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRDb25zdERlY2wpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmFwcGVuZEJpbmFyeU9wZXJhdGlvbik6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUFzc2lnbm1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlVHlwZU9mTm9kZSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VEZWxldGVOb2RlKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjptYWtlQml0d2lzZU5vdE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlTXVs
dE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRGl2Tm9kZSk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VNb2ROb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6bWFrZUFkZE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlU3ViTm9kZSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VMZWZ0U2hpZnROb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZVJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6bWFrZVVSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
Om1ha2VCaXRPck5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQml0QW5kTm9k
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VCaXRYT3JOb2RlKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1h
a2VBc3NpZ25Ob2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlUG9zdGZpeE5vZGUpOgorICAgICAgICAq
IHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6Ojo6c2V0Q29kZSk6CisgICAgICAgIChK
U0M6Ojo6aW50ZXJuYWxTaGlmdCk6CisgICAgICAgIChKU0M6Ojo6c2hpZnQpOgorICAgICAgICAo
SlNDOjo6OmxleCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6CisgICAgICAgIChKU0M6Okxl
eGVyOjpjdXJyZW50Q29sdW1uTnVtYmVyKToKKyAgICAgICAgKExleGVyKToKKyAgICAgICAgKEpT
Qzo6OjpsZXhFeHBlY3RJZGVudGlmaWVyKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oOgorICAgICAgICAoSlNDOjpOb2RlOjpOb2RlKToKKyAgICAgICAgKEpTQzo6RXhwcmVz
c2lvbk5vZGU6OkV4cHJlc3Npb25Ob2RlKToKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6
U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6Ok51bGxOb2RlOjpOdWxsTm9kZSk6CisgICAg
ICAgIChKU0M6OkJvb2xlYW5Ob2RlOjpCb29sZWFuTm9kZSk6CisgICAgICAgIChKU0M6Ok51bWJl
ck5vZGU6Ok51bWJlck5vZGUpOgorICAgICAgICAoSlNDOjpTdHJpbmdOb2RlOjpTdHJpbmdOb2Rl
KToKKyAgICAgICAgKEpTQzo6UmVnRXhwTm9kZTo6UmVnRXhwTm9kZSk6CisgICAgICAgIChKU0M6
OlRoaXNOb2RlOjpUaGlzTm9kZSk6CisgICAgICAgIChKU0M6OlJlc29sdmVOb2RlOjpSZXNvbHZl
Tm9kZSk6CisgICAgICAgIChKU0M6OkFycmF5Tm9kZTo6QXJyYXlOb2RlKToKKyAgICAgICAgKEpT
Qzo6UHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZSk6CisgICAgICAgIChKU0M6Ok9i
amVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZSk6CisgICAgICAgIChKU0M6OkJyYWNr
ZXRBY2Nlc3Nvck5vZGU6OkJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoSlNDOjpEb3RB
Y2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZSk6CisgICAgICAgIChKU0M6OkFyZ3VtZW50TGlz
dE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoSlNDOjpOZXdFeHByTm9kZTo6TmV3
RXhwck5vZGUpOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0
aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OkZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2Rl
OjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbEJy
YWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoSlNDOjpDYWxs
RnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAo
SlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZSk6
CisgICAgICAgIChKU0M6OlByZVBvc3RSZXNvbHZlTm9kZTo6UHJlUG9zdFJlc29sdmVOb2RlKToK
KyAgICAgICAgKEpTQzo6UG9zdGZpeFJlc29sdmVOb2RlOjpQb3N0Zml4UmVzb2x2ZU5vZGUpOgor
ICAgICAgICAoSlNDOjpQb3N0Zml4QnJhY2tldE5vZGU6OlBvc3RmaXhCcmFja2V0Tm9kZSk6Cisg
ICAgICAgIChKU0M6OlBvc3RmaXhEb3ROb2RlOjpQb3N0Zml4RG90Tm9kZSk6CisgICAgICAgIChK
U0M6OlBvc3RmaXhFcnJvck5vZGU6OlBvc3RmaXhFcnJvck5vZGUpOgorICAgICAgICAoSlNDOjpE
ZWxldGVSZXNvbHZlTm9kZTo6RGVsZXRlUmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpEZWxl
dGVCcmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVE
b3ROb2RlOjpEZWxldGVEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlVmFsdWVOb2RlOjpE
ZWxldGVWYWx1ZU5vZGUpOgorICAgICAgICAoSlNDOjpWb2lkTm9kZTo6Vm9pZE5vZGUpOgorICAg
ICAgICAoSlNDOjpUeXBlT2ZSZXNvbHZlTm9kZTo6VHlwZU9mUmVzb2x2ZU5vZGUpOgorICAgICAg
ICAoSlNDOjpUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6
OlByZWZpeFJlc29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlBy
ZWZpeEJyYWNrZXROb2RlOjpQcmVmaXhCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OlByZWZp
eERvdE5vZGU6OlByZWZpeERvdE5vZGUpOgorICAgICAgICAoSlNDOjpQcmVmaXhFcnJvck5vZGU6
OlByZWZpeEVycm9yTm9kZSk6CisgICAgICAgIChKU0M6OlVuYXJ5T3BOb2RlOjpVbmFyeU9wTm9k
ZSk6CisgICAgICAgIChKU0M6OlVuYXJ5UGx1c05vZGU6OlVuYXJ5UGx1c05vZGUpOgorICAgICAg
ICAoSlNDOjpOZWdhdGVOb2RlOjpOZWdhdGVOb2RlKToKKyAgICAgICAgKEpTQzo6Qml0d2lzZU5v
dE5vZGU6OkJpdHdpc2VOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6TG9naWNhbE5vdE5vZGU6Okxv
Z2ljYWxOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUp
OgorICAgICAgICAoSlNDOjpNdWx0Tm9kZTo6TXVsdE5vZGUpOgorICAgICAgICAoSlNDOjpEaXZO
b2RlOjpEaXZOb2RlKToKKyAgICAgICAgKEpTQzo6TW9kTm9kZTo6TW9kTm9kZSk6CisgICAgICAg
IChKU0M6OkFkZE5vZGU6OkFkZE5vZGUpOgorICAgICAgICAoSlNDOjpTdWJOb2RlOjpTdWJOb2Rl
KToKKyAgICAgICAgKEpTQzo6TGVmdFNoaWZ0Tm9kZTo6TGVmdFNoaWZ0Tm9kZSk6CisgICAgICAg
IChKU0M6OlJpZ2h0U2hpZnROb2RlOjpSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OlVu
c2lnbmVkUmlnaHRTaGlmdE5vZGU6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAo
SlNDOjpMZXNzTm9kZTo6TGVzc05vZGUpOgorICAgICAgICAoSlNDOjpHcmVhdGVyTm9kZTo6R3Jl
YXRlck5vZGUpOgorICAgICAgICAoSlNDOjpMZXNzRXFOb2RlOjpMZXNzRXFOb2RlKToKKyAgICAg
ICAgKEpTQzo6R3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9kZSk6CisgICAgICAgIChKU0M6OlRo
cm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlKToKKyAgICAgICAgKEpT
Qzo6SW5zdGFuY2VPZk5vZGU6Okluc3RhbmNlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6SW5Ob2Rl
OjpJbk5vZGUpOgorICAgICAgICAoSlNDOjpFcXVhbE5vZGU6OkVxdWFsTm9kZSk6CisgICAgICAg
IChKU0M6Ok5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKToKKyAgICAgICAgKEpTQzo6U3RyaWN0
RXF1YWxOb2RlOjpTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoSlNDOjpOb3RTdHJpY3RFcXVh
bE5vZGU6Ok5vdFN0cmljdEVxdWFsTm9kZSk6CisgICAgICAgIChKU0M6OkJpdEFuZE5vZGU6OkJp
dEFuZE5vZGUpOgorICAgICAgICAoSlNDOjpCaXRPck5vZGU6OkJpdE9yTm9kZSk6CisgICAgICAg
IChKU0M6OkJpdFhPck5vZGU6OkJpdFhPck5vZGUpOgorICAgICAgICAoSlNDOjpMb2dpY2FsT3BO
b2RlOjpMb2dpY2FsT3BOb2RlKToKKyAgICAgICAgKEpTQzo6Q29uZGl0aW9uYWxOb2RlOjpDb25k
aXRpb25hbE5vZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRN
b2RpZnlSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkFzc2lnblJlc29sdmVOb2RlOjpBc3Np
Z25SZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6UmVh
ZE1vZGlmeUJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduQnJhY2tldE5vZGU6OkFz
c2lnbkJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRG90Tm9kZTo6QXNzaWduRG90
Tm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkVycm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKToKKyAg
ICAgICAgKEpTQzo6Q29tbWFOb2RlOjpDb21tYU5vZGUpOgorICAgICAgICAoSlNDOjpDb25zdFN0
YXRlbWVudE5vZGU6OkNvbnN0U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6OkVtcHR5U3Rh
dGVtZW50Tm9kZTo6RW1wdHlTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXJT
dGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpFeHBy
U3RhdGVtZW50Tm9kZTo6RXhwclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0
ZW1lbnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6SWZOb2RlOjpJZk5v
ZGUpOgorICAgICAgICAoSlNDOjpJZkVsc2VOb2RlOjpJZkVsc2VOb2RlKToKKyAgICAgICAgKEpT
Qzo6RG9XaGlsZU5vZGU6OkRvV2hpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6V2hpbGVOb2RlOjpX
aGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjpGb3JOb2RlKToKKyAgICAgICAgKEpT
Qzo6Q29udGludWVOb2RlOjpDb250aW51ZU5vZGUpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6
OkJyZWFrTm9kZSk6CisgICAgICAgIChKU0M6OlJldHVybk5vZGU6OlJldHVybk5vZGUpOgorICAg
ICAgICAoSlNDOjpXaXRoTm9kZTo6V2l0aE5vZGUpOgorICAgICAgICAoSlNDOjpMYWJlbE5vZGU6
OkxhYmVsTm9kZSk6CisgICAgICAgIChKU0M6OlRocm93Tm9kZTo6VGhyb3dOb2RlKToKKyAgICAg
ICAgKEpTQzo6VHJ5Tm9kZTo6VHJ5Tm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmNFeHByTm9kZTo6
RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUp
OgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKToKKyAgICAgICAgKEpTQzo6
Q29uc3REZWNsTm9kZTo6Q29uc3REZWNsTm9kZSk6CisgICAgICAgIChKU0M6OkJsb2NrTm9kZTo6
QmxvY2tOb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjpGb3JJbk5vZGUpOgorICAgICAg
ICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OnNldExv
Yyk6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6U2NvcGVOb2RlKToKKyAgICAgICAgKEpTQzo6
UHJvZ3JhbU5vZGU6OlByb2dyYW1Ob2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkV2YWxOb2RlOjpFdmFsTm9kZSk6CisgICAgICAgIChKU0M6
OkV2YWxOb2RlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpGdW5j
dGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKToK
KyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlND
OjpOb2RlOjpjb2x1bW5Obyk6CisgICAgICAgIChFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChT
dGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6Y29sdW1uKToKKyAg
ICAgICAgKE51bGxOb2RlKToKKyAgICAgICAgKEJvb2xlYW5Ob2RlKToKKyAgICAgICAgKE51bWJl
ck5vZGUpOgorICAgICAgICAoU3RyaW5nTm9kZSk6CisgICAgICAgIChSZWdFeHBOb2RlKToKKyAg
ICAgICAgKFRoaXNOb2RlKToKKyAgICAgICAgKFJlc29sdmVOb2RlKToKKyAgICAgICAgKEFycmF5
Tm9kZSk6CisgICAgICAgIChQcm9wZXJ0eUxpc3ROb2RlKToKKyAgICAgICAgKE9iamVjdExpdGVy
YWxOb2RlKToKKyAgICAgICAgKEJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoRG90QWNj
ZXNzb3JOb2RlKToKKyAgICAgICAgKEFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoTmV3RXhw
ck5vZGUpOgorICAgICAgICAoRXZhbEZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoRnVuY3Rp
b25DYWxsVmFsdWVOb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKToKKyAg
ICAgICAgKEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbERv
dE5vZGUpOgorICAgICAgICAoQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoQXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKFByZVBvc3RSZXNvbHZlTm9kZSk6Cisg
ICAgICAgIChQb3N0Zml4UmVzb2x2ZU5vZGUpOgorICAgICAgICAoUG9zdGZpeEJyYWNrZXROb2Rl
KToKKyAgICAgICAgKFBvc3RmaXhEb3ROb2RlKToKKyAgICAgICAgKFBvc3RmaXhFcnJvck5vZGUp
OgorICAgICAgICAoRGVsZXRlUmVzb2x2ZU5vZGUpOgorICAgICAgICAoRGVsZXRlQnJhY2tldE5v
ZGUpOgorICAgICAgICAoRGVsZXRlRG90Tm9kZSk6CisgICAgICAgIChEZWxldGVWYWx1ZU5vZGUp
OgorICAgICAgICAoVm9pZE5vZGUpOgorICAgICAgICAoVHlwZU9mUmVzb2x2ZU5vZGUpOgorICAg
ICAgICAoVHlwZU9mVmFsdWVOb2RlKToKKyAgICAgICAgKFByZWZpeFJlc29sdmVOb2RlKToKKyAg
ICAgICAgKFByZWZpeEJyYWNrZXROb2RlKToKKyAgICAgICAgKFByZWZpeERvdE5vZGUpOgorICAg
ICAgICAoUHJlZml4RXJyb3JOb2RlKToKKyAgICAgICAgKFVuYXJ5T3BOb2RlKToKKyAgICAgICAg
KFVuYXJ5UGx1c05vZGUpOgorICAgICAgICAoTmVnYXRlTm9kZSk6CisgICAgICAgIChCaXR3aXNl
Tm90Tm9kZSk6CisgICAgICAgIChMb2dpY2FsTm90Tm9kZSk6CisgICAgICAgIChCaW5hcnlPcE5v
ZGUpOgorICAgICAgICAoTXVsdE5vZGUpOgorICAgICAgICAoRGl2Tm9kZSk6CisgICAgICAgIChN
b2ROb2RlKToKKyAgICAgICAgKEFkZE5vZGUpOgorICAgICAgICAoU3ViTm9kZSk6CisgICAgICAg
IChMZWZ0U2hpZnROb2RlKToKKyAgICAgICAgKFJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKFVu
c2lnbmVkUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAoTGVzc05vZGUpOgorICAgICAgICAoR3Jl
YXRlck5vZGUpOgorICAgICAgICAoTGVzc0VxTm9kZSk6CisgICAgICAgIChHcmVhdGVyRXFOb2Rl
KToKKyAgICAgICAgKFRocm93YWJsZUJpbmFyeU9wTm9kZSk6CisgICAgICAgIChJbnN0YW5jZU9m
Tm9kZSk6CisgICAgICAgIChJbk5vZGUpOgorICAgICAgICAoRXF1YWxOb2RlKToKKyAgICAgICAg
KE5vdEVxdWFsTm9kZSk6CisgICAgICAgIChTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoTm90
U3RyaWN0RXF1YWxOb2RlKToKKyAgICAgICAgKEJpdEFuZE5vZGUpOgorICAgICAgICAoQml0T3JO
b2RlKToKKyAgICAgICAgKEJpdFhPck5vZGUpOgorICAgICAgICAoTG9naWNhbE9wTm9kZSk6Cisg
ICAgICAgIChDb25kaXRpb25hbE5vZGUpOgorICAgICAgICAoUmVhZE1vZGlmeVJlc29sdmVOb2Rl
KToKKyAgICAgICAgKEFzc2lnblJlc29sdmVOb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlCcmFj
a2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25CcmFja2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25E
b3ROb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKEFzc2lnbkVy
cm9yTm9kZSk6CisgICAgICAgIChDb21tYU5vZGUpOgorICAgICAgICAoQ29uc3REZWNsTm9kZSk6
CisgICAgICAgIChDb25zdFN0YXRlbWVudE5vZGUpOgorICAgICAgICAoQmxvY2tOb2RlKToKKyAg
ICAgICAgKEVtcHR5U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChEZWJ1Z2dlclN0YXRlbWVudE5v
ZGUpOgorICAgICAgICAoRXhwclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoVmFyU3RhdGVtZW50
Tm9kZSk6CisgICAgICAgIChJZk5vZGUpOgorICAgICAgICAoSWZFbHNlTm9kZSk6CisgICAgICAg
IChEb1doaWxlTm9kZSk6CisgICAgICAgIChXaGlsZU5vZGUpOgorICAgICAgICAoRm9yTm9kZSk6
CisgICAgICAgIChGb3JJbk5vZGUpOgorICAgICAgICAoQ29udGludWVOb2RlKToKKyAgICAgICAg
KEJyZWFrTm9kZSk6CisgICAgICAgIChSZXR1cm5Ob2RlKToKKyAgICAgICAgKFdpdGhOb2RlKToK
KyAgICAgICAgKExhYmVsTm9kZSk6CisgICAgICAgIChUaHJvd05vZGUpOgorICAgICAgICAoVHJ5
Tm9kZSk6CisgICAgICAgIChTY29wZU5vZGUpOgorICAgICAgICAoUHJvZ3JhbU5vZGUpOgorICAg
ICAgICAoRXZhbE5vZGUpOgorICAgICAgICAoRnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAgICAgIChG
dW5jRXhwck5vZGUpOgorICAgICAgICAoRnVuY0RlY2xOb2RlKToKKyAgICAgICAgKFN3aXRjaE5v
ZGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6OnBhcnNl
VmFyRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29uc3REZWNsYXJhdGlvbik6
CisgICAgICAgIChKU0M6Ojo6cGFyc2VEb1doaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZVdoaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVZhckRlY2xhcmF0
aW9uTGlzdCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25zdERlY2xhcmF0aW9uTGlzdCk6Cisg
ICAgICAgIChKU0M6Ojo6cGFyc2VGb3JTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNl
QnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29udGludWVTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjo6OnBhcnNlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6
OjpwYXJzZVRocm93U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVdpdGhTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZVRyeVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VEZWJ1Z2dlclN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VCbG9ja1N0YXRlbWVudCk6CisgICAgICAg
IChKU0M6Ojo6cGFyc2VTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlRnVuY3Rpb25C
b2R5KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9uSW5mbyk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJl
c3Npb25PckxhYmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJlc3Npb25T
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlSWZTdGF0ZW1lbnQpOgorICAgICAgICAo
SlNDOjo6OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24p
OgorICAgICAgICAoSlNDOjo6OnBhcnNlQmluYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VPYmplY3RMaXRlcmFsKToK
KyAgICAgICAgKEpTQzo6OjpwYXJzZVN0cmljdE9iamVjdExpdGVyYWwpOgorICAgICAgICAoSlND
Ojo6OnBhcnNlQXJyYXlMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVByaW1hcnlFeHBy
ZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVVuYXJ5RXhw
cmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQYXJz
ZXI6OnRva2VuQ29sdW1uKToKKyAgICAgICAgKFBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNl
cjo6Z2V0VG9rZW5OYW1lKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZSk6CisgICAgICAgICogcGFy
c2VyL1BhcnNlclRva2Vucy5oOgorICAgICAgICAoSlNDOjpKU1Rva2VuSW5mbzo6SlNUb2tlbklu
Zm8pOgorICAgICAgICAoSlNUb2tlbkluZm8pOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVj
a2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2Rl
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ29tbWFFeHByKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjptYWtlUHJlZml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6Om1ha2VQb3N0Zml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VU
eXBlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZURlbGV0ZU5vZGUp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlTmVnYXRlTm9kZSk6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VCaXR3aXNlTm90Tm9kZSk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpTeW50YXhD
aGVja2VyOjpjcmVhdGVVbmFyeVBsdXMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVWb2lkKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6dGhpc0V4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUFycmF5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlTnVtYmVyRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN0cmlu
Zyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJvb2xlYW4pOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOdWxsKToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQnJhY2tldEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZVJlZ0V4cCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU5ld0V4cHIpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDb25kaXRpb25hbEV4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVBc3NpZ25SZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlQXJndW1lbnRzTGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZVByb3BlcnR5TGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OnNl
dFVzZXNBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5j
RGVjbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJsb2Nr
U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRXhwclN0YXRl
bWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUlmU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRm9yTG9vcCk6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUVtcHR5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlVmFyU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlQnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVD
b250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRy
eVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN3aXRjaFN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVdoaWxlU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlV2l0aFN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6CisgICAg
ICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRocm93U3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRGVidWdnZXIpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVDb25zdFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENo
ZWNrZXI6OmFwcGVuZENvbnN0RGVjbCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2Vy
Ojpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9wZXJh
dG9yU3RhY2tQb3ApOgorCiAyMDEyLTA2LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CiAKICAgICAgICAgSlNDIHNob3VsZCB0cnkgdG8gbWFrZSBwcm9maWxpbmcgZGV0ZXJtaW5p
c3RpYyBiZWNhdXNlIG90aGVyd2lzZSByZXByb2R1Y2luZyBmYWlsdXJlcyBpcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDQ2ZGYxMDQ2MWMzYWVkMDUxNWQxODAzMTQ4NmQzMDRkY2RjMzQ5OWEuLmIxNWFjYjgxNjE1
YmRjNmQ5NzMwZmY3NDIwNWJmN2QxNWQ4N2UxOGMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBA
QAorMjAxMi0wNy0wMSAgUGV0ZXIgV2FuZyAgPHBldGVyLndhbmdAdG9yY2htb2JpbGUuY29tLmNu
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtKU0NdIGltcGxlbWVudCBzZXR0aW5nIGJyZWFr
cG9pbnRzIGJ5IGxpbmU6Y29sdW1uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01MzAwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0IGNhc2UgZm9yIHRoaXMgYnVnLiAoT09QUyEpCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6Omhh
c0JyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNyZWF0
ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpleGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OndpbGxFeGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZl
cjo6ZGlkRXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2
ZXI6OmRpZFJlYWNoQnJlYWtwb2ludCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToKKwogMjAxMi0wNi0yNiAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVmYWN0b3Jpbmc6
IFNpbXBsaWZ5IEZvcm1Db250cm9sbGVyIGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCmluZGV4IGUwY2ZmMTY1YTg4YzkzM2E1ODgzMDM4NmNiNTgxOGE2ZmU3
YTEzMWEuLjUyNjIyY2Q3YThjNWI5NDFjM2Y1NGU3YTEwNDU3MTAyMTQ1NGY2MTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKQEAgLTE5MCw3ICsxOTAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfdGhyb3csIDIpIFwKICAgICAgICAgbWFjcm8o
b3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yLCAyKSBcCiAgICAgICAgIFwKLSAgICAgICAgbWFjcm8o
b3BfZGVidWcsIDQpIFwKKyAgICAgICAgbWFjcm8ob3BfZGVidWcsIDUpIFwKICAgICAgICAgbWFj
cm8ob3BfcHJvZmlsZV93aWxsX2NhbGwsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfcHJvZmlsZV9k
aWRfY2FsbCwgMikgXAogICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDg5NjlhN2YyNWIy
N2U5ZmNlOTY1NTBhZWQ1NWYxMjczYzA0N2UyZmEuLjI5N2IwMDgyM2MwMTI2NjNlZDNhZGYwNjc3
ZmZlYTk2Y2I0OTgwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yMDM3LDcgKzIwMzcsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UG9wU2NvcGUoKQogICAgIG1fZHluYW1pY1Njb3Bl
RGVwdGgtLTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1
Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQordm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwg
aW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKQogewogI2lmIEVOQUJMRShE
RUJVR19XSVRIX0JSRUFLUE9JTlQpCiAgICAgaWYgKGRlYnVnSG9va0lEICE9IERpZFJlYWNoQnJl
YWtwb2ludCkKQEAgLTIwNTAsNiArMjA1MCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREZWJ1Z0hvb2soRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGluCiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRlYnVnSG9va0lEKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZmlyc3RMaW5lKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGFzdExpbmUp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjb2x1bW4pOwogfQogCiB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpwdXNoRmluYWxseUNvbnRleHQoU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2Nr
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCmluZGV4IDhiMWQxZDc0NGJhMmE5MmI0NDI2ZjczMGExZGMzOGQyM2Y3YjA3
ODkuLmIxNGI3MGFmZjFlZTI2MDJkNDNjMTE0YzI4ZGI1NGExN2U0ZmQzYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmgKQEAgLTUwNiw3ICs1MDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1c2hTY29wZShSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQgZW1pdFBv
cFNjb3BlKCk7CiAKLSAgICAgICAgdm9pZCBlbWl0RGVidWdIb29rKERlYnVnSG9va0lELCBpbnQg
Zmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAgICB2b2lkIGVtaXREZWJ1Z0hvb2soRGVi
dWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVtbik7CiAKICAg
ICAgICAgaW50IHNjb3BlRGVwdGgoKSB7IHJldHVybiBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9m
aW5hbGx5RGVwdGg7IH0KICAgICAgICAgYm9vbCBoYXNGaW5hbGlzZXIoKSB7IHJldHVybiBtX2Zp
bmFsbHlEZXB0aCAhPSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDI0M2U4Y2UwMDg0OWI1NTJkOThkYjA1MDFj
MzY5YTQxNWQyZWQwYS4uNGFjYzU3M2VkMDkzODEzMDI1OGE0Mzc1NTM4ZWFlYzgyMTc0OTM0YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2Rl
Z2VuLmNwcApAQCAtMjAyLDE4ICsyMDIsMjEgQEAgYm9vbCBBcnJheU5vZGU6OmlzU2ltcGxlQXJy
YXkoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1Bcmd1bWVudExpc3ROb2RlKiBBcnJh
eU5vZGU6OnRvQXJndW1lbnRMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVO
dW1iZXIpIGNvbnN0CitBcmd1bWVudExpc3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2VsaXNpb24gJiYgIW1fb3B0aW9uYWwpOwogICAg
IEVsZW1lbnROb2RlKiBwdHIgPSBtX2VsZW1lbnQ7CiAgICAgaWYgKCFwdHIpCiAgICAgICAgIHJl
dHVybiAwOwotICAgIEFyZ3VtZW50TGlzdE5vZGUqIGhlYWQgPSBuZXcgKGdsb2JhbERhdGEpIEFy
Z3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgcHRyLT52YWx1ZSgpKTsKKyAgICBKU1Rva2VuTG9j
YXRpb24gbG9jYXRpb247CisgICAgbG9jYXRpb24ubGluZSA9IGxpbmVOdW1iZXI7CisgICAgbG9j
YXRpb24uY29sdW1uID0gY29sdW1uTnVtYmVyOworICAgIEFyZ3VtZW50TGlzdE5vZGUqIGhlYWQg
PSBuZXcgKGdsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobG9jYXRpb24sIHB0ci0+dmFsdWUo
KSk7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogdGFpbCA9IGhlYWQ7CiAgICAgcHRyID0gcHRyLT5u
ZXh0KCk7CiAgICAgZm9yICg7IHB0cjsgcHRyID0gcHRyLT5uZXh0KCkpIHsKICAgICAgICAgQVNT
RVJUKCFwdHItPmVsaXNpb24oKSk7Ci0gICAgICAgIHRhaWwgPSBuZXcgKGdsb2JhbERhdGEpIEFy
Z3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgdGFpbCwgcHRyLT52YWx1ZSgpKTsKKyAgICAgICAg
dGFpbCA9IG5ldyAoZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsb2NhdGlvbiwgdGFpbCwg
cHRyLT52YWx1ZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIGhlYWQ7CiB9CkBAIC01MzYsNyArNTM5
LDcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICBpZiAobV9hcmdz
LT5tX2xpc3ROb2RlLT5tX25leHQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJn
cy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7
Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFy
cmF5Tm9kZSo+KG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50
TGlzdChnZW5lcmF0b3IuZ2xvYmFsRGF0YSgpLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgbV9h
cmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3RO
b2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci5nbG9iYWxEYXRh
KCksIDAsIDApOwogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1
bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0
KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFy
Z3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIp
OwpAQCAtMTEyOCw2ICsxMTMxLDggQEAgUmVnaXN0ZXJJRCogQ29uZGl0aW9uYWxOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKICAgICBSZWZQ
dHI8TGFiZWw+IGJlZm9yZUVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8
TGFiZWw+IGFmdGVyRWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogCisgICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxpbmVObygpLCBsaW5lTm8oKSwg
Y29sdW1uTm8oKSk7CisKICAgICBpZiAobV9sb2dpY2FsLT5oYXNDb25kaXRpb25Db250ZXh0Q29k
ZWdlbigpKSB7CiAgICAgICAgIFJlZlB0cjxMYWJlbD4gYmVmb3JlVGhlbiA9IGdlbmVyYXRvci5u
ZXdMYWJlbCgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQo
bV9sb2dpY2FsLCBiZWZvcmVUaGVuLmdldCgpLCBiZWZvcmVFbHNlLmdldCgpLCB0cnVlKTsKQEAg
LTEzODUsNyArMTM5MCw3IEBAIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIFJlZ2lzdGVySUQq
IENvbnN0U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxF
eGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGlu
ZSgpLCBjb2x1bW4oKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShtX25leHQpOwog
fQogCkBAIC0xNDI4LDcgKzE0MzMsNyBAQCBSZWdpc3RlcklEKiBCbG9ja05vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogCiBSZWdp
c3RlcklEKiBFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAg
ICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5l
KCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0xNDM2
LDcgKzE0NDEsNyBAQCBSZWdpc3RlcklEKiBFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpcwogCiBSZWdpc3RlcklEKiBEZWJ1
Z2dlclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlk
UmVhY2hCcmVha3BvaW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soRGlkUmVhY2hCcmVha3BvaW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUo
KSwgY29sdW1uKCkpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTE0NDUsNyArMTQ1MCw3IEBA
IFJlZ2lzdGVySUQqIERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlCiBSZWdpc3RlcklEKiBFeHByU3RhdGVtZW50Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIHsKICAgICBBU1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOyAKKyAgICBnZW5l
cmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxh
c3RMaW5lKCksIGNvbHVtbigpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwg
bV9leHByKTsKIH0KIApAQCAtMTQ1NCw3ICsxNDU5LDcgQEAgUmVnaXN0ZXJJRCogRXhwclN0YXRl
bWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3QKIFJlZ2lzdGVySUQqIFZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKICAgICBBU1NFUlQobV9leHByKTsK
LSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVj
dXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKIH0KIApAQCAtMTQ2Miw3ICsxNDY3LDcg
QEAgUmVnaXN0ZXJJRCogVmFyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKIAogUmVnaXN0ZXJJRCogSWZOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewot
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExp
bmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1
dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAg
ICAgUmVmUHRyPExhYmVsPiBhZnRlclRoZW4gPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIApAQCAt
MTQ4Niw3ICsxNDkxLDcgQEAgUmVnaXN0ZXJJRCogSWZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiBSZWdpc3RlcklEKiBJ
ZkVsc2VOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBj
b2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVFbHNlID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPExhYmVsPiBhZnRlckVsc2UgPSBnZW5lcmF0b3IubmV3
TGFiZWwoKTsKQEAgLTE1MjIsMTIgKzE1MjcsMTEgQEAgUmVnaXN0ZXJJRCogRG9XaGlsZU5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgog
ICAgIFJlZlB0cjxMYWJlbD4gdG9wT2ZMb29wID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAg
Z2VuZXJhdG9yLmVtaXRMYWJlbCh0b3BPZkxvb3AuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0
TG9vcEhpbnQoKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRl
bWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOwogICAgCiAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKIAogICAg
IGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwotICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygp
LCBtX2V4cHItPmxpbmVObygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGlm
IChtX2V4cHItPmhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2Nv
cGUtPmJyZWFrVGFyZ2V0KCksIGZhbHNlKTsKICAgICBlbHNlIHsKQEAgLTE1NDYsNyArMTU1MCw3
IEBAIFJlZ2lzdGVySUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3Bl
ID0gZ2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CiAgICAgUmVmUHRy
PExhYmVsPiB0b3BPZkxvb3AgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAotICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBt
X2V4cHItPmxpbmVObygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5j
b2x1bW5ObygpKTsKICAgICBpZiAobV9leHByLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigp
KQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0
b3BPZkxvb3AuZ2V0KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCB0cnVlKTsKICAgICBlbHNlIHsK
QEAgLTE1NjAsNyArMTU2NCw3IEBAIFJlZ2lzdGVySUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJl
bChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2so
V2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIG1fZXhwci0+bGluZU5vKCksIG1fZXhwci0+bGluZU5vKCkp
OworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJz
dExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAgaWYgKG1fZXhwci0+aGFzQ29u
ZGl0aW9uQ29udGV4dENvZGVnZW4oKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25k
aXRpb25Db250ZXh0KG1fZXhwciwgdG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQo
KSwgZmFsc2UpOwpAQCAtMTU4MSw3ICsxNTg1LDcgQEAgUmVnaXN0ZXJJRCogRm9yTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
IHsKICAgICBSZWZQdHI8TGFiZWxTY29wZT4gc2NvcGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29w
ZShMYWJlbFNjb3BlOjpMb29wKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxF
eGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGlu
ZSgpLCBjb2x1bW4oKSk7CiAKICAgICBpZiAobV9leHByMSkKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjEpOwpAQCAtMTYwMiw3ICsx
NjA2LDcgQEAgUmVnaXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGlu
ZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
Zmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICBpZiAobV9leHByMykKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhw
cjMpOwogCkBAIC0xNjI5LDcgKzE2MzMsNyBAQCBSZWdpc3RlcklEKiBGb3JJbk5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAg
IGlmICghbV9sZXhwci0+aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gZW1pdFRocm93UmVm
ZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGZvci1pbiBzdGF0ZW1lbnQgaXMg
bm90IGEgcmVmZXJlbmNlLiIpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKIAogICAgIGlmIChtX2luaXQpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0
Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBtX2luaXQpOwpAQCAtMTY5Miw3ICsxNjk2
LDcgQEAgUmVnaXN0ZXJJRCogRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwo
c2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TmV4dFByb3BlcnR5
TmFtZShwcm9wZXJ0eU5hbWUsIGJhc2UuZ2V0KCksIGkuZ2V0KCksIHNpemUuZ2V0KCksIGl0ZXIu
Z2V0KCksIGxvb3BTdGFydC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCksIGNvbHVtbigpKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1Rh
cmdldCgpKTsKICAgICByZXR1cm4gZHN0OwogfQpAQCAtMTcwMiw3ICsxNzA2LDcgQEAgUmVnaXN0
ZXJJRCogRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHMKIC8vIEVDTUEgMTIuNwogUmVnaXN0ZXJJRCogQ29udGludWVOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50
LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2so
V2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7
CiAgICAgCiAgICAgTGFiZWxTY29wZSogc2NvcGUgPSBnZW5lcmF0b3IuY29udGludWVUYXJnZXQo
bV9pZGVudCk7CiAgICAgQVNTRVJUKHNjb3BlKTsKQEAgLTE3MTYsNyArMTcyMCw3IEBAIFJlZ2lz
dGVySUQqIENvbnRpbnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqCiAvLyBFQ01BIDEyLjgKIFJlZ2lzdGVySUQqIEJyZWFrTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
Zmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdp
bGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwog
ICAgIAogICAgIExhYmVsU2NvcGUqIHNjb3BlID0gZ2VuZXJhdG9yLmJyZWFrVGFyZ2V0KG1faWRl
bnQpOwogICAgIEFTU0VSVChzY29wZSk7CkBAIC0xNzI5LDcgKzE3MzMsNyBAQCBSZWdpc3RlcklE
KiBCcmVha05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkcwogCiBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgQVNTRVJUKGdlbmVy
YXRvci5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCkpCkBAIC0xNzQ1LDcgKzE3NDksNyBAQCBSZWdpc3RlcklEKiBS
ZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZAogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBTY29wZXMobDAuZ2V0KCksIDAp
OwogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGwwLmdldCgpKTsKICAgICB9Ci0gICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1l
LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdFJldHVybihyMCk7CiB9CiAKQEAgLTE3NTMsNyArMTc1Nyw3IEBAIFJlZ2lzdGVySUQq
IFJldHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkCiAKIFJlZ2lzdGVySUQqIFdpdGhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQs
IGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShzY29wZS5nZXQoKSwgbV9leHByKTsgLy8gc2NvcGUgbXVzdCBiZSBwcm90ZWN0
ZWQgdW50aWwgcG9wcGVkCkBAIC0xOTE4LDcgKzE5MjIsNyBAQCBSZWdpc3RlcklEKiBDYXNlQmxv
Y2tOb2RlOjplbWl0Qnl0ZWNvZGVGb3JCbG9jayhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZQogCiBSZWdpc3RlcklEKiBTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7
CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0
TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPExhYmVsU2Nv
cGU+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6U3dpdGNoKTsK
IApAQCAtMTkzMyw3ICsxOTM3LDcgQEAgUmVnaXN0ZXJJRCogU3dpdGNoTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAogUmVnaXN0
ZXJJRCogTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxF
eGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGlu
ZSgpLCBjb2x1bW4oKSk7CiAKICAgICBBU1NFUlQoIWdlbmVyYXRvci5icmVha1RhcmdldChtX25h
bWUpKTsKIApAQCAtMTk0OCw3ICsxOTUyLDcgQEAgUmVnaXN0ZXJJRCogTGFiZWxOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAog
UmVnaXN0ZXJJRCogVGhyb3dOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBs
YXN0TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpCiAgICAgICAgIGRzdCA9IDA7CkBAIC0xOTY1LDcgKzE5NjksNyBAQCBSZWdpc3Rl
cklEKiBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogICAgIC8vIE5PVEU6IFRoZSBjYXRjaCBhbmQgZmluYWxseSBibG9j
a3MgbXVzdCBiZSBsYWJlbGVkIGV4cGxpY2l0bHksIHNvIHRoZQogICAgIC8vIG9wdGltaXplciBr
bm93cyB0aGV5IG1heSBiZSBqdW1wZWQgdG8gZnJvbSBhbnl3aGVyZS4KIAotICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQs
IGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBSZWZQdHI8TGFiZWw+
IHRyeVN0YXJ0TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBpZiAobV9maW5hbGx5
QmxvY2spCkBAIC0yMDIyLDEzICsyMDI2LDEzIEBAIGlubGluZSB2b2lkIFNjb3BlTm9kZTo6ZW1p
dFN0YXRlbWVudHNCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAK
IFJlZ2lzdGVySUQqIFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2so
V2lsbEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSwgY29sdW1uKCkpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRzdFJlZ2lzdGVyID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0TG9hZChkc3RSZWdp
c3Rlci5nZXQoKSwganNVbmRlZmluZWQoKSk7CiAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShn
ZW5lcmF0b3IsIGRzdFJlZ2lzdGVyLmdldCgpKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKERpZEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0
TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFbmQoZHN0UmVnaXN0ZXIuZ2V0
KCkpOwogICAgIHJldHVybiAwOwogfQpAQCAtMjAzNywxMyArMjA0MSwxMyBAQCBSZWdpc3RlcklE
KiBQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqKQogCiBSZWdpc3RlcklEKiBFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRvci5l
bWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkp
OworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBk
c3RSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBnZW5lcmF0b3IuZW1p
dExvYWQoZHN0UmVnaXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwogICAgIGVtaXRTdGF0ZW1l
bnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7CiAKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQcm9ncmFtLCBmaXJz
dExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGdlbmVyYXRvci5lbWl0RW5kKGRz
dFJlZ2lzdGVyLmdldCgpKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTIwNTIsNyArMjA1Niw3IEBA
IFJlZ2lzdGVySUQqIEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQm9keU5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsK
LSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgZmlyc3RMaW5l
KCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2Fs
bEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGVtaXRTdGF0
ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAog
ICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVu
dCgpOwpAQCAtMjA2OCw3ICsyMDcyLDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25Cb2R5Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAv
LyBJZiB0aGVyZSBpcyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUu
CiAgICAgaWYgKCFyZXR1cm5Ob2RlKSB7CiAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJh
dG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRv
ci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgZmlyc3RMaW5l
KCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4o
cjApOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlci5oCmluZGV4IGEyMzczMjkxODc4MDNlZGE5NTdhMzdkM2EwYTkwN2FmZjBi
ODkyMzIuLmE2YTQzM2FkZjUyNzA4ZjFlODk4ZjVkZTIyN2MzZTE3ZjViODkyYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC00MiwxNCArNDIsMjUgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goSlNHbG9iYWxPYmpl
Y3QqKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEV4ZWNTdGF0ZSosIFNv
dXJjZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZU51bWJlciwgY29uc3QgVVN0cmluZyYgZXJyb3JN
ZXNzYWdlKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdn
ZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFz
SGFuZGxlcikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgRGVi
dWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYs
IGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAwOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgcmV0dXJuRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3Vy
Y2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4
ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJv
Z3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGlu
ZU51bWJlcikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hCcmVha3BvaW50KGNv
bnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVy
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxs
RnJhbWUmLCBpbnRwdHJfdCwgaW50LCBib29sKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBh
dFN0YXRlbWVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQpID0gMDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYs
IGludHB0cl90LCBpbnQpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNv
bnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCkgPSAwOworCisgICAgICAgIHZp
cnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwg
aW50LCBpbnQsIGJvb2wpIHsgfTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGF0U3RhdGVtZW50KGNv
bnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCwgaW50KSB7IH07CisgICAgICAg
IHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJf
dCwgaW50LCBpbnQpIHsgfTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCwgaW50KSB7IH07CisKKworICAgICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1l
JiwgaW50cHRyX3QsIGludCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRXhlY3V0ZVBy
b2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50KSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmLCBpbnRwdHJfdCwgaW50KSA9IDA7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxFeGVj
dXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQsIGludCkg
eyB9OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdn
ZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50LCBpbnQpIHsgfTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90
LCBpbnQsIGludCkgeyB9OworCiAKICAgICAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9u
cyhKU0dsb2JhbERhdGEqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggYjg2MTBlN2JmYmM4NWU4MTdjMTllOWNkODYxMTBi
ODFiZDRlOTAxYi4uMzBkMjg3ZmQ0ODEwZDY1YWNjMDBiNTY3OWU1N2VkMDQ5YTNiODBkYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CkBAIC03MTIsOSArNzEyLDkgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2lu
ZENhbGxGcmFtZShDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVmFsdWUgZXgKICAgICBpZiAoRGVi
dWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1lLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVn
Z2VyKCkpIHsKICAgICAgICAgRGVidWdnZXJDYWxsRnJhbWUgZGVidWdnZXJDYWxsRnJhbWUoY2Fs
bEZyYW1lLCBleGNlcHRpb25WYWx1ZSk7CiAgICAgICAgIGlmIChjYWxsRnJhbWUtPmNhbGxlZSgp
KQotICAgICAgICAgICAgZGVidWdnZXItPnJldHVybkV2ZW50KGRlYnVnZ2VyQ2FsbEZyYW1lLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLT5sYXN0TGluZSgpKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5yZXR1cm5F
dmVudChkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291
cmNlSUQoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bGFzdExpbmUoKSwgMCk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRFeGVjdXRlUHJvZ3JhbShkZWJ1
Z2dlckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwg
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bGFzdExpbmUoKSk7CisgICAgICAgICAgICBk
ZWJ1Z2dlci0+ZGlkRXhlY3V0ZVByb2dyYW0oZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCktPmxhc3RMaW5lKCksIDApOwogICAgIH0KIAogICAgIC8vIElmIHRoaXMgY2FsbCBmcmFtZSBj
cmVhdGVkIGFuIGFjdGl2YXRpb24gb3IgYW4gJ2FyZ3VtZW50cycgb2JqZWN0LCB0ZWFyIGl0IG9m
Zi4KQEAgLTEwMzYsNyArMTAzNiw3IEBAIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJw
cmV0ZXI6OnRocm93RXhjZXB0aW9uKENhbGxGcmFtZSomIGNhbGxGcmFtZSwgSlNWCiAgICAgaWYg
KERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5k
ZWJ1Z2dlcigpKSB7CiAgICAgICAgIERlYnVnZ2VyQ2FsbEZyYW1lIGRlYnVnZ2VyQ2FsbEZyYW1l
KGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUpOwogICAgICAgICBib29sIGhhc0hhbmRsZXIgPSBj
b2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7Ci0gICAg
ICAgIGRlYnVnZ2VyLT5leGNlcHRpb24oZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSwgaGFzSGFuZGxlcik7CisgICAgICAgIGRlYnVnZ2Vy
LT5leGNlcHRpb24oZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KSwgMCwgaGFzSGFuZGxlcik7CiAgICAgfQogCiAgICAgLy8gQ2FsY3VsYXRl
IGFuIGV4Y2VwdGlvbiBoYW5kbGVyIHZQQywgdW53aW5kaW5nIGNhbGwgZnJhbWVzIGFzIG5lY2Vz
c2FyeS4KQEAgLTE2MjQsNyArMTYyNCw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUo
RXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlCiAgICAg
cmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KIAotTkVWRVJfSU5MSU5FIHZvaWQgSW50
ZXJwcmV0ZXI6OmRlYnVnKENhbGxGcmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hv
b2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQorTkVWRVJfSU5MSU5FIHZvaWQgSW50
ZXJwcmV0ZXI6OmRlYnVnKENhbGxGcmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hv
b2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKQogewogICAgIERl
YnVnZ2VyKiBkZWJ1Z2dlciA9IGNhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1
Z2dlcigpOwogICAgIGlmICghZGVidWdnZXIpCkBAIC0xNjMyLDIyICsxNjMyLDIyIEBAIE5FVkVS
X0lOTElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVi
dWdIb29rSUQgZGVidWdIb29rCiAKICAgICBzd2l0Y2ggKGRlYnVnSG9va0lEKSB7CiAgICAgICAg
IGNhc2UgRGlkRW50ZXJDYWxsRnJhbWU6Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+Y2FsbEV2ZW50
KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNv
dXJjZUlEKCksIGZpcnN0TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+Y2FsbEV2ZW50KGNh
bGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJj
ZUlEKCksIGZpcnN0TGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
Y2FzZSBXaWxsTGVhdmVDYWxsRnJhbWU6Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+cmV0dXJuRXZl
bnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+
c291cmNlSUQoKSwgbGFzdExpbmUpOworICAgICAgICAgICAgZGVidWdnZXItPnJldHVybkV2ZW50
KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNv
dXJjZUlEKCksIGxhc3RMaW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBjYXNlIFdpbGxFeGVjdXRlU3RhdGVtZW50OgotICAgICAgICAgICAgZGVidWdnZXItPmF0U3Rh
dGVtZW50KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxl
KCktPnNvdXJjZUlEKCksIGZpcnN0TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+YXRTdGF0
ZW1lbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUo
KS0+c291cmNlSUQoKSwgZmlyc3RMaW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBjYXNlIFdpbGxFeGVjdXRlUHJvZ3JhbToKLSAgICAgICAgICAgIGRlYnVnZ2VyLT53
aWxsRXhlY3V0ZVByb2dyYW0oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25l
ckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgZmlyc3RMaW5lKTsKKyAgICAgICAgICAgIGRlYnVn
Z2VyLT53aWxsRXhlY3V0ZVByb2dyYW0oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
LT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgZmlyc3RMaW5lLCBjb2x1bW4pOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIERpZEV4ZWN1dGVQcm9ncmFtOgotICAgICAg
ICAgICAgZGVidWdnZXItPmRpZEV4ZWN1dGVQcm9ncmFtKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5lKTsKKyAg
ICAgICAgICAgIGRlYnVnZ2VyLT5kaWRFeGVjdXRlUHJvZ3JhbShjYWxsRnJhbWUsIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSwg
Y29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBEaWRSZWFjaEJyZWFr
cG9pbnQ6Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+ZGlkUmVhY2hCcmVha3BvaW50KGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCks
IGxhc3RMaW5lKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRSZWFjaEJyZWFrcG9pbnQoY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNl
SUQoKSwgbGFzdExpbmUsIGNvbHVtbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRl
eCBhZGIyM2YyMzcyMzg0ZGFmODgzYjE0ZWZmOGJhZjVkYzVmZTZkZjQxLi40N2Q2Njg5ODUxNWYy
MTkxZTY1OTI1ZTAyNzc4NzRlZTdiMDA5MDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtMjIwLDcgKzIyMCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBTYW1wbGluZ1Rvb2wqIHNhbXBsZXIoKSB7IHJldHVybiBtX3NhbXBs
ZXIuZ2V0KCk7IH0KIAogICAgICAgICBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIHRocm93RXhj
ZXB0aW9uKENhbGxGcmFtZSomLCBKU1ZhbHVlJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwot
ICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBkZWJ1ZyhDYWxsRnJhbWUqLCBEZWJ1Z0hvb2tJRCwg
aW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKTsKKyAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQg
ZGVidWcoQ2FsbEZyYW1lKiwgRGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGlu
ZSwgaW50IGNvbHVtbik7CiAgICAgICAgIHN0YXRpYyBjb25zdCBVU3RyaW5nIGdldFRyYWNlTGlu
ZShDYWxsRnJhbWUqLCBTdGFja0ZyYW1lQ29kZVR5cGUsIGNvbnN0IFVTdHJpbmcmLCBpbnQpOwog
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRTdGFja1RyYWNlKEpTR2xv
YmFsRGF0YSosIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cyk7CiAgICAgICAgIHN0YXRpYyB2
b2lkIGFkZFN0YWNrVHJhY2VJZk5lY2Vzc2FyeShDYWxsRnJhbWUqLCBKU09iamVjdCogZXJyb3Ip
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggMmU0NDhkZDUy
YWE5NjFkOWIyNDFhYzA1ZDA0NzgyYTA2MTUzNmQxNC4uNmI0YTc3NjVjOGE3ZDczMjlkZGZmZGFj
YmY5YTI5NTI2M2M2MzQxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwCkBAIC0xMTU5LDYgKzExNTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWJ1ZyhJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0
ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwu
YWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQp
KTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCkpOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0z
MihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuY2FsbCgp
OwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAKaW5kZXggNGY4NTg5NTU3MmMwZTlmMzIyOWFiNDkwODBiNmVlNTk2MTRhODI1MS4uZjk5
N2IzZThiZDExMmEzNzg1MzYxNGU5NGQxMzcwOTY3YjAxMzAyOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMTQ4MCw2ICsxNDgwLDcgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikK
ICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJ
bW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuY2Fs
bCgpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4
IDZiODA4Mjg4Njk2NzRiMjBlOTU0MjhlODRkZDE4NTk1NTk5NzIzMTguLmMwZDEwOWUxZDhmM2Ew
MTg1Y2VkYzJiZjcwMjgyNGQ1MGQ5NzY4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuY3BwCkBAIC0zMzY5LDggKzMzNjksOSBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lk
LCBvcF9kZWJ1ZykKICAgICBpbnQgZGVidWdIb29rSUQgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaW50
MzIoKTsKICAgICBpbnQgZmlyc3RMaW5lID0gc3RhY2tGcmFtZS5hcmdzWzFdLmludDMyKCk7CiAg
ICAgaW50IGxhc3RMaW5lID0gc3RhY2tGcmFtZS5hcmdzWzJdLmludDMyKCk7CisgICAgaW50IGNv
bHVtbiA9IHN0YWNrRnJhbWUuYXJnc1szXS5pbnQzMigpOwogCi0gICAgc3RhY2tGcmFtZS5nbG9i
YWxEYXRhLT5pbnRlcnByZXRlci0+ZGVidWcoY2FsbEZyYW1lLCBzdGF0aWNfY2FzdDxEZWJ1Z0hv
b2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICBzdGFja0ZyYW1l
Lmdsb2JhbERhdGEtPmludGVycHJldGVyLT5kZWJ1ZyhjYWxsRnJhbWUsIHN0YXRpY19jYXN0PERl
YnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUsIGNvbHVtbik7CiB9
CiAKIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCB2bV90aHJvdykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGE3Njk4YmUzNzQzMjY5
MzA4NTVmNWYyNTMwMThkYTE2NWZiNmMxZTkuLjE5NThjZjZhODA2YzUxNjNhMDM2ZGVlZDhkNmJl
NTQ4Njc5MDgwZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcApAQCAtMTU3OCw4ICsxNTc4LDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2RlYnVnKQogICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFdLnUub3BlcmFuZDsKICAg
ICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOwogICAgIGludCBsYXN0TGluZSA9IHBj
WzNdLnUub3BlcmFuZDsKLSAgICAKLSAgICBnbG9iYWxEYXRhLmludGVycHJldGVyLT5kZWJ1Zyhl
eGVjLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxh
c3RMaW5lKTsKKyAgICBpbnQgY29sdW1uID0gcGNbNF0udS5vcGVyYW5kOworCisgICAgZ2xvYmFs
RGF0YS5pbnRlcnByZXRlci0+ZGVidWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRl
YnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSwgY29sdW1uKTsKICAgICAKICAgICBMTElO
VF9FTkQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNU
QnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5k
ZXggMGViNjBjZjg5OTJmZjA5MjQ5OTEzNDQzMjhiZjkzMWExYmY3MzZlNy4uODI4YWRhZWExNTYz
ZmJjZTRhM2FlYzVmYjZlZWIwYzIwOTY3Yzg1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmgKQEAgLTExMiw4ICsxMTIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IGludCAgRG9udEJ1aWxkS2V5d29yZHMgPSAwOwogICAgIHN0YXRpYyBjb25zdCBpbnQg
IERvbnRCdWlsZFN0cmluZ3MgPSAwOwogCi0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaW5hcnlO
b2RlKGludCBsaW5lTnVtYmVyLCBpbnQgdG9rZW4sIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSos
IEJpbmFyeU9wSW5mbz4sIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4p
OwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGZ1bmMsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGludCBzdGFydCwg
aW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpbmFyeU5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50IHRva2VuLCBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5v
ZGUqLCBCaW5hcnlPcEluZm8+LCBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcElu
Zm8+KTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGZ1bmMsIEFyZ3VtZW50c05vZGUqIGFyZ3Ms
IGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKIAogICAgIEpTQzo6U291cmNlRWxlbWVu
dHMqIGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEpT
Qzo6U291cmNlRWxlbWVudHMoKTsgfQogCkBAIC0xMjQsMTY4ICsxMjQsMTY4IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYXBwZW5kVG9Db21tYShDb21tYU5vZGUqIGNvbW1hTm9kZSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIpIHsgY29tbWFOb2RlLT5hcHBlbmQoZXhwcik7IH0KIAotICAgIENvbW1hTm9k
ZSogY3JlYXRlQ29tbWFFeHByKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGhzLCBF
eHByZXNzaW9uTm9kZSogcmhzKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29tbWFOb2Rl
KGxpbmVOdW1iZXIsIGxocywgcmhzKTsgfQotCi0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VBc3Np
Z25Ob2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0b3IsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBsZWZ0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotICAgIEV4cHJl
c3Npb25Ob2RlKiBtYWtlUHJlZml4Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
LCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlUG9zdGZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiwg
T3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZVR5cGVPZk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7Ci0g
ICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VEZWxldGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSosIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZU5lZ2F0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7Ci0g
ICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXR3aXNlTm90Tm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZU11bHROb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGl2Tm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZU1v
ZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUq
IG1ha2VBZGROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlU3ViTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBF
eHByZXNzaW9uTm9kZSogbWFrZUJpdFhPck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRBbmROb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0T3JOb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTGVmdFNoaWZ0
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSog
bWFrZVJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlVVJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOwotCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUxvZ2ljYWxOb3QoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
TG9naWNhbE5vdE5vZGUobGluZU51bWJlciwgZXhwcik7IH0KLSAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlVW5hcnlQbHVzKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobGluZU51bWJlciwgZXhwcik7
IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlVm9pZChpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIpCisgICAgQ29tbWFOb2RlKiBjcmVhdGVDb21tYUV4cHIoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5v
ZGUqIHJocykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbW1hTm9kZShsb2NhdGlvbiwg
bGhzLCByaHMpOyB9CisKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUFzc2lnbk5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIE9wZXJhdG9yLCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgbGVmdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOworICAgIEV4cHJl
c3Npb25Ob2RlKiBtYWtlUG9zdGZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOworICAg
IEV4cHJlc3Npb25Ob2RlKiBtYWtlVHlwZU9mTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSopOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGVsZXRlTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIGludCBzdGFydCwgaW50IGRpdm90
LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZU5lZ2F0ZU5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFr
ZUJpdHdpc2VOb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7
CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VNdWx0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGl2Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJp
Z2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtl
TW9kTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJl
c3Npb25Ob2RlKiBtYWtlQWRkTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlU3ViTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0WE9yTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2Rl
KiBtYWtlQml0QW5kTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSog
bGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwor
ICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0T3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VMZWZ0U2hpZnROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUq
IG1ha2VSaWdodFNoaWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
OworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlVVJpZ2h0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTG9n
aWNhbE5vdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxOb3ROb2RlKGxvY2F0aW9u
LCBleHByKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVVbmFyeVBsdXMoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBVbmFyeVBsdXNOb2RlKGxvY2F0aW9uLCBleHByKTsgfQorICAgIEV4
cHJlc3Npb25Ob2RlKiBjcmVhdGVWb2lkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBleHByKQogICAgIHsKICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0g
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVm9pZE5vZGUobGluZU51bWJlciwgZXhw
cik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVm9pZE5vZGUobG9jYXRpb24s
IGV4cHIpOwogICAgIH0KLSAgICBFeHByZXNzaW9uTm9kZSogdGhpc0V4cHIoaW50IGxpbmVOdW1i
ZXIpCisgICAgRXhwcmVzc2lvbk5vZGUqIHRoaXNFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24pCiAgICAgewogICAgICAgICB1c2VzVGhpcygpOwotICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIFRoaXNOb2RlKGxpbmVOdW1iZXIpOworICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIFRoaXNOb2RlKGxvY2F0aW9uKTsKICAgICB9Ci0gICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZVJlc29sdmUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50LCBpbnQgc3RhcnQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVJlc29sdmUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBz
dGFydCkKICAgICB7CiAgICAgICAgIGlmIChtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFy
Z3VtZW50cyA9PSAqaWRlbnQpCiAgICAgICAgICAgICB1c2VzQXJndW1lbnRzKCk7Ci0gICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVzb2x2ZU5vZGUobGluZU51bWJlciwgKmlkZW50
LCBzdGFydCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVzb2x2ZU5vZGUo
bG9jYXRpb24sICppZGVudCwgc3RhcnQpOwogICAgIH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlT2JqZWN0TGl0ZXJhbChpbnQgbGluZU51bWJlcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIE9iamVjdExpdGVyYWxOb2RlKGxpbmVOdW1iZXIpOyB9Ci0gICAgRXhwcmVzc2lvbk5vZGUq
IGNyZWF0ZU9iamVjdExpdGVyYWwoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5TGlzdE5vZGUqIHBy
b3BlcnRpZXMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBPYmplY3RMaXRlcmFsTm9kZShs
aW5lTnVtYmVyLCBwcm9wZXJ0aWVzKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVPYmpl
Y3RMaXRlcmFsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pIHsgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBPYmplY3RMaXRlcmFsTm9kZShsb2NhdGlvbik7IH0KKyAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlT2JqZWN0TGl0ZXJhbChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBQcm9wZXJ0eUxpc3ROb2RlKiBwcm9wZXJ0aWVzKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgT2JqZWN0TGl0ZXJhbE5vZGUobG9jYXRpb24sIHByb3BlcnRpZXMpOyB9CiAKLSAgICBF
eHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIGludCBlbGlzaW9ucykK
KyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgaW50IGVsaXNpb25zKQogICAgIHsKICAgICAgICAgaWYgKGVsaXNpb25zKQogICAg
ICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgQXJyYXlOb2RlKGxpbmVOdW1iZXIsIGVsaXNpb25zKTsKKyAgICAgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBBcnJheU5vZGUobG9jYXRpb24sIGVsaXNpb25zKTsKICAgICB9CiAKLSAg
ICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIEVsZW1lbnROb2Rl
KiBlbGVtcykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5lTnVtYmVy
LCBlbGVtcyk7IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxpbmVOdW1i
ZXIsIGludCBlbGlzaW9ucywgRWxlbWVudE5vZGUqIGVsZW1zKQorICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVBcnJheShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFbGVtZW50Tm9k
ZSogZWxlbXMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcnJheU5vZGUobG9jYXRpb24s
IGVsZW1zKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJheShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBpbnQgZWxpc2lvbnMsIEVsZW1lbnROb2RlKiBlbGVtcykKICAg
ICB7CiAgICAgICAgIGlmIChlbGlzaW9ucykKICAgICAgICAgICAgIGluY0NvbnN0YW50cygpOwot
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5lTnVtYmVyLCBl
bGlzaW9ucywgZWxlbXMpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5
Tm9kZShsb2NhdGlvbiwgZWxpc2lvbnMsIGVsZW1zKTsKICAgICB9Ci0gICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZU51bWJlckV4cHIoaW50IGxpbmVOdW1iZXIsIGRvdWJsZSBkKQorICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVOdW1iZXJFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGRvdWJsZSBkKQogICAgIHsKICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTnVtYmVyTm9kZShsaW5lTnVtYmVyLCBkKTsKKyAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdW1iZXJOb2RlKGxvY2F0aW9uLCBkKTsKICAg
ICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlU3RyaW5nKGludCBsaW5lTnVtYmVyLCBj
b25zdCBJZGVudGlmaWVyKiBzdHJpbmcpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVN0cmlu
Zyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBzdHJp
bmcpCiAgICAgewogICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBTdHJpbmdOb2RlKGxpbmVOdW1iZXIsICpzdHJpbmcpOworICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN0cmluZ05vZGUobG9jYXRpb24sICpzdHJpbmcpOwog
ICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVCb29sZWFuKGludCBsaW5lTnVtYmVy
LCBib29sIGIpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJvb2xlYW4oY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgYm9vbCBiKQogICAgIHsKICAgICAgICAgaW5jQ29uc3RhbnRz
KCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQm9vbGVhbk5vZGUobGluZU51
bWJlciwgYik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQm9vbGVhbk5vZGUo
bG9jYXRpb24sIGIpOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdWxsKGlu
dCBsaW5lTnVtYmVyKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdWxsKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24pCiAgICAgewogICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdWxsTm9kZShsaW5lTnVtYmVyKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdWxsTm9kZShsb2NhdGlvbik7CiAgICAg
fQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHksIGJvb2wg
cHJvcGVydHlIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisg
ICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBwcm9w
ZXJ0eSwgYm9vbCBwcm9wZXJ0eUhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwg
aW50IGVuZCkKICAgICB7Ci0gICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcg
KG1fZ2xvYmFsRGF0YSkgQnJhY2tldEFjY2Vzc29yTm9kZShsaW5lTnVtYmVyLCBiYXNlLCBwcm9w
ZXJ0eSwgcHJvcGVydHlIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5v
ZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJhY2tldEFjY2Vzc29yTm9kZShsb2NhdGlv
biwgYmFzZSwgcHJvcGVydHksIHByb3BlcnR5SGFzQXNzaWdubWVudHMpOwogICAgICAgICBzZXRF
eGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVy
biBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9w
ZXJ0eSwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUq
IGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciogcHJvcGVydHksIGludCBzdGFydCwgaW50
IGRpdm90LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBub2RlID0g
bmV3IChtX2dsb2JhbERhdGEpIERvdEFjY2Vzc29yTm9kZShsaW5lTnVtYmVyLCBiYXNlLCAqcHJv
cGVydHkpOworICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgRG90QWNjZXNzb3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHkpOwogICAgICAgICBz
ZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJl
dHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVSZWdFeHAoaW50
IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXIm
IGZsYWdzLCBpbnQgc3RhcnQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVJlZ0V4cChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBj
b25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50IHN0YXJ0KQogICAgIHsKICAgICAgICAgaWYgKFlh
cnI6OmNoZWNrU3ludGF4KHBhdHRlcm4udXN0cmluZygpKSkKICAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICBSZWdFeHBOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFJlZ0V4cE5v
ZGUobGluZU51bWJlciwgcGF0dGVybiwgZmxhZ3MpOworICAgICAgICBSZWdFeHBOb2RlKiBub2Rl
ID0gbmV3IChtX2dsb2JhbERhdGEpIFJlZ0V4cE5vZGUobG9jYXRpb24sIHBhdHRlcm4sIGZsYWdz
KTsKICAgICAgICAgaW50IHNpemUgPSBwYXR0ZXJuLmxlbmd0aCgpICsgMjsgLy8gKyAyIGZvciB0
aGUgdHdvIC8ncwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgc3Rh
cnQgKyBzaXplLCBzdGFydCArIHNpemUpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAK
LSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTmV3RXhwcihpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3VtZW50cywgaW50IHN0YXJ0LCBpbnQg
ZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU5ld0V4cHIoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50
c05vZGUqIGFyZ3VtZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiAgICAgewot
ICAgICAgICBOZXdFeHByTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBOZXdFeHByTm9k
ZShsaW5lTnVtYmVyLCBleHByLCBhcmd1bWVudHMpOworICAgICAgICBOZXdFeHByTm9kZSogbm9k
ZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBOZXdFeHByTm9kZShsb2NhdGlvbiwgZXhwciwgYXJndW1l
bnRzKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBl
bmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlTmV3RXhwcihpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBz
dGFydCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTmV3RXhwcihjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0
LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgTmV3RXhwck5vZGUobGluZU51bWJlciwgZXhwcik7CisgICAgICAgIE5ld0V4cHJO
b2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIE5ld0V4cHJOb2RlKGxvY2F0aW9uLCBleHBy
KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGVuZCwgZW5kKTsK
ICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZUNvbmRpdGlvbmFsRXhwcihpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIHJocykKKyAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlQ29uZGl0aW9uYWxFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4
cHJlc3Npb25Ob2RlKiByaHMpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIENvbmRpdGlvbmFsTm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24sIGxocywgcmhzKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBDb25kaXRpb25hbE5vZGUobG9jYXRpb24s
IGNvbmRpdGlvbiwgbGhzLCByaHMpOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVBc3NpZ25SZXNvbHZlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
RXhwcmVzc2lvbk5vZGUqIHJocywgYm9vbCByaHNIYXNBc3NpZ25tZW50LCBpbnQgc3RhcnQsIGlu
dCBkaXZvdCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXNzaWduUmVzb2x2
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgRXhwcmVzc2lvbk5vZGUqIHJocywgYm9vbCByaHNIYXNBc3NpZ25tZW50LCBpbnQgc3RhcnQs
IGludCBkaXZvdCwgaW50IGVuZCkKICAgICB7CiAgICAgICAgIGlmIChyaHMtPmlzRnVuY0V4cHJO
b2RlKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihyaHMpLT5ib2R5
KCktPnNldEluZmVycmVkTmFtZShpZGVudCk7Ci0gICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBu
b2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnblJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlk
ZW50LCByaHMsIHJoc0hhc0Fzc2lnbm1lbnQpOworICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSog
bm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25SZXNvbHZlTm9kZShsb2NhdGlvbiwgaWRl
bnQsIHJocywgcmhzSGFzQXNzaWdubWVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9u
KG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQog
Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUZ1bmN0aW9uRXhwcihpbnQgbGluZU51bWJlciwg
Y29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVy
Tm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGlu
dCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNy
ZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyKiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0ZXJOb2RlKiBw
YXJhbWV0ZXJzLCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlT
dGFydExpbmUsIGludCBib2R5RW5kTGluZSkKICAgICB7Ci0gICAgICAgIEZ1bmNFeHByTm9kZSog
cmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNFeHByTm9kZShsaW5lTnVtYmVyLCAqbmFt
ZSwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VC
cmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtZXRlcnMpOwotICAgICAgICBib2R5LT5zZXRM
b2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUpOworICAgICAgICBGdW5jRXhwck5vZGUqIHJl
c3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpuYW1lLCBi
b2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNl
UG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7CisgICAgICAgIGJvZHktPnNldExvYyhi
b2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGVGdW5jdGlv
bkJvZHkoaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQorICAgIEZ1bmN0aW9u
Qm9keU5vZGUqIGNyZWF0ZUZ1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBib29sIGluU3RyaWN0Q29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBGdW5jdGlv
bkJvZHlOb2RlOjpjcmVhdGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBpblN0cmljdENvbnRl
eHQpOworICAgICAgICByZXR1cm4gRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKG1fZ2xvYmFsRGF0
YSwgbG9jYXRpb24sIGluU3RyaWN0Q29udGV4dCk7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRl
IDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoaW50IGxp
bmVOdW1iZXIsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1l
LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVu
QnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlF
bmRMaW5lKQorICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9y
U2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlO
b2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBh
cmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3Nl
QnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCiAgICAgewogICAg
ICAgICBBU1NFUlQobmFtZSk7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBi
b2R5RW5kTGluZSk7CisgICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5k
TGluZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgYm9keS0+c2V0SW5mZXJyZWROYW1lKCpu
YW1lKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5vZGUobV9n
bG9iYWxEYXRhLCAqbmFtZSwgbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNFeHByTm9kZShsaW5lTnVt
YmVyLCBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBib2R5LCBt
X3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBi
b2R5U3RhcnRMaW5lKSwgcGFyYW1zKSwgdHlwZSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgUHJvcGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwgKm5hbWUsIG5ldyAobV9nbG9iYWxE
YXRhKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+
bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJh
Y2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbXMpLCB0eXBlKTsKICAg
ICB9CiAgICAgCi0gICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVy
T3JTZXR0ZXJQcm9wZXJ0eShKU0dsb2JhbERhdGEqLCBpbnQgbGluZU51bWJlciwgUHJvcGVydHlO
b2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0
aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBp
bnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQorICAgIHRlbXBsYXRlIDxib29sPiBQ
cm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoSlNHbG9iYWxEYXRhKiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUs
IGRvdWJsZSBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJv
ZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGlu
ZSwgaW50IGJvZHlFbmRMaW5lKQogICAgIHsKLSAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFy
dExpbmUsIGJvZHlFbmRMaW5lKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQ
cm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCBuYW1lLCBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4
cHJOb2RlKGxpbmVOdW1iZXIsIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50
aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNs
b3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbXMpLCB0eXBlKTsKKyAgICAgICAgYm9k
eS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERh
dGEsIG5hbWUsIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIG1fZ2xv
YmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29k
ZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExp
bmUpLCBwYXJhbXMpLCB0eXBlKTsKICAgICB9CiAKICAgICBBcmd1bWVudHNOb2RlKiBjcmVhdGVB
cmd1bWVudHMoKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRzTm9kZSgpOyB9
CiAgICAgQXJndW1lbnRzTm9kZSogY3JlYXRlQXJndW1lbnRzKEFyZ3VtZW50TGlzdE5vZGUqIGFy
Z3MpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudHNOb2RlKGFyZ3MpOyB9Ci0g
ICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRzTGlzdChpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGFyZykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50
TGlzdE5vZGUobGluZU51bWJlciwgYXJnKTsgfQotICAgIEFyZ3VtZW50TGlzdE5vZGUqIGNyZWF0
ZUFyZ3VtZW50c0xpc3QoaW50IGxpbmVOdW1iZXIsIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MsIEV4
cHJlc3Npb25Ob2RlKiBhcmcpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudExp
c3ROb2RlKGxpbmVOdW1iZXIsIGFyZ3MsIGFyZyk7IH0KKyAgICBBcmd1bWVudExpc3ROb2RlKiBj
cmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBhcmcpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudExpc3RO
b2RlKGxvY2F0aW9uLCBhcmcpOyB9CisgICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1l
bnRzTGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBBcmd1bWVudExpc3ROb2Rl
KiBhcmdzLCBFeHByZXNzaW9uTm9kZSogYXJnKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
QXJndW1lbnRMaXN0Tm9kZShsb2NhdGlvbiwgYXJncywgYXJnKTsgfQogCiAgICAgdGVtcGxhdGUg
PGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogcHJv
cGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUp
CiAgICAgewpAQCAtMjk0LDggKzI5NCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCAqcHJvcGVydHlOYW1lLCBu
b2RlLCB0eXBlKTsKICAgICB9CiAgICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3Jl
YXRlUHJvcGVydHkoSlNHbG9iYWxEYXRhKiwgZG91YmxlIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lv
bk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlKSB7IHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgUHJvcGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBub2RlLCB0
eXBlKTsgfQotICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChpbnQgbGlu
ZU51bWJlciwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0eSkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIFByb3BlcnR5TGlzdE5vZGUobGluZU51bWJlciwgcHJvcGVydHkpOyB9Ci0gICAgUHJvcGVy
dHlMaXN0Tm9kZSogY3JlYXRlUHJvcGVydHlMaXN0KGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5v
ZGUqIHByb3BlcnR5LCBQcm9wZXJ0eUxpc3ROb2RlKiB0YWlsKSB7IHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgUHJvcGVydHlMaXN0Tm9kZShsaW5lTnVtYmVyLCBwcm9wZXJ0eSwgdGFpbCk7IH0K
KyAgICBQcm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0eSkgeyByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIFByb3BlcnR5TGlzdE5vZGUobG9jYXRpb24sIHByb3BlcnR5KTsgfQorICAg
IFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5LCBQcm9wZXJ0eUxpc3ROb2RlKiB0
YWlsKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlMaXN0Tm9kZShsb2NhdGlv
biwgcHJvcGVydHksIHRhaWwpOyB9CiAKICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExp
c3QoaW50IGVsaXNpb25zLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIEVsZW1lbnROb2RlKGVsaXNpb25zLCBleHByKTsgfQogICAgIEVsZW1lbnROb2Rl
KiBjcmVhdGVFbGVtZW50TGlzdChFbGVtZW50Tm9kZSogZWxlbXMsIGludCBlbGlzaW9ucywgRXhw
cmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFbGVtZW50Tm9k
ZShlbGVtcywgZWxpc2lvbnMsIGV4cHIpOyB9CkBAIC0zMDksMTkxICszMDksMTkxIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cyhGdW5jdGlvbkJvZHlOb2RlKiBub2RlKSB7
IG5vZGUtPnNldFVzZXNBcmd1bWVudHMoKTsgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRl
RnVuY0RlY2xTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUs
IEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcnMsIGludCBv
cGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJv
ZHlFbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIEZ1
bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcnMsIGludCBvcGVu
QnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlF
bmRMaW5lKQogICAgIHsKLSAgICAgICAgRnVuY0RlY2xOb2RlKiBkZWNsID0gbmV3IChtX2dsb2Jh
bERhdGEpIEZ1bmNEZWNsTm9kZShsaW5lTnVtYmVyLCAqbmFtZSwgYm9keSwgbV9zb3VyY2VDb2Rl
LT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGlu
ZSksIHBhcmFtZXRlcnMpOworICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgRnVuY0RlY2xOb2RlKGxvY2F0aW9uLCAqbmFtZSwgYm9keSwgbV9zb3VyY2VDb2Rl
LT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGlu
ZSksIHBhcmFtZXRlcnMpOwogICAgICAgICBpZiAoKm5hbWUgPT0gbV9nbG9iYWxEYXRhLT5wcm9w
ZXJ0eU5hbWVzLT5hcmd1bWVudHMpCiAgICAgICAgICAgICB1c2VzQXJndW1lbnRzKCk7CiAgICAg
ICAgIG1fc2NvcGUubV9mdW5jRGVjbGFyYXRpb25zLT5kYXRhLmFwcGVuZChkZWNsLT5ib2R5KCkp
OwotICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUpOworICAg
ICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUsIGxvY2F0aW9uLmNv
bHVtbik7CiAgICAgICAgIHJldHVybiBkZWNsOwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZUJsb2NrU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBKU0M6OlNvdXJjZUVsZW1lbnRz
KiBlbGVtZW50cywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlQmxvY2tTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
SlNDOjpTb3VyY2VFbGVtZW50cyogZWxlbWVudHMsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5l
KQogICAgIHsKLSAgICAgICAgQmxvY2tOb2RlKiBibG9jayA9IG5ldyAobV9nbG9iYWxEYXRhKSBC
bG9ja05vZGUobGluZU51bWJlciwgZWxlbWVudHMpOwotICAgICAgICBibG9jay0+c2V0TG9jKHN0
YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIEJsb2NrTm9kZSogYmxvY2sgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgQmxvY2tOb2RlKGxvY2F0aW9uLCBlbGVtZW50cyk7CisgICAgICAgIGJsb2NrLT5z
ZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1
cm4gYmxvY2s7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRXhwclN0YXRlbWVu
dChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVu
ZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVFeHByU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBl
bmQpCiAgICAgewotICAgICAgICBFeHByU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2ds
b2JhbERhdGEpIEV4cHJTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGV4cHIpOwotICAgICAgICBy
ZXN1bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUqIHJl
c3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBFeHByU3RhdGVtZW50Tm9kZShsb2NhdGlvbiwgZXhw
cik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGxvY2F0aW9uLmNvbHVtbik7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3Jl
YXRlSWZTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24s
IFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywg
aW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgSWZOb2RlKiByZXN1bHQgPSBuZXcg
KG1fZ2xvYmFsRGF0YSkgSWZOb2RlKGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrKTsK
LSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCk7CisgICAgICAgIElmTm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIElmTm9kZShsb2NhdGlvbiwgY29uZGl0aW9uLCB0cnVl
QmxvY2spOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBsb2NhdGlvbi5jb2x1
bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZUlmU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0
aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnVlQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZhbHNlQmxvY2ss
IGludCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVJZlN0YXRlbWVu
dChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogY29uZGl0
aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnVlQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZhbHNlQmxvY2ss
IGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIElmTm9kZSogcmVzdWx0ID0gbmV3
IChtX2dsb2JhbERhdGEpIElmRWxzZU5vZGUobGluZU51bWJlciwgY29uZGl0aW9uLCB0cnVlQmxv
Y2ssIGZhbHNlQmxvY2spOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAg
ICAgICAgSWZOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSWZFbHNlTm9kZShsb2Nh
dGlvbiwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIGZhbHNlQmxvY2spOworICAgICAgICByZXN1bHQt
PnNldExvYyhzdGFydCwgZW5kLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckxvb3AoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRp
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGJv
b2wgYiwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckxv
b3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGluaXRp
YWxpemVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBFeHByZXNzaW9uTm9kZSogaXRlciwg
U3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgYm9vbCBiLCBpbnQgc3RhcnQsIGludCBlbmQpCiAg
ICAgewotICAgICAgICBGb3JOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9yTm9k
ZShsaW5lTnVtYmVyLCBpbml0aWFsaXplciwgY29uZGl0aW9uLCBpdGVyLCBzdGF0ZW1lbnRzLCBi
KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCk7CisgICAgICAgIEZvck5vZGUq
IHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JOb2RlKGxvY2F0aW9uLCBpbml0aWFsaXpl
ciwgY29uZGl0aW9uLCBpdGVyLCBzdGF0ZW1lbnRzLCBiKTsKKyAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIs
IEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgc3Rh
cnQsIGludCBkaXZvdCwgaW50IGVuZCwgaW50IGluaXRTdGFydCwgaW50IGluaXRFbmQsIGludCBz
dGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9v
cChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3Rh
dGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQsIGlu
dCBpbml0U3RhcnQsIGludCBpbml0RW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAg
ICB7Ci0gICAgICAgIEZvckluTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZvcklu
Tm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsICppZGVudCwgaW5pdGlhbGl6ZXIsIGl0ZXIs
IHN0YXRlbWVudHMsIGluaXRTdGFydCwgaW5pdFN0YXJ0IC0gc3RhcnQsIGluaXRFbmQgLSBpbml0
U3RhcnQpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAg
ICAgICBGb3JJbk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JJbk5vZGUobV9n
bG9iYWxEYXRhLCBsb2NhdGlvbiwgKmlkZW50LCBpbml0aWFsaXplciwgaXRlciwgc3RhdGVtZW50
cywgaW5pdFN0YXJ0LCBpbml0U3RhcnQgLSBzdGFydCwgaW5pdEVuZCAtIGluaXRTdGFydCk7Cisg
ICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY29sdW1u
KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBzdGFydCwgZGl2b3QgKyAx
LCBlbmQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5v
ZGUqIGNyZWF0ZUZvckluTG9vcChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxocywg
RXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGludCBlU3Rh
cnQsIGludCBlRGl2b3QsIGludCBlRW5kLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2Rl
KiBzdGF0ZW1lbnRzLCBpbnQgZVN0YXJ0LCBpbnQgZURpdm90LCBpbnQgZUVuZCwgaW50IHN0YXJ0
LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgRm9ySW5Ob2RlKG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgbGhzLCBpdGVyLCBz
dGF0ZW1lbnRzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCk7CisgICAgICAg
IEZvckluTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZvckluTm9kZShtX2dsb2Jh
bERhdGEsIGxvY2F0aW9uLCBsaHMsIGl0ZXIsIHN0YXRlbWVudHMpOworICAgICAgICByZXN1bHQt
PnNldExvYyhzdGFydCwgZW5kLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICBzZXRFeGNlcHRp
b25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZURpdm90LCBlRW5kKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVFbXB0eVN0YXRlbWVu
dChpbnQgbGluZU51bWJlcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVtcHR5U3RhdGVt
ZW50Tm9kZShsaW5lTnVtYmVyKTsgfQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUVtcHR5U3Rh
dGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pIHsgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBFbXB0eVN0YXRlbWVudE5vZGUobG9jYXRpb24pOyB9CiAKLSAgICBTdGF0ZW1l
bnROb2RlKiBjcmVhdGVWYXJTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlVmFy
U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewogICAgICAgICBTdGF0ZW1lbnROb2Rl
KiByZXN1bHQ7CiAgICAgICAgIGlmICghZXhwcikKLSAgICAgICAgICAgIHJlc3VsdCA9IG5ldyAo
bV9nbG9iYWxEYXRhKSBFbXB0eVN0YXRlbWVudE5vZGUobGluZU51bWJlcik7CisgICAgICAgICAg
ICByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRW1wdHlTdGF0ZW1lbnROb2RlKGxvY2F0aW9u
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEp
IFZhclN0YXRlbWVudE5vZGUobGluZU51bWJlciwgZXhwcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0
TG9jKHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEp
IFZhclN0YXRlbWVudE5vZGUobG9jYXRpb24sIGV4cHIpOworICAgICAgICByZXN1bHQtPnNldExv
YyhzdGFydCwgZW5kLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVJldHVyblN0YXRlbWVudChpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHJlc3Npb24sIGludCBlU3RhcnQsIGludCBlRW5k
LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVS
ZXR1cm5TdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGV4cHJlc3Npb24sIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBp
bnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIFJldHVybk5vZGUqIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBSZXR1cm5Ob2RlKGxpbmVOdW1iZXIsIGV4cHJlc3Npb24pOworICAgICAgICBS
ZXR1cm5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmV0dXJuTm9kZShsb2NhdGlv
biwgZXhwcmVzc2lvbik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0
YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRM
aW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlv
bi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZUJyZWFrU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgZVN0YXJ0LCBp
bnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlQnJlYWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50
IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAg
ICAgICAgQnJlYWtOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJlYWtOb2RlKG1f
Z2xvYmFsRGF0YSwgbGluZU51bWJlcik7CisgICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3
IChtX2dsb2JhbERhdGEpIEJyZWFrTm9kZShtX2dsb2JhbERhdGEsIGxvY2F0aW9uKTsKICAgICAg
ICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQpOwotICAg
ICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXN1bHQt
PnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQnJlYWtTdGF0
ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgZVN0YXJ0
LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlQnJlYWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRM
aW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3
IChtX2dsb2JhbERhdGEpIEJyZWFrTm9kZShsaW5lTnVtYmVyLCAqaWRlbnQpOworICAgICAgICBC
cmVha05vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBCcmVha05vZGUobG9jYXRpb24s
ICppZGVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBl
RW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsK
KyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1
bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgZVN0YXJ0LCBpbnQg
ZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3Jl
YXRlQ29udGludWVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50
IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAg
ICAgICAgQ29udGludWVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29udGludWVO
b2RlKG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlcik7CisgICAgICAgIENvbnRpbnVlTm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnRpbnVlTm9kZShtX2dsb2JhbERhdGEsIGxvY2F0
aW9uKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQs
IGVFbmQpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAg
ICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3Jl
YXRlQ29udGludWVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlk
ZW50LCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisg
ICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBlU3RhcnQsIGlu
dCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIENvbnRp
bnVlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnRpbnVlTm9kZShsaW5lTnVt
YmVyLCAqaWRlbnQpOworICAgICAgICBDb250aW51ZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9i
YWxEYXRhKSBDb250aW51ZU5vZGUobG9jYXRpb24sICppZGVudCk7CiAgICAgICAgIHNldEV4Y2Vw
dGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0
LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3Rh
cnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVRyeVN0YXRlbWVudChpbnQgbGlu
ZU51bWJlciwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
LCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2ss
IGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVRy
eVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2Rl
KiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNo
QmxvY2ssIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jaywgaW50IHN0YXJ0TGluZSwgaW50IGVu
ZExpbmUpCiAgICAgewotICAgICAgICBUcnlOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgVHJ5Tm9kZShsaW5lTnVtYmVyLCB0cnlCbG9jaywgKmlkZW50LCBjYXRjaEJsb2NrLCBmaW5h
bGx5QmxvY2spOworICAgICAgICBUcnlOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
VHJ5Tm9kZShsb2NhdGlvbiwgdHJ5QmxvY2ssICppZGVudCwgY2F0Y2hCbG9jaywgZmluYWxseUJs
b2NrKTsKICAgICAgICAgaWYgKGNhdGNoQmxvY2spCiAgICAgICAgICAgICB1c2VzQ2F0Y2goKTsK
LSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmVz
dWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVN3aXRj
aFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIENsYXVzZUxp
c3ROb2RlKiBmaXJzdENsYXVzZXMsIENhc2VDbGF1c2VOb2RlKiBkZWZhdWx0Q2xhdXNlLCBDbGF1
c2VMaXN0Tm9kZSogc2Vjb25kQ2xhdXNlcywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisg
ICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlU3dpdGNoU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBDbGF1c2VMaXN0Tm9kZSogZmly
c3RDbGF1c2VzLCBDYXNlQ2xhdXNlTm9kZSogZGVmYXVsdENsYXVzZSwgQ2xhdXNlTGlzdE5vZGUq
IHNlY29uZENsYXVzZXMsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKICAgICAg
ICAgQ2FzZUJsb2NrTm9kZSogY2FzZXMgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ2FzZUJsb2NrTm9k
ZShmaXJzdENsYXVzZXMsIGRlZmF1bHRDbGF1c2UsIHNlY29uZENsYXVzZXMpOwotICAgICAgICBT
d2l0Y2hOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgU3dpdGNoTm9kZShsaW5lTnVt
YmVyLCBleHByLCBjYXNlcyk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5k
TGluZSk7CisgICAgICAgIFN3aXRjaE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBT
d2l0Y2hOb2RlKGxvY2F0aW9uLCBleHByLCBjYXNlcyk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9j
KHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaGlsZVN0YXRlbWVudChp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRl
bWVudCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3Jl
YXRlV2hpbGVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0TGluZSwg
aW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBXaGlsZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBXaGlsZU5vZGUobGluZU51bWJlciwgZXhwciwgc3RhdGVtZW50KTsKLSAgICAg
ICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgV2hpbGVOb2Rl
KiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgV2hpbGVOb2RlKGxvY2F0aW9uLCBleHByLCBz
dGF0ZW1lbnQpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxv
Y2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlRG9XaGlsZVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50LCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0TGluZSwg
aW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRG9XaGlsZVN0YXRlbWVudChj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQs
IEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7
Ci0gICAgICAgIERvV2hpbGVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRG9XaGls
ZU5vZGUobGluZU51bWJlciwgc3RhdGVtZW50LCBleHByKTsKLSAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgRG9XaGlsZU5vZGUqIHJlc3VsdCA9IG5l
dyAobV9nbG9iYWxEYXRhKSBEb1doaWxlTm9kZShsb2NhdGlvbiwgc3RhdGVtZW50LCBleHByKTsK
KyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1
bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZUxhYmVsU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlTGFiZWxTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUqIHN0YXRl
bWVudCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgTGFiZWxOb2RlKiByZXN1
bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTGFiZWxOb2RlKGxpbmVOdW1iZXIsICppZGVudCwgc3Rh
dGVtZW50KTsKKyAgICAgICAgTGFiZWxOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
TGFiZWxOb2RlKGxvY2F0aW9uLCAqaWRlbnQsIHN0YXRlbWVudCk7CiAgICAgICAgIHNldEV4Y2Vw
dGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGVuZCwgZW5kKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaXRoU3RhdGVtZW50KGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVt
ZW50LCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAg
IFN0YXRlbWVudE5vZGUqIGNyZWF0ZVdpdGhTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVu
dCwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7
CiAgICAgICAgIHVzZXNXaXRoKCk7Ci0gICAgICAgIFdpdGhOb2RlKiByZXN1bHQgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgV2l0aE5vZGUobGluZU51bWJlciwgZXhwciwgc3RhdGVtZW50LCBlbmQsIGVu
ZCAtIHN0YXJ0KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsK
KyAgICAgICAgV2l0aE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBXaXRoTm9kZShs
b2NhdGlvbiwgZXhwciwgc3RhdGVtZW50LCBlbmQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgcmVz
dWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0gICAgCiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSogY3Jl
YXRlVGhyb3dTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBp
bnQgc3RhcnQsIGludCBlbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZVRocm93U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBzdGFy
dExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgVGhyb3dOb2RlKiByZXN1bHQgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgVGhyb3dOb2RlKGxpbmVOdW1iZXIsIGV4cHIpOwotICAgICAgICBy
ZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICBUaHJvd05vZGUqIHJl
c3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBUaHJvd05vZGUobG9jYXRpb24sIGV4cHIpOworICAg
ICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7
CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGVuZCwgZW5kKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlRGVidWdnZXIoaW50IGxpbmVOdW1iZXIsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5l
KQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZURlYnVnZ2VyKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAg
RGVidWdnZXJTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVidWdn
ZXJTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFy
dExpbmUsIGVuZExpbmUpOworICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5vZGUqIHJlc3VsdCA9
IG5ldyAobV9nbG9iYWxEYXRhKSBEZWJ1Z2dlclN0YXRlbWVudE5vZGUobG9jYXRpb24pOworICAg
ICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZUNvbnN0U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBDb25zdERlY2xOb2RlKiBkZWNs
cywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRl
Q29uc3RTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQ29uc3REZWNs
Tm9kZSogZGVjbHMsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAg
Q29uc3RTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3RTdGF0
ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGRlY2xzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3Rh
cnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgQ29uc3RTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3RTdGF0ZW1lbnROb2RlKGxvY2F0aW9uLCBkZWNscyk7Cisg
ICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY29sdW1u
KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBDb25zdERlY2xOb2RlKiBh
cHBlbmRDb25zdERlY2woaW50IGxpbmVOdW1iZXIsIENvbnN0RGVjbE5vZGUqIHRhaWwsIGNvbnN0
IElkZW50aWZpZXIqIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikKKyAgICBDb25z
dERlY2xOb2RlKiBhcHBlbmRDb25zdERlY2woY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgQ29uc3REZWNsTm9kZSogdGFpbCwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRXhwcmVzc2lv
bk5vZGUqIGluaXRpYWxpemVyKQogICAgIHsKLSAgICAgICAgQ29uc3REZWNsTm9kZSogcmVzdWx0
ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnN0RGVjbE5vZGUobGluZU51bWJlciwgKm5hbWUsIGlu
aXRpYWxpemVyKTsKKyAgICAgICAgQ29uc3REZWNsTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2Jh
bERhdGEpIENvbnN0RGVjbE5vZGUobG9jYXRpb24sICpuYW1lLCBpbml0aWFsaXplcik7CiAgICAg
ICAgIGlmICh0YWlsKQogICAgICAgICAgICAgdGFpbC0+bV9uZXh0ID0gcmVzdWx0OwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwpAQCAtNTExLDcgKzUxMSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9z
Y29wZS5tX3ZhckRlY2xhcmF0aW9ucy0+ZGF0YS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaWRlbnQs
IGF0dHJzKSk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNvbWJpbmVDb21tYU5vZGVz
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGlzdCwgRXhwcmVzc2lvbk5vZGUqIGlu
aXQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNvbWJpbmVDb21tYU5vZGVzKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsaXN0LCBFeHByZXNzaW9uTm9kZSog
aW5pdCkKICAgICB7CiAgICAgICAgIGlmICghbGlzdCkKICAgICAgICAgICAgIHJldHVybiBpbml0
OwpAQCAtNTE5LDcgKzUxOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHN0YXRpY19jYXN0PENv
bW1hTm9kZSo+KGxpc3QpLT5hcHBlbmQoaW5pdCk7CiAgICAgICAgICAgICByZXR1cm4gbGlzdDsK
ICAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbW1hTm9kZShs
aW5lTnVtYmVyLCBsaXN0LCBpbml0KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBDb21tYU5vZGUobG9jYXRpb24sIGxpc3QsIGluaXQpOwogICAgIH0KIAogICAgIGludCBldmFs
Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2V2YWxDb3VudDsgfQpAQCAtNTQ3LDEwICs1NDcsMTAg
QEAgcHVibGljOgogICAgICAgICBBU1NFUlQob3BlcmFuZFN0YWNrRGVwdGggPj0gMCk7CiAgICAg
ICAgIG1fYmluYXJ5T3BlcmFuZFN0YWNrLnJlc2l6ZShtX2JpbmFyeU9wZXJhbmRTdGFjay5zaXpl
KCkgLSBhbW91bnQpOwogICAgIH0KLSAgICB2b2lkIGFwcGVuZEJpbmFyeU9wZXJhdGlvbihpbnQg
bGluZU51bWJlciwgaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50JiwgY29uc3QgQmluYXJ5T3Bl
cmFuZCYgbGhzLCBjb25zdCBCaW5hcnlPcGVyYW5kJiByaHMpCisgICAgdm9pZCBhcHBlbmRCaW5h
cnlPcGVyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50JiBvcGVyYW5k
U3RhY2tEZXB0aCwgaW50JiwgY29uc3QgQmluYXJ5T3BlcmFuZCYgbGhzLCBjb25zdCBCaW5hcnlP
cGVyYW5kJiByaHMpCiAgICAgewogICAgICAgICBvcGVyYW5kU3RhY2tEZXB0aCsrOwotICAgICAg
ICBtX2JpbmFyeU9wZXJhbmRTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIobWFrZUJpbmFyeU5v
ZGUobGluZU51bWJlciwgbV9iaW5hcnlPcGVyYXRvclN0YWNrLmxhc3QoKS5maXJzdCwgbGhzLCBy
aHMpLCBCaW5hcnlPcEluZm8obGhzLnNlY29uZCwgcmhzLnNlY29uZCkpKTsKKyAgICAgICAgbV9i
aW5hcnlPcGVyYW5kU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG1ha2VCaW5hcnlOb2RlKGxv
Y2F0aW9uLCBtX2JpbmFyeU9wZXJhdG9yU3RhY2subGFzdCgpLmZpcnN0LCBsaHMsIHJocyksIEJp
bmFyeU9wSW5mbyhsaHMuc2Vjb25kLCByaHMuc2Vjb25kKSkpOwogICAgIH0KICAgICB2b2lkIG9w
ZXJhdG9yU3RhY2tBcHBlbmQoaW50JiBvcGVyYXRvclN0YWNrRGVwdGgsIGludCBvcCwgaW50IHBy
ZWNlZGVuY2UpCiAgICAgewpAQCAtNTkyLDkgKzU5Miw5IEBAIHB1YmxpYzoKICAgICAgICAgbV9h
c3NpZ25tZW50SW5mb1N0YWNrLmFwcGVuZChBc3NpZ25tZW50SW5mbyhub2RlLCBzdGFydCwgZGl2
b3QsIGFzc2lnbm1lbnRDb3VudCwgb3ApKTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlQXNzaWdubWVudChpbnQgbGluZU51bWJlciwgaW50JiBhc3NpZ25tZW50U3RhY2tEZXB0
aCwgRXhwcmVzc2lvbk5vZGUqIHJocywgaW50IGluaXRpYWxBc3NpZ25tZW50Q291bnQsIGludCBj
dXJyZW50QXNzaWdubWVudENvdW50LCBpbnQgbGFzdFRva2VuRW5kKQorICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVBc3NpZ25tZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGlu
dCYgYXNzaWdubWVudFN0YWNrRGVwdGgsIEV4cHJlc3Npb25Ob2RlKiByaHMsIGludCBpbml0aWFs
QXNzaWdubWVudENvdW50LCBpbnQgY3VycmVudEFzc2lnbm1lbnRDb3VudCwgaW50IGxhc3RUb2tl
bkVuZCkKICAgICB7Ci0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiByZXN1bHQgPSBtYWtlQXNzaWdu
Tm9kZShsaW5lTnVtYmVyLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fbm9kZSwgbV9h
c3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX29wLCByaHMsIG1fYXNzaWdubWVudEluZm9TdGFj
ay5sYXN0KCkubV9pbml0QXNzaWdubWVudHMgIT0gaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9h
c3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX2luaXRBc3NpZ25tZW50cyAhPSBjdXJyZW50QXNz
aWdubWVudENvdW50LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fc3RhcnQsIG1fYXNz
aWdubWVudEluZm9TdGFjay5sYXN0KCkubV9kaXZvdCArIDEsIGxhc3RUb2tlbkVuZCk7CisgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiByZXN1bHQgPSBtYWtlQXNzaWduTm9kZShsb2NhdGlvbiwgbV9h
c3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX25vZGUsIG1fYXNzaWdubWVudEluZm9TdGFjay5s
YXN0KCkubV9vcCwgcmhzLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1faW5pdEFzc2ln
bm1lbnRzICE9IGluaXRpYWxBc3NpZ25tZW50Q291bnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5s
YXN0KCkubV9pbml0QXNzaWdubWVudHMgIT0gY3VycmVudEFzc2lnbm1lbnRDb3VudCwgbV9hc3Np
Z25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX3N0YXJ0LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFz
dCgpLm1fZGl2b3QgKyAxLCBsYXN0VG9rZW5FbmQpOwogICAgICAgICBtX2Fzc2lnbm1lbnRJbmZv
U3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICBhc3NpZ25tZW50U3RhY2tEZXB0aC0tOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjM1LDkgKzYzNSw5IEBAIHByaXZhdGU6CiAgICAgICAg
IG1fZXZhbENvdW50Kys7CiAgICAgICAgIG1fc2NvcGUubV9mZWF0dXJlcyB8PSBFdmFsRmVhdHVy
ZTsKICAgICB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bWJlcihpbnQgbGluZU51bWJl
ciwgZG91YmxlIGQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bWJlcihjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBkb3VibGUgZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgTnVtYmVyTm9kZShsaW5lTnVtYmVyLCBkKTsKKyAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdW1iZXJOb2RlKGxvY2F0aW9uLCBkKTsKICAgICB9CiAg
ICAgCiAgICAgSlNHbG9iYWxEYXRhKiBtX2dsb2JhbERhdGE7CkBAIC02NTAsMzMgKzY1MCwzMyBA
QCBwcml2YXRlOgogICAgIGludCBtX2V2YWxDb3VudDsKIH07CiAKLUV4cHJlc3Npb25Ob2RlKiBB
U1RCdWlsZGVyOjptYWtlVHlwZU9mTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVR5cGVPZk5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCiB7CiAgICAg
aWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2
ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgVHlwZU9mUmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRl
bnRpZmllcigpKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUeXBlT2ZSZXNv
bHZlTm9kZShsb2NhdGlvbiwgcmVzb2x2ZS0+aWRlbnRpZmllcigpKTsKICAgICB9Ci0gICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUeXBlT2ZWYWx1ZU5vZGUobGluZU51bWJlciwgZXhwcik7
CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUeXBlT2ZWYWx1ZU5vZGUobG9jYXRpb24s
IGV4cHIpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZURlbGV0ZU5vZGUo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBkaXZv
dCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGVsZXRlTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50
IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiB7CiAgICAgaWYgKCFleHByLT5pc0xvY2F0aW9u
KCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlVmFsdWVOb2RlKGxp
bmVOdW1iZXIsIGV4cHIpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0
ZVZhbHVlTm9kZShsb2NhdGlvbiwgZXhwcik7CiAgICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUo
KSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVO
b2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlUmVz
b2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3Qg
LSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IERlbGV0ZVJlc29sdmVOb2RlKGxvY2F0aW9uLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIGRpdm90
LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIGlmIChleHByLT5pc0Jy
YWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFj
a2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZUJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGJy
YWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0
LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRl
QnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0
KCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIEFTU0VS
VChleHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9
IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgIHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgRGVsZXRlRG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5p
ZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEZWxldGVEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2Uo
KSwgZG90LT5pZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7
CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTmVnYXRlTm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIG4pCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZU5lZ2F0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIG4pCiB7CiAgICAgaWYgKG4tPmlzTnVtYmVyKCkpIHsKICAgICAgICAgTnVtYmVyTm9k
ZSogbnVtYmVyTm9kZSA9IHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihuKTsKQEAgLTY4NCwxMjgg
KzY4NCwxMjggQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VOZWdhdGVOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbikKICAgICAgICAgcmV0dXJuIG51bWJlck5v
ZGU7CiAgICAgfQogCi0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOZWdhdGVOb2RlKGxp
bmVOdW1iZXIsIG4pOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTmVnYXRlTm9kZShs
b2NhdGlvbiwgbik7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0d2lz
ZU5vdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorRXhwcmVzc2lv
bk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXR3aXNlTm90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKIHsKICAgICBpZiAoZXhwci0+aXNO
dW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB+dG9JbnQz
MihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwciktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIEJpdHdpc2VOb3ROb2RlKGxpbmVOdW1iZXIsIGV4cHIpOworICAg
ICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxvY2F0aW9uLCB+dG9JbnQzMihzdGF0aWNfY2FzdDxO
dW1iZXJOb2RlKj4oZXhwciktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEJpdHdpc2VOb3ROb2RlKGxvY2F0aW9uLCBleHByKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUq
IEFTVEJ1aWxkZXI6Om1ha2VNdWx0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
K0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTXVsdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBleHByMSA9IGV4cHIxLT5z
dHJpcFVuYXJ5UGx1cygpOwogICAgIGV4cHIyID0gZXhwcjItPnN0cmlwVW5hcnlQbHVzKCk7CiAK
ICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAg
IHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIxKS0+dmFsdWUoKSAqIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVl
KCkpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxO
dW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpICogc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4
cHIyKS0+dmFsdWUoKSk7CiAKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgc3RhdGljX2Nh
c3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSA9PSAxKQotICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobGluZU51bWJlciwgZXhwcjIpOworICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobG9jYXRpb24sIGV4cHIy
KTsKIAogICAgIGlmIChleHByMi0+aXNOdW1iZXIoKSAmJiBzdGF0aWNfY2FzdDxOdW1iZXJOb2Rl
Kj4oZXhwcjIpLT52YWx1ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVtYmVyLCBleHByMSk7CisgICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsb2NhdGlvbiwgZXhwcjEpOwogCi0gICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBNdWx0Tm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIs
IHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTXVs
dE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAK
LUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGl2Tm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGl2Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGV4
cHIxID0gZXhwcjEtPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAgZXhwcjIgPSBleHByMi0+c3RyaXBV
bmFyeVBsdXMoKTsKIAogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1i
ZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBzdGF0aWNfY2Fz
dDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpIC8gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIyKS0+dmFsdWUoKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEaXZOb2Rl
KGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAg
IHJldHVybiBjcmVhdGVOdW1iZXIobG9jYXRpb24sIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihl
eHByMSktPnZhbHVlKCkgLyBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgp
KTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERpdk5vZGUobG9jYXRpb24sIGV4cHIx
LCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RC
dWlsZGVyOjptYWtlTW9kTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJl
c3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTW9kTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0cmlwVW5h
cnlQbHVzKCk7CiAgICAgZXhwcjIgPSBleHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKICAgICAKICAg
ICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJl
dHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgZm1vZChzdGF0aWNfY2FzdDxOdW1iZXJOb2Rl
Kj4oZXhwcjEpLT52YWx1ZSgpLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1
ZSgpKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBNb2ROb2RlKGxpbmVOdW1iZXIs
IGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVh
dGVOdW1iZXIobG9jYXRpb24sIGZtb2Qoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+
dmFsdWUoKSwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOworICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTW9kTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIy
LCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6
Om1ha2VBZGROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5v
ZGUqIEFTVEJ1aWxkZXI6Om1ha2VBZGROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIy
LT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHN0
YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgKyBzdGF0aWNfY2FzdDxOdW1i
ZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IEFkZE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8TnVtYmVy
Tm9kZSo+KGV4cHIxKS0+dmFsdWUoKSArIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMikt
PnZhbHVlKCkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQWRkTm9kZShsb2NhdGlv
biwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5v
ZGUqIEFTVEJ1aWxkZXI6Om1ha2VTdWJOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VTdWJOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgZXhwcjEgPSBleHByMS0+
c3RyaXBVbmFyeVBsdXMoKTsKICAgICBleHByMiA9IGV4cHIyLT5zdHJpcFVuYXJ5UGx1cygpOwog
CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAg
ICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUq
PihleHByMSktPnZhbHVlKCkgLSBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1
ZSgpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN1Yk5vZGUobGluZU51bWJlciwg
ZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0
ZU51bWJlcihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUo
KSAtIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOworICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgU3ViTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VM
ZWZ0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5v
ZGUqIEFTVEJ1aWxkZXI6Om1ha2VMZWZ0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYm
IGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1i
ZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPDwg
KHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgx
ZikpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVmdFNoaWZ0Tm9kZShsaW5lTnVt
YmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICByZXR1cm4g
Y3JlYXRlTnVtYmVyKGxvY2F0aW9uLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihl
eHByMSktPnZhbHVlKCkpIDw8ICh0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhw
cjIpLT52YWx1ZSgpKSAmIDB4MWYpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExl
ZnRTaGlmdE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUmlnaHRTaGlmdE5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZVJpZ2h0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJl
cigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3Rh
dGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOwotICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgUmlnaHRTaGlmdE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4
cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihs
b2NhdGlvbiwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgp
KSA+PiAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkg
JiAweDFmKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBSaWdodFNoaWZ0Tm9kZShs
b2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VVUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVVSaWdodFNo
aWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQog
ewogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAg
ICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB0b1VJbnQzMihzdGF0aWNfY2FzdDxO
dW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA+PiAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVt
YmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHBy
MiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobG9j
YXRpb24sIHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkp
ID4+ICh0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSAm
IDB4MWYpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuc2lnbmVkUmlnaHRTaGlm
dE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAK
LUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0T3JOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRPck5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAg
ICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJl
dHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJO
b2RlKj4oZXhwcjEpLT52YWx1ZSgpKSB8IHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIyKS0+dmFsdWUoKSkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0T3JO
b2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAg
ICAgIHJldHVybiBjcmVhdGVOdW1iZXIobG9jYXRpb24sIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVt
YmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgfCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5v
ZGUqPihleHByMiktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJp
dE9yTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0K
IAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRBbmROb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRB
bmROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7
CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAg
ICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVt
YmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgJiB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5v
ZGUqPihleHByMiktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJp
dEFuZE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgdG9JbnQzMihzdGF0aWNfY2Fz
dDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSAmIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVt
YmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgQml0QW5kTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRYT3JOb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VCaXRYT3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQot
ICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nh
c3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgXiB0b0ludDMyKHN0YXRpY19jYXN0PE51
bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEJpdFhPck5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgdG9JbnQzMihzdGF0
aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSBeIHRvSW50MzIoc3RhdGljX2Nh
c3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOworICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgQml0WE9yTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNh
bGxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZnVuYywgQXJndW1lbnRzTm9k
ZSogYXJncywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSog
QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGZ1bmMsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGludCBz
dGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlmICghZnVuYy0+aXNMb2NhdGlvbigp
KQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbFZhbHVlTm9k
ZShsaW5lTnVtYmVyLCBmdW5jLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbFZhbHVl
Tm9kZShsb2NhdGlvbiwgZnVuYywgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90KTsKICAgICBpZiAoZnVuYy0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVO
b2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihmdW5jKTsKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciA9IHJlc29sdmUtPmlkZW50aWZpZXIoKTsKICAg
ICAgICAgaWYgKGlkZW50aWZpZXIgPT0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFs
KSB7CiAgICAgICAgICAgICB1c2VzRXZhbCgpOwotICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBFdmFsRnVuY3Rpb25DYWxsTm9kZShsaW5lTnVtYmVyLCBhcmdzLCBkaXZvdCwg
ZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBFdmFsRnVuY3Rpb25DYWxsTm9kZShsb2NhdGlvbiwgYXJncywgZGl2b3QsIGRp
dm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50
aWZpZXIsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUobG9jYXRp
b24sIGlkZW50aWZpZXIsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7
CiAgICAgfQogICAgIGlmIChmdW5jLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAg
ICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vz
c29yTm9kZSo+KGZ1bmMpOwotICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSogbm9kZSA9
IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBi
cmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBhcmdzLCBkaXZvdCwgZGl2b3Qg
LSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSog
bm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShsb2NhdGlv
biwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgYXJncywgZGl2b3QsIGRp
dm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lv
bkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZW5kT2Zmc2V0KCkpOwogICAgICAgICBy
ZXR1cm4gbm9kZTsKICAgICB9CkBAIC04MTMsMTE4ICs4MTMsMTE4IEBAIEV4cHJlc3Npb25Ob2Rl
KiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqCiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nl
c3Nvck5vZGUqPihmdW5jKTsKICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKiBub2RlOwogICAgIGlm
IChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmNhbGwp
Ci0gICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5v
ZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZv
dCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBub2RlID0gbmV3IChtX2ds
b2JhbERhdGEpIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwg
ZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZv
dCk7CiAgICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV9nbG9iYWxEYXRhLT5wcm9w
ZXJ0eU5hbWVzLT5hcHBseSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBBcHBs
eUZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAg
ICBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2Nh
dGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3Qg
LSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIGVsc2UKLSAgICAgICAgbm9kZSA9IG5ldyAobV9n
bG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBk
b3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
KTsKKyAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxEb3ROb2Rl
KGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBk
aXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbklu
Zm8oZG90LT5kaXZvdCgpLCBkb3QtPmVuZE9mZnNldCgpKTsKICAgICByZXR1cm4gbm9kZTsKIH0K
IAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaW5hcnlOb2RlKGludCBsaW5lTnVt
YmVyLCBpbnQgdG9rZW4sIHBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+IGxocywg
cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4gcmhzKQorRXhwcmVzc2lvbk5vZGUq
IEFTVEJ1aWxkZXI6Om1ha2VCaW5hcnlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGludCB0b2tlbiwgcGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4gbGhzLCBw
YWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiByaHMpCiB7CiAgICAgc3dpdGNoICh0
b2tlbikgewogICAgIGNhc2UgT1I6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
TG9naWNhbE9wTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgT3BMb2dpY2Fs
T3IpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxPcE5vZGUobG9j
YXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxPcik7CiAKICAgICBjYXNlIEFO
RDoKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMb2dpY2FsT3BOb2RlKGxpbmVO
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxBbmQpOworICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxPcE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwg
cmhzLmZpcnN0LCBPcExvZ2ljYWxBbmQpOwogCiAgICAgY2FzZSBCSVRPUjoKLSAgICAgICAgcmV0
dXJuIG1ha2VCaXRPck5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5z
ZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlQml0T3JOb2RlKGxvY2F0
aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAog
ICAgIGNhc2UgQklUWE9SOgotICAgICAgICByZXR1cm4gbWFrZUJpdFhPck5vZGUobGluZU51bWJl
ciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAg
ICAgIHJldHVybiBtYWtlQml0WE9yTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3Qs
IHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIEJJVEFORDoKLSAgICAgICAg
cmV0dXJuIG1ha2VCaXRBbmROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBy
aHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZUJpdEFuZE5vZGUo
bG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQp
OwogCiAgICAgY2FzZSBFUUVROgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVx
dWFsTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFcXVhbE5vZGUo
bG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQp
OwogCiAgICAgY2FzZSBORToKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOb3RF
cXVhbE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFz
QXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTm90RXF1YWxO
b2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25t
ZW50KTsKIAogICAgIGNhc2UgU1RSRVE6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgU3RyaWN0RXF1YWxOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMu
c2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IFN0cmljdEVxdWFsTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNv
bmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIFNUUk5FUToKLSAgICAgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBOb3RTdHJpY3RFcXVhbE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0
LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgTm90U3RyaWN0RXF1YWxOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3Qs
IHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgTFQ6Ci0g
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVzc05vZGUobGluZU51bWJlciwgbGhz
LmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVzc05vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhz
LmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBHVDoKLSAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBHcmVhdGVyTm9kZShsaW5lTnVtYmVyLCBsaHMu
Zmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBHcmVhdGVyTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCBy
aHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIExFOgotICAg
ICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExlc3NFcU5vZGUobGluZU51bWJlciwgbGhz
LmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVzc0VxTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCBy
aHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIEdFOgotICAg
ICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEdyZWF0ZXJFcU5vZGUobGluZU51bWJlciwg
bGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgR3JlYXRlckVxTm9kZShsb2NhdGlvbiwgbGhzLmZp
cnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIElO
U1RBTkNFT0Y6IHsKLSAgICAgICAgSW5zdGFuY2VPZk5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgSW5zdGFuY2VPZk5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJo
cy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIEluc3RhbmNlT2ZOb2RlKiBub2RlID0g
bmV3IChtX2dsb2JhbERhdGEpIEluc3RhbmNlT2ZOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJo
cy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKICAgICAgICAgc2V0RXhjZXB0aW9u
TG9jYXRpb24obm9kZSwgbGhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5zdGFydCwgcmhzLnNl
Y29uZC5lbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKICAgICBjYXNlIElOVE9L
RU46IHsKLSAgICAgICAgSW5Ob2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEluTm9kZShs
aW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50
KTsKKyAgICAgICAgSW5Ob2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEluTm9kZShsb2Nh
dGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAg
ICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIGxocy5zZWNvbmQuc3RhcnQsIHJocy5z
ZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAg
fQogCiAgICAgY2FzZSBMU0hJRlQ6Ci0gICAgICAgIHJldHVybiBtYWtlTGVmdFNoaWZ0Tm9kZShs
aW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VMZWZ0U2hpZnROb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3Qs
IHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgUlNISUZU
OgotICAgICAgICByZXR1cm4gbWFrZVJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJz
dCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4g
bWFrZVJpZ2h0U2hpZnROb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNl
Y29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgVVJTSElGVDoKLSAgICAgICAgcmV0dXJu
IG1ha2VVUmlnaHRTaGlmdE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJo
cy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlVVJpZ2h0U2hpZnRO
b2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25t
ZW50KTsKIAogICAgIGNhc2UgUExVUzoKLSAgICAgICAgcmV0dXJuIG1ha2VBZGROb2RlKGxpbmVO
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwor
ICAgICAgICByZXR1cm4gbWFrZUFkZE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0
LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBNSU5VUzoKLSAgICAgICAg
cmV0dXJuIG1ha2VTdWJOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMu
c2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZVN1Yk5vZGUobG9jYXRp
b24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAg
ICAgY2FzZSBUSU1FUzoKLSAgICAgICAgcmV0dXJuIG1ha2VNdWx0Tm9kZShsaW5lTnVtYmVyLCBs
aHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAg
cmV0dXJuIG1ha2VNdWx0Tm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5z
ZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIERJVklERToKLSAgICAgICAgcmV0dXJu
IG1ha2VEaXZOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25k
Lmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZURpdk5vZGUobG9jYXRpb24sIGxo
cy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2Fz
ZSBNT0Q6Ci0gICAgICAgIHJldHVybiBtYWtlTW9kTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3Qs
IHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1h
a2VNb2ROb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKICAgICB9CiAgICAgQ1JBU0goKTsKICAgICByZXR1cm4gMDsKIH0KIAotRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogbG9jLCBPcGVyYXRvciBvcCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGJv
b2wgbG9jSGFzQXNzaWdubWVudHMsIGJvb2wgZXhwckhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQs
IGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNz
aWduTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
bG9jLCBPcGVyYXRvciBvcCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGJvb2wgbG9jSGFzQXNzaWdu
bWVudHMsIGJvb2wgZXhwckhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50
IGVuZCkKIHsKICAgICBpZiAoIWxvYy0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIEFzc2lnbkVycm9yTm9kZShsaW5lTnVtYmVyLCBsb2MsIG9wLCBleHBy
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIEFzc2lnbkVycm9yTm9kZShsb2NhdGlvbiwgbG9jLCBvcCwgZXhwciwg
ZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKIAogICAgIGlmIChsb2MtPmlzUmVz
b2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0
PFJlc29sdmVOb2RlKj4obG9jKTsKICAgICAgICAgaWYgKG9wID09IE9wRXF1YWwpIHsKICAgICAg
ICAgICAgIGlmIChleHByLT5pc0Z1bmNFeHByTm9kZSgpKQogICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEZ1bmNFeHByTm9kZSo+KGV4cHIpLT5ib2R5KCktPnNldEluZmVycmVkTmFtZShyZXNv
bHZlLT5pZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2
ZS0+aWRlbnRpZmllcigpLCBleHByLCBleHBySGFzQXNzaWdubWVudHMpOworICAgICAgICAgICAg
QXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2
ZU5vZGUobG9jYXRpb24sIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fzc2ln
bm1lbnRzKTsKICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBk
aXZvdCwgZW5kKTsKICAgICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGxpbmVOdW1i
ZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywg
ZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUobG9jYXRpb24sIHJlc29sdmUtPmlk
ZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0g
c3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICB9CiAgICAgaWYgKGxvYy0+aXNCcmFja2V0QWNjZXNz
b3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRp
Y19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihsb2MpOwogICAgICAgICBpZiAob3AgPT0gT3BF
cXVhbCkKLSAgICAgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduQnJhY2tl
dE5vZGUobGluZU51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwg
ZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgYnJhY2tldC0+ZGl2
b3QoKSwgYnJhY2tldC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBicmFja2V0LT5kaXZvdCgpKTsK
LSAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEp
IFJlYWRNb2RpZnlCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNr
ZXQtPnN1YnNjcmlwdCgpLCBvcCwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3Np
Z25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduQnJhY2tldE5vZGUobG9jYXRpb24sIGJy
YWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGV4cHIsIGxvY0hhc0Fzc2lnbm1l
bnRzLCBleHBySGFzQXNzaWdubWVudHMsIGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPmRpdm90
KCkgLSBzdGFydCwgZW5kIC0gYnJhY2tldC0+ZGl2b3QoKSk7CisgICAgICAgIFJlYWRNb2RpZnlC
cmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5QnJhY2tldE5v
ZGUobG9jYXRpb24sIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBl
eHByLCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3Qg
LSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5m
byhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5lbmRPZmZzZXQoKSk7CiAgICAgICAgIHJldHVy
biBub2RlOwogICAgIH0KQEAgLTkzMyw1NSArOTMzLDU1IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RC
dWlsZGVyOjptYWtlQXNzaWduTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxv
YywKICAgICBpZiAob3AgPT0gT3BFcXVhbCkgewogICAgICAgICBpZiAoZXhwci0+aXNGdW5jRXhw
ck5vZGUoKSkKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGV4cHIpLT5i
b2R5KCktPnNldEluZmVycmVkTmFtZShkb3QtPmlkZW50aWZpZXIoKSk7Ci0gICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduRG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2Uo
KSwgZG90LT5pZGVudGlmaWVyKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZG90LT5kaXZv
dCgpLCBkb3QtPmRpdm90KCkgLSBzdGFydCwgZW5kIC0gZG90LT5kaXZvdCgpKTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25Eb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJh
c2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZG90LT5k
aXZvdCgpLCBkb3QtPmRpdm90KCkgLSBzdGFydCwgZW5kIC0gZG90LT5kaXZvdCgpKTsKICAgICB9
CiAKLSAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWFk
TW9kaWZ5RG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCks
IG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQg
LSBkaXZvdCk7CisgICAgUmVhZE1vZGlmeURvdE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgUmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZp
ZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQs
IGVuZCAtIGRpdm90KTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90
KCksIGRvdC0+ZW5kT2Zmc2V0KCkpOwogICAgIHJldHVybiBub2RlOwogfQogCi1FeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQp
CitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBp
bnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKIHsKICAgICBpZiAoIWV4cHItPmlzTG9jYXRp
b24oKSkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhFcnJvck5vZGUo
bGluZU51bWJlciwgZXhwciwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7
CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4RXJyb3JOb2RlKGxvY2F0
aW9uLCBleHByLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKIAogICAg
IGlmIChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29s
dmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHIpOwotICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIFByZWZpeFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJlc29sdmUtPmlk
ZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4UmVzb2x2ZU5vZGUobG9jYXRpb24s
IHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CiAgICAgfQogICAgIGlmIChleHByLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewog
ICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tl
dEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgICAgICBQcmVmaXhCcmFja2V0Tm9kZSogbm9kZSA9
IG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0
LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQs
IGVuZCAtIGRpdm90KTsKKyAgICAgICAgUHJlZml4QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgUHJlZml4QnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNrZXQtPmJhc2UoKSwg
YnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOwogICAgICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgp
LCBicmFja2V0LT5zdGFydE9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQog
ICAgIEFTU0VSVChleHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5v
ZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgIFByZWZp
eERvdE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4RG90Tm9kZShsaW5lTnVt
YmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBz
dGFydCwgZW5kIC0gZGl2b3QpOworICAgIFByZWZpeERvdE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgUHJlZml4RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBub2Rl
LT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+c3RhcnRPZmZzZXQoKSk7
CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtl
UG9zdGZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRv
ciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZVBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3Qs
IGludCBlbmQpCiB7CiAgICAgaWYgKCFleHByLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeEVycm9yTm9kZShsaW5lTnVtYmVyLCBleHByLCBv
cCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4RXJyb3JOb2RlKGxvY2F0aW9uLCBleHByLCBvcCwgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKIAogICAgIGlmIChleHByLT5pc1Jlc29s
dmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxS
ZXNvbHZlTm9kZSo+KGV4cHIpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFBv
c3RmaXhSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wLCBk
aXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIFBvc3RmaXhSZXNvbHZlTm9kZShsb2NhdGlvbiwgcmVzb2x2ZS0+aWRlbnRp
ZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICB9CiAg
ICAgaWYgKGV4cHItPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRB
Y2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4o
ZXhwcik7Ci0gICAgICAgIFBvc3RmaXhCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxE
YXRhKSBQb3N0Zml4QnJhY2tldE5vZGUobGluZU51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFj
a2V0LT5zdWJzY3JpcHQoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7
CisgICAgICAgIFBvc3RmaXhCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQ
b3N0Zml4QnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vi
c2NyaXB0KCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgICAg
ICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5l
bmRPZmZzZXQoKSk7CiAgICAgICAgIHJldHVybiBub2RlOwogCiAgICAgfQogICAgIEFTU0VSVChl
eHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0
YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgIFBvc3RmaXhEb3ROb2RlKiBu
b2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+
YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQg
LSBkaXZvdCk7CisgICAgUG9zdGZpeERvdE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
UG9zdGZpeERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwg
b3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgbm9kZS0+c2V0U3Vi
ZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPmVuZE9mZnNldCgpKTsKICAgICByZXR1
cm4gbm9kZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggM2Iw
MjBmNGYyYjFiMDk2YTcwYTk1YTliNTg4ODI3YmQ5MGI5ODU5Yy4uMmE4YThkYzllMzYzYWQzYTIy
NzE1OTZlNzVlMTlmNWRjYzJiMzEzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhl
ci5jcHAKQEAgLTQxNyw2ICs0MTcsNyBAQCB2b2lkIExleGVyPFQ+OjpzZXRDb2RlKGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyQXJlbmEqIGFyZW5hKQogICAgIG1fY29kZUVuZCA9IG1f
Y29kZVN0YXJ0ICsgc291cmNlLmVuZE9mZnNldCgpOwogICAgIG1fZXJyb3IgPSBmYWxzZTsKICAg
ICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsKKyAgICBtX2NvbHVtbk51bWJlciA9IDA7CiAgICAgbV9s
ZXhFcnJvck1lc3NhZ2UgPSBVU3RyaW5nKCk7CiAgICAgCiAgICAgbV9idWZmZXI4LnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoaW5pdGlhbFJlYWRCdWZmZXJDYXBhY2l0eSk7CkBAIC00MzMsNiArNDM0
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiB0ZW1wbGF0ZSA8aW50IHNoaWZ0QW1vdW50PiBB
TFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VD46OmludGVybmFsU2hpZnQoKQogewogICAgIG1fY29k
ZSArPSBzaGlmdEFtb3VudDsKKyAgICBtX2NvbHVtbk51bWJlciArPSBzaGlmdEFtb3VudDsKICAg
ICBtX2N1cnJlbnQgPSAqbV9jb2RlOwogfQogCkBAIC00NDQsNiArNDQ2LDcgQEAgQUxXQVlTX0lO
TElORSB2b2lkIExleGVyPFQ+OjpzaGlmdCgpCiAgICAgKyttX2NvZGU7CiAgICAgaWYgKExJS0VM
WShtX2NvZGUgPCBtX2NvZGVFbmQpKQogICAgICAgICBtX2N1cnJlbnQgPSAqbV9jb2RlOworICAg
ICsrbV9jb2x1bW5OdW1iZXI7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMTE4Myw3
ICsxMTg2LDcgQEAgYm9vbCBMZXhlcjxUPjo6bmV4dFRva2VuSXNDb2xvbigpCiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgotSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleChKU1Rva2VuRGF0YSog
dG9rZW5EYXRhLCBKU1Rva2VuSW5mbyogdG9rZW5JbmZvLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBi
b29sIHN0cmljdE1vZGUpCitKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4KEpTVG9rZW5EYXRhKiB0
b2tlbkRhdGEsIEpTVG9rZW5Mb2NhdGlvbiogdG9rZW5Mb2NhdGlvbiwgdW5zaWduZWQgbGV4ZXJG
bGFncywgYm9vbCBzdHJpY3RNb2RlKQogewogICAgIEFTU0VSVCghbV9lcnJvcik7CiAgICAgQVNT
RVJUKG1fYnVmZmVyOC5pc0VtcHR5KCkpOwpAQCAtMTE5OSw3ICsxMjAyLDggQEAgc3RhcnQ6CiAg
ICAgaWYgKGF0RW5kKCkpCiAgICAgICAgIHJldHVybiBFT0ZUT0s7CiAgICAgCi0gICAgdG9rZW5J
bmZvLT5zdGFydE9mZnNldCA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICB0b2tlbkxvY2F0aW9uLT5z
dGFydE9mZnNldCA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICB0b2tlbkxvY2F0aW9uLT5jb2x1bW4g
PSBtX2NvbHVtbk51bWJlcjsKIAogICAgIENoYXJhY3RlclR5cGUgdHlwZTsKICAgICBpZiAoTElL
RUxZKGlzTGF0aW4xKG1fY3VycmVudCkpKQpAQCAtMTUyMiw2ICsxNTI2LDcgQEAgaW5OdW1iZXJB
ZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwogICAgICAg
ICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsKICAgICAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKKyAg
ICAgICAgbV9jb2x1bW5OdW1iZXIgPSAwOwogICAgICAgICBnb3RvIHN0YXJ0OwogICAgIGNhc2Ug
Q2hhcmFjdGVySW52YWxpZDoKICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBpbnZhbGlkQ2hh
cmFjdGVyTWVzc2FnZSgpOwpAQCAtMTU0NCw2ICsxNTQ5LDcgQEAgaW5TaW5nbGVMaW5lQ29tbWVu
dDoKICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7CiAgICAgbV9hdExpbmVTdGFydCA9IHRydWU7
CiAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKKyAgICBtX2NvbHVtbk51bWJlciA9IDA7CiAgICAg
aWYgKCFsYXN0VG9rZW5XYXNSZXN0cktleXdvcmQoKSkKICAgICAgICAgZ290byBzdGFydDsKIApA
QCAtMTU1MSwxNSArMTU1NywxNSBAQCBpblNpbmdsZUxpbmVDb21tZW50OgogICAgIC8vIEZhbGwg
dGhyb3VnaCBpbnRvIHJldHVyblRva2VuLgogCiByZXR1cm5Ub2tlbjoKLSAgICB0b2tlbkluZm8t
PmxpbmUgPSBtX2xpbmVOdW1iZXI7Ci0gICAgdG9rZW5JbmZvLT5lbmRPZmZzZXQgPSBjdXJyZW50
T2Zmc2V0KCk7CisgICAgdG9rZW5Mb2NhdGlvbi0+bGluZSA9IG1fbGluZU51bWJlcjsKKyAgICB0
b2tlbkxvY2F0aW9uLT5lbmRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7CiAgICAgbV9sYXN0VG9r
ZW4gPSB0b2tlbjsKICAgICByZXR1cm4gdG9rZW47CiAKIHJldHVybkVycm9yOgogICAgIG1fZXJy
b3IgPSB0cnVlOwotICAgIHRva2VuSW5mby0+bGluZSA9IG1fbGluZU51bWJlcjsKLSAgICB0b2tl
bkluZm8tPmVuZE9mZnNldCA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICB0b2tlbkxvY2F0aW9uLT5s
aW5lID0gbV9saW5lTnVtYmVyOworICAgIHRva2VuTG9jYXRpb24tPmVuZE9mZnNldCA9IGN1cnJl
bnRPZmZzZXQoKTsKICAgICByZXR1cm4gRVJST1JUT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuaAppbmRleCA0MWYxZjg1NTNlMWViMjVmNTQ0YmVlMTkzNWEyYWY0YmJkMDY5
ZTY0Li4xYWM4MzJhMmM3YjVmMzgyYjMzYjc4YTVjODMwNGIxNzU1NDBmNDcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC04Nyw5ICs4NywxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRJc1JlcGFyc2luZygpIHsgbV9pc1JlcGFyc2luZyA9IHRydWU7IH0KICAgICBib29s
IGlzUmVwYXJzaW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1JlcGFyc2luZzsgfQogCi0gICAgSlNU
b2tlblR5cGUgbGV4KEpTVG9rZW5EYXRhKiwgSlNUb2tlbkluZm8qLCB1bnNpZ25lZCwgYm9vbCBz
dHJpY3RNb2RlKTsKKyAgICBKU1Rva2VuVHlwZSBsZXgoSlNUb2tlbkRhdGEqLCBKU1Rva2VuTG9j
YXRpb24qLCB1bnNpZ25lZCwgYm9vbCBzdHJpY3RNb2RlKTsKICAgICBib29sIG5leHRUb2tlbklz
Q29sb24oKTsKICAgICBpbnQgbGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51bWJl
cjsgfQorICAgIGludCBjdXJyZW50Q29sdW1uTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2x1
bW5OdW1iZXI7IH0KICAgICB2b2lkIHNldExhc3RMaW5lTnVtYmVyKGludCBsYXN0TGluZU51bWJl
cikgeyBtX2xhc3RMaW5lTnVtYmVyID0gbGFzdExpbmVOdW1iZXI7IH0KICAgICBpbnQgbGFzdExp
bmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lTnVtYmVyOyB9CiAgICAgYm9vbCBw
cmV2VGVybWluYXRvcigpIGNvbnN0IHsgcmV0dXJuIG1fdGVybWluYXRvcjsgfQpAQCAtMTIwLDcg
KzEyMSw3IEBAIHB1YmxpYzoKIAogICAgIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlcigp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLT5wcm92aWRlcigpOyB9CiAKLSAgICBKU1Rva2VuVHlw
ZSBsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiwgSlNUb2tlbkluZm8qLCB1bnNpZ25l
ZCwgYm9vbCBzdHJpY3RNb2RlKTsKKyAgICBKU1Rva2VuVHlwZSBsZXhFeHBlY3RJZGVudGlmaWVy
KEpTVG9rZW5EYXRhKiwgSlNUb2tlbkxvY2F0aW9uKiwgdW5zaWduZWQsIGJvb2wgc3RyaWN0TW9k
ZSk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCByZWNvcmQ4KGludCk7CkBAIC0xNjYsNiArMTY3LDcg
QEAgcHJpdmF0ZToKIAogICAgIGludCBtX2xpbmVOdW1iZXI7CiAgICAgaW50IG1fbGFzdExpbmVO
dW1iZXI7CisgICAgaW50IG1fY29sdW1uTnVtYmVyOwogCiAgICAgVmVjdG9yPExDaGFyPiBtX2J1
ZmZlcjg7CiAgICAgVmVjdG9yPFVDaGFyPiBtX2J1ZmZlcjE2OwpAQCAtMjU3LDcgKzI1OSw3IEBA
IEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRpZmllciogTGV4ZXI8VD46Om1ha2VJZGVudGlmaWVy
TENoYXJGcm9tVUNoYXIoY29uc3QgVUNoCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxX
QVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rv
a2VuRGF0YSogdG9rZW5EYXRhLCBKU1Rva2VuSW5mbyogdG9rZW5JbmZvLCB1bnNpZ25lZCBsZXhl
ckZsYWdzLCBib29sIHN0cmljdE1vZGUpCitBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVy
PFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIEpTVG9rZW5M
b2NhdGlvbiogdG9rZW5Mb2NhdGlvbiwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RN
b2RlKQogewogICAgIEFTU0VSVCgobGV4ZXJGbGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZl
ZFdvcmRzKSk7CiAgICAgY29uc3QgVCogc3RhcnQgPSBtX2NvZGU7CkBAIC0yODUsMjAgKzI4Nywy
MiBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlm
aWVyKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsCiAgICAgICAgIG1fY3VycmVudCA9IDA7CiAKICAg
ICBtX2NvZGUgPSBwdHI7CisgICAgbV9jb2x1bW5OdW1iZXIgPSBtX2NvbHVtbk51bWJlciArICht
X2NvZGUgLSBzdGFydCk7CiAKICAgICAvLyBDcmVhdGUgdGhlIGlkZW50aWZpZXIgaWYgbmVlZGVk
CiAgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhleEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCiAgICAg
ICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwogICAgIGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5p
ZGVudCA9IG1ha2VJZGVudGlmaWVyKHN0YXJ0LCBwdHIgLSBzdGFydCk7Ci0gICAgdG9rZW5JbmZv
LT5saW5lID0gbV9saW5lTnVtYmVyOwotICAgIHRva2VuSW5mby0+c3RhcnRPZmZzZXQgPSBzdGFy
dCAtIG1fY29kZVN0YXJ0OwotICAgIHRva2VuSW5mby0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNl
dCgpOworICAgIHRva2VuTG9jYXRpb24tPmxpbmUgPSBtX2xpbmVOdW1iZXI7CisgICAgdG9rZW5M
b2NhdGlvbi0+c3RhcnRPZmZzZXQgPSBzdGFydCAtIG1fY29kZVN0YXJ0OworICAgIHRva2VuTG9j
YXRpb24tPmVuZE9mZnNldCA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICB0b2tlbkxvY2F0aW9uLT5j
b2x1bW4gPSBtX2NvbHVtbk51bWJlcjsKICAgICBtX2xhc3RUb2tlbiA9IElERU5UOwogICAgIHJl
dHVybiBJREVOVDsKICAgICAKIHNsb3dDYXNlOgotICAgIHJldHVybiBsZXgodG9rZW5EYXRhLCB0
b2tlbkluZm8sIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOworICAgIHJldHVybiBsZXgodG9rZW5E
YXRhLCB0b2tlbkxvY2F0aW9uLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oCmluZGV4IGU0OTZkMjM0MmIzNDAxZmE0YWU3NGUyNDYzOTRlYjk3YzMzYmNhMWYu
LmVmZjhlM2JhYmEyM2Q0MTJkYmUzNTZhOWUxNzZjOGNjZWU3OGUzZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC00Miw2MCArNDIs
NjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGdsb2JhbERhdGEtPnBhcnNlckFyZW5hLT5k
ZXJlZldpdGhBcmVuYShhZG9wdFJlZih0aGlzKSk7CiAgICAgfQogCi0gICAgaW5saW5lIE5vZGU6
Ok5vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogbV9saW5lTnVtYmVyKGxpbmVOdW1iZXIp
CisgICAgaW5saW5lIE5vZGU6Ok5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikK
KyAgICAgICAgOiBtX2xpbmVOdW1iZXIobG9jYXRpb24ubGluZSkKKyAgICAgICAgLCBtX2NvbHVt
bk51bWJlcihsb2NhdGlvbi5jb2x1bW4pCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBFeHBy
ZXNzaW9uTm9kZTo6RXhwcmVzc2lvbk5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3VsdFR5cGUgcmVz
dWx0VHlwZSkKLSAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEV4cHJlc3Np
b25Ob2RlOjpFeHByZXNzaW9uTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBS
ZXN1bHRUeXBlIHJlc3VsdFR5cGUpCisgICAgICAgIDogTm9kZShsb2NhdGlvbikKICAgICAgICAg
LCBtX3Jlc3VsdFR5cGUocmVzdWx0VHlwZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFN0
YXRlbWVudE5vZGU6OlN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogTm9k
ZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBTdGF0ZW1lbnROb2RlOjpTdGF0ZW1lbnROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCisgICAgICAgIDogTm9kZShsb2NhdGlvbikK
ICAgICAgICAgLCBtX2xhc3RMaW5lKC0xKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTnVs
bE5vZGU6Ok51bGxOb2RlKGludCBsaW5lTnVtYmVyKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bGxUeXBlKCkpCisgICAgaW5saW5lIE51bGxOb2Rl
OjpOdWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQorICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpudWxsVHlwZSgpKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgQm9vbGVhbk5vZGU6OkJvb2xlYW5Ob2RlKGludCBsaW5lTnVtYmVy
LCBib29sIHZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3Vs
dFR5cGU6OmJvb2xlYW5UeXBlKCkpCisgICAgaW5saW5lIEJvb2xlYW5Ob2RlOjpCb29sZWFuTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBib29sIHZhbHVlKQorICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpKQogICAg
ICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBOdW1iZXJO
b2RlOjpOdW1iZXJOb2RlKGludCBsaW5lTnVtYmVyLCBkb3VibGUgdmFsdWUpCi0gICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpKQorICAg
IGlubGluZSBOdW1iZXJOb2RlOjpOdW1iZXJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGRvdWJsZSB2YWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbiwg
UmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpKQogICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBTdHJpbmdOb2RlOjpTdHJpbmdOb2RlKGludCBsaW5lTnVt
YmVyLCBjb25zdCBJZGVudGlmaWVyJiB2YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCisgICAgaW5saW5lIFN0cmluZ05v
ZGU6OlN0cmluZ05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRl
bnRpZmllciYgdmFsdWUpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24sIFJlc3Vs
dFR5cGU6OnN0cmluZ1R5cGUoKSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgUmVnRXhwTm9kZTo6UmVnRXhwTm9kZShpbnQgbGluZU51bWJlciwg
Y29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MpCi0gICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmVnRXhwTm9kZTo6
UmVnRXhwTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlm
aWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncykKKyAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX3BhdHRlcm4ocGF0dGVybikKICAgICAgICAg
LCBtX2ZsYWdzKGZsYWdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVGhpc05vZGU6OlRo
aXNOb2RlKGludCBsaW5lTnVtYmVyKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIFRoaXNOb2RlOjpUaGlzTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgUmVzb2x2ZU5vZGU6OlJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVy
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgaW50IHN0YXJ0T2Zmc2V0KQotICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFJlc29sdmVOb2RlOjpSZXNvbHZl
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgaW50IHN0YXJ0T2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9u
KQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9zdGFydE9mZnNldChzdGFy
dE9mZnNldCkKICAgICB7CkBAIC0xMTYsMjQgKzExNywyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgbC0+bV9uZXh0ID0gdGhpczsKICAgICB9CiAKLSAgICBpbmxpbmUgQXJyYXlOb2RlOjpB
cnJheU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBlbGlzaW9uKQotICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBlbGlzaW9uKQorICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZWxlbWVudCgwKQogICAgICAgICAsIG1f
ZWxpc2lvbihlbGlzaW9uKQogICAgICAgICAsIG1fb3B0aW9uYWwodHJ1ZSkKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGludCBsaW5lTnVtYmVyLCBFbGVt
ZW50Tm9kZSogZWxlbWVudCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBBcnJheU5vZGU6OkFycmF5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFbGVtZW50Tm9kZSogZWxlbWVudCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
b2NhdGlvbikKICAgICAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAgICAgLCBtX2VsaXNp
b24oMCkKICAgICAgICAgLCBtX29wdGlvbmFsKGZhbHNlKQogICAgIHsKICAgICB9CiAKLSAgICBp
bmxpbmUgQXJyYXlOb2RlOjpBcnJheU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCBlbGlzaW9uLCBF
bGVtZW50Tm9kZSogZWxlbWVudCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBBcnJheU5vZGU6OkFycmF5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBpbnQgZWxpc2lvbiwgRWxlbWVudE5vZGUqIGVsZW1lbnQpCisgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCiAg
ICAgICAgICwgbV9lbGlzaW9uKGVsaXNpb24pCiAgICAgICAgICwgbV9vcHRpb25hbCh0cnVlKQpA
QCAtMTU0LDU3ICsxNTUsNTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBQcm9wZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGludCBsaW5lTnVtYmVy
LCBQcm9wZXJ0eU5vZGUqIG5vZGUpCi0gICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAgIGlu
bGluZSBQcm9wZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZSogbm9kZSkKKyAgICAgICAgOiBOb2RlKGxvY2F0
aW9uKQogICAgICAgICAsIG1fbm9kZShub2RlKQogICAgICAgICAsIG1fbmV4dCgwKQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgUHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZShp
bnQgbGluZU51bWJlciwgUHJvcGVydHlOb2RlKiBub2RlLCBQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0
KQotICAgICAgICA6IE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUHJvcGVydHlMaXN0Tm9k
ZTo6UHJvcGVydHlMaXN0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9w
ZXJ0eU5vZGUqIG5vZGUsIFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpCisgICAgICAgIDogTm9kZShs
b2NhdGlvbikKICAgICAgICAgLCBtX25vZGUobm9kZSkKICAgICAgICAgLCBtX25leHQoMCkKICAg
ICB7CiAgICAgICAgIGxpc3QtPm1fbmV4dCA9IHRoaXM7CiAgICAgfQogCi0gICAgaW5saW5lIE9i
amVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZShpbnQgbGluZU51bWJlcikKLSAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBPYmplY3RMaXRlcmFs
Tm9kZTo6T2JqZWN0TGl0ZXJhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikK
KyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2xpc3QoMCkK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE9iamVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRl
cmFsTm9kZShpbnQgbGluZU51bWJlciwgUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBPYmplY3RMaXRlcmFsTm9k
ZTo6T2JqZWN0TGl0ZXJhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJv
cGVydHlMaXN0Tm9kZSogbGlzdCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikK
ICAgICAgICAgLCBtX2xpc3QobGlzdCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJyYWNr
ZXRBY2Nlc3Nvck5vZGU6OkJyYWNrZXRBY2Nlc3Nvck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBib29sIHN1YnNjcmlw
dEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisg
ICAgaW5saW5lIEJyYWNrZXRBY2Nlc3Nvck5vZGU6OkJyYWNrZXRBY2Nlc3Nvck5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Np
b25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMpCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAg
ICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQogICAgICAgICAsIG1fc3Vic2NyaXB0SGFzQXNz
aWdubWVudHMoc3Vic2NyaXB0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQotICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIERvdEFjY2Vzc29yTm9kZTo6RG90
QWNjZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50
KGlkZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXJndW1lbnRMaXN0Tm9kZTo6QXJn
dW1lbnRMaXN0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAg
ICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBBcmd1bWVudExpc3ROb2RlOjpBcmd1
bWVudExpc3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBleHByKQorICAgICAgICA6IE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9uZXh0KDAp
CiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcmd1
bWVudExpc3ROb2RlOjpBcmd1bWVudExpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBBcmd1bWVudExp
c3ROb2RlKiBsaXN0Tm9kZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogTm9kZShs
aW5lTnVtYmVyKQorICAgIGlubGluZSBBcmd1bWVudExpc3ROb2RlOjpBcmd1bWVudExpc3ROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEFyZ3VtZW50TGlzdE5vZGUqIGxpc3RO
b2RlLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBOb2RlKGxvY2F0aW9uKQogICAg
ICAgICAsIG1fbmV4dCgwKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKQEAgLTIyMSw0
NSArMjIyLDQ1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
TmV3RXhwck5vZGU6Ok5ld0V4cHJOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBO
ZXdFeHByTm9kZTo6TmV3RXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
CiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9hcmdzKDApCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBOZXdFeHByTm9kZTo6TmV3RXhwck5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdzKQotICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIE5ld0V4cHJOb2RlOjpOZXdFeHBy
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhw
ciwgQXJndW1lbnRzTm9kZSogYXJncykKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlv
bikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIEV2YWxGdW5jdGlvbkNhbGxOb2RlOjpFdmFsRnVuY3Rpb25D
YWxsTm9kZShpbnQgbGluZU51bWJlciwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRXZhbEZ1bmN0aW9uQ2FsbE5v
ZGU6OkV2YWxGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9u
KQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAgICBp
bmxpbmUgRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGdW5jdGlvbkNh
bGxWYWx1ZU5vZGU6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQXJndW1lbnRzTm9kZSogYXJncywgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisg
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9l
eHByKGV4cHIpCiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoaW50
IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdz
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGdW5j
dGlvbkNhbGxSZXNvbHZlTm9kZTo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAs
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQog
ICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6RnVuY3Rpb25DYWxs
QnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNz
aW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9k
ZTo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3Vt
ZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAg
ICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5k
T2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1fc3Vic2NyaXB0KHN1
YnNjcmlwdCkKQEAgLTI2Nyw4ICsyNjgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGlu
ZU51bWJlcikKKyAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFz
ZShiYXNlKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCkBAIC0yNzYsMzEgKzI3NywzMSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENhbGxGdW5jdGlvbkNh
bGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBh
cmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGJhc2UsIGlk
ZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgQ2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRnVuY3Rpb25DYWxs
RG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXBwbHlGdW5jdGlvbkNhbGxE
b3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJn
cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCi0gICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVtYmVyLCBiYXNlLCBpZGVu
dCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgaW5saW5lIEFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRnVuY3Rpb25DYWxs
RG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJlUG9zdFJlc29sdmVOb2Rl
OjpQcmVQb3N0UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpu
dW1iZXJUeXBlKCkpIC8vIGNvdWxkIGJlIHJldXNhYmxlIGZvciBwcmU/CisgICAgaW5saW5lIFBy
ZVBvc3RSZXNvbHZlTm9kZTo6UHJlUG9zdFJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpKSAvLyBjb3VsZCBiZSBy
ZXVzYWJsZSBmb3IgcHJlPwogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBQb3N0Zml4UmVzb2x2ZU5vZGU6OlBvc3RmaXhSZXNvbHZl
Tm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9w
ZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KQotICAgICAgICA6IFByZVBvc3RSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBpZGVudCwgZGl2
b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgaW5saW5lIFBvc3RmaXhSZXNvbHZlTm9k
ZTo6UG9zdGZpeFJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBQcmVQb3N0
UmVzb2x2ZU5vZGUobG9jYXRpb24sIGlkZW50LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNl
dCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBQb3N0Zml4QnJhY2tldE5vZGU6OlBvc3RmaXhCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9y
IG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IFBvc3RmaXhCcmFja2V0Tm9kZTo6UG9zdGZpeEJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vi
c2NyaXB0LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlv
bikKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNj
cmlwdChzdWJzY3JpcHQpCkBAIC0zMDgsOCArMzA5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBQb3N0Zml4RG90Tm9kZTo6UG9zdGZpeERvdE5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgUG9zdGZpeERvdE5vZGU6OlBvc3RmaXhEb3ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRp
b24pCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVu
dChpZGVudCkKQEAgLTMxNyw2OSArMzE4LDY5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgUG9zdGZpeEVycm9yTm9kZTo6UG9zdGZpeEVycm9yTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFBvc3RmaXhFcnJvck5v
ZGU6OlBvc3RmaXhFcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAg
ICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlbGV0ZVJl
c29sdmVOb2RlOjpEZWxldGVSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAg
aW5saW5lIERlbGV0ZVJlc29sdmVOb2RlOjpEZWxldGVSZXNvbHZlTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9pZGVudChpZGVu
dCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlbGV0ZUJyYWNrZXROb2RlOjpEZWxldGVC
cmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Np
b25Ob2RlKiBzdWJzY3JpcHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIp
CisgICAgaW5saW5lIERlbGV0ZUJyYWNrZXROb2RlOjpEZWxldGVCcmFja2V0Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vi
c2NyaXB0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVsZXRlRG90Tm9kZTo6RGVsZXRl
RG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAg
IGlubGluZSBEZWxldGVEb3ROb2RlOjpEZWxldGVEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAg
ICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIERlbGV0ZVZhbHVlTm9kZTo6RGVsZXRlVmFsdWVOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBEZWxldGVWYWx1ZU5vZGU6OkRlbGV0ZVZhbHVlTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIFZvaWROb2RlOjpWb2lkTm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51
bWJlcikKKyAgICBpbmxpbmUgVm9pZE5vZGU6OlZvaWROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgVHlwZU9mUmVzb2x2ZU5vZGU6OlR5cGVPZlJlc29sdmVOb2RlKGludCBsaW5lTnVt
YmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCisgICAgaW5saW5lIFR5cGVPZlJl
c29sdmVOb2RlOjpUeXBlT2ZSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
b2NhdGlvbiwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQogICAgICAgICAsIG1faWRlbnQoaWRl
bnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZh
bHVlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQorICAg
IGlubGluZSBUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQogICAgICAgICAsIG1f
ZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJlZml4UmVzb2x2ZU5vZGU6
OlByZWZpeFJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogUHJlUG9zdFJlc29sdmVOb2RlKGxpbmVOdW1i
ZXIsIGlkZW50LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgUHJl
Zml4UmVzb2x2ZU5vZGU6OlByZWZpeFJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAg
ICAgOiBQcmVQb3N0UmVzb2x2ZU5vZGUobG9jYXRpb24sIGlkZW50LCBkaXZvdCwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBQcmVmaXhCcmFja2V0Tm9kZTo6UHJlZml4QnJhY2tldE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0
LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBQcmVmaXhCcmFja2V0Tm9kZTo6UHJlZml4QnJhY2tldE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25O
b2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEo
ZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAg
ICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtMzg3LDggKzM4OCw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJlZml4RG90Tm9kZTo6UHJl
Zml4RG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcmVmaXhEb3ROb2RlOjpQcmVmaXhEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9u
RGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFz
ZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQpAQCAtMzk2LDQ0ICszOTcsNDQgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVmaXhFcnJvck5vZGU6OlBy
ZWZpeEVycm9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJh
dG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5s
aW5lIFByZWZpeEVycm9yTm9kZTo6UHJlZml4RXJyb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcGVyLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2V4cHIo
ZXhwcikKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBVbmFyeU9wTm9kZTo6VW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3VsdFR5cGUg
dHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wY29kZUlEIG9wY29kZUlEKQotICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIHR5cGUpCisgICAgaW5saW5lIFVuYXJ5T3BOb2Rl
OjpVbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBSZXN1bHRUeXBl
IHR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGNvZGVJRCBvcGNvZGVJRCkKKyAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbiwgdHlwZSkKICAgICAgICAgLCBtX2V4cHIoZXhwcikK
ICAgICAgICAgLCBtX29wY29kZUlEKG9wY29kZUlEKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgVW5hcnlQbHVzTm9kZTo6VW5hcnlQbHVzTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIpCi0gICAgICAgIDogVW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlw
ZTo6bnVtYmVyVHlwZSgpLCBleHByLCBvcF90b19qc251bWJlcikKKyAgICBpbmxpbmUgVW5hcnlQ
bHVzTm9kZTo6VW5hcnlQbHVzTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBVbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVz
dWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByLCBvcF90b19qc251bWJlcikKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIE5lZ2F0ZU5vZGU6Ok5lZ2F0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFVuYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJl
c3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwciwgb3BfbmVnYXRlKQorICAgIGlubGluZSBOZWdh
dGVOb2RlOjpOZWdhdGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IFVuYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRU
eXBlOjpudW1iZXJUeXBlKCksIGV4cHIsIG9wX25lZ2F0ZSkKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIEJpdHdpc2VOb3ROb2RlOjpCaXR3aXNlTm90Tm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwg
UmVzdWx0VHlwZTo6Zm9yQml0T3AoKSkKKyAgICBpbmxpbmUgQml0d2lzZU5vdE5vZGU6OkJpdHdp
c2VOb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBleHByKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpm
b3JCaXRPcCgpKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBp
bmxpbmUgTG9naWNhbE5vdE5vZGU6OkxvZ2ljYWxOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1
bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByLCBvcF9ub3QpCisgICAgaW5saW5lIExvZ2ljYWxO
b3ROb2RlOjpMb2dpY2FsTm90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBVbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVz
dWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwciwgb3Bfbm90KQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgQmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJ
RCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIEJpbmFyeU9wTm9kZTo6QmluYXJ5T3BOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhwcjEo
ZXhwcjEpCiAgICAgICAgICwgbV9leHByMihleHByMikKICAgICAgICAgLCBtX29wY29kZUlEKG9w
Y29kZUlEKQpAQCAtNDQxLDggKzQ0Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgQmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIs
IFJlc3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgdHlwZSkKKyAgICBpbmxpbmUgQmluYXJ5
T3BOb2RlOjpCaW5hcnlPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUmVz
dWx0VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbiwgdHlwZSkKICAgICAgICAgLCBtX2V4cHIxKGV4cHIx
KQogICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCiAgICAgICAgICwgbV9vcGNvZGVJRChvcGNvZGVJ
RCkKQEAgLTQ1MCwxNDAgKzQ1MSwxNDAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBNdWx0Tm9kZTo6TXVsdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51
bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9tdWwsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisg
ICAgaW5saW5lIE11bHROb2RlOjpNdWx0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVz
dWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX211bCwgcmlnaHRIYXNBc3Np
Z25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERpdk5vZGU6OkRpdk5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVO
dW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9kaXYsIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIERpdk5vZGU6OkRpdk5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlP
cE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBv
cF9kaXYsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAogCi0gICAgaW5saW5l
IE1vZE5vZGU6Ok1vZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAg
IDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhw
cjEsIGV4cHIyLCBvcF9tb2QsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIE1vZE5v
ZGU6Ok1vZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6Om51bWJlclR5
cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9tb2QsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBBZGROb2RlOjpBZGROb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBl
Ojpmb3JBZGQoZXhwcjEtPnJlc3VsdERlc2NyaXB0b3IoKSwgZXhwcjItPnJlc3VsdERlc2NyaXB0
b3IoKSksIGV4cHIxLCBleHByMiwgb3BfYWRkLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlu
bGluZSBBZGROb2RlOjpBZGROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBl
Ojpmb3JBZGQoZXhwcjEtPnJlc3VsdERlc2NyaXB0b3IoKSwgZXhwcjItPnJlc3VsdERlc2NyaXB0
b3IoKSksIGV4cHIxLCBleHByMiwgb3BfYWRkLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgU3ViTm9kZTo6U3ViTm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlw
ZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3N1YiwgcmlnaHRIYXNBc3NpZ25tZW50
cykKKyAgICBpbmxpbmUgU3ViTm9kZTo6U3ViTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwg
UmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3N1YiwgcmlnaHRIYXNB
c3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIExlZnRTaGlmdE5vZGU6Okxl
ZnRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmlu
YXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHBy
Miwgb3BfbHNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBMZWZ0U2hpZnRO
b2RlOjpMZWZ0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpm
b3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2xzaGlmdCwgcmlnaHRIYXNBc3NpZ25tZW50cykK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFJpZ2h0U2hpZnROb2RlOjpSaWdodFNoaWZ0Tm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUo
bGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9yc2hp
ZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIFJpZ2h0U2hpZnROb2RlOjpSaWdo
dFNoaWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Zm9yQml0T3Ao
KSwgZXhwcjEsIGV4cHIyLCBvcF9yc2hpZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlOjpVbnNpZ25lZFJpZ2h0
U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFy
eU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHBy
Miwgb3BfdXJzaGlmdCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgVW5zaWduZWRS
aWdodFNoaWZ0Tm9kZTo6VW5zaWduZWRSaWdodFNoaWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2Nh
dGlvbiwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3Vyc2hpZnQs
IHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBMZXNzTm9k
ZTo6TGVzc05vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmlu
YXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBl
eHByMiwgb3BfbGVzcywgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTGVzc05vZGU6
Okxlc3NOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
CisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlw
ZSgpLCBleHByMSwgZXhwcjIsIG9wX2xlc3MsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBHcmVhdGVyTm9kZTo6R3JlYXRlck5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJl
c3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZ3JlYXRlciwgcmlnaHRI
YXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgR3JlYXRlck5vZGU6OkdyZWF0ZXJOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmlu
YXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhw
cjIsIG9wX2dyZWF0ZXIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBMZXNzRXFOb2RlOjpMZXNzRXFOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29s
ZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2xlc3NlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykK
KyAgICBpbmxpbmUgTGVzc0VxTm9kZTo6TGVzc0VxTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlv
biwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9sZXNzZXEsIHJp
Z2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBHcmVhdGVyRXFO
b2RlOjpHcmVhdGVyRXFOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAg
ICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBl
eHByMSwgZXhwcjIsIG9wX2dyZWF0ZXJlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxp
bmUgR3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwg
UmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVyZXEsIHJp
Z2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBUaHJvd2FibGVC
aW5hcnlPcE5vZGU6OlRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQgbGluZU51bWJlciwgUmVzdWx0
VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
T3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBC
aW5hcnlPcE5vZGUobGluZU51bWJlciwgdHlwZSwgZXhwcjEsIGV4cHIyLCBvcGNvZGVJRCwgcmln
aHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgVGhyb3dhYmxlQmluYXJ5T3BOb2RlOjpUaHJv
d2FibGVCaW5hcnlPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUmVzdWx0
VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
T3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBC
aW5hcnlPcE5vZGUobG9jYXRpb24sIHR5cGUsIGV4cHIxLCBleHByMiwgb3Bjb2RlSUQsIHJpZ2h0
SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBUaHJvd2FibGVCaW5h
cnlPcE5vZGU6OlRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1i
ZXIsIGV4cHIxLCBleHByMiwgb3Bjb2RlSUQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5s
aW5lIFRocm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCBvcGNvZGVJ
RCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEluc3Rh
bmNlT2ZOb2RlOjpJbnN0YW5jZU9mTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
LSAgICAgICAgOiBUaHJvd2FibGVCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6
Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9pbnN0YW5jZW9mLCByaWdodEhhc0Fzc2ln
bm1lbnRzKQorICAgIGlubGluZSBJbnN0YW5jZU9mTm9kZTo6SW5zdGFuY2VPZk5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBUaHJv
d2FibGVCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4
cHIxLCBleHByMiwgb3BfaW5zdGFuY2VvZiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIEluTm9kZTo6SW5Ob2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKQotICAgICAgICA6IFRocm93YWJsZUJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBleHBy
MSwgZXhwcjIsIG9wX2luLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBJbk5vZGU6
OkluTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQor
ICAgICAgICA6IFRocm93YWJsZUJpbmFyeU9wTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCBv
cF9pbiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEVx
dWFsTm9kZTo6RXF1YWxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAg
ICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBl
eHByMSwgZXhwcjIsIG9wX2VxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBFcXVh
bE5vZGU6OkVxdWFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9v
bGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9lcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIE5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVt
YmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX25lcSwgcmln
aHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTm90RXF1YWxOb2RlOjpOb3RFcXVhbE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAg
OiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIx
LCBleHByMiwgb3BfbmVxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgU3RyaWN0RXF1YWxOb2RlOjpTdHJpY3RFcXVhbE5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3Vs
dFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3Bfc3RyaWN0ZXEsIHJpZ2h0SGFz
QXNzaWdubWVudHMpCisgICAgaW5saW5lIFN0cmljdEVxdWFsTm9kZTo6U3RyaWN0RXF1YWxOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAg
IDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHBy
MSwgZXhwcjIsIG9wX3N0cmljdGVxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgTm90U3RyaWN0RXF1YWxOb2RlOjpOb3RTdHJpY3RFcXVhbE5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVO
dW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbnN0cmlj
dGVxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBOb3RTdHJpY3RFcXVhbE5vZGU6
Ok5vdFN0cmljdEVxdWFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6
Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9uc3RyaWN0ZXEsIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCaXRBbmROb2RlOjpCaXRBbmROb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdGFu
ZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgQml0QW5kTm9kZTo6Qml0QW5kTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAg
ICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEs
IGV4cHIyLCBvcF9iaXRhbmQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBCaXRPck5vZGU6OkJpdE9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9y
Qml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXRvciwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAg
ICBpbmxpbmUgQml0T3JOb2RlOjpCaXRPck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJl
c3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfYml0b3IsIHJpZ2h0SGFzQXNz
aWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCaXRYT3JOb2RlOjpCaXRYT3JO
b2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9k
ZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2Jp
dHhvciwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgQml0WE9yTm9kZTo6Qml0WE9y
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAg
ICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhw
cjEsIGV4cHIyLCBvcF9iaXR4b3IsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBMb2dpY2FsT3BOb2RlOjpMb2dpY2FsT3BOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgTG9naWNhbE9w
ZXJhdG9yIG9wZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0
VHlwZTo6Ym9vbGVhblR5cGUoKSkKKyAgICBpbmxpbmUgTG9naWNhbE9wTm9kZTo6TG9naWNhbE9w
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgTG9naWNhbE9wZXJhdG9yIG9wZXIpCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCkpCiAg
ICAgICAgICwgbV9leHByMShleHByMSkKICAgICAgICAgLCBtX2V4cHIyKGV4cHIyKQogICAgICAg
ICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENvbmRpdGlv
bmFsTm9kZTo6Q29uZGl0aW9uYWxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
bG9naWNhbCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpCi0g
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQ29uZGl0aW9u
YWxOb2RlOjpDb25kaXRpb25hbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGxvZ2ljYWwsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAg
ICAsIG1fbG9naWNhbChsb2dpY2FsKQogICAgICAgICAsIG1fZXhwcjEoZXhwcjEpCiAgICAgICAg
ICwgbV9leHByMihleHByMikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFJlYWRNb2RpZnlS
ZXNvbHZlTm9kZTo6UmVhZE1vZGlmeVJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRNb2RpZnlSZXNv
bHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAg
ICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQp
CkBAIC01OTIsMTYgKzU5MywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIEFzc2lnblJlc29sdmVOb2RlOjpBc3NpZ25SZXNvbHZlTm9kZShpbnQgbGluZU51
bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIEFzc2lnblJlc29sdmVOb2RlOjpBc3NpZ25SZXNvbHZlTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAg
ICAgLCBtX3JpZ2h0KHJpZ2h0KQogICAgICAgICAsIG1fcmlnaHRIYXNBc3NpZ25tZW50cyhyaWdo
dEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeUJy
YWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJl
cikKKyAgICBpbmxpbmUgUmVhZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBU
aHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkK
ICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQp
CkBAIC02MTIsOCArNjEzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBBc3NpZ25CcmFja2V0Tm9kZTo6QXNzaWduQnJhY2tldE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHBy
ZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgQXNzaWduQnJhY2tldE5vZGU6OkFzc2lnbkJyYWNrZXROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9u
Tm9kZSogc3Vic2NyaXB0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFz
QXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2
b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAg
ICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtNjIzLDggKzYyNCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWdu
RG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
QXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJl
c3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkK
ICAgICAgICAgLCBtX2lkZW50KGlkZW50KQpAQCAtNjMzLDggKzYzNCw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJlYWRN
b2RpZnlEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0
YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwg
bV9pZGVudChpZGVudCkKQEAgLTY0NCw4ICs2NDUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkVycm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0b3Igb3BlciwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBBc3NpZ25FcnJvck5vZGU6OkFzc2lnbkVycm9yTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0b3Igb3Blciwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlv
bikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCkKICAgICAgICAgLCBtX2xlZnQobGVmdCkKICAgICAgICAgLCBtX29wZXJhdG9y
KG9wZXIpCkBAIC02NTMsMTUgKzY1NCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIENvbW1hTm9kZTo6Q29tbWFOb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMikKLSAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBDb21tYU5vZGU6OkNvbW1hTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikK
ICAgICB7CiAgICAgICAgIG1fZXhwcmVzc2lvbnMuYXBwZW5kKGV4cHIxKTsKICAgICAgICAgbV9l
eHByZXNzaW9ucy5hcHBlbmQoZXhwcjIpOwogICAgIH0KIAotICAgIGlubGluZSBDb25zdFN0YXRl
bWVudE5vZGU6OkNvbnN0U3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlciwgQ29uc3REZWNsTm9k
ZSogbmV4dCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IENvbnN0U3RhdGVtZW50Tm9kZTo6Q29uc3RTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIENvbnN0RGVjbE5vZGUqIG5leHQpCisgICAgICAgIDogU3RhdGVtZW50
Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX25leHQobmV4dCkKICAgICB7CiAgICAgfQpAQCAt
NjcwLDU3ICs2NzEsNTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBFbXB0eVN0YXRlbWVudE5vZGU6OkVtcHR5U3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJl
cikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEVtcHR5
U3RhdGVtZW50Tm9kZTo6RW1wdHlTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6RGVidWdnZXJTdGF0ZW1lbnRO
b2RlKGludCBsaW5lTnVtYmVyKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgRGVidWdnZXJTdGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2Rl
KGxvY2F0aW9uKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgaW5saW5lIEV4cHJTdGF0ZW1lbnRO
b2RlOjpFeHByU3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBFeHBy
U3RhdGVtZW50Tm9kZTo6RXhwclN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShs
b2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIFZhclN0YXRlbWVudE5vZGU6OlZhclN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgVmFyU3RhdGVtZW50Tm9kZTo6VmFyU3RhdGVtZW50Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBT
dGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAg
ICB9CiAgICAgCi0gICAgaW5saW5lIElmTm9kZTo6SWZOb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrKQotICAgICAgICA6
IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgSWZOb2RlOjpJZk5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwg
U3RhdGVtZW50Tm9kZSogaWZCbG9jaykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9u
KQogICAgICAgICAsIG1fY29uZGl0aW9uKGNvbmRpdGlvbikKICAgICAgICAgLCBtX2lmQmxvY2so
aWZCbG9jaykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIElmRWxzZU5vZGU6OklmRWxzZU5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5v
ZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5vZGUqIGVsc2VCbG9jaykKLSAgICAgICAgOiBJZk5vZGUo
bGluZU51bWJlciwgY29uZGl0aW9uLCBpZkJsb2NrKQorICAgIGlubGluZSBJZkVsc2VOb2RlOjpJ
ZkVsc2VOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5vZGUqIGVsc2VC
bG9jaykKKyAgICAgICAgOiBJZk5vZGUobG9jYXRpb24sIGNvbmRpdGlvbiwgaWZCbG9jaykKICAg
ICAgICAgLCBtX2Vsc2VCbG9jayhlbHNlQmxvY2spCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBEb1doaWxlTm9kZTo6RG9XaGlsZU5vZGUoaW50IGxpbmVOdW1iZXIsIFN0YXRlbWVudE5vZGUq
IHN0YXRlbWVudCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9k
ZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBEb1doaWxlTm9kZTo6RG9XaGlsZU5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBFeHBy
ZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAg
ICAgICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIFdoaWxlTm9kZTo6V2hpbGVOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQotICAg
ICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgV2hpbGVOb2RlOjpX
aGlsZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2Rl
KGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fc3RhdGVtZW50
KHN0YXRlbWVudCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZvck5vZGU6OkZvck5vZGUo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgYm9v
bCBleHByMVdhc1ZhckRlY2wpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBGb3JOb2RlOjpGb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHByZXNz
aW9uTm9kZSogZXhwcjMsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgYm9vbCBleHByMVdhc1Zh
ckRlY2wpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4
cHIxKGV4cHIxKQogICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCiAgICAgICAgICwgbV9leHByMyhl
eHByMykKQEAgLTczMCwzOCArNzMxLDM4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBU1NF
UlQoc3RhdGVtZW50KTsKICAgICB9CiAKLSAgICBpbmxpbmUgQ29udGludWVOb2RlOjpDb250aW51
ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlcikKLSAgICAgICAg
OiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIENvbnRpbnVlTm9kZTo6Q29u
dGludWVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAs
IG1faWRlbnQoZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNvbnRpbnVlTm9kZShpbnQgbGlu
ZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCi0gICAgICAgIDogU3RhdGVtZW50Tm9k
ZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNvbnRpbnVlTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAg
ICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQp
CiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgQnJlYWtOb2RlOjpCcmVha05vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBTdGF0ZW1l
bnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEJyZWFrTm9kZTo6QnJlYWtOb2RlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKKyAg
ICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1faWRlbnQoZ2xvYmFs
RGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBCcmVha05vZGU6OkJyZWFrTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlu
bGluZSBCcmVha05vZGU6OkJyZWFrTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0
aW9uKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KICAgICAKLSAgICBp
bmxpbmUgUmV0dXJuTm9kZTo6UmV0dXJuTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIHZhbHVlKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgUmV0dXJuTm9kZTo6UmV0dXJuTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBFeHByZXNzaW9uTm9kZSogdmFsdWUpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlv
bikKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
V2l0aE5vZGU6OldpdGhOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwg
U3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCB1aW50MzJfdCBkaXZvdCwgdWludDMyX3QgZXhwcmVz
c2lvbkxlbmd0aCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5s
aW5lIFdpdGhOb2RlOjpXaXRoTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCB1aW50MzJfdCBk
aXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2Rl
KGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fc3RhdGVtZW50
KHN0YXRlbWVudCkKICAgICAgICAgLCBtX2Rpdm90KGRpdm90KQpAQCAtNzY5LDIxICs3NzAsMjEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBMYWJlbE5vZGU6
OkxhYmVsTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgTGFiZWxOb2RlOjpMYWJlbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50
KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9uYW1lKG5h
bWUpCiAgICAgICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgVGhyb3dOb2RlOjpUaHJvd05vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgVGhyb3dOb2RlOjpUaHJvd05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikK
ICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFRyeU5v
ZGU6OlRyeU5vZGUoaW50IGxpbmVOdW1iZXIsIFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBjb25z
dCBJZGVudGlmaWVyJiBleGNlcHRpb25JZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywg
U3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGlu
ZU51bWJlcikKKyAgICBpbmxpbmUgVHJ5Tm9kZTo6VHJ5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciYg
ZXhjZXB0aW9uSWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUq
IGZpbmFsbHlCbG9jaykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAg
ICAsIG1fdHJ5QmxvY2sodHJ5QmxvY2spCiAgICAgICAgICwgbV9leGNlcHRpb25JZGVudChleGNl
cHRpb25JZGVudCkKICAgICAgICAgLCBtX2NhdGNoQmxvY2soY2F0Y2hCbG9jaykKQEAgLTgwNCwx
NSArODA1LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBsLT5tX25leHQgPSB0aGlzOwog
ICAgIH0KIAotICAgIGlubGluZSBGdW5jRXhwck5vZGU6OkZ1bmNFeHByTm9kZShpbnQgbGluZU51
bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQotICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6
RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBz
b3VyY2UsIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsb2NhdGlvbikKICAgICAgICAgLCBtX2JvZHkoYm9keSkKICAgICB7CiAgICAgICAgIG1fYm9k
eS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIHBhcmFtZXRlciwgaWRlbnQpOwogICAgIH0KIAotICAg
IGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNEZWNsTm9kZShpbnQgbGluZU51bWJlciwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQotICAgICAgICA6IFN0YXRlbWVu
dE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1l
dGVyTm9kZSogcGFyYW1ldGVyKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgbV9ib2R5KGJvZHkpCiAgICAgewogICAgICAgICBtX2JvZHktPmZpbmlzaFBhcnNp
bmcoc291cmNlLCBwYXJhbWV0ZXIsIGlkZW50KTsKQEAgLTg0NCwyOSArODQ1LDI5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3dpdGNoTm9kZTo6U3dpdGNo
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIENhc2VCbG9ja05vZGUq
IGJsb2NrKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
U3dpdGNoTm9kZTo6U3dpdGNoTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogZXhwciwgQ2FzZUJsb2NrTm9kZSogYmxvY2spCisgICAgICAgIDogU3Rh
dGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBt
X2Jsb2NrKGJsb2NrKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQ29uc3REZWNsTm9kZTo6
Q29uc3REZWNsTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4
cHJlc3Npb25Ob2RlKiBpbml0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIp
CisgICAgaW5saW5lIENvbnN0RGVjbE5vZGU6OkNvbnN0RGVjbE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2Rl
KiBpbml0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1f
aWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgICAgICwgbV9pbml0KGluaXQp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCbG9ja05vZGU6OkJsb2NrTm9kZShpbnQgbGlu
ZU51bWJlciwgU291cmNlRWxlbWVudHMqIHN0YXRlbWVudHMpCi0gICAgICAgIDogU3RhdGVtZW50
Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBCbG9ja05vZGU6OkJsb2NrTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyogc3RhdGVtZW50cykKKyAg
ICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fc3RhdGVtZW50cyhz
dGF0ZW1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJbk5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGwsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCi0g
ICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGb3JJbk5vZGU6
OkZvckluTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3Rh
dGVtZW50Tm9kZSogc3RhdGVtZW50KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24p
CiAgICAgICAgICwgbV9pZGVudChnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRp
ZmllcikKICAgICAgICAgLCBtX2luaXQoMCkKICAgICAgICAgLCBtX2xleHByKGwpCkBAIC04NzYs
MTcgKzg3NywxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IEZvckluTm9kZTo6Rm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW4sIEV4cHJl
c3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBkaXZvdCwgaW50
IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGlu
ZU51bWJlcikKKyAgICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJbk5vZGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3Rh
dGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVu
ZE9mZnNldCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1f
aWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9pbml0KDApCi0gICAgICAgICwgbV9sZXhwcihuZXcg
KGdsb2JhbERhdGEpIFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50LCBkaXZvdCAtIHN0YXJ0
T2Zmc2V0KSkKKyAgICAgICAgLCBtX2xleHByKG5ldyAoZ2xvYmFsRGF0YSkgUmVzb2x2ZU5vZGUo
bG9jYXRpb24sIGlkZW50LCBkaXZvdCAtIHN0YXJ0T2Zmc2V0KSkKICAgICAgICAgLCBtX2V4cHIo
ZXhwcikKICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCiAgICAgICAgICwgbV9pZGVu
dElzVmFyRGVjbCh0cnVlKQogICAgIHsKICAgICAgICAgaWYgKGluKSB7Ci0gICAgICAgICAgICBB
c3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAoZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5v
ZGUobGluZU51bWJlciwgaWRlbnQsIGluLCB0cnVlKTsKKyAgICAgICAgICAgIEFzc2lnblJlc29s
dmVOb2RlKiBub2RlID0gbmV3IChnbG9iYWxEYXRhKSBBc3NpZ25SZXNvbHZlTm9kZShsb2NhdGlv
biwgaWRlbnQsIGluLCB0cnVlKTsKICAgICAgICAgICAgIG5vZGUtPnNldEV4Y2VwdGlvblNvdXJj
ZUNvZGUoZGl2b3QsIGRpdm90IC0gc3RhcnRPZmZzZXQsIGVuZE9mZnNldCAtIGRpdm90KTsKICAg
ICAgICAgICAgIG1faW5pdCA9IG5vZGU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5jcHAKaW5kZXggYzMyZTRjNzNhMjRlYmViMjMzY2Q1ZTAxZmZmZDYzYTQ4Njg1
Yzg4Ni4uMDE3MjM1OWM3MDNmMmI5ZmUxMmJhNWIwOGYyNWRmYTQzYjQ5NjdiNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTUyLDEwICs1MiwxOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0YXRlbWVudE5v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAordm9pZCBTdGF0ZW1lbnROb2Rl
OjpzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKQoreworICAg
IG1fbGluZU51bWJlciA9IGZpcnN0TGluZTsKKyAgICBtX2xhc3RMaW5lID0gbGFzdExpbmU7Cisg
ICAgbV9jb2x1bW5OdW1iZXIgPSBjb2x1bW47Cit9CisKIHZvaWQgU3RhdGVtZW50Tm9kZTo6c2V0
TG9jKGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKIHsKICAgICBtX2xpbmVOdW1iZXIgPSBm
aXJzdExpbmU7CiAgICAgbV9sYXN0TGluZSA9IGxhc3RMaW5lOworICAgIG1fY29sdW1uTnVtYmVy
ID0gMDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNvdXJjZUVsZW1l
bnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03NSw4ICs4Myw4IEBAIFN0
YXRlbWVudE5vZGUqIFNvdXJjZUVsZW1lbnRzOjpzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdAogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU2NvcGVOb2RlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLVNjb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQotICAgIDogU3Rh
dGVtZW50Tm9kZShsaW5lTnVtYmVyKQorU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBib29sIGluU3Ry
aWN0Q29udGV4dCkKKyAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgLCBQYXJzZXJB
cmVuYVJlZkNvdW50ZWQoZ2xvYmFsRGF0YSkKICAgICAsIG1fZmVhdHVyZXMoaW5TdHJpY3RDb250
ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiBOb0ZlYXR1cmVzKQogICAgICwgbV9udW1Db25zdGFu
dHMoMCkKQEAgLTg0LDggKzkyLDggQEAgU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmljdENvbnQKIHsKIH0KIAot
U2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51
bWJlciwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4s
IFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVy
U2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzKQotICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorU2NvcGVOb2RlOjpTY29w
ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJl
biwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZp
ZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1D
b25zdGFudHMpCisgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICwgUGFyc2VyQXJl
bmFSZWZDb3VudGVkKGdsb2JhbERhdGEpCiAgICAgLCBtX2ZlYXR1cmVzKGZlYXR1cmVzKQogICAg
ICwgbV9zb3VyY2Uoc291cmNlKQpAQCAtMTA3LDE0ICsxMTUsMTQgQEAgU3RhdGVtZW50Tm9kZSog
U2NvcGVOb2RlOjpzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gUHJvZ3JhbU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotaW5saW5lIFByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2
YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJl
ZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVy
ZXMsIGludCBudW1Db25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51
bWJlciwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJp
YWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCitpbmxpbmUgUHJvZ3JhbU5vZGU6OlByb2dy
YW1Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1
bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKQorICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxvY2F0aW9uLCBzb3VyY2Us
IGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVy
ZXMsIG51bUNvbnN0YW50cykKIHsKIH0KIAotUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3Jh
bU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBT
b3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFj
ayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMp
CitQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgU291cmNlRWxl
bWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNT
dGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogewotICAg
IFJlZlB0cjxQcm9ncmFtTm9kZT4gbm9kZSA9IG5ldyBQcm9ncmFtTm9kZShnbG9iYWxEYXRhLCBs
aW5lTnVtYmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgIGNhcHR1cmVkVmFyaWFi
bGVzLCBzb3VyY2UsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOworICAgIFJlZlB0cjxQcm9ncmFt
Tm9kZT4gbm9kZSA9IG5ldyBQcm9ncmFtTm9kZShnbG9iYWxEYXRhLCBsb2NhdGlvbiwgY2hpbGRy
ZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssICBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNlLCBmZWF0
dXJlcywgbnVtQ29uc3RhbnRzKTsKIAogICAgIEFTU0VSVChub2RlLT5tX2FyZW5hLmxhc3QoKSA9
PSBub2RlKTsKICAgICBub2RlLT5tX2FyZW5hLnJlbW92ZUxhc3QoKTsKQEAgLTEyNSwxNCArMTMz
LDE0IEBAIFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVhdGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxp
bmUgRXZhbE5vZGU6OkV2YWxOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVO
dW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5j
dGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNv
bnN0YW50cykKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBzb3VyY2Us
IGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVy
ZXMsIG51bUNvbnN0YW50cykKK2lubGluZSBFdmFsTm9kZTo6RXZhbE5vZGUoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCisgICAgOiBT
Y29wZU5vZGUoZ2xvYmFsRGF0YSwgbG9jYXRpb24sIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNr
LCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQog
ewogfQogCi1QYXNzUmVmUHRyPEV2YWxOb2RlPiBFdmFsTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwg
VmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJT
ZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0
dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK1Bhc3NSZWZQdHI8RXZhbE5vZGU+IEV2
YWxOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJT
dGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZh
cmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMs
IGludCBudW1Db25zdGFudHMpCiB7Ci0gICAgUmVmUHRyPEV2YWxOb2RlPiBub2RlID0gbmV3IEV2
YWxOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0
YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsK
KyAgICBSZWZQdHI8RXZhbE5vZGU+IG5vZGUgPSBuZXcgRXZhbE5vZGUoZ2xvYmFsRGF0YSwgbG9j
YXRpb24sIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywg
c291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIAogICAgIEFTU0VSVChub2RlLT5tX2Fy
ZW5hLmxhc3QoKSA9PSBub2RlKTsKICAgICBub2RlLT5tX2FyZW5hLnJlbW92ZUxhc3QoKTsKQEAg
LTE0OSwxMyArMTU3LDEzIEBAIEZ1bmN0aW9uUGFyYW1ldGVyczo6RnVuY3Rpb25QYXJhbWV0ZXJz
KFBhcmFtZXRlck5vZGUqIGZpcnN0UGFyYW1ldGVyKQogICAgICAgICBhcHBlbmQocGFyYW1ldGVy
LT5pZGVudCgpKTsKIH0KIAotaW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5v
ZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmlj
dENvbnRleHQpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgaW5TdHJp
Y3RDb250ZXh0KQoraW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBi
b29sIGluU3RyaWN0Q29udGV4dCkKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsb2NhdGlv
biwgaW5TdHJpY3RDb250ZXh0KQogewogfQogCi1pbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVu
Y3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBT
b3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFj
ayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3Rh
bnRzKQotICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIHNvdXJjZUNvZGUs
IGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVy
ZXMsIG51bUNvbnN0YW50cykKK2lubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlO
b2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0
aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsb2NhdGlvbiwgc291cmNl
Q29kZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBm
ZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogewogfQogCkBAIC0xNzIsMTQgKzE4MCwxNCBAQCB2b2lk
IEZ1bmN0aW9uQm9keU5vZGU6OmZpbmlzaFBhcnNpbmcoUGFzc1JlZlB0cjxGdW5jdGlvblBhcmFt
ZXRlcnM+IHBhcmFtZXRlcnMsCiAgICAgbV9pZGVudCA9IGlkZW50OwogfQogCi1GdW5jdGlvbkJv
ZHlOb2RlKiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
LCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmljdENvbnRleHQpCitGdW5jdGlvbkJvZHlOb2Rl
KiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBib29sIGluU3RyaWN0Q29udGV4dCkKIHsKLSAg
ICByZXR1cm4gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgaW5T
dHJpY3RDb250ZXh0KTsKKyAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0
YSwgbG9jYXRpb24sIGluU3RyaWN0Q29udGV4dCk7CiB9CiAKLVBhc3NSZWZQdHI8RnVuY3Rpb25C
b2R5Tm9kZT4gRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgaW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZh
clN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVk
VmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVh
dHVyZXMsIGludCBudW1Db25zdGFudHMpCitQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IEZ1
bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3Rh
Y2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNh
cHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVy
ZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiB7Ci0gICAgUmVmUHRyPEZ1bmN0aW9uQm9k
eU5vZGU+IG5vZGUgPSBuZXcgRnVuY3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVy
LCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJj
ZUNvZGUsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOworICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlO
b2RlPiBub2RlID0gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgbG9jYXRpb24sIGNo
aWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNlQ29k
ZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAKICAgICBBU1NFUlQobm9kZS0+bV9hcmVuYS5s
YXN0KCkgPT0gbm9kZSk7CiAgICAgbm9kZS0+bV9hcmVuYS5yZW1vdmVMYXN0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggNWM5MGJiOWZlNjYzNjBlOTJhOTk3YWRiNjRi
M2VlNzk2MzczMjI2Ni4uNzkwYWQ3MTAxZDVhMzM4ZDk0NzVjYjc3ODgzODIwZGQzNjUzZmY5OSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTMwLDcgKzEzMCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTm9kZSA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVh
YmxlIHsKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIE5vZGUoaW50KTsKKyAgICAgICAgTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+
Tm9kZSgpIHsgfQpAQCAtMTM5LDEzICsxMzksMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgaW50IGxpbmVObygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51bWJlcjsgfQogCisgICAgICAg
IGludCBjb2x1bW5ObygpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1uTnVtYmVyOyB9CisKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIGludCBtX2xpbmVOdW1iZXI7CisgICAgICAgIGludCBtX2NvbHVt
bk51bWJlcjsKICAgICB9OwogCiAgICAgY2xhc3MgRXhwcmVzc2lvbk5vZGUgOiBwdWJsaWMgTm9k
ZSB7CiAgICAgcHJvdGVjdGVkOgotICAgICAgICBFeHByZXNzaW9uTm9kZShpbnQsIFJlc3VsdFR5
cGUgPSBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpKTsKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUmVzdWx0VHlwZSA9IFJlc3VsdFR5cGU6OnVua25vd25U
eXBlKCkpOwogCiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNOdW1iZXIoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTc1LDEyICsxNzgsMTQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBTdGF0ZW1lbnROb2RlIDogcHVibGljIE5vZGUgewogICAgIHByb3Rl
Y3RlZDoKLSAgICAgICAgU3RhdGVtZW50Tm9kZShpbnQpOworICAgICAgICBTdGF0ZW1lbnROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAgICAgcHVibGljOgotICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHNldExvYyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldExvYyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFz
dExpbmUpOyAKKyAgICAgICAgdm9pZCBzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5l
LCBpbnQgY29sdW1uKTsKICAgICAgICAgaW50IGZpcnN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIGxp
bmVObygpOyB9CiAgICAgICAgIGludCBsYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdExp
bmU7IH0KKyAgICAgICAgaW50IGNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIGNvbHVtbk5vKCk7fQog
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5U3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzUmV0dXJuTm9kZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CkBAIC0xOTQsNyArMTk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBOdWxsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBOdWxsTm9kZShpbnQpOworICAgICAgICBOdWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTIwNCw3ICsy
MDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJvb2xlYW5Ob2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJvb2xlYW5Ob2RlKGludCwg
Ym9vbCB2YWx1ZSk7CisgICAgICAgIEJvb2xlYW5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGJvb2wgdmFsdWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAt
MjE2LDcgKzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTnVtYmVyTm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBOdW1iZXJOb2Rl
KGludCwgZG91YmxlIHZhbHVlKTsKKyAgICAgICAgTnVtYmVyTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBkb3VibGUgdmFsdWUpOwogCiAgICAgICAgIGRvdWJsZSB2YWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWU7IH0KICAgICAgICAgdm9pZCBzZXRWYWx1ZShkb3VibGUgdmFsdWUpIHsg
bV92YWx1ZSA9IHZhbHVlOyB9CkBAIC0yMzIsNyArMjM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBTdHJpbmdOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFN0cmluZ05vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAg
IFN0cmluZ05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpOwog
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQog
CkBAIC0zNDIsNyArMzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWdFeHBO
b2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVnRXhwTm9kZShpbnQsIGNvbnN0IElkZW50aWZp
ZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzKTsKKyAgICAgICAgUmVnRXhwTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25z
dCBJZGVudGlmaWVyJiBmbGFncyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CkBAIC0zNTMsNyArMzU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBUaGlz
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBUaGlz
Tm9kZShpbnQpOworICAgICAgICBUaGlzTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTM2MSw3ICszNjYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlc29sdmVOb2RlKGludCwgY29uc3QgSWRl
bnRpZmllciYsIGludCBzdGFydE9mZnNldCk7CisgICAgICAgIFJlc29sdmVOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBpbnQgc3RhcnRPZmZzZXQpOwogCiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50OyB9CiAKQEAgLTM5MywxMSArMzk4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgQXJyYXlOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEFycmF5Tm9kZShpbnQsIGludCBlbGlzaW9uKTsKLSAgICAgICAgQXJyYXlOb2RlKGludCwg
RWxlbWVudE5vZGUqKTsKLSAgICAgICAgQXJyYXlOb2RlKGludCwgaW50IGVsaXNpb24sIEVsZW1l
bnROb2RlKik7CisgICAgICAgIEFycmF5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQg
ZWxpc2lvbik7CisgICAgICAgIEFycmF5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFbGVt
ZW50Tm9kZSopOworICAgICAgICBBcnJheU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50
IGVsaXNpb24sIEVsZW1lbnROb2RlKik7CiAKLSAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogdG9B
cmd1bWVudExpc3QoSlNHbG9iYWxEYXRhKiwgaW50KSBjb25zdDsKKyAgICAgICAgQXJndW1lbnRM
aXN0Tm9kZSogdG9Bcmd1bWVudExpc3QoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQpIGNvbnN0Owog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNDI4LDggKzQzMyw4IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJvcGVydHlMaXN0Tm9kZSA6IHB1YmxpYyBO
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFByb3BlcnR5TGlzdE5vZGUoaW50LCBQcm9wZXJ0
eU5vZGUqKTsKLSAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShpbnQsIFByb3BlcnR5Tm9kZSosIFBy
b3BlcnR5TGlzdE5vZGUqKTsKKyAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBQcm9wZXJ0eU5vZGUqKTsKKyAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGUqLCBQcm9wZXJ0eUxpc3ROb2RlKik7CiAK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwogCkBAIC00NDAsOCArNDQ1LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBPYmplY3RMaXRlcmFsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBPYmplY3RMaXRlcmFsTm9kZShpbnQpOwotICAgICAg
ICBPYmplY3RMaXRlcmFsTm9kZShpbnQsIFByb3BlcnR5TGlzdE5vZGUqKTsKKyAgICAgICAgT2Jq
ZWN0TGl0ZXJhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CisgICAgICAgIE9iamVjdExp
dGVyYWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5TGlzdE5vZGUqKTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTQ1MSw3ICs0NTYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBCcmFja2V0QWNjZXNzb3JOb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2ln
bm1lbnRzKTsKKyAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgYm9v
bCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGJh
c2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHN1
YnNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic2NyaXB0OyB9CkBAIC00NjksNyArNDc0LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVi
bGljOgotICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImKTsKIAog
ICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTsgfQog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9p
ZGVudDsgfQpAQCAtNDg2LDggKzQ5MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
QXJndW1lbnRMaXN0Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFy
Z3VtZW50TGlzdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOwotICAgICAgICBBcmd1bWVudExp
c3ROb2RlKGludCwgQXJndW1lbnRMaXN0Tm9kZSosIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAg
IEFyZ3VtZW50TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
KTsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBBcmd1
bWVudExpc3ROb2RlKiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgICAgICBBcmd1bWVudExpc3RO
b2RlKiBtX25leHQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CkBAIC01MDYsOCAr
NTExLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOZXdFeHByTm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIE5ld0V4cHJOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKLSAgICAg
ICAgTmV3RXhwck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSosIEFyZ3VtZW50c05vZGUqKTsKKyAg
ICAgICAgTmV3RXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
KTsKKyAgICAgICAgTmV3RXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqLCBBcmd1bWVudHNOb2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CkBAIC01MTgsNyArNTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBF
dmFsRnVuY3Rpb25DYWxsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV2YWxGdW5jdGlvbkNh
bGxOb2RlKGludCwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRXZhbEZ1bmN0aW9uQ2FsbE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTUyOCw3ICs1MzMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwgQXJndW1l
bnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKKyAgICAgICAgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTUzOSw3ICs1NDQsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwg
QXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01NTIsNyArNTU3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0
YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNO
b2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwg
QXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
QEAgLTU2NCw3ICs1NjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9u
Q2FsbERvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJF
eHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNO
b2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9k
ZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU3Nyw3ICs1
ODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENhbGxGdW5jdGlvbkNhbGxEb3RO
b2RlIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIENhbGxGdW5jdGlvbkNhbGxE
b3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKQEAgLTU4NSw3ICs1OTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAK
ICAgICBjbGFzcyBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRnVuY3Rpb25DYWxs
RG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUo
aW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05v
ZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCk7CisgICAgICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50
c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01OTMs
NyArNTk4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVQb3N0UmVzb2x2ZU5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7CiAgICAgcHVibGljOgotICAgICAgICBQcmVQb3N0UmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJ
ZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOworICAgICAgICBQcmVQb3N0UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKQEAgLTYwMSw3ICs2MDYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIFBvc3RmaXhSZXNvbHZlTm9kZSA6IHB1YmxpYyBQcmVQb3N0UmVz
b2x2ZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUG9zdGZpeFJlc29sdmVOb2RlKGludCwg
Y29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFBvc3RmaXhSZXNvbHZlTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTYxMSw3ICs2MTYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFBvc3RmaXhCcmFja2V0Tm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFBvc3RmaXhCcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQ
b3N0Zml4QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02MjMsNyArNjI4LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBQb3N0Zml4RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9k
ZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIFBvc3RmaXhEb3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQb3N0Zml4RG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJh
dG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02MzUsNyAr
NjQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQb3N0Zml4RXJyb3JOb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgUG9zdGZpeEVycm9yTm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUG9zdGZpeEVycm9yTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02NDYsNyArNjUxLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBEZWxldGVSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwg
cHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERl
bGV0ZVJlc29sdmVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRGVsZXRl
UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTY1Niw3ICs2NjEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERlbGV0ZUJyYWNrZXROb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1
YmxpYzoKLSAgICAgICAgRGVsZXRlQnJhY2tldE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBEZWxldGVCcmFja2V0Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
OwpAQCAtNjY3LDcgKzY3Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVsZXRl
RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlbGV0ZURvdE5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRGVsZXRlRG90Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTY3
OCw3ICs2ODMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERlbGV0ZVZhbHVlTm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVW
YWx1ZU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBEZWxldGVWYWx1ZU5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTY4OCw3ICs2OTMsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIFZvaWROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFZvaWROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAg
Vm9pZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTY5OCw3ICs3MDMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFR5cGVPZlJlc29sdmVOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFR5cGVPZlJlc29sdmVOb2RlKGludCwg
Y29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBUeXBlT2ZSZXNvbHZlTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KIApAQCAtNzEwLDcg
KzcxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVHlwZU9mVmFsdWVOb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFR5cGVPZlZhbHVl
Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIFR5cGVPZlZhbHVlTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNzIwLDcgKzcyNSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgUHJlZml4UmVzb2x2ZU5vZGUgOiBwdWJsaWMgUHJlUG9zdFJlc29sdmVOb2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFByZWZpeFJlc29sdmVOb2RlKGludCwgY29uc3QgSWRl
bnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFByZWZpeFJlc29sdmVOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNzMwLDcgKzczNSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgUHJlZml4QnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUsIHB1YmxpYyBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFByZWZpeEJyYWNrZXROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFByZWZp
eEJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNzQyLDcgKzc0Nyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgUHJlZml4RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVi
bGljIFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgUHJlZml4RG90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlZml4RG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJh
dG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC03NTQsNyAr
NzU5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVmaXhFcnJvck5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAg
ICAgcHVibGljOgotICAgICAgICBQcmVmaXhFcnJvck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSos
IE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7CisgICAgICAgIFByZWZpeEVycm9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CkBAIC03NjUsNyArNzcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBVbmFyeU9wTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBVbmFyeU9wTm9kZShpbnQsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiwg
T3Bjb2RlSUQpOworICAgICAgICBVbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBS
ZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSosIE9wY29kZUlEKTsKIAogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIoKSB7IHJldHVybiBtX2V4cHI7IH0KQEAgLTc4
Miw3ICs3ODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFVuYXJ5UGx1c05vZGUg
OiBwdWJsaWMgVW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVW5hcnlQbHVzTm9k
ZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIFVuYXJ5UGx1c05vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgRXhwcmVzc2lvbk5vZGUqIHN0cmlwVW5hcnlQbHVzKCkgeyByZXR1cm4gZXhwcigp
OyB9CkBAIC03OTAsMTIgKzc5NSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE5l
Z2F0ZU5vZGUgOiBwdWJsaWMgVW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTmVn
YXRlTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIE5lZ2F0ZU5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKICAgICB9OwogCiAgICAgY2xhc3Mg
Qml0d2lzZU5vdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgQml0d2lzZU5vdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBCaXR3
aXNlTm90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwogCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwcigpIHsgcmV0dXJuIG1f
ZXhwcjsgfQpAQCAtODA5LDcgKzgxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogIAogICAgIGNsYXNz
IExvZ2ljYWxOb3ROb2RlIDogcHVibGljIFVuYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIExvZ2ljYWxOb3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgTG9naWNh
bE5vdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKICAgICBw
cml2YXRlOgogICAgICAgICB2b2lkIGVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRl
Y29kZUdlbmVyYXRvciYsIExhYmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VUYXJnZXQsIGJv
b2wgZmFsbFRocm91Z2hNZWFuc1RydWUpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzQ29uZGl0
aW9uQ29udGV4dENvZGVnZW4oKSBjb25zdCB7IHJldHVybiBleHByKCktPmhhc0NvbmRpdGlvbkNv
bnRleHRDb2RlZ2VuKCk7IH0KQEAgLTgxNyw4ICs4MjIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIEJpbmFyeU9wTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBCaW5hcnlPcE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
Ci0gICAgICAgIEJpbmFyeU9wTm9kZShpbnQsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKKyAgICAgICAgQmluYXJ5T3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQmluYXJ5T3BOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0U3RyY2F0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uLCBSZWdpc3RlcklEKiBsaHMgPSAwLCBSZWFkTW9kaWZ5
UmVzb2x2ZU5vZGUqIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1lID0gMCk7CiAKQEAgLTg0Miw3MiAr
ODQ3LDcyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTXVsdE5vZGUgOiBwdWJsaWMg
QmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE11bHROb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CisgICAgICAgIE11bHROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBEaXZOb2RlIDogcHVibGljIEJpbmFyeU9w
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBEaXZOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CisgICAgICAgIERpdk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CiAgICAgfTsKIAogICAgIGNsYXNzIE1vZE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIE1vZE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAg
TW9kTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9Owog
CiAgICAgY2xhc3MgQWRkTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgQWRkTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBBZGROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0FkZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwogCiAgICAgY2xhc3Mg
U3ViTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgU3Vi
Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBTdWJOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N1YnRy
YWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAKICAgICBjbGFzcyBMZWZ0U2hp
ZnROb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBMZWZ0
U2hpZnROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIExlZnRTaGlmdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNz
IFJpZ2h0U2hpZnROb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBSaWdodFNoaWZ0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBSaWdodFNo
aWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9Owog
CiAgICAgY2xhc3MgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOworICAgICAgICBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBMZXNzTm9kZSA6
IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTGVzc05vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTGVzc05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEdyZWF0ZXJOb2RlIDogcHVi
bGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBHcmVhdGVyTm9kZShpbnQs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpOworICAgICAgICBHcmVhdGVyTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgTGVzc0VxTm9kZSA6IHB1
YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTGVzc0VxTm9kZShpbnQs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpOworICAgICAgICBMZXNzRXFOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBHcmVhdGVyRXFOb2RlIDog
cHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBHcmVhdGVyRXFOb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEdyZWF0ZXJFcU5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIFRocm93YWJs
ZUJpbmFyeU9wTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBUaHJvd2FibGVCaW5hcnlPcE5vZGUo
aW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgICAgIFRocm93
YWJsZUJpbmFyeU9wTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAg
VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFJlc3VsdFR5cGUs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTkxNSw3ICs5MjAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBJbnN0YW5jZU9mTm9kZSA6IHB1YmxpYyBUaHJv
d2FibGVCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSW5zdGFuY2VPZk5vZGUo
aW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgSW5zdGFuY2VPZk5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CkBAIC05MjMsMTIgKzkyOCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIEluTm9kZSA6IHB1YmxpYyBUaHJvd2FibGVCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgSW5Ob2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEluTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3Mg
RXF1YWxOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBF
cXVhbE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgRXF1YWxOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwpAQCAtOTM2LDEyICs5NDEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBOb3RFcXVhbE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIE5vdEVxdWFsTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBOb3RF
cXVhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsK
IAogICAgIGNsYXNzIFN0cmljdEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgU3RyaWN0RXF1YWxOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgICAgIFN0cmljdEVxdWFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTk0OSwyOCAr
OTU0LDI4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTm90U3RyaWN0RXF1YWxOb2Rl
IDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBOb3RTdHJpY3RF
cXVhbE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTm90U3RyaWN0RXF1YWxOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBj
bGFzcyBCaXRBbmROb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBCaXRBbmROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJpdEFuZE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNs
YXNzIEJpdE9yTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQml0T3JOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJpdE9yTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3Mg
Qml0WE9yTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
Qml0WE9yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBCaXRYT3JOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICAvLyBtX2V4
cHIxICYmIG1fZXhwcjIsIG1fZXhwcjEgfHwgbV9leHByMgogICAgIGNsYXNzIExvZ2ljYWxPcE5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTG9naWNh
bE9wTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBMb2dpY2FsT3BlcmF0b3IpOworICAgICAgICBMb2dpY2FsT3BOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBM
b2dpY2FsT3BlcmF0b3IpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpA
QCAtOTg1LDcgKzk5MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIC8vIFRoZSB0ZXJuYXJ5IG9w
ZXJhdG9yLCAibV9sb2dpY2FsID8gbV9leHByMSA6IG1fZXhwcjIiCiAgICAgY2xhc3MgQ29uZGl0
aW9uYWxOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IENvbmRpdGlvbmFsTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2FsLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMik7CisgICAgICAgIENvbmRpdGlvbmFs
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbG9naWNhbCwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTk3LDcgKzEwMDIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIFJlYWRNb2RpZnlSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIFJlYWRNb2RpZnlSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBPcGVy
YXRvciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7
CisgICAgICAgIFJlYWRNb2RpZnlSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpAQCAtMTAxMSw3ICsxMDE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBB
c3NpZ25SZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFzc2lnblJlc29sdmVOb2Rl
KGludCwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTEwMjQsNyArMTAyOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
UmVhZE1vZGlmeUJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhy
b3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVhZE1vZGlm
eUJyYWNrZXROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBz
dWJzY3JpcHQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0
SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWFk
TW9kaWZ5QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTAz
OSw3ICsxMDQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25CcmFja2V0
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFzc2lnbkJyYWNrZXROb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCk7CisgICAgICAgIEFzc2lnbkJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHBy
ZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
OwpAQCAtMTA1Myw3ICsxMDU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3Np
Z25Eb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNzaWduRG90Tm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXNzaWduRG90Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDY2LDcgKzEwNzEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlYWRNb2RpZnlEb3ROb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTA4
MCw3ICsxMDg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25FcnJvck5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7CiAgICAgcHVibGljOgotICAgICAgICBBc3NpZ25FcnJvck5vZGUoaW50LCBFeHByZXNzaW9u
Tm9kZSogbGVmdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBB
c3NpZ25FcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxl
ZnQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwOTQsNyArMTA5OSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgQ29tbWFOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMg
UGFyc2VyQXJlbmFEZWxldGFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29tbWFOb2RlKGlu
dCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpOworICAgICAg
ICBDb21tYU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIpOwogCiAgICAgICAgIHVzaW5nIFBhcnNlckFyZW5hRGVs
ZXRhYmxlOjpvcGVyYXRvciBuZXc7CiAKQEAgLTExMDksNyArMTExNCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIAogICAgIGNsYXNzIENvbnN0RGVjbE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29uc3REZWNsTm9kZShpbnQsIGNvbnN0IElkZW50
aWZpZXImLCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBDb25zdERlY2xOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSopOwogCiAg
ICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBtX2luaXQ7IH0KICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQoKSB7IHJldHVybiBtX2lkZW50OyB9CkBAIC0x
MTI5LDcgKzExMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnN0U3RhdGVt
ZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENv
bnN0U3RhdGVtZW50Tm9kZShpbnQsIENvbnN0RGVjbE5vZGUqIG5leHQpOworICAgICAgICBDb25z
dFN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgQ29uc3REZWNsTm9kZSogbmV4
dCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMTU0LDcgKzEx
NTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJsb2NrTm9kZSA6IHB1YmxpYyBT
dGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJsb2NrTm9kZShpbnQsIFNvdXJj
ZUVsZW1lbnRzKiA9IDApOworICAgICAgICBCbG9ja05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgU291cmNlRWxlbWVudHMqID0gMCk7CiAKICAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xl
U3RhdGVtZW50KCkgY29uc3Q7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnQo
KSBjb25zdDsKQEAgLTExNjksNyArMTE3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgRW1wdHlTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgRW1wdHlTdGF0ZW1lbnROb2RlKGludCk7CisgICAgICAgIEVtcHR5U3RhdGVt
ZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKQEAgLTExNzksNyArMTE4NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IAogICAgIGNsYXNzIERlYnVnZ2VyU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlYnVnZ2VyU3RhdGVtZW50Tm9kZShpbnQpOworICAg
ICAgICBEZWJ1Z2dlclN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAgICAg
ICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTExODcsNyArMTE5
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXhwclN0YXRlbWVudE5vZGUgOiBw
dWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBFeHByU3RhdGVtZW50
Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIGV4cHIoKSBjb25zdCB7IHJldHVybiBtX2V4cHI7IH0KIApAQCAtMTIwMSw4ICsx
MjA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBWYXJTdGF0ZW1lbnROb2RlIDog
cHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVmFyU3RhdGVtZW50
Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7ICAgICAgICAKLQorICAgICAgICBWYXJTdGF0ZW1l
bnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogCkBAIC0xMjExLDcgKzEyMTUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElmTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIElmTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRp
b24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2spOworICAgICAgICBJZk5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZC
bG9jayk7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyMjIs
NyArMTIyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWZFbHNlTm9kZSA6IHB1
YmxpYyBJZk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSWZFbHNlTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5v
ZGUqIGVsc2VCbG9jayk7CisgICAgICAgIElmRWxzZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3Rh
dGVtZW50Tm9kZSogZWxzZUJsb2NrKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTEyMzIsNyArMTIzNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
RG9XaGlsZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBEb1doaWxlTm9kZShpbnQsIFN0YXRlbWVudE5vZGUqLCBFeHByZXNzaW9uTm9kZSopOworICAg
ICAgICBEb1doaWxlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTdGF0ZW1lbnROb2RlKiwg
RXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
QEAgLTEyNDMsNyArMTI0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgV2hpbGVO
b2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgV2hpbGVO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7CisgICAgICAgIFdoaWxl
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5v
ZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyNTQsNyAr
MTI1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRm9yTm9kZSA6IHB1YmxpYyBT
dGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZvck5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIzLCBTdGF0ZW1lbnROb2RlKiwgYm9vbCBleHByMVdhc1ZhckRlY2wpOworICAgICAgICBGb3JO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0YXRlbWVudE5vZGUqLCBi
b29sIGV4cHIxV2FzVmFyRGVjbCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CkBAIC0xMjY4LDggKzEyNzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZv
ckluTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSosIGlu
dCwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsKLSAg
ICAgICAgRm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSosIGludCwgY29uc3QgSWRlbnRpZmllciYsIEV4
cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgaW50IGRpdm90
LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQpOworICAgICAgICBGb3JJbk5vZGUoSlNH
bG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHBy
ZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsKKyAgICAgICAgRm9ySW5Ob2RlKEpTR2xvYmFs
RGF0YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNz
aW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIGludCBkaXZvdCwgaW50
IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKQEAgLTEyODQsOCArMTI4OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgQ29udGludWVOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBDb250aW51ZU5vZGUoSlNH
bG9iYWxEYXRhKiwgaW50KTsKLSAgICAgICAgQ29udGludWVOb2RlKGludCwgY29uc3QgSWRlbnRp
ZmllciYpOworICAgICAgICBDb250aW51ZU5vZGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJik7CisgICAgICAgIENvbnRpbnVlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKQEAgLTEyOTUsOCArMTI5OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgQnJlYWtOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBCcmVha05vZGUoSlNHbG9iYWxE
YXRhKiwgaW50KTsKLSAgICAgICAgQnJlYWtOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYpOwor
ICAgICAgICBCcmVha05vZGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7
CisgICAgICAgIEJyZWFrTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlm
aWVyJik7CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAg
LTEzMDYsNyArMTMxMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmV0dXJuTm9k
ZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgUmV0dXJuTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiB2
YWx1ZSk7CisgICAgICAgIFJldHVybk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIHZhbHVlKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogdmFsdWUoKSB7IHJl
dHVybiBtX3ZhbHVlOyB9CiAKQEAgLTEzMjAsNyArMTMyNCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgV2l0aE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBXaXRoTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSos
IHVpbnQzMl90IGRpdm90LCB1aW50MzJfdCBleHByZXNzaW9uTGVuZ3RoKTsKKyAgICAgICAgV2l0
aE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnRO
b2RlKiwgdWludDMyX3QgZGl2b3QsIHVpbnQzMl90IGV4cHJlc3Npb25MZW5ndGgpOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTMzMyw3ICsxMzM3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBMYWJlbE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9k
ZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IExhYmVsTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqKTsK
KyAgICAgICAgTGFiZWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1
YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKTsKQEAgLTEzNDQsNyArMTM0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgVGhyb3dOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBUaHJvd05vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSopOworICAgICAgICBUaHJvd05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAg
LTEzNTQsNyArMTM1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVHJ5Tm9kZSA6
IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFRyeU5vZGUoaW50
LCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciYgZXhjZXB0aW9uSWRl
bnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9j
ayk7CisgICAgICAgIFRyeU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU3RhdGVtZW50Tm9k
ZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2VwdGlvbklkZW50LCBTdGF0ZW1lbnRO
b2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTM4Myw4ICsxMzg3LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrIFZh
clN0YWNrOwogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNr
IEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIGludCwg
Ym9vbCBpblN0cmljdENvbnRleHQpOwotICAgICAgICBTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiwg
aW50LCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0
aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KTsKKyAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0
YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFNvdXJjZUNvZGUmLCBTb3VyY2VFbGVt
ZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBDb2RlRmVh
dHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHVzaW5nIFBhcnNlckFyZW5hUmVm
Q291bnRlZDo6b3BlcmF0b3IgbmV3OwogCkBAIC0xNDQ2LDEyICsxNDUwLDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIFByb2dyYW1Ob2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0Z1bmN0aW9uTm9kZSA9IGZhbHNl
OwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gY3JlYXRlKEpTR2xvYmFs
RGF0YSosIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJ
ZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNv
bnN0YW50cyk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBjcmVhdGUo
SlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU291cmNlRWxlbWVudHMqLCBW
YXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29k
ZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICBQcm9ncmFtTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3Rh
Y2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBD
b2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBQcm9ncmFtTm9kZShKU0ds
b2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTb3VyY2VFbGVtZW50cyosIFZhclN0
YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwg
Q29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CiAgICAgfTsKQEAgLTE0NTksMTIgKzE0NjMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgRXZhbE5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0
YXRpYyBjb25zdCBib29sIGlzRnVuY3Rpb25Ob2RlID0gZmFsc2U7Ci0gICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEV2YWxOb2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVt
ZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBT
b3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8RXZhbE5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayos
IElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24g
PSBmYWxzZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEV2YWxOb2RlKEpTR2xvYmFsRGF0YSos
IGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlm
aWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cyk7CisgICAgICAgIEV2YWxOb2RlKEpTR2xvYmFsRGF0YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmll
clNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMp
OwogCiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKICAgICB9OwpAQCAtMTQ4MSw4ICsxNDg1LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Cb2R5Tm9kZSA6IHB1YmxpYyBTY29w
ZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNGdW5jdGlv
bk5vZGUgPSB0cnVlOwotICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlKEpT
R2xvYmFsRGF0YSosIGludCwgYm9vbCBpc1N0cmljdE1vZGUpOwotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgaW50LCBTb3Vy
Y2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBj
b25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAg
ICAgc3RhdGljIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShKU0dsb2JhbERhdGEqLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBib29sIGlzU3RyaWN0TW9kZSk7CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayos
IElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKTsKIAogICAgICAgICBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KICAgICAgICAgc2l6ZV90IHBhcmFt
ZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLT5zaXplKCk7IH0KQEAgLTE0
OTksOCArMTUwMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgYm9v
bCBzY29wZUlzRnVuY3Rpb24gPSB0cnVlOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgRnVuY3Rp
b25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKLSAg
ICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRz
KiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJj
ZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBGdW5jdGlv
bkJvZHlOb2RlKEpTR2xvYmFsRGF0YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wgaW5T
dHJpY3RDb250ZXh0KTsKKyAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rp
b25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBJZGVudGlmaWVyIG1faWRlbnQ7CiAgICAg
ICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7CkBAIC0xNTA5LDcgKzE1MTMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmNFeHByTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jRXhwck5vZGUoaW50LCBjb25zdCBJZGVu
dGlmaWVyJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJO
b2RlKiA9IDApOworICAgICAgICBGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwg
UGFyYW1ldGVyTm9kZSogPSAwKTsKIAogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5KCkg
eyByZXR1cm4gbV9ib2R5OyB9CiAKQEAgLTE1MjMsNyArMTUyNyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgRnVuY0RlY2xOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgRnVuY0RlY2xOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIEZ1
bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsK
KyAgICAgICAgRnVuY0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50
aWZpZXImLCBGdW5jdGlvbkJvZHlOb2RlKiwgY29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRlck5v
ZGUqID0gMCk7CiAKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSgpIHsgcmV0dXJuIG1f
Ym9keTsgfQogCkBAIC0xNTc0LDcgKzE1NzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIFN3aXRjaE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAg
ICAgICBTd2l0Y2hOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqLCBDYXNlQmxvY2tOb2RlKik7Cisg
ICAgICAgIFN3aXRjaE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
LCBDYXNlQmxvY2tOb2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggZDg4YTlhOGI3NmJl
ZGU4YTA5MmFlN2ZiMmM1ZmJkYzVhZDU4ZmEzOS4uZDcxZTMwNGY4MDI5OWQ0ZTY5ZTFhMGE5YjBk
NjVmNzQ4MTFhZDI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApA
QCAtMTM4LDcgKzEzOCw3IEBAIHRlbXBsYXRlIDxTb3VyY2VFbGVtZW50c01vZGUgbW9kZSwgY2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8CiAgICAgYm9vbCBzZWVu
Tm9uRGlyZWN0aXZlID0gZmFsc2U7CiAgICAgY29uc3QgSWRlbnRpZmllciogZGlyZWN0aXZlID0g
MDsKICAgICB1bnNpZ25lZCBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gMDsKLSAgICB1bnNpZ25l
ZCBzdGFydE9mZnNldCA9IG1fdG9rZW4ubV9pbmZvLnN0YXJ0T2Zmc2V0OworICAgIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OwogICAgIHVuc2ln
bmVkIG9sZExhc3RMaW5lTnVtYmVyID0gbV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKTsKICAgICB1
bnNpZ25lZCBvbGRMaW5lTnVtYmVyID0gbV9sZXhlci0+bGluZU51bWJlcigpOwogICAgIGJvb2wg
aGFzU2V0U3RyaWN0ID0gZmFsc2U7CkBAIC0xNzIsNiArMTcyLDcgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJEZWNsYXJhdGlvbihUcmVlQnVpbGRlciYgY29u
dGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goVkFSKSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxv
Y2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgaW50IHN0YXJ0ID0gdG9rZW5MaW5lKCk7CiAg
ICAgaW50IGVuZCA9IDA7CiAgICAgaW50IHNjcmF0Y2g7CkBAIC0xODIsMjAgKzE4MywyMSBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlVmFyRGVjbGFyYXRpbwogICAgIGZhaWxJZlRydWUobV9lcnJvcik7CiAgICAgZmFp
bElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVWYXJTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdmFyRGVjbHMsIHN0YXJ0
LCBlbmQpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVZhclN0YXRlbWVudChsb2NhdGlvbiwg
dmFyRGVjbHMsIHN0YXJ0LCBlbmQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUNvbnN0RGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAg
ICAgQVNTRVJUKG1hdGNoKENPTlNUVE9LRU4pKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgc3RhcnQgPSB0b2tlbkxpbmUoKTsKICAgICBp
bnQgZW5kID0gMDsKICAgICBUcmVlQ29uc3REZWNsTGlzdCBjb25zdERlY2xzID0gcGFyc2VDb25z
dERlY2xhcmF0aW9uTGlzdChjb250ZXh0KTsKICAgICBmYWlsSWZUcnVlKG1fZXJyb3IpOwogICAg
IGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlQ29uc3RTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uc3REZWNs
cywgc3RhcnQsIGVuZCk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29uc3RTdGF0ZW1lbnQo
bG9jYXRpb24sIGNvbnN0RGVjbHMsIHN0YXJ0LCBlbmQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgpAQCAtMjEwLDYgKzIxMiw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEb1doaWxlU3RhdGVt
CiAgICAgZW5kTG9vcCgpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgaW50IGVu
ZExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5M
b2NhdGlvbigpKTsKICAgICBjb25zdW1lT3JGYWlsKFdISUxFKTsKICAgICBjb25zdW1lT3JGYWls
KE9QRU5QQVJFTik7CiAgICAgVHJlZUV4cHJlc3Npb24gZXhwciA9IHBhcnNlRXhwcmVzc2lvbihj
b250ZXh0KTsKQEAgLTIxNywxMyArMjIwLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEb1doaWxlU3RhdGVtCiAg
ICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKICAgICBpZiAobWF0Y2goU0VNSUNPTE9OKSkK
ICAgICAgICAgbmV4dCgpOyAvLyBBbHdheXMgcGVyZm9ybXMgYXV0b21hdGljIHNlbWljb2xvbiBp
bnNlcnRpb24uCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRG9XaGlsZVN0YXRlbWVudChtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCBzdGF0ZW1lbnQsIGV4cHIsIHN0YXJ0TGluZSwgZW5kTGlu
ZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRG9XaGlsZVN0YXRlbWVudChsb2NhdGlvbiwg
c3RhdGVtZW50LCBleHByLCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVdoaWxlU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBj
b250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChXSElMRSkpOworICAgIEpTVG9rZW5Mb2NhdGlv
biBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxp
bmUoKTsKICAgICBuZXh0KCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwpAQCAtMjM2
LDcgKzI0MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaGlsZVN0YXRlbWVuCiAgICAgVHJlZVN0YXRlbWVudCBz
dGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOwogICAgIGVuZExvb3Ao
KTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZVdoaWxlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIHN0YXRlbWVu
dCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaGlsZVN0
YXRlbWVudChsb2NhdGlvbiwgZXhwciwgc3RhdGVtZW50LCBzdGFydExpbmUsIGVuZExpbmUpOwog
fQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMjQ1LDYgKzI0OSw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlVmFyRGVjbGFyYXRpCiAgICAgVHJlZUV4cHJlc3Npb24gdmFyRGVjbHMgPSAwOwog
ICAgIGRvIHsKICAgICAgICAgZGVjbGFyYXRpb25zKys7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlv
biBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIG1h
dGNoT3JGYWlsKElERU5UKTsKICAgICAgICAgCkBAIC0yNjYsMTEgKzI3MSwxMSBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVZhckRlY2xhcmF0aQogICAgICAgICAgICAgbGFzdEluaXRpYWxpemVyID0gaW5pdGlhbGl6
ZXI7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShpbml0aWFsaXplcik7CiAgICAgICAgICAgICAK
LSAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBjb250ZXh0LmNyZWF0ZUFzc2lnblJl
c29sdmUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgKm5hbWUsIGluaXRpYWxpemVyLCBpbml0
aWFsQXNzaWdubWVudHMgIT0gbV9hc3NpZ25tZW50Q291bnQsIHZhclN0YXJ0LCB2YXJEaXZvdCwg
bGFzdFRva2VuRW5kKCkpOworICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IGNvbnRl
eHQuY3JlYXRlQXNzaWduUmVzb2x2ZShsb2NhdGlvbiwgKm5hbWUsIGluaXRpYWxpemVyLCBpbml0
aWFsQXNzaWdubWVudHMgIT0gbV9hc3NpZ25tZW50Q291bnQsIHZhclN0YXJ0LCB2YXJEaXZvdCwg
bGFzdFRva2VuRW5kKCkpOwogICAgICAgICAgICAgaWYgKCF2YXJEZWNscykKICAgICAgICAgICAg
ICAgICB2YXJEZWNscyA9IG5vZGU7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
dmFyRGVjbHMgPSBjb250ZXh0LmNvbWJpbmVDb21tYU5vZGVzKG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIHZhckRlY2xzLCBub2RlKTsKKyAgICAgICAgICAgICAgICB2YXJEZWNscyA9IGNvbnRl
eHQuY29tYmluZUNvbW1hTm9kZXMobG9jYXRpb24sIHZhckRlY2xzLCBub2RlKTsKICAgICAgICAg
fQogICAgIH0gd2hpbGUgKG1hdGNoKENPTU1BKSk7CiAgICAgcmV0dXJuIHZhckRlY2xzOwpAQCAt
MjgzLDYgKzI4OCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNvbnN0RGVj
bExpc3QgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29uc3REZWNsCiAgICAgVHJlZUNvbnN0RGVj
bExpc3QgY29uc3REZWNscyA9IDA7CiAgICAgVHJlZUNvbnN0RGVjbExpc3QgdGFpbCA9IDA7CiAg
ICAgZG8geworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigp
KTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXIqIG5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKQEAgLTI5NSw3
ICszMDEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDb25zdERlY2xMaXN0
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnN0RGVjbAogICAgICAgICAgICAgbmV4dChUcmVl
QnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7IC8vIGNvbnN1bWUgJz0nCiAgICAgICAgICAgICBp
bml0aWFsaXplciA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAg
IH0KLSAgICAgICAgdGFpbCA9IGNvbnRleHQuYXBwZW5kQ29uc3REZWNsKG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIHRhaWwsIG5hbWUsIGluaXRpYWxpemVyKTsKKyAgICAgICAgdGFpbCA9IGNv
bnRleHQuYXBwZW5kQ29uc3REZWNsKGxvY2F0aW9uLCB0YWlsLCBuYW1lLCBpbml0aWFsaXplcik7
CiAgICAgICAgIGlmICghY29uc3REZWNscykKICAgICAgICAgICAgIGNvbnN0RGVjbHMgPSB0YWls
OwogICAgIH0gd2hpbGUgKG1hdGNoKENPTU1BKSk7CkBAIC0zMDYsNiArMzEyLDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKEZPUikpOworICAgIEpTVG9rZW5Mb2Nh
dGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tl
bkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwpAQCAt
MzU1LDcgKzM2Miw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgICAgIGVuZExvb3Ao
KTsKICAgICAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICAgICAgCi0gICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBm
b3JJblRhcmdldCwgZm9ySW5Jbml0aWFsaXplciwgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0
LCBpbkxvY2F0aW9uLCBleHByRW5kLCBpbml0U3RhcnQsIGluaXRFbmQsIHN0YXJ0TGluZSwgZW5k
TGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChsb2NhdGlvbiwg
Zm9ySW5UYXJnZXQsIGZvckluSW5pdGlhbGl6ZXIsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFy
dCwgaW5Mb2NhdGlvbiwgZXhwckVuZCwgaW5pdFN0YXJ0LCBpbml0RW5kLCBzdGFydExpbmUsIGVu
ZExpbmUpOwogICAgIH0KICAgICAKICAgICBpZiAoIW1hdGNoKFNFTUlDT0xPTikpIHsKQEAgLTM5
MSw3ICszOTgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAgICAgICBUcmVlU3RhdGVt
ZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CiAgICAgICAg
IGVuZExvb3AoKTsKICAgICAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKLSAgICAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlRm9yTG9vcChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBkZWNs
cywgY29uZGl0aW9uLCBpbmNyZW1lbnQsIHN0YXRlbWVudCwgaGFzRGVjbGFyYXRpb24sIHN0YXJ0
TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckxvb3AobG9j
YXRpb24sIGRlY2xzLCBjb25kaXRpb24sIGluY3JlbWVudCwgc3RhdGVtZW50LCBoYXNEZWNsYXJh
dGlvbiwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICB9CiAgICAgCiAgICAgLy8gRm9yLWluIGxv
b3AKQEAgLTQwOCwxMyArNDE1LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgZW5k
TG9vcCgpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgCi0gICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlRm9ySW5Mb29wKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGRlY2xzLCBl
eHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBleHByRW5kLCBzdGFydExpbmUs
IGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChsb2NhdGlvbiwg
ZGVjbHMsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgZGVjbHNFbmQsIGV4cHJFbmQsIHN0
YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlQnJlYWtTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNT
RVJUKG1hdGNoKEJSRUFLKSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9j
YXRpb24oKSk7CiAgICAgaW50IHN0YXJ0Q29sID0gdG9rZW5TdGFydCgpOwogICAgIGludCBlbmRD
b2wgPSB0b2tlbkVuZCgpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKQEAgLTQy
Myw3ICs0MzEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQnJlYWtTdGF0ZW1lbgogICAgIAogICAgIGlmIChhdXRv
U2VtaUNvbG9uKCkpIHsKICAgICAgICAgZmFpbElmRmFsc2VXaXRoTWVzc2FnZShicmVha0lzVmFs
aWQoKSwgIidicmVhaycgaXMgb25seSB2YWxpZCBpbnNpZGUgYSBzd2l0Y2ggb3IgbG9vcCBzdGF0
ZW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQnJlYWtTdGF0ZW1lbnQobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRM
aW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQnJlYWtTdGF0ZW1lbnQobG9jYXRp
b24sIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiAgICAgfQogICAgIG1h
dGNoT3JGYWlsKElERU5UKTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4u
bV9kYXRhLmlkZW50OwpAQCAtNDMyLDEzICs0NDAsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJyZWFrU3RhdGVt
ZW4KICAgICBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogICAgIGZhaWxJZkZh
bHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQnJlYWtTdGF0
ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgaWRlbnQsIHN0YXJ0Q29sLCBlbmRDb2ws
IHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQnJlYWtTdGF0
ZW1lbnQobG9jYXRpb24sIGlkZW50LCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExp
bmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnRp
bnVlU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChD
T05USU5VRSkpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OwogICAgIGludCBzdGFydENvbCA9IHRva2VuU3RhcnQoKTsKICAgICBpbnQgZW5kQ29sID0gdG9r
ZW5FbmQoKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CkBAIC00NDcsNyArNDU2
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUNvbnRpbnVlU3RhdGUKICAgICAKICAgICBpZiAoYXV0b1NlbWlDb2xv
bigpKSB7CiAgICAgICAgIGZhaWxJZkZhbHNlV2l0aE1lc3NhZ2UoY29udGludWVJc1ZhbGlkKCks
ICInY29udGludWUnIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGEgbG9vcCBzdGF0ZW1lbnQiKTsKLSAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobG9jYXRpb24sIHN0
YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiAgICAgfQogICAgIG1hdGNoT3JG
YWlsKElERU5UKTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRh
LmlkZW50OwpAQCAtNDU4LDEzICs0NjcsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnRpbnVlU3RhdGUKICAg
ICBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogICAgIGZhaWxJZkZhbHNlKGF1
dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1l
bnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgaWRlbnQsIHN0YXJ0Q29sLCBlbmRDb2wsIHN0
YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0
ZW1lbnQobG9jYXRpb24sIGlkZW50LCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExp
bmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVJldHVy
blN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goUkVU
VVJOKSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAg
ICAgZmFpbElmRmFsc2UoY3VycmVudFNjb3BlKCktPmlzRnVuY3Rpb24oKSk7CiAgICAgaW50IHN0
YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIGludCBlbmRMaW5lID0gc3RhcnRMaW5lOwpAQCAt
NDc3LDIwICs0ODcsMjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVJldHVyblN0YXRlbWUKICAgICBpZiAobWF0Y2go
U0VNSUNPTE9OKSkKICAgICAgICAgZW5kTGluZSAgPSB0b2tlbkxpbmUoKTsKICAgICBpZiAoYXV0
b1NlbWlDb2xvbigpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXR1cm5TdGF0ZW1l
bnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgMCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBl
bmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KGxv
Y2F0aW9uLCAwLCBzdGFydCwgZW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIFRyZWVFeHBy
ZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uo
ZXhwcik7CiAgICAgZW5kID0gbGFzdFRva2VuRW5kKCk7CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xP
TikpCiAgICAgICAgIGVuZExpbmUgID0gdG9rZW5MaW5lKCk7CiAgICAgZmFpbElmRmFsc2UoYXV0
b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBl
bmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobG9jYXRp
b24sIGV4cHIsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVGhyb3dTdGF0ZW1lbnQoVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFRIUk9XKSk7CisgICAgSlNUb2tlbkxv
Y2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgaW50IGVTdGFydCA9IHRva2Vu
U3RhcnQoKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwpA
QCAtNTAzLDEzICs1MTQsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVRocm93U3RhdGVtZW4KICAgICBpbnQgZW5k
TGluZSA9IHRva2VuTGluZSgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7CiAg
ICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVGhyb3dTdGF0ZW1lbnQobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwgZXhwciwgZVN0YXJ0LCBlRW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwor
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVRocm93U3RhdGVtZW50KGxvY2F0aW9uLCBleHByLCBl
U3RhcnQsIGVFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlV2l0aFN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4
dCkKIHsKICAgICBBU1NFUlQobWF0Y2goV0lUSCkpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGZhaWxJZlRydWVXaXRoTWVzc2FnZShzdHJpY3RN
b2RlKCksICInd2l0aCcgc3RhdGVtZW50cyBhcmUgbm90IHZhbGlkIGluIHN0cmljdCBtb2RlIik7
CiAgICAgY3VycmVudFNjb3BlKCktPnNldE5lZWRzRnVsbEFjdGl2YXRpb24oKTsKICAgICBpbnQg
c3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CkBAIC01MjYsMTMgKzUzOCwxNCBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
V2l0aFN0YXRlbWVudAogICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1l
bnQoY29udGV4dCwgdW51c2VkKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIAot
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVdpdGhTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgZXhwciwgc3RhdGVtZW50LCBzdGFydCwgZW5kLCBzdGFydExpbmUsIGVuZExpbmUp
OworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVdpdGhTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIs
IHN0YXRlbWVudCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTd2l0Y2hTdGF0ZW1lbnQoVHJlZUJ1
aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFNXSVRDSCkpOworICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBzdGFydExpbmUg
PSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4p
OwpAQCAtNTUzLDcgKzU2Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTd2l0Y2hTdGF0ZW1lCiAgICAgZW5kU3dp
dGNoKCk7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFKTsKICAgICAKLSAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
ZXhwciwgZmlyc3RDbGF1c2VzLCBkZWZhdWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2VzLCBzdGFydExp
bmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVN3aXRjaFN0YXRlbWVudChs
b2NhdGlvbiwgZXhwciwgZmlyc3RDbGF1c2VzLCBkZWZhdWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2Vz
LCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIAogfQogCkBAIC02MDEsNiArNjE0LDcgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VUcnlTdGF0ZW1lbnQoVHJlZUJ1
aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFRSWSkpOworICAgIEpTVG9rZW5M
b2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIFRyZWVTdGF0ZW1lbnQgdHJ5
QmxvY2sgPSAwOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gJm1fZ2xvYmFsRGF0YS0+
cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7CiAgICAgVHJlZVN0YXRlbWVudCBjYXRjaEJs
b2NrID0gMDsKQEAgLTYzNywzNyArNjUxLDM5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VUcnlTdGF0ZW1lbnQoCiAg
ICAgICAgIGZhaWxJZkZhbHNlKGZpbmFsbHlCbG9jayk7CiAgICAgfQogICAgIGZhaWxJZkZhbHNl
KGNhdGNoQmxvY2sgfHwgZmluYWxseUJsb2NrKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVU
cnlTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdHJ5QmxvY2ssIGlkZW50LCBj
YXRjaEJsb2NrLCBmaW5hbGx5QmxvY2ssIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZVRyeVN0YXRlbWVudChsb2NhdGlvbiwgdHJ5QmxvY2ssIGlkZW50LCBj
YXRjaEJsb2NrLCBmaW5hbGx5QmxvY2ssIGZpcnN0TGluZSwgbGFzdExpbmUpOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlYnVnZ2VyU3RhdGVtZW50KFRy
ZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChERUJVR0dFUikpOworICAg
IEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBzdGFy
dExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQgZW5kTGluZSA9IHN0YXJ0TGluZTsKICAgICBu
ZXh0KCk7CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIHN0YXJ0TGluZSA9IHRv
a2VuTGluZSgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlRGVidWdnZXIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RhcnRM
aW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVEZWJ1Z2dlcihsb2NhdGlv
biwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VCbG9ja1N0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAg
ICBBU1NFUlQobWF0Y2goT1BFTkJSQUNFKSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9u
KHRva2VuTG9jYXRpb24oKSk7CiAgICAgaW50IHN0YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4
dCgpOwogICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkgewogICAgICAgICBuZXh0KCk7Ci0gICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2NrU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIDAsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlQmxvY2tTdGF0ZW1lbnQobG9jYXRpb24sIDAsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKICAg
ICB9CiAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN1YnRyZWUgPSBwYXJzZVNvdXJjZUVsZW1lbnRz
PERvbnRDaGVja0ZvclN0cmljdE1vZGU+KGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHN1YnRy
ZWUpOwogICAgIG1hdGNoT3JGYWlsKENMT1NFQlJBQ0UpOwogICAgIG5leHQoKTsKLSAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVCbG9ja1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCBzdWJ0cmVlLCBzdGFydCwgbV9sYXN0TGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
QmxvY2tTdGF0ZW1lbnQobG9jYXRpb24sIHN1YnRyZWUsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTY4OCw5ICs3MDQsMTEgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVN0YXRlbWVudChUcmUKICAgICBjYXNlIEZVTkNUSU9OOgogICAgICAgICBmYWlsSWZG
YWxzZUlmU3RyaWN0V2l0aE1lc3NhZ2UobV9zdGF0ZW1lbnREZXB0aCA9PSAxLCAiRnVuY3Rpb25z
IGNhbm5vdCBiZSBkZWNsYXJlZCBpbiBhIG5lc3RlZCBibG9jayBpbiBzdHJpY3QgbW9kZSIpOwog
ICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKGNvbnRleHQpOwotICAgIGNh
c2UgU0VNSUNPTE9OOgorICAgIGNhc2UgU0VNSUNPTE9OOiB7CisgICAgICAgIEpTVG9rZW5Mb2Nh
dGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUVtcHR5U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCkpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFbXB0eVN0YXRlbWVudChsb2Nh
dGlvbik7CisgICAgfQogICAgIGNhc2UgSUY6CiAgICAgICAgIHJldHVybiBwYXJzZUlmU3RhdGVt
ZW50KGNvbnRleHQpOwogICAgIGNhc2UgRE86CkBAIC03MjYsNyArNzQ0LDcgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZVN0YXRlbWVudChUcmUKICAgICBjYXNlIFNUUklORzoKICAgICAgICAgZGlyZWN0aXZlID0gbV90
b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIGlmIChkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKQot
ICAgICAgICAgICAgKmRpcmVjdGl2ZUxpdGVyYWxMZW5ndGggPSBtX3Rva2VuLm1faW5mby5lbmRP
ZmZzZXQgLSBtX3Rva2VuLm1faW5mby5zdGFydE9mZnNldDsKKyAgICAgICAgICAgICpkaXJlY3Rp
dmVMaXRlcmFsTGVuZ3RoID0gbV90b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldCAtIG1fdG9rZW4u
bV9sb2NhdGlvbi5zdGFydE9mZnNldDsKICAgICAgICAgbm9uVHJpdmlhbEV4cHJlc3Npb25Db3Vu
dCA9IG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudDsKICAgICBkZWZhdWx0OgogICAgICAgICBU
cmVlU3RhdGVtZW50IGV4cHJTdGF0ZW1lbnQgPSBwYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoY29u
dGV4dCk7CkBAIC03NTksMTIgKzc3NywxMiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAg
ICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1
bmN0aW9uQm9keShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBzdHJpY3RNb2RlKCkpOworICAg
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkodG9rZW5Mb2NhdGlvbigpLCBz
dHJpY3RNb2RlKCkpOwogICAgIERlcHRoTWFuYWdlciBzdGF0ZW1lbnREZXB0aCgmbV9zdGF0ZW1l
bnREZXB0aCk7CiAgICAgbV9zdGF0ZW1lbnREZXB0aCA9IDA7CiAgICAgdHlwZW5hbWUgVHJlZUJ1
aWxkZXI6OkZ1bmN0aW9uQm9keUJ1aWxkZXIgYm9keUJ1aWxkZXIoY29uc3RfY2FzdDxKU0dsb2Jh
bERhdGEqPihtX2dsb2JhbERhdGEpLCBtX2xleGVyLmdldCgpKTsKICAgICBmYWlsSWZGYWxzZShw
YXJzZVNvdXJjZUVsZW1lbnRzPENoZWNrRm9yU3RyaWN0TW9kZT4oYm9keUJ1aWxkZXIpKTsKLSAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgc3RyaWN0TW9kZSgpKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJv
ZHkodG9rZW5Mb2NhdGlvbigpLCBzdHJpY3RNb2RlKCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgpAQCAtNzg5LDIwICs4MDcsMjEgQEAgdGVtcGxhdGUgPEZ1bmN0aW9uUmVx
dWlyZW1lbnRzIHJlcXVpcmVtZW50cywgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgY2xh
c3MKICAgICAKICAgICBvcGVuQnJhY2VQb3MgPSBtX3Rva2VuLm1fZGF0YS5pbnRWYWx1ZTsKICAg
ICBib2R5U3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0
aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgCiAgICAgLy8gSWYgd2Uga25vdyBhYm91dCB0aGlz
IGZ1bmN0aW9uIGFscmVhZHksIHdlIGNhbiB1c2UgdGhlIGNhY2hlZCBpbmZvIGFuZCBza2lwIHRo
ZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCiAgICAgaWYgKGNvbnN0IFNvdXJj
ZVByb3ZpZGVyQ2FjaGVJdGVtKiBjYWNoZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0
aW9uQ2FjaGUgPyBmaW5kQ2FjaGVkRnVuY3Rpb25JbmZvKG9wZW5CcmFjZVBvcykgOiAwKSB7CiAg
ICAgICAgIC8vIElmIHdlJ3JlIGluIGEgc3RyaWN0IGNvbnRleHQsIHRoZSBjYWNoZWQgZnVuY3Rp
b24gaW5mbyBtdXN0IHNheSBpdCB3YXMgc3RyaWN0IHRvby4KICAgICAgICAgQVNTRVJUKCFzdHJp
Y3RNb2RlKCkgfHwgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7Ci0gICAgICAgIGJvZHkgPSBjb250
ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjYWNoZWRJ
bmZvLT5zdHJpY3RNb2RlKTsKKyAgICAgICAgYm9keSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25C
b2R5KGxvY2F0aW9uLCBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlKTsKICAgICAgICAgCiAgICAgICAg
IGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGdW5jdGlvbkluZm8oY2FjaGVkSW5mbyk7CiAgICAgICAg
IGZhaWxJZkZhbHNlKHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0Zy
ZWVWYXJpYWJsZUluZm8pKTsKICAgICAgICAgCiAgICAgICAgIGNsb3NlQnJhY2VQb3MgPSBjYWNo
ZWRJbmZvLT5jbG9zZUJyYWNlUG9zOwogICAgICAgICBtX3Rva2VuID0gY2FjaGVkSW5mby0+Y2xv
c2VCcmFjZVRva2VuKCk7Ci0gICAgICAgIG1fbGV4ZXItPnNldE9mZnNldChtX3Rva2VuLm1faW5m
by5lbmRPZmZzZXQpOwotICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9p
bmZvLmxpbmUpOworICAgICAgICBtX2xleGVyLT5zZXRPZmZzZXQobV90b2tlbi5tX2xvY2F0aW9u
LmVuZE9mZnNldCk7CisgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xv
Y2F0aW9uLmxpbmUpOwogICAgICAgICAKICAgICAgICAgbmV4dCgpOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTgyNCw3ICs4NDMsNyBAQCB0ZW1wbGF0ZSA8RnVuY3Rpb25SZXF1aXJlbWVudHMg
cmVxdWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3BlLCBjbGFzcwogICAgIE93
blB0cjxTb3VyY2VQcm92aWRlckNhY2hlSXRlbT4gbmV3SW5mbzsKICAgICBpbnQgZnVuY3Rpb25M
ZW5ndGggPSBjbG9zZUJyYWNlUG9zIC0gb3BlbkJyYWNlUG9zOwogICAgIGlmIChUcmVlQnVpbGRl
cjo6Q2FuVXNlRnVuY3Rpb25DYWNoZSAmJiBtX2Z1bmN0aW9uQ2FjaGUgJiYgZnVuY3Rpb25MZW5n
dGggPiBtaW5pbXVtRnVuY3Rpb25MZW5ndGhUb0NhY2hlKSB7Ci0gICAgICAgIG5ld0luZm8gPSBh
ZG9wdFB0cihuZXcgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0obV90b2tlbi5tX2luZm8ubGluZSwg
Y2xvc2VCcmFjZVBvcykpOworICAgICAgICBuZXdJbmZvID0gYWRvcHRQdHIobmV3IFNvdXJjZVBy
b3ZpZGVyQ2FjaGVJdGVtKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lLCBjbG9zZUJyYWNlUG9zKSk7
CiAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnNhdmVGdW5jdGlvbkluZm8obmV3SW5mby5nZXQoKSk7
CiAgICAgfQogICAgIApAQCAtODQ0LDYgKzg2Myw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihUcmVlQnVpbGRlciYgY29udGV4
dCkKIHsKICAgICBBU1NFUlQobWF0Y2goRlVOQ1RJT04pKTsKKyAgICBKU1Rva2VuTG9jYXRpb24g
bG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBuZXh0KCk7CiAgICAgY29uc3QgSWRlbnRp
ZmllciogbmFtZSA9IDA7CiAgICAgVHJlZUZvcm1hbFBhcmFtZXRlckxpc3QgcGFyYW1ldGVycyA9
IDA7CkBAIC04NTQsNyArODc0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGEKICAgICBmYWls
SWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25OZWVkc05hbWUsIHRydWU+KGNvbnRl
eHQsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywg
Ym9keVN0YXJ0TGluZSkpKTsKICAgICBmYWlsSWZGYWxzZShuYW1lKTsKICAgICBmYWlsSWZGYWxz
ZUlmU3RyaWN0KGRlY2xhcmVWYXJpYWJsZShuYW1lKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRnVuY0RlY2xTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgbmFtZSwgYm9k
eSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5l
LCBtX2xhc3RMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVu
dChsb2NhdGlvbiwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBjbG9zZUJy
YWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKIH0KIAogc3RydWN0IExhYmVsSW5m
byB7CkBAIC04NzgsMTAgKzg5OCwxMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lvbk9yTAogICAgICAq
IHNwZWNpYWwgY2FzZSB0aGF0IGxvb2tzIGZvciBhIGNvbG9uIGFzIHRoZSBuZXh0IGNoYXJhY3Rl
ciBpbiB0aGUgaW5wdXQuCiAgICAgICovCiAgICAgVmVjdG9yPExhYmVsSW5mbz4gbGFiZWxzOwot
ICAgIAorICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbjsKICAgICBkbyB7CiAgICAgICAgIGlu
dCBzdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGlu
ZSgpOworICAgICAgICBsb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKICAgICAgICAgaWYgKCFu
ZXh0VG9rZW5Jc0NvbG9uKCkpIHsKICAgICAgICAgICAgIC8vIElmIHdlIGhpdCB0aGlzIHBhdGgg
d2UncmUgbWFraW5nIGEgZXhwcmVzc2lvbiBzdGF0ZW1lbnQsIHdoaWNoCiAgICAgICAgICAgICAv
LyBieSBkZWZpbml0aW9uIGNhbid0IG1ha2UgdXNlIG9mIGNvbnRpbnVlL2JyZWFrIHNvIHdlIGNh
biBqdXN0CkBAIC04ODksNyArOTEwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb25PckwKICAgICAg
ICAgICAgIFRyZWVFeHByZXNzaW9uIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb24oY29udGV4
dCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShleHByZXNzaW9uKTsKICAgICAgICAgICAgIGZh
aWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVFeHByU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHJlc3Npb24s
IHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVFeHByU3RhdGVtZW50KGxvY2F0aW9uLCBleHByZXNzaW9uLCBzdGFydExpbmUsIG1fbGFzdExp
bmUpOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tl
bi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIGludCBlbmQgPSB0b2tlbkVuZCgpOwpAQCAtOTI4LDcg
Kzk0OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uT3JMCiAgICAgZmFpbElmRmFsc2Uoc3RhdGVt
ZW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxhYmVscy5zaXplKCk7IGkrKykgewog
ICAgICAgICBjb25zdCBMYWJlbEluZm8mIGluZm8gPSBsYWJlbHNbbGFiZWxzLnNpemUoKSAtIGkg
LSAxXTsKLSAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5jcmVhdGVMYWJlbFN0YXRlbWVudCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBpbmZvLm1faWRlbnQsIHN0YXRlbWVudCwgaW5mby5t
X3N0YXJ0LCBpbmZvLm1fZW5kKTsKKyAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5jcmVhdGVM
YWJlbFN0YXRlbWVudChsb2NhdGlvbiwgaW5mby5tX2lkZW50LCBzdGF0ZW1lbnQsIGluZm8ubV9z
dGFydCwgaW5mby5tX2VuZCk7CiAgICAgfQogICAgIHJldHVybiBzdGF0ZW1lbnQ7CiB9CkBAIC05
MzcsMTcgKzk1OCwxOCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUV4cHJlc3Npb25TdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgaW50IHN0
YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tl
bkxvY2F0aW9uKCkpOwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJl
c3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcmVzc2lvbik7CiAgICAgZmFpbElm
RmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHByU3Rh
dGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHJlc3Npb24sIHN0YXJ0TGluZSwg
bV9sYXN0TGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChsb2Nh
dGlvbiwgZXhwcmVzc2lvbiwgc3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJZlN0YXRlbWVudChUcmVlQnVpbGRlciYg
Y29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goSUYpKTsKLSAgICAKKyAgICBKU1Rva2VuTG9j
YXRpb24gaWZMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBzdGFydCA9IHRva2Vu
TGluZSgpOwogICAgIG5leHQoKTsKICAgICAKQEAgLTk2MywxMyArOTg1LDE1IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VJZlN0YXRlbWVudChUCiAgICAgZmFpbElmRmFsc2UodHJ1ZUJsb2NrKTsKICAgICAKICAgICBp
ZiAoIW1hdGNoKEVMU0UpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJZlN0YXRlbWVu
dChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjb25kaXRpb24sIHRydWVCbG9jaywgc3RhcnQs
IGVuZCk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KGlmTG9jYXRp
b24sIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBzdGFydCwgZW5kKTsKICAgICAKICAgICBWZWN0b3I8
VHJlZUV4cHJlc3Npb24+IGV4cHJTdGFjazsKICAgICBWZWN0b3I8cGFpcjxpbnQsIGludD4gPiBw
b3NTdGFjazsKKyAgICBWZWN0b3I8SlNUb2tlbkxvY2F0aW9uPiB0b2tlbkxvY2F0aW9uU3RhY2s7
CiAgICAgVmVjdG9yPFRyZWVTdGF0ZW1lbnQ+IHN0YXRlbWVudFN0YWNrOwogICAgIGJvb2wgdHJh
aWxpbmdFbHNlID0gZmFsc2U7CiAgICAgZG8geworICAgICAgICB0b2tlbkxvY2F0aW9uU3RhY2su
YXBwZW5kKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKCFt
YXRjaChJRikpIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIHVudXNlZCA9IDA7CkBA
IC05OTUsNyArMTAxOSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJZlN0YXRlbWVudChUCiAgICAgICAgIHBvc1N0
YWNrLmFwcGVuZChtYWtlX3BhaXIoaW5uZXJTdGFydCwgaW5uZXJFbmQpKTsKICAgICAgICAgc3Rh
dGVtZW50U3RhY2suYXBwZW5kKGlubmVyVHJ1ZUJsb2NrKTsKICAgICB9IHdoaWxlIChtYXRjaChF
TFNFKSk7Ci0gICAgCisKICAgICBpZiAoIXRyYWlsaW5nRWxzZSkgewogICAgICAgICBUcmVlRXhw
cmVzc2lvbiBjb25kaXRpb24gPSBleHByU3RhY2subGFzdCgpOwogICAgICAgICBleHByU3RhY2su
cmVtb3ZlTGFzdCgpOwpAQCAtMTAwMyw3ICsxMDI3LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlmU3RhdGVtZW50
KFQKICAgICAgICAgc3RhdGVtZW50U3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICBwYWlyPGlu
dCwgaW50PiBwb3MgPSBwb3NTdGFjay5sYXN0KCk7CiAgICAgICAgIHBvc1N0YWNrLnJlbW92ZUxh
c3QoKTsKLSAgICAgICAgc3RhdGVtZW50U3RhY2suYXBwZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0
ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHBv
cy5maXJzdCwgcG9zLnNlY29uZCkpOworICAgICAgICBKU1Rva2VuTG9jYXRpb24gZWxzZUxvY2F0
aW9uID0gdG9rZW5Mb2NhdGlvblN0YWNrLmxhc3QoKTsKKyAgICAgICAgdG9rZW5Mb2NhdGlvblN0
YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgc3RhdGVtZW50U3RhY2suYXBwZW5kKGNvbnRleHQu
Y3JlYXRlSWZTdGF0ZW1lbnQoZWxzZUxvY2F0aW9uLCBjb25kaXRpb24sIHRydWVCbG9jaywgcG9z
LmZpcnN0LCBwb3Muc2Vjb25kKSk7CiAgICAgfQogICAgIAogICAgIHdoaWxlICghZXhwclN0YWNr
LmlzRW1wdHkoKSkgewpAQCAtMTAxNSwxNiArMTA0MSwxOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSWZTdGF0ZW1l
bnQoVAogICAgICAgICBzdGF0ZW1lbnRTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgIHBhaXI8
aW50LCBpbnQ+IHBvcyA9IHBvc1N0YWNrLmxhc3QoKTsKICAgICAgICAgcG9zU3RhY2sucmVtb3Zl
TGFzdCgpOwotICAgICAgICBzdGF0ZW1lbnRTdGFjay5hcHBlbmQoY29udGV4dC5jcmVhdGVJZlN0
YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjb25kaXRpb24sIHRydWVCbG9jaywg
ZmFsc2VCbG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vjb25kKSk7CisgICAgICAgIEpTVG9rZW5Mb2Nh
dGlvbiBlbHNlTG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uU3RhY2subGFzdCgpOworICAgICAgICB0
b2tlbkxvY2F0aW9uU3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICBzdGF0ZW1lbnRTdGFjay5h
cHBlbmQoY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChlbHNlTG9jYXRpb24sIGNvbmRpdGlvbiwg
dHJ1ZUJsb2NrLCBmYWxzZUJsb2NrLCBwb3MuZmlyc3QsIHBvcy5zZWNvbmQpKTsKICAgICB9CiAg
ICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXRlbWVudFN0YWNrLmxhc3QoKSwg
c3RhcnQsIGVuZCk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQoaWZMb2Nh
dGlvbiwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXRlbWVudFN0YWNrLmxhc3QoKSwgc3RhcnQs
IGVuZCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4
cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgZmFpbElmU3RhY2tPdmVyZmxv
dygpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAg
IFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQp
OwogICAgIGZhaWxJZkZhbHNlKG5vZGUpOwogICAgIGlmICghbWF0Y2goQ09NTUEpKQpAQCAtMTAz
NCw3ICsxMDYzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uKFQKICAgICBtX25vbkxIU0NvdW50
Kys7CiAgICAgVHJlZUV4cHJlc3Npb24gcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9u
KGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHJpZ2h0KTsKLSAgICB0eXBlbmFtZSBUcmVlQnVp
bGRlcjo6Q29tbWEgY29tbWFOb2RlID0gY29udGV4dC5jcmVhdGVDb21tYUV4cHIobV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwgbm9kZSwgcmlnaHQpOworICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVy
OjpDb21tYSBjb21tYU5vZGUgPSBjb250ZXh0LmNyZWF0ZUNvbW1hRXhwcihsb2NhdGlvbiwgbm9k
ZSwgcmlnaHQpOwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAgbmV4dChUcmVl
QnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAgICAgICAgIHJpZ2h0ID0gcGFyc2VBc3NpZ25t
ZW50RXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTEwNDksNiArMTA3OCw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlQXNzaWdubWVuCiB7CiAgICAgZmFpbElmU3RhY2tPdmVyZmxvdygpOwogICAgIGludCBzdGFy
dCA9IHRva2VuU3RhcnQoKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2Nh
dGlvbigpKTsKICAgICBpbnQgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCA9IG1fYXNzaWdubWVudENv
dW50OwogICAgIGludCBpbml0aWFsTm9uTEhTQ291bnQgPSBtX25vbkxIU0NvdW50OwogICAgIFRy
ZWVFeHByZXNzaW9uIGxocyA9IHBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKGNvbnRleHQpOwpA
QCAtMTEwMSw3ICsxMTMxLDcgQEAgZW5kOgogICAgICAgICByZXR1cm4gbGhzOwogICAgIAogICAg
IHdoaWxlIChhc3NpZ25tZW50U3RhY2spCi0gICAgICAgIGxocyA9IGNvbnRleHQuY3JlYXRlQXNz
aWdubWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBhc3NpZ25tZW50U3RhY2ssIGxocywg
aW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50Q291bnQsIGxhc3RUb2tlbkVuZCgp
KTsKKyAgICAgICAgbGhzID0gY29udGV4dC5jcmVhdGVBc3NpZ25tZW50KGxvY2F0aW9uLCBhc3Np
Z25tZW50U3RhY2ssIGxocywgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50Q291
bnQsIGxhc3RUb2tlbkVuZCgpKTsKICAgICAKICAgICByZXR1cm4gbGhzOwogfQpAQCAtMTEwOSw2
ICsxMTM5LDcgQEAgZW5kOgogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogeworICAgIEpT
VG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIFRyZWVFeHByZXNz
aW9uIGNvbmQgPSBwYXJzZUJpbmFyeUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFs
c2UoY29uZCk7CiAgICAgaWYgKCFtYXRjaChRVUVTVElPTikpCkBAIC0xMTIxLDcgKzExNTIsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUNvbmRpdGlvbmFsRQogICAgIAogICAgIFRyZWVFeHByZXNzaW9uIHJocyA9
IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uocmhz
KTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDb25kaXRpb25hbEV4cHIobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwgY29uZCwgbGhzLCByaHMpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUNvbmRpdGlvbmFsRXhwcihsb2NhdGlvbiwgY29uZCwgbGhzLCByaHMpOwogfQogCiBBTFdBWVNf
SU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikKQEAgLTExNDQs
NiArMTE3NSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQmluYXJ5RXhwcmVzCiAgICAgaW50IG9wZXJhbmRTdGFj
a0RlcHRoID0gMDsKICAgICBpbnQgb3BlcmF0b3JTdGFja0RlcHRoID0gMDsKICAgICB0eXBlbmFt
ZSBUcmVlQnVpbGRlcjo6QmluYXJ5RXhwckNvbnRleHQgYmluYXJ5RXhwckNvbnRleHQoY29udGV4
dCk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAg
d2hpbGUgKHRydWUpIHsKICAgICAgICAgaW50IGV4cHJTdGFydCA9IHRva2VuU3RhcnQoKTsKICAg
ICAgICAgaW50IGluaXRpYWxBc3NpZ25tZW50cyA9IG1fYXNzaWdubWVudENvdW50OwpAQCAtMTE2
NSw3ICsxMTk3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VCaW5hcnlFeHByZXMKICAgICAgICAgICAgIHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpCaW5hcnlPcGVyYW5kIHJocyA9IGNvbnRleHQuZ2V0RnJvbU9wZXJh
bmRTdGFjaygtMSk7CiAgICAgICAgICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3Bl
cmFuZCBsaHMgPSBjb250ZXh0LmdldEZyb21PcGVyYW5kU3RhY2soLTIpOwogICAgICAgICAgICAg
Y29udGV4dC5zaHJpbmtPcGVyYW5kU3RhY2tCeShvcGVyYW5kU3RhY2tEZXB0aCwgMik7Ci0gICAg
ICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9wZXJhdGlvbihtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBvcGVyYW5kU3RhY2tEZXB0aCwgb3BlcmF0b3JTdGFja0RlcHRoLCBsaHMsIHJocyk7
CisgICAgICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9wZXJhdGlvbihsb2NhdGlvbiwgb3Bl
cmFuZFN0YWNrRGVwdGgsIG9wZXJhdG9yU3RhY2tEZXB0aCwgbGhzLCByaHMpOwogICAgICAgICAg
ICAgY29udGV4dC5vcGVyYXRvclN0YWNrUG9wKG9wZXJhdG9yU3RhY2tEZXB0aCk7CiAgICAgICAg
IH0KICAgICAgICAgY29udGV4dC5vcGVyYXRvclN0YWNrQXBwZW5kKG9wZXJhdG9yU3RhY2tEZXB0
aCwgb3BlcmF0b3JUb2tlbiwgcHJlY2VkZW5jZSk7CkBAIC0xMTc2LDcgKzEyMDgsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUJpbmFyeUV4cHJlcwogICAgICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5
T3BlcmFuZCByaHMgPSBjb250ZXh0LmdldEZyb21PcGVyYW5kU3RhY2soLTEpOwogICAgICAgICB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3BlcmFuZCBsaHMgPSBjb250ZXh0LmdldEZyb21P
cGVyYW5kU3RhY2soLTIpOwogICAgICAgICBjb250ZXh0LnNocmlua09wZXJhbmRTdGFja0J5KG9w
ZXJhbmRTdGFja0RlcHRoLCAyKTsKLSAgICAgICAgY29udGV4dC5hcHBlbmRCaW5hcnlPcGVyYXRp
b24obV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgb3BlcmFuZFN0YWNrRGVwdGgsIG9wZXJhdG9y
U3RhY2tEZXB0aCwgbGhzLCByaHMpOworICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9wZXJh
dGlvbihsb2NhdGlvbiwgb3BlcmFuZFN0YWNrRGVwdGgsIG9wZXJhdG9yU3RhY2tEZXB0aCwgbGhz
LCByaHMpOwogICAgICAgICBjb250ZXh0Lm9wZXJhdG9yU3RhY2tQb3Aob3BlcmF0b3JTdGFja0Rl
cHRoKTsKICAgICB9CiAgICAgcmV0dXJuIGNvbnRleHQucG9wT3BlcmFuZFN0YWNrKG9wZXJhbmRT
dGFja0RlcHRoKTsKQEAgLTEyMjUsMTEgKzEyNTcsMTIgQEAgdGVtcGxhdGUgPGJvb2wgY29tcGxl
dGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFyc2VyPExleGVyVHlwZT46OnBh
cnMKICAgICAgICAgICAgIG51bWVyaWNQcm9wZXJ0eU5hbWUgPSBtX3Rva2VuLm1fZGF0YS5kb3Vi
bGVWYWx1ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZmFpbCgpOworICAgICAgICBKU1Rv
a2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwog
ICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25Ob1JlcXVpcmVt
ZW50cywgZmFsc2U+KGNvbnRleHQsIGFjY2Vzc29yTmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3Bl
bkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSkpOwogICAgICAgICBpZiAo
c3RyaW5nUHJvcGVydHlOYW1lKQotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQudGVtcGxhdGUg
Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eTxjb21wbGV0ZT4obV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgdHlwZSwgc3RyaW5nUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVu
QnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOwotICAg
ICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5
PGNvbXBsZXRlPihjb25zdF9jYXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xvYmFsRGF0YSksIG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIHR5cGUsIG51bWVyaWNQcm9wZXJ0eU5hbWUsIHBhcmFtZXRl
cnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9s
YXN0TGluZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0
ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihsb2NhdGlvbiwgdHlwZSwgc3RyaW5nUHJvcGVy
dHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJv
ZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOworICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0
ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihjb25zdF9jYXN0PEpTR2xv
YmFsRGF0YSo+KG1fZ2xvYmFsRGF0YSksIGxvY2F0aW9uLCB0eXBlLCBudW1lcmljUHJvcGVydHlO
YW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlT
dGFydExpbmUsIG1fbGFzdExpbmUpOwogICAgIH0KICAgICBjYXNlIE5VTUJFUjogewogICAgICAg
ICBkb3VibGUgcHJvcGVydHlOYW1lID0gbV90b2tlbi5tX2RhdGEuZG91YmxlVmFsdWU7CkBAIC0x
MjUyLDEyICsxMjg1LDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlT2JqZWN0TGl0ZXJhCiAgICAgdW5zaWduZWQg
b2xkTGFzdExpbmVOdW1iZXIgPSBtX2xleGVyLT5sYXN0TGluZU51bWJlcigpOwogICAgIHVuc2ln
bmVkIG9sZExpbmVOdW1iZXIgPSBtX2xleGVyLT5saW5lTnVtYmVyKCk7CiAgICAgY29uc3VtZU9y
RmFpbFdpdGhGbGFncyhPUEVOQlJBQ0UsIFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsK
LSAgICAKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKwog
ICAgIGludCBvbGROb25MSFNDb3VudCA9IG1fbm9uTEhTQ291bnQ7CiAgICAgCiAgICAgaWYgKG1h
dGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChsb2NhdGlvbik7CiAgICAgfQog
ICAgIAogICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8ZmFsc2U+KGNv
bnRleHQpOwpAQCAtMTI2OSwxMyArMTMwMywxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU9iamVjdExpdGVyYQog
ICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG9sZExpbmVOdW1iZXIpOwogICAgICAgICBy
ZXR1cm4gcGFyc2VTdHJpY3RPYmplY3RMaXRlcmFsKGNvbnRleHQpOwogICAgIH0KLSAgICBUcmVl
UHJvcGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5KTsKKyAgICBUcmVlUHJvcGVydHlMaXN0
IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KGxvY2F0aW9uLCBwcm9w
ZXJ0eSk7CiAgICAgVHJlZVByb3BlcnR5TGlzdCB0YWlsID0gcHJvcGVydHlMaXN0OwogICAgIHdo
aWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxk
U3RyaW5ncyk7CiAgICAgICAgIC8vIGFsbG93IGV4dHJhIGNvbW1hLCBzZWUgaHR0cDovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkzOQogICAgICAgICBpZiAobWF0Y2goQ0xPU0VC
UkFDRSkpCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIHByb3Bl
cnR5TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgcHJvcGVydHkgPSBwYXJzZVBy
b3BlcnR5PGZhbHNlPihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHkpOwog
ICAgICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCAmJiBjb250ZXh0LmdldFR5cGUo
cHJvcGVydHkpICE9IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpIHsKQEAgLTEyODUsMTQgKzEzMjAs
MTUgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VPYmplY3RMaXRlcmEKICAgICAgICAgICAgIG1fbGV4ZXItPnNldExp
bmVOdW1iZXIob2xkTGluZU51bWJlcik7CiAgICAgICAgICAgICByZXR1cm4gcGFyc2VTdHJpY3RP
YmplY3RMaXRlcmFsKGNvbnRleHQpOwogICAgICAgICB9Ci0gICAgICAgIHRhaWwgPSBjb250ZXh0
LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBwcm9wZXJ0eSwg
dGFpbCk7CisgICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChwcm9wZXJ0
eUxvY2F0aW9uLCBwcm9wZXJ0eSwgdGFpbCk7CiAgICAgfQotICAgIAorCisgICAgbG9jYXRpb24g
PSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFKTsKICAgICAK
ICAgICBtX25vbkxIU0NvdW50ID0gb2xkTm9uTEhTQ291bnQ7CiAgICAgCi0gICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBwcm9w
ZXJ0eUxpc3QpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobG9jYXRp
b24sIHByb3BlcnR5TGlzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBA
IC0xMzAyLDkgKzEzMzgsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdHJpY3RPYmplY3QKICAgICAKICAgICBp
bnQgb2xkTm9uTEhTQ291bnQgPSBtX25vbkxIU0NvdW50OwogCisgICAgSlNUb2tlbkxvY2F0aW9u
IGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7ICAgIAogICAgIGlmIChtYXRjaChDTE9TRUJSQUNF
KSkgewogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVj
dExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSk7CisgICAgICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobG9jYXRpb24pOwogICAgIH0KICAgICAKICAgICBUcmVl
UHJvcGVydHkgcHJvcGVydHkgPSBwYXJzZVByb3BlcnR5PHRydWU+KGNvbnRleHQpOwpAQCAtMTMx
NiwxMyArMTM1MywxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0cmljdE9iamVjdAogICAgIGlmICghbV9zeW50
YXhBbHJlYWR5VmFsaWRhdGVkKQogICAgICAgICBvYmplY3RWYWxpZGF0b3IuYWRkKGNvbnRleHQu
Z2V0TmFtZShwcm9wZXJ0eSkuaW1wbCgpLCBjb250ZXh0LmdldFR5cGUocHJvcGVydHkpKTsKICAg
ICAKLSAgICBUcmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJv
cGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5KTsKKyAgICBUcmVl
UHJvcGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KGxv
Y2F0aW9uLCBwcm9wZXJ0eSk7CiAgICAgVHJlZVByb3BlcnR5TGlzdCB0YWlsID0gcHJvcGVydHlM
aXN0OwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAgbmV4dCgpOwogICAgICAg
ICAvLyBhbGxvdyBleHRyYSBjb21tYSwgc2VlIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU5MzkKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKQogICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBwcm9wZXJ0eUxvY2F0aW9uKHRva2Vu
TG9jYXRpb24oKSk7CiAgICAgICAgIHByb3BlcnR5ID0gcGFyc2VQcm9wZXJ0eTx0cnVlPihjb250
ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHkpOwogICAgICAgICBpZiAoIW1fc3lu
dGF4QWxyZWFkeVZhbGlkYXRlZCkgewpAQCAtMTMzNCwxNCArMTM3MiwxNSBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZVN0cmljdE9iamVjdAogICAgICAgICAgICAgICAgIHByb3BlcnR5RW50cnkuaXRlcmF0b3ItPnNl
Y29uZCB8PSBjb250ZXh0LmdldFR5cGUocHJvcGVydHkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9Ci0gICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCBwcm9wZXJ0eSwgdGFpbCk7CisgICAgICAgIHRhaWwgPSBjb250ZXh0
LmNyZWF0ZVByb3BlcnR5TGlzdChwcm9wZXJ0eUxvY2F0aW9uLCBwcm9wZXJ0eSwgdGFpbCk7CiAg
ICAgfQotICAgIAorCisgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgY29uc3Vt
ZU9yRmFpbChDTE9TRUJSQUNFKTsKIAogICAgIG1fbm9uTEhTQ291bnQgPSBvbGROb25MSFNDb3Vu
dDsKIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwgcHJvcGVydHlMaXN0KTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVP
YmplY3RMaXRlcmFsKGxvY2F0aW9uLCBwcm9wZXJ0eUxpc3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMTM1Nyw4ICsxMzk2LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJheUxp
dGVyYWwKICAgICAgICAgZWxpc2lvbnMrKzsKICAgICB9CiAgICAgaWYgKG1hdGNoKENMT1NFQlJB
Q0tFVCkpIHsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24o
KSk7CiAgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwotICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBl
bGlzaW9ucyk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFycmF5KGxvY2F0aW9uLCBl
bGlzaW9ucyk7CiAgICAgfQogICAgIAogICAgIFRyZWVFeHByZXNzaW9uIGVsZW0gPSBwYXJzZUFz
c2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwpAQCAtMTM3NiwxOSArMTQxNiwyMSBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUFycmF5TGl0ZXJhbAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBpZiAobWF0
Y2goQ0xPU0VCUkFDS0VUKSkgeworICAgICAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9u
KHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVp
bGRTdHJpbmdzKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFycmF5KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIGVsaXNpb25zLCBlbGVtZW50TGlzdCk7CisgICAgICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShsb2NhdGlvbiwgZWxpc2lvbnMsIGVsZW1lbnRM
aXN0KTsKICAgICAgICAgfQogICAgICAgICBUcmVlRXhwcmVzc2lvbiBlbGVtID0gcGFyc2VBc3Np
Z25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UoZWxlbSk7CiAg
ICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZUVsZW1lbnRMaXN0KHRhaWwsIGVsaXNpb25zLCBl
bGVtKTsKICAgICB9Ci0gICAgCisKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5M
b2NhdGlvbigpKTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0tFVCk7CiAgICAgCiAgICAg
bV9ub25MSFNDb3VudCA9IG9sZE5vbkxIU0NvdW50OwogICAgIAotICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUFycmF5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGVsZW1lbnRMaXN0KTsKKyAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShsb2NhdGlvbiwgZWxlbWVudExpc3QpOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMTQxMiwzOCArMTQ1NCw0NSBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZVByaW1hcnlFeHByZQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAg
ICBjYXNlIFRISVNUT0tFTjogeworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9r
ZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC50
aGlzRXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRl
eHQudGhpc0V4cHIobG9jYXRpb24pOwogICAgIH0KICAgICBjYXNlIElERU5UOiB7CiAgICAgICAg
IGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRl
bnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0
aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgY3VycmVudFNj
b3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmV2
YWwgPT0gKmlkZW50KTsKICAgICAgICAgbV9sYXN0SWRlbnRpZmllciA9IGlkZW50OwotICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXNvbHZlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IGlkZW50LCBzdGFydCk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVJlc29sdmUobG9j
YXRpb24sIGlkZW50LCBzdGFydCk7CiAgICAgfQogICAgIGNhc2UgU1RSSU5HOiB7CiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAg
IEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0
KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVN0cmluZyhtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBpZGVudCk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVN0cmluZyhs
b2NhdGlvbiwgaWRlbnQpOwogICAgIH0KICAgICBjYXNlIE5VTUJFUjogewogICAgICAgICBkb3Vi
bGUgZCA9IG1fdG9rZW4ubV9kYXRhLmRvdWJsZVZhbHVlOworICAgICAgICBKU1Rva2VuTG9jYXRp
b24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwotICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVOdW1iZXJFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IGQpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVOdW1iZXJFeHByKGxvY2F0aW9uLCBk
KTsKICAgICB9CiAgICAgY2FzZSBOVUxMVE9LRU46IHsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9u
IGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlTnVsbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTnVsbChsb2NhdGlvbik7CiAgICAgfQogICAgIGNhc2Ug
VFJVRVRPS0VOOiB7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0
aW9uKCkpOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJv
b2xlYW4obV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUJvb2xlYW4obG9jYXRpb24sIHRydWUpOwogICAgIH0KICAgICBjYXNlIEZB
TFNFVE9LRU46IHsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRp
b24oKSk7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQm9v
bGVhbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBmYWxzZSk7CisgICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUJvb2xlYW4obG9jYXRpb24sIGZhbHNlKTsKICAgICB9CiAgICAgY2FzZSBE
SVZFUVVBTDoKICAgICBjYXNlIERJVklERTogewpAQCAtMTQ1Niw4ICsxNTA1LDkgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VQcmltYXJ5RXhwcmUKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKG1fbGV4ZXItPnNjYW5S
ZWdFeHAocGF0dGVybiwgZmxhZ3MpKTsKICAgICAgICAgCiAgICAgICAgIGludCBzdGFydCA9IHRv
a2VuU3RhcnQoKTsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRp
b24oKSk7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgVHJlZUV4cHJlc3Npb24gcmUgPSBjb250
ZXh0LmNyZWF0ZVJlZ0V4cChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCAqcGF0dGVybiwgKmZs
YWdzLCBzdGFydCk7CisgICAgICAgIFRyZWVFeHByZXNzaW9uIHJlID0gY29udGV4dC5jcmVhdGVS
ZWdFeHAobG9jYXRpb24sICpwYXR0ZXJuLCAqZmxhZ3MsIHN0YXJ0KTsKICAgICAgICAgaWYgKCFy
ZSkgewogICAgICAgICAgICAgY29uc3QgY2hhciogeWFyckVycm9yTXNnID0gWWFycjo6Y2hlY2tT
eW50YXgocGF0dGVybi0+dXN0cmluZygpKTsKICAgICAgICAgICAgIEFTU0VSVCghbV9lcnJvck1l
c3NhZ2UuaXNOdWxsKCkpOwpAQCAtMTQ3NCw2ICsxNTI0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUFyZ3VtZW50cyBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcmd1bWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7
CiAgICAgY29uc3VtZU9yRmFpbFdpdGhGbGFncyhPUEVOUEFSRU4sIFRyZWVCdWlsZGVyOjpEb250
QnVpbGRTdHJpbmdzKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlv
bigpKTsKICAgICBpZiAobWF0Y2goQ0xPU0VQQVJFTikpIHsKICAgICAgICAgbmV4dChUcmVlQnVp
bGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFy
Z3VtZW50cygpOwpAQCAtMTQ4MSwxMyArMTUzMiwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVBcmd1bWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJndW1lbnRzKFRy
ZQogICAgIFRyZWVFeHByZXNzaW9uIGZpcnN0QXJnID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lv
bihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShmaXJzdEFyZyk7CiAgICAgCi0gICAgVHJlZUFy
Z3VtZW50c0xpc3QgYXJnTGlzdCA9IGNvbnRleHQuY3JlYXRlQXJndW1lbnRzTGlzdChtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBmaXJzdEFyZyk7CisgICAgVHJlZUFyZ3VtZW50c0xpc3QgYXJn
TGlzdCA9IGNvbnRleHQuY3JlYXRlQXJndW1lbnRzTGlzdChsb2NhdGlvbiwgZmlyc3RBcmcpOwog
ICAgIFRyZWVBcmd1bWVudHNMaXN0IHRhaWwgPSBhcmdMaXN0OwogICAgIHdoaWxlIChtYXRjaChD
T01NQSkpIHsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGFyZ3VtZW50TG9jYXRpb24odG9rZW5M
b2NhdGlvbigpKTsKICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7
CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGFyZyA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24o
Y29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGFyZyk7Ci0gICAgICAgIHRhaWwgPSBjb250
ZXh0LmNyZWF0ZUFyZ3VtZW50c0xpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdGFpbCwg
YXJnKTsKKyAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlQXJndW1lbnRzTGlzdChhcmd1bWVu
dExvY2F0aW9uLCB0YWlsLCBhcmcpOwogICAgIH0KICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFS
RU4pOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50cyhhcmdMaXN0KTsKQEAgLTE1
MDAsNiArMTU1Miw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgaW50IHN0YXJ0ID0g
dG9rZW5TdGFydCgpOwogICAgIGludCBleHByZXNzaW9uU3RhcnQgPSBzdGFydDsKICAgICBpbnQg
bmV3Q291bnQgPSAwOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbjsKICAgICB3aGlsZSAo
bWF0Y2goTkVXKSkgewogICAgICAgICBuZXh0KCk7CiAgICAgICAgIG5ld0NvdW50Kys7CkBAIC0x
NTEyLDE0ICsxNTY1LDE2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgIGludCBv
cGVuQnJhY2VQb3MgPSAwOwogICAgICAgICBpbnQgY2xvc2VCcmFjZVBvcyA9IDA7CiAgICAgICAg
IGludCBib2R5U3RhcnRMaW5lID0gMDsKKyAgICAgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9u
KCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25J
bmZvPEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIGZhbHNlPihjb250ZXh0LCBuYW1lLCBwYXJhbWV0
ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7
Ci0gICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBuYW1lLCBib2R5LCBwYXJhbWV0ZXJzLCBvcGVuQnJhY2VQb3MsIGNsb3Nl
QnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOworICAgICAgICBiYXNlID0gY29u
dGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRpb24sIG5hbWUsIGJvZHksIHBhcmFtZXRlcnMs
IG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIGJhc2UgPSBwYXJzZVByaW1hcnlFeHByZXNzaW9uKGNvbnRl
eHQpOwogICAgIAogICAgIGZhaWxJZkZhbHNlKGJhc2UpOwogICAgIHdoaWxlICh0cnVlKSB7Cisg
ICAgICAgIGxvY2F0aW9uID0gdG9rZW5Mb2NhdGlvbigpOwogICAgICAgICBzd2l0Y2ggKG1fdG9r
ZW4ubV90eXBlKSB7CiAgICAgICAgIGNhc2UgT1BFTkJSQUNLRVQ6IHsKICAgICAgICAgICAgIG1f
bm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwpAQCAtMTUyOSw3ICsxNTg0LDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgIGludCBpbml0aWFsQXNzaWdubWVudHMgPSBt
X2Fzc2lnbm1lbnRDb3VudDsKICAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIHByb3BlcnR5ID0g
cGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVy
dHkpOwotICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlQnJhY2tldEFjY2VzcyhtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBwcm9wZXJ0eSwgaW5pdGlhbEFzc2lnbm1lbnRz
ICE9IG1fYXNzaWdubWVudENvdW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRv
a2VuRW5kKCkpOworICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlQnJhY2tldEFjY2Vz
cyhsb2NhdGlvbiwgYmFzZSwgcHJvcGVydHksIGluaXRpYWxBc3NpZ25tZW50cyAhPSBtX2Fzc2ln
bm1lbnRDb3VudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZCgpKTsK
ICAgICAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDS0VUKTsKICAgICAgICAgICAgIG1f
bm9uTEhTQ291bnQgPSBub25MSFNDb3VudDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTU0Miwx
MiArMTU5NywxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgICAgIGlu
dCBleHByRW5kID0gbGFzdFRva2VuRW5kKCk7CiAgICAgICAgICAgICAgICAgVHJlZUFyZ3VtZW50
cyBhcmd1bWVudHMgPSBwYXJzZUFyZ3VtZW50cyhjb250ZXh0KTsKICAgICAgICAgICAgICAgICBm
YWlsSWZGYWxzZShhcmd1bWVudHMpOwotICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNy
ZWF0ZU5ld0V4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgYmFzZSwgYXJndW1lbnRzLCBz
dGFydCwgZXhwckVuZCwgbGFzdFRva2VuRW5kKCkpOyAgICAgICAgICAgCisgICAgICAgICAgICAg
ICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3RXhwcihsb2NhdGlvbiwgYmFzZSwgYXJndW1lbnRz
LCBzdGFydCwgZXhwckVuZCwgbGFzdFRva2VuRW5kKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBpbnQgZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAg
ICAgICAgICAgICAgIFRyZWVBcmd1bWVudHMgYXJndW1lbnRzID0gcGFyc2VBcmd1bWVudHMoY29u
dGV4dCk7CiAgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UoYXJndW1lbnRzKTsKLSAgICAgICAg
ICAgICAgICBiYXNlID0gY29udGV4dC5tYWtlRnVuY3Rpb25DYWxsTm9kZShtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBiYXNlLCBhcmd1bWVudHMsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lv
bkVuZCwgbGFzdFRva2VuRW5kKCkpOworICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0Lm1h
a2VGdW5jdGlvbkNhbGxOb2RlKGxvY2F0aW9uLCBiYXNlLCBhcmd1bWVudHMsIGV4cHJlc3Npb25T
dGFydCwgZXhwcmVzc2lvbkVuZCwgbGFzdFRva2VuRW5kKCkpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgbV9ub25MSFNDb3VudCA9IG5vbkxIU0NvdW50OwogICAgICAgICAgICAgYnJlYWs7
CkBAIC0xNTU3LDcgKzE2MTIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAg
ICAgaW50IGV4cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5FbmQoKTsKICAgICAgICAgICAgIG5leHRF
eHBlY3RJZGVudGlmaWVyKExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzIHwgVHJlZUJ1aWxk
ZXI6OkRvbnRCdWlsZEtleXdvcmRzKTsKICAgICAgICAgICAgIG1hdGNoT3JGYWlsKElERU5UKTsK
LSAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2VzcyhtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBiYXNlLCBtX3Rva2VuLm1fZGF0YS5pZGVudCwgZXhwcmVzc2lvblN0YXJ0
LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZCgpKTsKKyAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0
LmNyZWF0ZURvdEFjY2Vzcyhsb2NhdGlvbiwgYmFzZSwgbV90b2tlbi5tX2RhdGEuaWRlbnQsIGV4
cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQoKSk7CiAgICAgICAgICAgICBu
ZXh0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTU2Nyw3ICsxNjIyLDcg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICB9CiBlbmRNZW1iZXJFeHByZXNzaW9uOgog
ICAgIHdoaWxlIChuZXdDb3VudC0tKQotICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVOZXdF
eHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGJhc2UsIHN0YXJ0LCBsYXN0VG9rZW5FbmQo
KSk7CisgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIobG9jYXRpb24sIGJhc2Us
IHN0YXJ0LCBsYXN0VG9rZW5FbmQoKSk7CiAgICAgcmV0dXJuIGJhc2U7CiB9CiAKQEAgLTE2MDUs
NiArMTY2MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgICAgIG1fbm9uVHJpdmlh
bEV4cHJlc3Npb25Db3VudCsrOwogICAgIH0KICAgICBpbnQgc3ViRXhwclN0YXJ0ID0gdG9rZW5T
dGFydCgpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwog
ICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZU1lbWJlckV4cHJlc3Npb24oY29udGV4dCk7
CiAgICAgZmFpbElmRmFsc2UoZXhwcik7CiAgICAgYm9vbCBpc0V2YWxPckFyZ3VtZW50cyA9IGZh
bHNlOwpAQCAtMTYxNyw3ICsxNjczLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICBj
YXNlIFBMVVNQTFVTOgogICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAg
ICAgICAgbV9ub25MSFNDb3VudCsrOwotICAgICAgICBleHByID0gY29udGV4dC5tYWtlUG9zdGZp
eE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgT3BQbHVzUGx1cywgc3ViRXhw
clN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CisgICAgICAgIGV4cHIgPSBjb250
ZXh0Lm1ha2VQb3N0Zml4Tm9kZShsb2NhdGlvbiwgZXhwciwgT3BQbHVzUGx1cywgc3ViRXhwclN0
YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CiAgICAgICAgIG1fYXNzaWdubWVudENv
dW50Kys7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdFdpdGhOYW1lQW5kTWVzc2FnZShpc0V2
YWxPckFyZ3VtZW50cywgIiciLCBtX2xhc3RJZGVudGlmaWVyLT5pbXBsKCksICInIGNhbm5vdCBi
ZSBtb2RpZmllZCBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3Qo
cmVxdWlyZXNMRXhwcik7CkBAIC0xNjI2LDcgKzE2ODIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhw
cmVzcwogICAgIGNhc2UgTUlOVVNNSU5VUzoKICAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lv
bkNvdW50Kys7CiAgICAgICAgIG1fbm9uTEhTQ291bnQrKzsKLSAgICAgICAgZXhwciA9IGNvbnRl
eHQubWFrZVBvc3RmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIE9wTWlu
dXNNaW51cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CisgICAg
ICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZShsb2NhdGlvbiwgZXhwciwgT3BNaW51
c01pbnVzLCBzdWJFeHByU3RhcnQsIGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpKTsKICAgICAg
ICAgbV9hc3NpZ25tZW50Q291bnQrKzsKICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0V2l0aE5h
bWVBbmRNZXNzYWdlKGlzRXZhbE9yQXJndW1lbnRzLCAiJyIsIG1fbGFzdElkZW50aWZpZXItPmlt
cGwoKSwgIicgY2Fubm90IGJlIG1vZGlmaWVkIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIGZh
aWxJZlRydWVJZlN0cmljdChyZXF1aXJlc0xFeHByKTsKQEAgLTE2NDAsNDAgKzE2OTYsNDIgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICAKICAgICBpZiAoIVRyZWVCdWlsZGVyOjpDcmVh
dGVzQVNUICYmIChtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQgfHwgIXN0cmljdE1vZGUoKSkpCiAg
ICAgICAgIHJldHVybiBleHByOwotICAgIAorCisgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9u
KCk7CisgICAgbG9jYXRpb24ubGluZSA9IG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCk7CiAgICAg
d2hpbGUgKHRva2VuU3RhY2tEZXB0aCkgewogICAgICAgICBzd2l0Y2ggKGNvbnRleHQudW5hcnlU
b2tlblN0YWNrTGFzdFR5cGUodG9rZW5TdGFja0RlcHRoKSkgewogICAgICAgICBjYXNlIEVYQ0xB
TUFUSU9OOgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlTG9naWNhbE5vdChtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0
LmNyZWF0ZUxvZ2ljYWxOb3QobG9jYXRpb24sIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgVElMREU6Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlQml0d2lz
ZU5vdE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7CisgICAgICAgICAgICBl
eHByID0gY29udGV4dC5tYWtlQml0d2lzZU5vdE5vZGUobG9jYXRpb24sIGV4cHIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTUlOVVM6Ci0gICAgICAgICAgICBleHByID0gY29u
dGV4dC5tYWtlTmVnYXRlTm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByKTsKKyAg
ICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VOZWdhdGVOb2RlKGxvY2F0aW9uLCBleHByKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBMVVM6Ci0gICAgICAgICAgICBleHBy
ID0gY29udGV4dC5jcmVhdGVVbmFyeVBsdXMobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhw
cik7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVVbmFyeVBsdXMobG9jYXRpb24s
IGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUExVU1BMVVM6CiAgICAg
ICAgIGNhc2UgQVVUT1BMVVNQTFVTOgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVBy
ZWZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgT3BQbHVzUGx1cywgY29u
dGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0
YXJ0ICsgMSwgZW5kKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2Rl
KGxvY2F0aW9uLCBleHByLCBPcFBsdXNQbHVzLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RT
dGFydCh0b2tlblN0YWNrRGVwdGgpLCBzdWJFeHByU3RhcnQgKyAxLCBlbmQpOwogICAgICAgICAg
ICAgbV9hc3NpZ25tZW50Q291bnQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IE1JTlVTTUlOVVM6CiAgICAgICAgIGNhc2UgQVVUT01JTlVTTUlOVVM6Ci0gICAgICAgICAgICBl
eHByID0gY29udGV4dC5tYWtlUHJlZml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBl
eHByLCBPcE1pbnVzTWludXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2Vu
U3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CisgICAgICAgICAgICBleHByID0g
Y29udGV4dC5tYWtlUHJlZml4Tm9kZShsb2NhdGlvbiwgZXhwciwgT3BNaW51c01pbnVzLCBjb250
ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBzdWJFeHByU3Rh
cnQgKyAxLCBlbmQpOwogICAgICAgICAgICAgbV9hc3NpZ25tZW50Q291bnQrKzsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRZUEVPRjoKLSAgICAgICAgICAgIGV4cHIgPSBjb250
ZXh0Lm1ha2VUeXBlT2ZOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIpOworICAg
ICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVR5cGVPZk5vZGUobG9jYXRpb24sIGV4cHIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVk9JRFRPS0VOOgotICAgICAgICAgICAg
ZXhwciA9IGNvbnRleHQuY3JlYXRlVm9pZChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHBy
KTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0ZVZvaWQobG9jYXRpb24sIGV4cHIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgREVMRVRFVE9LRU46CiAgICAgICAg
ICAgICBmYWlsSWZUcnVlSWZTdHJpY3RXaXRoTmFtZUFuZE1lc3NhZ2UoY29udGV4dC5pc1Jlc29s
dmUoZXhwciksICJDYW5ub3QgZGVsZXRlIHVucXVhbGlmaWVkIHByb3BlcnR5IiwgbV9sYXN0SWRl
bnRpZmllci0+aW1wbCgpLCAiaW4gc3RyaWN0IG1vZGUiKTsKLSAgICAgICAgICAgIGV4cHIgPSBj
b250ZXh0Lm1ha2VEZWxldGVOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIGNv
bnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIGVuZCwgZW5k
KTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VEZWxldGVOb2RlKGxvY2F0aW9uLCBl
eHByLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBl
bmQsIGVuZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIC8vIElmIHdlIGdldCBoZXJlIHNvbWV0aGluZyBoYXMgZ29uZSBob3JyaWJseSBob3JyaWJs
eSB3cm9uZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggYzJhMTFkNjY1
Yjc5MTNlYzVmNjQzMWMwNjM2YzFhOGE2ZGQ2YTAxNi4uNzlhOTViNjk2M2I0MTI5MGJjYTNiNGZh
OWM4NTgwZmNiNjIzNTU3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBA
IC01MDIsMTggKzUwMiwxOCBAQCBwcml2YXRlOgogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIG5l
eHQodW5zaWduZWQgbGV4ZXJGbGFncyA9IDApCiAgICAgewotICAgICAgICBtX2xhc3RMaW5lID0g
bV90b2tlbi5tX2luZm8ubGluZTsKLSAgICAgICAgbV9sYXN0VG9rZW5FbmQgPSBtX3Rva2VuLm1f
aW5mby5lbmRPZmZzZXQ7CisgICAgICAgIG1fbGFzdExpbmUgPSBtX3Rva2VuLm1fbG9jYXRpb24u
bGluZTsKKyAgICAgICAgbV9sYXN0VG9rZW5FbmQgPSBtX3Rva2VuLm1fbG9jYXRpb24uZW5kT2Zm
c2V0OwogICAgICAgICBtX2xleGVyLT5zZXRMYXN0TGluZU51bWJlcihtX2xhc3RMaW5lKTsKLSAg
ICAgICAgbV90b2tlbi5tX3R5cGUgPSBtX2xleGVyLT5sZXgoJm1fdG9rZW4ubV9kYXRhLCAmbV90
b2tlbi5tX2luZm8sIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUoKSk7CisgICAgICAgIG1fdG9rZW4u
bV90eXBlID0gbV9sZXhlci0+bGV4KCZtX3Rva2VuLm1fZGF0YSwgJm1fdG9rZW4ubV9sb2NhdGlv
biwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSgpKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgbmV4dEV4cGVjdElkZW50aWZpZXIodW5zaWduZWQgbGV4ZXJGbGFncyA9IDApCiAgICAg
ewotICAgICAgICBtX2xhc3RMaW5lID0gbV90b2tlbi5tX2luZm8ubGluZTsKLSAgICAgICAgbV9s
YXN0VG9rZW5FbmQgPSBtX3Rva2VuLm1faW5mby5lbmRPZmZzZXQ7CisgICAgICAgIG1fbGFzdExp
bmUgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZTsKKyAgICAgICAgbV9sYXN0VG9rZW5FbmQgPSBt
X3Rva2VuLm1fbG9jYXRpb24uZW5kT2Zmc2V0OwogICAgICAgICBtX2xleGVyLT5zZXRMYXN0TGlu
ZU51bWJlcihtX2xhc3RMaW5lKTsKLSAgICAgICAgbV90b2tlbi5tX3R5cGUgPSBtX2xleGVyLT5s
ZXhFeHBlY3RJZGVudGlmaWVyKCZtX3Rva2VuLm1fZGF0YSwgJm1fdG9rZW4ubV9pbmZvLCBsZXhl
ckZsYWdzLCBzdHJpY3RNb2RlKCkpOworICAgICAgICBtX3Rva2VuLm1fdHlwZSA9IG1fbGV4ZXIt
PmxleEV4cGVjdElkZW50aWZpZXIoJm1fdG9rZW4ubV9kYXRhLCAmbV90b2tlbi5tX2xvY2F0aW9u
LCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKCkpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBuZXh0VG9rZW5Jc0NvbG9uKCkKQEAgLTU0MSwyMCArNTQxLDI1IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgQUxXQVlTX0lOTElORSBpbnQgdG9rZW5TdGFydCgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbV90b2tlbi5tX2luZm8uc3RhcnRPZmZzZXQ7CisgICAgICAgIHJldHVybiBtX3Rva2Vu
Lm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CiAgICAgfQogICAgIAogICAgIEFMV0FZU19JTkxJTkUg
aW50IHRva2VuTGluZSgpCiAgICAgewotICAgICAgICByZXR1cm4gbV90b2tlbi5tX2luZm8ubGlu
ZTsKKyAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lOwogICAgIH0KICAgICAK
ICAgICBBTFdBWVNfSU5MSU5FIGludCB0b2tlbkVuZCgpCiAgICAgewotICAgICAgICByZXR1cm4g
bV90b2tlbi5tX2luZm8uZW5kT2Zmc2V0OworICAgICAgICByZXR1cm4gbV90b2tlbi5tX2xvY2F0
aW9uLmVuZE9mZnNldDsKICAgICB9CiAgICAgCi0gICAgY29uc3QgY2hhciogZ2V0VG9rZW5OYW1l
KEpTVG9rZW5UeXBlIHRvaykgCisgICAgQUxXQVlTX0lOTElORSBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIHRva2VuTG9jYXRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9sb2Nh
dGlvbjsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyKiBnZXRUb2tlbk5hbWUoSlNUb2tlblR5cGUg
dG9rKQogICAgIHsKICAgICAgICAgc3dpdGNoICh0b2spIHsKICAgICAgICAgY2FzZSBOVUxMVE9L
RU46IApAQCAtMTAwMyw4ICsxMDA4LDExIEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqCiAKICAg
ICBSZWZQdHI8UGFyc2VkTm9kZT4gcmVzdWx0OwogICAgIGlmIChtX3NvdXJjZUVsZW1lbnRzKSB7
CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbjsKKyAgICAgICAgbG9jYXRpb24ubGlu
ZSA9IG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCk7CisgICAgICAgIGxvY2F0aW9uLmNvbHVtbiA9
IG1fbGV4ZXItPmN1cnJlbnRDb2x1bW5OdW1iZXIoKTsKICAgICAgICAgcmVzdWx0ID0gUGFyc2Vk
Tm9kZTo6Y3JlYXRlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24sCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NvdXJjZUVsZW1lbnRzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV92YXJEZWNsYXJhdGlvbnMgPyAmbV92YXJEZWNsYXJh
dGlvbnMtPmRhdGEgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9m
dW5jRGVjbGFyYXRpb25zID8gJm1fZnVuY0RlY2xhcmF0aW9ucy0+ZGF0YSA6IDAsCkBAIC0xMDEy
LDcgKzEwMjAsNyBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iagogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKm1fc291cmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9mZWF0dXJlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fbnVtQ29uc3RhbnRzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2MobV9zb3VyY2UtPmZpcnN0
TGluZSgpLCBtX2xhc3RMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2MobV9zb3VyY2UtPmZp
cnN0TGluZSgpLCBtX2xhc3RMaW5lLCBtX2xleGVyLT5jdXJyZW50Q29sdW1uTnVtYmVyKCkpOwog
ICAgIH0gZWxzZSBpZiAobGV4aWNhbEdsb2JhbE9iamVjdCkgewogICAgICAgICAvLyBXZSBjYW4g
bmV2ZXIgc2VlIGEgc3ludGF4IGVycm9yIHdoZW4gcmVwYXJzaW5nIGEgZnVuY3Rpb24sIHNpbmNl
IHdlIHNob3VsZCBoYXZlCiAgICAgICAgIC8vIHJlcG9ydGVkIHRoZSBlcnJvciB3aGVuIHBhcnNp
bmcgdGhlIGNvbnRhaW5pbmcgcHJvZ3JhbSBvciBldmFsIGNvZGUuIFNvIGlmIHdlJ3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAppbmRleCBhMWVhNzUxYWMy
MGE3OTJmZjRjNWU2MjFhMDFiYzc3NDllYTNhOWJmLi42ZTZjZWMxMTRkNDQ1ZTM3ODY1ZmVjOGMz
OTFkZjViNTFkZWM1MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
VG9rZW5zLmgKQEAgLTE0MCwxNyArMTQwLDI1IEBAIHVuaW9uIEpTVG9rZW5EYXRhIHsKICAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudDsKIH07CiAKLXN0cnVjdCBKU1Rva2VuSW5mbyB7Ci0gICAg
SlNUb2tlbkluZm8oKSA6IGxpbmUoMCkgeyB9CitzdHJ1Y3QgSlNUb2tlbkxvY2F0aW9uIHsKKyAg
ICBKU1Rva2VuTG9jYXRpb24oKSA6IGxpbmUoMCksIGNvbHVtbigwKSB7IH0KKyAgICBKU1Rva2Vu
TG9jYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKKyAgICB7CisgICAgICAg
IGxpbmUgPSBsb2NhdGlvbi5saW5lOworICAgICAgICBzdGFydE9mZnNldCA9IGxvY2F0aW9uLnN0
YXJ0T2Zmc2V0OworICAgICAgICBlbmRPZmZzZXQgPSBsb2NhdGlvbi5lbmRPZmZzZXQ7CisgICAg
ICAgIGNvbHVtbiA9IGxvY2F0aW9uLmNvbHVtbjsKKyAgICB9CiAgICAgaW50IGxpbmU7CiAgICAg
aW50IHN0YXJ0T2Zmc2V0OwogICAgIGludCBlbmRPZmZzZXQ7CisgICAgaW50IGNvbHVtbjsKIH07
CiAKIHN0cnVjdCBKU1Rva2VuIHsKICAgICBKU1Rva2VuVHlwZSBtX3R5cGU7CiAgICAgSlNUb2tl
bkRhdGEgbV9kYXRhOwotICAgIEpTVG9rZW5JbmZvIG1faW5mbzsKKyAgICBKU1Rva2VuTG9jYXRp
b24gbV9sb2NhdGlvbjsKIH07CiAKIGVudW0gSlNQYXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5v
cm1hbCwgSlNQYXJzZVN0cmljdCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oCmluZGV4IDM2NjIzNjdhMDFiNzA5ZDlj
ZDRlYzNkNDdkMmYzZGI5M2U1ZTI0YTcuLjhiMzYyMDVkZDM1YjdiYWE3ZDg3ODQxNTZkNzQ0YjZk
N2RiZWEyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNl
UHJvdmlkZXJDYWNoZUl0ZW0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Nv
dXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgKQEAgLTUzLDkgKzUzLDkgQEAgcHVibGljOgogICAgICAg
ICBKU1Rva2VuIHRva2VuOwogICAgICAgICB0b2tlbi5tX3R5cGUgPSBDTE9TRUJSQUNFOwogICAg
ICAgICB0b2tlbi5tX2RhdGEuaW50VmFsdWUgPSBjbG9zZUJyYWNlUG9zOwotICAgICAgICB0b2tl
bi5tX2luZm8uc3RhcnRPZmZzZXQgPSBjbG9zZUJyYWNlUG9zOwotICAgICAgICB0b2tlbi5tX2lu
Zm8uZW5kT2Zmc2V0ID0gY2xvc2VCcmFjZVBvcyArIDE7Ci0gICAgICAgIHRva2VuLm1faW5mby5s
aW5lID0gY2xvc2VCcmFjZUxpbmU7IAorICAgICAgICB0b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zm
c2V0ID0gY2xvc2VCcmFjZVBvczsKKyAgICAgICAgdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQg
PSBjbG9zZUJyYWNlUG9zICsgMTsKKyAgICAgICAgdG9rZW4ubV9sb2NhdGlvbi5saW5lID0gY2xv
c2VCcmFjZUxpbmU7IAogICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgfQogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCBjMmM5Mzc1NmRl
MDNhYmNhMjk1ZGUxM2FjOGVlMTM4MWM3ZDQwYzQ4Li44ZTFkYzE0ZmNjMGMzMzUxZDBmMzEyZjc4
Y2NkMDAzMTM3OTVkNGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaApAQCAtMTE5LDQyICsxMTksNDIgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBEb250QnVpbGRTdHJpbmdzID0gTGV4ZXJGbGFnc0RvbnRCdWlsZFN0cmluZ3M7
CiAKICAgICBpbnQgY3JlYXRlU291cmNlRWxlbWVudHMoKSB7IHJldHVybiAxOyB9Ci0gICAgRXhw
cmVzc2lvblR5cGUgbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gQ2FsbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlRnVuY3Rp
b25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gQ2FsbEV4cHI7IH0KICAgICB2b2lkIGFwcGVuZFRvQ29tbWEoRXhwcmVzc2lv
blR5cGUmIGJhc2UsIEV4cHJlc3Npb25UeXBlIHJpZ2h0KSB7IGJhc2UgPSByaWdodDsgfQotICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbW1hRXhwcihpbnQsIEV4cHJlc3Npb25UeXBlLCBFeHBy
ZXNzaW9uVHlwZSByaWdodCkgeyByZXR1cm4gcmlnaHQ7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBt
YWtlQXNzaWduTm9kZShpbnQsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgRXhwcmVzc2lvblR5
cGUsIGJvb2wsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9
Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZVByZWZpeE5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSwg
T3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFByZUV4cHI7IH0KLSAgICBFeHByZXNz
aW9uVHlwZSBtYWtlUG9zdGZpeE5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIFBvc3RFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFr
ZVR5cGVPZk5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVHlwZW9mRXhwcjsgfQot
ICAgIEV4cHJlc3Npb25UeXBlIG1ha2VEZWxldGVOb2RlKGludCwgRXhwcmVzc2lvblR5cGUsIGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIERlbGV0ZUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBt
YWtlTmVnYXRlTm9kZShpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0K
LSAgICBFeHByZXNzaW9uVHlwZSBtYWtlQml0d2lzZU5vdE5vZGUoaW50LCBFeHByZXNzaW9uVHlw
ZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTG9naWNh
bE5vdChpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KLSAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVVbmFyeVBsdXMoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4g
VW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlVm9pZChpbnQsIEV4cHJlc3Np
b25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSB0aGlzRXhw
cihpbnQpIHsgcmV0dXJuIFRoaXNFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVz
b2x2ZShpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJuIFJlc29sdmVFeHByOyB9
Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQpIHsgcmV0dXJuIE9i
amVjdExpdGVyYWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJh
bChpbnQsIGludCkgeyByZXR1cm4gT2JqZWN0TGl0ZXJhbEV4cHI7IH0KLSAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVBcnJheShpbnQsIGludCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhwcjsgfQot
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFy
cmF5TGl0ZXJhbEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdW1iZXJFeHByKGlu
dCwgZG91YmxlKSB7IHJldHVybiBOdW1iZXJFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlU3RyaW5nKGludCwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIFN0cmluZ0V4cHI7IH0K
LSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGludCwgYm9vbCkgeyByZXR1cm4gQm9v
bEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGludCkgeyByZXR1cm4gTnVs
bEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0QWNjZXNzKGludCwgRXhw
cmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVy
biBCcmFja2V0RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2VzcyhpbnQs
IEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gRG90RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChpbnQsIGNvbnN0
IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImLCBpbnQpIHsgcmV0dXJuIFlh
cnI6OmNoZWNrU3ludGF4KHBhdHRlcm4udXN0cmluZygpKSA/IDAgOiBSZWdFeHBFeHByOyB9Ci0g
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihpbnQsIEV4cHJlc3Npb25UeXBlLCBpbnQs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVOZXdFeHByKGludCwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50KSB7IHJldHVybiBOZXdF
eHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29uZGl0aW9uYWxFeHByKGludCwgRXhw
cmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gQ29u
ZGl0aW9uYWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXNzaWduUmVzb2x2ZShp
bnQsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVG
dW5jdGlvbkV4cHIoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmN0aW9u
Qm9keShpbnQsIGJvb2wpIHsgcmV0dXJuIDE7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVD
b21tYUV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Np
b25UeXBlIHJpZ2h0KSB7IHJldHVybiByaWdodDsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VB
c3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRv
ciwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFz
c2lnbm1lbnRFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVByZWZpeE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIE9wZXJhdG9yLCBpbnQsIGludCwgaW50
KSB7IHJldHVybiBQcmVFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVBvc3RmaXhOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gUG9zdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlVHlw
ZU9mTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4g
VHlwZW9mRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VEZWxldGVOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBE
ZWxldGVFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZU5lZ2F0ZU5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQorICAg
IEV4cHJlc3Npb25UeXBlIG1ha2VCaXR3aXNlTm90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlTG9naWNhbE5vdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlw
ZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlVW5hcnlQ
bHVzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFy
eUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVWb2lkKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNz
aW9uVHlwZSB0aGlzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBUaGlzRXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlc29sdmUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gUmVzb2x2ZUV4cHI7IH0KKyAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVPYmplY3RMaXRlcmFsKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlT2JqZWN0TGl0ZXJhbChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQpIHsgcmV0dXJuIE9i
amVjdExpdGVyYWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyYXkoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgaW50KSB7IHJldHVybiBBcnJheUxpdGVyYWxFeHByOyB9CisgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyYXkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBp
bnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVOdW1iZXJFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGRvdWJsZSkgeyByZXR1cm4gTnVt
YmVyRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVN0cmluZyhjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4gU3RyaW5nRXhwcjsgfQorICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9v
bCkgeyByZXR1cm4gQm9vbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIE51bGxFeHByOyB9CisgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlQnJhY2tldEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEJy
YWNrZXRFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNzKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gRG90RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJl
Z0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBj
b25zdCBJZGVudGlmaWVyJiwgaW50KSB7IHJldHVybiBZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJu
LnVzdHJpbmcoKSkgPyAwIDogUmVnRXhwRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50
KSB7IHJldHVybiBOZXdFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29uZGl0aW9u
YWxFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9u
VHlwZSwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIENvbmRpdGlvbmFsRXhwcjsgfQorICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZUFzc2lnblJlc29sdmUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7
IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1bmN0
aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CisgICAgaW50
IGNyZWF0ZUZ1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sKSB7IHJldHVy
biAxOyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQg
Y3JlYXRlQXJndW1lbnRzKGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVBcmd1bWVu
dHNMaXN0KGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUFyZ3VtZW50c0xp
c3QoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVBcmd1bWVudHNM
aXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBj
cmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9CiAgICAgdGVtcGxhdGUgPGJvb2wgY29tcGxldGU+IFByb3BlcnR5IGNyZWF0ZVBy
b3BlcnR5KGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIGludCwgUHJvcGVydHlOb2RlOjpUeXBlIHR5
cGUpCiAgICAgewogICAgICAgICBpZiAoIWNvbXBsZXRlKQpAQCAtMTY4LDggKzE2OCw4IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICAgICAgcmV0dXJu
IFByb3BlcnR5KCZnbG9iYWxEYXRhLT5wYXJzZXJBcmVuYS0+aWRlbnRpZmllckFyZW5hKCkubWFr
ZU51bWVyaWNJZGVudGlmaWVyKGdsb2JhbERhdGEsIG5hbWUpLCB0eXBlKTsKICAgICB9Ci0gICAg
aW50IGNyZWF0ZVByb3BlcnR5TGlzdChpbnQsIFByb3BlcnR5KSB7IHJldHVybiAxOyB9Ci0gICAg
aW50IGNyZWF0ZVByb3BlcnR5TGlzdChpbnQsIFByb3BlcnR5LCBpbnQpIHsgcmV0dXJuIDE7IH0K
KyAgICBpbnQgY3JlYXRlUHJvcGVydHlMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3Bl
cnR5KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBQcm9wZXJ0eSwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0
ZUVsZW1lbnRMaXN0KGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUVsZW1l
bnRMaXN0KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlRm9ybWFs
UGFyYW1ldGVyTGlzdChjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4gMTsgfQpAQCAtMTc4LDM5
ICsxNzgsMzkgQEAgcHVibGljOgogICAgIGludCBjcmVhdGVDbGF1c2VMaXN0KGludCkgeyByZXR1
cm4gMTsgfQogICAgIGludCBjcmVhdGVDbGF1c2VMaXN0KGludCwgaW50KSB7IHJldHVybiAxOyB9
CiAgICAgdm9pZCBzZXRVc2VzQXJndW1lbnRzKGludCkgeyB9Ci0gICAgaW50IGNyZWF0ZUZ1bmNE
ZWNsU3RhdGVtZW50KGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQmxvY2tTdGF0ZW1lbnQoaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUV4cHJTdGF0ZW1l
bnQoaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUlmU3Rh
dGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNy
ZWF0ZUlmU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KLSAgICBpbnQgY3JlYXRlRm9yTG9vcChpbnQsIGludCwgaW50LCBpbnQsIGludCwgYm9vbCwg
aW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRm9ySW5Mb29wKGludCwgY29u
c3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVGb3JJbkxvb3AoaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGlu
dCBjcmVhdGVFbXB0eVN0YXRlbWVudChpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRl
VmFyU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBj
cmVhdGVSZXR1cm5TdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gMTsgfQotICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQsIGNv
bnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBp
bnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50LCBjb25zdCBJZGVu
dGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0
ZVRyeVN0YXRlbWVudChpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0
ZVdoaWxlU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0g
ICAgaW50IGNyZWF0ZVdpdGhTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQoaW50LCBp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlTGFiZWxTdGF0
ZW1lbnQoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsg
fQotICAgIGludCBjcmVhdGVUaHJvd1N0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZURlYnVnZ2VyKGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29uc3RTdGF0ZW1lbnQoaW50LCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGFwcGVuZENvbnN0RGVjbChpbnQsIGludCwg
Y29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gMTsgfQotICAgIHRlbXBsYXRlIDxib29s
IHN0cmljdD4gUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShpbnQsIFByb3Bl
cnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50KQorICAgIGludCBjcmVhdGVGdW5jRGVjbFN0YXRlbWVudChjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVCbG9ja1N0YXRlbWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50
IGNyZWF0ZUV4cHJTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVJZlN0YXRlbWVudChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3Jl
YXRlSWZTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRm9yTG9vcChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGJvb2wsIGludCwgaW50KSB7IHJldHVybiAx
OyB9CisgICAgaW50IGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyBy
ZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVFbXB0eVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9j
YXRpb24mKSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVZhclN0YXRlbWVudChjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNy
ZWF0ZVJldHVyblN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0K
KyAgICBpbnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGlu
dCBjcmVhdGVDb250aW51ZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1l
bnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVUcnlTdGF0ZW1lbnQoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwg
aW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVN3aXRjaFN0YXRlbWVudChjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAx
OyB9CisgICAgaW50IGNyZWF0ZVdoaWxlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVXaXRoU3Rh
dGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRG9XaGlsZVN0YXRlbWVudChjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBp
bnQgY3JlYXRlTGFiZWxTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRl
bnRpZmllciosIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlVGhy
b3dTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRGVidWdnZXIoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29uc3RTdGF0
ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsg
fQorICAgIGludCBhcHBlbmRDb25zdERlY2woY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBj
b25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiAxOyB9CisgICAgdGVtcGxhdGUgPGJvb2wg
c3RyaWN0PiBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBu
YW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KQogICAgIHsKICAgICAgICAgQVNTRVJU
KG5hbWUpOwogICAgICAgICBpZiAoIXN0cmljdCkKICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0
eSh0eXBlKTsKICAgICAgICAgcmV0dXJuIFByb3BlcnR5KG5hbWUsIHR5cGUpOwogICAgIH0KLSAg
ICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJv
cGVydHkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0
eXBlLCBkb3VibGUgbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkKKyAgICB0ZW1w
bGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHko
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0
eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQpCiAgICAgewogICAgICAgICBpZiAoIXN0cmljdCkKICAgICAgICAgICAgIHJldHVybiBQcm9w
ZXJ0eSh0eXBlKTsKQEAgLTIxOSw3ICsyMTksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVu
ZFN0YXRlbWVudChpbnQsIGludCkgeyB9CiAgICAgdm9pZCBhZGRWYXIoY29uc3QgSWRlbnRpZmll
ciosIGJvb2wpIHsgfQotICAgIGludCBjb21iaW5lQ29tbWFOb2RlcyhpbnQsIGludCwgaW50KSB7
IHJldHVybiAxOyB9CisgICAgaW50IGNvbWJpbmVDb21tYU5vZGVzKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGV2YWxDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KICAgICB2b2lkIGFwcGVuZEJpbmFyeUV4cHJlc3Npb25JbmZvKGludCYg
b3BlcmFuZFN0YWNrRGVwdGgsIGludCBleHByLCBpbnQsIGludCwgaW50LCBib29sKQogICAgIHsK
QEAgLTIzNSw3ICsyMzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvclN0YWNrSGFzSGln
aGVyUHJlY2VkZW5jZShpbnQmLCBpbnQpIHsgcmV0dXJuIHRydWU7IH0KICAgICBCaW5hcnlPcGVy
YW5kIGdldEZyb21PcGVyYW5kU3RhY2soaW50KSB7IHJldHVybiBtX3RvcEJpbmFyeUV4cHI7IH0K
ICAgICB2b2lkIHNocmlua09wZXJhbmRTdGFja0J5KGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGlu
dCBhbW91bnQpIHsgb3BlcmFuZFN0YWNrRGVwdGggLT0gYW1vdW50OyB9Ci0gICAgdm9pZCBhcHBl
bmRCaW5hcnlPcGVyYXRpb24oaW50LCBpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQmLCBCaW5h
cnlPcGVyYW5kLCBCaW5hcnlPcGVyYW5kKSB7IG9wZXJhbmRTdGFja0RlcHRoKys7IH0KKyAgICB2
b2lkIGFwcGVuZEJpbmFyeU9wZXJhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQmIG9w
ZXJhbmRTdGFja0RlcHRoLCBpbnQmLCBCaW5hcnlPcGVyYW5kLCBCaW5hcnlPcGVyYW5kKSB7IG9w
ZXJhbmRTdGFja0RlcHRoKys7IH0KICAgICB2b2lkIG9wZXJhdG9yU3RhY2tBcHBlbmQoaW50JiBv
cGVyYXRvclN0YWNrRGVwdGgsIGludCwgaW50KSB7IG9wZXJhdG9yU3RhY2tEZXB0aCsrOyB9CiAg
ICAgaW50IHBvcE9wZXJhbmRTdGFjayhpbnQmKSB7IGludCByZXMgPSBtX3RvcEJpbmFyeUV4cHI7
IG1fdG9wQmluYXJ5RXhwciA9IDA7IHJldHVybiByZXM7IH0KICAgICAKQEAgLTI0NSw3ICsyNDUs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bmFyeVRva2VuU3RhY2tSZW1vdmVMYXN0KGludCYgc3Rh
Y2tEZXB0aCkgeyBzdGFja0RlcHRoID0gMDsgfQogICAgIAogICAgIHZvaWQgYXNzaWdubWVudFN0
YWNrQXBwZW5kKGludCwgaW50LCBpbnQsIGludCwgaW50LCBPcGVyYXRvcikgeyB9Ci0gICAgaW50
IGNyZWF0ZUFzc2lnbm1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQXNzaWdubWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgcmV0dXJuIDE7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBnZXROYW1lKGNv
bnN0IFByb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3QgeyBBU1NFUlQocHJvcGVydHkubmFtZSk7IHJl
dHVybiAqcHJvcGVydHkubmFtZTsgfQogICAgIFByb3BlcnR5Tm9kZTo6VHlwZSBnZXRUeXBlKGNv
bnN0IFByb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3QgeyByZXR1cm4gcHJvcGVydHkudHlwZTsgfQog
ICAgIGJvb2wgaXNSZXNvbHZlKEV4cHJlc3Npb25UeXBlIGV4cHIpIGNvbnN0IHsgcmV0dXJuIGV4
cHIgPT0gUmVzb2x2ZUV4cHIgfHwgZXhwciA9PSBSZXNvbHZlRXZhbEV4cHI7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBmMjIy
N2M3NDVjYzhhMDFiZDM4ZWE4ZjRkMGFiYzc1MzkzYWEwMzk4Li5lZmVhOGJmNTc3MzcyMzhlOGIw
MjY4OWM0ZmUyM2MzYjVmODQwNWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC03NSwyMCArNzUsMjggQEAgU3RyaW5nIFNjcmlw
dERlYnVnU2VydmVyOjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0
IFNjcmlwdEJyZWEKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRFZhbHVlKTsKICAgICBpZiAoaXQg
PT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCiAgICAgICAgIGl0ID0gbV9zb3VyY2VJ
ZFRvQnJlYWtwb2ludHMuc2V0KHNvdXJjZUlEVmFsdWUsIExpbmVUb0JyZWFrcG9pbnRNYXAoKSku
aXRlcmF0b3I7Ci0gICAgaWYgKGl0LT5zZWNvbmQuY29udGFpbnMoc2NyaXB0QnJlYWtwb2ludC5s
aW5lTnVtYmVyICsgMSkpCi0gICAgICAgIHJldHVybiAiIjsKLSAgICBpdC0+c2Vjb25kLnNldChz
Y3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIgKyAxLCBzY3JpcHRCcmVha3BvaW50KTsKKyAgICBM
aW5lVG9CcmVha3BvaW50TWFwOjppdGVyYXRvciBicmVha3NJdCA9IGl0LT5zZWNvbmQuZmluZChz
Y3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIgKyAxKTsKKyAgICBpZiAoYnJlYWtzSXQgPT0gaXQt
PnNlY29uZC5lbmQoKSkKKyAgICAgICAgYnJlYWtzSXQgPSBpdC0+c2Vjb25kLnNldChzY3JpcHRC
cmVha3BvaW50LmxpbmVOdW1iZXIgKyAxLCBCcmVha3BvaW50c0luTGluZSgpKS5pdGVyYXRvcjsK
KworICAgIEJyZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25k
OworICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykgeworICAgICAgICBpZiAo
YnJlYWtzVmVjdG9yLmF0KGkpLmNvbHVtbk51bWJlciA9PSBzY3JpcHRCcmVha3BvaW50LmNvbHVt
bk51bWJlcikKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisgICAgYnJlYWtzVmVjdG9y
LmFwcGVuZChzY3JpcHRCcmVha3BvaW50KTsKKwogICAgICphY3R1YWxMaW5lTnVtYmVyID0gc2Ny
aXB0QnJlYWtwb2ludC5saW5lTnVtYmVyOwotICAgIC8vIEZJWE1FKFdLNTMwMDMpOiBpbXBsZW1l
bnQgc2V0dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbi4KLSAgICAqYWN0dWFsQ29sdW1u
TnVtYmVyID0gMDsKLSAgICByZXR1cm4gc291cmNlSUQgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihz
Y3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIpOworICAgICphY3R1YWxDb2x1bW5OdW1iZXIgPSBz
Y3JpcHRCcmVha3BvaW50LmNvbHVtbk51bWJlcjsKKyAgICByZXR1cm4gc291cmNlSUQgKyAiOiIg
KyBTdHJpbmc6Om51bWJlcihzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIpICsgIjoiICsgU3Ry
aW5nOjpudW1iZXIoc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXIpOwogfQogCiB2b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2lu
dElkKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHRva2VuczsKICAgICBicmVha3BvaW50SWQuc3Bs
aXQoIjoiLCB0b2tlbnMpOwotICAgIGlmICh0b2tlbnMuc2l6ZSgpICE9IDIpCisgICAgaWYgKHRv
a2Vucy5zaXplKCkgIT0gMykKICAgICAgICAgcmV0dXJuOwogICAgIGJvb2wgc3VjY2VzczsKICAg
ICBpbnRwdHJfdCBzb3VyY2VJRFZhbHVlID0gdG9rZW5zWzBdLnRvSW50UHRyKCZzdWNjZXNzKTsK
QEAgLTk3LDkgKzEwNSw2MyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3Bv
aW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKQogICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIg
PSB0b2tlbnNbMV0udG9VSW50KCZzdWNjZXNzKTsKICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAg
IHJldHVybjsKKyAgICB1bnNpZ25lZCBjb2x1bW5OdW1iZXIgPSB0b2tlbnNbMl0udG9VSW50KCZz
dWNjZXNzKTsKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybjsKKwogICAgIFNvdXJj
ZUlkVG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50
cy5maW5kKHNvdXJjZUlEVmFsdWUpOwotICAgIGlmIChpdCAhPSBtX3NvdXJjZUlkVG9CcmVha3Bv
aW50cy5lbmQoKSkKLSAgICAgICAgaXQtPnNlY29uZC5yZW1vdmUobGluZU51bWJlciArIDEpOwor
ICAgIGlmIChpdCA9PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6Oml0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnNl
Y29uZC5maW5kKGxpbmVOdW1iZXIgKyAxKTsKKyAgICBpZiAoYnJlYWtzSXQgPT0gaXQtPnNlY29u
ZC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQnJlYWtwb2ludHNJbkxpbmUmIGJyZWFr
c1ZlY3RvciA9IGJyZWFrc0l0LT5zZWNvbmQ7CisgICAgdW5zaWduZWQgYnJlYWtzQ291bnQgPSBi
cmVha3NWZWN0b3Iuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBicmVha3ND
b3VudDsgaSsrKSB7CisgICAgICAgIGlmIChicmVha3NWZWN0b3IuYXQoaSkuY29sdW1uTnVtYmVy
ID09IHN0YXRpY19jYXN0PGludD4oY29sdW1uTnVtYmVyKSkgeworICAgICAgICAgICAgYnJlYWtz
VmVjdG9yLnJlbW92ZShpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
fQorCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDdXJyZW50U3RhdGVtZW50UG9zaXRp
b24oaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lKQoreworICAgIGlmIChsaW5lIDwgMCkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgU291cmNlUHJvdmlkZXIqIHNvdXJjZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8U291cmNlUHJvdmlkZXIqPihzb3VyY2VJRCk7CisKKyAgICBpZiAobV9jdXJyZW50U291
cmNlSUQgIT0gc291cmNlSUQpIHsKKyAgICAgICAgU3RyaW5nIHNvdXJjZUNvZGUgPSB1c3RyaW5n
VG9TdHJpbmcoSlNDOjpVU3RyaW5nKGNvbnN0X2Nhc3Q8U3RyaW5nSW1wbCo+KHNvdXJjZS0+ZGF0
YSgpKSkpOworICAgICAgICBtX2N1cnJlbnRTb3VyY2VDb2RlLmNsZWFyKCk7CisgICAgICAgIHNv
dXJjZUNvZGUuc3BsaXQoIlxuIiwgdHJ1ZSwgbV9jdXJyZW50U291cmNlQ29kZSk7CisgICAgICAg
IG1fY3VycmVudFNvdXJjZUlEID0gc291cmNlSUQ7CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVu
dFBvc2l0aW9uLmxpbmVOdW1iZXIgPSAwOworICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3Np
dGlvbi5jb2x1bW5OdW1iZXIgPSAwOworICAgIH0KKworICAgIGlmIChsaW5lICE9IG1fY3VycmVu
dFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIpIHsKKyAgICAgICAgbV9jdXJyZW50U3RhdGVt
ZW50UG9zaXRpb24ubGluZU51bWJlciA9IGxpbmU7CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVu
dFBvc2l0aW9uLmNvbHVtbk51bWJlciA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBpbnQgc3RhcnRMaW5lID0gc291cmNlLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLnplcm9CYXNl
ZEludCgpOworICAgIGlmICgobV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51bWJlciAt
IHN0YXJ0TGluZSAtIDEpID49IHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50U291cmNlQ29kZS5z
aXplKCkpKQorICAgICAgICByZXR1cm47CisgICAgY29uc3QgU3RyaW5nJiBjb2RlSW5MaW5lID0g
bV9jdXJyZW50U291cmNlQ29kZVttX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVy
IC0gc3RhcnRMaW5lIC0gMV07CisgICAgaWYgKGNvZGVJbkxpbmUuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisgICAgaW50IG5leHRDb2x1bW4gPSBjb2RlSW5MaW5lLmZpbmQoIjsiLCBtX2N1
cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIpOworICAgIGlmIChuZXh0Q29sdW1u
ICE9IC0xKSB7CisgICAgICAgIFVDaGFyIGMgPSBjb2RlSW5MaW5lW25leHRDb2x1bW4gKyAxXTsK
KyAgICAgICAgaWYgKGMgPT0gJyAnIHx8IGMgPT0gJ1x0JykKKyAgICAgICAgICAgIG5leHRDb2x1
bW4gKz0gMTsKKyAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVy
ID0gbmV4dENvbHVtbiArIDE7CisgICAgfSBlbHNlCisgICAgICAgIG1fY3VycmVudFN0YXRlbWVu
dFBvc2l0aW9uLmNvbHVtbk51bWJlciA9IDA7CiB9CiAKIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6
Omhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9z
aXRpb24pIGNvbnN0CkBAIC0xMTAsMTkgKzE3MiwzNyBAQCBib29sIFNjcmlwdERlYnVnU2VydmVy
OjpoYXNCcmVha3BvaW50KGludHB0cl90IHNvdXJjZUlELCBjb25zdCBUZXh0UG9zaXRpb24mIHBv
cwogICAgIFNvdXJjZUlkVG9CcmVha3BvaW50c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3Nv
dXJjZUlkVG9CcmVha3BvaW50cy5maW5kKHNvdXJjZUlEKTsKICAgICBpZiAoaXQgPT0gbV9zb3Vy
Y2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbnQg
bGluZU51bWJlciA9IHBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpOwotICAgIGlmIChsaW5l
TnVtYmVyIDw9IDApCisKKyAgICBpbnQgbGluZU51bWJlciA9IHBvc2l0aW9uLm1fbGluZS56ZXJv
QmFzZWRJbnQoKTsKKyAgICBpbnQgY29sdW1uTnVtYmVyID0gcG9zaXRpb24ubV9jb2x1bW4uemVy
b0Jhc2VkSW50KCk7CisgICAgaWYgKGxpbmVOdW1iZXIgPCAwIHx8IGNvbHVtbk51bWJlciA8IDAp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6OmNvbnN0
X2l0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5maW5kKGxpbmVOdW1iZXIgKyAxKTsKKyAg
ICBpZiAoYnJlYWtzSXQgPT0gaXQtPnNlY29uZC5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGJyZWFrSXQgPSBpdC0+
c2Vjb25kLmZpbmQobGluZU51bWJlcik7Ci0gICAgaWYgKGJyZWFrSXQgPT0gaXQtPnNlY29uZC5l
bmQoKSkKKworICAgIGJvb2wgaGl0ID0gZmFsc2U7CisgICAgY29uc3QgQnJlYWtwb2ludHNJbkxp
bmUmIGJyZWFrc1ZlY3RvciA9IGJyZWFrc0l0LT5zZWNvbmQ7CisgICAgdW5zaWduZWQgYnJlYWtz
Q291bnQgPSBicmVha3NWZWN0b3Iuc2l6ZSgpOworICAgIHVuc2lnbmVkIGk7CisgICAgZm9yIChp
ID0gMDsgaSA8IGJyZWFrc0NvdW50OyBpKyspIHsKKyAgICAgICAgaW50IGJyZWFrQ29sdW1uID0g
YnJlYWtzVmVjdG9yLmF0KGkpLmNvbHVtbk51bWJlcjsKKyAgICAgICAgaW50IGJyZWFrTGluZSA9
IGJyZWFrc1ZlY3Rvci5hdChpKS5saW5lTnVtYmVyOworICAgICAgICBpZiAobGluZU51bWJlciA9
PSBicmVha0xpbmUgJiYgY29sdW1uTnVtYmVyID09IGJyZWFrQ29sdW1uKSB7CisgICAgICAgICAg
ICBoaXQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAg
aWYgKCFoaXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEFuIGVtcHR5IGNvbmRp
dGlvbiBjb3VudHMgYXMgbm8gY29uZGl0aW9uIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gInRydWUi
LgotICAgIGlmIChicmVha0l0LT5zZWNvbmQuY29uZGl0aW9uLmlzRW1wdHkoKSkKKyAgICBpZiAo
YnJlYWtzVmVjdG9yLmF0KGkpLmNvbmRpdGlvbi5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgSlNWYWx1ZSBleGNlcHRpb247Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBtX2N1
cnJlbnRDYWxsRnJhbWUtPmV2YWx1YXRlKHN0cmluZ1RvVVN0cmluZyhicmVha0l0LT5zZWNvbmQu
Y29uZGl0aW9uKSwgZXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IG1fY3VycmVudENh
bGxGcmFtZS0+ZXZhbHVhdGUoc3RyaW5nVG9VU3RyaW5nKGJyZWFrc1ZlY3Rvci5hdChpKS5jb25k
aXRpb24pLCBleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAgLy8gQW4g
ZXJyb25lb3VzIGNvbmRpdGlvbiBjb3VudHMgYXMgImZhbHNlIi4KICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMzQ3LDIwICs0MjcsMjAgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0
Y2hGdW5jdGlvblRvTGlzdGVuZXJzKEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjawogICAgIG1f
Y2FsbGluZ0xpc3RlbmVycyA9IGZhbHNlOwogfQogCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpj
cmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBk
ZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQordm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25z
dCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKLSAgICBUZXh0UG9zaXRpb24g
dGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChsaW5lTnVtYmVyKSwg
T3JkaW5hbE51bWJlcjo6Zmlyc3QoKSk7CisgICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbihP
cmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6
OmZyb21aZXJvQmFzZWRJbnQoY29sdW1uTnVtYmVyKSk7CiAgICAgbV9jdXJyZW50Q2FsbEZyYW1l
ID0gSmF2YVNjcmlwdENhbGxGcmFtZTo6Y3JlYXRlKGRlYnVnZ2VyQ2FsbEZyYW1lLCBtX2N1cnJl
bnRDYWxsRnJhbWUsIHNvdXJjZUlELCB0ZXh0UG9zaXRpb24pOwogICAgIHBhdXNlSWZOZWVkZWQo
ZGVidWdnZXJDYWxsRnJhbWUuZHluYW1pY0dsb2JhbE9iamVjdCgpKTsKIH0KIAotdm9pZCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBEZWJ1
Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQg
bGluZU51bWJlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBh
dXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7CiAg
ICAgQVNTRVJUKG1fY3VycmVudENhbGxGcmFtZSk7CiAgICAgaWYgKCFtX2N1cnJlbnRDYWxsRnJh
bWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb24oT3Jk
aW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpm
aXJzdCgpKTsKKyAgICBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZy
b21PbmVCYXNlZEludChsaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6ZnJvbVplcm9CYXNlZElu
dChjb2x1bW5OdW1iZXIpKTsKICAgICBtX2N1cnJlbnRDYWxsRnJhbWUtPnVwZGF0ZShkZWJ1Z2dl
ckNhbGxGcmFtZSwgc291cmNlSUQsIHRleHRQb3NpdGlvbik7CiAgICAgcGF1c2VJZk5lZWRlZChk
ZWJ1Z2dlckNhbGxGcmFtZS5keW5hbWljR2xvYmFsT2JqZWN0KCkpOwogfQpAQCAtNDAxLDIyICs0
ODEsMzcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VJZk5lZWRlZChKU0dsb2JhbE9i
amVjdCogZHluYW1pY0dsb2JhbE9iamVjdCkKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2Fs
bEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQogeworICAgIGNhbGxFdmVudChkZWJ1Z2dlckNh
bGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIDApOworfQorCit2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpjYWxsRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZy
YW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIp
Cit7CiAgICAgaWYgKCFtX3BhdXNlZCkKLSAgICAgICAgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJ
Zk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAg
ICBjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3Vy
Y2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6YXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZy
YW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCiB7CisgICAgYXRTdGF0ZW1l
bnQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCAwKTsKK30KKwordm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUm
IGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIpCit7CiAgICAgaWYgKCFtX3BhdXNlZCkKLSAgICAgICAgdXBkYXRlQ2Fs
bEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVO
dW1iZXIpOworICAgICAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAogdm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmV0dXJuRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUm
IGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCiB7
CisgICAgcmV0dXJuRXZlbnQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVy
LCAwKTsKK30KKwordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmV0dXJuRXZlbnQoY29uc3QgRGVi
dWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50
IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCit7CiAgICAgaWYgKG1fcGF1c2VkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVn
Z2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgdXBkYXRlQ2FsbEZyYW1l
QW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcik7CiAKICAgICAvLyBkZXRhY2ggbWF5IGhhdmUgYmVlbiBjYWxsZWQgZHVy
aW5nIHBhdXNlSWZOZWVkZWQKICAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkKQEAgLTQzMCwy
NyArNTI1LDQyIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KGNvbnN0IERl
YnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwKIAogdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6ZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFt
ZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpCiB7
CisgICAgZXhjZXB0aW9uKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwg
MCwgaGFzSGFuZGxlcik7Cit9CisKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmV4Y2VwdGlvbihj
b25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCBoYXNIYW5kbGVyKQor
ewogICAgIGlmIChtX3BhdXNlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fcGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZSA9PSBQYXVzZU9uQWxsRXhjZXB0aW9ucyB8fCAobV9wYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlID09IFBhdXNlT25VbmNhdWdodEV4Y2VwdGlvbnMgJiYgIWhhc0hhbmRsZXIp
KQogICAgICAgICBtX3BhdXNlT25OZXh0U3RhdGVtZW50ID0gdHJ1ZTsKIAotICAgIHVwZGF0ZUNh
bGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5l
TnVtYmVyKTsKKyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2Fs
bEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6d2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZy
YW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVy
KQogeworICAgIHdpbGxFeGVjdXRlUHJvZ3JhbShkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQs
IGxpbmVOdW1iZXIsIDApOworfQorCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp3aWxsRXhlY3V0
ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCit7CiAgICAg
aWYgKCFtX3BhdXNlZCkKLSAgICAgICAgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChk
ZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAgICBjcmVhdGVD
YWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlk
RXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1l
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCiB7CisgICAgZGlkRXhlY3V0ZVBy
b2dyYW0oZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCAwKTsKK30KKwor
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJD
YWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCit7CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2Fs
bEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1
c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcik7CiAKICAgICAvLyBUcmVhdCBzdGVwcGluZyBvdmVyIHRoZSBlbmQgb2YgYSBwcm9n
cmFtIGxpa2Ugc3RlcHBpbmcgb3V0LgogICAgIGlmIChtX2N1cnJlbnRDYWxsRnJhbWUgPT0gbV9w
YXVzZU9uQ2FsbEZyYW1lKQpAQCAtNDYwLDExICs1NzAsMTYgQEAgdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2Vy
Q2FsbEYKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyKQogeworICAgIGRpZFJlYWNoQnJlYWtwb2ludChkZWJ1Z2dlckNhbGxG
cmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIDApOworfQorCit2b2lkIFNjcmlwdERlYnVnU2Vy
dmVyOjpkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIpCit7CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3Bh
dXNlT25OZXh0U3RhdGVtZW50ID0gdHJ1ZTsKLSAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlm
TmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgdXBk
YXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQs
IGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6
OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCA4NGZiYTVjNjc4ZmM3MjVkZjI4NjJlZTlm
ZjNiZTY1MTg0MTIxYWE2Li45ZDk3YzE2N2U1YzdkNDliZDZlNGVkYTFkNmJhYjQxM2YzYzhmZjM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgK
QEAgLTEyMyw4ICsxMjMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaERpZFBhcnNl
U291cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIEpTQzo6U291cmNlUHJvdmlkZXIq
LCBib29sIGlzQ29udGVudFNjcmlwdCk7CiAgICAgdm9pZCBkaXNwYXRjaEZhaWxlZFRvUGFyc2VT
b3VyY2UoY29uc3QgTGlzdGVuZXJTZXQmIGxpc3RlbmVycywgSlNDOjpTb3VyY2VQcm92aWRlcios
IGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIAotICAgIHZvaWQg
Y3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZy
YW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKTsKLSAgICB2b2lkIHVwZGF0
ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYs
IGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7CisgICAgdm9pZCBjcmVhdGVDYWxs
RnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOworICAgIHZv
aWQgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBKU0M6OkRlYnVnZ2VyQ2Fs
bEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyKTsKICAgICB2b2lkIHBhdXNlSWZOZWVkZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogZHluYW1p
Y0dsb2JhbE9iamVjdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEpTQzo6SlNHbG9iYWxP
YmplY3QqKTsKQEAgLTEzOCw3ICsxMzgsMTkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lbm8pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFr
cG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZW5vKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBTY3JpcHRCcmVha3BvaW50
PiBMaW5lVG9CcmVha3BvaW50TWFwOworICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3Qg
SlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0
IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGZpcnN0TGlu
ZSwgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0
IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIpOworICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3Qg
SlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCBoYXNIYW5kbGVyKTsKKyAgICB2aXJ0dWFsIHZvaWQg
d2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJf
dCBzb3VyY2VJRCwgaW50IGxpbmVubywgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2
b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubywgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwg
aW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8sIGludCBjb2x1bW5OdW1iZXIpOworCisKKyAg
ICB2b2lkIHVwZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbihpbnRwdHJfdCwgaW50KTsKKwor
ICAgIHR5cGVkZWYgVmVjdG9yPFNjcmlwdEJyZWFrcG9pbnQ+IEJyZWFrcG9pbnRzSW5MaW5lOwor
ICAgIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBCcmVha3BvaW50c0luTGluZT4gTGluZVRvQnJlYWtw
b2ludE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIExpbmVUb0JyZWFrcG9pbnRN
YXA+IFNvdXJjZUlkVG9CcmVha3BvaW50c01hcDsKIAogICAgIGJvb2wgbV9jYWxsaW5nTGlzdGVu
ZXJzOwpAQCAtMTUxLDYgKzE2MywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEphdmFTY3Jp
cHRDYWxsRnJhbWU+IG1fY3VycmVudENhbGxGcmFtZTsKICAgICBTb3VyY2VJZFRvQnJlYWtwb2lu
dHNNYXAgbV9zb3VyY2VJZFRvQnJlYWtwb2ludHM7CiAgICAgVGltZXI8U2NyaXB0RGVidWdTZXJ2
ZXI+IG1fcmVjb21waWxlVGltZXI7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2N1cnJlbnRTb3Vy
Y2VDb2RlOworICAgIGludHB0cl90IG1fY3VycmVudFNvdXJjZUlEOworICAgIFNjcmlwdEJyZWFr
cG9pbnQgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155774</attachid>
            <date>2012-08-01 03:45:08 -0700</date>
            <delta_ts>2012-08-01 20:55:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120801184441.patch</filename>
            <type>text/plain</type>
            <size>314809</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0MzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NTEwOGFlNzU4NzIwNjlmNzc5Yzk3MDliOGM3MzU1Nzk3OTIyZGY0Li43ZDFlZmFlNzk4YmE2ZDgz
M2E4Yjg4ZmFmZjNjMDI0Y2MwZmNiOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NjkgQEAKKzIwMTItMDgtMDEgIFBldGVyIFdhbmcgIDxwZXRlci53YW5nQHRvcmNobW9i
aWxlLmNvbS5jbj4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbSlNDXSBpbXBsZW1lbnQgc2V0
dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMwMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBjb3VudGVyIGluIGxleGVyIHRvIHJlY29yZCB0
aGUgY29sdW1uIG9mIGVhY2ggdG9rZW4uIERlYnVnZ2VyIHdpbGwgdXNlIGNvbHVtbiBpbmZvIAor
ICAgICAgICBpbiAiUHJldHR5IFByaW50IiBkZWJ1ZyBtb2RlIG9mIEluc3BlY3Rvci4KKworICAg
ICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6
cGFkT3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2spOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoQnl0
ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
OgorICAgICAgICAoSlNDOjpBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KToKKyAgICAgICAgKEpT
Qzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpDb25kaXRpb25hbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNvbnN0U3Rh
dGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RW1wdHlTdGF0ZW1lbnRO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGU6
OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpJZk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OklmRWxz
ZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRvV2hpbGVOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpXaGlsZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OkZvck5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZvckluTm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29udGludWVOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpCcmVha05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OlJldHVybk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OldpdGhOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpMYWJlbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRocm93
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRocm93
RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmRlYnVnKToKKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgorICAg
ICAgICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2Rl
YnVnKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX2RlYnVnKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAg
ICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfU0xPV19QQVRIX0RFQ0wpOgor
ICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChBU1RCdWlsZGVyKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29tbWFFeHByKToKKyAgICAgICAgKEpTQzo6
QVNUQnVpbGRlcjo6Y3JlYXRlTG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZVVuYXJ5UGx1cyk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVZvaWQp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjp0aGlzRXhwcik6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZVJlc29sdmUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVh
dGVPYmplY3RMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXJyYXkp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVOdW1iZXJFeHByKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6Y3JlYXRlQm9vbGVhbik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZU51bGwp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCcmFja2V0QWNjZXNzKToKKyAgICAg
ICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRG90QWNjZXNzKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlUmVnRXhwKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRl
TmV3RXhwcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNvbmRpdGlvbmFsRXhw
cik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUFzc2lnblJlc29sdmUpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbkV4cHIpOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6Y3JlYXRlQXJndW1lbnRzTGlzdCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZVByb3BlcnR5TGlzdCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmNE
ZWNsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQmxvY2tTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFeHByU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlSWZTdGF0ZW1lbnQpOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGb3JMb29wKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6Y3JlYXRlRm9ySW5Mb29wKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRW1w
dHlTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVWYXJTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVSZXR1cm5TdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCcmVha1N0YXRlbWVudCk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlVHJ5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6Y3JlYXRlU3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
Y3JlYXRlV2hpbGVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVE
b1doaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTGFiZWxT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVXaXRoU3RhdGVtZW50
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVGhyb3dTdGF0ZW1lbnQpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEZWJ1Z2dlcik6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZUNvbnN0U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRl
cjo6YXBwZW5kQ29uc3REZWNsKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y29tYmluZUNv
bW1hTm9kZXMpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjphcHBlbmRCaW5hcnlPcGVyYXRp
b24pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBc3NpZ25tZW50KToKKyAgICAg
ICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTnVtYmVyKToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6bWFrZVR5cGVPZk5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRGVs
ZXRlTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VOZWdhdGVOb2RlKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUJpdHdpc2VOb3ROb2RlKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6bWFrZU11bHROb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
bWFrZURpdk5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlTW9kTm9kZSk6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VBZGROb2RlKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6bWFrZVN1Yk5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlTGVm
dFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VSaWdodFNoaWZ0Tm9k
ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VVUmlnaHRTaGlmdE5vZGUpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQml0T3JOb2RlKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6bWFrZUJpdEFuZE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtl
Qml0WE9yTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxO
b2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUJpbmFyeU5vZGUpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6Om1ha2VQcmVmaXhOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZVBv
c3RmaXhOb2RlKToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjo6
OnNldENvZGUpOgorICAgICAgICAoSlNDOjo6OmludGVybmFsU2hpZnQpOgorICAgICAgICAoSlND
Ojo6OnNoaWZ0KToKKyAgICAgICAgKEpTQzo6OjpsZXgpOgorICAgICAgICAqIHBhcnNlci9MZXhl
ci5oOgorICAgICAgICAoTGV4ZXIpOgorICAgICAgICAoSlNDOjpMZXhlcjo6Y3VycmVudENvbHVt
bk51bWJlcik6CisgICAgICAgIChKU0M6Ojo6bGV4RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAg
ICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6Tm9kZTo6Tm9kZSk6
CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjpFeHByZXNzaW9uTm9kZSk6CisgICAgICAg
IChKU0M6OlN0YXRlbWVudE5vZGU6OlN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSlNDOjpOdWxs
Tm9kZTo6TnVsbE5vZGUpOgorICAgICAgICAoSlNDOjpCb29sZWFuTm9kZTo6Qm9vbGVhbk5vZGUp
OgorICAgICAgICAoSlNDOjpOdW1iZXJOb2RlOjpOdW1iZXJOb2RlKToKKyAgICAgICAgKEpTQzo6
U3RyaW5nTm9kZTo6U3RyaW5nTm9kZSk6CisgICAgICAgIChKU0M6OlJlZ0V4cE5vZGU6OlJlZ0V4
cE5vZGUpOgorICAgICAgICAoSlNDOjpUaGlzTm9kZTo6VGhpc05vZGUpOgorICAgICAgICAoSlND
OjpSZXNvbHZlTm9kZTo6UmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpBcnJheU5vZGU6OkFy
cmF5Tm9kZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OlByb3BlcnR5TGlzdE5v
ZGUpOgorICAgICAgICAoSlNDOjpPYmplY3RMaXRlcmFsTm9kZTo6T2JqZWN0TGl0ZXJhbE5vZGUp
OgorICAgICAgICAoSlNDOjpCcmFja2V0QWNjZXNzb3JOb2RlOjpCcmFja2V0QWNjZXNzb3JOb2Rl
KToKKyAgICAgICAgKEpTQzo6RG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUpOgorICAg
ICAgICAoSlNDOjpBcmd1bWVudExpc3ROb2RlOjpBcmd1bWVudExpc3ROb2RlKToKKyAgICAgICAg
KEpTQzo6TmV3RXhwck5vZGU6Ok5ld0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6RXZhbEZ1bmN0
aW9uQ2FsbE5vZGU6OkV2YWxGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25DYWxsVmFsdWVOb2RlOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGUpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUpOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGUp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2Rl
KToKKyAgICAgICAgKEpTQzo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNh
bGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBs
eUZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoSlNDOjpQcmVQb3N0UmVzb2x2ZU5vZGU6
OlByZVBvc3RSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhSZXNvbHZlTm9kZTo6
UG9zdGZpeFJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6UG9zdGZpeEJyYWNrZXROb2RlOjpQ
b3N0Zml4QnJhY2tldE5vZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4RG90Tm9kZTo6UG9zdGZp
eERvdE5vZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4RXJyb3JOb2RlOjpQb3N0Zml4RXJyb3JO
b2RlKToKKyAgICAgICAgKEpTQzo6RGVsZXRlUmVzb2x2ZU5vZGU6OkRlbGV0ZVJlc29sdmVOb2Rl
KToKKyAgICAgICAgKEpTQzo6RGVsZXRlQnJhY2tldE5vZGU6OkRlbGV0ZUJyYWNrZXROb2RlKToK
KyAgICAgICAgKEpTQzo6RGVsZXRlRG90Tm9kZTo6RGVsZXRlRG90Tm9kZSk6CisgICAgICAgIChK
U0M6OkRlbGV0ZVZhbHVlTm9kZTo6RGVsZXRlVmFsdWVOb2RlKToKKyAgICAgICAgKEpTQzo6Vm9p
ZE5vZGU6OlZvaWROb2RlKToKKyAgICAgICAgKEpTQzo6VHlwZU9mUmVzb2x2ZU5vZGU6OlR5cGVP
ZlJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6VHlwZU9mVmFsdWVOb2RlOjpUeXBlT2ZWYWx1
ZU5vZGUpOgorICAgICAgICAoSlNDOjpQcmVmaXhSZXNvbHZlTm9kZTo6UHJlZml4UmVzb2x2ZU5v
ZGUpOgorICAgICAgICAoSlNDOjpQcmVmaXhCcmFja2V0Tm9kZTo6UHJlZml4QnJhY2tldE5vZGUp
OgorICAgICAgICAoSlNDOjpQcmVmaXhEb3ROb2RlOjpQcmVmaXhEb3ROb2RlKToKKyAgICAgICAg
KEpTQzo6UHJlZml4RXJyb3JOb2RlOjpQcmVmaXhFcnJvck5vZGUpOgorICAgICAgICAoSlNDOjpV
bmFyeU9wTm9kZTo6VW5hcnlPcE5vZGUpOgorICAgICAgICAoSlNDOjpVbmFyeVBsdXNOb2RlOjpV
bmFyeVBsdXNOb2RlKToKKyAgICAgICAgKEpTQzo6TmVnYXRlTm9kZTo6TmVnYXRlTm9kZSk6Cisg
ICAgICAgIChKU0M6OkJpdHdpc2VOb3ROb2RlOjpCaXR3aXNlTm90Tm9kZSk6CisgICAgICAgIChK
U0M6OkxvZ2ljYWxOb3ROb2RlOjpMb2dpY2FsTm90Tm9kZSk6CisgICAgICAgIChKU0M6OkJpbmFy
eU9wTm9kZTo6QmluYXJ5T3BOb2RlKToKKyAgICAgICAgKEpTQzo6TXVsdE5vZGU6Ok11bHROb2Rl
KToKKyAgICAgICAgKEpTQzo6RGl2Tm9kZTo6RGl2Tm9kZSk6CisgICAgICAgIChKU0M6Ok1vZE5v
ZGU6Ok1vZE5vZGUpOgorICAgICAgICAoSlNDOjpBZGROb2RlOjpBZGROb2RlKToKKyAgICAgICAg
KEpTQzo6U3ViTm9kZTo6U3ViTm9kZSk6CisgICAgICAgIChKU0M6OkxlZnRTaGlmdE5vZGU6Okxl
ZnRTaGlmdE5vZGUpOgorICAgICAgICAoSlNDOjpSaWdodFNoaWZ0Tm9kZTo6UmlnaHRTaGlmdE5v
ZGUpOgorICAgICAgICAoSlNDOjpVbnNpZ25lZFJpZ2h0U2hpZnROb2RlOjpVbnNpZ25lZFJpZ2h0
U2hpZnROb2RlKToKKyAgICAgICAgKEpTQzo6TGVzc05vZGU6Okxlc3NOb2RlKToKKyAgICAgICAg
KEpTQzo6R3JlYXRlck5vZGU6OkdyZWF0ZXJOb2RlKToKKyAgICAgICAgKEpTQzo6TGVzc0VxTm9k
ZTo6TGVzc0VxTm9kZSk6CisgICAgICAgIChKU0M6OkdyZWF0ZXJFcU5vZGU6OkdyZWF0ZXJFcU5v
ZGUpOgorICAgICAgICAoSlNDOjpUaHJvd2FibGVCaW5hcnlPcE5vZGU6OlRocm93YWJsZUJpbmFy
eU9wTm9kZSk6CisgICAgICAgIChKU0M6Okluc3RhbmNlT2ZOb2RlOjpJbnN0YW5jZU9mTm9kZSk6
CisgICAgICAgIChKU0M6OkluTm9kZTo6SW5Ob2RlKToKKyAgICAgICAgKEpTQzo6RXF1YWxOb2Rl
OjpFcXVhbE5vZGUpOgorICAgICAgICAoSlNDOjpOb3RFcXVhbE5vZGU6Ok5vdEVxdWFsTm9kZSk6
CisgICAgICAgIChKU0M6OlN0cmljdEVxdWFsTm9kZTo6U3RyaWN0RXF1YWxOb2RlKToKKyAgICAg
ICAgKEpTQzo6Tm90U3RyaWN0RXF1YWxOb2RlOjpOb3RTdHJpY3RFcXVhbE5vZGUpOgorICAgICAg
ICAoSlNDOjpCaXRBbmROb2RlOjpCaXRBbmROb2RlKToKKyAgICAgICAgKEpTQzo6Qml0T3JOb2Rl
OjpCaXRPck5vZGUpOgorICAgICAgICAoSlNDOjpCaXRYT3JOb2RlOjpCaXRYT3JOb2RlKToKKyAg
ICAgICAgKEpTQzo6TG9naWNhbE9wTm9kZTo6TG9naWNhbE9wTm9kZSk6CisgICAgICAgIChKU0M6
OkNvbmRpdGlvbmFsTm9kZTo6Q29uZGl0aW9uYWxOb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1v
ZGlmeVJlc29sdmVOb2RlOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpB
c3NpZ25SZXNvbHZlTm9kZTo6QXNzaWduUmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpSZWFk
TW9kaWZ5QnJhY2tldE5vZGU6OlJlYWRNb2RpZnlCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6
OkFzc2lnbkJyYWNrZXROb2RlOjpBc3NpZ25CcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OkFz
c2lnbkRvdE5vZGU6OkFzc2lnbkRvdE5vZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9kaWZ5RG90
Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUpOgorICAgICAgICAoSlNDOjpBc3NpZ25FcnJvck5vZGU6
OkFzc2lnbkVycm9yTm9kZSk6CisgICAgICAgIChKU0M6OkNvbW1hTm9kZTo6Q29tbWFOb2RlKToK
KyAgICAgICAgKEpTQzo6Q29uc3RTdGF0ZW1lbnROb2RlOjpDb25zdFN0YXRlbWVudE5vZGUpOgor
ICAgICAgICAoSlNDOjpFbXB0eVN0YXRlbWVudE5vZGU6OkVtcHR5U3RhdGVtZW50Tm9kZSk6Cisg
ICAgICAgIChKU0M6OkRlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6RGVidWdnZXJTdGF0ZW1lbnROb2Rl
KToKKyAgICAgICAgKEpTQzo6RXhwclN0YXRlbWVudE5vZGU6OkV4cHJTdGF0ZW1lbnROb2RlKToK
KyAgICAgICAgKEpTQzo6VmFyU3RhdGVtZW50Tm9kZTo6VmFyU3RhdGVtZW50Tm9kZSk6CisgICAg
ICAgIChKU0M6OklmTm9kZTo6SWZOb2RlKToKKyAgICAgICAgKEpTQzo6SWZFbHNlTm9kZTo6SWZF
bHNlTm9kZSk6CisgICAgICAgIChKU0M6OkRvV2hpbGVOb2RlOjpEb1doaWxlTm9kZSk6CisgICAg
ICAgIChKU0M6OldoaWxlTm9kZTo6V2hpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6Rm9yTm9kZTo6
Rm9yTm9kZSk6CisgICAgICAgIChKU0M6OkNvbnRpbnVlTm9kZTo6Q29udGludWVOb2RlKToKKyAg
ICAgICAgKEpTQzo6QnJlYWtOb2RlOjpCcmVha05vZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5O
b2RlOjpSZXR1cm5Ob2RlKToKKyAgICAgICAgKEpTQzo6V2l0aE5vZGU6OldpdGhOb2RlKToKKyAg
ICAgICAgKEpTQzo6TGFiZWxOb2RlOjpMYWJlbE5vZGUpOgorICAgICAgICAoSlNDOjpUaHJvd05v
ZGU6OlRocm93Tm9kZSk6CisgICAgICAgIChKU0M6OlRyeU5vZGU6OlRyeU5vZGUpOgorICAgICAg
ICAoSlNDOjpGdW5jRXhwck5vZGU6OkZ1bmNFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmNE
ZWNsTm9kZTo6RnVuY0RlY2xOb2RlKToKKyAgICAgICAgKEpTQzo6U3dpdGNoTm9kZTo6U3dpdGNo
Tm9kZSk6CisgICAgICAgIChKU0M6OkNvbnN0RGVjbE5vZGU6OkNvbnN0RGVjbE5vZGUpOgorICAg
ICAgICAoSlNDOjpCbG9ja05vZGU6OkJsb2NrTm9kZSk6CisgICAgICAgIChKU0M6OkZvckluTm9k
ZTo6Rm9ySW5Ob2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuY3BwOgorICAgICAgICAoSlND
OjpTdGF0ZW1lbnROb2RlOjpzZXRMb2MpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6
U2NvcGVOb2RlOjpTY29wZU5vZGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6UHJvZ3Jh
bU5vZGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKEpT
Qzo6RXZhbE5vZGU6OkV2YWxOb2RlKToKKyAgICAgICAgKEpTQzo6RXZhbE5vZGU6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUpOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUpOgorICAgICAgICAqIHBhcnNlci9O
b2Rlcy5oOgorICAgICAgICAoTm9kZSk6CisgICAgICAgIChKU0M6Ok5vZGU6OmNvbHVtbk5vKToK
KyAgICAgICAgKEV4cHJlc3Npb25Ob2RlKToKKyAgICAgICAgKFN0YXRlbWVudE5vZGUpOgorICAg
ICAgICAoSlNDOjpTdGF0ZW1lbnROb2RlOjpjb2x1bW4pOgorICAgICAgICAoTnVsbE5vZGUpOgor
ICAgICAgICAoQm9vbGVhbk5vZGUpOgorICAgICAgICAoTnVtYmVyTm9kZSk6CisgICAgICAgIChT
dHJpbmdOb2RlKToKKyAgICAgICAgKFJlZ0V4cE5vZGUpOgorICAgICAgICAoVGhpc05vZGUpOgor
ICAgICAgICAoUmVzb2x2ZU5vZGUpOgorICAgICAgICAoQXJyYXlOb2RlKToKKyAgICAgICAgKFBy
b3BlcnR5TGlzdE5vZGUpOgorICAgICAgICAoT2JqZWN0TGl0ZXJhbE5vZGUpOgorICAgICAgICAo
QnJhY2tldEFjY2Vzc29yTm9kZSk6CisgICAgICAgIChEb3RBY2Nlc3Nvck5vZGUpOgorICAgICAg
ICAoQXJndW1lbnRMaXN0Tm9kZSk6CisgICAgICAgIChOZXdFeHByTm9kZSk6CisgICAgICAgIChF
dmFsRnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgIChGdW5jdGlvbkNhbGxWYWx1ZU5vZGUpOgor
ICAgICAgICAoRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUpOgorICAgICAgICAoRnVuY3Rpb25DYWxs
QnJhY2tldE5vZGUpOgorICAgICAgICAoRnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAgICAgIChD
YWxsRnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAgICAgIChBcHBseUZ1bmN0aW9uQ2FsbERvdE5v
ZGUpOgorICAgICAgICAoUHJlUG9zdFJlc29sdmVOb2RlKToKKyAgICAgICAgKFBvc3RmaXhSZXNv
bHZlTm9kZSk6CisgICAgICAgIChQb3N0Zml4QnJhY2tldE5vZGUpOgorICAgICAgICAoUG9zdGZp
eERvdE5vZGUpOgorICAgICAgICAoUG9zdGZpeEVycm9yTm9kZSk6CisgICAgICAgIChEZWxldGVS
ZXNvbHZlTm9kZSk6CisgICAgICAgIChEZWxldGVCcmFja2V0Tm9kZSk6CisgICAgICAgIChEZWxl
dGVEb3ROb2RlKToKKyAgICAgICAgKERlbGV0ZVZhbHVlTm9kZSk6CisgICAgICAgIChWb2lkTm9k
ZSk6CisgICAgICAgIChUeXBlT2ZSZXNvbHZlTm9kZSk6CisgICAgICAgIChUeXBlT2ZWYWx1ZU5v
ZGUpOgorICAgICAgICAoUHJlZml4UmVzb2x2ZU5vZGUpOgorICAgICAgICAoUHJlZml4QnJhY2tl
dE5vZGUpOgorICAgICAgICAoUHJlZml4RG90Tm9kZSk6CisgICAgICAgIChQcmVmaXhFcnJvck5v
ZGUpOgorICAgICAgICAoVW5hcnlPcE5vZGUpOgorICAgICAgICAoVW5hcnlQbHVzTm9kZSk6Cisg
ICAgICAgIChOZWdhdGVOb2RlKToKKyAgICAgICAgKEJpdHdpc2VOb3ROb2RlKToKKyAgICAgICAg
KExvZ2ljYWxOb3ROb2RlKToKKyAgICAgICAgKEJpbmFyeU9wTm9kZSk6CisgICAgICAgIChNdWx0
Tm9kZSk6CisgICAgICAgIChEaXZOb2RlKToKKyAgICAgICAgKE1vZE5vZGUpOgorICAgICAgICAo
QWRkTm9kZSk6CisgICAgICAgIChTdWJOb2RlKToKKyAgICAgICAgKExlZnRTaGlmdE5vZGUpOgor
ICAgICAgICAoUmlnaHRTaGlmdE5vZGUpOgorICAgICAgICAoVW5zaWduZWRSaWdodFNoaWZ0Tm9k
ZSk6CisgICAgICAgIChMZXNzTm9kZSk6CisgICAgICAgIChHcmVhdGVyTm9kZSk6CisgICAgICAg
IChMZXNzRXFOb2RlKToKKyAgICAgICAgKEdyZWF0ZXJFcU5vZGUpOgorICAgICAgICAoVGhyb3dh
YmxlQmluYXJ5T3BOb2RlKToKKyAgICAgICAgKEluc3RhbmNlT2ZOb2RlKToKKyAgICAgICAgKElu
Tm9kZSk6CisgICAgICAgIChFcXVhbE5vZGUpOgorICAgICAgICAoTm90RXF1YWxOb2RlKToKKyAg
ICAgICAgKFN0cmljdEVxdWFsTm9kZSk6CisgICAgICAgIChOb3RTdHJpY3RFcXVhbE5vZGUpOgor
ICAgICAgICAoQml0QW5kTm9kZSk6CisgICAgICAgIChCaXRPck5vZGUpOgorICAgICAgICAoQml0
WE9yTm9kZSk6CisgICAgICAgIChMb2dpY2FsT3BOb2RlKToKKyAgICAgICAgKENvbmRpdGlvbmFs
Tm9kZSk6CisgICAgICAgIChSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUpOgorICAgICAgICAoQXNzaWdu
UmVzb2x2ZU5vZGUpOgorICAgICAgICAoUmVhZE1vZGlmeUJyYWNrZXROb2RlKToKKyAgICAgICAg
KEFzc2lnbkJyYWNrZXROb2RlKToKKyAgICAgICAgKEFzc2lnbkRvdE5vZGUpOgorICAgICAgICAo
UmVhZE1vZGlmeURvdE5vZGUpOgorICAgICAgICAoQXNzaWduRXJyb3JOb2RlKToKKyAgICAgICAg
KENvbW1hTm9kZSk6CisgICAgICAgIChDb25zdERlY2xOb2RlKToKKyAgICAgICAgKENvbnN0U3Rh
dGVtZW50Tm9kZSk6CisgICAgICAgIChCbG9ja05vZGUpOgorICAgICAgICAoRW1wdHlTdGF0ZW1l
bnROb2RlKToKKyAgICAgICAgKERlYnVnZ2VyU3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChFeHBy
U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChWYXJTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKElm
Tm9kZSk6CisgICAgICAgIChJZkVsc2VOb2RlKToKKyAgICAgICAgKERvV2hpbGVOb2RlKToKKyAg
ICAgICAgKFdoaWxlTm9kZSk6CisgICAgICAgIChGb3JOb2RlKToKKyAgICAgICAgKEZvckluTm9k
ZSk6CisgICAgICAgIChDb250aW51ZU5vZGUpOgorICAgICAgICAoQnJlYWtOb2RlKToKKyAgICAg
ICAgKFJldHVybk5vZGUpOgorICAgICAgICAoV2l0aE5vZGUpOgorICAgICAgICAoTGFiZWxOb2Rl
KToKKyAgICAgICAgKFRocm93Tm9kZSk6CisgICAgICAgIChUcnlOb2RlKToKKyAgICAgICAgKFNj
b3BlTm9kZSk6CisgICAgICAgIChQcm9ncmFtTm9kZSk6CisgICAgICAgIChFdmFsTm9kZSk6Cisg
ICAgICAgIChGdW5jdGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEZ1bmNFeHByTm9kZSk6CisgICAg
ICAgIChGdW5jRGVjbE5vZGUpOgorICAgICAgICAoU3dpdGNoTm9kZSk6CisgICAgICAgICogcGFy
c2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6Ojo6cGFyc2VTb3VyY2VFbGVtZW50cyk6Cisg
ICAgICAgIChKU0M6Ojo6cGFyc2VWYXJEZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6Ojo6cGFy
c2VDb25zdERlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZURvV2hpbGVTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlV2hpbGVTdGF0ZW1lbnQpOgorICAgICAgICAoSlND
Ojo6OnBhcnNlVmFyRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUNvbnN0
RGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZvclN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6Ojo6cGFyc2VCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFy
c2VDb250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VSZXR1cm5TdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlVGhyb3dTdGF0ZW1lbnQpOgorICAgICAgICAoSlND
Ojo6OnBhcnNlV2l0aFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VTd2l0Y2hTdGF0
ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlVHJ5U3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZURlYnVnZ2VyU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUJsb2Nr
U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6Ojo6cGFyc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjo6OnBhcnNlRnVuY3Rpb25J
bmZvKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAg
ICAoSlNDOjo6OnBhcnNlRXhwcmVzc2lvbk9yTGFiZWxTdGF0ZW1lbnQpOgorICAgICAgICAoSlND
Ojo6OnBhcnNlRXhwcmVzc2lvblN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VJZlN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VFeHByZXNzaW9uKToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUNv
bmRpdGlvbmFsRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VCaW5hcnlFeHByZXNz
aW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6Ojpw
YXJzZU9iamVjdExpdGVyYWwpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU3RyaWN0T2JqZWN0TGl0
ZXJhbCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VBcnJheUxpdGVyYWwpOgorICAgICAgICAoSlND
Ojo6OnBhcnNlUHJpbWFyeUV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlQXJndW1l
bnRzKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZU1lbWJlckV4cHJlc3Npb24pOgorICAgICAgICAo
SlNDOjo6OnBhcnNlVW5hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6
CisgICAgICAgIChKU0M6OlBhcnNlcjo6bmV4dCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6bmV4
dEV4cGVjdElkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnRva2VuU3RhcnQpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI6OnRva2VuTGluZSk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6
dG9rZW5FbmQpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnRva2VuTG9jYXRpb24pOgorICAgICAg
ICAoUGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpnZXRUb2tlbk5hbWUpOgorICAgICAg
ICAoSlNDOjo6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyVG9rZW5zLmg6CisgICAg
ICAgIChKU0M6OkpTVG9rZW5Mb2NhdGlvbjo6SlNUb2tlbkxvY2F0aW9uKToKKyAgICAgICAgKEpT
VG9rZW5Mb2NhdGlvbik6CisgICAgICAgIChKU1Rva2VuKToKKyAgICAgICAgKiBwYXJzZXIvU291
cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaDoKKyAgICAgICAgKEpTQzo6U291cmNlUHJvdmlkZXJDYWNo
ZUl0ZW06OmNsb3NlQnJhY2VUb2tlbik6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIu
aDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDb21tYUV4cHIpOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjptYWtlQXNzaWduTm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6Om1ha2VQcmVmaXhOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
bWFrZVBvc3RmaXhOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZVR5cGVP
Zk5vZGUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlRGVsZXRlTm9kZSk6Cisg
ICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VOZWdhdGVOb2RlKToKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6bWFrZUJpdHdpc2VOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6Y3JlYXRlTG9naWNhbE5vdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZVVuYXJ5UGx1cyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZVZvaWQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjp0aGlzRXhwcik6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVJlc29sdmUpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVPYmplY3RMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlQXJyYXkpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVO
dW1iZXJFeHByKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlU3RyaW5nKToK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQm9vbGVhbik6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU51bGwpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVCcmFja2V0QWNjZXNzKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlRG90QWNjZXNzKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlUmVn
RXhwKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlTmV3RXhwcik6CisgICAg
ICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUNvbmRpdGlvbmFsRXhwcik6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUFzc2lnblJlc29sdmUpOgorICAgICAgICAoSlND
OjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbkV4cHIpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVBcmd1bWVudHNMaXN0KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlUHJvcGVydHlMaXN0KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRl
RnVuY0RlY2xTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVC
bG9ja1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUV4cHJT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVJZlN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZvckxvb3ApOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGb3JJbkxvb3ApOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpjcmVhdGVFbXB0eVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZVZhclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZVJldHVyblN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNyZWF0ZUJyZWFrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlQ29udGludWVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVh
dGVUcnlTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVTd2l0
Y2hTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVXaGlsZVN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVdpdGhTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVEb1doaWxlU3RhdGVtZW50
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlTGFiZWxTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVUaHJvd1N0YXRlbWVudCk6CisgICAg
ICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURlYnVnZ2VyKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ29uc3RTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjphcHBlbmRDb25zdERlY2wpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2Vy
OjpjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y29tYmluZUNvbW1hTm9kZXMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpv
cGVyYXRvclN0YWNrUG9wKToKKwogMjAxMi0wNy0zMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEZpeCB0aGUgV2luZG93cyBidWlsZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxZWZi
MjQ3MmYxMTE3NTE1N2FkMjY5ZTAzNDliNDMxN2Q2ZTYwNWRjLi44MzQ1NzRhYWM1MGMxNTBlYmI1
Y2ZkNWNlYzE2YTUwZmMwZDczNTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTIt
MDgtMDEgIFBldGVyIFdhbmcgIDxwZXRlci53YW5nQHRvcmNobW9iaWxlLmNvbS5jbj4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBbSlNDXSBpbXBsZW1lbnQgc2V0dGluZyBicmVha3BvaW50cyBi
eSBsaW5lOmNvbHVtbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTMwMDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9mIHRoZSBjaGFuZ2Ugc3VjaCBhcyBhcHByb2Fj
aCwgcmF0aW9uYWxlLiBQbGVhc2UgYWRkIHBlci1mdW5jdGlvbiBkZXNjcmlwdGlvbnMgYmVsb3cg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dERlYnVnU2VydmVyOjpzZXRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERl
YnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6Y3JlYXRlQ2FsbEZyYW1l
QW5kUGF1c2VJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6
dXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHREZWJ1Z1NlcnZlcjo6Y2FsbEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjphdFN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZl
cjo6cmV0dXJuRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmV4
Y2VwdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6d2lsbEV4ZWN1
dGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpkaWRFeGVj
dXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkUmVh
Y2hCcmVha3BvaW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5o
OgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXIpOgorCiAyMDEyLTA3LTMxICBNT1JJVEEgSGFq
aW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIEludGVybmFsczo6c2V0QXV0aG9y
U2hhZG93RE9NRm9yQW55RWxlbWVudEVuYWJsZWQgc2hvdWxkIGJlIG9uIEludGVybmFsU2V0dGlu
Z3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAppbmRleCAxNGNlZmI5ZDkw
NWQ1ZDkxMjBkMGE1MTdmMDc4ZmZkNTA1MTQ2NmExLi40MzA4ZTc5ZGY2YWEyM2Y1Y2Y1ZjI0NjI1
Mzg4NDNiMjc0NGM5YTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT3Bjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5o
CkBAIC0xOTQsNyArMTk0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX3Ro
cm93LCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX3Rocm93X3JlZmVyZW5jZV9lcnJvciwgMikgXAog
ICAgICAgICBcCi0gICAgICAgIG1hY3JvKG9wX2RlYnVnLCA0KSBcCisgICAgICAgIG1hY3JvKG9w
X2RlYnVnLCA1KSBcCiAgICAgICAgIG1hY3JvKG9wX3Byb2ZpbGVfd2lsbF9jYWxsLCAyKSBcCiAg
ICAgICAgIG1hY3JvKG9wX3Byb2ZpbGVfZGlkX2NhbGwsIDIpIFwKICAgICAgICAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAppbmRleCAzM2YyODJjNjY0NjU2MDk0MzM5YTRmNjY2MzU0YTExZDhiNjIyNzc2Li5h
YzIzNGI3Zjg4YmFjMzVmMjIzNjQ3NzQ0NmI0Mjc5OWNmOWZjYTEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cApAQCAtMjA4Myw3ICsyMDgzLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFBvcFNj
b3BlKCkKICAgICBtX2R5bmFtaWNTY29wZURlcHRoLS07CiB9CiAKLXZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREZWJ1Z0hvb2soRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExp
bmUsIGludCBsYXN0TGluZSkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2so
RGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50
IGNvbHVtbikKIHsKICNpZiBFTkFCTEUoREVCVUdfV0lUSF9CUkVBS1BPSU5UKQogICAgIGlmIChk
ZWJ1Z0hvb2tJRCAhPSBEaWRSZWFjaEJyZWFrcG9pbnQpCkBAIC0yMDk2LDYgKzIwOTYsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVidWdIb29rKERlYnVnSG9va0lEIGRlYnVnSG9v
a0lELCBpbnQgZmlyc3RMaW5lLCBpbgogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkZWJ1Z0hv
b2tJRCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZpcnN0TGluZSk7CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGxhc3RMaW5lKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY29s
dW1uKTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaEZpbmFsbHlDb250ZXh0KFN0
YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA1MmZkN2U4M2M2YzM1
MDMzNTk5MTM2YzJlYjZkMDhmMmQxNjJiNDk1Li40OTA5OTFmYTdmNzEyOTZhMmY5NTRkY2U0NDFh
MDZhMmI4N2Y5YTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC01MDYsNyArNTA2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRQdXNoU2NvcGUoUmVnaXN0ZXJJRCogc2Nv
cGUpOwogICAgICAgICB2b2lkIGVtaXRQb3BTY29wZSgpOwogCi0gICAgICAgIHZvaWQgZW1pdERl
YnVnSG9vayhEZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKTsKKyAgICAg
ICAgdm9pZCBlbWl0RGVidWdIb29rKERlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFz
dExpbmUsIGludCBjb2x1bW4pOwogCiAgICAgICAgIGludCBzY29wZURlcHRoKCkgeyByZXR1cm4g
bV9keW5hbWljU2NvcGVEZXB0aCArIG1fZmluYWxseURlcHRoOyB9CiAgICAgICAgIGJvb2wgaGFz
RmluYWxpc2VyKCkgeyByZXR1cm4gbV9maW5hbGx5RGVwdGggIT0gMDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmluZGV4IGQy
NDNlOGNlMDA4NDliNTUyZDk4ZGIwNTAxYzM2OWE0MTVkMmVkMGEuLjRhY2M1NzNlZDA5MzgxMzAy
NThhNDM3NTUzOGVhZWM4MjE3NDkzNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTIwMiwxOCArMjAyLDIxIEBAIGJv
b2wgQXJyYXlOb2RlOjppc1NpbXBsZUFycmF5KCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotQXJndW1lbnRMaXN0Tm9kZSogQXJyYXlOb2RlOjp0b0FyZ3VtZW50TGlzdChKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyKSBjb25zdAorQXJndW1lbnRMaXN0Tm9kZSog
QXJyYXlOb2RlOjp0b0FyZ3VtZW50TGlzdChKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKSBjb25zdAogewogICAgIEFTU0VSVCghbV9lbGlz
aW9uICYmICFtX29wdGlvbmFsKTsKICAgICBFbGVtZW50Tm9kZSogcHRyID0gbV9lbGVtZW50Owog
ICAgIGlmICghcHRyKQogICAgICAgICByZXR1cm4gMDsKLSAgICBBcmd1bWVudExpc3ROb2RlKiBo
ZWFkID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxpbmVOdW1iZXIsIHB0ci0+
dmFsdWUoKSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uOworICAgIGxvY2F0aW9uLmxp
bmUgPSBsaW5lTnVtYmVyOworICAgIGxvY2F0aW9uLmNvbHVtbiA9IGNvbHVtbk51bWJlcjsKKyAg
ICBBcmd1bWVudExpc3ROb2RlKiBoZWFkID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1bWVudExpc3RO
b2RlKGxvY2F0aW9uLCBwdHItPnZhbHVlKCkpOwogICAgIEFyZ3VtZW50TGlzdE5vZGUqIHRhaWwg
PSBoZWFkOwogICAgIHB0ciA9IHB0ci0+bmV4dCgpOwogICAgIGZvciAoOyBwdHI7IHB0ciA9IHB0
ci0+bmV4dCgpKSB7CiAgICAgICAgIEFTU0VSVCghcHRyLT5lbGlzaW9uKCkpOwotICAgICAgICB0
YWlsID0gbmV3IChnbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxpbmVOdW1iZXIsIHRhaWws
IHB0ci0+dmFsdWUoKSk7CisgICAgICAgIHRhaWwgPSBuZXcgKGdsb2JhbERhdGEpIEFyZ3VtZW50
TGlzdE5vZGUobG9jYXRpb24sIHRhaWwsIHB0ci0+dmFsdWUoKSk7CiAgICAgfQogICAgIHJldHVy
biBoZWFkOwogfQpAQCAtNTM2LDcgKzUzOSw3IEBAIFJlZ2lzdGVySUQqIEFwcGx5RnVuY3Rpb25D
YWxsRG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsCiAg
ICAgICAgICAgICAgICAgaWYgKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0KSB7CiAgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9leHByLT5p
c1NpbXBsZUFycmF5KCkpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIW1fYXJncy0+bV9s
aXN0Tm9kZS0+bV9uZXh0LT5tX25leHQpOwotICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1f
bGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1f
bmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLmdsb2JhbERhdGEoKSwgMCk7
CisgICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFy
cmF5Tm9kZSo+KG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50
TGlzdChnZW5lcmF0b3IuZ2xvYmFsRGF0YSgpLCAwLCAwKTsKICAgICAgICAgICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJlYWxGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0TW92ZShnZW5l
cmF0b3IudGVtcERlc3RpbmF0aW9uKGRzdCksIGJhc2UuZ2V0KCkpOwogICAgICAgICAgICAgICAg
ICAgICBDYWxsQXJndW1lbnRzIGNhbGxBcmd1bWVudHMoZ2VuZXJhdG9yLCBtX2FyZ3MpOwogICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoY2FsbEFyZ3VtZW50cy50aGlzUmVn
aXN0ZXIoKSwgb2xkTGlzdC0+bV9leHByKTsKQEAgLTExMjgsNiArMTEzMSw4IEBAIFJlZ2lzdGVy
SUQqIENvbmRpdGlvbmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVyCiAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVFbHNlID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7CiAgICAgUmVmUHRyPExhYmVsPiBhZnRlckVsc2UgPSBnZW5lcmF0b3IubmV3
TGFiZWwoKTsKIAorICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBsaW5lTm8oKSwgbGluZU5vKCksIGNvbHVtbk5vKCkpOworCiAgICAgaWYgKG1fbG9naWNh
bC0+aGFzQ29uZGl0aW9uQ29udGV4dENvZGVnZW4oKSkgewogICAgICAgICBSZWZQdHI8TGFiZWw+
IGJlZm9yZVRoZW4gPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXROb2RlSW5Db25kaXRpb25Db250ZXh0KG1fbG9naWNhbCwgYmVmb3JlVGhlbi5nZXQoKSwgYmVm
b3JlRWxzZS5nZXQoKSwgdHJ1ZSk7CkBAIC0xMzg1LDcgKzEzOTAsNyBAQCBSZWdpc3RlcklEKiBD
b25zdERlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRAogCiBSZWdpc3RlcklEKiBDb25zdFN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5l
cmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxh
c3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5l
cmF0b3IuZW1pdE5vZGUobV9uZXh0KTsKIH0KIApAQCAtMTQyOCw3ICsxNDMzLDcgQEAgUmVnaXN0
ZXJJRCogQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCogRW1wdHlTdGF0ZW1lbnROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQog
ewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJz
dExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAg
cmV0dXJuIGRzdDsKIH0KIApAQCAtMTQzNiw3ICsxNDQxLDcgQEAgUmVnaXN0ZXJJRCogRW1wdHlT
dGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXMKIAogUmVnaXN0ZXJJRCogRGVidWdnZXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKERpZFJlYWNoQnJlYWtwb2ludCwgZmlyc3RMaW5lKCksIGxh
c3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZFJlYWNoQnJlYWtwb2lu
dCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICByZXR1cm4gZHN0Owog
fQogCkBAIC0xNDQ1LDcgKzE0NTAsNyBAQCBSZWdpc3RlcklEKiBEZWJ1Z2dlclN0YXRlbWVudE5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogUmVnaXN0
ZXJJRCogRXhwclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQVNTRVJUKG1fZXhwcik7Ci0gICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpKTsgCisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZXhwcik7CiB9CiAKQEAgLTE0NTQsNyArMTQ1OSw3
IEBAIFJlZ2lzdGVySUQqIEV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiBSZWdpc3RlcklEKiBWYXJTdGF0ZW1lbnROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCop
CiB7CiAgICAgQVNTRVJUKG1fZXhwcik7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCksIGNvbHVtbigpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7
CiB9CiAKQEAgLTE0NjIsNyArMTQ2Nyw3IEBAIFJlZ2lzdGVySUQqIFZhclN0YXRlbWVudE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAKIFJl
Z2lzdGVySUQqIElmTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxs
RXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSwgY29sdW1uKCkpOwogICAgIAogICAgIFJlZlB0cjxMYWJlbD4gYWZ0ZXJUaGVuID0gZ2Vu
ZXJhdG9yLm5ld0xhYmVsKCk7CiAKQEAgLTE0ODYsNyArMTQ5MSw3IEBAIFJlZ2lzdGVySUQqIElm
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKIAogUmVnaXN0ZXJJRCogSWZFbHNlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIAogICAgIFJlZlB0cjxMYWJl
bD4gYmVmb3JlRWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxMYWJlbD4g
YWZ0ZXJFbHNlID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CkBAIC0xNTIyLDEyICsxNTI3LDExIEBA
IFJlZ2lzdGVySUQqIERvV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKICAgICBSZWZQdHI8TGFiZWw+IHRvcE9mTG9vcCA9IGdl
bmVyYXRvci5uZXdMYWJlbCgpOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwodG9wT2ZMb29wLmdl
dCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdExvb3BIaW50KCk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsK
ICAgIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
ZHN0LCBtX3N0YXRlbWVudCk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5jb250
aW51ZVRhcmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxhc3RMaW5lKCksIGxhc3RM
aW5lKCksIGNvbHVtbigpKTsKICAgICBpZiAobV9leHByLT5oYXNDb25kaXRpb25Db250ZXh0Q29k
ZWdlbigpKQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9l
eHByLCB0b3BPZkxvb3AuZ2V0KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCBmYWxzZSk7CiAgICAg
ZWxzZSB7CkBAIC0xNTQ2LDcgKzE1NTAsNyBAQCBSZWdpc3RlcklEKiBXaGlsZU5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAg
IFJlZlB0cjxMYWJlbFNjb3BlPiBzY29wZSA9IGdlbmVyYXRvci5uZXdMYWJlbFNjb3BlKExhYmVs
U2NvcGU6Okxvb3ApOwogICAgIFJlZlB0cjxMYWJlbD4gdG9wT2ZMb29wID0gZ2VuZXJhdG9yLm5l
d0xhYmVsKCk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRl
bWVudCwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSk7CisgICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIG1fZXhwci0+bGluZU5vKCksIG1f
ZXhwci0+bGluZU5vKCksIG1fZXhwci0+Y29sdW1uTm8oKSk7CiAgICAgaWYgKG1fZXhwci0+aGFz
Q29uZGl0aW9uQ29udGV4dENvZGVnZW4oKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5D
b25kaXRpb25Db250ZXh0KG1fZXhwciwgdG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJn
ZXQoKSwgdHJ1ZSk7CiAgICAgZWxzZSB7CkBAIC0xNTYwLDcgKzE1NjQsNyBAQCBSZWdpc3RlcklE
KiBXaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkcwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsK
IAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxp
bmVObygpLCBtX2V4cHItPmxpbmVObygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsK
IAogICAgIGlmIChtX2V4cHItPmhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCiAgICAgICAg
IGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5n
ZXQoKSwgc2NvcGUtPmJyZWFrVGFyZ2V0KCksIGZhbHNlKTsKQEAgLTE1ODEsNyArMTU4NSw3IEBA
IFJlZ2lzdGVySUQqIEZvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3Bl
ID0gZ2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CiAKLSAgICBnZW5l
cmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxh
c3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAgaWYgKG1fZXhw
cjEpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgp
LCBtX2V4cHIxKTsKQEAgLTE2MDIsNyArMTYwNiw3IEBAIFJlZ2lzdGVySUQqIEZvck5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZShkc3Qs
IG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVl
VGFyZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAgICAgaWYgKG1fZXhwcjMpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpLCBtX2V4cHIzKTsKIApAQCAtMTYyOSw3ICsxNjMzLDcgQEAgUmVn
aXN0ZXJJRCogRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHMKICAgICBpZiAoIW1fbGV4cHItPmlzTG9jYXRpb24oKSkKICAg
ICAgICAgcmV0dXJuIGVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGdlbmVyYXRvciwgIkxlZnQgc2lk
ZSBvZiBmb3ItaW4gc3RhdGVtZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4iKTsKIAotICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBpZiAobV9pbml0
KQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSwg
bV9pbml0KTsKQEAgLTE2OTIsNyArMTY5Niw3IEBAIFJlZ2lzdGVySUQqIEZvckluTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAK
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKICAgICBn
ZW5lcmF0b3IuZW1pdE5leHRQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lLCBiYXNlLmdldCgpLCBp
LmdldCgpLCBzaXplLmdldCgpLCBpdGVyLmdldCgpLCBsb29wU3RhcnQuZ2V0KCkpOwotICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwg
bGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0
ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbChzY29wZS0+YnJlYWtUYXJnZXQoKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KQEAg
LTE3MDIsNyArMTcwNiw3IEBAIFJlZ2lzdGVySUQqIEZvckluTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAvLyBFQ01BIDEyLjcK
IFJlZ2lzdGVySUQqIENvbnRpbnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIAogICAgIExhYmVsU2NvcGUqIHNjb3BlID0g
Z2VuZXJhdG9yLmNvbnRpbnVlVGFyZ2V0KG1faWRlbnQpOwogICAgIEFTU0VSVChzY29wZSk7CkBA
IC0xNzE2LDcgKzE3MjAsNyBAQCBSZWdpc3RlcklEKiBDb250aW51ZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogLy8gRUNNQSAxMi44
CiBSZWdpc3RlcklEKiBCcmVha05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICAKICAgICBMYWJlbFNjb3BlKiBzY29wZSA9IGdl
bmVyYXRvci5icmVha1RhcmdldChtX2lkZW50KTsKICAgICBBU1NFUlQoc2NvcGUpOwpAQCAtMTcy
OSw3ICsxNzMzLDcgQEAgUmVnaXN0ZXJJRCogQnJlYWtOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCogUmV0
dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29s
dW1uKCkpOwogICAgIEFTU0VSVChnZW5lcmF0b3IuY29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUp
OwogCiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQpAQCAtMTc0NSw3
ICsxNzQ5LDcgQEAgUmVnaXN0ZXJJRCogUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRKdW1wU2NvcGVzKGwwLmdldCgpLCAwKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChs
MC5nZXQoKSk7CiAgICAgfQotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNh
bGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVt
bigpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOwogfQogCkBAIC0xNzUz
LDcgKzE3NTcsNyBAQCBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogCiBSZWdpc3RlcklEKiBXaXRo
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRl
bWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1u
KCkpOwogICAgIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5uZXdU
ZW1wb3JhcnkoKTsKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoc2NvcGUuZ2V0KCksIG1fZXhwcik7
IC8vIHNjb3BlIG11c3QgYmUgcHJvdGVjdGVkIHVudGlsIHBvcHBlZApAQCAtMTkxOCw3ICsxOTIy
LDcgQEAgUmVnaXN0ZXJJRCogQ2FzZUJsb2NrTm9kZTo6ZW1pdEJ5dGVjb2RlRm9yQmxvY2soQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUKIAogUmVnaXN0ZXJJRCogU3dpdGNoTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
Zmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdp
bGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwog
ICAgIAogICAgIFJlZlB0cjxMYWJlbFNjb3BlPiBzY29wZSA9IGdlbmVyYXRvci5uZXdMYWJlbFNj
b3BlKExhYmVsU2NvcGU6OlN3aXRjaCk7CiAKQEAgLTE5MzMsNyArMTkzNyw3IEBAIFJlZ2lzdGVy
SUQqIFN3aXRjaE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkCiAKIFJlZ2lzdGVySUQqIExhYmVsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5l
cmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxh
c3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAgQVNTRVJUKCFn
ZW5lcmF0b3IuYnJlYWtUYXJnZXQobV9uYW1lKSk7CiAKQEAgLTE5NDgsNyArMTk1Miw3IEBAIFJl
Z2lzdGVySUQqIExhYmVsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAKIFJlZ2lzdGVySUQqIFRocm93Tm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAg
ICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5l
KCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAgaWYg
KGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQogICAgICAgICBkc3QgPSAwOwpAQCAt
MTk2NSw3ICsxOTY5LDcgQEAgUmVnaXN0ZXJJRCogVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICAvLyBOT1RFOiBU
aGUgY2F0Y2ggYW5kIGZpbmFsbHkgYmxvY2tzIG11c3QgYmUgbGFiZWxlZCBleHBsaWNpdGx5LCBz
byB0aGUKICAgICAvLyBvcHRpbWl6ZXIga25vd3MgdGhleSBtYXkgYmUganVtcGVkIHRvIGZyb20g
YW55d2hlcmUuCiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRl
bWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1u
KCkpOwogCiAgICAgUmVmUHRyPExhYmVsPiB0cnlTdGFydExhYmVsID0gZ2VuZXJhdG9yLm5ld0xh
YmVsKCk7CiAgICAgaWYgKG1fZmluYWxseUJsb2NrKQpAQCAtMjAyMiwxMyArMjAyNiwxMyBAQCBp
bmxpbmUgdm9pZCBTY29wZU5vZGU6OmVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaQogCiBSZWdpc3RlcklEKiBQcm9ncmFtTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJv
Z3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKIAogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBkc3RSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBn
ZW5lcmF0b3IuZW1pdExvYWQoZHN0UmVnaXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwogICAg
IGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7CiAK
LSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5l
KCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQ
cm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGdlbmVyYXRv
ci5lbWl0RW5kKGRzdFJlZ2lzdGVyLmdldCgpKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTIwMzcs
MTMgKzIwNDEsMTMgQEAgUmVnaXN0ZXJJRCogUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIAogUmVnaXN0ZXJJRCogRXZh
bE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKikKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVByb2dyYW0s
IGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsRXhlY3V0ZVByb2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAK
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZHN0UmVnaXN0ZXIgPSBnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdFJlZ2lzdGVyLmdldCgpLCBqc1VuZGVm
aW5lZCgpKTsKICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZHN0UmVnaXN0
ZXIuZ2V0KCkpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dy
YW0sIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhEaWRFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsK
ICAgICBnZW5lcmF0b3IuZW1pdEVuZChkc3RSZWdpc3Rlci5nZXQoKSk7CiAgICAgcmV0dXJuIDA7
CiB9CkBAIC0yMDUyLDcgKzIwNTYsNyBAQCBSZWdpc3RlcklEKiBFdmFsTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiBSZWdpc3Rl
cklEKiBGdW5jdGlvbkJvZHlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlk
RW50ZXJDYWxsRnJhbWUsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCks
IGNvbHVtbigpKTsKICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRvciwgZ2VuZXJh
dG9yLmlnbm9yZWRSZXN1bHQoKSk7CiAKICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1l
bnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQoKTsKQEAgLTIwNjgsNyArMjA3Miw3IEBAIFJlZ2lz
dGVySUQqIEZ1bmN0aW9uQm9keU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gcmV0dXJuIHdlIG11c3Qg
YXV0b21hdGljYWxseSBpbnNlcnQgb25lLgogICAgIGlmICghcmV0dXJuTm9kZSkgewogICAgICAg
ICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgPyBnZW5lcmF0b3Iu
dGhpc1JlZ2lzdGVyKCkgOiBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7Ci0g
ICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxs
TGVhdmVDYWxsRnJhbWUsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0UmV0dXJuKHIwKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAppbmRleCBhMjM3MzI5MTg3
ODAzZWRhOTU3YTM3ZDNhMGE5MDdhZmYwYjg5MjMyLi5hNmE0MzNhZGY1MjcwOGYxZTg5OGY1ZGUy
MjdjM2UxN2Y1Yjg5MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXIuaApAQCAtNDIsMTQgKzQyLDI1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGV0YWNoKEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNv
dXJjZVBhcnNlZChFeGVjU3RhdGUqLCBTb3VyY2VQcm92aWRlciosIGludCBlcnJvckxpbmVOdW1i
ZXIsIGNvbnN0IFVTdHJpbmcmIGVycm9yTWVzc2FnZSkgPSAwOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpID0gMDsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGF0U3RhdGVtZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNl
SUQsIGludCBsaW5lTnVtYmVyKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQo
Y29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0IERlYnVnZ2Vy
Q2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7Ci0KLSAg
ICAgICAgdmlydHVhbCB2b2lkIHdpbGxFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxG
cmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAwOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKLSAgICAgICAgdmlydHVhbCB2
b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90
IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZXhj
ZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCwgYm9vbCkgPSAw
OworICAgICAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmLCBpbnRwdHJfdCwgaW50KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQo
Y29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50KSA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCByZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90
LCBpbnQpID0gMDsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgZXhjZXB0aW9uKGNvbnN0IERlYnVn
Z2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCwgaW50LCBib29sKSB7IH07CisgICAgICAgIHZp
cnR1YWwgdm9pZCBhdFN0YXRlbWVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90
LCBpbnQsIGludCkgeyB9OworICAgICAgICB2aXJ0dWFsIHZvaWQgY2FsbEV2ZW50KGNvbnN0IERl
YnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCwgaW50KSB7IH07CisgICAgICAgIHZpcnR1
YWwgdm9pZCByZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBp
bnQsIGludCkgeyB9OworCisKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxFeGVjdXRlUHJvZ3Jh
bShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQpID0gMDsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwg
aW50cHRyX3QsIGludCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hCcmVha3Bv
aW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCkgPSAwOworCisgICAg
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmLCBpbnRwdHJfdCwgaW50LCBpbnQpIHsgfTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEV4
ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCwgaW50
KSB7IH07CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVi
dWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50LCBpbnQpIHsgfTsKKwogCiAgICAgICAgIHZv
aWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoSlNHbG9iYWxEYXRhKik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDNlZGI4
NTg5ZTNhMWUzYzlhNjlkYTdlY2VmYzM5NDA5ZWFiYjQxMjcuLmMyN2E3ZTc1NWRlNWM0ZGY2Y2M4
YTgyZGFiM2IxNTMzMDI0Yzk2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNzMwLDkgKzczMCw5IEBAIE5FVkVSX0lOTElO
RSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUoQ2FsbEZyYW1lKiYgY2FsbEZyYW1l
LCBKU1ZhbHVlIGV4CiAgICAgaWYgKERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNhbGxGcmFtZS0+ZHlu
YW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKSB7CiAgICAgICAgIERlYnVnZ2VyQ2FsbEZy
YW1lIGRlYnVnZ2VyQ2FsbEZyYW1lKGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUpOwogICAgICAg
ICBpZiAoY2FsbEZyYW1lLT5jYWxsZWUoKSkKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5yZXR1cm5F
dmVudChkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291
cmNlSUQoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bGFzdExpbmUoKSk7CisgICAg
ICAgICAgICBkZWJ1Z2dlci0+cmV0dXJuRXZlbnQoZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCktPmxhc3RMaW5lKCksIDApOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBkZWJ1Z2dl
ci0+ZGlkRXhlY3V0ZVByb2dyYW0oZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmxh
c3RMaW5lKCkpOworICAgICAgICAgICAgZGVidWdnZXItPmRpZEV4ZWN1dGVQcm9ncmFtKGRlYnVn
Z2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5sYXN0TGluZSgpLCAwKTsKICAgICB9CiAKICAg
ICAvLyBJZiB0aGlzIGNhbGwgZnJhbWUgY3JlYXRlZCBhbiBhY3RpdmF0aW9uIG9yIGFuICdhcmd1
bWVudHMnIG9iamVjdCwgdGVhciBpdCBvZmYuCkBAIC0xMDU1LDcgKzEwNTUsNyBAQCBORVZFUl9J
TkxJTkUgSGFuZGxlckluZm8qIEludGVycHJldGVyOjp0aHJvd0V4Y2VwdGlvbihDYWxsRnJhbWUq
JiBjYWxsRnJhbWUsIEpTVgogICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUt
PmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkgewogICAgICAgICBEZWJ1Z2dlckNh
bGxGcmFtZSBkZWJ1Z2dlckNhbGxGcmFtZShjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlKTsKICAg
ICAgICAgYm9vbCBoYXNIYW5kbGVyID0gY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICBkZWJ1Z2dlci0+ZXhjZXB0aW9uKGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBjb2Rl
QmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCksIGhhc0hh
bmRsZXIpOworICAgICAgICBkZWJ1Z2dlci0+ZXhjZXB0aW9uKGRlYnVnZ2VyQ2FsbEZyYW1lLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBjb2RlQmxvY2stPmxpbmVO
dW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCksIDAsIGhhc0hhbmRsZXIpOwog
ICAgIH0KIAogICAgIC8vIENhbGN1bGF0ZSBhbiBleGNlcHRpb24gaGFuZGxlciB2UEMsIHVud2lu
ZGluZyBjYWxsIGZyYW1lcyBhcyBuZWNlc3NhcnkuCkBAIC0xNjQzLDcgKzE2NDMsNyBAQCBKU1Zh
bHVlIEludGVycHJldGVyOjpleGVjdXRlKEV2YWxFeGVjdXRhYmxlKiBldmFsLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgSlNWYWx1ZQogICAgIHJldHVybiBjaGVja2VkUmV0dXJuKHJlc3VsdCk7CiB9
CiAKLU5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGlu
ZSkKK05FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGlu
ZSwgaW50IGNvbHVtbikKIHsKICAgICBEZWJ1Z2dlciogZGVidWdnZXIgPSBjYWxsRnJhbWUtPmR5
bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKTsKICAgICBpZiAoIWRlYnVnZ2VyKQpAQCAt
MTY1MSwyMiArMTY1MSwyMiBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6ZGVidWco
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIERlYnVnSG9va0lEIGRlYnVnSG9vawogCiAgICAgc3dpdGNo
IChkZWJ1Z0hvb2tJRCkgewogICAgICAgICBjYXNlIERpZEVudGVyQ2FsbEZyYW1lOgotICAgICAg
ICAgICAgZGVidWdnZXItPmNhbGxFdmVudChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJzdExpbmUpOworICAgICAgICAg
ICAgZGVidWdnZXItPmNhbGxFdmVudChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkt
Pm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJzdExpbmUsIGNvbHVtbik7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgV2lsbExlYXZlQ2FsbEZyYW1lOgotICAgICAg
ICAgICAgZGVidWdnZXItPnJldHVybkV2ZW50KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5lKTsKKyAgICAgICAg
ICAgIGRlYnVnZ2VyLT5yZXR1cm5FdmVudChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSwgY29sdW1uKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBXaWxsRXhlY3V0ZVN0YXRlbWVudDoKLSAg
ICAgICAgICAgIGRlYnVnZ2VyLT5hdFN0YXRlbWVudChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJzdExpbmUpOworICAg
ICAgICAgICAgZGVidWdnZXItPmF0U3RhdGVtZW50KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGZpcnN0TGluZSwgY29sdW1u
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBXaWxsRXhlY3V0ZVByb2dyYW06
Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+d2lsbEV4ZWN1dGVQcm9ncmFtKGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGZpcnN0
TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+d2lsbEV4ZWN1dGVQcm9ncmFtKGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCks
IGZpcnN0TGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBE
aWRFeGVjdXRlUHJvZ3JhbToKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRFeGVjdXRlUHJvZ3Jh
bShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5z
b3VyY2VJRCgpLCBsYXN0TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+ZGlkRXhlY3V0ZVBy
b2dyYW0oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUo
KS0+c291cmNlSUQoKSwgbGFzdExpbmUsIGNvbHVtbik7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIGNhc2UgRGlkUmVhY2hCcmVha3BvaW50OgotICAgICAgICAgICAgZGVidWdnZXItPmRp
ZFJlYWNoQnJlYWtwb2ludChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVy
RXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dl
ci0+ZGlkUmVhY2hCcmVha3BvaW50KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+
b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5lLCBjb2x1bW4pOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmgKaW5kZXggODY2M2JmOGVjMzgzZmM5NjA5Y2U0YTYwNTVkOTc1
M2ZmZDA2Y2JiYi4uZjRjY2Q5OTVjOTZiZjBjOWQ2ZDZiMzBkMjUwNmRmN2MwYmNjZDEzNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKQEAg
LTI0MCw3ICsyNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU2FtcGxpbmdUb29sKiBz
YW1wbGVyKCkgeyByZXR1cm4gbV9zYW1wbGVyLmdldCgpOyB9CiAKICAgICAgICAgTkVWRVJfSU5M
SU5FIEhhbmRsZXJJbmZvKiB0aHJvd0V4Y2VwdGlvbihDYWxsRnJhbWUqJiwgSlNWYWx1ZSYsIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgZGVidWco
Q2FsbEZyYW1lKiwgRGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSk7Cisg
ICAgICAgIE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERlYnVnSG9va0lELCBp
bnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUsIGludCBjb2x1bW4pOwogICAgICAgICBzdGF0aWMg
Y29uc3QgVVN0cmluZyBnZXRUcmFjZUxpbmUoQ2FsbEZyYW1lKiwgU3RhY2tGcmFtZUNvZGVUeXBl
LCBjb25zdCBVU3RyaW5nJiwgaW50KTsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQgZ2V0U3RhY2tUcmFjZShKU0dsb2JhbERhdGEqLCBWZWN0b3I8U3RhY2tGcmFtZT4mIHJl
c3VsdHMpOwogICAgICAgICBzdGF0aWMgdm9pZCBhZGRTdGFja1RyYWNlSWZOZWNlc3NhcnkoQ2Fs
bEZyYW1lKiwgSlNPYmplY3QqIGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMuY3BwCmluZGV4IGMwYWY2ZjllOWJiYjU5MGEzNjUyMTYwN2Y3NzIxOTU2ZTdlZDY5NTcu
LjQyMWNmNWJjNjFkYzA1NzFhOWQ0Y2Y3NzI2ODRlYTA1Nzc4NDFlNGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcApAQCAtMTE1OCw2ICsxMTU4LDcgQEAgdm9pZCBK
SVQ6OmVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1
c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICBzdHViQ2Fs
bC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3BlcmFu
ZCkpOwogICAgIHN0dWJDYWxsLmNhbGwoKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDA5NWVhNTdkMzQ5ZmMyNjU3NGEz
Mjc4ZWMwMGMxMjBiMGRkYjczNDkuLjcwYTYwOGUzYWZkMDUwMmFmZGY3ZWQ3MDc3NmU5N2U2MTI3
Y2RlZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKQEAgLTE0NzgsNiArMTQ3OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2RlYnVnKEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tMzIo
Y3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3Vt
ZW50KEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKICAgICBzdHViQ2Fs
bC5hZGRBcmd1bWVudChJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKSk7Cisg
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzRdLnUub3Bl
cmFuZCkpOwogICAgIHN0dWJDYWxsLmNhbGwoKTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmNwcAppbmRleCAwZjAzYTBhNGE5NDZjYzgwYzQxNDNjNGZiMjlhNDYy
MGFlMWE3MTQwLi43MTAwYTBjMTk0Y2Q0MGY0ZjZkOWU5MzgxZjczMmVkYzE1YjQ2OGNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtMzQwMyw4ICszNDAzLDkgQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfZGVidWcpCiAgICAgaW50IGRlYnVnSG9va0lE
ID0gc3RhY2tGcmFtZS5hcmdzWzBdLmludDMyKCk7CiAgICAgaW50IGZpcnN0TGluZSA9IHN0YWNr
RnJhbWUuYXJnc1sxXS5pbnQzMigpOwogICAgIGludCBsYXN0TGluZSA9IHN0YWNrRnJhbWUuYXJn
c1syXS5pbnQzMigpOworICAgIGludCBjb2x1bW4gPSBzdGFja0ZyYW1lLmFyZ3NbM10uaW50MzIo
KTsKIAotICAgIHN0YWNrRnJhbWUuZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPmRlYnVnKGNhbGxG
cmFtZSwgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBs
YXN0TGluZSk7CisgICAgc3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+ZGVidWco
Y2FsbEZyYW1lLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExp
bmUsIGxhc3RMaW5lLCBjb2x1bW4pOwogfQogCiBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwg
dm1fdGhyb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhz
LmNwcAppbmRleCBkMmQ3NDNlMGFjNjJmYTA2ZDNhMDM3OTNjZmQyZWE5N2NiNDNjZGQyLi41OGJm
MWJkZWI0N2NlM2FlZTZjY2NhYTg2YWE1MWE1ZDQzZGFlYTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTE2MDEsOCArMTYwMSw5IEBA
IExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWJ1ZykKICAgICBpbnQgZGVidWdIb29r
SUQgPSBwY1sxXS51Lm9wZXJhbmQ7CiAgICAgaW50IGZpcnN0TGluZSA9IHBjWzJdLnUub3BlcmFu
ZDsKICAgICBpbnQgbGFzdExpbmUgPSBwY1szXS51Lm9wZXJhbmQ7Ci0gICAgCi0gICAgZ2xvYmFs
RGF0YS5pbnRlcnByZXRlci0+ZGVidWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRl
YnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgaW50IGNvbHVtbiA9IHBjWzRd
LnUub3BlcmFuZDsKKworICAgIGdsb2JhbERhdGEuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0
YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUs
IGNvbHVtbik7CiAgICAgCiAgICAgTExJTlRfRU5EKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGQ0YzE3MDYxNzM5YjkzZmMwMWZlNDI2NTMzYTFi
MzYxZjdjM2RmZTUuLjBhNzFmMTI5NGFhYWM0ZTdhNjFlYjMxMDg3NDlkOGIwMDY5MWM3OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC0xMTIsOCArMTEy
LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBpbnQgIERvbnRCdWlsZEtleXdvcmRzID0g
MDsKICAgICBzdGF0aWMgY29uc3QgaW50ICBEb250QnVpbGRTdHJpbmdzID0gMDsKIAotICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlQmluYXJ5Tm9kZShpbnQgbGluZU51bWJlciwgaW50IHRva2VuLCBz
dGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+LCBzdGQ6OnBhaXI8RXhwcmVz
c2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+KTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZUZ1bmN0
aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVu
dHNOb2RlKiBhcmdzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVz
c2lvbk5vZGUqIG1ha2VCaW5hcnlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCB0b2tl
biwgc3RkOjpwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiwgc3RkOjpwYWlyPEV4
cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPik7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VG
dW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBm
dW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7
CiAKICAgICBKU0M6OlNvdXJjZUVsZW1lbnRzKiBjcmVhdGVTb3VyY2VFbGVtZW50cygpIHsgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBKU0M6OlNvdXJjZUVsZW1lbnRzKCk7IH0KIApAQCAtMTI0
LDE2OCArMTI0LDE2OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZFRvQ29tbWEoQ29tbWFO
b2RlKiBjb21tYU5vZGUsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IGNvbW1hTm9kZS0+YXBwZW5k
KGV4cHIpOyB9CiAKLSAgICBDb21tYU5vZGUqIGNyZWF0ZUNvbW1hRXhwcihpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIHJocykgeyByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIENvbW1hTm9kZShsaW5lTnVtYmVyLCBsaHMsIHJocyk7IH0KLQotICAg
IEV4cHJlc3Npb25Ob2RlKiBtYWtlQXNzaWduTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGxlZnQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgbGVmdEhh
c0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRp
dm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZVByZWZpeE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90
LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZVBvc3RmaXhOb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSosIE9wZXJhdG9yLCBpbnQgc3RhcnQsIGludCBkaXZvdCwg
aW50IGVuZCk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VUeXBlT2ZOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSopOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGVsZXRlTm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqLCBpbnQgc3RhcnQsIGludCBkaXZvdCwg
aW50IGVuZCk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VOZWdhdGVOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSopOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0d2lzZU5v
dE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgRXhwcmVzc2lvbk5v
ZGUqIG1ha2VNdWx0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHBy
ZXNzaW9uTm9kZSogbWFrZURpdk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBs
ZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0g
ICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VNb2ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQWRkTm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZVN1Yk5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRYT3JOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0
QW5kTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25O
b2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9k
ZSogbWFrZUJpdE9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHBy
ZXNzaW9uTm9kZSogbWFrZUxlZnRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZVVSaWdodFNoaWZ0Tm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLQotICAgIEV4cHJlc3Npb25Ob2RlKiBj
cmVhdGVMb2dpY2FsTm90KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxOb3ROb2RlKGxpbmVOdW1iZXIsIGV4cHIp
OyB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVVuYXJ5UGx1cyhpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbmFyeVBs
dXNOb2RlKGxpbmVOdW1iZXIsIGV4cHIpOyB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVZv
aWQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgIENvbW1hTm9kZSog
Y3JlYXRlQ29tbWFFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiByaHMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBDb21tYU5vZGUobG9jYXRpb24sIGxocywgcmhzKTsgfQorCisgICAgRXhwcmVzc2lvbk5v
ZGUqIG1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBsZWZ0LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIGxlZnRIYXNBc3Np
Z25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwg
aW50IGVuZCk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VQcmVmaXhOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRp
dm90LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVBvc3RmaXhOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIGludCBzdGFydCwg
aW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVR5cGVPZk5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZURlbGV0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lvbk5vZGUq
IG1ha2VOZWdhdGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7
CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXR3aXNlTm90Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSopOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTXVsdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Np
b25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZURpdk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
KyAgICBFeHByZXNzaW9uTm9kZSogbWFrZU1vZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUFkZE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVN1
Yk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJl
c3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNz
aW9uTm9kZSogbWFrZUJpdFhPck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdEFuZE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdE9yTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25O
b2RlKiBtYWtlTGVmdFNoaWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlUmlnaHRTaGlmdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVVSaWdo
dFNoaWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworCisgICAg
RXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUxvZ2ljYWxOb3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBMb2dpY2FsTm90Tm9kZShsb2NhdGlvbiwgZXhwcik7IH0KKyAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlVW5hcnlQbHVzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQbHVzTm9kZShs
b2NhdGlvbiwgZXhwcik7IH0KKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlVm9pZChjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKICAgICB7CiAg
ICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IFZvaWROb2RlKGxpbmVOdW1iZXIsIGV4cHIpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIFZvaWROb2RlKGxvY2F0aW9uLCBleHByKTsKICAgICB9Ci0gICAgRXhwcmVzc2lvbk5v
ZGUqIHRoaXNFeHByKGludCBsaW5lTnVtYmVyKQorICAgIEV4cHJlc3Npb25Ob2RlKiB0aGlzRXhw
cihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQogICAgIHsKICAgICAgICAgdXNlc1Ro
aXMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUaGlzTm9kZShsaW5lTnVt
YmVyKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUaGlzTm9kZShsb2NhdGlv
bik7CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVSZXNvbHZlKGludCBsaW5lTnVt
YmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgaW50IHN0YXJ0KQorICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVSZXNvbHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0
IElkZW50aWZpZXIqIGlkZW50LCBpbnQgc3RhcnQpCiAgICAgewogICAgICAgICBpZiAobV9nbG9i
YWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmlkZW50KQogICAgICAgICAgICAg
dXNlc0FyZ3VtZW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFJlc29s
dmVOb2RlKGxpbmVOdW1iZXIsICppZGVudCwgc3RhcnQpOworICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIFJlc29sdmVOb2RlKGxvY2F0aW9uLCAqaWRlbnQsIHN0YXJ0KTsKICAgICB9
Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU9iamVjdExpdGVyYWwoaW50IGxpbmVOdW1iZXIp
IHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBPYmplY3RMaXRlcmFsTm9kZShsaW5lTnVtYmVy
KTsgfQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVPYmplY3RMaXRlcmFsKGludCBsaW5lTnVt
YmVyLCBQcm9wZXJ0eUxpc3ROb2RlKiBwcm9wZXJ0aWVzKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgT2JqZWN0TGl0ZXJhbE5vZGUobGluZU51bWJlciwgcHJvcGVydGllcyk7IH0KKyAgICBF
eHByZXNzaW9uTm9kZSogY3JlYXRlT2JqZWN0TGl0ZXJhbChjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgT2JqZWN0TGl0ZXJhbE5vZGUo
bG9jYXRpb24pOyB9CisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU9iamVjdExpdGVyYWwoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlMaXN0Tm9kZSogcHJvcGVydGll
cykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE9iamVjdExpdGVyYWxOb2RlKGxvY2F0aW9u
LCBwcm9wZXJ0aWVzKTsgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5KGludCBs
aW5lTnVtYmVyLCBpbnQgZWxpc2lvbnMpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBlbGlzaW9ucykKICAgICB7CiAg
ICAgICAgIGlmIChlbGlzaW9ucykKICAgICAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5lTnVtYmVyLCBlbGlzaW9u
cyk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJyYXlOb2RlKGxvY2F0aW9u
LCBlbGlzaW9ucyk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5KGlu
dCBsaW5lTnVtYmVyLCBFbGVtZW50Tm9kZSogZWxlbXMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBBcnJheU5vZGUobGluZU51bWJlciwgZWxlbXMpOyB9Ci0gICAgRXhwcmVzc2lvbk5vZGUq
IGNyZWF0ZUFycmF5KGludCBsaW5lTnVtYmVyLCBpbnQgZWxpc2lvbnMsIEVsZW1lbnROb2RlKiBl
bGVtcykKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRWxlbWVudE5vZGUqIGVsZW1zKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgQXJyYXlOb2RlKGxvY2F0aW9uLCBlbGVtcyk7IH0KKyAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlQXJyYXkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50IGVsaXNpb25z
LCBFbGVtZW50Tm9kZSogZWxlbXMpCiAgICAgewogICAgICAgICBpZiAoZWxpc2lvbnMpCiAgICAg
ICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBBcnJheU5vZGUobGluZU51bWJlciwgZWxpc2lvbnMsIGVsZW1zKTsKKyAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBBcnJheU5vZGUobG9jYXRpb24sIGVsaXNpb25zLCBlbGVtcyk7
CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdW1iZXJFeHByKGludCBsaW5lTnVt
YmVyLCBkb3VibGUgZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTnVtYmVyRXhwcihjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBkb3VibGUgZCkKICAgICB7CiAgICAgICAgIGlu
Y0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bWJlck5v
ZGUobGluZU51bWJlciwgZCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTnVt
YmVyTm9kZShsb2NhdGlvbiwgZCk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZVN0cmluZyhpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciogc3RyaW5nKQorICAgIEV4
cHJlc3Npb25Ob2RlKiBjcmVhdGVTdHJpbmcoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgY29uc3QgSWRlbnRpZmllciogc3RyaW5nKQogICAgIHsKICAgICAgICAgaW5jQ29uc3RhbnRz
KCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgU3RyaW5nTm9kZShsaW5lTnVt
YmVyLCAqc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBTdHJpbmdO
b2RlKGxvY2F0aW9uLCAqc3RyaW5nKTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlQm9vbGVhbihpbnQgbGluZU51bWJlciwgYm9vbCBiKQorICAgIEV4cHJlc3Npb25Ob2RlKiBj
cmVhdGVCb29sZWFuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGJvb2wgYikKICAg
ICB7CiAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIEJvb2xlYW5Ob2RlKGxpbmVOdW1iZXIsIGIpOworICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIEJvb2xlYW5Ob2RlKGxvY2F0aW9uLCBiKTsKICAgICB9CiAKLSAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlTnVsbChpbnQgbGluZU51bWJlcikKKyAgICBFeHByZXNzaW9uTm9k
ZSogY3JlYXRlTnVsbChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQogICAgIHsKICAg
ICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
TnVsbE5vZGUobGluZU51bWJlcik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
TnVsbE5vZGUobG9jYXRpb24pOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVC
cmFja2V0QWNjZXNzKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVz
c2lvbk5vZGUqIHByb3BlcnR5LCBib29sIHByb3BlcnR5SGFzQXNzaWdubWVudHMsIGludCBzdGFy
dCwgaW50IGRpdm90LCBpbnQgZW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVCcmFja2V0
QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHksIGJvb2wgcHJvcGVydHlIYXNBc3NpZ25tZW50
cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiAgICAgewotICAgICAgICBCcmFja2V0
QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEJyYWNrZXRBY2Nlc3Nvck5v
ZGUobGluZU51bWJlciwgYmFzZSwgcHJvcGVydHksIHByb3BlcnR5SGFzQXNzaWdubWVudHMpOwor
ICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEJy
YWNrZXRBY2Nlc3Nvck5vZGUobG9jYXRpb24sIGJhc2UsIHByb3BlcnR5LCBwcm9wZXJ0eUhhc0Fz
c2lnbm1lbnRzKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRp
dm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlRG90QWNjZXNzKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciogcHJvcGVydHksIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQg
ZW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIq
IHByb3BlcnR5LCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAg
IERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBEb3RBY2Nlc3Nvck5v
ZGUobGluZU51bWJlciwgYmFzZSwgKnByb3BlcnR5KTsKKyAgICAgICAgRG90QWNjZXNzb3JOb2Rl
KiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIERvdEFjY2Vzc29yTm9kZShsb2NhdGlvbiwgYmFz
ZSwgKnByb3BlcnR5KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQs
IGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlUmVnRXhwKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBw
YXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50IHN0YXJ0KQorICAgIEV4cHJlc3Np
b25Ob2RlKiBjcmVhdGVSZWdFeHAoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29u
c3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MsIGludCBzdGFy
dCkKICAgICB7CiAgICAgICAgIGlmIChZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnVzdHJpbmco
KSkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgUmVnRXhwTm9kZSogbm9kZSA9IG5l
dyAobV9nbG9iYWxEYXRhKSBSZWdFeHBOb2RlKGxpbmVOdW1iZXIsIHBhdHRlcm4sIGZsYWdzKTsK
KyAgICAgICAgUmVnRXhwTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWdFeHBOb2Rl
KGxvY2F0aW9uLCBwYXR0ZXJuLCBmbGFncyk7CiAgICAgICAgIGludCBzaXplID0gcGF0dGVybi5s
ZW5ndGgoKSArIDI7IC8vICsgMiBmb3IgdGhlIHR3byAvJ3MKICAgICAgICAgc2V0RXhjZXB0aW9u
TG9jYXRpb24obm9kZSwgc3RhcnQsIHN0YXJ0ICsgc2l6ZSwgc3RhcnQgKyBzaXplKTsKICAgICAg
ICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU5ld0V4
cHIoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBh
cmd1bWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmd1bWVudHMsIGludCBzdGFydCwgaW50
IGRpdm90LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcg
KG1fZ2xvYmFsRGF0YSkgTmV3RXhwck5vZGUobGluZU51bWJlciwgZXhwciwgYXJndW1lbnRzKTsK
KyAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTmV3RXhwck5v
ZGUobG9jYXRpb24sIGV4cHIsIGFyZ3VtZW50cyk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0
aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAg
fQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU5ld0V4cHIoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIE5ld0V4
cHJOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIE5ld0V4cHJOb2RlKGxpbmVOdW1iZXIs
IGV4cHIpOworICAgICAgICBOZXdFeHByTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBO
ZXdFeHByTm9kZShsb2NhdGlvbiwgZXhwcik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9u
KG5vZGUsIHN0YXJ0LCBlbmQsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAot
ICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVDb25kaXRpb25hbEV4cHIoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Np
b25Ob2RlKiByaHMpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9u
LCBFeHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogcmhzKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBDb25kaXRpb25hbE5vZGUobGluZU51bWJlciwg
Y29uZGl0aW9uLCBsaHMsIHJocyk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
Q29uZGl0aW9uYWxOb2RlKGxvY2F0aW9uLCBjb25kaXRpb24sIGxocywgcmhzKTsKICAgICB9CiAK
LSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXNzaWduUmVzb2x2ZShpbnQgbGluZU51bWJlciwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaHMsIGludCBzdGFydCwg
aW50IGRpdm90LCBpbnQgZW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBc3NpZ25SZXNv
bHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBFeHByZXNzaW9uTm9kZSogcmhzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkK
ICAgICB7CiAgICAgICAgIGlmIChyaHMtPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICBz
dGF0aWNfY2FzdDxGdW5jRXhwck5vZGUqPihyaHMpLT5ib2R5KCktPnNldEluZmVycmVkTmFtZShp
ZGVudCk7Ci0gICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERh
dGEpIEFzc2lnblJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50LCByaHMpOworICAgICAgICBB
c3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25SZXNvbHZl
Tm9kZShsb2NhdGlvbiwgaWRlbnQsIHJocyk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9u
KG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQog
Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUZ1bmN0aW9uRXhwcihpbnQgbGluZU51bWJlciwg
Y29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVy
Tm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGlu
dCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNy
ZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyKiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0ZXJOb2RlKiBw
YXJhbWV0ZXJzLCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlT
dGFydExpbmUsIGludCBib2R5RW5kTGluZSkKICAgICB7Ci0gICAgICAgIEZ1bmNFeHByTm9kZSog
cmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNFeHByTm9kZShsaW5lTnVtYmVyLCAqbmFt
ZSwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VC
cmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtZXRlcnMpOwotICAgICAgICBib2R5LT5zZXRM
b2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUpOworICAgICAgICBGdW5jRXhwck5vZGUqIHJl
c3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobG9jYXRpb24sICpuYW1lLCBi
b2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNl
UG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7CisgICAgICAgIGJvZHktPnNldExvYyhi
b2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGVGdW5jdGlv
bkJvZHkoaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQorICAgIEZ1bmN0aW9u
Qm9keU5vZGUqIGNyZWF0ZUZ1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBib29sIGluU3RyaWN0Q29udGV4dCkKICAgICB7Ci0gICAgICAgIHJldHVybiBGdW5jdGlv
bkJvZHlOb2RlOjpjcmVhdGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBpblN0cmljdENvbnRl
eHQpOworICAgICAgICByZXR1cm4gRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKG1fZ2xvYmFsRGF0
YSwgbG9jYXRpb24sIGluU3RyaWN0Q29udGV4dCk7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRl
IDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoaW50IGxp
bmVOdW1iZXIsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1l
LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVu
QnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlF
bmRMaW5lKQorICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9y
U2V0dGVyUHJvcGVydHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlO
b2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBh
cmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3Nl
QnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCiAgICAgewogICAg
ICAgICBBU1NFUlQobmFtZSk7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBi
b2R5RW5kTGluZSk7CisgICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5k
TGluZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgYm9keS0+c2V0SW5mZXJyZWROYW1lKCpu
YW1lKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5vZGUobV9n
bG9iYWxEYXRhLCAqbmFtZSwgbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNFeHByTm9kZShsaW5lTnVt
YmVyLCBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBib2R5LCBt
X3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBi
b2R5U3RhcnRMaW5lKSwgcGFyYW1zKSwgdHlwZSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgUHJvcGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwgKm5hbWUsIG5ldyAobV9nbG9iYWxE
YXRhKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+
bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJh
Y2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbXMpLCB0eXBlKTsKICAg
ICB9CiAgICAgCi0gICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVy
T3JTZXR0ZXJQcm9wZXJ0eShKU0dsb2JhbERhdGEqLCBpbnQgbGluZU51bWJlciwgUHJvcGVydHlO
b2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0
aW9uQm9keU5vZGUqIGJvZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBp
bnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQorICAgIHRlbXBsYXRlIDxib29sPiBQ
cm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoSlNHbG9iYWxEYXRhKiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUs
IGRvdWJsZSBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJv
ZHksIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGlu
ZSwgaW50IGJvZHlFbmRMaW5lKQogICAgIHsKLSAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFy
dExpbmUsIGJvZHlFbmRMaW5lKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQ
cm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCBuYW1lLCBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4
cHJOb2RlKGxpbmVOdW1iZXIsIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50
aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNs
b3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbXMpLCB0eXBlKTsKKyAgICAgICAgYm9k
eS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERh
dGEsIG5hbWUsIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobG9jYXRpb24sIG1fZ2xv
YmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29k
ZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExp
bmUpLCBwYXJhbXMpLCB0eXBlKTsKICAgICB9CiAKICAgICBBcmd1bWVudHNOb2RlKiBjcmVhdGVB
cmd1bWVudHMoKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRzTm9kZSgpOyB9
CiAgICAgQXJndW1lbnRzTm9kZSogY3JlYXRlQXJndW1lbnRzKEFyZ3VtZW50TGlzdE5vZGUqIGFy
Z3MpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudHNOb2RlKGFyZ3MpOyB9Ci0g
ICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRzTGlzdChpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGFyZykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50
TGlzdE5vZGUobGluZU51bWJlciwgYXJnKTsgfQotICAgIEFyZ3VtZW50TGlzdE5vZGUqIGNyZWF0
ZUFyZ3VtZW50c0xpc3QoaW50IGxpbmVOdW1iZXIsIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MsIEV4
cHJlc3Npb25Ob2RlKiBhcmcpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudExp
c3ROb2RlKGxpbmVOdW1iZXIsIGFyZ3MsIGFyZyk7IH0KKyAgICBBcmd1bWVudExpc3ROb2RlKiBj
cmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBhcmcpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudExpc3RO
b2RlKGxvY2F0aW9uLCBhcmcpOyB9CisgICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1l
bnRzTGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBBcmd1bWVudExpc3ROb2Rl
KiBhcmdzLCBFeHByZXNzaW9uTm9kZSogYXJnKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
QXJndW1lbnRMaXN0Tm9kZShsb2NhdGlvbiwgYXJncywgYXJnKTsgfQogCiAgICAgdGVtcGxhdGUg
PGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlUHJvcGVydHkoY29uc3QgSWRlbnRpZmllciogcHJv
cGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUp
CiAgICAgewpAQCAtMjk0LDggKzI5NCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCAqcHJvcGVydHlOYW1lLCBu
b2RlLCB0eXBlKTsKICAgICB9CiAgICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3Jl
YXRlUHJvcGVydHkoSlNHbG9iYWxEYXRhKiwgZG91YmxlIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lv
bk5vZGUqIG5vZGUsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlKSB7IHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgUHJvcGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBub2RlLCB0
eXBlKTsgfQotICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChpbnQgbGlu
ZU51bWJlciwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0eSkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIFByb3BlcnR5TGlzdE5vZGUobGluZU51bWJlciwgcHJvcGVydHkpOyB9Ci0gICAgUHJvcGVy
dHlMaXN0Tm9kZSogY3JlYXRlUHJvcGVydHlMaXN0KGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5v
ZGUqIHByb3BlcnR5LCBQcm9wZXJ0eUxpc3ROb2RlKiB0YWlsKSB7IHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgUHJvcGVydHlMaXN0Tm9kZShsaW5lTnVtYmVyLCBwcm9wZXJ0eSwgdGFpbCk7IH0K
KyAgICBQcm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0eSkgeyByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIFByb3BlcnR5TGlzdE5vZGUobG9jYXRpb24sIHByb3BlcnR5KTsgfQorICAg
IFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5LCBQcm9wZXJ0eUxpc3ROb2RlKiB0
YWlsKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlMaXN0Tm9kZShsb2NhdGlv
biwgcHJvcGVydHksIHRhaWwpOyB9CiAKICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExp
c3QoaW50IGVsaXNpb25zLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIEVsZW1lbnROb2RlKGVsaXNpb25zLCBleHByKTsgfQogICAgIEVsZW1lbnROb2Rl
KiBjcmVhdGVFbGVtZW50TGlzdChFbGVtZW50Tm9kZSogZWxlbXMsIGludCBlbGlzaW9ucywgRXhw
cmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFbGVtZW50Tm9k
ZShlbGVtcywgZWxpc2lvbnMsIGV4cHIpOyB9CkBAIC0zMDksMTkxICszMDksMTkxIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0VXNlc0FyZ3VtZW50cyhGdW5jdGlvbkJvZHlOb2RlKiBub2RlKSB7
IG5vZGUtPnNldFVzZXNBcmd1bWVudHMoKTsgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRl
RnVuY0RlY2xTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUs
IEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcnMsIGludCBv
cGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJv
ZHlFbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIEZ1
bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcnMsIGludCBvcGVu
QnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlF
bmRMaW5lKQogICAgIHsKLSAgICAgICAgRnVuY0RlY2xOb2RlKiBkZWNsID0gbmV3IChtX2dsb2Jh
bERhdGEpIEZ1bmNEZWNsTm9kZShsaW5lTnVtYmVyLCAqbmFtZSwgYm9keSwgbV9zb3VyY2VDb2Rl
LT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGlu
ZSksIHBhcmFtZXRlcnMpOworICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgRnVuY0RlY2xOb2RlKGxvY2F0aW9uLCAqbmFtZSwgYm9keSwgbV9zb3VyY2VDb2Rl
LT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGlu
ZSksIHBhcmFtZXRlcnMpOwogICAgICAgICBpZiAoKm5hbWUgPT0gbV9nbG9iYWxEYXRhLT5wcm9w
ZXJ0eU5hbWVzLT5hcmd1bWVudHMpCiAgICAgICAgICAgICB1c2VzQXJndW1lbnRzKCk7CiAgICAg
ICAgIG1fc2NvcGUubV9mdW5jRGVjbGFyYXRpb25zLT5kYXRhLmFwcGVuZChkZWNsLT5ib2R5KCkp
OwotICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUpOworICAg
ICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUsIGxvY2F0aW9uLmNv
bHVtbik7CiAgICAgICAgIHJldHVybiBkZWNsOwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZUJsb2NrU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBKU0M6OlNvdXJjZUVsZW1lbnRz
KiBlbGVtZW50cywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlQmxvY2tTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
SlNDOjpTb3VyY2VFbGVtZW50cyogZWxlbWVudHMsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5l
KQogICAgIHsKLSAgICAgICAgQmxvY2tOb2RlKiBibG9jayA9IG5ldyAobV9nbG9iYWxEYXRhKSBC
bG9ja05vZGUobGluZU51bWJlciwgZWxlbWVudHMpOwotICAgICAgICBibG9jay0+c2V0TG9jKHN0
YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIEJsb2NrTm9kZSogYmxvY2sgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgQmxvY2tOb2RlKGxvY2F0aW9uLCBlbGVtZW50cyk7CisgICAgICAgIGJsb2NrLT5z
ZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1
cm4gYmxvY2s7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRXhwclN0YXRlbWVu
dChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVu
ZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVFeHByU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBl
bmQpCiAgICAgewotICAgICAgICBFeHByU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2ds
b2JhbERhdGEpIEV4cHJTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGV4cHIpOwotICAgICAgICBy
ZXN1bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUqIHJl
c3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBFeHByU3RhdGVtZW50Tm9kZShsb2NhdGlvbiwgZXhw
cik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGxvY2F0aW9uLmNvbHVtbik7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3Jl
YXRlSWZTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24s
IFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywg
aW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgSWZOb2RlKiByZXN1bHQgPSBuZXcg
KG1fZ2xvYmFsRGF0YSkgSWZOb2RlKGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrKTsK
LSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCk7CisgICAgICAgIElmTm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIElmTm9kZShsb2NhdGlvbiwgY29uZGl0aW9uLCB0cnVl
QmxvY2spOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBsb2NhdGlvbi5jb2x1
bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZUlmU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0
aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnVlQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZhbHNlQmxvY2ss
IGludCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVJZlN0YXRlbWVu
dChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogY29uZGl0
aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnVlQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZhbHNlQmxvY2ss
IGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIElmTm9kZSogcmVzdWx0ID0gbmV3
IChtX2dsb2JhbERhdGEpIElmRWxzZU5vZGUobGluZU51bWJlciwgY29uZGl0aW9uLCB0cnVlQmxv
Y2ssIGZhbHNlQmxvY2spOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAg
ICAgICAgSWZOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSWZFbHNlTm9kZShsb2Nh
dGlvbiwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIGZhbHNlQmxvY2spOworICAgICAgICByZXN1bHQt
PnNldExvYyhzdGFydCwgZW5kLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckxvb3AoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRp
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGlu
dCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JMb29wKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplciwg
RXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVu
dE5vZGUqIHN0YXRlbWVudHMsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIEZv
ck5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JOb2RlKGxpbmVOdW1iZXIsIGlu
aXRpYWxpemVyLCBjb25kaXRpb24sIGl0ZXIsIHN0YXRlbWVudHMpOworICAgICAgICBGb3JOb2Rl
KiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9yTm9kZShsb2NhdGlvbiwgaW5pdGlhbGl6
ZXIsIGNvbmRpdGlvbiwgaXRlciwgc3RhdGVtZW50cyk7CiAgICAgICAgIHJlc3VsdC0+c2V0TG9j
KHN0YXJ0LCBlbmQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplciwgRXhwcmVzc2lvbk5vZGUqIGl0
ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQg
ZW5kLCBpbnQgaW5pdFN0YXJ0LCBpbnQgaW5pdEVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExp
bmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBFeHByZXNzaW9uTm9kZSog
aW5pdGlhbGl6ZXIsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1l
bnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCwgaW50IGluaXRTdGFydCwgaW50IGlu
aXRFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgRm9ySW5O
b2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9ySW5Ob2RlKG1fZ2xvYmFsRGF0YSwg
bGluZU51bWJlciwgKmlkZW50LCBpbml0aWFsaXplciwgaXRlciwgc3RhdGVtZW50cywgaW5pdFN0
YXJ0LCBpbml0U3RhcnQgLSBzdGFydCwgaW5pdEVuZCAtIGluaXRTdGFydCk7Ci0gICAgICAgIHJl
c3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIEZvckluTm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZvckluTm9kZShtX2dsb2JhbERhdGEsIGxvY2F0aW9u
LCAqaWRlbnQsIGluaXRpYWxpemVyLCBpdGVyLCBzdGF0ZW1lbnRzLCBpbml0U3RhcnQsIGluaXRT
dGFydCAtIHN0YXJ0LCBpbml0RW5kIC0gaW5pdFN0YXJ0KTsKKyAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihyZXN1bHQsIHN0YXJ0LCBkaXZvdCArIDEsIGVuZCk7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29w
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogaXRl
ciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IGVTdGFydCwgaW50IGVEaXZvdCwgaW50
IGVFbmQsIGludCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJ
bkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxo
cywgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGludCBl
U3RhcnQsIGludCBlRGl2b3QsIGludCBlRW5kLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewot
ICAgICAgICBGb3JJbk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JJbk5vZGUo
bGluZU51bWJlciwgbGhzLCBpdGVyLCBzdGF0ZW1lbnRzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnQsIGVuZCk7CisgICAgICAgIEZvckluTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2Jh
bERhdGEpIEZvckluTm9kZShsb2NhdGlvbiwgbGhzLCBpdGVyLCBzdGF0ZW1lbnRzKTsKKyAgICAg
ICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAg
c2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVEaXZvdCwgZUVuZCk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRW1w
dHlTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBF
bXB0eVN0YXRlbWVudE5vZGUobGluZU51bWJlcik7IH0KKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVh
dGVFbXB0eVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKSB7IHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgRW1wdHlTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKTsgfQogCi0g
ICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlVmFyU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZVZhclN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKICAgICAgICAgU3Rh
dGVtZW50Tm9kZSogcmVzdWx0OwogICAgICAgICBpZiAoIWV4cHIpCi0gICAgICAgICAgICByZXN1
bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRW1wdHlTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpOwor
ICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEVtcHR5U3RhdGVtZW50Tm9k
ZShsb2NhdGlvbik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBWYXJTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGV4cHIpOwotICAgICAgICBy
ZXN1bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBWYXJTdGF0ZW1lbnROb2RlKGxvY2F0aW9uLCBleHByKTsKKyAgICAgICAgcmVz
dWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVSZXR1cm5TdGF0ZW1l
bnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uLCBpbnQgZVN0YXJ0
LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlUmV0dXJuU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0
YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBSZXR1cm5Ob2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmV0dXJuTm9kZShsaW5lTnVtYmVyLCBleHByZXNzaW9uKTsK
KyAgICAgICAgUmV0dXJuTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFJldHVybk5v
ZGUobG9jYXRpb24sIGV4cHJlc3Npb24pOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihy
ZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0
TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGlu
ZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAg
ICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50
IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZUJyZWFrU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkK
ICAgICB7Ci0gICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEJy
ZWFrTm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIpOworICAgICAgICBCcmVha05vZGUqIHJl
c3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBCcmVha05vZGUobV9nbG9iYWxEYXRhLCBsb2NhdGlv
bik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBl
RW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAg
ICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0
ZUJyZWFrU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwg
aW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0
YXRlbWVudE5vZGUqIGNyZWF0ZUJyZWFrU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwg
aW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBCcmVha05vZGUqIHJl
c3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBCcmVha05vZGUobGluZU51bWJlciwgKmlkZW50KTsK
KyAgICAgICAgQnJlYWtOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJlYWtOb2Rl
KGxvY2F0aW9uLCAqaWRlbnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQs
IGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwg
ZW5kTGluZSk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9j
YXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVDb250aW51ZVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgaW50IGVT
dGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkK
ICAgICB7Ci0gICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEp
IENvbnRpbnVlTm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIpOworICAgICAgICBDb250aW51
ZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb250aW51ZU5vZGUobV9nbG9iYWxE
YXRhLCBsb2NhdGlvbik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0
YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRM
aW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlv
bi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBl
bmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQg
ZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAg
ICAgICBDb250aW51ZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb250aW51ZU5v
ZGUobGluZU51bWJlciwgKmlkZW50KTsKKyAgICAgICAgQ29udGludWVOb2RlKiByZXN1bHQgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgQ29udGludWVOb2RlKGxvY2F0aW9uLCAqaWRlbnQpOwogICAgICAg
ICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAg
ICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJlc3VsdC0+
c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVUcnlTdGF0ZW1l
bnQoaW50IGxpbmVOdW1iZXIsIFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywgU3RhdGVtZW50Tm9kZSogZmlu
YWxseUJsb2NrLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2Rl
KiBjcmVhdGVUcnlTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgU3Rh
dGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBTdGF0ZW1lbnRO
b2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2ssIGludCBzdGFydExp
bmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgVHJ5Tm9kZSogcmVzdWx0ID0gbmV3ICht
X2dsb2JhbERhdGEpIFRyeU5vZGUobGluZU51bWJlciwgdHJ5QmxvY2ssICppZGVudCwgY2F0Y2hC
bG9jaywgZmluYWxseUJsb2NrKTsKKyAgICAgICAgVHJ5Tm9kZSogcmVzdWx0ID0gbmV3IChtX2ds
b2JhbERhdGEpIFRyeU5vZGUobG9jYXRpb24sIHRyeUJsb2NrLCAqaWRlbnQsIGNhdGNoQmxvY2ss
IGZpbmFsbHlCbG9jayk7CiAgICAgICAgIGlmIChjYXRjaEJsb2NrKQogICAgICAgICAgICAgdXNl
c0NhdGNoKCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7Cisg
ICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY29sdW1u
KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVTd2l0Y2hTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
LCBDbGF1c2VMaXN0Tm9kZSogZmlyc3RDbGF1c2VzLCBDYXNlQ2xhdXNlTm9kZSogZGVmYXVsdENs
YXVzZSwgQ2xhdXNlTGlzdE5vZGUqIHNlY29uZENsYXVzZXMsIGludCBzdGFydExpbmUsIGludCBl
bmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVN3aXRjaFN0YXRlbWVudChjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQ2xhdXNlTGlz
dE5vZGUqIGZpcnN0Q2xhdXNlcywgQ2FzZUNsYXVzZU5vZGUqIGRlZmF1bHRDbGF1c2UsIENsYXVz
ZUxpc3ROb2RlKiBzZWNvbmRDbGF1c2VzLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAg
ICB7CiAgICAgICAgIENhc2VCbG9ja05vZGUqIGNhc2VzID0gbmV3IChtX2dsb2JhbERhdGEpIENh
c2VCbG9ja05vZGUoZmlyc3RDbGF1c2VzLCBkZWZhdWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2VzKTsK
LSAgICAgICAgU3dpdGNoTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFN3aXRjaE5v
ZGUobGluZU51bWJlciwgZXhwciwgY2FzZXMpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFy
dExpbmUsIGVuZExpbmUpOworICAgICAgICBTd2l0Y2hOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgU3dpdGNoTm9kZShsb2NhdGlvbiwgZXhwciwgY2FzZXMpOworICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlV2hpbGVT
dGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnRO
b2RlKiBzdGF0ZW1lbnQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZVdoaWxlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBz
dGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgV2hpbGVOb2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgV2hpbGVOb2RlKGxpbmVOdW1iZXIsIGV4cHIsIHN0YXRlbWVu
dCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAg
IFdoaWxlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFdoaWxlTm9kZShsb2NhdGlv
biwgZXhwciwgc3RhdGVtZW50KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBl
bmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQoaW50IGxpbmVOdW1i
ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBz
dGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZURvV2hpbGVT
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgU3RhdGVtZW50Tm9kZSog
c3RhdGVtZW50LCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExp
bmUpCiAgICAgewotICAgICAgICBEb1doaWxlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERh
dGEpIERvV2hpbGVOb2RlKGxpbmVOdW1iZXIsIHN0YXRlbWVudCwgZXhwcik7Ci0gICAgICAgIHJl
c3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIERvV2hpbGVOb2RlKiBy
ZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRG9XaGlsZU5vZGUobG9jYXRpb24sIHN0YXRlbWVu
dCwgZXhwcik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9j
YXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVMYWJlbFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgY29uc3QgSWRl
bnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0LCBpbnQg
ZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUxhYmVsU3RhdGVtZW50KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBTdGF0ZW1lbnRO
b2RlKiBzdGF0ZW1lbnQsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIExhYmVs
Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIExhYmVsTm9kZShsaW5lTnVtYmVyLCAq
aWRlbnQsIHN0YXRlbWVudCk7CisgICAgICAgIExhYmVsTm9kZSogcmVzdWx0ID0gbmV3IChtX2ds
b2JhbERhdGEpIExhYmVsTm9kZShsb2NhdGlvbiwgKmlkZW50LCBzdGF0ZW1lbnQpOwogICAgICAg
ICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIHN0YXJ0LCBlbmQsIGVuZCk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlV2l0aFN0
YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5v
ZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5k
TGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaXRoU3RhdGVtZW50KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2Rl
KiBzdGF0ZW1lbnQsIGludCBzdGFydCwgaW50IGVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExp
bmUpCiAgICAgewogICAgICAgICB1c2VzV2l0aCgpOwotICAgICAgICBXaXRoTm9kZSogcmVzdWx0
ID0gbmV3IChtX2dsb2JhbERhdGEpIFdpdGhOb2RlKGxpbmVOdW1iZXIsIGV4cHIsIHN0YXRlbWVu
dCwgZW5kLCBlbmQgLSBzdGFydCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwg
ZW5kTGluZSk7CisgICAgICAgIFdpdGhOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
V2l0aE5vZGUobG9jYXRpb24sIGV4cHIsIHN0YXRlbWVudCwgZW5kLCBlbmQgLSBzdGFydCk7Cisg
ICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY29sdW1u
KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9ICAgIAogICAgIAotICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZVRocm93U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkK
KyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVUaHJvd1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5k
LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIFRocm93Tm9kZSog
cmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFRocm93Tm9kZShsaW5lTnVtYmVyLCBleHByKTsK
LSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgVGhy
b3dOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgVGhyb3dOb2RlKGxvY2F0aW9uLCBl
eHByKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlv
bi5jb2x1bW4pOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIHN0YXJ0LCBl
bmQsIGVuZCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZURlYnVnZ2VyKGludCBsaW5lTnVtYmVyLCBpbnQgc3RhcnRMaW5lLCBp
bnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVEZWJ1Z2dlcihjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7
Ci0gICAgICAgIERlYnVnZ2VyU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERh
dGEpIERlYnVnZ2VyU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKTsKLSAgICAgICAgcmVzdWx0LT5z
ZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnROb2Rl
KiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVidWdnZXJTdGF0ZW1lbnROb2RlKGxvY2F0
aW9uKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlv
bi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKLSAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVDb25zdFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgQ29uc3REZWNs
Tm9kZSogZGVjbHMsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5v
ZGUqIGNyZWF0ZUNvbnN0U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IENvbnN0RGVjbE5vZGUqIGRlY2xzLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7
Ci0gICAgICAgIENvbnN0U3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEp
IENvbnN0U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyLCBkZWNscyk7Ci0gICAgICAgIHJlc3VsdC0+
c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIENvbnN0U3RhdGVtZW50Tm9kZSog
cmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnN0U3RhdGVtZW50Tm9kZShsb2NhdGlvbiwg
ZGVjbHMpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0
aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgQ29uc3RE
ZWNsTm9kZSogYXBwZW5kQ29uc3REZWNsKGludCBsaW5lTnVtYmVyLCBDb25zdERlY2xOb2RlKiB0
YWlsLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIp
CisgICAgQ29uc3REZWNsTm9kZSogYXBwZW5kQ29uc3REZWNsKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIENvbnN0RGVjbE5vZGUqIHRhaWwsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUs
IEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikKICAgICB7Ci0gICAgICAgIENvbnN0RGVjbE5v
ZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb25zdERlY2xOb2RlKGxpbmVOdW1iZXIs
ICpuYW1lLCBpbml0aWFsaXplcik7CisgICAgICAgIENvbnN0RGVjbE5vZGUqIHJlc3VsdCA9IG5l
dyAobV9nbG9iYWxEYXRhKSBDb25zdERlY2xOb2RlKGxvY2F0aW9uLCAqbmFtZSwgaW5pdGlhbGl6
ZXIpOwogICAgICAgICBpZiAodGFpbCkKICAgICAgICAgICAgIHRhaWwtPm1fbmV4dCA9IHJlc3Vs
dDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTUxMSw3ICs1MTEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fc2NvcGUubV92YXJEZWNsYXJhdGlvbnMtPmRhdGEuYXBwZW5kKHN0ZDo6bWFrZV9w
YWlyKGlkZW50LCBhdHRycykpOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjb21iaW5l
Q29tbWFOb2RlcyhpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxpc3QsIEV4cHJlc3Np
b25Ob2RlKiBpbml0KQorICAgIEV4cHJlc3Npb25Ob2RlKiBjb21iaW5lQ29tbWFOb2Rlcyhjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogbGlzdCwgRXhwcmVz
c2lvbk5vZGUqIGluaXQpCiAgICAgewogICAgICAgICBpZiAoIWxpc3QpCiAgICAgICAgICAgICBy
ZXR1cm4gaW5pdDsKQEAgLTUxOSw3ICs1MTksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxDb21tYU5vZGUqPihsaXN0KS0+YXBwZW5kKGluaXQpOwogICAgICAgICAgICAgcmV0
dXJuIGxpc3Q7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBD
b21tYU5vZGUobGluZU51bWJlciwgbGlzdCwgaW5pdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgQ29tbWFOb2RlKGxvY2F0aW9uLCBsaXN0LCBpbml0KTsKICAgICB9CiAKICAg
ICBpbnQgZXZhbENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9ldmFsQ291bnQ7IH0KQEAgLTU0Nywx
MCArNTQ3LDEwIEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG9wZXJhbmRTdGFja0RlcHRoID49
IDApOwogICAgICAgICBtX2JpbmFyeU9wZXJhbmRTdGFjay5yZXNpemUobV9iaW5hcnlPcGVyYW5k
U3RhY2suc2l6ZSgpIC0gYW1vdW50KTsKICAgICB9Ci0gICAgdm9pZCBhcHBlbmRCaW5hcnlPcGVy
YXRpb24oaW50IGxpbmVOdW1iZXIsIGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCYsIGNvbnN0
IEJpbmFyeU9wZXJhbmQmIGxocywgY29uc3QgQmluYXJ5T3BlcmFuZCYgcmhzKQorICAgIHZvaWQg
YXBwZW5kQmluYXJ5T3BlcmF0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGlu
dCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCYsIGNvbnN0IEJpbmFyeU9wZXJhbmQmIGxocywgY29u
c3QgQmluYXJ5T3BlcmFuZCYgcmhzKQogICAgIHsKICAgICAgICAgb3BlcmFuZFN0YWNrRGVwdGgr
KzsKLSAgICAgICAgbV9iaW5hcnlPcGVyYW5kU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG1h
a2VCaW5hcnlOb2RlKGxpbmVOdW1iZXIsIG1fYmluYXJ5T3BlcmF0b3JTdGFjay5sYXN0KCkuZmly
c3QsIGxocywgcmhzKSwgQmluYXJ5T3BJbmZvKGxocy5zZWNvbmQsIHJocy5zZWNvbmQpKSk7Cisg
ICAgICAgIG1fYmluYXJ5T3BlcmFuZFN0YWNrLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihtYWtlQmlu
YXJ5Tm9kZShsb2NhdGlvbiwgbV9iaW5hcnlPcGVyYXRvclN0YWNrLmxhc3QoKS5maXJzdCwgbGhz
LCByaHMpLCBCaW5hcnlPcEluZm8obGhzLnNlY29uZCwgcmhzLnNlY29uZCkpKTsKICAgICB9CiAg
ICAgdm9pZCBvcGVyYXRvclN0YWNrQXBwZW5kKGludCYgb3BlcmF0b3JTdGFja0RlcHRoLCBpbnQg
b3AsIGludCBwcmVjZWRlbmNlKQogICAgIHsKQEAgLTU5Miw5ICs1OTIsOSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzaWdubWVudEluZm9TdGFjay5hcHBlbmQoQXNzaWdubWVudEluZm8obm9kZSwg
c3RhcnQsIGRpdm90LCBhc3NpZ25tZW50Q291bnQsIG9wKSk7CiAgICAgfQogCi0gICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZUFzc2lnbm1lbnQoaW50IGxpbmVOdW1iZXIsIGludCYgYXNzaWdubWVu
dFN0YWNrRGVwdGgsIEV4cHJlc3Npb25Ob2RlKiByaHMsIGludCBpbml0aWFsQXNzaWdubWVudENv
dW50LCBpbnQgY3VycmVudEFzc2lnbm1lbnRDb3VudCwgaW50IGxhc3RUb2tlbkVuZCkKKyAgICBF
eHByZXNzaW9uTm9kZSogY3JlYXRlQXNzaWdubWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBpbnQmIGFzc2lnbm1lbnRTdGFja0RlcHRoLCBFeHByZXNzaW9uTm9kZSogcmhzLCBp
bnQgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgaW50IGN1cnJlbnRBc3NpZ25tZW50Q291bnQsIGlu
dCBsYXN0VG9rZW5FbmQpCiAgICAgewotICAgICAgICBFeHByZXNzaW9uTm9kZSogcmVzdWx0ID0g
bWFrZUFzc2lnbk5vZGUobGluZU51bWJlciwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5t
X25vZGUsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9vcCwgcmhzLCBtX2Fzc2lnbm1l
bnRJbmZvU3RhY2subGFzdCgpLm1faW5pdEFzc2lnbm1lbnRzICE9IGluaXRpYWxBc3NpZ25tZW50
Q291bnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9pbml0QXNzaWdubWVudHMgIT0g
Y3VycmVudEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX3N0
YXJ0LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fZGl2b3QgKyAxLCBsYXN0VG9rZW5F
bmQpOworICAgICAgICBFeHByZXNzaW9uTm9kZSogcmVzdWx0ID0gbWFrZUFzc2lnbk5vZGUobG9j
YXRpb24sIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9ub2RlLCBtX2Fzc2lnbm1lbnRJ
bmZvU3RhY2subGFzdCgpLm1fb3AsIHJocywgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5t
X2luaXRBc3NpZ25tZW50cyAhPSBpbml0aWFsQXNzaWdubWVudENvdW50LCBtX2Fzc2lnbm1lbnRJ
bmZvU3RhY2subGFzdCgpLm1faW5pdEFzc2lnbm1lbnRzICE9IGN1cnJlbnRBc3NpZ25tZW50Q291
bnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9zdGFydCwgbV9hc3NpZ25tZW50SW5m
b1N0YWNrLmxhc3QoKS5tX2Rpdm90ICsgMSwgbGFzdFRva2VuRW5kKTsKICAgICAgICAgbV9hc3Np
Z25tZW50SW5mb1N0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgYXNzaWdubWVudFN0YWNrRGVw
dGgtLTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYzNSw5ICs2MzUsOSBAQCBwcml2YXRl
OgogICAgICAgICBtX2V2YWxDb3VudCsrOwogICAgICAgICBtX3Njb3BlLm1fZmVhdHVyZXMgfD0g
RXZhbEZlYXR1cmU7CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdW1iZXIoaW50
IGxpbmVOdW1iZXIsIGRvdWJsZSBkKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdW1iZXIo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgZG91YmxlIGQpCiAgICAgewotICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bWJlck5vZGUobGluZU51bWJlciwgZCk7Cisg
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTnVtYmVyTm9kZShsb2NhdGlvbiwgZCk7
CiAgICAgfQogICAgIAogICAgIEpTR2xvYmFsRGF0YSogbV9nbG9iYWxEYXRhOwpAQCAtNjUwLDMz
ICs2NTAsMzMgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9ldmFsQ291bnQ7CiB9OwogCi1FeHByZXNz
aW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVR5cGVPZk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VUeXBlT2ZO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHBy
KQogewogICAgIGlmIChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5v
ZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHIpOwotICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFR5cGVPZlJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJl
c29sdmUtPmlkZW50aWZpZXIoKSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
VHlwZU9mUmVzb2x2ZU5vZGUobG9jYXRpb24sIHJlc29sdmUtPmlkZW50aWZpZXIoKSk7CiAgICAg
fQotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVHlwZU9mVmFsdWVOb2RlKGxpbmVOdW1i
ZXIsIGV4cHIpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVHlwZU9mVmFsdWVOb2Rl
KGxvY2F0aW9uLCBleHByKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VE
ZWxldGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0
LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZURl
bGV0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlmICghZXhwci0+
aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZVZh
bHVlTm9kZShsaW5lTnVtYmVyLCBleHByKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBEZWxldGVWYWx1ZU5vZGUobG9jYXRpb24sIGV4cHIpOwogICAgIGlmIChleHByLT5pc1Jl
c29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2Fz
dDxSZXNvbHZlTm9kZSo+KGV4cHIpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IERlbGV0ZVJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBEZWxldGVSZXNvbHZlTm9kZShsb2NhdGlvbiwgcmVzb2x2ZS0+aWRlbnRpZmll
cigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBpZiAo
ZXhwci0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29y
Tm9kZSogYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihleHByKTsK
LSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEZWxldGVCcmFja2V0Tm9kZShsaW5l
TnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBkaXZvdCwgZGl2
b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIERlbGV0ZUJyYWNrZXROb2RlKGxvY2F0aW9uLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQt
PnN1YnNjcmlwdCgpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIH0K
ICAgICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JO
b2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZURvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNl
KCksIGRvdC0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3Qp
OworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlRG90Tm9kZShsb2NhdGlvbiwg
ZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5k
IC0gZGl2b3QpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBuKQorRXhwcmVzc2lvbk5vZGUqIEFT
VEJ1aWxkZXI6Om1ha2VOZWdhdGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBuKQogewogICAgIGlmIChuLT5pc051bWJlcigpKSB7CiAgICAgICAg
IE51bWJlck5vZGUqIG51bWJlck5vZGUgPSBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4obik7CkBA
IC02ODQsMTI4ICs2ODQsMTI4IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTmVn
YXRlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIG4pCiAgICAgICAgIHJldHVy
biBudW1iZXJOb2RlOwogICAgIH0KIAotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTmVn
YXRlTm9kZShsaW5lTnVtYmVyLCBuKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE5l
Z2F0ZU5vZGUobG9jYXRpb24sIG4pOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZUJpdHdpc2VOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikK
K0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0d2lzZU5vdE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCiB7CiAgICAgaWYg
KGV4cHItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJl
ciwgfnRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIpLT52YWx1ZSgpKSk7Ci0g
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCaXR3aXNlTm90Tm9kZShsaW5lTnVtYmVyLCBl
eHByKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgfnRvSW50MzIoc3Rh
dGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIpLT52YWx1ZSgpKSk7CisgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBCaXR3aXNlTm90Tm9kZShsb2NhdGlvbiwgZXhwcik7CiB9CiAKLUV4cHJl
c3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTXVsdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU11bHROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgZXhwcjEg
PSBleHByMS0+c3RyaXBVbmFyeVBsdXMoKTsKICAgICBleHByMiA9IGV4cHIyLT5zdHJpcFVuYXJ5
UGx1cygpOwogCiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigp
KQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRpY19jYXN0PE51
bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgKiBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhw
cjIpLT52YWx1ZSgpKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgc3Rh
dGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAqIHN0YXRpY19jYXN0PE51bWJl
ck5vZGUqPihleHByMiktPnZhbHVlKCkpOwogCiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYm
IHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgPT0gMSkKLSAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbmFyeVBsdXNOb2RlKGxpbmVOdW1iZXIsIGV4cHIy
KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbmFyeVBsdXNOb2RlKGxvY2F0
aW9uLCBleHByMik7CiAKICAgICBpZiAoZXhwcjItPmlzTnVtYmVyKCkgJiYgc3RhdGljX2Nhc3Q8
TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSA9PSAxKQotICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobGluZU51bWJlciwgZXhwcjEpOworICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobG9jYXRpb24sIGV4cHIxKTsK
IAotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTXVsdE5vZGUobGluZU51bWJlciwgZXhw
cjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIE11bHROb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZURpdk5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFr
ZURpdk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
IHsKICAgICBleHByMSA9IGV4cHIxLT5zdHJpcFVuYXJ5UGx1cygpOwogICAgIGV4cHIyID0gZXhw
cjItPnN0cmlwVW5hcnlQbHVzKCk7CiAKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhw
cjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwg
c3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAvIHN0YXRpY19jYXN0PE51
bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgRGl2Tm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMp
OworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxOdW1i
ZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpIC8gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIy
KS0+dmFsdWUoKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEaXZOb2RlKGxvY2F0
aW9uLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZU1vZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU1vZE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBleHByMSA9IGV4cHIx
LT5zdHJpcFVuYXJ5UGx1cygpOwogICAgIGV4cHIyID0gZXhwcjItPnN0cmlwVW5hcnlQbHVzKCk7
CiAgICAgCiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQot
ICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIGZtb2Qoc3RhdGljX2Nhc3Q8
TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4
cHIyKS0+dmFsdWUoKSkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTW9kTm9kZShs
aW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBy
ZXR1cm4gY3JlYXRlTnVtYmVyKGxvY2F0aW9uLCBmbW9kKHN0YXRpY19jYXN0PE51bWJlck5vZGUq
PihleHByMSktPnZhbHVlKCksIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVl
KCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE1vZE5vZGUobG9jYXRpb24sIGV4
cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBB
U1RCdWlsZGVyOjptYWtlQWRkTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4
cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQWRkTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1iZXIo
KSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5l
TnVtYmVyLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpICsgc3RhdGlj
X2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBBZGROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobG9jYXRpb24sIHN0YXRpY19j
YXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgKyBzdGF0aWNfY2FzdDxOdW1iZXJOb2Rl
Kj4oZXhwcjIpLT52YWx1ZSgpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFkZE5v
ZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4
cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlU3ViTm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlU3ViTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGV4cHIx
ID0gZXhwcjEtPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAgZXhwcjIgPSBleHByMi0+c3RyaXBVbmFy
eVBsdXMoKTsKIAogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIo
KSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBzdGF0aWNfY2FzdDxO
dW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpIC0gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4
cHIyKS0+dmFsdWUoKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBTdWJOb2RlKGxp
bmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJl
dHVybiBjcmVhdGVOdW1iZXIobG9jYXRpb24sIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHBy
MSktPnZhbHVlKCkgLSBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsK
KyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN1Yk5vZGUobG9jYXRpb24sIGV4cHIxLCBl
eHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWls
ZGVyOjptYWtlTGVmdFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4
cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTGVmdFNoaWZ0Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNO
dW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJl
cihsaW5lTnVtYmVyLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZh
bHVlKCkpIDw8ICh0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1
ZSgpKSAmIDB4MWYpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExlZnRTaGlmdE5v
ZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAg
ICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1i
ZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA8PCAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVy
Tm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBMZWZ0U2hpZnROb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNz
aWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVJpZ2h0U2hp
ZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFT
VEJ1aWxkZXI6Om1ha2VSaWdodFNoaWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHBy
Mi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB0
b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpID4+ICh0b1VJ
bnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSAmIDB4MWYpKTsK
LSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIs
IGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVh
dGVOdW1iZXIobG9jYXRpb24sIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIx
KS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMikt
PnZhbHVlKCkpICYgMHgxZikpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmlnaHRT
aGlmdE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9
CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlVVJpZ2h0U2hpZnROb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VVUmlnaHRTaGlmdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cykKIHsKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVy
KCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgdG9VSW50MzIoc3Rh
dGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOwotICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBl
eHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICByZXR1cm4gY3JlYXRl
TnVtYmVyKGxvY2F0aW9uLCB0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEp
LT52YWx1ZSgpKSA+PiAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+
dmFsdWUoKSkgJiAweDFmKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbnNpZ25l
ZFJpZ2h0U2hpZnROb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdE9yTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlQml0T3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQot
ICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nh
c3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgfCB0b0ludDMyKHN0YXRpY19jYXN0PE51
bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEJpdE9yTm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxvY2F0aW9uLCB0b0ludDMyKHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpIHwgdG9JbnQzMihzdGF0aWNfY2Fz
dDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBCaXRPck5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0QW5kTm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVy
OjptYWtlQml0QW5kTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIo
KSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB0b0ludDMyKHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpICYgdG9JbnQzMihzdGF0aWNfY2Fz
dDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBCaXRBbmROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobG9jYXRpb24sIHRvSW50MzIo
c3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgJiB0b0ludDMyKHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIEJpdEFuZE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0WE9y
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RC
dWlsZGVyOjptYWtlQml0WE9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNO
dW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB0b0ludDMy
KHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpIF4gdG9JbnQzMihzdGF0
aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBCaXRYT3JOb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobG9jYXRpb24sIHRv
SW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgXiB0b0ludDMy
KHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIEJpdFhPck5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmln
aHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtl
RnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGZ1bmMsIEFy
Z3VtZW50c05vZGUqIGFyZ3MsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBh
cmdzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKIHsKICAgICBpZiAoIWZ1bmMtPmlz
TG9jYXRpb24oKSkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNh
bGxWYWx1ZU5vZGUobGluZU51bWJlciwgZnVuYywgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQs
IGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlv
bkNhbGxWYWx1ZU5vZGUobG9jYXRpb24sIGZ1bmMsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0
LCBlbmQgLSBkaXZvdCk7CiAgICAgaWYgKGZ1bmMtPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAg
ICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZnVuYyk7
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIgPSByZXNvbHZlLT5pZGVudGlm
aWVyKCk7CiAgICAgICAgIGlmIChpZGVudGlmaWVyID09IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlO
YW1lcy0+ZXZhbCkgewogICAgICAgICAgICAgdXNlc0V2YWwoKTsKLSAgICAgICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUobGluZU51bWJlciwgYXJn
cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUobG9jYXRpb24sIGFyZ3Ms
IGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShsaW5lTnVt
YmVyLCBpZGVudGlmaWVyLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3Qp
OworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbFJlc29sdmVO
b2RlKGxvY2F0aW9uLCBpZGVudGlmaWVyLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5k
IC0gZGl2b3QpOwogICAgIH0KICAgICBpZiAoZnVuYy0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkp
IHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19jYXN0PEJy
YWNrZXRBY2Nlc3Nvck5vZGUqPihmdW5jKTsKLSAgICAgICAgRnVuY3Rpb25DYWxsQnJhY2tldE5v
ZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUobGlu
ZU51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgYXJncywgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgRnVuY3Rpb25DYWxsQnJh
Y2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsQnJhY2tldE5v
ZGUobG9jYXRpb24sIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGFyZ3Ms
IGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgICAgIG5vZGUtPnNldFN1
YmV4cHJlc3Npb25JbmZvKGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPmVuZE9mZnNldCgpKTsK
ICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQpAQCAtODEzLDExOCArODEzLDExOCBAQCBFeHBy
ZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKgogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nh
c3Q8RG90QWNjZXNzb3JOb2RlKj4oZnVuYyk7CiAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZSogbm9k
ZTsKICAgICBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5h
bWVzLT5jYWxsKQotICAgICAgICBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIENhbGxGdW5jdGlv
bkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwg
YXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgbm9kZSA9
IG5ldyAobV9nbG9iYWxEYXRhKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90
LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOwogICAgIGVsc2UgaWYgKGRvdC0+aWRlbnRpZmllcigpID09IG1fZ2xvYmFs
RGF0YS0+cHJvcGVydHlOYW1lcy0+YXBwbHkpCi0gICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBk
b3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
KTsKKyAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBBcHBseUZ1bmN0aW9uQ2FsbERv
dE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBlbHNlCi0gICAgICAgIG5vZGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVtYmVyLCBkb3Qt
PmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBl
bmQgLSBkaXZvdCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25D
YWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdz
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1YmV4
cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5lbmRPZmZzZXQoKSk7CiAgICAgcmV0dXJu
IG5vZGU7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZShp
bnQgbGluZU51bWJlciwgaW50IHRva2VuLCBwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJ
bmZvPiBsaHMsIHBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+IHJocykKK0V4cHJl
c3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBpbnQgdG9rZW4sIHBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcElu
Zm8+IGxocywgcGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4gcmhzKQogewogICAg
IHN3aXRjaCAodG9rZW4pIHsKICAgICBjYXNlIE9SOgotICAgICAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIExvZ2ljYWxPcE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3Qs
IE9wTG9naWNhbE9yKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMb2dpY2Fs
T3BOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgT3BMb2dpY2FsT3IpOwogCiAg
ICAgY2FzZSBBTkQ6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9naWNhbE9w
Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgT3BMb2dpY2FsQW5kKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMb2dpY2FsT3BOb2RlKGxvY2F0aW9uLCBs
aHMuZmlyc3QsIHJocy5maXJzdCwgT3BMb2dpY2FsQW5kKTsKIAogICAgIGNhc2UgQklUT1I6Ci0g
ICAgICAgIHJldHVybiBtYWtlQml0T3JOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZp
cnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZUJpdE9y
Tm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdu
bWVudCk7CiAKICAgICBjYXNlIEJJVFhPUjoKLSAgICAgICAgcmV0dXJuIG1ha2VCaXRYT3JOb2Rl
KGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1l
bnQpOworICAgICAgICByZXR1cm4gbWFrZUJpdFhPck5vZGUobG9jYXRpb24sIGxocy5maXJzdCwg
cmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBCSVRBTkQ6
Ci0gICAgICAgIHJldHVybiBtYWtlQml0QW5kTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJo
cy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VC
aXRBbmROb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKIAogICAgIGNhc2UgRVFFUToKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBFcXVhbE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5z
ZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
RXF1YWxOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKIAogICAgIGNhc2UgTkU6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgTm90RXF1YWxOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMu
c2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IE5vdEVxdWFsTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQu
aGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIFNUUkVROgotICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIFN0cmljdEVxdWFsTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5m
aXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBTdHJpY3RFcXVhbE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0
LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBTVFJORVE6Ci0gICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTm90U3RyaWN0RXF1YWxOb2RlKGxpbmVOdW1iZXIs
IGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE5vdFN0cmljdEVxdWFsTm9kZShsb2NhdGlvbiwg
bGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBj
YXNlIExUOgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExlc3NOb2RlKGxpbmVO
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExlc3NOb2RlKGxvY2F0aW9uLCBsaHMu
Zmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2Ug
R1Q6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgR3JlYXRlck5vZGUobGluZU51
bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7Cisg
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgR3JlYXRlck5vZGUobG9jYXRpb24sIGxo
cy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2Fz
ZSBMRToKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMZXNzRXFOb2RlKGxpbmVO
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExlc3NFcU5vZGUobG9jYXRpb24sIGxo
cy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2Fz
ZSBHRToKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBHcmVhdGVyRXFOb2RlKGxp
bmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQp
OworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEdyZWF0ZXJFcU5vZGUobG9jYXRp
b24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAg
ICAgY2FzZSBJTlNUQU5DRU9GOiB7Ci0gICAgICAgIEluc3RhbmNlT2ZOb2RlKiBub2RlID0gbmV3
IChtX2dsb2JhbERhdGEpIEluc3RhbmNlT2ZOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhz
LmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICBJbnN0YW5jZU9mTm9k
ZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBJbnN0YW5jZU9mTm9kZShsb2NhdGlvbiwgbGhz
LmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAgICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIGxocy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuc3Rh
cnQsIHJocy5zZWNvbmQuZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCiAgICAg
Y2FzZSBJTlRPS0VOOiB7Ci0gICAgICAgIEluTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRh
KSBJbk5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFz
QXNzaWdubWVudCk7CisgICAgICAgIEluTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBJ
bk5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2ln
bm1lbnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBsaHMuc2Vjb25kLnN0
YXJ0LCByaHMuc2Vjb25kLnN0YXJ0LCByaHMuc2Vjb25kLmVuZCk7CiAgICAgICAgIHJldHVybiBu
b2RlOwogICAgIH0KIAogICAgIGNhc2UgTFNISUZUOgotICAgICAgICByZXR1cm4gbWFrZUxlZnRT
aGlmdE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFz
QXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlTGVmdFNoaWZ0Tm9kZShsb2NhdGlvbiwg
bGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBj
YXNlIFJTSElGVDoKLSAgICAgICAgcmV0dXJuIG1ha2VSaWdodFNoaWZ0Tm9kZShsaW5lTnVtYmVy
LCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VSaWdodFNoaWZ0Tm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmly
c3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIFVSU0hJRlQ6Ci0gICAg
ICAgIHJldHVybiBtYWtlVVJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhz
LmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZVVS
aWdodFNoaWZ0Tm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQu
aGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIFBMVVM6Ci0gICAgICAgIHJldHVybiBtYWtlQWRk
Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3Np
Z25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VBZGROb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3Qs
IHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgTUlOVVM6
Ci0gICAgICAgIHJldHVybiBtYWtlU3ViTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5m
aXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdWJO
b2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25t
ZW50KTsKIAogICAgIGNhc2UgVElNRVM6Ci0gICAgICAgIHJldHVybiBtYWtlTXVsdE5vZGUobGlu
ZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7
CisgICAgICAgIHJldHVybiBtYWtlTXVsdE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZp
cnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBESVZJREU6Ci0gICAg
ICAgIHJldHVybiBtYWtlRGl2Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwg
cmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VEaXZOb2RlKGxv
Y2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsK
IAogICAgIGNhc2UgTU9EOgotICAgICAgICByZXR1cm4gbWFrZU1vZE5vZGUobGluZU51bWJlciwg
bGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAg
IHJldHVybiBtYWtlTW9kTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5z
ZWNvbmQuaGFzQXNzaWdubWVudCk7CiAgICAgfQogICAgIENSQVNIKCk7CiAgICAgcmV0dXJuIDA7
CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxvYywgT3BlcmF0b3Igb3AsIEV4cHJlc3Npb25Ob2Rl
KiBleHByLCBib29sIGxvY0hhc0Fzc2lnbm1lbnRzLCBib29sIGV4cHJIYXNBc3NpZ25tZW50cywg
aW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRl
cjo6bWFrZUFzc2lnbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGxvYywgT3BlcmF0b3Igb3AsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBib29sIGxv
Y0hhc0Fzc2lnbm1lbnRzLCBib29sIGV4cHJIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQg
ZGl2b3QsIGludCBlbmQpCiB7CiAgICAgaWYgKCFsb2MtPmlzTG9jYXRpb24oKSkKLSAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25FcnJvck5vZGUobGluZU51bWJlciwgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBBc3NpZ25FcnJvck5vZGUobG9jYXRpb24sIGRpdm90LCBkaXZvdCAtIHN0YXJ0
LCBlbmQgLSBkaXZvdCk7CiAKICAgICBpZiAobG9jLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAgICAg
ICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGxvYyk7
CiAgICAgICAgIGlmIChvcCA9PSBPcEVxdWFsKSB7CiAgICAgICAgICAgICBpZiAoZXhwci0+aXNG
dW5jRXhwck5vZGUoKSkKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxGdW5jRXhwck5vZGUq
PihleHByKS0+Ym9keSgpLT5zZXRJbmZlcnJlZE5hbWUocmVzb2x2ZS0+aWRlbnRpZmllcigpKTsK
LSAgICAgICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEp
IEFzc2lnblJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgZXhw
cik7CisgICAgICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxE
YXRhKSBBc3NpZ25SZXNvbHZlTm9kZShsb2NhdGlvbiwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBl
eHByKTsKICAgICAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZv
dCwgZW5kKTsKICAgICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGxpbmVOdW1iZXIs
IHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUobG9jYXRpb24sIHJlc29sdmUtPmlkZW50
aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3Rh
cnQsIGVuZCAtIGRpdm90KTsKICAgICB9CiAgICAgaWYgKGxvYy0+aXNCcmFja2V0QWNjZXNzb3JO
b2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19j
YXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihsb2MpOwogICAgICAgICBpZiAob3AgPT0gT3BFcXVh
bCkKLSAgICAgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduQnJhY2tldE5v
ZGUobGluZU51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgZXhw
ciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgYnJhY2tldC0+ZGl2b3Qo
KSwgYnJhY2tldC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBicmFja2V0LT5kaXZvdCgpKTsKLSAg
ICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFJl
YWRNb2RpZnlCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQt
PnN1YnNjcmlwdCgpLCBvcCwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25t
ZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduQnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNr
ZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGV4cHIsIGxvY0hhc0Fzc2lnbm1lbnRz
LCBleHBySGFzQXNzaWdubWVudHMsIGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPmRpdm90KCkg
LSBzdGFydCwgZW5kIC0gYnJhY2tldC0+ZGl2b3QoKSk7CisgICAgICAgIFJlYWRNb2RpZnlCcmFj
a2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5QnJhY2tldE5vZGUo
bG9jYXRpb24sIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBleHBy
LCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBz
dGFydCwgZW5kIC0gZGl2b3QpOwogICAgICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhi
cmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5lbmRPZmZzZXQoKSk7CiAgICAgICAgIHJldHVybiBu
b2RlOwogICAgIH0KQEAgLTkzMyw1NSArOTMzLDU1IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWls
ZGVyOjptYWtlQXNzaWduTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxvYywK
ICAgICBpZiAob3AgPT0gT3BFcXVhbCkgewogICAgICAgICBpZiAoZXhwci0+aXNGdW5jRXhwck5v
ZGUoKSkKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGV4cHIpLT5ib2R5
KCktPnNldEluZmVycmVkTmFtZShkb3QtPmlkZW50aWZpZXIoKSk7Ci0gICAgICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduRG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwg
ZG90LT5pZGVudGlmaWVyKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZG90LT5kaXZvdCgp
LCBkb3QtPmRpdm90KCkgLSBzdGFydCwgZW5kIC0gZG90LT5kaXZvdCgpKTsKKyAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25Eb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2Uo
KSwgZG90LT5pZGVudGlmaWVyKCksIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZG90LT5kaXZv
dCgpLCBkb3QtPmRpdm90KCkgLSBzdGFydCwgZW5kIC0gZG90LT5kaXZvdCgpKTsKICAgICB9CiAK
LSAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9k
aWZ5RG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9w
LCBleHByLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CisgICAgUmVhZE1vZGlmeURvdE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
UmVhZE1vZGlmeURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIo
KSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVu
ZCAtIGRpdm90KTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCks
IGRvdC0+ZW5kT2Zmc2V0KCkpOwogICAgIHJldHVybiBub2RlOwogfQogCi1FeHByZXNzaW9uTm9k
ZSogQVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitF
eHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQg
c3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKIHsKICAgICBpZiAoIWV4cHItPmlzTG9jYXRpb24o
KSkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhFcnJvck5vZGUobGlu
ZU51bWJlciwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4RXJyb3JOb2RlKGxvY2F0aW9uLCBvcCwg
ZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKIAogICAgIGlmIChleHByLT5pc1Jl
c29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2Fz
dDxSZXNvbHZlTm9kZSo+KGV4cHIpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IFByZWZpeFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3As
IGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgUHJlZml4UmVzb2x2ZU5vZGUobG9jYXRpb24sIHJlc29sdmUtPmlkZW50
aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQog
ICAgIGlmIChleHByLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0
QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+
KGV4cHIpOwotICAgICAgICBQcmVmaXhCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxE
YXRhKSBQcmVmaXhCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNr
ZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsK
KyAgICAgICAgUHJlZml4QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJl
Zml4QnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2Ny
aXB0KCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgICAgICBu
b2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5zdGFy
dE9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogICAgIEFTU0VSVChleHBy
LT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRp
Y19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgIFByZWZpeERvdE5vZGUqIG5vZGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4RG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2Uo
KSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOworICAgIFByZWZpeERvdE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4
RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBub2RlLT5zZXRTdWJleHByZXNz
aW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+c3RhcnRPZmZzZXQoKSk7CiAgICAgcmV0dXJuIG5v
ZGU7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUG9zdGZpeE5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0
LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVBv
c3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiB7CiAg
ICAgaWYgKCFleHByLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgUG9zdGZpeEVycm9yTm9kZShsaW5lTnVtYmVyLCBvcCwgZGl2b3QsIGRpdm90IC0gc3Rh
cnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0
Zml4RXJyb3JOb2RlKGxvY2F0aW9uLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90KTsKIAogICAgIGlmIChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2
ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHIpOwotICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhSZXNvbHZlTm9kZShsaW5lTnVtYmVy
LCByZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0g
ZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhSZXNvbHZl
Tm9kZShsb2NhdGlvbiwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0g
c3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICB9CiAgICAgaWYgKGV4cHItPmlzQnJhY2tldEFjY2Vz
c29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBzdGF0
aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4oZXhwcik7Ci0gICAgICAgIFBvc3RmaXhCcmFj
a2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4QnJhY2tldE5vZGUobGlu
ZU51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgb3AsIGRpdm90
LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIFBvc3RmaXhCcmFja2V0Tm9k
ZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4QnJhY2tldE5vZGUobG9jYXRpb24s
IGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBkaXZvdCwgZGl2b3Qg
LSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5m
byhicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5lbmRPZmZzZXQoKSk7CiAgICAgICAgIHJldHVy
biBub2RlOwogCiAgICAgfQogICAgIEFTU0VSVChleHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsK
ICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+
KGV4cHIpOwotICAgIFBvc3RmaXhEb3ROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFBv
c3RmaXhEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwg
b3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgUG9zdGZpeERvdE5v
ZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeERvdE5vZGUobG9jYXRpb24sIGRv
dC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBl
bmQgLSBkaXZvdCk7CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgp
LCBkb3QtPmVuZE9mZnNldCgpKTsKICAgICByZXR1cm4gbm9kZTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggM2IwMjBmNGYyYjFiMDk2YTcwYTk1YTliNTg4ODI3
YmQ5MGI5ODU5Yy4uMmE4YThkYzllMzYzYWQzYTIyNzE1OTZlNzVlMTlmNWRjYzJiMzEzMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTQxNyw2ICs0MTcsNyBAQCB2
b2lkIExleGVyPFQ+OjpzZXRDb2RlKGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyQXJl
bmEqIGFyZW5hKQogICAgIG1fY29kZUVuZCA9IG1fY29kZVN0YXJ0ICsgc291cmNlLmVuZE9mZnNl
dCgpOwogICAgIG1fZXJyb3IgPSBmYWxzZTsKICAgICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsKKyAg
ICBtX2NvbHVtbk51bWJlciA9IDA7CiAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSBVU3RyaW5nKCk7
CiAgICAgCiAgICAgbV9idWZmZXI4LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5pdGlhbFJlYWRC
dWZmZXJDYXBhY2l0eSk7CkBAIC00MzMsNiArNDM0LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CiB0ZW1wbGF0ZSA8aW50IHNoaWZ0QW1vdW50PiBBTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VD46
OmludGVybmFsU2hpZnQoKQogewogICAgIG1fY29kZSArPSBzaGlmdEFtb3VudDsKKyAgICBtX2Nv
bHVtbk51bWJlciArPSBzaGlmdEFtb3VudDsKICAgICBtX2N1cnJlbnQgPSAqbV9jb2RlOwogfQog
CkBAIC00NDQsNiArNDQ2LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjpzaGlmdCgp
CiAgICAgKyttX2NvZGU7CiAgICAgaWYgKExJS0VMWShtX2NvZGUgPCBtX2NvZGVFbmQpKQogICAg
ICAgICBtX2N1cnJlbnQgPSAqbV9jb2RlOworICAgICsrbV9jb2x1bW5OdW1iZXI7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPgpAQCAtMTE4Myw3ICsxMTg2LDcgQEAgYm9vbCBMZXhlcjxUPjo6
bmV4dFRva2VuSXNDb2xvbigpCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotSlNUb2tlblR5
cGUgTGV4ZXI8VD46OmxleChKU1Rva2VuRGF0YSogdG9rZW5EYXRhLCBKU1Rva2VuSW5mbyogdG9r
ZW5JbmZvLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCitKU1Rva2VuVHlw
ZSBMZXhlcjxUPjo6bGV4KEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIEpTVG9rZW5Mb2NhdGlvbiog
dG9rZW5Mb2NhdGlvbiwgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQogewog
ICAgIEFTU0VSVCghbV9lcnJvcik7CiAgICAgQVNTRVJUKG1fYnVmZmVyOC5pc0VtcHR5KCkpOwpA
QCAtMTE5OSw3ICsxMjAyLDggQEAgc3RhcnQ6CiAgICAgaWYgKGF0RW5kKCkpCiAgICAgICAgIHJl
dHVybiBFT0ZUT0s7CiAgICAgCi0gICAgdG9rZW5JbmZvLT5zdGFydE9mZnNldCA9IGN1cnJlbnRP
ZmZzZXQoKTsKKyAgICB0b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNldCA9IGN1cnJlbnRPZmZzZXQo
KTsKKyAgICB0b2tlbkxvY2F0aW9uLT5jb2x1bW4gPSBtX2NvbHVtbk51bWJlcjsKIAogICAgIENo
YXJhY3RlclR5cGUgdHlwZTsKICAgICBpZiAoTElLRUxZKGlzTGF0aW4xKG1fY3VycmVudCkpKQpA
QCAtMTUyMiw2ICsxNTI2LDcgQEAgaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDoKICAgICAgICAg
c2hpZnRMaW5lVGVybWluYXRvcigpOwogICAgICAgICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsKICAg
ICAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsKKyAgICAgICAgbV9jb2x1bW5OdW1iZXIgPSAwOwog
ICAgICAgICBnb3RvIHN0YXJ0OwogICAgIGNhc2UgQ2hhcmFjdGVySW52YWxpZDoKICAgICAgICAg
bV9sZXhFcnJvck1lc3NhZ2UgPSBpbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgpOwpAQCAtMTU0NCw2
ICsxNTQ5LDcgQEAgaW5TaW5nbGVMaW5lQ29tbWVudDoKICAgICBzaGlmdExpbmVUZXJtaW5hdG9y
KCk7CiAgICAgbV9hdExpbmVTdGFydCA9IHRydWU7CiAgICAgbV90ZXJtaW5hdG9yID0gdHJ1ZTsK
KyAgICBtX2NvbHVtbk51bWJlciA9IDA7CiAgICAgaWYgKCFsYXN0VG9rZW5XYXNSZXN0cktleXdv
cmQoKSkKICAgICAgICAgZ290byBzdGFydDsKIApAQCAtMTU1MSwxNSArMTU1NywxNSBAQCBpblNp
bmdsZUxpbmVDb21tZW50OgogICAgIC8vIEZhbGwgdGhyb3VnaCBpbnRvIHJldHVyblRva2VuLgog
CiByZXR1cm5Ub2tlbjoKLSAgICB0b2tlbkluZm8tPmxpbmUgPSBtX2xpbmVOdW1iZXI7Ci0gICAg
dG9rZW5JbmZvLT5lbmRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7CisgICAgdG9rZW5Mb2NhdGlv
bi0+bGluZSA9IG1fbGluZU51bWJlcjsKKyAgICB0b2tlbkxvY2F0aW9uLT5lbmRPZmZzZXQgPSBj
dXJyZW50T2Zmc2V0KCk7CiAgICAgbV9sYXN0VG9rZW4gPSB0b2tlbjsKICAgICByZXR1cm4gdG9r
ZW47CiAKIHJldHVybkVycm9yOgogICAgIG1fZXJyb3IgPSB0cnVlOwotICAgIHRva2VuSW5mby0+
bGluZSA9IG1fbGluZU51bWJlcjsKLSAgICB0b2tlbkluZm8tPmVuZE9mZnNldCA9IGN1cnJlbnRP
ZmZzZXQoKTsKKyAgICB0b2tlbkxvY2F0aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOworICAgIHRv
a2VuTG9jYXRpb24tPmVuZE9mZnNldCA9IGN1cnJlbnRPZmZzZXQoKTsKICAgICByZXR1cm4gRVJS
T1JUT0s7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCA0MWYxZjg1
NTNlMWViMjVmNTQ0YmVlMTkzNWEyYWY0YmJkMDY5ZTY0Li4xYWM4MzJhMmM3YjVmMzgyYjMzYjc4
YTVjODMwNGIxNzU1NDBmNDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBA
IC04Nyw5ICs4NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc1JlcGFyc2luZygpIHsgbV9p
c1JlcGFyc2luZyA9IHRydWU7IH0KICAgICBib29sIGlzUmVwYXJzaW5nKCkgY29uc3QgeyByZXR1
cm4gbV9pc1JlcGFyc2luZzsgfQogCi0gICAgSlNUb2tlblR5cGUgbGV4KEpTVG9rZW5EYXRhKiwg
SlNUb2tlbkluZm8qLCB1bnNpZ25lZCwgYm9vbCBzdHJpY3RNb2RlKTsKKyAgICBKU1Rva2VuVHlw
ZSBsZXgoSlNUb2tlbkRhdGEqLCBKU1Rva2VuTG9jYXRpb24qLCB1bnNpZ25lZCwgYm9vbCBzdHJp
Y3RNb2RlKTsKICAgICBib29sIG5leHRUb2tlbklzQ29sb24oKTsKICAgICBpbnQgbGluZU51bWJl
cigpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51bWJlcjsgfQorICAgIGludCBjdXJyZW50Q29sdW1u
TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2x1bW5OdW1iZXI7IH0KICAgICB2b2lkIHNldExh
c3RMaW5lTnVtYmVyKGludCBsYXN0TGluZU51bWJlcikgeyBtX2xhc3RMaW5lTnVtYmVyID0gbGFz
dExpbmVOdW1iZXI7IH0KICAgICBpbnQgbGFzdExpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBt
X2xhc3RMaW5lTnVtYmVyOyB9CiAgICAgYm9vbCBwcmV2VGVybWluYXRvcigpIGNvbnN0IHsgcmV0
dXJuIG1fdGVybWluYXRvcjsgfQpAQCAtMTIwLDcgKzEyMSw3IEBAIHB1YmxpYzoKIAogICAgIFNv
dXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlLT5w
cm92aWRlcigpOyB9CiAKLSAgICBKU1Rva2VuVHlwZSBsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9r
ZW5EYXRhKiwgSlNUb2tlbkluZm8qLCB1bnNpZ25lZCwgYm9vbCBzdHJpY3RNb2RlKTsKKyAgICBK
U1Rva2VuVHlwZSBsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiwgSlNUb2tlbkxvY2F0
aW9uKiwgdW5zaWduZWQsIGJvb2wgc3RyaWN0TW9kZSk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBy
ZWNvcmQ4KGludCk7CkBAIC0xNjYsNiArMTY3LDcgQEAgcHJpdmF0ZToKIAogICAgIGludCBtX2xp
bmVOdW1iZXI7CiAgICAgaW50IG1fbGFzdExpbmVOdW1iZXI7CisgICAgaW50IG1fY29sdW1uTnVt
YmVyOwogCiAgICAgVmVjdG9yPExDaGFyPiBtX2J1ZmZlcjg7CiAgICAgVmVjdG9yPFVDaGFyPiBt
X2J1ZmZlcjE2OwpAQCAtMjU3LDcgKzI1OSw3IEBAIEFMV0FZU19JTkxJTkUgY29uc3QgSWRlbnRp
ZmllciogTGV4ZXI8VD46Om1ha2VJZGVudGlmaWVyTENoYXJGcm9tVUNoYXIoY29uc3QgVUNoCiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhl
cjxUPjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLCBKU1Rva2Vu
SW5mbyogdG9rZW5JbmZvLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCitB
TFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpT
VG9rZW5EYXRhKiB0b2tlbkRhdGEsIEpTVG9rZW5Mb2NhdGlvbiogdG9rZW5Mb2NhdGlvbiwgdW5z
aWduZWQgbGV4ZXJGbGFncywgYm9vbCBzdHJpY3RNb2RlKQogewogICAgIEFTU0VSVCgobGV4ZXJG
bGFncyAmIExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdvcmRzKSk7CiAgICAgY29uc3QgVCogc3Rh
cnQgPSBtX2NvZGU7CkBAIC0yODUsMjAgKzI4NywyMiBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5U
eXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEs
CiAgICAgICAgIG1fY3VycmVudCA9IDA7CiAKICAgICBtX2NvZGUgPSBwdHI7CisgICAgbV9jb2x1
bW5OdW1iZXIgPSBtX2NvbHVtbk51bWJlciArIChtX2NvZGUgLSBzdGFydCk7CiAKICAgICAvLyBD
cmVhdGUgdGhlIGlkZW50aWZpZXIgaWYgbmVlZGVkCiAgICAgaWYgKGxleGVyRmxhZ3MgJiBMZXhl
eEZsYWdzRG9udEJ1aWxkS2V5d29yZHMpCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSAwOwog
ICAgIGVsc2UKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVudGlmaWVyKHN0YXJ0
LCBwdHIgLSBzdGFydCk7Ci0gICAgdG9rZW5JbmZvLT5saW5lID0gbV9saW5lTnVtYmVyOwotICAg
IHRva2VuSW5mby0+c3RhcnRPZmZzZXQgPSBzdGFydCAtIG1fY29kZVN0YXJ0OwotICAgIHRva2Vu
SW5mby0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRva2VuTG9jYXRpb24tPmxp
bmUgPSBtX2xpbmVOdW1iZXI7CisgICAgdG9rZW5Mb2NhdGlvbi0+c3RhcnRPZmZzZXQgPSBzdGFy
dCAtIG1fY29kZVN0YXJ0OworICAgIHRva2VuTG9jYXRpb24tPmVuZE9mZnNldCA9IGN1cnJlbnRP
ZmZzZXQoKTsKKyAgICB0b2tlbkxvY2F0aW9uLT5jb2x1bW4gPSBtX2NvbHVtbk51bWJlcjsKICAg
ICBtX2xhc3RUb2tlbiA9IElERU5UOwogICAgIHJldHVybiBJREVOVDsKICAgICAKIHNsb3dDYXNl
OgotICAgIHJldHVybiBsZXgodG9rZW5EYXRhLCB0b2tlbkluZm8sIGxleGVyRmxhZ3MsIHN0cmlj
dE1vZGUpOworICAgIHJldHVybiBsZXgodG9rZW5EYXRhLCB0b2tlbkxvY2F0aW9uLCBsZXhlckZs
YWdzLCBzdHJpY3RNb2RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGJlNTBlZWFmZTNl
NDBlYWMxZDk3YjdkNGQwMmI1YTRjNjk4Mjk2ODYuLjQzZDFlMTdjNmE0Y2MwNzVjNjY0ZTYzZWQ5
NGJmMWQwZTZmMWYyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9k
ZUNvbnN0cnVjdG9ycy5oCkBAIC00Miw2MCArNDIsNjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGdsb2JhbERhdGEtPnBhcnNlckFyZW5hLT5kZXJlZldpdGhBcmVuYShhZG9wdFJlZih0aGlz
KSk7CiAgICAgfQogCi0gICAgaW5saW5lIE5vZGU6Ok5vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAg
ICAgIDogbV9saW5lTnVtYmVyKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIE5vZGU6Ok5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKKyAgICAgICAgOiBtX2xpbmVOdW1iZXIobG9j
YXRpb24ubGluZSkKKyAgICAgICAgLCBtX2NvbHVtbk51bWJlcihsb2NhdGlvbi5jb2x1bW4pCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBFeHByZXNzaW9uTm9kZTo6RXhwcmVzc2lvbk5vZGUo
aW50IGxpbmVOdW1iZXIsIFJlc3VsdFR5cGUgcmVzdWx0VHlwZSkKLSAgICAgICAgOiBOb2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIEV4cHJlc3Npb25Ob2RlOjpFeHByZXNzaW9uTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBSZXN1bHRUeXBlIHJlc3VsdFR5cGUpCisgICAg
ICAgIDogTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX3Jlc3VsdFR5cGUocmVzdWx0VHlwZSkK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFN0YXRlbWVudE5vZGU6OlN0YXRlbWVudE5vZGUo
aW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBT
dGF0ZW1lbnROb2RlOjpTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24pCisgICAgICAgIDogTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2xhc3RMaW5lKC0xKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTnVsbE5vZGU6Ok51bGxOb2RlKGludCBsaW5lTnVt
YmVyKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51
bGxUeXBlKCkpCisgICAgaW5saW5lIE51bGxOb2RlOjpOdWxsTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uLCBSZXN1
bHRUeXBlOjpudWxsVHlwZSgpKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQm9vbGVhbk5v
ZGU6OkJvb2xlYW5Ob2RlKGludCBsaW5lTnVtYmVyLCBib29sIHZhbHVlKQotICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCkpCisgICAg
aW5saW5lIEJvb2xlYW5Ob2RlOjpCb29sZWFuTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBib29sIHZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uLCBS
ZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpKQogICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBOdW1iZXJOb2RlOjpOdW1iZXJOb2RlKGludCBsaW5lTnVt
YmVyLCBkb3VibGUgdmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwg
UmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpKQorICAgIGlubGluZSBOdW1iZXJOb2RlOjpOdW1iZXJO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGRvdWJsZSB2YWx1ZSkKKyAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpKQog
ICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBTdHJp
bmdOb2RlOjpTdHJpbmdOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiB2YWx1
ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpzdHJp
bmdUeXBlKCkpCisgICAgaW5saW5lIFN0cmluZ05vZGU6OlN0cmluZ05vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgdmFsdWUpCisgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OnN0cmluZ1R5cGUoKSkKICAgICAg
ICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVnRXhwTm9k
ZTo6UmVnRXhwTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwg
Y29uc3QgSWRlbnRpZmllciYgZmxhZ3MpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51
bWJlcikKKyAgICBpbmxpbmUgUmVnRXhwTm9kZTo6UmVnRXhwTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlm
aWVyJiBmbGFncykKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAg
LCBtX3BhdHRlcm4ocGF0dGVybikKICAgICAgICAgLCBtX2ZsYWdzKGZsYWdzKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgVGhpc05vZGU6OlRoaXNOb2RlKGludCBsaW5lTnVtYmVyKQotICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFRoaXNOb2RlOjpU
aGlzTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxvY2F0aW9uKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVzb2x2ZU5v
ZGU6OlJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
aW50IHN0YXJ0T2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisg
ICAgaW5saW5lIFJlc29sdmVOb2RlOjpSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgaW50IHN0YXJ0T2Zmc2V0KQorICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQp
CiAgICAgICAgICwgbV9zdGFydE9mZnNldChzdGFydE9mZnNldCkKICAgICB7CkBAIC0xMTYsMjQg
KzExNywyNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbC0+bV9uZXh0ID0gdGhpczsKICAg
ICB9CiAKLSAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5vZGUoaW50IGxpbmVOdW1iZXIsIGlu
dCBlbGlzaW9uKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5s
aW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGludCBlbGlzaW9uKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAg
ICAsIG1fZWxlbWVudCgwKQogICAgICAgICAsIG1fZWxpc2lvbihlbGlzaW9uKQogICAgICAgICAs
IG1fb3B0aW9uYWwodHJ1ZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFycmF5Tm9kZTo6
QXJyYXlOb2RlKGludCBsaW5lTnVtYmVyLCBFbGVtZW50Tm9kZSogZWxlbWVudCkKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBBcnJheU5vZGU6OkFycmF5
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFbGVtZW50Tm9kZSogZWxlbWVu
dCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2VsZW1l
bnQoZWxlbWVudCkKICAgICAgICAgLCBtX2VsaXNpb24oMCkKICAgICAgICAgLCBtX29wdGlvbmFs
KGZhbHNlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5vZGUo
aW50IGxpbmVOdW1iZXIsIGludCBlbGlzaW9uLCBFbGVtZW50Tm9kZSogZWxlbWVudCkKLSAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBBcnJheU5vZGU6OkFy
cmF5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBpbnQgZWxpc2lvbiwgRWxl
bWVudE5vZGUqIGVsZW1lbnQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgICAgICwgbV9lbGlzaW9uKGVsaXNpb24p
CiAgICAgICAgICwgbV9vcHRpb25hbCh0cnVlKQpAQCAtMTU0LDU3ICsxNTUsNTcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcm9wZXJ0eUxpc3ROb2RlOjpQ
cm9wZXJ0eUxpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGUqIG5vZGUpCi0gICAg
ICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcm9wZXJ0eUxpc3ROb2RlOjpQcm9w
ZXJ0eUxpc3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9k
ZSogbm9kZSkKKyAgICAgICAgOiBOb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbm9kZShub2Rl
KQogICAgICAgICAsIG1fbmV4dCgwKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJvcGVy
dHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZShpbnQgbGluZU51bWJlciwgUHJvcGVydHlOb2Rl
KiBub2RlLCBQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0KQotICAgICAgICA6IE5vZGUobGluZU51bWJl
cikKKyAgICBpbmxpbmUgUHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIG5vZGUsIFByb3BlcnR5TGlz
dE5vZGUqIGxpc3QpCisgICAgICAgIDogTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX25vZGUo
bm9kZSkKICAgICAgICAgLCBtX25leHQoMCkKICAgICB7CiAgICAgICAgIGxpc3QtPm1fbmV4dCA9
IHRoaXM7CiAgICAgfQogCi0gICAgaW5saW5lIE9iamVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRl
cmFsTm9kZShpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBPYmplY3RMaXRlcmFsTm9kZTo6T2JqZWN0TGl0ZXJhbE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
b2NhdGlvbikKICAgICAgICAgLCBtX2xpc3QoMCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IE9iamVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZShpbnQgbGluZU51bWJlciwgUHJv
cGVydHlMaXN0Tm9kZSogbGlzdCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBPYmplY3RMaXRlcmFsTm9kZTo6T2JqZWN0TGl0ZXJhbE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkKKyAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2xpc3QobGlzdCkKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJyYWNrZXRBY2Nlc3Nvck5vZGU6OkJyYWNrZXRBY2Nl
c3Nvck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9u
Tm9kZSogc3Vic2NyaXB0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEJyYWNrZXRBY2Nlc3Nvck5v
ZGU6OkJyYWNrZXRBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vi
c2NyaXB0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
CiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0
KQogICAgICAgICAsIG1fc3Vic2NyaXB0SGFzQXNzaWdubWVudHMoc3Vic2NyaXB0SGFzQXNzaWdu
bWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBEb3RBY2Nlc3Nvck5vZGU6OkRvdEFj
Y2Vzc29yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisg
ICAgaW5saW5lIERvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBt
X2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgQXJndW1lbnRMaXN0Tm9kZTo6QXJndW1lbnRMaXN0Tm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAg
IGlubGluZSBBcmd1bWVudExpc3ROb2RlOjpBcmd1bWVudExpc3ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IE5vZGUo
bG9jYXRpb24pCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBBcmd1bWVudExpc3ROb2RlOjpBcmd1bWVudExpc3RO
b2RlKGludCBsaW5lTnVtYmVyLCBBcmd1bWVudExpc3ROb2RlKiBsaXN0Tm9kZSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIpCi0gICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBBcmd1
bWVudExpc3ROb2RlOjpBcmd1bWVudExpc3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEFyZ3VtZW50TGlzdE5vZGUqIGxpc3ROb2RlLCBFeHByZXNzaW9uTm9kZSogZXhwcikK
KyAgICAgICAgOiBOb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbmV4dCgwKQogICAgICAgICAs
IG1fZXhwcihleHByKQogICAgIHsKQEAgLTIyMSw0NSArMjIyLDQ1IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTmV3RXhwck5vZGU6Ok5ld0V4cHJOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBOZXdFeHByTm9kZTo6TmV3RXhwck5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAg
ICAgICAgICwgbV9hcmdzKDApCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBOZXdFeHByTm9k
ZTo6TmV3RXhwck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1
bWVudHNOb2RlKiBhcmdzKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisg
ICAgaW5saW5lIE5ld0V4cHJOb2RlOjpOZXdFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQXJndW1lbnRzTm9kZSogYXJncykKKyAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhwcikK
ICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEV2YWxG
dW5jdGlvbkNhbGxOb2RlOjpFdmFsRnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51bWJlciwgQXJn
dW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgRXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OkV2YWxGdW5jdGlvbkNhbGxOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYXJn
cyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsVmFsdWVOb2Rl
OjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OkZ1bmN0aW9uQ2FsbFZh
bHVlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9j
YXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9hcmdz
KGFyZ3MpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5jdGlvbkNhbGxSZXNvbHZlTm9k
ZTo6RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6RnVuY3Rp
b25DYWxsUmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRp
dm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAg
ICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5jdGlv
bkNhbGxCcmFja2V0Tm9kZTo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVu
dHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAg
IGlubGluZSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4
cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Np
b25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShi
YXNlKQogICAgICAgICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKQEAgLTI2Nyw4ICsyNjgsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmN0aW9uQ2Fs
bERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
Ci0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRnVuY3Rp
b25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9u
KQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRlbnQo
aWRlbnQpCkBAIC0yNzYsMzEgKzI3NywzMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxs
RG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBGdW5jdGlvbkNh
bGxEb3ROb2RlKGxpbmVOdW1iZXIsIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSog
YXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpCisgICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRl
bnQsIGFyZ3MsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERv
dE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRnVuY3Rpb25DYWxs
RG90Tm9kZShsaW5lTnVtYmVyLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQpCisgICAgaW5saW5lIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBwbHlG
dW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSog
YXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpCisgICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgYmFzZSwgaWRl
bnQsIGFyZ3MsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgUHJlUG9zdFJlc29sdmVOb2RlOjpQcmVQb3N0UmVzb2x2ZU5vZGUoaW50IGxp
bmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCkpIC8vIGNvdWxkIGJlIHJl
dXNhYmxlIGZvciBwcmU/CisgICAgaW5saW5lIFByZVBvc3RSZXNvbHZlTm9kZTo6UHJlUG9zdFJl
c29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlw
ZTo6bnVtYmVyVHlwZSgpKSAvLyBjb3VsZCBiZSByZXVzYWJsZSBmb3IgcHJlPwogICAgICAgICAs
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQog
ICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQb3N0
Zml4UmVzb2x2ZU5vZGU6OlBvc3RmaXhSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IFByZVBvc3RSZXNv
bHZlTm9kZShsaW5lTnVtYmVyLCBpZGVudCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQp
CisgICAgaW5saW5lIFBvc3RmaXhSZXNvbHZlTm9kZTo6UG9zdGZpeFJlc29sdmVOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVy
YXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCkKKyAgICAgICAgOiBQcmVQb3N0UmVzb2x2ZU5vZGUobG9jYXRpb24sIGlkZW50
LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9w
ZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQb3N0Zml4QnJhY2tldE5vZGU6OlBvc3Rm
aXhCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJl
c3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFBvc3RmaXhCcmFja2V0Tm9kZTo6UG9zdGZp
eEJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVTdWJF
eHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBt
X2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCkBAIC0zMDgsOCAr
MzA5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQb3N0
Zml4RG90Tm9kZTo6UG9zdGZpeERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUG9zdGZpeERvdE5vZGU6
OlBvc3RmaXhEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisg
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlU3Vi
RXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwg
bV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKQEAgLTMxNyw2OCArMzE4LDY4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUG9zdGZpeEVy
cm9yTm9kZTo6UG9zdGZpeEVycm9yTm9kZShpbnQgbGluZU51bWJlciwgT3BlcmF0b3Igb3Blciwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
Ci0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUG9zdGZp
eEVycm9yTm9kZTo6UG9zdGZpeEVycm9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikK
ICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBEZWxldGVSZXNvbHZlTm9kZTo6RGVsZXRlUmVzb2x2ZU5vZGUoaW50IGxpbmVO
dW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBEZWxldGVSZXNvbHZlTm9kZTo6RGVsZXRlUmVzb2x2
ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAg
ICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBEZWxldGVC
cmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBEZWxldGVCcmFja2V0Tm9kZTo6RGVsZXRl
QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAg
ICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERl
bGV0ZURvdE5vZGU6OkRlbGV0ZURvdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRGVsZXRlRG90Tm9kZTo6RGVsZXRlRG90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9u
KQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRlbnQoaWRl
bnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBEZWxldGVWYWx1ZU5vZGU6OkRlbGV0ZVZh
bHVlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRGVsZXRlVmFsdWVOb2RlOjpE
ZWxldGVWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAg
ICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBWb2lkTm9kZTo6Vm9p
ZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFZvaWROb2RlOjpWb2lkTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhwcikK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFR5cGVPZlJlc29sdmVOb2RlOjpUeXBlT2ZSZXNv
bHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCi0gICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQor
ICAgIGlubGluZSBUeXBlT2ZSZXNvbHZlTm9kZTo6VHlwZU9mUmVzb2x2ZU5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OnN0cmluZ1R5cGUoKSkKICAg
ICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVHlwZU9m
VmFsdWVOb2RlOjpUeXBlT2ZWYWx1ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6
OnN0cmluZ1R5cGUoKSkKKyAgICBpbmxpbmUgVHlwZU9mVmFsdWVOb2RlOjpUeXBlT2ZWYWx1ZU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIp
CisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OnN0cmluZ1R5
cGUoKSkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IFByZWZpeFJlc29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IFByZVBvc3RS
ZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBpZGVudCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQpCisgICAgaW5saW5lIFByZWZpeFJlc29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3Bl
cmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpCisgICAgICAgIDogUHJlUG9zdFJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVu
dCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9vcGVyYXRvcihv
cGVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJlZml4QnJhY2tldE5vZGU6OlByZWZp
eEJyYWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVz
c2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUHJlZml4QnJhY2tldE5vZGU6OlByZWZpeEJy
YWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVQcmVmaXhl
ZFN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAg
ICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKQEAgLTM4
Niw4ICszODcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IFByZWZpeERvdE5vZGU6OlByZWZpeERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUHJlZml4RG90Tm9k
ZTo6UHJlZml4RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQor
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZVBy
ZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAg
ICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKQEAgLTM5NSw0
MyArMzk2LDQzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
UHJlZml4RXJyb3JOb2RlOjpQcmVmaXhFcnJvck5vZGUoaW50IGxpbmVOdW1iZXIsIE9wZXJhdG9y
IG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IFByZWZpeEVycm9yTm9kZTo6UHJlZml4RXJyb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0
aW9uKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIFVuYXJ5T3BOb2RlOjpVbmFyeU9wTm9kZShpbnQgbGluZU51bWJlciwgUmVz
dWx0VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3Bjb2RlSUQgb3Bjb2RlSUQpCi0g
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgdHlwZSkKKyAgICBpbmxpbmUgVW5h
cnlPcE5vZGU6OlVuYXJ5T3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFJl
c3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wY29kZUlEIG9wY29kZUlEKQor
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uLCB0eXBlKQogICAgICAgICAsIG1fZXhw
cihleHByKQogICAgICAgICAsIG1fb3Bjb2RlSUQob3Bjb2RlSUQpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBVbmFyeVBsdXNOb2RlOjpVbmFyeVBsdXNOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBS
ZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIsIG9wX3RvX2pzbnVtYmVyKQorICAgIGlubGlu
ZSBVbmFyeVBsdXNOb2RlOjpVbmFyeVBsdXNOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IFVuYXJ5T3BOb2RlKGxvY2F0
aW9uLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIsIG9wX3RvX2pzbnVtYmVyKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgTmVnYXRlTm9kZTo6TmVnYXRlTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogVW5hcnlPcE5vZGUobGluZU51
bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByLCBvcF9uZWdhdGUpCisgICAgaW5s
aW5lIE5lZ2F0ZU5vZGU6Ok5lZ2F0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogVW5hcnlPcE5vZGUobG9jYXRpb24s
IFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwciwgb3BfbmVnYXRlKQogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgQml0d2lzZU5vdE5vZGU6OkJpdHdpc2VOb3ROb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpKQorICAgIGlubGluZSBCaXR3aXNlTm90Tm9k
ZTo6Qml0d2lzZU5vdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24sIFJlc3Vs
dFR5cGU6OmZvckJpdE9wKCkpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBMb2dpY2FsTm90Tm9kZTo6TG9naWNhbE5vdE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFVuYXJ5T3BOb2RlKGxpbmVOdW1i
ZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIsIG9wX25vdCkKKyAgICBpbmxpbmUg
TG9naWNhbE5vdE5vZGU6OkxvZ2ljYWxOb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IFVuYXJ5T3BOb2RlKGxvY2F0
aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByLCBvcF9ub3QpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBCaW5hcnlPcE5vZGU6OkJpbmFyeU9wTm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlE
IG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwg
bV9leHByMShleHByMSkKICAgICAgICAgLCBtX2V4cHIyKGV4cHIyKQogICAgICAgICAsIG1fb3Bj
b2RlSUQob3Bjb2RlSUQpCkBAIC00MzksOCArNDQwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBCaW5hcnlPcE5vZGU6OkJpbmFyeU9wTm9kZShpbnQgbGlu
ZU51bWJlciwgUmVzdWx0VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cykKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCB0eXBlKQorICAgIGlubGlu
ZSBCaW5hcnlPcE5vZGU6OkJpbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBSZXN1bHRUeXBlIHR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQor
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uLCB0eXBlKQogICAgICAgICAsIG1fZXhw
cjEoZXhwcjEpCiAgICAgICAgICwgbV9leHByMihleHByMikKICAgICAgICAgLCBtX29wY29kZUlE
KG9wY29kZUlEKQpAQCAtNDQ4LDE0MCArNDQ5LDE0MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIE11bHROb2RlOjpNdWx0Tm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0
VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX211bCwgcmlnaHRIYXNBc3NpZ25t
ZW50cykKKyAgICBpbmxpbmUgTXVsdE5vZGU6Ok11bHROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0
aW9uLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbXVsLCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGl2Tm9kZTo6RGl2
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5v
ZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9w
X2RpdiwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgRGl2Tm9kZTo6RGl2Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6
IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwg
ZXhwcjIsIG9wX2RpdiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCiAKLSAg
ICBpbmxpbmUgTW9kTm9kZTo6TW9kTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
LSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlw
ZSgpLCBleHByMSwgZXhwcjIsIG9wX21vZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxp
bmUgTW9kTm9kZTo6TW9kTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6
bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX21vZCwgcmlnaHRIYXNBc3NpZ25tZW50cykK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFkZE5vZGU6OkFkZE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJl
c3VsdFR5cGU6OmZvckFkZChleHByMS0+cmVzdWx0RGVzY3JpcHRvcigpLCBleHByMi0+cmVzdWx0
RGVzY3JpcHRvcigpKSwgZXhwcjEsIGV4cHIyLCBvcF9hZGQsIHJpZ2h0SGFzQXNzaWdubWVudHMp
CisgICAgaW5saW5lIEFkZE5vZGU6OkFkZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJl
c3VsdFR5cGU6OmZvckFkZChleHByMS0+cmVzdWx0RGVzY3JpcHRvcigpLCBleHByMi0+cmVzdWx0
RGVzY3JpcHRvcigpKSwgZXhwcjEsIGV4cHIyLCBvcF9hZGQsIHJpZ2h0SGFzQXNzaWdubWVudHMp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBTdWJOb2RlOjpTdWJOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBS
ZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3Bfc3ViLCByaWdodEhhc0Fz
c2lnbm1lbnRzKQorICAgIGlubGluZSBTdWJOb2RlOjpTdWJOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxv
Y2F0aW9uLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3Bfc3ViLCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTGVmdFNoaWZ0
Tm9kZTo6TGVmdFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAg
ICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhw
cjEsIGV4cHIyLCBvcF9sc2hpZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIExl
ZnRTaGlmdE5vZGU6OkxlZnRTaGlmdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3Vs
dFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfbHNoaWZ0LCByaWdodEhhc0Fzc2ln
bm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmlnaHRTaGlmdE5vZGU6OlJpZ2h0
U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFy
eU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIs
IG9wX3JzaGlmdCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgUmlnaHRTaGlmdE5v
ZGU6OlJpZ2h0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpm
b3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX3JzaGlmdCwgcmlnaHRIYXNBc3NpZ25tZW50cykK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGU6OlVuc2ln
bmVkUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAg
IDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhw
cjEsIGV4cHIyLCBvcF91cnNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBV
bnNpZ25lZFJpZ2h0U2hpZnROb2RlOjpVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BO
b2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3Bf
dXJzaGlmdCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IExlc3NOb2RlOjpMZXNzTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAg
ICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9sZXNzLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBM
ZXNzTm9kZTo6TGVzc05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJv
b2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbGVzcywgcmlnaHRIYXNBc3NpZ25tZW50cykK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEdyZWF0ZXJOb2RlOjpHcmVhdGVyTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51
bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVy
LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBHcmVhdGVyTm9kZTo6R3JlYXRlck5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAg
ICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4
cHIxLCBleHByMiwgb3BfZ3JlYXRlciwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIExlc3NFcU5vZGU6Okxlc3NFcU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5
cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbGVzc2VxLCByaWdodEhhc0Fzc2ln
bm1lbnRzKQorICAgIGlubGluZSBMZXNzRXFOb2RlOjpMZXNzRXFOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2Rl
KGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2xl
c3NlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEdy
ZWF0ZXJFcU5vZGU6OkdyZWF0ZXJFcU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
Ci0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5U
eXBlKCksIGV4cHIxLCBleHByMiwgb3BfZ3JlYXRlcmVxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQor
ICAgIGlubGluZSBHcmVhdGVyRXFOb2RlOjpHcmVhdGVyRXFOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxv
Y2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2dyZWF0
ZXJlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFRo
cm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVy
LCBSZXN1bHRUeXBlIHR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAg
ICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCB0eXBlLCBleHByMSwgZXhwcjIsIG9wY29k
ZUlELCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBUaHJvd2FibGVCaW5hcnlPcE5v
ZGU6OlRocm93YWJsZUJpbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBSZXN1bHRUeXBlIHR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAg
ICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgdHlwZSwgZXhwcjEsIGV4cHIyLCBvcGNvZGVJ
RCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFRocm93
YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bj
b2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUo
bGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCBvcGNvZGVJRCwgcmlnaHRIYXNBc3NpZ25tZW50cykK
KyAgICBpbmxpbmUgVGhyb3dhYmxlQmluYXJ5T3BOb2RlOjpUaHJvd2FibGVCaW5hcnlPcE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIs
IG9wY29kZUlELCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgSW5zdGFuY2VPZk5vZGU6Okluc3RhbmNlT2ZOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKQotICAgICAgICA6IFRocm93YWJsZUJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1
bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2luc3RhbmNlb2YsIHJpZ2h0
SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEluc3RhbmNlT2ZOb2RlOjpJbnN0YW5jZU9mTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAg
ICA6IFRocm93YWJsZUJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5
cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9pbnN0YW5jZW9mLCByaWdodEhhc0Fzc2lnbm1lbnRzKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgSW5Ob2RlOjpJbk5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxpbmVOdW1i
ZXIsIGV4cHIxLCBleHByMiwgb3BfaW4sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5l
IEluTm9kZTo6SW5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCisgICAgICAgIDogVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBleHByMSwg
ZXhwcjIsIG9wX2luLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBp
bmxpbmUgRXF1YWxOb2RlOjpFcXVhbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
Ci0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5U
eXBlKCksIGV4cHIxLCBleHByMiwgb3BfZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5s
aW5lIEVxdWFsTm9kZTo6RXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRU
eXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2VxLCByaWdodEhhc0Fzc2lnbm1l
bnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTm90RXF1YWxOb2RlOjpOb3RFcXVhbE5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2Rl
KGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3Bf
bmVxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBOb3RFcXVhbE5vZGU6Ok5vdEVx
dWFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQor
ICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUo
KSwgZXhwcjEsIGV4cHIyLCBvcF9uZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBTdHJpY3RFcXVhbE5vZGU6OlN0cmljdEVxdWFsTm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJl
ciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9zdHJpY3RlcSwg
cmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgU3RyaWN0RXF1YWxOb2RlOjpTdHJpY3RF
cXVhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
KyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBl
KCksIGV4cHIxLCBleHByMiwgb3Bfc3RyaWN0ZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBOb3RTdHJpY3RFcXVhbE5vZGU6Ok5vdFN0cmljdEVxdWFs
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5v
ZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBv
cF9uc3RyaWN0ZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIE5vdFN0cmljdEVx
dWFsTm9kZTo6Tm90U3RyaWN0RXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1
bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX25zdHJpY3RlcSwgcmlnaHRI
YXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJpdEFuZE5vZGU6OkJp
dEFuZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5
T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwg
b3BfYml0YW5kLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBCaXRBbmROb2RlOjpC
aXRBbmROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
CisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgp
LCBleHByMSwgZXhwcjIsIG9wX2JpdGFuZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIEJpdE9yTm9kZTo6Qml0T3JOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRU
eXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdG9yLCByaWdodEhhc0Fzc2lnbm1l
bnRzKQorICAgIGlubGluZSBCaXRPck5vZGU6OkJpdE9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2Nh
dGlvbiwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXRvciwgcmln
aHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJpdFhPck5vZGU6
OkJpdFhPck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmlu
YXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHBy
Miwgb3BfYml0eG9yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBCaXRYT3JOb2Rl
OjpCaXRYT3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpmb3JCaXRP
cCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdHhvciwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIExvZ2ljYWxPcE5vZGU6OkxvZ2ljYWxPcE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBM
b2dpY2FsT3BlcmF0b3Igb3BlcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
LCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpKQorICAgIGlubGluZSBMb2dpY2FsT3BOb2RlOjpM
b2dpY2FsT3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBMb2dpY2FsT3BlcmF0b3Igb3BlcikK
KyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5
cGUoKSkKICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1fZXhwcjIoZXhwcjIp
CiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
Q29uZGl0aW9uYWxOb2RlOjpDb25kaXRpb25hbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBD
b25kaXRpb25hbE5vZGU6OkNvbmRpdGlvbmFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFeHByZXNzaW9uTm9kZSogbG9naWNhbCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
CiAgICAgICAgICwgbV9sb2dpY2FsKGxvZ2ljYWwpCiAgICAgICAgICwgbV9leHByMShleHByMSkK
ICAgICAgICAgLCBtX2V4cHIyKGV4cHIyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVh
ZE1vZGlmeVJlc29sdmVOb2RlOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSog
IHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6UmVhZE1v
ZGlmeVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogIHJpZ2h0LCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0
aW9uKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9yaWdo
dChyaWdodCkKQEAgLTU5MCwxNSArNTkxLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgQXNzaWduUmVzb2x2ZU5vZGU6OkFzc2lnblJlc29sdmVOb2RlKGlu
dCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJp
Z2h0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFz
c2lnblJlc29sdmVOb2RlOjpBc3NpZ25SZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1faWRlbnQo
aWRlbnQpCiAgICAgICAgICwgbV9yaWdodChyaWdodCkKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIFJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6UmVhZE1vZGlmeUJyYWNrZXROb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwg
T3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fz
c2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFJlYWRNb2RpZnlCcmFja2V0Tm9kZTo6UmVh
ZE1vZGlmeUJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVy
LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRp
b24pCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJz
Y3JpcHQoc3Vic2NyaXB0KQpAQCAtNjA5LDggKzYxMCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXNzaWduQnJhY2tldE5vZGU6OkFzc2lnbkJyYWNrZXRO
b2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUq
IHN1YnNjcmlwdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2ln
bm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFzc2lnbkJyYWNrZXROb2RlOjpBc3NpZ25CcmFj
a2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBi
b29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQor
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1f
YmFzZShiYXNlKQogICAgICAgICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKQEAgLTYyMCw4ICs2
MjEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2ln
bkRvdE5vZGU6OkFzc2lnbkRvdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIEFzc2lnbkRvdE5vZGU6OkFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAg
ICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKQEAgLTYzMCw4ICs2MzEs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFJlYWRNb2Rp
ZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJl
YWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Np
b25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShi
YXNlKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCkBAIC02NDEsMjEgKzY0MiwyMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkVycm9yTm9kZTo6
QXNzaWduRXJyb3JOb2RlKGludCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBBc3NpZ25FcnJvck5vZGU6OkFzc2lnbkVycm9yTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwg
c3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENvbW1h
Tm9kZTo6Q29tbWFOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBDb21tYU5vZGU6OkNvbW1hTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMikK
KyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICB7CiAgICAgICAgIG1fZXhw
cmVzc2lvbnMuYXBwZW5kKGV4cHIxKTsKICAgICAgICAgbV9leHByZXNzaW9ucy5hcHBlbmQoZXhw
cjIpOwogICAgIH0KIAotICAgIGlubGluZSBDb25zdFN0YXRlbWVudE5vZGU6OkNvbnN0U3RhdGVt
ZW50Tm9kZShpbnQgbGluZU51bWJlciwgQ29uc3REZWNsTm9kZSogbmV4dCkKLSAgICAgICAgOiBT
dGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIENvbnN0U3RhdGVtZW50Tm9kZTo6
Q29uc3RTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIENvbnN0
RGVjbE5vZGUqIG5leHQpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAg
ICAgLCBtX25leHQobmV4dCkKICAgICB7CiAgICAgfQpAQCAtNjY0LDU3ICs2NjUsNTcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBFbXB0eVN0YXRlbWVudE5v
ZGU6OkVtcHR5U3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBTdGF0ZW1l
bnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEVtcHR5U3RhdGVtZW50Tm9kZTo6RW1wdHlT
dGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCisgICAgICAgIDog
U3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlYnVn
Z2VyU3RhdGVtZW50Tm9kZTo6RGVidWdnZXJTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyKQot
ICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRGVidWdnZXJT
dGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgIHsKICAg
ICB9CiAgICAgCi0gICAgaW5saW5lIEV4cHJTdGF0ZW1lbnROb2RlOjpFeHByU3RhdGVtZW50Tm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogU3RhdGVt
ZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBFeHByU3RhdGVtZW50Tm9kZTo6RXhwclN0
YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBt
X2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFZhclN0YXRlbWVudE5vZGU6
OlZhclN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQot
ICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgVmFyU3RhdGVt
ZW50Tm9kZTo6VmFyU3RhdGVtZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9u
KQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAgICAgCi0gICAgaW5saW5l
IElmTm9kZTo6SWZOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9u
LCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51
bWJlcikKKyAgICBpbmxpbmUgSWZOb2RlOjpJZk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9j
aykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fY29uZGl0
aW9uKGNvbmRpdGlvbikKICAgICAgICAgLCBtX2lmQmxvY2soaWZCbG9jaykKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIElmRWxzZU5vZGU6OklmRWxzZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVu
dE5vZGUqIGVsc2VCbG9jaykKLSAgICAgICAgOiBJZk5vZGUobGluZU51bWJlciwgY29uZGl0aW9u
LCBpZkJsb2NrKQorICAgIGlubGluZSBJZkVsc2VOb2RlOjpJZkVsc2VOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVu
dE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5vZGUqIGVsc2VCbG9jaykKKyAgICAgICAgOiBJZk5v
ZGUobG9jYXRpb24sIGNvbmRpdGlvbiwgaWZCbG9jaykKICAgICAgICAgLCBtX2Vsc2VCbG9jayhl
bHNlQmxvY2spCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBEb1doaWxlTm9kZTo6RG9XaGls
ZU5vZGUoaW50IGxpbmVOdW1iZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlu
bGluZSBEb1doaWxlTm9kZTo6RG9XaGlsZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAg
ICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fc3RhdGVtZW50KHN0
YXRlbWVudCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIFdoaWxlTm9kZTo6V2hpbGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUo
bGluZU51bWJlcikKKyAgICBpbmxpbmUgV2hpbGVOb2RlOjpXaGlsZU5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUq
IHN0YXRlbWVudCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAs
IG1fZXhwcihleHByKQogICAgICAgICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIEZvck5vZGU6OkZvck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjMsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZvck5vZGU6OkZvck5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIEV4cHJlc3Npb25Ob2RlKiBleHByMywgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQor
ICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9leHByMShleHBy
MSkKICAgICAgICAgLCBtX2V4cHIyKGV4cHIyKQogICAgICAgICAsIG1fZXhwcjMoZXhwcjMpCkBA
IC03MjMsMzggKzcyNCwzOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQVNTRVJUKHN0YXRl
bWVudCk7CiAgICAgfQogCi0gICAgaW5saW5lIENvbnRpbnVlTm9kZTo6Q29udGludWVOb2RlKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogU3RhdGVt
ZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNvbnRpbnVlTm9k
ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24pCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2lkZW50
KGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyKQogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgQ29udGludWVOb2RlOjpDb250aW51ZU5vZGUoaW50IGxpbmVOdW1iZXIs
IGNvbnN0IElkZW50aWZpZXImIGlkZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51
bWJlcikKKyAgICBpbmxpbmUgQ29udGludWVOb2RlOjpDb250aW51ZU5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgICAgIDog
U3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsK
ICAgICB9CiAgICAgCi0gICAgaW5saW5lIEJyZWFrTm9kZTo6QnJlYWtOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShs
aW5lTnVtYmVyKQorICAgIGlubGluZSBCcmVha05vZGU6OkJyZWFrTm9kZShKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCisgICAgICAgIDog
U3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2lkZW50KGdsb2JhbERhdGEtPnBy
b3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
QnJlYWtOb2RlOjpCcmVha05vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQnJl
YWtOb2RlOjpCcmVha05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAg
ICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAgICB9CiAgICAgCi0gICAgaW5saW5lIFJl
dHVybk5vZGU6OlJldHVybk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiB2YWx1
ZSkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFJldHVy
bk5vZGU6OlJldHVybk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIHZhbHVlKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAg
ICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFdpdGhOb2Rl
OjpXaXRoTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVu
dE5vZGUqIHN0YXRlbWVudCwgdWludDMyX3QgZGl2b3QsIHVpbnQzMl90IGV4cHJlc3Npb25MZW5n
dGgpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBXaXRo
Tm9kZTo6V2l0aE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgdWludDMyX3QgZGl2b3QsIHVp
bnQzMl90IGV4cHJlc3Npb25MZW5ndGgpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlv
bikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1l
bnQpCiAgICAgICAgICwgbV9kaXZvdChkaXZvdCkKQEAgLTc2MiwyMSArNzYzLDIxIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTGFiZWxOb2RlOjpMYWJlbE5v
ZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUq
IHN0YXRlbWVudCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5s
aW5lIExhYmVsTm9kZTo6TGFiZWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkKKyAgICAg
ICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbmFtZShuYW1lKQogICAg
ICAgICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IFRocm93Tm9kZTo6VGhyb3dOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFRocm93
Tm9kZTo6VGhyb3dOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBleHByKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAg
ICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBUcnlOb2RlOjpUcnlO
b2RlKGludCBsaW5lTnVtYmVyLCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRp
ZmllciYgZXhjZXB0aW9uSWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVu
dE5vZGUqIGZpbmFsbHlCbG9jaykKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIp
CisgICAgaW5saW5lIFRyeU5vZGU6OlRyeU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2VwdGlv
bklkZW50LCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5
QmxvY2spCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX3Ry
eUJsb2NrKHRyeUJsb2NrKQogICAgICAgICAsIG1fZXhjZXB0aW9uSWRlbnQoZXhjZXB0aW9uSWRl
bnQpCiAgICAgICAgICwgbV9jYXRjaEJsb2NrKGNhdGNoQmxvY2spCkBAIC03OTcsMTUgKzc5OCwx
NSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbC0+bV9uZXh0ID0gdGhpczsKICAgICB9CiAK
LSAgICBpbmxpbmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoaW50IGxpbmVOdW1iZXIsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcikKLSAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGdW5jRXhwck5vZGU6OkZ1bmNFeHBy
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQ
YXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRp
b24pCiAgICAgICAgICwgbV9ib2R5KGJvZHkpCiAgICAgewogICAgICAgICBtX2JvZHktPmZpbmlz
aFBhcnNpbmcoc291cmNlLCBwYXJhbWV0ZXIsIGlkZW50KTsKICAgICB9CiAKLSAgICBpbmxpbmUg
RnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3Vy
Y2UsIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIEZ1bmNEZWNsTm9kZTo6RnVuY0RlY2xOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlv
bkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5vZGUq
IHBhcmFtZXRlcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAs
IG1fYm9keShib2R5KQogICAgIHsKICAgICAgICAgbV9ib2R5LT5maW5pc2hQYXJzaW5nKHNvdXJj
ZSwgcGFyYW1ldGVyLCBpZGVudCk7CkBAIC04MzcsMjkgKzgzOCwyOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFN3aXRjaE5vZGU6OlN3aXRjaE5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBDYXNlQmxvY2tOb2RlKiBibG9jaykK
LSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFN3aXRjaE5v
ZGU6OlN3aXRjaE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIsIENhc2VCbG9ja05vZGUqIGJsb2NrKQorICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9ibG9jayhi
bG9jaykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENvbnN0RGVjbE5vZGU6OkNvbnN0RGVj
bE5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9u
Tm9kZSogaW5pdCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlu
bGluZSBDb25zdERlY2xOb2RlOjpDb25zdERlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdCkK
KyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2lkZW50KGlk
ZW50KQogICAgICAgICAsIG1fbmV4dCgwKQogICAgICAgICAsIG1faW5pdChpbml0KQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgQmxvY2tOb2RlOjpCbG9ja05vZGUoaW50IGxpbmVOdW1iZXIs
IFNvdXJjZUVsZW1lbnRzKiBzdGF0ZW1lbnRzKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGlu
ZU51bWJlcikKKyAgICBpbmxpbmUgQmxvY2tOb2RlOjpCbG9ja05vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgU291cmNlRWxlbWVudHMqIHN0YXRlbWVudHMpCisgICAgICAgIDog
U3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX3N0YXRlbWVudHMoc3RhdGVtZW50
cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZvckluTm9kZTo6Rm9ySW5Ob2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRl
bWVudE5vZGUqIHN0YXRlbWVudCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIp
CisgICAgaW5saW5lIEZvckluTm9kZTo6Rm9ySW5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgbV9pbml0KDApCiAgICAgICAgICwgbV9sZXhwcihsKQogICAgICAgICAsIG1fZXhw
cihleHByKQpAQCAtODY4LDE2ICs4NjksMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lv
bk5vZGUqIGluLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50
LCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCkKLSAgICAgICAgOiBT
dGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZvckluTm9kZTo6Rm9ySW5Ob2Rl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBpbiwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IGRpdm90LCBpbnQgc3Rh
cnRPZmZzZXQsIGludCBlbmRPZmZzZXQpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlv
bikKICAgICAgICAgLCBtX2luaXQoMCkKLSAgICAgICAgLCBtX2xleHByKG5ldyAoZ2xvYmFsRGF0
YSkgUmVzb2x2ZU5vZGUobGluZU51bWJlciwgaWRlbnQsIGRpdm90IC0gc3RhcnRPZmZzZXQpKQor
ICAgICAgICAsIG1fbGV4cHIobmV3IChnbG9iYWxEYXRhKSBSZXNvbHZlTm9kZShsb2NhdGlvbiwg
aWRlbnQsIGRpdm90IC0gc3RhcnRPZmZzZXQpKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAg
ICAgICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkKICAgICAgICAgLCBtX2lkZW50SXNWYXJEZWNs
KHRydWUpCiAgICAgewogICAgICAgICBpZiAoaW4pIHsKLSAgICAgICAgICAgIEFzc2lnblJlc29s
dmVOb2RlKiBub2RlID0gbmV3IChnbG9iYWxEYXRhKSBBc3NpZ25SZXNvbHZlTm9kZShsaW5lTnVt
YmVyLCBpZGVudCwgaW4pOworICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBu
ZXcgKGdsb2JhbERhdGEpIEFzc2lnblJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVudCwgaW4pOwog
ICAgICAgICAgICAgbm9kZS0+c2V0RXhjZXB0aW9uU291cmNlQ29kZShkaXZvdCwgZGl2b3QgLSBz
dGFydE9mZnNldCwgZW5kT2Zmc2V0IC0gZGl2b3QpOwogICAgICAgICAgICAgbV9pbml0ID0gbm9k
ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCBj
MzJlNGM3M2EyNGViZWIyMzNjZDVlMDFmZmZkNjNhNDg2ODVjODg2Li4wMTcyMzU5YzcwM2YyYjlm
ZTEyYmE1YjA4ZjI1ZGZhNDNiNDk2N2I1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmNwcApAQCAtNTIsMTAgKzUyLDE4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3RhdGVtZW50Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCit2b2lkIFN0YXRlbWVudE5vZGU6OnNldExvYyhpbnQgZmlyc3RMaW5l
LCBpbnQgbGFzdExpbmUsIGludCBjb2x1bW4pCit7CisgICAgbV9saW5lTnVtYmVyID0gZmlyc3RM
aW5lOworICAgIG1fbGFzdExpbmUgPSBsYXN0TGluZTsKKyAgICBtX2NvbHVtbk51bWJlciA9IGNv
bHVtbjsKK30KKwogdm9pZCBTdGF0ZW1lbnROb2RlOjpzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50
IGxhc3RMaW5lKQogewogICAgIG1fbGluZU51bWJlciA9IGZpcnN0TGluZTsKICAgICBtX2xhc3RM
aW5lID0gbGFzdExpbmU7CisgICAgbV9jb2x1bW5OdW1iZXIgPSAwOwogfQogCiAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU291cmNlRWxlbWVudHMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KQEAgLTc1LDggKzgzLDggQEAgU3RhdGVtZW50Tm9kZSogU291cmNlRWxl
bWVudHM6OnNpbmdsZVN0YXRlbWVudCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBTY29wZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotU2Nv
cGVOb2RlOjpTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJl
ciwgYm9vbCBpblN0cmljdENvbnRleHQpCi0gICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIp
CitTY29wZU5vZGU6OlNjb3BlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGJvb2wgaW5TdHJpY3RDb250ZXh0KQorICAgIDogU3Rh
dGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAsIFBhcnNlckFyZW5hUmVmQ291bnRlZChnbG9iYWxE
YXRhKQogICAgICwgbV9mZWF0dXJlcyhpblN0cmljdENvbnRleHQgPyBTdHJpY3RNb2RlRmVhdHVy
ZSA6IE5vRmVhdHVyZXMpCiAgICAgLCBtX251bUNvbnN0YW50cygwKQpAQCAtODQsOCArOTIsOCBA
QCBTY29wZU5vZGU6OlNjb3BlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5l
TnVtYmVyLCBib29sIGluU3RyaWN0Q29udAogewogfQogCi1TY29wZU5vZGU6OlNjb3BlTm9kZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBG
dW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVz
LCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCi0gICAgOiBTdGF0ZW1l
bnROb2RlKGxpbmVOdW1iZXIpCitTY29wZU5vZGU6OlNjb3BlTm9kZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ss
IEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJs
ZXMsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKKyAgICA6IFN0YXRl
bWVudE5vZGUobG9jYXRpb24pCiAgICAgLCBQYXJzZXJBcmVuYVJlZkNvdW50ZWQoZ2xvYmFsRGF0
YSkKICAgICAsIG1fZmVhdHVyZXMoZmVhdHVyZXMpCiAgICAgLCBtX3NvdXJjZShzb3VyY2UpCkBA
IC0xMDcsMTQgKzExNSwxNCBAQCBTdGF0ZW1lbnROb2RlKiBTY29wZU5vZGU6OnNpbmdsZVN0YXRl
bWVudCgpIGNvbnN0CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9ncmFt
Tm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgUHJvZ3JhbU5vZGU6
OlByb2dyYW1Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIFNv
dXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNr
KiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykK
LSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBzb3VyY2UsIGNoaWxkcmVu
LCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNv
bnN0YW50cykKK2lubGluZSBQcm9ncmFtTm9kZTo6UHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTb3VyY2VFbGVtZW50
cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNr
LCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCisgICAgOiBTY29w
ZU5vZGUoZ2xvYmFsRGF0YSwgbG9jYXRpb24sIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBm
dW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogewog
fQogCi1QYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJl
biwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZp
ZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVG
ZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK1Bhc3NSZWZQdHI8UHJvZ3JhbU5v
ZGU+IFByb2dyYW1Ob2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0
YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBj
YXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMg
ZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiB7Ci0gICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBu
b2RlID0gbmV3IFByb2dyYW1Ob2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNoaWxkcmVuLCB2
YXJTdGFjaywgZnVuY1N0YWNrLCAgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMs
IG51bUNvbnN0YW50cyk7CisgICAgUmVmUHRyPFByb2dyYW1Ob2RlPiBub2RlID0gbmV3IFByb2dy
YW1Ob2RlKGdsb2JhbERhdGEsIGxvY2F0aW9uLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFj
aywgIGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2UsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOwog
CiAgICAgQVNTRVJUKG5vZGUtPm1fYXJlbmEubGFzdCgpID09IG5vZGUpOwogICAgIG5vZGUtPm1f
YXJlbmEucmVtb3ZlTGFzdCgpOwpAQCAtMTI1LDE0ICsxMzMsMTQgQEAgUGFzc1JlZlB0cjxQcm9n
cmFtTm9kZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGlu
dCBsaW5lTnUKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEV2YWxOb2RlIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBFdmFsTm9kZTo6RXZhbE5vZGUo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMq
IGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywg
SWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJj
ZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQotICAgIDogU2NvcGVO
b2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBm
dW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQoraW5s
aW5lIEV2YWxOb2RlOjpFdmFsTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3Rh
Y2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNh
cHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBm
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBs
b2NhdGlvbiwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRW
YXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCiB7CiB9CiAKLVBhc3NSZWZQdHI8RXZh
bE5vZGU+IEV2YWxOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGlu
ZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1
bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKQorUGFzc1JlZlB0cjxFdmFsTm9kZT4gRXZhbE5vZGU6OmNyZWF0ZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFNvdXJj
ZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBm
dW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VD
b2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKIHsK
LSAgICBSZWZQdHI8RXZhbE5vZGU+IG5vZGUgPSBuZXcgRXZhbE5vZGUoZ2xvYmFsRGF0YSwgbGlu
ZU51bWJlciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVz
LCBzb3VyY2UsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOworICAgIFJlZlB0cjxFdmFsTm9kZT4g
bm9kZSA9IG5ldyBFdmFsTm9kZShnbG9iYWxEYXRhLCBsb2NhdGlvbiwgY2hpbGRyZW4sIHZhclN0
YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2UsIGZlYXR1cmVzLCBudW1D
b25zdGFudHMpOwogCiAgICAgQVNTRVJUKG5vZGUtPm1fYXJlbmEubGFzdCgpID09IG5vZGUpOwog
ICAgIG5vZGUtPm1fYXJlbmEucmVtb3ZlTGFzdCgpOwpAQCAtMTQ5LDEzICsxNTcsMTMgQEAgRnVu
Y3Rpb25QYXJhbWV0ZXJzOjpGdW5jdGlvblBhcmFtZXRlcnMoUGFyYW1ldGVyTm9kZSogZmlyc3RQ
YXJhbWV0ZXIpCiAgICAgICAgIGFwcGVuZChwYXJhbWV0ZXItPmlkZW50KCkpOwogfQogCi1pbmxp
bmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIGludCBsaW5lTnVtYmVyLCBib29sIGluU3RyaWN0Q29udGV4dCkKLSAgICA6IFNjb3Bl
Tm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBpblN0cmljdENvbnRleHQpCitpbmxpbmUgRnVu
Y3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEs
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGJvb2wgaW5TdHJpY3RDb250ZXh0KQor
ICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxvY2F0aW9uLCBpblN0cmljdENvbnRleHQpCiB7
CiB9CiAKLWlubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJl
biwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZp
ZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBD
b2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUo
Z2xvYmFsRGF0YSwgbGluZU51bWJlciwgc291cmNlQ29kZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBm
dW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQoraW5s
aW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyog
Y2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJ
ZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNl
Q29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorICAgIDogU2Nv
cGVOb2RlKGdsb2JhbERhdGEsIGxvY2F0aW9uLCBzb3VyY2VDb2RlLCBjaGlsZHJlbiwgdmFyU3Rh
Y2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMp
CiB7CiB9CiAKQEAgLTE3MiwxNCArMTgwLDE0IEBAIHZvaWQgRnVuY3Rpb25Cb2R5Tm9kZTo6Zmlu
aXNoUGFyc2luZyhQYXNzUmVmUHRyPEZ1bmN0aW9uUGFyYW1ldGVycz4gcGFyYW1ldGVycywKICAg
ICBtX2lkZW50ID0gaWRlbnQ7CiB9CiAKLUZ1bmN0aW9uQm9keU5vZGUqIEZ1bmN0aW9uQm9keU5v
ZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBib29s
IGluU3RyaWN0Q29udGV4dCkKK0Z1bmN0aW9uQm9keU5vZGUqIEZ1bmN0aW9uQm9keU5vZGU6OmNy
ZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGJvb2wgaW5TdHJpY3RDb250ZXh0KQogewotICAgIHJldHVybiBuZXcgRnVuY3Rpb25C
b2R5Tm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBpblN0cmljdENvbnRleHQpOworICAgIHJl
dHVybiBuZXcgRnVuY3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBsb2NhdGlvbiwgaW5TdHJpY3RD
b250ZXh0KTsKIH0KIAotUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBGdW5jdGlvbkJvZHlO
b2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291
cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sq
IGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cykKK1Bhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9u
U3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNv
bnN0YW50cykKIHsKLSAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gbm9kZSA9IG5ldyBGdW5j
dGlvbkJvZHlOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNoaWxkcmVuLCB2YXJTdGFjaywg
ZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNlQ29kZSwgZmVhdHVyZXMsIG51bUNv
bnN0YW50cyk7CisgICAgUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IG5vZGUgPSBuZXcgRnVuY3Rp
b25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBsb2NhdGlvbiwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5j
U3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2VDb2RlLCBmZWF0dXJlcywgbnVtQ29uc3Rh
bnRzKTsKIAogICAgIEFTU0VSVChub2RlLT5tX2FyZW5hLmxhc3QoKSA9PSBub2RlKTsKICAgICBu
b2RlLT5tX2FyZW5hLnJlbW92ZUxhc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aAppbmRleCA1YjE1YmU0NGNjZWU2ODAwMDYxMjFkNmViZGZiNTZmMGI5ZTZkNGUwLi5jYWYyN2Nj
MDI1ZThhZDM1OTE0Y2ZkYTM3NTliZjM2OWVmZGE5ZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCkBAIC0xMzAsNyArMTMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBOb2RlIDogcHVibGljIFBhcnNlckFyZW5hRnJlZWFibGUgewogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgTm9kZShpbnQpOworICAgICAgICBOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYp
OwogCiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5Ob2RlKCkgeyB9CkBAIC0xMzksMTMg
KzEzOSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBpbnQgbGluZU5vKCkgY29uc3Qg
eyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CiAKKyAgICAgICAgaW50IGNvbHVtbk5vKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2x1bW5OdW1iZXI7IH0KKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgaW50
IG1fbGluZU51bWJlcjsKKyAgICAgICAgaW50IG1fY29sdW1uTnVtYmVyOwogICAgIH07CiAKICAg
ICBjbGFzcyBFeHByZXNzaW9uTm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwcm90ZWN0ZWQ6Ci0g
ICAgICAgIEV4cHJlc3Npb25Ob2RlKGludCwgUmVzdWx0VHlwZSA9IFJlc3VsdFR5cGU6OnVua25v
d25UeXBlKCkpOworICAgICAgICBFeHByZXNzaW9uTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBSZXN1bHRUeXBlID0gUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSk7CiAKICAgICBwdWJsaWM6
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bWJlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CkBAIC0xNzUsMTIgKzE3OCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFN0YXRl
bWVudE5vZGUgOiBwdWJsaWMgTm9kZSB7CiAgICAgcHJvdGVjdGVkOgotICAgICAgICBTdGF0ZW1l
bnROb2RlKGludCk7CisgICAgICAgIFN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
Jik7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0TG9j
KGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSk7CisgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgc2V0TG9jKGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSk7IAorICAgICAgICB2b2lk
IHNldExvYyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUsIGludCBjb2x1bW4pOwogICAgICAg
ICBpbnQgZmlyc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbGluZU5vKCk7IH0KICAgICAgICAgaW50
IGxhc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGluZTsgfQorICAgICAgICBpbnQgY29s
dW1uKCkgY29uc3QgeyByZXR1cm4gY29sdW1uTm8oKTt9CiAKICAgICAgICAgdmlydHVhbCBib29s
IGlzRW1wdHlTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNSZXR1cm5Ob2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE5NCw3
ICsxOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE51bGxOb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE51bGxOb2RlKGludCk7Cisg
ICAgICAgIE51bGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMjA0LDcgKzIwOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgQm9vbGVhbk5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgQm9vbGVhbk5vZGUoaW50LCBib29sIHZhbHVlKTsKKyAgICAgICAg
Qm9vbGVhbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCB2YWx1ZSk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0yMTYsNyArMjIxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBOdW1iZXJOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE51bWJlck5vZGUoaW50LCBkb3VibGUgdmFsdWUpOwor
ICAgICAgICBOdW1iZXJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGRvdWJsZSB2YWx1ZSk7
CiAKICAgICAgICAgZG91YmxlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAg
ICAgICB2b2lkIHNldFZhbHVlKGRvdWJsZSB2YWx1ZSkgeyBtX3ZhbHVlID0gdmFsdWU7IH0KQEAg
LTIzMiw3ICsyMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFN0cmluZ05vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgU3RyaW5nTm9k
ZShpbnQsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgU3RyaW5nTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAKQEAgLTM0Miw3ICszNDcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlZ0V4cE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAg
ICAgICBSZWdFeHBOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRl
bnRpZmllciYgZmxhZ3MpOworICAgICAgICBSZWdFeHBOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzKTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTM1Myw3ICszNTgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFRoaXNOb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFRoaXNOb2RlKGludCk7CisgICAgICAgIFRo
aXNOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwpAQCAtMzYxLDcgKzM2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgaW50IHN0YXJ0T2Zm
c2V0KTsKKyAgICAgICAgUmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYsIGludCBzdGFydE9mZnNldCk7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KIApAQCAtMzkzLDExICsz
OTgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcnJheU5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXJyYXlOb2RlKGludCwgaW50
IGVsaXNpb24pOwotICAgICAgICBBcnJheU5vZGUoaW50LCBFbGVtZW50Tm9kZSopOwotICAgICAg
ICBBcnJheU5vZGUoaW50LCBpbnQgZWxpc2lvbiwgRWxlbWVudE5vZGUqKTsKKyAgICAgICAgQXJy
YXlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCBlbGlzaW9uKTsKKyAgICAgICAgQXJy
YXlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEVsZW1lbnROb2RlKik7CisgICAgICAgIEFy
cmF5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQgZWxpc2lvbiwgRWxlbWVudE5vZGUq
KTsKIAotICAgICAgICBBcmd1bWVudExpc3ROb2RlKiB0b0FyZ3VtZW50TGlzdChKU0dsb2JhbERh
dGEqLCBpbnQpIGNvbnN0OworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiB0b0FyZ3VtZW50TGlz
dChKU0dsb2JhbERhdGEqLCBpbnQsIGludCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CkBAIC00MjgsOCArNDMzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBQcm9wZXJ0eUxpc3ROb2RlIDogcHVibGljIE5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgUHJvcGVydHlMaXN0Tm9kZShpbnQsIFByb3BlcnR5Tm9kZSopOwotICAgICAgICBQcm9w
ZXJ0eUxpc3ROb2RlKGludCwgUHJvcGVydHlOb2RlKiwgUHJvcGVydHlMaXN0Tm9kZSopOworICAg
ICAgICBQcm9wZXJ0eUxpc3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9k
ZSopOworICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFBy
b3BlcnR5Tm9kZSosIFByb3BlcnR5TGlzdE5vZGUqKTsKIAogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CiAKQEAgLTQ0MCw4ICs0NDUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE9iamVj
dExpdGVyYWxOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIE9iamVjdExpdGVyYWxOb2RlKGludCk7Ci0gICAgICAgIE9iamVjdExpdGVyYWxOb2RlKGlu
dCwgUHJvcGVydHlMaXN0Tm9kZSopOworICAgICAgICBPYmplY3RMaXRlcmFsTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mKTsKKyAgICAgICAgT2JqZWN0TGl0ZXJhbE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgUHJvcGVydHlMaXN0Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwpAQCAtNDUxLDcgKzQ1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAog
ICAgIGNsYXNzIEJyYWNrZXRBY2Nlc3Nvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1
YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBCcmFj
a2V0QWNjZXNzb3JOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2Rl
KiBzdWJzY3JpcHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMpOworICAgICAgICBCcmFj
a2V0QWNjZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1l
bnRzKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YmFzZTsgfQogICAgICAgICBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0KCkgY29uc3QgeyByZXR1
cm4gbV9zdWJzY3JpcHQ7IH0KQEAgLTQ2OSw3ICs0NzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIERvdEFjY2Vzc29yTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGlj
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERvdEFjY2Vz
c29yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJik7Cisg
ICAgICAgIERvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CkBAIC00ODYsOCArNDkx
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcmd1bWVudExpc3ROb2RlIDogcHVi
bGljIE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKik7Ci0gICAgICAgIEFyZ3VtZW50TGlzdE5vZGUoaW50LCBBcmd1bWVudExp
c3ROb2RlKiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBBcmd1bWVudExp
c3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEFyZ3VtZW50TGlzdE5vZGUqLCBFeHByZXNz
aW9uTm9kZSopOwogCiAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG1fbmV4dDsKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKQEAgLTUwNiw4ICs1MTEsOCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIE5ld0V4cHJOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJs
aWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgTmV3RXhw
ck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOwotICAgICAgICBOZXdFeHByTm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSopOworICAgICAgICBOZXdFeHByTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBOZXdFeHByTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIEFyZ3VtZW50c05vZGUq
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTUxOCw3ICs1MjMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV2YWxGdW5jdGlvbkNhbGxOb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUoaW50LCBBcmd1bWVudHNO
b2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOworICAgICAgICBFdmFsRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpAQCAtNTI4LDcgKzUzMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVu
Y3Rpb25DYWxsVmFsdWVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsVmFs
dWVOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBG
dW5jdGlvbkNhbGxWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpAQCAtNTM5LDcgKzU0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVu
Y3Rpb25DYWxsUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxS
ZXNvbHZlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAg
ICAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKQEAgLTU1MCw3ICs1NTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAK
ICAgICBjbGFzcyBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9k
ZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4
cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIEZ1bmN0
aW9uQ2FsbEJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTYyLDcgKzU2Nyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIEZ1bmN0
aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTc1LDcgKzU4MCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRnVuY3Rpb25D
YWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRz
Tm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KTsKKyAgICAgICAgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVu
dHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTgz
LDcgKzU4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIEFwcGx5RnVuY3Rp
b25DYWxsRG90Tm9kZSA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXBwbHlG
dW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU5MSw3ICs1OTYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIFByZVBvc3RSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIFByZVBvc3RSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAg
IFByZVBvc3RSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlm
aWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lk
ZW50OwpAQCAtNTk5LDcgKzYwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUG9z
dGZpeFJlc29sdmVOb2RlIDogcHVibGljIFByZVBvc3RSZXNvbHZlTm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBQb3N0Zml4UmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgT3Bl
cmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KTsKKyAgICAgICAgUG9zdGZpeFJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwpAQCAtNjA5LDcgKzYxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgUG9zdGZpeEJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJs
aWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUG9z
dGZpeEJyYWNrZXROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2Rl
KiBzdWJzY3JpcHQsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFBvc3RmaXhCcmFja2V0Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUq
IHN1YnNjcmlwdCwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTYyMSw3ICs2MjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFBv
c3RmaXhEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3Vi
RXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUG9zdGZpeERvdE5vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7Cisg
ICAgICAgIFBvc3RmaXhEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTYzMyw3ICs2MzgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIFBvc3RmaXhFcnJvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUs
IHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAg
ICBQb3N0Zml4RXJyb3JOb2RlKGludCwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUG9zdGZpeEVycm9y
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjQzLDcgKzY0OCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgRGVsZXRlUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUs
IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBE
ZWxldGVSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIERlbGV0
ZVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02NTMsNyArNjU4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWxldGVCcmFja2V0Tm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIERlbGV0ZUJyYWNrZXROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRGVsZXRlQnJhY2tldE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Np
b25Ob2RlKiBzdWJzY3JpcHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KTsKQEAgLTY2NCw3ICs2NjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERlbGV0
ZURvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVEb3ROb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIERlbGV0ZURvdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02
NzUsNyArNjgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWxldGVWYWx1ZU5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVsZXRl
VmFsdWVOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgRGVsZXRlVmFsdWVOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02ODUsNyArNjkwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBWb2lkTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBWb2lkTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAg
IFZvaWROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02OTUsNyArNzAwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBUeXBlT2ZSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBUeXBlT2ZSZXNvbHZlTm9kZShpbnQs
IGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgVHlwZU9mUmVzb2x2ZU5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CiAKQEAgLTcwNyw3
ICs3MTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFR5cGVPZlZhbHVlTm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBUeXBlT2ZWYWx1
ZU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBUeXBlT2ZWYWx1ZU5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTcxNyw3ICs3MjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIFByZWZpeFJlc29sdmVOb2RlIDogcHVibGljIFByZVBvc3RSZXNvbHZlTm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBQcmVmaXhSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElk
ZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQcmVmaXhSZXNvbHZlTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTcyNyw3ICs3MzIsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIFByZWZpeEJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgotICAgICAgICBQcmVmaXhCcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBi
YXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQcmVm
aXhCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1
bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTczOSw3ICs3NDQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIFByZWZpeERvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1
YmxpYyBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIFByZWZpeERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFByZWZpeERvdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVy
YXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNzUxLDcg
Kzc1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlZml4RXJyb3JOb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgUHJlZml4RXJyb3JOb2RlKGludCwgT3BlcmF0b3IsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAg
ICAgICAgUHJlZml4RXJyb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIE9wZXJhdG9yLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC03NjEsNyArNzY2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBVbmFyeU9wTm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBVbmFyeU9wTm9kZShpbnQsIFJlc3Vs
dFR5cGUsIEV4cHJlc3Npb25Ob2RlKiwgT3Bjb2RlSUQpOworICAgICAgICBVbmFyeU9wTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSosIE9wY29k
ZUlEKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIoKSB7
IHJldHVybiBtX2V4cHI7IH0KQEAgLTc3OCw3ICs3ODMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIFVuYXJ5UGx1c05vZGUgOiBwdWJsaWMgVW5hcnlPcE5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgVW5hcnlQbHVzTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAg
IFVuYXJ5UGx1c05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgRXhwcmVzc2lvbk5vZGUqIHN0cmlwVW5h
cnlQbHVzKCkgeyByZXR1cm4gZXhwcigpOyB9CkBAIC03ODYsMTIgKzc5MSwxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIE5lZ2F0ZU5vZGUgOiBwdWJsaWMgVW5hcnlPcE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgTmVnYXRlTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7Cisg
ICAgICAgIE5lZ2F0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
KTsKICAgICB9OwogCiAgICAgY2xhc3MgQml0d2lzZU5vdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQml0d2lzZU5vdE5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSopOworICAgICAgICBCaXR3aXNlTm90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBFeHByZXNzaW9u
Tm9kZSogZXhwcigpIHsgcmV0dXJuIG1fZXhwcjsgfQpAQCAtODA1LDcgKzgxMCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogIAogICAgIGNsYXNzIExvZ2ljYWxOb3ROb2RlIDogcHVibGljIFVuYXJ5T3BO
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExvZ2ljYWxOb3ROb2RlKGludCwgRXhwcmVzc2lv
bk5vZGUqKTsKKyAgICAgICAgTG9naWNhbE5vdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqKTsKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGVtaXRCeXRlY29k
ZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYsIExhYmVsKiB0cnVlVGFyZ2V0
LCBMYWJlbCogZmFsc2VUYXJnZXQsIGJvb2wgZmFsbFRocm91Z2hNZWFuc1RydWUpOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaGFzQ29uZGl0aW9uQ29udGV4dENvZGVnZW4oKSBjb25zdCB7IHJldHVy
biBleHByKCktPmhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCk7IH0KQEAgLTgxMyw4ICs4MTgs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJpbmFyeU9wTm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBCaW5hcnlPcE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgICAgIEJpbmFyeU9wTm9kZShpbnQsIFJlc3Vs
dFR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNv
ZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQmluYXJ5T3BOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAg
QmluYXJ5T3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFJlc3VsdFR5cGUsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0U3RyY2F0KEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uLCBSZWdpc3Rl
cklEKiBsaHMgPSAwLCBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUqIGVtaXRFeHByZXNzaW9uSW5mb0Zv
ck1lID0gMCk7CiAKQEAgLTgzOCw3MiArODQzLDcyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgTXVsdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIE11bHROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIE11bHROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBE
aXZOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBEaXZO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIERpdk5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIE1vZE5vZGUgOiBw
dWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE1vZE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTW9kTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgQWRkTm9kZSA6IHB1YmxpYyBCaW5h
cnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQWRkTm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOworICAgICAgICBBZGROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FkZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KICAgICB9OwogCiAgICAgY2xhc3MgU3ViTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgU3ViTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAg
ICBTdWJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc1N1YnRyYWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IH07CiAKICAgICBjbGFzcyBMZWZ0U2hpZnROb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBMZWZ0U2hpZnROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgICAgIExlZnRTaGlmdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIFJpZ2h0U2hpZnROb2RlIDogcHVibGljIEJpbmFyeU9w
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBSaWdodFNoaWZ0Tm9kZShpbnQsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOworICAgICAgICBSaWdodFNoaWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgVW5zaWduZWRSaWdodFNoaWZ0Tm9k
ZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVW5zaWduZWRS
aWdodFNoaWZ0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBVbnNpZ25lZFJpZ2h0
U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07
CiAKICAgICBjbGFzcyBMZXNzTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgTGVzc05vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTGVzc05v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAg
IGNsYXNzIEdyZWF0ZXJOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBHcmVhdGVyTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBHcmVhdGVy
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAg
ICAgY2xhc3MgTGVzc0VxTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgTGVzc0VxTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBMZXNzRXFO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAg
ICBjbGFzcyBHcmVhdGVyRXFOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBHcmVhdGVyRXFOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEdy
ZWF0ZXJFcU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAg
fTsKIAogICAgIGNsYXNzIFRocm93YWJsZUJpbmFyeU9wTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5v
ZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAg
ICBUaHJvd2FibGVCaW5hcnlPcE5vZGUoaW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cyk7Ci0gICAgICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAg
ICAgVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
QEAgLTkxMSw3ICs5MTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBJbnN0
YW5jZU9mTm9kZSA6IHB1YmxpYyBUaHJvd2FibGVCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgSW5zdGFuY2VPZk5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgSW5z
dGFuY2VPZk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05MTksMTIgKzkyNCwxMiBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEluTm9kZSA6IHB1YmxpYyBUaHJvd2FibGVCaW5h
cnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSW5Ob2RlKGludCwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cyk7CisgICAgICAgIEluTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKICAgICB9OwogCiAgICAgY2xhc3MgRXF1YWxOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBFcXVhbE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAg
ICAgICAgRXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTMyLDEyICs5MzcsMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOb3RFcXVhbE5vZGUgOiBwdWJsaWMgQmlu
YXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5vdEVxdWFsTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOworICAgICAgICBOb3RFcXVhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIFN0cmljdEVxdWFsTm9kZSA6IHB1
YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgU3RyaWN0RXF1YWxOb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIFN0cmljdEVxdWFsTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKQEAgLTk0NSwyOCArOTUwLDI4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgTm90U3RyaWN0RXF1YWxOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBOb3RTdHJpY3RFcXVhbE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAg
ICAgICAgTm90U3RyaWN0RXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBCaXRBbmROb2RlIDogcHVibGljIEJpbmFyeU9w
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBCaXRBbmROb2RlKGludCwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cyk7CisgICAgICAgIEJpdEFuZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEJpdE9yTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5v
ZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQml0T3JOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CisgICAgICAgIEJpdE9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKICAgICB9OwogCiAgICAgY2xhc3MgQml0WE9yTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgQml0WE9yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwor
ICAgICAgICBCaXRYT3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
OwogICAgIH07CiAKICAgICAvLyBtX2V4cHIxICYmIG1fZXhwcjIsIG1fZXhwcjEgfHwgbV9leHBy
MgogICAgIGNsYXNzIExvZ2ljYWxPcE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgTG9naWNhbE9wTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBMb2dpY2FsT3BlcmF0b3IpOworICAgICAgICBMb2dp
Y2FsT3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBMb2dpY2FsT3BlcmF0b3IpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTgxLDcgKzk4Niw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIC8vIFRoZSB0ZXJuYXJ5IG9wZXJhdG9yLCAibV9sb2dpY2FsID8gbV9leHByMSA6IG1f
ZXhwcjIiCiAgICAgY2xhc3MgQ29uZGl0aW9uYWxOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENvbmRpdGlvbmFsTm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
Mik7CisgICAgICAgIENvbmRpdGlvbmFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogbG9naWNhbCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTkz
LDcgKzk5OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVhZE1vZGlmeVJlc29s
dmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGludCwg
Y29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUmVhZE1vZGlmeVJlc29sdmVOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVz
c2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDA2LDcgKzEwMTEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIEFzc2lnblJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgQXNzaWduUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0KTsKKyAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDE3LDcgKzEwMjIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlYWRNb2RpZnlCcmFja2V0Tm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2Ny
aXB0LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fz
c2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwMzIsNyArMTAzNyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgQXNzaWduQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUs
IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBB
c3NpZ25CcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9k
ZSogc3Vic2NyaXB0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNz
aWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBBc3NpZ25CcmFj
a2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhw
cmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNj
cmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwNDYsNyArMTA1MSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXNzaWduRG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEFzc2lnbkRvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7
CisgICAgICAgIEFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOwpAQCAtMTA1OSw3ICsxMDY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBSZWFkTW9kaWZ5RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93
YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlYWRNb2RpZnlE
b3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVy
YXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
KyAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwNzMsNyArMTA3OCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgQXNzaWduRXJyb3JOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBw
dWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNz
aWduRXJyb3JOb2RlKGludCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBBc3NpZ25FcnJvck5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAt
MTA4Myw3ICsxMDg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb21tYU5vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBQYXJzZXJBcmVuYURlbGV0YWJsZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBDb21tYU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMik7CisgICAgICAgIENvbW1hTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMik7
CiAKICAgICAgICAgdXNpbmcgUGFyc2VyQXJlbmFEZWxldGFibGU6Om9wZXJhdG9yIG5ldzsKIApA
QCAtMTA5OCw3ICsxMTAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgQ29u
c3REZWNsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBDb25zdERlY2xOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKik7
CisgICAgICAgIENvbnN0RGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRl
bnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICAgICAgYm9vbCBoYXNJbml0aWFsaXpl
cigpIGNvbnN0IHsgcmV0dXJuIG1faW5pdDsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCgpIHsgcmV0dXJuIG1faWRlbnQ7IH0KQEAgLTExMTgsNyArMTEyMyw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgQ29uc3RTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVu
dE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29uc3RTdGF0ZW1lbnROb2RlKGludCwgQ29u
c3REZWNsTm9kZSogbmV4dCk7CisgICAgICAgIENvbnN0U3RhdGVtZW50Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBDb25zdERlY2xOb2RlKiBuZXh0KTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTExNDMsNyArMTE0OCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgQmxvY2tOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgQmxvY2tOb2RlKGludCwgU291cmNlRWxlbWVudHMqID0gMCk7CisgICAgICAg
IEJsb2NrTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTb3VyY2VFbGVtZW50cyogPSAwKTsK
IAogICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdDsKICAgICAg
ICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudCgpIGNvbnN0OwpAQCAtMTE1OCw3ICsxMTYz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFbXB0eVN0YXRlbWVudE5vZGUgOiBw
dWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBFbXB0eVN0YXRlbWVu
dE5vZGUoaW50KTsKKyAgICAgICAgRW1wdHlTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTE2OCw3
ICsxMTczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgRGVidWdnZXJTdGF0
ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
RGVidWdnZXJTdGF0ZW1lbnROb2RlKGludCk7CisgICAgICAgIERlYnVnZ2VyU3RhdGVtZW50Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwpAQCAtMTE3Niw3ICsxMTgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBFeHByU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUq
KTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhwcigpIGNvbnN0IHsg
cmV0dXJuIG1fZXhwcjsgfQogCkBAIC0xMTkwLDggKzExOTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIFZhclN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBWYXJTdGF0ZW1lbnROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUq
KTsgICAgICAgIAotCisgICAgICAgIFZhclN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CiAKQEAgLTEyMDAsNyArMTIwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
SWZOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSWZO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9j
ayk7CisgICAgICAgIElmTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrKTsKIAogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTIxMSw3ICsxMjE1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBJZkVsc2VOb2RlIDogcHVibGljIElmTm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBJZkVsc2VOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3Rh
dGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2NrKTsKKyAgICAgICAg
SWZFbHNlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogY29uZGl0
aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrLCBTdGF0ZW1lbnROb2RlKiBlbHNlQmxvY2spOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTIyMSw3ICsxMjI1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEb1doaWxlTm9kZSA6IHB1YmxpYyBTdGF0
ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERvV2hpbGVOb2RlKGludCwgU3RhdGVt
ZW50Tm9kZSosIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIERvV2hpbGVOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIFN0YXRlbWVudE5vZGUqLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTIzMiw3ICsxMjM2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBXaGlsZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBXaGlsZU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSos
IFN0YXRlbWVudE5vZGUqKTsKKyAgICAgICAgV2hpbGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTI0Myw3ICsxMjQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBGb3JOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgRm9yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0YXRlbWVudE5vZGUqKTsKKyAg
ICAgICAgRm9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIzLCBTdGF0ZW1l
bnROb2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjU2
LDggKzEyNjAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZvckluTm9kZSA6IHB1
YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgRm9ySW5Ob2RlKGludCwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNz
aW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsKLSAgICAgICAgRm9ySW5Ob2RlKEpTR2xvYmFsRGF0
YSosIGludCwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5v
ZGUqLCBTdGF0ZW1lbnROb2RlKiwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRP
ZmZzZXQpOworICAgICAgICBGb3JJbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsKKyAgICAgICAgRm9y
SW5Ob2RlKEpTR2xvYmFsRGF0YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50
aWZpZXImLCBFeHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSos
IGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyNzEsOCArMTI3NSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgQ29udGludWVOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUs
IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBD
b250aW51ZU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50KTsKLSAgICAgICAgQ29udGludWVOb2RlKGlu
dCwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBDb250aW51ZU5vZGUoSlNHbG9iYWxEYXRh
KiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CisgICAgICAgIENvbnRpbnVlTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyODIsOCArMTI4Niw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgQnJlYWtOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1
YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBCcmVh
a05vZGUoSlNHbG9iYWxEYXRhKiwgaW50KTsKLSAgICAgICAgQnJlYWtOb2RlKGludCwgY29uc3Qg
SWRlbnRpZmllciYpOworICAgICAgICBCcmVha05vZGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJik7CisgICAgICAgIEJyZWFrTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKQEAgLTEyOTMsNyArMTI5Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgUmV0dXJuTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmV0dXJuTm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiB2YWx1ZSk7CisgICAgICAgIFJldHVybk5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIHZhbHVlKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAKQEAgLTEzMDcsNyArMTMxMSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgV2l0aE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBXaXRoTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwg
U3RhdGVtZW50Tm9kZSosIHVpbnQzMl90IGRpdm90LCB1aW50MzJfdCBleHByZXNzaW9uTGVuZ3Ro
KTsKKyAgICAgICAgV2l0aE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqLCBTdGF0ZW1lbnROb2RlKiwgdWludDMyX3QgZGl2b3QsIHVpbnQzMl90IGV4cHJlc3Npb25M
ZW5ndGgpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTMyMCw3
ICsxMzI0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBMYWJlbE5vZGUgOiBwdWJs
aWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIExhYmVsTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFN0
YXRlbWVudE5vZGUqKTsKKyAgICAgICAgTGFiZWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqKTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEzMzEsNyArMTMzNSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgVGhyb3dOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1Ymxp
YyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBUaHJvd05v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBUaHJvd05vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKQEAgLTEzNDEsNyArMTM0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgVHJ5Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIFRyeU5vZGUoaW50LCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmll
ciYgZXhjZXB0aW9uSWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVudE5v
ZGUqIGZpbmFsbHlCbG9jayk7CisgICAgICAgIFRyeU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2VwdGlvbklk
ZW50LCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5Qmxv
Y2spOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTM3MCw4ICsx
Mzc0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgRGVjbGFyYXRpb25TdGFj
a3M6OlZhclN0YWNrIFZhclN0YWNrOwogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tz
OjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAgICAgU2NvcGVOb2RlKEpTR2xv
YmFsRGF0YSosIGludCwgYm9vbCBpblN0cmljdENvbnRleHQpOwotICAgICAgICBTY29wZU5vZGUo
SlNHbG9iYWxEYXRhKiwgaW50LCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNlRWxlbWVudHMqLCBW
YXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgQ29kZUZlYXR1cmVzLCBp
bnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgU2NvcGVO
b2RlKEpTR2xvYmFsRGF0YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFNvdXJjZUNv
ZGUmLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZp
ZXJTZXQmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHVzaW5n
IFBhcnNlckFyZW5hUmVmQ291bnRlZDo6b3BlcmF0b3IgbmV3OwogCkBAIC0xNDMzLDEyICsxNDM3
LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFByb2dyYW1Ob2RlIDogcHVibGljIFNj
b3BlTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0Z1bmN0
aW9uTm9kZSA9IGZhbHNlOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4g
Y3JlYXRlKEpTR2xvYmFsRGF0YSosIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1
bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFByb2dy
YW1Ob2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU291
cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0Jiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAg
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBw
cml2YXRlOgotICAgICAgICBQcm9ncmFtTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJjZUVs
ZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0
IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBQ
cm9ncmFtTm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTb3VyY2VF
bGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25z
dCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CiAgICAgfTsKQEAgLTE0NDYsMTIgKzE0NTAsMTIgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgRXZhbE5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzRnVuY3Rpb25Ob2RlID0gZmFsc2U7Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2YWxOb2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwg
aW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZp
ZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZhbE5vZGU+IGNyZWF0ZShKU0dsb2JhbERh
dGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwg
RnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBz
Y29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEV2YWxOb2Rl
KEpTR2xvYmFsRGF0YSosIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9u
U3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIEV2YWxOb2RlKEpTR2xvYmFsRGF0YSosIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0
YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGlu
dCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKICAgICB9OwpAQCAtMTQ2
OCw4ICsxNDcyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Cb2R5Tm9k
ZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0
IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSB0cnVlOwotICAgICAgICBzdGF0aWMgRnVuY3Rpb25Cb2R5
Tm9kZSogY3JlYXRlKEpTR2xvYmFsRGF0YSosIGludCwgYm9vbCBpc1N0cmljdE1vZGUpOwotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBjcmVhdGUoSlNHbG9iYWxE
YXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElk
ZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzKTsKKyAgICAgICAgc3RhdGljIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShKU0dsb2Jh
bERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sIGlzU3RyaWN0TW9kZSk7CisgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGNyZWF0ZShKU0dsb2JhbERh
dGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwg
RnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBGdW5jdGlvblBhcmFtZXRlcnMq
IHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0KCk7IH0KICAgICAg
ICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLT5z
aXplKCk7IH0KQEAgLTE0ODYsOCArMTQ5MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
dGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSB0cnVlOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGJvb2wgaW5TdHJp
Y3RDb250ZXh0KTsKLSAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqLCBpbnQs
IFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNl
dCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwor
ICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSosIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShK
U0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTb3VyY2VFbGVtZW50cyosIFZh
clN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2Rl
JiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBJZGVudGlmaWVy
IG1faWRlbnQ7CiAgICAgICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7CkBAIC0xNDk2LDcg
KzE1MDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmNFeHByTm9kZSA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jRXhwck5vZGUo
aW50LCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOworICAgICAgICBGdW5jRXhwck5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBjb25z
dCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsKIAogICAgICAgICBGdW5jdGlvbkJv
ZHlOb2RlKiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9CiAKQEAgLTE1MTAsNyArMTUxNCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY0RlY2xOb2RlIDogcHVibGljIFN0YXRl
bWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY0RlY2xOb2RlKGludCwgY29uc3Qg
SWRlbnRpZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1l
dGVyTm9kZSogPSAwKTsKKyAgICAgICAgRnVuY0RlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbkJvZHlOb2RlKiwgY29uc3QgU291cmNlQ29k
ZSYsIFBhcmFtZXRlck5vZGUqID0gMCk7CiAKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9k
eSgpIHsgcmV0dXJuIG1fYm9keTsgfQogCkBAIC0xNTYxLDcgKzE1NjUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIFN3aXRjaE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBTd2l0Y2hOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqLCBDYXNl
QmxvY2tOb2RlKik7CisgICAgICAgIFN3aXRjaE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqLCBDYXNlQmxvY2tOb2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5k
ZXggNTU4ZjUwZTVmYjMwNTM0YzY2MjRlNzc0OWNiMDRlNjk1MmJjOTI2My4uM2UyNDNiNDA3OTAy
YWEwYmE5MzEzMzMzNzQzOWU5NzJlNThhZTYyYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHRlbXBsYXRlIDxTb3VyY2VFbGVtZW50
c01vZGUgbW9kZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8
CiAgICAgYm9vbCBzZWVuTm9uRGlyZWN0aXZlID0gZmFsc2U7CiAgICAgY29uc3QgSWRlbnRpZmll
ciogZGlyZWN0aXZlID0gMDsKICAgICB1bnNpZ25lZCBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0g
MDsKLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IG1fdG9rZW4ubV9pbmZvLnN0YXJ0T2Zmc2V0
OworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zm
c2V0OwogICAgIHVuc2lnbmVkIG9sZExhc3RMaW5lTnVtYmVyID0gbV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKTsKICAgICB1bnNpZ25lZCBvbGRMaW5lTnVtYmVyID0gbV9sZXhlci0+bGluZU51bWJl
cigpOwogICAgIGJvb2wgaGFzU2V0U3RyaWN0ID0gZmFsc2U7CkBAIC0xNzIsNiArMTcyLDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJEZWNsYXJhdGlvbihU
cmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goVkFSKSk7CisgICAgSlNU
b2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgaW50IHN0YXJ0ID0g
dG9rZW5MaW5lKCk7CiAgICAgaW50IGVuZCA9IDA7CiAgICAgaW50IHNjcmF0Y2g7CkBAIC0xODIs
MjAgKzE4MywyMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpbwogICAgIGZhaWxJZlRydWUobV9l
cnJvcik7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKICAgICAKLSAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVWYXJTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
dmFyRGVjbHMsIHN0YXJ0LCBlbmQpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVZhclN0YXRl
bWVudChsb2NhdGlvbiwgdmFyRGVjbHMsIHN0YXJ0LCBlbmQpOwogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnN0RGVjbGFyYXRpb24oVHJlZUJ1aWxkZXIm
IGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKENPTlNUVE9LRU4pKTsKKyAgICBKU1Rva2Vu
TG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgc3RhcnQgPSB0b2tl
bkxpbmUoKTsKICAgICBpbnQgZW5kID0gMDsKICAgICBUcmVlQ29uc3REZWNsTGlzdCBjb25zdERl
Y2xzID0gcGFyc2VDb25zdERlY2xhcmF0aW9uTGlzdChjb250ZXh0KTsKICAgICBmYWlsSWZUcnVl
KG1fZXJyb3IpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7CiAgICAgCi0gICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQ29uc3RTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgY29uc3REZWNscywgc3RhcnQsIGVuZCk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
Q29uc3RTdGF0ZW1lbnQobG9jYXRpb24sIGNvbnN0RGVjbHMsIHN0YXJ0LCBlbmQpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMjEwLDYgKzIxMiw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VEb1doaWxlU3RhdGVtCiAgICAgZW5kTG9vcCgpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVu
dCk7CiAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBKU1Rva2VuTG9jYXRpb24g
bG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBjb25zdW1lT3JGYWlsKFdISUxFKTsKICAg
ICBjb25zdW1lT3JGYWlsKE9QRU5QQVJFTik7CiAgICAgVHJlZUV4cHJlc3Npb24gZXhwciA9IHBh
cnNlRXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTIxNywxMyArMjIwLDE0IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VE
b1doaWxlU3RhdGVtCiAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKICAgICBpZiAobWF0
Y2goU0VNSUNPTE9OKSkKICAgICAgICAgbmV4dCgpOyAvLyBBbHdheXMgcGVyZm9ybXMgYXV0b21h
dGljIHNlbWljb2xvbiBpbnNlcnRpb24uCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRG9XaGls
ZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBzdGF0ZW1lbnQsIGV4cHIsIHN0
YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRG9XaGlsZVN0YXRl
bWVudChsb2NhdGlvbiwgc3RhdGVtZW50LCBleHByLCBzdGFydExpbmUsIGVuZExpbmUpOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVdoaWxlU3RhdGVtZW50
KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChXSElMRSkpOworICAg
IEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBzdGFy
dExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVO
UEFSRU4pOwpAQCAtMjM2LDcgKzI0MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaGlsZVN0YXRlbWVuCiAgICAg
VHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQp
OwogICAgIGVuZExvb3AoKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwotICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZVdoaWxlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IGV4cHIsIHN0YXRlbWVudCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVXaGlsZVN0YXRlbWVudChsb2NhdGlvbiwgZXhwciwgc3RhdGVtZW50LCBzdGFydExp
bmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMjQ1
LDYgKzI0OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpCiAgICAgVHJlZUV4cHJlc3Npb24g
dmFyRGVjbHMgPSAwOwogICAgIGRvIHsKICAgICAgICAgZGVjbGFyYXRpb25zKys7CisgICAgICAg
IEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0
KCk7CiAgICAgICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICAgICAgCkBAIC0yNjUsMTEgKzI3
MCwxMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xhcmF0aQogICAgICAgICAgICAgbGFzdEluaXRpYWxp
emVyID0gaW5pdGlhbGl6ZXI7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShpbml0aWFsaXplcik7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBjb250ZXh0
LmNyZWF0ZUFzc2lnblJlc29sdmUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgKm5hbWUsIGlu
aXRpYWxpemVyLCB2YXJTdGFydCwgdmFyRGl2b3QsIGxhc3RUb2tlbkVuZCgpKTsKKyAgICAgICAg
ICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBjb250ZXh0LmNyZWF0ZUFzc2lnblJlc29sdmUobG9j
YXRpb24sICpuYW1lLCBpbml0aWFsaXplciwgdmFyU3RhcnQsIHZhckRpdm90LCBsYXN0VG9rZW5F
bmQoKSk7CiAgICAgICAgICAgICBpZiAoIXZhckRlY2xzKQogICAgICAgICAgICAgICAgIHZhckRl
Y2xzID0gbm9kZTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB2YXJEZWNscyA9
IGNvbnRleHQuY29tYmluZUNvbW1hTm9kZXMobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdmFy
RGVjbHMsIG5vZGUpOworICAgICAgICAgICAgICAgIHZhckRlY2xzID0gY29udGV4dC5jb21iaW5l
Q29tbWFOb2Rlcyhsb2NhdGlvbiwgdmFyRGVjbHMsIG5vZGUpOwogICAgICAgICB9CiAgICAgfSB3
aGlsZSAobWF0Y2goQ09NTUEpKTsKICAgICByZXR1cm4gdmFyRGVjbHM7CkBAIC0yODIsNiArMjg3
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ29uc3REZWNsTGlzdCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb25zdERlY2wKICAgICBUcmVlQ29uc3REZWNsTGlzdCBjb25z
dERlY2xzID0gMDsKICAgICBUcmVlQ29uc3REZWNsTGlzdCB0YWlsID0gMDsKICAgICBkbyB7Cisg
ICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAg
ICBuZXh0KCk7CiAgICAgICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciogbmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwpAQCAtMjk0LDcgKzMwMCw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNvbnN0RGVjbExpc3QgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlQ29uc3REZWNsCiAgICAgICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpE
b250QnVpbGRTdHJpbmdzKTsgLy8gY29uc3VtZSAnPScKICAgICAgICAgICAgIGluaXRpYWxpemVy
ID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgfQotICAgICAg
ICB0YWlsID0gY29udGV4dC5hcHBlbmRDb25zdERlY2wobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgdGFpbCwgbmFtZSwgaW5pdGlhbGl6ZXIpOworICAgICAgICB0YWlsID0gY29udGV4dC5hcHBl
bmRDb25zdERlY2wobG9jYXRpb24sIHRhaWwsIG5hbWUsIGluaXRpYWxpemVyKTsKICAgICAgICAg
aWYgKCFjb25zdERlY2xzKQogICAgICAgICAgICAgY29uc3REZWNscyA9IHRhaWw7CiAgICAgfSB3
aGlsZSAobWF0Y2goQ09NTUEpKTsKQEAgLTMwNSw2ICszMTEsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4
dCkKIHsKICAgICBBU1NFUlQobWF0Y2goRk9SKSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0
aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwog
ICAgIG5leHQoKTsKICAgICBjb25zdW1lT3JGYWlsKE9QRU5QQVJFTik7CkBAIC0zNTIsNyArMzU5
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUZvclN0YXRlbWVudCgKICAgICAgICAgZW5kTG9vcCgpOwogICAgICAg
ICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgICAgICAKLSAgICAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlRm9ySW5Mb29wKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGZvckluVGFyZ2V0
LCBmb3JJbkluaXRpYWxpemVyLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGluTG9jYXRp
b24sIGV4cHJFbmQsIGluaXRTdGFydCwgaW5pdEVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKGxvY2F0aW9uLCBmb3JJblRhcmdl
dCwgZm9ySW5Jbml0aWFsaXplciwgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBpbkxvY2F0
aW9uLCBleHByRW5kLCBpbml0U3RhcnQsIGluaXRFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiAg
ICAgfQogICAgIAogICAgIGlmICghbWF0Y2goU0VNSUNPTE9OKSkgewpAQCAtMzg4LDcgKzM5NSw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVt
ZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICAgICAgZW5kTG9vcCgp
OwogICAgICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwotICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVGb3JMb29wKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGRlY2xzLCBjb25kaXRp
b24sIGluY3JlbWVudCwgc3RhdGVtZW50LCBzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVGb3JMb29wKGxvY2F0aW9uLCBkZWNscywgY29uZGl0aW9uLCBp
bmNyZW1lbnQsIHN0YXRlbWVudCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICB9CiAgICAgCiAg
ICAgLy8gRm9yLWluIGxvb3AKQEAgLTQwNSwxMyArNDEyLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0
ZW1lbnQoCiAgICAgZW5kTG9vcCgpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAg
Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIGRlY2xzLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBleHBy
RW5kLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvcklu
TG9vcChsb2NhdGlvbiwgZGVjbHMsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgZGVjbHNF
bmQsIGV4cHJFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQnJlYWtTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRl
eHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKEJSRUFLKSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxv
Y2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgaW50IHN0YXJ0Q29sID0gdG9rZW5TdGFydCgp
OwogICAgIGludCBlbmRDb2wgPSB0b2tlbkVuZCgpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tl
bkxpbmUoKTsKQEAgLTQyMCw3ICs0MjgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQnJlYWtTdGF0ZW1lbgogICAg
IAogICAgIGlmIChhdXRvU2VtaUNvbG9uKCkpIHsKICAgICAgICAgZmFpbElmRmFsc2VXaXRoTWVz
c2FnZShicmVha0lzVmFsaWQoKSwgIidicmVhaycgaXMgb25seSB2YWxpZCBpbnNpZGUgYSBzd2l0
Y2ggb3IgbG9vcCBzdGF0ZW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQnJl
YWtTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RhcnRDb2wsIGVuZENvbCwg
c3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQnJlYWtT
dGF0ZW1lbnQobG9jYXRpb24sIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7
CiAgICAgfQogICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwpAQCAtNDI5LDEzICs0MzcsMTQgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUJyZWFrU3RhdGVtZW4KICAgICBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgp
OwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlQnJlYWtTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgaWRlbnQsIHN0
YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlQnJlYWtTdGF0ZW1lbnQobG9jYXRpb24sIGlkZW50LCBzdGFydENvbCwgZW5kQ29sLCBz
dGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgog
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUNvbnRpbnVlU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAg
IEFTU0VSVChtYXRjaChDT05USU5VRSkpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0
b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBzdGFydENvbCA9IHRva2VuU3RhcnQoKTsKICAgICBp
bnQgZW5kQ29sID0gdG9rZW5FbmQoKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7
CkBAIC00NDQsNyArNDUzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnRpbnVlU3RhdGUKICAgICAKICAgICBp
ZiAoYXV0b1NlbWlDb2xvbigpKSB7CiAgICAgICAgIGZhaWxJZkZhbHNlV2l0aE1lc3NhZ2UoY29u
dGludWVJc1ZhbGlkKCksICInY29udGludWUnIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGEgbG9vcCBz
dGF0ZW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1l
bnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5l
LCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1l
bnQobG9jYXRpb24sIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiAgICAg
fQogICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9
IG1fdG9rZW4ubV9kYXRhLmlkZW50OwpAQCAtNDU1LDEzICs0NjQsMTQgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNv
bnRpbnVlU3RhdGUKICAgICBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogICAg
IGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
Q29udGludWVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgaWRlbnQsIHN0YXJ0
Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlQ29udGludWVTdGF0ZW1lbnQobG9jYXRpb24sIGlkZW50LCBzdGFydENvbCwgZW5kQ29sLCBz
dGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgog
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZVJldHVyblN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBB
U1NFUlQobWF0Y2goUkVUVVJOKSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2Vu
TG9jYXRpb24oKSk7CiAgICAgZmFpbElmRmFsc2UoY3VycmVudFNjb3BlKCktPmlzRnVuY3Rpb24o
KSk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIGludCBlbmRMaW5lID0g
c3RhcnRMaW5lOwpAQCAtNDc0LDIwICs0ODQsMjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVJldHVyblN0YXRlbWUK
ICAgICBpZiAobWF0Y2goU0VNSUNPTE9OKSkKICAgICAgICAgZW5kTGluZSAgPSB0b2tlbkxpbmUo
KTsKICAgICBpZiAoYXV0b1NlbWlDb2xvbigpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVSZXR1cm5TdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgMCwgc3RhcnQsIGVu
ZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0
dXJuU3RhdGVtZW50KGxvY2F0aW9uLCAwLCBzdGFydCwgZW5kLCBzdGFydExpbmUsIGVuZExpbmUp
OwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAg
ICAgZmFpbElmRmFsc2UoZXhwcik7CiAgICAgZW5kID0gbGFzdFRva2VuRW5kKCk7CiAgICAgaWYg
KG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIGVuZExpbmUgID0gdG9rZW5MaW5lKCk7CiAgICAg
ZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVS
ZXR1cm5TdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgc3RhcnQsIGVu
ZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXR1cm5T
dGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7
CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVGhyb3dTdGF0
ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFRIUk9XKSk7
CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgaW50
IGVTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7
CiAgICAgbmV4dCgpOwpAQCAtNTAwLDEzICs1MTEsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVRocm93U3RhdGVt
ZW4KICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9T
ZW1pQ29sb24oKSk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVGhyb3dTdGF0ZW1l
bnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgZVN0YXJ0LCBlRW5kLCBzdGFydExp
bmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVRocm93U3RhdGVtZW50KGxv
Y2F0aW9uLCBleHByLCBlU3RhcnQsIGVFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlV2l0aFN0YXRlbWVudChUcmVl
QnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goV0lUSCkpOworICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGZhaWxJZlRydWVXaXRo
TWVzc2FnZShzdHJpY3RNb2RlKCksICInd2l0aCcgc3RhdGVtZW50cyBhcmUgbm90IHZhbGlkIGlu
IHN0cmljdCBtb2RlIik7CiAgICAgY3VycmVudFNjb3BlKCktPnNldE5lZWRzRnVsbEFjdGl2YXRp
b24oKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CkBAIC01MjMsMTMgKzUzNSwx
NCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlV2l0aFN0YXRlbWVudAogICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50
ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICBmYWlsSWZGYWxzZShzdGF0
ZW1lbnQpOwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVdpdGhTdGF0ZW1lbnQobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgc3RhdGVtZW50LCBzdGFydCwgZW5kLCBzdGFy
dExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVdpdGhTdGF0ZW1lbnQo
bG9jYXRpb24sIGV4cHIsIHN0YXRlbWVudCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5l
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTd2l0Y2hT
dGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFNXSVRD
SCkpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAg
IGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgY29uc3VtZU9y
RmFpbChPUEVOUEFSRU4pOwpAQCAtNTUwLDcgKzU2Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTd2l0Y2hTdGF0
ZW1lCiAgICAgZW5kU3dpdGNoKCk7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFKTsKICAg
ICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwgZXhwciwgZmlyc3RDbGF1c2VzLCBkZWZhdWx0Q2xhdXNlLCBzZWNvbmRD
bGF1c2VzLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVN3
aXRjaFN0YXRlbWVudChsb2NhdGlvbiwgZXhwciwgZmlyc3RDbGF1c2VzLCBkZWZhdWx0Q2xhdXNl
LCBzZWNvbmRDbGF1c2VzLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIAogfQogCkBAIC01OTgs
NiArNjExLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VUcnlT
dGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFRSWSkp
OworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIFRy
ZWVTdGF0ZW1lbnQgdHJ5QmxvY2sgPSAwOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0g
Jm1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7CiAgICAgVHJlZVN0
YXRlbWVudCBjYXRjaEJsb2NrID0gMDsKQEAgLTYzNCwzNyArNjQ4LDM5IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VU
cnlTdGF0ZW1lbnQoCiAgICAgICAgIGZhaWxJZkZhbHNlKGZpbmFsbHlCbG9jayk7CiAgICAgfQog
ICAgIGZhaWxJZkZhbHNlKGNhdGNoQmxvY2sgfHwgZmluYWxseUJsb2NrKTsKLSAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVUcnlTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdHJ5
QmxvY2ssIGlkZW50LCBjYXRjaEJsb2NrLCBmaW5hbGx5QmxvY2ssIGZpcnN0TGluZSwgbGFzdExp
bmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVRyeVN0YXRlbWVudChsb2NhdGlvbiwgdHJ5
QmxvY2ssIGlkZW50LCBjYXRjaEJsb2NrLCBmaW5hbGx5QmxvY2ssIGZpcnN0TGluZSwgbGFzdExp
bmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlYnVn
Z2VyU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChE
RUJVR0dFUikpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQgZW5kTGluZSA9IHN0
YXJ0TGluZTsKICAgICBuZXh0KCk7CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAg
IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24o
KSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRGVidWdnZXIobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVE
ZWJ1Z2dlcihsb2NhdGlvbiwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VCbG9ja1N0YXRlbWVudChUcmVlQnVpbGRlciYg
Y29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goT1BFTkJSQUNFKSk7CisgICAgSlNUb2tlbkxv
Y2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgaW50IHN0YXJ0ID0gdG9rZW5M
aW5lKCk7CiAgICAgbmV4dCgpOwogICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkgewogICAgICAg
ICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2NrU3RhdGVtZW50KG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIDAsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKKyAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobG9jYXRpb24sIDAsIHN0YXJ0LCBt
X2xhc3RMaW5lKTsKICAgICB9CiAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN1YnRyZWUgPSBwYXJz
ZVNvdXJjZUVsZW1lbnRzPERvbnRDaGVja0ZvclN0cmljdE1vZGU+KGNvbnRleHQpOwogICAgIGZh
aWxJZkZhbHNlKHN1YnRyZWUpOwogICAgIG1hdGNoT3JGYWlsKENMT1NFQlJBQ0UpOwogICAgIG5l
eHQoKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCbG9ja1N0YXRlbWVudChtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCBzdWJ0cmVlLCBzdGFydCwgbV9sYXN0TGluZSk7CisgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobG9jYXRpb24sIHN1YnRyZWUsIHN0YXJ0LCBt
X2xhc3RMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTY4NSw5
ICs3MDEsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudChUcmUKICAgICBjYXNlIEZVTkNUSU9OOgog
ICAgICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0V2l0aE1lc3NhZ2UobV9zdGF0ZW1lbnREZXB0aCA9
PSAxLCAiRnVuY3Rpb25zIGNhbm5vdCBiZSBkZWNsYXJlZCBpbiBhIG5lc3RlZCBibG9jayBpbiBz
dHJpY3QgbW9kZSIpOwogICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKGNv
bnRleHQpOwotICAgIGNhc2UgU0VNSUNPTE9OOgorICAgIGNhc2UgU0VNSUNPTE9OOiB7CisgICAg
ICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBu
ZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUVtcHR5U3RhdGVtZW50KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCkpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFbXB0
eVN0YXRlbWVudChsb2NhdGlvbik7CisgICAgfQogICAgIGNhc2UgSUY6CiAgICAgICAgIHJldHVy
biBwYXJzZUlmU3RhdGVtZW50KGNvbnRleHQpOwogICAgIGNhc2UgRE86CkBAIC03MjMsNyArNzQx
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudChUcmUKICAgICBjYXNlIFNUUklORzoKICAgICAgICAg
ZGlyZWN0aXZlID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIGlmIChkaXJlY3RpdmVM
aXRlcmFsTGVuZ3RoKQotICAgICAgICAgICAgKmRpcmVjdGl2ZUxpdGVyYWxMZW5ndGggPSBtX3Rv
a2VuLm1faW5mby5lbmRPZmZzZXQgLSBtX3Rva2VuLm1faW5mby5zdGFydE9mZnNldDsKKyAgICAg
ICAgICAgICpkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gbV90b2tlbi5tX2xvY2F0aW9uLmVuZE9m
ZnNldCAtIG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKICAgICAgICAgbm9uVHJpdmlh
bEV4cHJlc3Npb25Db3VudCA9IG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudDsKICAgICBkZWZh
dWx0OgogICAgICAgICBUcmVlU3RhdGVtZW50IGV4cHJTdGF0ZW1lbnQgPSBwYXJzZUV4cHJlc3Np
b25TdGF0ZW1lbnQoY29udGV4dCk7CkBAIC03NTYsMTIgKzc3NCwxMiBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rp
b25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keShUcmVlQnVpbGRlciYg
Y29udGV4dCkKIHsKICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpCi0gICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBzdHJp
Y3RNb2RlKCkpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkodG9r
ZW5Mb2NhdGlvbigpLCBzdHJpY3RNb2RlKCkpOwogICAgIERlcHRoTWFuYWdlciBzdGF0ZW1lbnRE
ZXB0aCgmbV9zdGF0ZW1lbnREZXB0aCk7CiAgICAgbV9zdGF0ZW1lbnREZXB0aCA9IDA7CiAgICAg
dHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZ1bmN0aW9uQm9keUJ1aWxkZXIgYm9keUJ1aWxkZXIoY29u
c3RfY2FzdDxKU0dsb2JhbERhdGEqPihtX2dsb2JhbERhdGEpLCBtX2xleGVyLmdldCgpKTsKICAg
ICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzPENoZWNrRm9yU3RyaWN0TW9kZT4oYm9k
eUJ1aWxkZXIpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgc3RyaWN0TW9kZSgpKTsKKyAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVGdW5jdGlvbkJvZHkodG9rZW5Mb2NhdGlvbigpLCBzdHJpY3RNb2RlKCkpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtNzg2LDIwICs4MDQsMjEgQEAgdGVtcGxh
dGUgPEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgYm9vbCBuYW1lSXNJbkNvbnRh
aW5pbmdTY29wZSwgY2xhc3MKICAgICAKICAgICBvcGVuQnJhY2VQb3MgPSBtX3Rva2VuLm1fZGF0
YS5pbnRWYWx1ZTsKICAgICBib2R5U3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgSlNUb2tl
bkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgCiAgICAgLy8gSWYgd2Ug
a25vdyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdlIGNhbiB1c2UgdGhlIGNhY2hlZCBp
bmZvIGFuZCBza2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0aGUgZnVuY3Rpb24uCiAgICAg
aWYgKGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBjYWNoZWRJbmZvID0gVHJlZUJ1aWxk
ZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUgPyBmaW5kQ2FjaGVkRnVuY3Rpb25JbmZvKG9wZW5CcmFj
ZVBvcykgOiAwKSB7CiAgICAgICAgIC8vIElmIHdlJ3JlIGluIGEgc3RyaWN0IGNvbnRleHQsIHRo
ZSBjYWNoZWQgZnVuY3Rpb24gaW5mbyBtdXN0IHNheSBpdCB3YXMgc3RyaWN0IHRvby4KICAgICAg
ICAgQVNTRVJUKCFzdHJpY3RNb2RlKCkgfHwgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7Ci0gICAg
ICAgIGJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlKTsKKyAgICAgICAgYm9keSA9IGNvbnRleHQu
Y3JlYXRlRnVuY3Rpb25Cb2R5KGxvY2F0aW9uLCBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlKTsKICAg
ICAgICAgCiAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGdW5jdGlvbkluZm8oY2FjaGVk
SW5mbyk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBvcFNjb3BlKGZ1bmN0aW9uU2NvcGUsIFRyZWVC
dWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pKTsKICAgICAgICAgCiAgICAgICAgIGNsb3Nl
QnJhY2VQb3MgPSBjYWNoZWRJbmZvLT5jbG9zZUJyYWNlUG9zOwogICAgICAgICBtX3Rva2VuID0g
Y2FjaGVkSW5mby0+Y2xvc2VCcmFjZVRva2VuKCk7Ci0gICAgICAgIG1fbGV4ZXItPnNldE9mZnNl
dChtX3Rva2VuLm1faW5mby5lbmRPZmZzZXQpOwotICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVt
YmVyKG1fdG9rZW4ubV9pbmZvLmxpbmUpOworICAgICAgICBtX2xleGVyLT5zZXRPZmZzZXQobV90
b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldCk7CisgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1i
ZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICAKICAgICAgICAgbmV4dCgpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTgyMSw3ICs4NDAsNyBAQCB0ZW1wbGF0ZSA8RnVuY3Rp
b25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3Bl
LCBjbGFzcwogICAgIE93blB0cjxTb3VyY2VQcm92aWRlckNhY2hlSXRlbT4gbmV3SW5mbzsKICAg
ICBpbnQgZnVuY3Rpb25MZW5ndGggPSBjbG9zZUJyYWNlUG9zIC0gb3BlbkJyYWNlUG9zOwogICAg
IGlmIChUcmVlQnVpbGRlcjo6Q2FuVXNlRnVuY3Rpb25DYWNoZSAmJiBtX2Z1bmN0aW9uQ2FjaGUg
JiYgZnVuY3Rpb25MZW5ndGggPiBtaW5pbXVtRnVuY3Rpb25MZW5ndGhUb0NhY2hlKSB7Ci0gICAg
ICAgIG5ld0luZm8gPSBhZG9wdFB0cihuZXcgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0obV90b2tl
bi5tX2luZm8ubGluZSwgY2xvc2VCcmFjZVBvcykpOworICAgICAgICBuZXdJbmZvID0gYWRvcHRQ
dHIobmV3IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lLCBj
bG9zZUJyYWNlUG9zKSk7CiAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnNhdmVGdW5jdGlvbkluZm8o
bmV3SW5mby5nZXQoKSk7CiAgICAgfQogICAgIApAQCAtODQxLDYgKzg2MCw3IEBAIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihUcmVl
QnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goRlVOQ1RJT04pKTsKKyAgICBK
U1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBuZXh0KCk7CiAg
ICAgY29uc3QgSWRlbnRpZmllciogbmFtZSA9IDA7CiAgICAgVHJlZUZvcm1hbFBhcmFtZXRlckxp
c3QgcGFyYW1ldGVycyA9IDA7CkBAIC04NTEsNyArODcxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
RGVjbGEKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25OZWVkc05h
bWUsIHRydWU+KGNvbnRleHQsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywg
Y2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSkpKTsKICAgICBmYWlsSWZGYWxzZShuYW1lKTsK
ICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0KGRlY2xhcmVWYXJpYWJsZShuYW1lKSk7Ci0gICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9z
LCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVG
dW5jRGVjbFN0YXRlbWVudChsb2NhdGlvbiwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJy
YWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKIH0KIAog
c3RydWN0IExhYmVsSW5mbyB7CkBAIC04NzUsMTAgKzg5NSwxMSBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVz
c2lvbk9yTAogICAgICAqIHNwZWNpYWwgY2FzZSB0aGF0IGxvb2tzIGZvciBhIGNvbG9uIGFzIHRo
ZSBuZXh0IGNoYXJhY3RlciBpbiB0aGUgaW5wdXQuCiAgICAgICovCiAgICAgVmVjdG9yPExhYmVs
SW5mbz4gbGFiZWxzOwotICAgIAorICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbjsKICAgICBk
byB7CiAgICAgICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICAgICAgaW50IHN0YXJ0
TGluZSA9IHRva2VuTGluZSgpOworICAgICAgICBsb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsK
ICAgICAgICAgaWYgKCFuZXh0VG9rZW5Jc0NvbG9uKCkpIHsKICAgICAgICAgICAgIC8vIElmIHdl
IGhpdCB0aGlzIHBhdGggd2UncmUgbWFraW5nIGEgZXhwcmVzc2lvbiBzdGF0ZW1lbnQsIHdoaWNo
CiAgICAgICAgICAgICAvLyBieSBkZWZpbml0aW9uIGNhbid0IG1ha2UgdXNlIG9mIGNvbnRpbnVl
L2JyZWFrIHNvIHdlIGNhbiBqdXN0CkBAIC04ODYsNyArOTA3LDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJl
c3Npb25PckwKICAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIGV4cHJlc3Npb24gPSBwYXJzZUV4
cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShleHByZXNzaW9uKTsK
ICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGV4cHJlc3Npb24sIHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KGxvY2F0aW9uLCBleHByZXNzaW9uLCBzdGFy
dExpbmUsIG1fbGFzdExpbmUpOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIGludCBlbmQgPSB0b2tlbkVu
ZCgpOwpAQCAtOTI1LDcgKzk0Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uT3JMCiAgICAgZmFp
bElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxhYmVscy5z
aXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBMYWJlbEluZm8mIGluZm8gPSBsYWJlbHNbbGFi
ZWxzLnNpemUoKSAtIGkgLSAxXTsKLSAgICAgICAgc3RhdGVtZW50ID0gY29udGV4dC5jcmVhdGVM
YWJlbFN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBpbmZvLm1faWRlbnQsIHN0
YXRlbWVudCwgaW5mby5tX3N0YXJ0LCBpbmZvLm1fZW5kKTsKKyAgICAgICAgc3RhdGVtZW50ID0g
Y29udGV4dC5jcmVhdGVMYWJlbFN0YXRlbWVudChsb2NhdGlvbiwgaW5mby5tX2lkZW50LCBzdGF0
ZW1lbnQsIGluZm8ubV9zdGFydCwgaW5mby5tX2VuZCk7CiAgICAgfQogICAgIHJldHVybiBzdGF0
ZW1lbnQ7CiB9CkBAIC05MzQsMTcgKzk1NSwxOCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQp
CiB7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgIEpTVG9rZW5Mb2NhdGlv
biBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHJlc3Np
b24gPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcmVzc2lv
bik7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVFeHByU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHJlc3Np
b24sIHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhw
clN0YXRlbWVudChsb2NhdGlvbiwgZXhwcmVzc2lvbiwgc3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJZlN0YXRlbWVu
dChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goSUYpKTsKLSAgICAK
KyAgICBKU1Rva2VuTG9jYXRpb24gaWZMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGlu
dCBzdGFydCA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICAKQEAgLTk2MCwxMyArOTgy
LDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VJZlN0YXRlbWVudChUCiAgICAgZmFpbElmRmFsc2UodHJ1ZUJsb2Nr
KTsKICAgICAKICAgICBpZiAoIW1hdGNoKEVMU0UpKQotICAgICAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVJZlN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjb25kaXRpb24sIHRy
dWVCbG9jaywgc3RhcnQsIGVuZCk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUlmU3Rh
dGVtZW50KGlmTG9jYXRpb24sIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBzdGFydCwgZW5kKTsKICAg
ICAKICAgICBWZWN0b3I8VHJlZUV4cHJlc3Npb24+IGV4cHJTdGFjazsKICAgICBWZWN0b3I8cGFp
cjxpbnQsIGludD4gPiBwb3NTdGFjazsKKyAgICBWZWN0b3I8SlNUb2tlbkxvY2F0aW9uPiB0b2tl
bkxvY2F0aW9uU3RhY2s7CiAgICAgVmVjdG9yPFRyZWVTdGF0ZW1lbnQ+IHN0YXRlbWVudFN0YWNr
OwogICAgIGJvb2wgdHJhaWxpbmdFbHNlID0gZmFsc2U7CiAgICAgZG8geworICAgICAgICB0b2tl
bkxvY2F0aW9uU3RhY2suYXBwZW5kKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsK
ICAgICAgICAgaWYgKCFtYXRjaChJRikpIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIq
IHVudXNlZCA9IDA7CkBAIC05OTIsNyArMTAxNiw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJZlN0YXRlbWVudChU
CiAgICAgICAgIHBvc1N0YWNrLmFwcGVuZChtYWtlX3BhaXIoaW5uZXJTdGFydCwgaW5uZXJFbmQp
KTsKICAgICAgICAgc3RhdGVtZW50U3RhY2suYXBwZW5kKGlubmVyVHJ1ZUJsb2NrKTsKICAgICB9
IHdoaWxlIChtYXRjaChFTFNFKSk7Ci0gICAgCisKICAgICBpZiAoIXRyYWlsaW5nRWxzZSkgewog
ICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb25kaXRpb24gPSBleHByU3RhY2subGFzdCgpOwogICAg
ICAgICBleHByU3RhY2sucmVtb3ZlTGFzdCgpOwpAQCAtMTAwMCw3ICsxMDI0LDkgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUlmU3RhdGVtZW50KFQKICAgICAgICAgc3RhdGVtZW50U3RhY2sucmVtb3ZlTGFzdCgpOwog
ICAgICAgICBwYWlyPGludCwgaW50PiBwb3MgPSBwb3NTdGFjay5sYXN0KCk7CiAgICAgICAgIHBv
c1N0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgc3RhdGVtZW50U3RhY2suYXBwZW5kKGNvbnRl
eHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZGl0aW9u
LCB0cnVlQmxvY2ssIHBvcy5maXJzdCwgcG9zLnNlY29uZCkpOworICAgICAgICBKU1Rva2VuTG9j
YXRpb24gZWxzZUxvY2F0aW9uID0gdG9rZW5Mb2NhdGlvblN0YWNrLmxhc3QoKTsKKyAgICAgICAg
dG9rZW5Mb2NhdGlvblN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgc3RhdGVtZW50U3RhY2su
YXBwZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQoZWxzZUxvY2F0aW9uLCBjb25kaXRpb24s
IHRydWVCbG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vjb25kKSk7CiAgICAgfQogICAgIAogICAgIHdo
aWxlICghZXhwclN0YWNrLmlzRW1wdHkoKSkgewpAQCAtMTAxMiwxNiArMTAzOCwxOSBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlSWZTdGF0ZW1lbnQoVAogICAgICAgICBzdGF0ZW1lbnRTdGFjay5yZW1vdmVMYXN0KCk7
CiAgICAgICAgIHBhaXI8aW50LCBpbnQ+IHBvcyA9IHBvc1N0YWNrLmxhc3QoKTsKICAgICAgICAg
cG9zU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICBzdGF0ZW1lbnRTdGFjay5hcHBlbmQoY29u
dGV4dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjb25kaXRp
b24sIHRydWVCbG9jaywgZmFsc2VCbG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vjb25kKSk7CisgICAg
ICAgIEpTVG9rZW5Mb2NhdGlvbiBlbHNlTG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uU3RhY2subGFz
dCgpOworICAgICAgICB0b2tlbkxvY2F0aW9uU3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICBz
dGF0ZW1lbnRTdGFjay5hcHBlbmQoY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChlbHNlTG9jYXRp
b24sIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBmYWxzZUJsb2NrLCBwb3MuZmlyc3QsIHBvcy5zZWNv
bmQpKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXRlbWVu
dFN0YWNrLmxhc3QoKSwgc3RhcnQsIGVuZCk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlSWZT
dGF0ZW1lbnQoaWZMb2NhdGlvbiwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXRlbWVudFN0YWNr
Lmxhc3QoKSwgc3RhcnQsIGVuZCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+
CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUV4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgZmFp
bElmU3RhY2tPdmVyZmxvdygpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxv
Y2F0aW9uKCkpOwogICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2lnbm1lbnRFeHBy
ZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKG5vZGUpOwogICAgIGlmICghbWF0Y2go
Q09NTUEpKQpAQCAtMTAzMSw3ICsxMDYwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uKFQKICAg
ICBtX25vbkxIU0NvdW50Kys7CiAgICAgVHJlZUV4cHJlc3Npb24gcmlnaHQgPSBwYXJzZUFzc2ln
bm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHJpZ2h0KTsKLSAgICB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6Q29tbWEgY29tbWFOb2RlID0gY29udGV4dC5jcmVhdGVDb21t
YUV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgbm9kZSwgcmlnaHQpOworICAgIHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpDb21tYSBjb21tYU5vZGUgPSBjb250ZXh0LmNyZWF0ZUNvbW1hRXhw
cihsb2NhdGlvbiwgbm9kZSwgcmlnaHQpOwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAg
ICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAgICAgICAgIHJpZ2h0
ID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTEwNDYsNiArMTA3NSw3
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVuCiB7CiAgICAgZmFpbElmU3RhY2tPdmVyZmxvdygp
OwogICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9j
YXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCA9
IG1fYXNzaWdubWVudENvdW50OwogICAgIGludCBpbml0aWFsTm9uTEhTQ291bnQgPSBtX25vbkxI
U0NvdW50OwogICAgIFRyZWVFeHByZXNzaW9uIGxocyA9IHBhcnNlQ29uZGl0aW9uYWxFeHByZXNz
aW9uKGNvbnRleHQpOwpAQCAtMTA5OCw3ICsxMTI4LDcgQEAgZW5kOgogICAgICAgICByZXR1cm4g
bGhzOwogICAgIAogICAgIHdoaWxlIChhc3NpZ25tZW50U3RhY2spCi0gICAgICAgIGxocyA9IGNv
bnRleHQuY3JlYXRlQXNzaWdubWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBhc3NpZ25t
ZW50U3RhY2ssIGxocywgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50Q291bnQs
IGxhc3RUb2tlbkVuZCgpKTsKKyAgICAgICAgbGhzID0gY29udGV4dC5jcmVhdGVBc3NpZ25tZW50
KGxvY2F0aW9uLCBhc3NpZ25tZW50U3RhY2ssIGxocywgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwg
bV9hc3NpZ25tZW50Q291bnQsIGxhc3RUb2tlbkVuZCgpKTsKICAgICAKICAgICByZXR1cm4gbGhz
OwogfQpAQCAtMTEwNiw2ICsxMTM2LDcgQEAgZW5kOgogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVy
VHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250
ZXh0KQogeworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwog
ICAgIFRyZWVFeHByZXNzaW9uIGNvbmQgPSBwYXJzZUJpbmFyeUV4cHJlc3Npb24oY29udGV4dCk7
CiAgICAgZmFpbElmRmFsc2UoY29uZCk7CiAgICAgaWYgKCFtYXRjaChRVUVTVElPTikpCkBAIC0x
MTE4LDcgKzExNDksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbmRpdGlvbmFsRQogICAgIAogICAgIFRyZWVF
eHByZXNzaW9uIHJocyA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAg
ZmFpbElmRmFsc2UocmhzKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDb25kaXRpb25hbEV4
cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZCwgbGhzLCByaHMpOworICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUNvbmRpdGlvbmFsRXhwcihsb2NhdGlvbiwgY29uZCwgbGhzLCByaHMp
OwogfQogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0
b2tlbikKQEAgLTExNDEsNiArMTE3Miw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQmluYXJ5RXhwcmVzCiAgICAg
aW50IG9wZXJhbmRTdGFja0RlcHRoID0gMDsKICAgICBpbnQgb3BlcmF0b3JTdGFja0RlcHRoID0g
MDsKICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5RXhwckNvbnRleHQgYmluYXJ5RXhw
ckNvbnRleHQoY29udGV4dCk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9j
YXRpb24oKSk7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgaW50IGV4cHJTdGFydCA9IHRv
a2VuU3RhcnQoKTsKICAgICAgICAgaW50IGluaXRpYWxBc3NpZ25tZW50cyA9IG1fYXNzaWdubWVu
dENvdW50OwpAQCAtMTE2Miw3ICsxMTk0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VCaW5hcnlFeHByZXMKICAg
ICAgICAgICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpCaW5hcnlPcGVyYW5kIHJocyA9IGNvbnRl
eHQuZ2V0RnJvbU9wZXJhbmRTdGFjaygtMSk7CiAgICAgICAgICAgICB0eXBlbmFtZSBUcmVlQnVp
bGRlcjo6QmluYXJ5T3BlcmFuZCBsaHMgPSBjb250ZXh0LmdldEZyb21PcGVyYW5kU3RhY2soLTIp
OwogICAgICAgICAgICAgY29udGV4dC5zaHJpbmtPcGVyYW5kU3RhY2tCeShvcGVyYW5kU3RhY2tE
ZXB0aCwgMik7Ci0gICAgICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9wZXJhdGlvbihtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCBvcGVyYW5kU3RhY2tEZXB0aCwgb3BlcmF0b3JTdGFja0Rl
cHRoLCBsaHMsIHJocyk7CisgICAgICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9wZXJhdGlv
bihsb2NhdGlvbiwgb3BlcmFuZFN0YWNrRGVwdGgsIG9wZXJhdG9yU3RhY2tEZXB0aCwgbGhzLCBy
aHMpOwogICAgICAgICAgICAgY29udGV4dC5vcGVyYXRvclN0YWNrUG9wKG9wZXJhdG9yU3RhY2tE
ZXB0aCk7CiAgICAgICAgIH0KICAgICAgICAgY29udGV4dC5vcGVyYXRvclN0YWNrQXBwZW5kKG9w
ZXJhdG9yU3RhY2tEZXB0aCwgb3BlcmF0b3JUb2tlbiwgcHJlY2VkZW5jZSk7CkBAIC0xMTczLDcg
KzEyMDUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUJpbmFyeUV4cHJlcwogICAgICAgICB0eXBlbmFtZSBUcmVl
QnVpbGRlcjo6QmluYXJ5T3BlcmFuZCByaHMgPSBjb250ZXh0LmdldEZyb21PcGVyYW5kU3RhY2so
LTEpOwogICAgICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3BlcmFuZCBsaHMgPSBj
b250ZXh0LmdldEZyb21PcGVyYW5kU3RhY2soLTIpOwogICAgICAgICBjb250ZXh0LnNocmlua09w
ZXJhbmRTdGFja0J5KG9wZXJhbmRTdGFja0RlcHRoLCAyKTsKLSAgICAgICAgY29udGV4dC5hcHBl
bmRCaW5hcnlPcGVyYXRpb24obV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgb3BlcmFuZFN0YWNr
RGVwdGgsIG9wZXJhdG9yU3RhY2tEZXB0aCwgbGhzLCByaHMpOworICAgICAgICBjb250ZXh0LmFw
cGVuZEJpbmFyeU9wZXJhdGlvbihsb2NhdGlvbiwgb3BlcmFuZFN0YWNrRGVwdGgsIG9wZXJhdG9y
U3RhY2tEZXB0aCwgbGhzLCByaHMpOwogICAgICAgICBjb250ZXh0Lm9wZXJhdG9yU3RhY2tQb3Ao
b3BlcmF0b3JTdGFja0RlcHRoKTsKICAgICB9CiAgICAgcmV0dXJuIGNvbnRleHQucG9wT3BlcmFu
ZFN0YWNrKG9wZXJhbmRTdGFja0RlcHRoKTsKQEAgLTEyMjIsMTEgKzEyNTQsMTIgQEAgdGVtcGxh
dGUgPGJvb2wgY29tcGxldGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnMKICAgICAgICAgICAgIG51bWVyaWNQcm9wZXJ0eU5hbWUgPSBtX3Rv
a2VuLm1fZGF0YS5kb3VibGVWYWx1ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZmFpbCgp
OworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAg
ICAgICAgbmV4dCgpOwogICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVu
Y3Rpb25Ob1JlcXVpcmVtZW50cywgZmFsc2U+KGNvbnRleHQsIGFjY2Vzc29yTmFtZSwgcGFyYW1l
dGVycywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSkp
OwogICAgICAgICBpZiAoc3RyaW5nUHJvcGVydHlOYW1lKQotICAgICAgICAgICAgcmV0dXJuIGNv
bnRleHQudGVtcGxhdGUgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eTxjb21wbGV0ZT4obV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdHlwZSwgc3RyaW5nUHJvcGVydHlOYW1lLCBwYXJhbWV0
ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1f
bGFzdExpbmUpOwotICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJP
clNldHRlclByb3BlcnR5PGNvbXBsZXRlPihjb25zdF9jYXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xv
YmFsRGF0YSksIG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHR5cGUsIG51bWVyaWNQcm9wZXJ0
eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9k
eVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC50ZW1w
bGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihsb2NhdGlvbiwgdHlw
ZSwgc3RyaW5nUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNs
b3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOworICAgICAgICByZXR1cm4g
Y29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihj
b25zdF9jYXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xvYmFsRGF0YSksIGxvY2F0aW9uLCB0eXBlLCBu
dW1lcmljUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3Nl
QnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOwogICAgIH0KICAgICBjYXNlIE5V
TUJFUjogewogICAgICAgICBkb3VibGUgcHJvcGVydHlOYW1lID0gbV90b2tlbi5tX2RhdGEuZG91
YmxlVmFsdWU7CkBAIC0xMjQ5LDEyICsxMjgyLDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlT2JqZWN0TGl0ZXJh
CiAgICAgdW5zaWduZWQgb2xkTGFzdExpbmVOdW1iZXIgPSBtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpOwogICAgIHVuc2lnbmVkIG9sZExpbmVOdW1iZXIgPSBtX2xleGVyLT5saW5lTnVtYmVyKCk7
CiAgICAgY29uc3VtZU9yRmFpbFdpdGhGbGFncyhPUEVOQlJBQ0UsIFRyZWVCdWlsZGVyOjpEb250
QnVpbGRTdHJpbmdzKTsKLSAgICAKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5M
b2NhdGlvbigpKTsKKwogICAgIGludCBvbGROb25MSFNDb3VudCA9IG1fbm9uTEhTQ291bnQ7CiAg
ICAgCiAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgIG5leHQoKTsKLSAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChsb2Nh
dGlvbik7CiAgICAgfQogICAgIAogICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0eSA9IHBhcnNlUHJv
cGVydHk8ZmFsc2U+KGNvbnRleHQpOwpAQCAtMTI2NiwxMyArMTMwMCwxNCBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZU9iamVjdExpdGVyYQogICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG9sZExpbmVOdW1i
ZXIpOwogICAgICAgICByZXR1cm4gcGFyc2VTdHJpY3RPYmplY3RMaXRlcmFsKGNvbnRleHQpOwog
ICAgIH0KLSAgICBUcmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRl
UHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5KTsKKyAgICBU
cmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0
KGxvY2F0aW9uLCBwcm9wZXJ0eSk7CiAgICAgVHJlZVByb3BlcnR5TGlzdCB0YWlsID0gcHJvcGVy
dHlMaXN0OwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAgbmV4dChUcmVlQnVp
bGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAgICAgICAgIC8vIGFsbG93IGV4dHJhIGNvbW1hLCBz
ZWUgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkzOQogICAgICAgICBp
ZiAobWF0Y2goQ0xPU0VCUkFDRSkpCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgSlNUb2tl
bkxvY2F0aW9uIHByb3BlcnR5TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgcHJv
cGVydHkgPSBwYXJzZVByb3BlcnR5PGZhbHNlPihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFs
c2UocHJvcGVydHkpOwogICAgICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCAmJiBj
b250ZXh0LmdldFR5cGUocHJvcGVydHkpICE9IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpIHsKQEAg
LTEyODIsMTQgKzEzMTcsMTUgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VPYmplY3RMaXRlcmEKICAgICAgICAgICAg
IG1fbGV4ZXItPnNldExpbmVOdW1iZXIob2xkTGluZU51bWJlcik7CiAgICAgICAgICAgICByZXR1
cm4gcGFyc2VTdHJpY3RPYmplY3RMaXRlcmFsKGNvbnRleHQpOwogICAgICAgICB9Ci0gICAgICAg
IHRhaWwgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBwcm9wZXJ0eSwgdGFpbCk7CisgICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZVByb3Bl
cnR5TGlzdChwcm9wZXJ0eUxvY2F0aW9uLCBwcm9wZXJ0eSwgdGFpbCk7CiAgICAgfQotICAgIAor
CisgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgY29uc3VtZU9yRmFpbChDTE9T
RUJSQUNFKTsKICAgICAKICAgICBtX25vbkxIU0NvdW50ID0gb2xkTm9uTEhTQ291bnQ7CiAgICAg
Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBwcm9wZXJ0eUxpc3QpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVj
dExpdGVyYWwobG9jYXRpb24sIHByb3BlcnR5TGlzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CkBAIC0xMjk5LDkgKzEzMzUsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdHJpY3RPYmpl
Y3QKICAgICAKICAgICBpbnQgb2xkTm9uTEhTQ291bnQgPSBtX25vbkxIU0NvdW50OwogCisgICAg
SlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7ICAgIAogICAgIGlmICht
YXRjaChDTE9TRUJSQUNFKSkgewogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSk7CisgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobG9jYXRpb24pOwogICAgIH0K
ICAgICAKICAgICBUcmVlUHJvcGVydHkgcHJvcGVydHkgPSBwYXJzZVByb3BlcnR5PHRydWU+KGNv
bnRleHQpOwpAQCAtMTMxMywxMyArMTM1MCwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0cmljdE9iamVjdAog
ICAgIGlmICghbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkKQogICAgICAgICBvYmplY3RWYWxpZGF0
b3IuYWRkKGNvbnRleHQuZ2V0TmFtZShwcm9wZXJ0eSkuaW1wbCgpLCBjb250ZXh0LmdldFR5cGUo
cHJvcGVydHkpKTsKICAgICAKLSAgICBUcmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNv
bnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3Bl
cnR5KTsKKyAgICBUcmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRl
UHJvcGVydHlMaXN0KGxvY2F0aW9uLCBwcm9wZXJ0eSk7CiAgICAgVHJlZVByb3BlcnR5TGlzdCB0
YWlsID0gcHJvcGVydHlMaXN0OwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAg
bmV4dCgpOwogICAgICAgICAvLyBhbGxvdyBleHRyYSBjb21tYSwgc2VlIGh0dHA6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MzkKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJB
Q0UpKQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBwcm9wZXJ0
eUxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIHByb3BlcnR5ID0gcGFyc2VQcm9w
ZXJ0eTx0cnVlPihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHkpOwogICAg
ICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCkgewpAQCAtMTMzMSwxNCArMTM2OSwx
NSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZVN0cmljdE9iamVjdAogICAgICAgICAgICAgICAgIHByb3BlcnR5RW50
cnkuaXRlcmF0b3ItPnNlY29uZCB8PSBjb250ZXh0LmdldFR5cGUocHJvcGVydHkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5
TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBwcm9wZXJ0eSwgdGFpbCk7CisgICAgICAg
IHRhaWwgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChwcm9wZXJ0eUxvY2F0aW9uLCBwcm9w
ZXJ0eSwgdGFpbCk7CiAgICAgfQotICAgIAorCisgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9u
KCk7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFKTsKIAogICAgIG1fbm9uTEhTQ291bnQg
PSBvbGROb25MSFNDb3VudDsKIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVy
YWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHlMaXN0KTsKKyAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKGxvY2F0aW9uLCBwcm9wZXJ0eUxpc3QpOwogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMTM1NCw4ICsxMzkzLDkgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VBcnJheUxpdGVyYWwKICAgICAgICAgZWxpc2lvbnMrKzsKICAgICB9CiAgICAgaWYg
KG1hdGNoKENMT1NFQlJBQ0tFVCkpIHsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9u
KHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0
cmluZ3MpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBlbGlzaW9ucyk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFy
cmF5KGxvY2F0aW9uLCBlbGlzaW9ucyk7CiAgICAgfQogICAgIAogICAgIFRyZWVFeHByZXNzaW9u
IGVsZW0gPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwpAQCAtMTM3MywxOSAr
MTQxMywyMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUFycmF5TGl0ZXJhbAogICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDS0VUKSkgeworICAgICAgICAgICAgSlNUb2tlbkxv
Y2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgICAgICBuZXh0KFRyZWVC
dWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUFycmF5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGVsaXNpb25zLCBlbGVtZW50TGlz
dCk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShsb2NhdGlvbiwgZWxp
c2lvbnMsIGVsZW1lbnRMaXN0KTsKICAgICAgICAgfQogICAgICAgICBUcmVlRXhwcmVzc2lvbiBl
bGVtID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgZmFpbElm
RmFsc2UoZWxlbSk7CiAgICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZUVsZW1lbnRMaXN0KHRh
aWwsIGVsaXNpb25zLCBlbGVtKTsKICAgICB9Ci0gICAgCisKKyAgICBKU1Rva2VuTG9jYXRpb24g
bG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0tF
VCk7CiAgICAgCiAgICAgbV9ub25MSFNDb3VudCA9IG9sZE5vbkxIU0NvdW50OwogICAgIAotICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUFycmF5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGVs
ZW1lbnRMaXN0KTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShsb2NhdGlvbiwgZWxl
bWVudExpc3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMTQwOSwz
OCArMTQ1MSw0NSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHByZQogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KICAgICBjYXNlIFRISVNUT0tFTjogeworICAgICAgICBKU1Rva2VuTG9jYXRp
b24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwotICAgICAgICBy
ZXR1cm4gY29udGV4dC50aGlzRXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAg
ICAgcmV0dXJuIGNvbnRleHQudGhpc0V4cHIobG9jYXRpb24pOwogICAgIH0KICAgICBjYXNlIElE
RU5UOiB7CiAgICAgICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgSlNUb2tl
bkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKICAg
ICAgICAgY3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBtX2dsb2JhbERhdGEtPnBy
b3BlcnR5TmFtZXMtPmV2YWwgPT0gKmlkZW50KTsKICAgICAgICAgbV9sYXN0SWRlbnRpZmllciA9
IGlkZW50OwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXNvbHZlKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGlkZW50LCBzdGFydCk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZVJlc29sdmUobG9jYXRpb24sIGlkZW50LCBzdGFydCk7CiAgICAgfQogICAgIGNhc2UgU1RS
SU5HOiB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEu
aWRlbnQ7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVN0cmluZyht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBpZGVudCk7CisgICAgICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZVN0cmluZyhsb2NhdGlvbiwgaWRlbnQpOwogICAgIH0KICAgICBjYXNlIE5VTUJFUjog
ewogICAgICAgICBkb3VibGUgZCA9IG1fdG9rZW4ubV9kYXRhLmRvdWJsZVZhbHVlOworICAgICAg
ICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4
dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVOdW1iZXJFeHByKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGQpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVOdW1iZXJF
eHByKGxvY2F0aW9uLCBkKTsKICAgICB9CiAgICAgY2FzZSBOVUxMVE9LRU46IHsKKyAgICAgICAg
SlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQo
KTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTnVsbChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTnVsbChsb2NhdGlvbik7CiAg
ICAgfQogICAgIGNhc2UgVFJVRVRPS0VOOiB7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUJvb2xlYW4obV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdHJ1ZSk7Cisg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJvb2xlYW4obG9jYXRpb24sIHRydWUpOwogICAg
IH0KICAgICBjYXNlIEZBTFNFVE9LRU46IHsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0
aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlQm9vbGVhbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBmYWxzZSk7Cisg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJvb2xlYW4obG9jYXRpb24sIGZhbHNlKTsKICAg
ICB9CiAgICAgY2FzZSBESVZFUVVBTDoKICAgICBjYXNlIERJVklERTogewpAQCAtMTQ1Myw4ICsx
NTAyLDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmUKICAgICAgICAgICAgIGZhaWxJZkZhbHNl
KG1fbGV4ZXItPnNjYW5SZWdFeHAocGF0dGVybiwgZmxhZ3MpKTsKICAgICAgICAgCiAgICAgICAg
IGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0
aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgVHJlZUV4cHJl
c3Npb24gcmUgPSBjb250ZXh0LmNyZWF0ZVJlZ0V4cChtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCAqcGF0dGVybiwgKmZsYWdzLCBzdGFydCk7CisgICAgICAgIFRyZWVFeHByZXNzaW9uIHJlID0g
Y29udGV4dC5jcmVhdGVSZWdFeHAobG9jYXRpb24sICpwYXR0ZXJuLCAqZmxhZ3MsIHN0YXJ0KTsK
ICAgICAgICAgaWYgKCFyZSkgewogICAgICAgICAgICAgY29uc3QgY2hhciogeWFyckVycm9yTXNn
ID0gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi0+dXN0cmluZygpKTsKICAgICAgICAgICAgIEFT
U0VSVCghbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkpOwpAQCAtMTQ3MSw2ICsxNTIxLDcgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUFyZ3VtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcmd1bWVudHMoVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCiB7CiAgICAgY29uc3VtZU9yRmFpbFdpdGhGbGFncyhPUEVOUEFSRU4sIFRy
ZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpZiAobWF0Y2goQ0xPU0VQQVJFTikpIHsKICAgICAg
ICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAgICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUFyZ3VtZW50cygpOwpAQCAtMTQ3OCwxMyArMTUyOSwxNCBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVBcmd1bWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlQXJndW1lbnRzKFRyZQogICAgIFRyZWVFeHByZXNzaW9uIGZpcnN0QXJnID0gcGFyc2VBc3Np
Z25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShmaXJzdEFyZyk7CiAg
ICAgCi0gICAgVHJlZUFyZ3VtZW50c0xpc3QgYXJnTGlzdCA9IGNvbnRleHQuY3JlYXRlQXJndW1l
bnRzTGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBmaXJzdEFyZyk7CisgICAgVHJlZUFy
Z3VtZW50c0xpc3QgYXJnTGlzdCA9IGNvbnRleHQuY3JlYXRlQXJndW1lbnRzTGlzdChsb2NhdGlv
biwgZmlyc3RBcmcpOwogICAgIFRyZWVBcmd1bWVudHNMaXN0IHRhaWwgPSBhcmdMaXN0OwogICAg
IHdoaWxlIChtYXRjaChDT01NQSkpIHsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGFyZ3VtZW50
TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9u
dEJ1aWxkU3RyaW5ncyk7CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGFyZyA9IHBhcnNlQXNzaWdu
bWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGFyZyk7Ci0gICAg
ICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50c0xpc3QobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgdGFpbCwgYXJnKTsKKyAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlQXJndW1l
bnRzTGlzdChhcmd1bWVudExvY2F0aW9uLCB0YWlsLCBhcmcpOwogICAgIH0KICAgICBjb25zdW1l
T3JGYWlsKENMT1NFUEFSRU4pOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50cyhh
cmdMaXN0KTsKQEAgLTE0OTcsNiArMTU0OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAg
ICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgIGludCBleHByZXNzaW9uU3RhcnQgPSBz
dGFydDsKICAgICBpbnQgbmV3Q291bnQgPSAwOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlv
bjsKICAgICB3aGlsZSAobWF0Y2goTkVXKSkgewogICAgICAgICBuZXh0KCk7CiAgICAgICAgIG5l
d0NvdW50Kys7CkBAIC0xNTA5LDE0ICsxNTYyLDE2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVz
CiAgICAgICAgIGludCBvcGVuQnJhY2VQb3MgPSAwOwogICAgICAgICBpbnQgY2xvc2VCcmFjZVBv
cyA9IDA7CiAgICAgICAgIGludCBib2R5U3RhcnRMaW5lID0gMDsKKyAgICAgICAgbG9jYXRpb24g
PSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgZmFpbElmRmFsc2Uo
KHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIGZhbHNlPihjb250ZXh0
LCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJv
ZHlTdGFydExpbmUpKSk7Ci0gICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhw
cihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBuYW1lLCBib2R5LCBwYXJhbWV0ZXJzLCBvcGVu
QnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOworICAg
ICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRpb24sIG5hbWUsIGJv
ZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGlu
ZSwgbV9sYXN0TGluZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGJhc2UgPSBwYXJzZVByaW1hcnlF
eHByZXNzaW9uKGNvbnRleHQpOwogICAgIAogICAgIGZhaWxJZkZhbHNlKGJhc2UpOwogICAgIHdo
aWxlICh0cnVlKSB7CisgICAgICAgIGxvY2F0aW9uID0gdG9rZW5Mb2NhdGlvbigpOwogICAgICAg
ICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAgICAgICAgIGNhc2UgT1BFTkJSQUNLRVQ6IHsK
ICAgICAgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwpAQCAtMTUyNiw3ICsx
NTgxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgIGludCBpbml0aWFs
QXNzaWdubWVudHMgPSBtX2Fzc2lnbm1lbnRDb3VudDsKICAgICAgICAgICAgIFRyZWVFeHByZXNz
aW9uIHByb3BlcnR5ID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICAgICAgZmFp
bElmRmFsc2UocHJvcGVydHkpOwotICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlQnJh
Y2tldEFjY2VzcyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBwcm9wZXJ0eSwgaW5p
dGlhbEFzc2lnbm1lbnRzICE9IG1fYXNzaWdubWVudENvdW50LCBleHByZXNzaW9uU3RhcnQsIGV4
cHJlc3Npb25FbmQsIHRva2VuRW5kKCkpOworICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3Jl
YXRlQnJhY2tldEFjY2Vzcyhsb2NhdGlvbiwgYmFzZSwgcHJvcGVydHksIGluaXRpYWxBc3NpZ25t
ZW50cyAhPSBtX2Fzc2lnbm1lbnRDb3VudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5k
LCB0b2tlbkVuZCgpKTsKICAgICAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDS0VUKTsK
ICAgICAgICAgICAgIG1fbm9uTEhTQ291bnQgPSBub25MSFNDb3VudDsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTUzOSwxMiArMTU5NCwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAg
ICAgICAgICAgICAgIGludCBleHByRW5kID0gbGFzdFRva2VuRW5kKCk7CiAgICAgICAgICAgICAg
ICAgVHJlZUFyZ3VtZW50cyBhcmd1bWVudHMgPSBwYXJzZUFyZ3VtZW50cyhjb250ZXh0KTsKICAg
ICAgICAgICAgICAgICBmYWlsSWZGYWxzZShhcmd1bWVudHMpOwotICAgICAgICAgICAgICAgIGJh
c2UgPSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgYmFz
ZSwgYXJndW1lbnRzLCBzdGFydCwgZXhwckVuZCwgbGFzdFRva2VuRW5kKCkpOyAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3RXhwcihsb2NhdGlvbiwg
YmFzZSwgYXJndW1lbnRzLCBzdGFydCwgZXhwckVuZCwgbGFzdFRva2VuRW5kKCkpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpbnQgZXhwcmVzc2lvbkVuZCA9IGxhc3RU
b2tlbkVuZCgpOwogICAgICAgICAgICAgICAgIFRyZWVBcmd1bWVudHMgYXJndW1lbnRzID0gcGFy
c2VBcmd1bWVudHMoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgZmFpbElmRmFsc2UoYXJndW1l
bnRzKTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5tYWtlRnVuY3Rpb25DYWxsTm9k
ZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBhcmd1bWVudHMsIGV4cHJlc3Npb25T
dGFydCwgZXhwcmVzc2lvbkVuZCwgbGFzdFRva2VuRW5kKCkpOworICAgICAgICAgICAgICAgIGJh
c2UgPSBjb250ZXh0Lm1ha2VGdW5jdGlvbkNhbGxOb2RlKGxvY2F0aW9uLCBiYXNlLCBhcmd1bWVu
dHMsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgbGFzdFRva2VuRW5kKCkpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgbV9ub25MSFNDb3VudCA9IG5vbkxIU0NvdW50OwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC0xNTU0LDcgKzE2MDksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4
cHJlcwogICAgICAgICAgICAgaW50IGV4cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5FbmQoKTsKICAg
ICAgICAgICAgIG5leHRFeHBlY3RJZGVudGlmaWVyKExleGVyRmxhZ3NJZ25vcmVSZXNlcnZlZFdv
cmRzIHwgVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZEtleXdvcmRzKTsKICAgICAgICAgICAgIG1hdGNo
T3JGYWlsKElERU5UKTsKLSAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2Vz
cyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBtX3Rva2VuLm1fZGF0YS5pZGVudCwg
ZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZCgpKTsKKyAgICAgICAgICAg
IGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2Vzcyhsb2NhdGlvbiwgYmFzZSwgbV90b2tlbi5t
X2RhdGEuaWRlbnQsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQoKSk7
CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
MTU2NCw3ICsxNjE5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICB9CiBlbmRNZW1i
ZXJFeHByZXNzaW9uOgogICAgIHdoaWxlIChuZXdDb3VudC0tKQotICAgICAgICBiYXNlID0gY29u
dGV4dC5jcmVhdGVOZXdFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGJhc2UsIHN0YXJ0
LCBsYXN0VG9rZW5FbmQoKSk7CisgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIo
bG9jYXRpb24sIGJhc2UsIHN0YXJ0LCBsYXN0VG9rZW5FbmQoKSk7CiAgICAgcmV0dXJuIGJhc2U7
CiB9CiAKQEAgLTE2MDIsNiArMTY1Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAg
ICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgIH0KICAgICBpbnQgc3ViRXhw
clN0YXJ0ID0gdG9rZW5TdGFydCgpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tl
bkxvY2F0aW9uKCkpOwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZU1lbWJlckV4cHJl
c3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcik7CiAgICAgYm9vbCBpc0V2YWxP
ckFyZ3VtZW50cyA9IGZhbHNlOwpAQCAtMTYxNCw3ICsxNjcwLDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFy
eUV4cHJlc3MKICAgICBjYXNlIFBMVVNQTFVTOgogICAgICAgICBtX25vblRyaXZpYWxFeHByZXNz
aW9uQ291bnQrKzsKICAgICAgICAgbV9ub25MSFNDb3VudCsrOwotICAgICAgICBleHByID0gY29u
dGV4dC5tYWtlUG9zdGZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgT3BQ
bHVzUGx1cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CisgICAg
ICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZShsb2NhdGlvbiwgZXhwciwgT3BQbHVz
UGx1cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CiAgICAgICAg
IG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdFdpdGhOYW1l
QW5kTWVzc2FnZShpc0V2YWxPckFyZ3VtZW50cywgIiciLCBtX2xhc3RJZGVudGlmaWVyLT5pbXBs
KCksICInIGNhbm5vdCBiZSBtb2RpZmllZCBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBmYWls
SWZUcnVlSWZTdHJpY3QocmVxdWlyZXNMRXhwcik7CkBAIC0xNjIzLDcgKzE2NzksNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgIGNhc2UgTUlOVVNNSU5VUzoKICAgICAgICAgbV9ub25U
cml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgIG1fbm9uTEhTQ291bnQrKzsKLSAgICAg
ICAgZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGV4cHIsIE9wTWludXNNaW51cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9r
ZW5FbmQoKSk7CisgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZShsb2NhdGlv
biwgZXhwciwgT3BNaW51c01pbnVzLCBzdWJFeHByU3RhcnQsIGxhc3RUb2tlbkVuZCgpLCB0b2tl
bkVuZCgpKTsKICAgICAgICAgbV9hc3NpZ25tZW50Q291bnQrKzsKICAgICAgICAgZmFpbElmVHJ1
ZUlmU3RyaWN0V2l0aE5hbWVBbmRNZXNzYWdlKGlzRXZhbE9yQXJndW1lbnRzLCAiJyIsIG1fbGFz
dElkZW50aWZpZXItPmltcGwoKSwgIicgY2Fubm90IGJlIG1vZGlmaWVkIGluIHN0cmljdCBtb2Rl
Iik7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChyZXF1aXJlc0xFeHByKTsKQEAgLTE2Mzcs
NDAgKzE2OTMsNDIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICAKICAgICBpZiAoIVRy
ZWVCdWlsZGVyOjpDcmVhdGVzQVNUICYmIChtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQgfHwgIXN0
cmljdE1vZGUoKSkpCiAgICAgICAgIHJldHVybiBleHByOwotICAgIAorCisgICAgbG9jYXRpb24g
PSB0b2tlbkxvY2F0aW9uKCk7CisgICAgbG9jYXRpb24ubGluZSA9IG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCk7CiAgICAgd2hpbGUgKHRva2VuU3RhY2tEZXB0aCkgewogICAgICAgICBzd2l0Y2gg
KGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFR5cGUodG9rZW5TdGFja0RlcHRoKSkgewogICAg
ICAgICBjYXNlIEVYQ0xBTUFUSU9OOgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRl
TG9naWNhbE5vdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByKTsKKyAgICAgICAgICAg
IGV4cHIgPSBjb250ZXh0LmNyZWF0ZUxvZ2ljYWxOb3QobG9jYXRpb24sIGV4cHIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVElMREU6Ci0gICAgICAgICAgICBleHByID0gY29u
dGV4dC5tYWtlQml0d2lzZU5vdE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7
CisgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlQml0d2lzZU5vdE5vZGUobG9jYXRpb24s
IGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTUlOVVM6Ci0gICAgICAg
ICAgICBleHByID0gY29udGV4dC5tYWtlTmVnYXRlTm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBleHByKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VOZWdhdGVOb2RlKGxv
Y2F0aW9uLCBleHByKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBMVVM6Ci0g
ICAgICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVVbmFyeVBsdXMobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgZXhwcik7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVVbmFy
eVBsdXMobG9jYXRpb24sIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
UExVU1BMVVM6CiAgICAgICAgIGNhc2UgQVVUT1BMVVNQTFVTOgotICAgICAgICAgICAgZXhwciA9
IGNvbnRleHQubWFrZVByZWZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwg
T3BQbHVzUGx1cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0Rl
cHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0
Lm1ha2VQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcFBsdXNQbHVzLCBjb250ZXh0LnVuYXJ5
VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBzdWJFeHByU3RhcnQgKyAxLCBl
bmQpOwogICAgICAgICAgICAgbV9hc3NpZ25tZW50Q291bnQrKzsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIE1JTlVTTUlOVVM6CiAgICAgICAgIGNhc2UgQVVUT01JTlVTTUlOVVM6
Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlUHJlZml4Tm9kZShtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBleHByLCBPcE1pbnVzTWludXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNr
TGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CisgICAg
ICAgICAgICBleHByID0gY29udGV4dC5tYWtlUHJlZml4Tm9kZShsb2NhdGlvbiwgZXhwciwgT3BN
aW51c01pbnVzLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVw
dGgpLCBzdWJFeHByU3RhcnQgKyAxLCBlbmQpOwogICAgICAgICAgICAgbV9hc3NpZ25tZW50Q291
bnQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRZUEVPRjoKLSAgICAgICAg
ICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VUeXBlT2ZOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGV4cHIpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVR5cGVPZk5vZGUobG9j
YXRpb24sIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVk9JRFRPS0VO
OgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlVm9pZChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBleHByKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0ZVZvaWQo
bG9jYXRpb24sIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgREVMRVRF
VE9LRU46CiAgICAgICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3RXaXRoTmFtZUFuZE1lc3NhZ2Uo
Y29udGV4dC5pc1Jlc29sdmUoZXhwciksICJDYW5ub3QgZGVsZXRlIHVucXVhbGlmaWVkIHByb3Bl
cnR5IiwgbV9sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAiaW4gc3RyaWN0IG1vZGUiKTsKLSAgICAg
ICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VEZWxldGVOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tE
ZXB0aCksIGVuZCwgZW5kKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VEZWxldGVO
b2RlKGxvY2F0aW9uLCBleHByLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tl
blN0YWNrRGVwdGgpLCBlbmQsIGVuZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIC8vIElmIHdlIGdldCBoZXJlIHNvbWV0aGluZyBoYXMgZ29uZSBo
b3JyaWJseSBob3JyaWJseSB3cm9uZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgK
aW5kZXggYzJhMTFkNjY1Yjc5MTNlYzVmNjQzMWMwNjM2YzFhOGE2ZGQ2YTAxNi4uNzlhOTViNjk2
M2I0MTI5MGJjYTNiNGZhOWM4NTgwZmNiNjIzNTU3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCkBAIC01MDIsMTggKzUwMiwxOCBAQCBwcml2YXRlOgogCiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIG5leHQodW5zaWduZWQgbGV4ZXJGbGFncyA9IDApCiAgICAgewotICAgICAg
ICBtX2xhc3RMaW5lID0gbV90b2tlbi5tX2luZm8ubGluZTsKLSAgICAgICAgbV9sYXN0VG9rZW5F
bmQgPSBtX3Rva2VuLm1faW5mby5lbmRPZmZzZXQ7CisgICAgICAgIG1fbGFzdExpbmUgPSBtX3Rv
a2VuLm1fbG9jYXRpb24ubGluZTsKKyAgICAgICAgbV9sYXN0VG9rZW5FbmQgPSBtX3Rva2VuLm1f
bG9jYXRpb24uZW5kT2Zmc2V0OwogICAgICAgICBtX2xleGVyLT5zZXRMYXN0TGluZU51bWJlciht
X2xhc3RMaW5lKTsKLSAgICAgICAgbV90b2tlbi5tX3R5cGUgPSBtX2xleGVyLT5sZXgoJm1fdG9r
ZW4ubV9kYXRhLCAmbV90b2tlbi5tX2luZm8sIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUoKSk7Cisg
ICAgICAgIG1fdG9rZW4ubV90eXBlID0gbV9sZXhlci0+bGV4KCZtX3Rva2VuLm1fZGF0YSwgJm1f
dG9rZW4ubV9sb2NhdGlvbiwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSgpKTsKICAgICB9CiAKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgbmV4dEV4cGVjdElkZW50aWZpZXIodW5zaWduZWQgbGV4ZXJG
bGFncyA9IDApCiAgICAgewotICAgICAgICBtX2xhc3RMaW5lID0gbV90b2tlbi5tX2luZm8ubGlu
ZTsKLSAgICAgICAgbV9sYXN0VG9rZW5FbmQgPSBtX3Rva2VuLm1faW5mby5lbmRPZmZzZXQ7Cisg
ICAgICAgIG1fbGFzdExpbmUgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZTsKKyAgICAgICAgbV9s
YXN0VG9rZW5FbmQgPSBtX3Rva2VuLm1fbG9jYXRpb24uZW5kT2Zmc2V0OwogICAgICAgICBtX2xl
eGVyLT5zZXRMYXN0TGluZU51bWJlcihtX2xhc3RMaW5lKTsKLSAgICAgICAgbV90b2tlbi5tX3R5
cGUgPSBtX2xleGVyLT5sZXhFeHBlY3RJZGVudGlmaWVyKCZtX3Rva2VuLm1fZGF0YSwgJm1fdG9r
ZW4ubV9pbmZvLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKCkpOworICAgICAgICBtX3Rva2VuLm1f
dHlwZSA9IG1fbGV4ZXItPmxleEV4cGVjdElkZW50aWZpZXIoJm1fdG9rZW4ubV9kYXRhLCAmbV90
b2tlbi5tX2xvY2F0aW9uLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKCkpOwogICAgIH0KIAogICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBuZXh0VG9rZW5Jc0NvbG9uKCkKQEAgLTU0MSwyMCArNTQxLDI1
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSBpbnQgdG9rZW5TdGFydCgpCiAg
ICAgewotICAgICAgICByZXR1cm4gbV90b2tlbi5tX2luZm8uc3RhcnRPZmZzZXQ7CisgICAgICAg
IHJldHVybiBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CiAgICAgfQogICAgIAogICAg
IEFMV0FZU19JTkxJTkUgaW50IHRva2VuTGluZSgpCiAgICAgewotICAgICAgICByZXR1cm4gbV90
b2tlbi5tX2luZm8ubGluZTsKKyAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9sb2NhdGlvbi5saW5l
OwogICAgIH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIGludCB0b2tlbkVuZCgpCiAgICAgewot
ICAgICAgICByZXR1cm4gbV90b2tlbi5tX2luZm8uZW5kT2Zmc2V0OworICAgICAgICByZXR1cm4g
bV90b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldDsKICAgICB9CiAgICAgCi0gICAgY29uc3QgY2hh
ciogZ2V0VG9rZW5OYW1lKEpTVG9rZW5UeXBlIHRvaykgCisgICAgQUxXQVlTX0lOTElORSBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIHRva2VuTG9jYXRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1fdG9rZW4ubV9sb2NhdGlvbjsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyKiBnZXRUb2tlbk5h
bWUoSlNUb2tlblR5cGUgdG9rKQogICAgIHsKICAgICAgICAgc3dpdGNoICh0b2spIHsKICAgICAg
ICAgY2FzZSBOVUxMVE9LRU46IApAQCAtMTAwMyw4ICsxMDA4LDExIEBAIFBhc3NSZWZQdHI8UGFy
c2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqCiAKICAgICBSZWZQdHI8UGFyc2VkTm9kZT4gcmVzdWx0OwogICAgIGlmIChtX3Nv
dXJjZUVsZW1lbnRzKSB7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbjsKKyAgICAg
ICAgbG9jYXRpb24ubGluZSA9IG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCk7CisgICAgICAgIGxv
Y2F0aW9uLmNvbHVtbiA9IG1fbGV4ZXItPmN1cnJlbnRDb2x1bW5OdW1iZXIoKTsKICAgICAgICAg
cmVzdWx0ID0gUGFyc2VkTm9kZTo6Y3JlYXRlKCZsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRp
b24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NvdXJjZUVsZW1lbnRz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92YXJEZWNsYXJhdGlvbnMg
PyAmbV92YXJEZWNsYXJhdGlvbnMtPmRhdGEgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9mdW5jRGVjbGFyYXRpb25zID8gJm1fZnVuY0RlY2xhcmF0aW9ucy0+ZGF0
YSA6IDAsCkBAIC0xMDEyLDcgKzEwMjAsNyBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iagogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm1fc291cmNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9mZWF0dXJlcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fbnVtQ29uc3RhbnRzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
bV9zb3VyY2UtPmZpcnN0TGluZSgpLCBtX2xhc3RMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRM
b2MobV9zb3VyY2UtPmZpcnN0TGluZSgpLCBtX2xhc3RMaW5lLCBtX2xleGVyLT5jdXJyZW50Q29s
dW1uTnVtYmVyKCkpOwogICAgIH0gZWxzZSBpZiAobGV4aWNhbEdsb2JhbE9iamVjdCkgewogICAg
ICAgICAvLyBXZSBjYW4gbmV2ZXIgc2VlIGEgc3ludGF4IGVycm9yIHdoZW4gcmVwYXJzaW5nIGEg
ZnVuY3Rpb24sIHNpbmNlIHdlIHNob3VsZCBoYXZlCiAgICAgICAgIC8vIHJlcG9ydGVkIHRoZSBl
cnJvciB3aGVuIHBhcnNpbmcgdGhlIGNvbnRhaW5pbmcgcHJvZ3JhbSBvciBldmFsIGNvZGUuIFNv
IGlmIHdlJ3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
clRva2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaApp
bmRleCBhMWVhNzUxYWMyMGE3OTJmZjRjNWU2MjFhMDFiYzc3NDllYTNhOWJmLi42ZTZjZWMxMTRk
NDQ1ZTM3ODY1ZmVjOGMzOTFkZjViNTFkZWM1MTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTE0MCwxNyArMTQwLDI1IEBAIHVuaW9uIEpTVG9r
ZW5EYXRhIHsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudDsKIH07CiAKLXN0cnVjdCBKU1Rv
a2VuSW5mbyB7Ci0gICAgSlNUb2tlbkluZm8oKSA6IGxpbmUoMCkgeyB9CitzdHJ1Y3QgSlNUb2tl
bkxvY2F0aW9uIHsKKyAgICBKU1Rva2VuTG9jYXRpb24oKSA6IGxpbmUoMCksIGNvbHVtbigwKSB7
IH0KKyAgICBKU1Rva2VuTG9jYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikK
KyAgICB7CisgICAgICAgIGxpbmUgPSBsb2NhdGlvbi5saW5lOworICAgICAgICBzdGFydE9mZnNl
dCA9IGxvY2F0aW9uLnN0YXJ0T2Zmc2V0OworICAgICAgICBlbmRPZmZzZXQgPSBsb2NhdGlvbi5l
bmRPZmZzZXQ7CisgICAgICAgIGNvbHVtbiA9IGxvY2F0aW9uLmNvbHVtbjsKKyAgICB9CiAgICAg
aW50IGxpbmU7CiAgICAgaW50IHN0YXJ0T2Zmc2V0OwogICAgIGludCBlbmRPZmZzZXQ7CisgICAg
aW50IGNvbHVtbjsKIH07CiAKIHN0cnVjdCBKU1Rva2VuIHsKICAgICBKU1Rva2VuVHlwZSBtX3R5
cGU7CiAgICAgSlNUb2tlbkRhdGEgbV9kYXRhOwotICAgIEpTVG9rZW5JbmZvIG1faW5mbzsKKyAg
ICBKU1Rva2VuTG9jYXRpb24gbV9sb2NhdGlvbjsKIH07CiAKIGVudW0gSlNQYXJzZXJTdHJpY3Ru
ZXNzIHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZVN0cmljdCB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oCmluZGV4IDM2
NjIzNjdhMDFiNzA5ZDljZDRlYzNkNDdkMmYzZGI5M2U1ZTI0YTcuLjhiMzYyMDVkZDM1YjdiYWE3
ZDg3ODQxNTZkNzQ0YjZkN2RiZWEyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgKQEAgLTUzLDkgKzUzLDkgQEAg
cHVibGljOgogICAgICAgICBKU1Rva2VuIHRva2VuOwogICAgICAgICB0b2tlbi5tX3R5cGUgPSBD
TE9TRUJSQUNFOwogICAgICAgICB0b2tlbi5tX2RhdGEuaW50VmFsdWUgPSBjbG9zZUJyYWNlUG9z
OwotICAgICAgICB0b2tlbi5tX2luZm8uc3RhcnRPZmZzZXQgPSBjbG9zZUJyYWNlUG9zOwotICAg
ICAgICB0b2tlbi5tX2luZm8uZW5kT2Zmc2V0ID0gY2xvc2VCcmFjZVBvcyArIDE7Ci0gICAgICAg
IHRva2VuLm1faW5mby5saW5lID0gY2xvc2VCcmFjZUxpbmU7IAorICAgICAgICB0b2tlbi5tX2xv
Y2F0aW9uLnN0YXJ0T2Zmc2V0ID0gY2xvc2VCcmFjZVBvczsKKyAgICAgICAgdG9rZW4ubV9sb2Nh
dGlvbi5lbmRPZmZzZXQgPSBjbG9zZUJyYWNlUG9zICsgMTsKKyAgICAgICAgdG9rZW4ubV9sb2Nh
dGlvbi5saW5lID0gY2xvc2VCcmFjZUxpbmU7IAogICAgICAgICByZXR1cm4gdG9rZW47CiAgICAg
fQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhD
aGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApp
bmRleCBmZTNjZTcxNGYzMGU0OTAwY2E1NGI1NjU1ZmQ4YTExOTA2YzdmZGRlLi43ZDQ0ZWYzYzY2
ZWNjZThlYzY4YmFmZWE5M2RiYzlhYWM0MGI5NDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtMTE5LDQyICsxMTksNDIgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBEb250QnVpbGRTdHJpbmdzID0gTGV4ZXJGbGFnc0Rv
bnRCdWlsZFN0cmluZ3M7CiAKICAgICBpbnQgY3JlYXRlU291cmNlRWxlbWVudHMoKSB7IHJldHVy
biAxOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQ2FsbEV4cHI7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBtYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQ2FsbEV4cHI7IH0KICAgICB2b2lkIGFwcGVuZFRv
Q29tbWEoRXhwcmVzc2lvblR5cGUmIGJhc2UsIEV4cHJlc3Npb25UeXBlIHJpZ2h0KSB7IGJhc2Ug
PSByaWdodDsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbW1hRXhwcihpbnQsIEV4cHJl
c3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSByaWdodCkgeyByZXR1cm4gcmlnaHQ7IH0KLSAgICBF
eHByZXNzaW9uVHlwZSBtYWtlQXNzaWduTm9kZShpbnQsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRv
ciwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGJvb2wsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFz
c2lnbm1lbnRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZVByZWZpeE5vZGUoaW50LCBF
eHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFByZUV4cHI7
IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlUG9zdGZpeE5vZGUoaW50LCBFeHByZXNzaW9uVHlw
ZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFBvc3RFeHByOyB9Ci0gICAgRXhw
cmVzc2lvblR5cGUgbWFrZVR5cGVPZk5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4g
VHlwZW9mRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VEZWxldGVOb2RlKGludCwgRXhw
cmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERlbGV0ZUV4cHI7IH0KLSAgICBF
eHByZXNzaW9uVHlwZSBtYWtlTmVnYXRlTm9kZShpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVy
biBVbmFyeUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlQml0d2lzZU5vdE5vZGUoaW50
LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlTG9naWNhbE5vdChpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4
cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVVbmFyeVBsdXMoaW50LCBFeHByZXNzaW9u
VHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlVm9p
ZChpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KLSAgICBFeHByZXNz
aW9uVHlwZSB0aGlzRXhwcihpbnQpIHsgcmV0dXJuIFRoaXNFeHByOyB9Ci0gICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlUmVzb2x2ZShpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJu
IFJlc29sdmVFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChp
bnQpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlT2JqZWN0TGl0ZXJhbChpbnQsIGludCkgeyByZXR1cm4gT2JqZWN0TGl0ZXJhbEV4cHI7IH0K
LSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJheShpbnQsIGludCkgeyByZXR1cm4gQXJyYXlM
aXRlcmFsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5KGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVOdW1iZXJFeHByKGludCwgZG91YmxlKSB7IHJldHVybiBOdW1iZXJFeHByOyB9Ci0gICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlU3RyaW5nKGludCwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJu
IFN0cmluZ0V4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGludCwgYm9v
bCkgeyByZXR1cm4gQm9vbEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdWxsKGlu
dCkgeyByZXR1cm4gTnVsbEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCcmFja2V0
QWNjZXNzKGludCwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiBCcmFja2V0RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZURvdEFjY2VzcyhpbnQsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gRG90RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJl
Z0V4cChpbnQsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImLCBp
bnQpIHsgcmV0dXJuIFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4udXN0cmluZygpKSA/IDAgOiBS
ZWdFeHBFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhwcihpbnQsIEV4cHJl
c3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KLSAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGludCwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50
KSB7IHJldHVybiBOZXdFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29uZGl0aW9u
YWxFeHByKGludCwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlw
ZSkgeyByZXR1cm4gQ29uZGl0aW9uYWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
QXNzaWduUmVzb2x2ZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uVHlwZSwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVGdW5jdGlvbkV4cHIoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0gICAgaW50IGNyZWF0
ZUZ1bmN0aW9uQm9keShpbnQsIGJvb2wpIHsgcmV0dXJuIDE7IH0KKyAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVDb21tYUV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUs
IEV4cHJlc3Npb25UeXBlIHJpZ2h0KSB7IHJldHVybiByaWdodDsgfQorICAgIEV4cHJlc3Npb25U
eXBlIG1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBl
LCBPcGVyYXRvciwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGJvb2wsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVByZWZpeE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIE9wZXJhdG9yLCBpbnQs
IGludCwgaW50KSB7IHJldHVybiBQcmVFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVBv
c3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRv
ciwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gUG9zdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlw
ZSBtYWtlVHlwZU9mTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSkg
eyByZXR1cm4gVHlwZW9mRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VEZWxldGVOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50KSB7
IHJldHVybiBEZWxldGVFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZU5lZ2F0ZU5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VCaXR3aXNlTm90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlTG9naWNhbE5vdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlVW5hcnlQbHVzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlKSB7IHJl
dHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVWb2lkKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAg
ICBFeHByZXNzaW9uVHlwZSB0aGlzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVy
biBUaGlzRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlc29sdmUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gUmVzb2x2ZUV4
cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVPYmplY3RMaXRlcmFsKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9CisgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQpIHsg
cmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJy
YXkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50KSB7IHJldHVybiBBcnJheUxpdGVyYWxFeHBy
OyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyYXkoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgaW50LCBpbnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVOdW1iZXJFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGRvdWJsZSkgeyBy
ZXR1cm4gTnVtYmVyRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVN0cmluZyhjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1cm4gU3RyaW5nRXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIE51bGxFeHByOyB9CisgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIEJyYWNrZXRFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRG90QWNjZXNz
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlmaWVy
KiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRG90RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBw
YXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiwgaW50KSB7IHJldHVybiBZYXJyOjpjaGVja1N5bnRh
eChwYXR0ZXJuLnVzdHJpbmcoKSkgPyAwIDogUmVnRXhwRXhwcjsgfQorICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQorICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUs
IGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
Q29uZGl0aW9uYWxFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBF
eHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIENvbmRpdGlvbmFsRXhwcjsg
fQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFzc2lnblJlc29sdmUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50
KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUZ1
bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9CisgICAg
aW50IGNyZWF0ZUZ1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sKSB7IHJl
dHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIDE7IH0KICAgICBp
bnQgY3JlYXRlQXJndW1lbnRzKGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVBcmd1
bWVudHNMaXN0KGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUFyZ3VtZW50
c0xpc3QoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVBcmd1bWVu
dHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGlu
dCBjcmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7
IHJldHVybiAxOyB9CiAgICAgdGVtcGxhdGUgPGJvb2wgY29tcGxldGU+IFByb3BlcnR5IGNyZWF0
ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIGludCwgUHJvcGVydHlOb2RlOjpUeXBl
IHR5cGUpCiAgICAgewogICAgICAgICBpZiAoIWNvbXBsZXRlKQpAQCAtMTY4LDggKzE2OCw4IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsKICAgICAgICAgcmV0
dXJuIFByb3BlcnR5KCZnbG9iYWxEYXRhLT5wYXJzZXJBcmVuYS0+aWRlbnRpZmllckFyZW5hKCku
bWFrZU51bWVyaWNJZGVudGlmaWVyKGdsb2JhbERhdGEsIG5hbWUpLCB0eXBlKTsKICAgICB9Ci0g
ICAgaW50IGNyZWF0ZVByb3BlcnR5TGlzdChpbnQsIFByb3BlcnR5KSB7IHJldHVybiAxOyB9Ci0g
ICAgaW50IGNyZWF0ZVByb3BlcnR5TGlzdChpbnQsIFByb3BlcnR5LCBpbnQpIHsgcmV0dXJuIDE7
IH0KKyAgICBpbnQgY3JlYXRlUHJvcGVydHlMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFBy
b3BlcnR5KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eSwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNy
ZWF0ZUVsZW1lbnRMaXN0KGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUVs
ZW1lbnRMaXN0KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3JlYXRlRm9y
bWFsUGFyYW1ldGVyTGlzdChjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4gMTsgfQpAQCAtMTc4
LDM5ICsxNzgsMzkgQEAgcHVibGljOgogICAgIGludCBjcmVhdGVDbGF1c2VMaXN0KGludCkgeyBy
ZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVDbGF1c2VMaXN0KGludCwgaW50KSB7IHJldHVybiAx
OyB9CiAgICAgdm9pZCBzZXRVc2VzQXJndW1lbnRzKGludCkgeyB9Ci0gICAgaW50IGNyZWF0ZUZ1
bmNEZWNsU3RhdGVtZW50KGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQmxvY2tTdGF0ZW1lbnQo
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUV4cHJTdGF0
ZW1lbnQoaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUlm
U3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50
IGNyZWF0ZUlmU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICBpbnQgY3JlYXRlRm9yTG9vcChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRm9ySW5Mb29wKGludCwgY29uc3Qg
SWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVGb3JJbkxvb3AoaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBj
cmVhdGVFbXB0eVN0YXRlbWVudChpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlVmFy
U3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVh
dGVSZXR1cm5TdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQotICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQsIGNvbnN0
IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQg
Y3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KLSAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50LCBjb25zdCBJZGVudGlm
aWVyKiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVRy
eVN0YXRlbWVudChpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVdo
aWxlU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAg
aW50IGNyZWF0ZVdpdGhTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQoaW50LCBpbnQs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlTGFiZWxTdGF0ZW1l
bnQoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQot
ICAgIGludCBjcmVhdGVUaHJvd1N0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50
KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZURlYnVnZ2VyKGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29uc3RTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwg
aW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGFwcGVuZENvbnN0RGVjbChpbnQsIGludCwgY29u
c3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gMTsgfQotICAgIHRlbXBsYXRlIDxib29sIHN0
cmljdD4gUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShpbnQsIFByb3BlcnR5
Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50KQorICAgIGludCBjcmVhdGVGdW5jRGVjbFN0YXRlbWVudChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVCbG9ja1N0YXRlbWVudChjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNy
ZWF0ZUV4cHJTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVJZlN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRl
SWZTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRm9yTG9vcChjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAg
aW50IGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlm
aWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7
IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsg
fQorICAgIGludCBjcmVhdGVFbXB0eVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7
IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVZhclN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVJldHVy
blN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQg
Y3JlYXRlQnJlYWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRp
ZmllciosIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVD
b250aW51ZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVUcnlTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVN3aXRjaFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAg
aW50IGNyZWF0ZVdoaWxlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVXaXRoU3RhdGVtZW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRG9XaGlsZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRl
TGFiZWxTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllcios
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlVGhyb3dTdGF0ZW1l
bnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRGVidWdnZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29uc3RTdGF0ZW1lbnQoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGlu
dCBhcHBlbmRDb25zdERlY2woY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBjb25zdCBJZGVu
dGlmaWVyKiwgaW50KSB7IHJldHVybiAxOyB9CisgICAgdGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQ
cm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50KQogICAgIHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwog
ICAgICAgICBpZiAoIXN0cmljdCkKICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsK
ICAgICAgICAgcmV0dXJuIFByb3BlcnR5KG5hbWUsIHR5cGUpOwogICAgIH0KLSAgICB0ZW1wbGF0
ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBkb3Vi
bGUgbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkKKyAgICB0ZW1wbGF0ZSA8Ym9v
bCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5
cGUgdHlwZSwgZG91YmxlIG5hbWUsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpCiAgICAg
ewogICAgICAgICBpZiAoIXN0cmljdCkKICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBl
KTsKQEAgLTIxOSw3ICsyMTksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGVuZFN0YXRlbWVu
dChpbnQsIGludCkgeyB9CiAgICAgdm9pZCBhZGRWYXIoY29uc3QgSWRlbnRpZmllciosIGJvb2wp
IHsgfQotICAgIGludCBjb21iaW5lQ29tbWFOb2RlcyhpbnQsIGludCwgaW50KSB7IHJldHVybiAx
OyB9CisgICAgaW50IGNvbWJpbmVDb21tYU5vZGVzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGV2YWxDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IDA7IH0KICAgICB2b2lkIGFwcGVuZEJpbmFyeUV4cHJlc3Npb25JbmZvKGludCYgb3BlcmFuZFN0
YWNrRGVwdGgsIGludCBleHByLCBpbnQsIGludCwgaW50LCBib29sKQogICAgIHsKQEAgLTIzNSw3
ICsyMzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvclN0YWNrSGFzSGlnaGVyUHJlY2Vk
ZW5jZShpbnQmLCBpbnQpIHsgcmV0dXJuIHRydWU7IH0KICAgICBCaW5hcnlPcGVyYW5kIGdldEZy
b21PcGVyYW5kU3RhY2soaW50KSB7IHJldHVybiBtX3RvcEJpbmFyeUV4cHI7IH0KICAgICB2b2lk
IHNocmlua09wZXJhbmRTdGFja0J5KGludCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCBhbW91bnQp
IHsgb3BlcmFuZFN0YWNrRGVwdGggLT0gYW1vdW50OyB9Ci0gICAgdm9pZCBhcHBlbmRCaW5hcnlP
cGVyYXRpb24oaW50LCBpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQmLCBCaW5hcnlPcGVyYW5k
LCBCaW5hcnlPcGVyYW5kKSB7IG9wZXJhbmRTdGFja0RlcHRoKys7IH0KKyAgICB2b2lkIGFwcGVu
ZEJpbmFyeU9wZXJhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQmIG9wZXJhbmRTdGFj
a0RlcHRoLCBpbnQmLCBCaW5hcnlPcGVyYW5kLCBCaW5hcnlPcGVyYW5kKSB7IG9wZXJhbmRTdGFj
a0RlcHRoKys7IH0KICAgICB2b2lkIG9wZXJhdG9yU3RhY2tBcHBlbmQoaW50JiBvcGVyYXRvclN0
YWNrRGVwdGgsIGludCwgaW50KSB7IG9wZXJhdG9yU3RhY2tEZXB0aCsrOyB9CiAgICAgaW50IHBv
cE9wZXJhbmRTdGFjayhpbnQmKSB7IGludCByZXMgPSBtX3RvcEJpbmFyeUV4cHI7IG1fdG9wQmlu
YXJ5RXhwciA9IDA7IHJldHVybiByZXM7IH0KICAgICAKQEAgLTI0NSw3ICsyNDUsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB1bmFyeVRva2VuU3RhY2tSZW1vdmVMYXN0KGludCYgc3RhY2tEZXB0aCkg
eyBzdGFja0RlcHRoID0gMDsgfQogICAgIAogICAgIHZvaWQgYXNzaWdubWVudFN0YWNrQXBwZW5k
KGludCwgaW50LCBpbnQsIGludCwgaW50LCBPcGVyYXRvcikgeyB9Ci0gICAgaW50IGNyZWF0ZUFz
c2lnbm1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQXNzaWdubWVudChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsgcmV0dXJuIDE7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBnZXROYW1lKGNvbnN0IFByb3Bl
cnR5JiBwcm9wZXJ0eSkgY29uc3QgeyBBU1NFUlQocHJvcGVydHkubmFtZSk7IHJldHVybiAqcHJv
cGVydHkubmFtZTsgfQogICAgIFByb3BlcnR5Tm9kZTo6VHlwZSBnZXRUeXBlKGNvbnN0IFByb3Bl
cnR5JiBwcm9wZXJ0eSkgY29uc3QgeyByZXR1cm4gcHJvcGVydHkudHlwZTsgfQogICAgIGJvb2wg
aXNSZXNvbHZlKEV4cHJlc3Npb25UeXBlIGV4cHIpIGNvbnN0IHsgcmV0dXJuIGV4cHIgPT0gUmVz
b2x2ZUV4cHIgfHwgZXhwciA9PSBSZXNvbHZlRXZhbEV4cHI7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCA5YWNlODJkOTM3YTkx
NzM5OTM0YmE3M2MzN2VkY2Q5MDRjYjNmNzg4Li4wMGI2OGE1OTQyYjJkNGViMGY5ZDdiYmU1NWMy
OTUzNTVkZDk4NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCkBAIC03NSwyMCArNzUsMjggQEAgU3RyaW5nIFNjcmlwdERlYnVnU2Vy
dmVyOjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFNjcmlwdEJy
ZWEKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJ
ZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRFZhbHVlKTsKICAgICBpZiAoaXQgPT0gbV9zb3Vy
Y2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCiAgICAgICAgIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtw
b2ludHMuc2V0KHNvdXJjZUlEVmFsdWUsIExpbmVUb0JyZWFrcG9pbnRNYXAoKSkuaXRlcmF0b3I7
Ci0gICAgaWYgKGl0LT5zZWNvbmQuY29udGFpbnMoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVy
ICsgMSkpCi0gICAgICAgIHJldHVybiAiIjsKLSAgICBpdC0+c2Vjb25kLnNldChzY3JpcHRCcmVh
a3BvaW50LmxpbmVOdW1iZXIgKyAxLCBzY3JpcHRCcmVha3BvaW50KTsKKyAgICBMaW5lVG9CcmVh
a3BvaW50TWFwOjppdGVyYXRvciBicmVha3NJdCA9IGl0LT5zZWNvbmQuZmluZChzY3JpcHRCcmVh
a3BvaW50LmxpbmVOdW1iZXIgKyAxKTsKKyAgICBpZiAoYnJlYWtzSXQgPT0gaXQtPnNlY29uZC5l
bmQoKSkKKyAgICAgICAgYnJlYWtzSXQgPSBpdC0+c2Vjb25kLnNldChzY3JpcHRCcmVha3BvaW50
LmxpbmVOdW1iZXIgKyAxLCBCcmVha3BvaW50c0luTGluZSgpKS5pdGVyYXRvcjsKKworICAgIEJy
ZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25kOworICAgIHVu
c2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykgeworICAgICAgICBpZiAoYnJlYWtzVmVj
dG9yLmF0KGkpLmNvbHVtbk51bWJlciA9PSBzY3JpcHRCcmVha3BvaW50LmNvbHVtbk51bWJlcikK
KyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisgICAgYnJlYWtzVmVjdG9yLmFwcGVuZChz
Y3JpcHRCcmVha3BvaW50KTsKKwogICAgICphY3R1YWxMaW5lTnVtYmVyID0gc2NyaXB0QnJlYWtw
b2ludC5saW5lTnVtYmVyOwotICAgIC8vIEZJWE1FKFdLNTMwMDMpOiBpbXBsZW1lbnQgc2V0dGlu
ZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbi4KLSAgICAqYWN0dWFsQ29sdW1uTnVtYmVyID0g
MDsKLSAgICByZXR1cm4gc291cmNlSUQgKyAiOiIgKyBTdHJpbmc6Om51bWJlcihzY3JpcHRCcmVh
a3BvaW50LmxpbmVOdW1iZXIpOworICAgICphY3R1YWxDb2x1bW5OdW1iZXIgPSBzY3JpcHRCcmVh
a3BvaW50LmNvbHVtbk51bWJlcjsKKyAgICByZXR1cm4gc291cmNlSUQgKyAiOiIgKyBTdHJpbmc6
Om51bWJlcihzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIpICsgIjoiICsgU3RyaW5nOjpudW1i
ZXIoc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXIpOwogfQogCiB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpyZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKQogewog
ICAgIFZlY3RvcjxTdHJpbmc+IHRva2VuczsKICAgICBicmVha3BvaW50SWQuc3BsaXQoIjoiLCB0
b2tlbnMpOwotICAgIGlmICh0b2tlbnMuc2l6ZSgpICE9IDIpCisgICAgaWYgKHRva2Vucy5zaXpl
KCkgIT0gMykKICAgICAgICAgcmV0dXJuOwogICAgIGJvb2wgc3VjY2VzczsKICAgICBpbnRwdHJf
dCBzb3VyY2VJRFZhbHVlID0gdG9rZW5zWzBdLnRvSW50UHRyKCZzdWNjZXNzKTsKQEAgLTk3LDkg
KzEwNSw2MyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50KGNvbnN0
IFN0cmluZyYgYnJlYWtwb2ludElkKQogICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIgPSB0b2tlbnNb
MV0udG9VSW50KCZzdWNjZXNzKTsKICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgIHJldHVybjsK
KyAgICB1bnNpZ25lZCBjb2x1bW5OdW1iZXIgPSB0b2tlbnNbMl0udG9VSW50KCZzdWNjZXNzKTsK
KyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybjsKKwogICAgIFNvdXJjZUlkVG9CcmVh
a3BvaW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5maW5kKHNv
dXJjZUlEVmFsdWUpOwotICAgIGlmIChpdCAhPSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5lbmQo
KSkKLSAgICAgICAgaXQtPnNlY29uZC5yZW1vdmUobGluZU51bWJlciArIDEpOworICAgIGlmIChp
dCA9PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IExpbmVUb0JyZWFrcG9pbnRNYXA6Oml0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5maW5k
KGxpbmVOdW1iZXIgKyAxKTsKKyAgICBpZiAoYnJlYWtzSXQgPT0gaXQtPnNlY29uZC5lbmQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQnJlYWtwb2ludHNJbkxpbmUmIGJyZWFrc1ZlY3RvciA9
IGJyZWFrc0l0LT5zZWNvbmQ7CisgICAgdW5zaWduZWQgYnJlYWtzQ291bnQgPSBicmVha3NWZWN0
b3Iuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBicmVha3NDb3VudDsgaSsr
KSB7CisgICAgICAgIGlmIChicmVha3NWZWN0b3IuYXQoaSkuY29sdW1uTnVtYmVyID09IHN0YXRp
Y19jYXN0PGludD4oY29sdW1uTnVtYmVyKSkgeworICAgICAgICAgICAgYnJlYWtzVmVjdG9yLnJl
bW92ZShpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IFNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDdXJyZW50U3RhdGVtZW50UG9zaXRpb24oaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lKQoreworICAgIGlmIChsaW5lIDwgMCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgU291cmNlUHJvdmlkZXIqIHNvdXJjZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8U291
cmNlUHJvdmlkZXIqPihzb3VyY2VJRCk7CisKKyAgICBpZiAobV9jdXJyZW50U291cmNlSUQgIT0g
c291cmNlSUQpIHsKKyAgICAgICAgU3RyaW5nIHNvdXJjZUNvZGUgPSB1c3RyaW5nVG9TdHJpbmco
SlNDOjpVU3RyaW5nKGNvbnN0X2Nhc3Q8U3RyaW5nSW1wbCo+KHNvdXJjZS0+ZGF0YSgpKSkpOwor
ICAgICAgICBtX2N1cnJlbnRTb3VyY2VDb2RlLmNsZWFyKCk7CisgICAgICAgIHNvdXJjZUNvZGUu
c3BsaXQoIlxuIiwgdHJ1ZSwgbV9jdXJyZW50U291cmNlQ29kZSk7CisgICAgICAgIG1fY3VycmVu
dFNvdXJjZUlEID0gc291cmNlSUQ7CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9u
LmxpbmVOdW1iZXIgPSAwOworICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1
bW5OdW1iZXIgPSAwOworICAgIH0KKworICAgIGlmIChsaW5lICE9IG1fY3VycmVudFN0YXRlbWVu
dFBvc2l0aW9uLmxpbmVOdW1iZXIpIHsKKyAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRp
b24ubGluZU51bWJlciA9IGxpbmU7CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9u
LmNvbHVtbk51bWJlciA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpbnQgc3Rh
cnRMaW5lID0gc291cmNlLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLnplcm9CYXNlZEludCgpOwor
ICAgIGlmICgobV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51bWJlciAtIHN0YXJ0TGlu
ZSAtIDEpID49IHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50U291cmNlQ29kZS5zaXplKCkpKQor
ICAgICAgICByZXR1cm47CisgICAgY29uc3QgU3RyaW5nJiBjb2RlSW5MaW5lID0gbV9jdXJyZW50
U291cmNlQ29kZVttX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyIC0gc3RhcnRM
aW5lIC0gMV07CisgICAgaWYgKGNvZGVJbkxpbmUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47
CisgICAgaW50IG5leHRDb2x1bW4gPSBjb2RlSW5MaW5lLmZpbmQoIjsiLCBtX2N1cnJlbnRTdGF0
ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIpOworICAgIGlmIChuZXh0Q29sdW1uICE9IC0xKSB7
CisgICAgICAgIFVDaGFyIGMgPSBjb2RlSW5MaW5lW25leHRDb2x1bW4gKyAxXTsKKyAgICAgICAg
aWYgKGMgPT0gJyAnIHx8IGMgPT0gJ1x0JykKKyAgICAgICAgICAgIG5leHRDb2x1bW4gKz0gMTsK
KyAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0gbmV4dENv
bHVtbiArIDE7CisgICAgfSBlbHNlCisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9u
LmNvbHVtbk51bWJlciA9IDA7CiB9CiAKIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0JyZWFr
cG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24pIGNv
bnN0CkBAIC0xMTAsMTkgKzE3MiwzNyBAQCBib29sIFNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVh
a3BvaW50KGludHB0cl90IHNvdXJjZUlELCBjb25zdCBUZXh0UG9zaXRpb24mIHBvcwogICAgIFNv
dXJjZUlkVG9CcmVha3BvaW50c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3NvdXJjZUlkVG9C
cmVha3BvaW50cy5maW5kKHNvdXJjZUlEKTsKICAgICBpZiAoaXQgPT0gbV9zb3VyY2VJZFRvQnJl
YWtwb2ludHMuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpbnQgbGluZU51bWJl
ciA9IHBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpOwotICAgIGlmIChsaW5lTnVtYmVyIDw9
IDApCisKKyAgICBpbnQgbGluZU51bWJlciA9IHBvc2l0aW9uLm1fbGluZS56ZXJvQmFzZWRJbnQo
KTsKKyAgICBpbnQgY29sdW1uTnVtYmVyID0gcG9zaXRpb24ubV9jb2x1bW4uemVyb0Jhc2VkSW50
KCk7CisgICAgaWYgKGxpbmVOdW1iZXIgPCAwIHx8IGNvbHVtbk51bWJlciA8IDApCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6OmNvbnN0X2l0ZXJhdG9y
IGJyZWFrc0l0ID0gaXQtPnNlY29uZC5maW5kKGxpbmVOdW1iZXIgKyAxKTsKKyAgICBpZiAoYnJl
YWtzSXQgPT0gaXQtPnNlY29uZC5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIExp
bmVUb0JyZWFrcG9pbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGJyZWFrSXQgPSBpdC0+c2Vjb25kLmZp
bmQobGluZU51bWJlcik7Ci0gICAgaWYgKGJyZWFrSXQgPT0gaXQtPnNlY29uZC5lbmQoKSkKKwor
ICAgIGJvb2wgaGl0ID0gZmFsc2U7CisgICAgY29uc3QgQnJlYWtwb2ludHNJbkxpbmUmIGJyZWFr
c1ZlY3RvciA9IGJyZWFrc0l0LT5zZWNvbmQ7CisgICAgdW5zaWduZWQgYnJlYWtzQ291bnQgPSBi
cmVha3NWZWN0b3Iuc2l6ZSgpOworICAgIHVuc2lnbmVkIGk7CisgICAgZm9yIChpID0gMDsgaSA8
IGJyZWFrc0NvdW50OyBpKyspIHsKKyAgICAgICAgaW50IGJyZWFrQ29sdW1uID0gYnJlYWtzVmVj
dG9yLmF0KGkpLmNvbHVtbk51bWJlcjsKKyAgICAgICAgaW50IGJyZWFrTGluZSA9IGJyZWFrc1Zl
Y3Rvci5hdChpKS5saW5lTnVtYmVyOworICAgICAgICBpZiAobGluZU51bWJlciA9PSBicmVha0xp
bmUgJiYgY29sdW1uTnVtYmVyID09IGJyZWFrQ29sdW1uKSB7CisgICAgICAgICAgICBoaXQgPSB0
cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFoaXQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEFuIGVtcHR5IGNvbmRpdGlvbiBjb3Vu
dHMgYXMgbm8gY29uZGl0aW9uIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gInRydWUiLgotICAgIGlm
IChicmVha0l0LT5zZWNvbmQuY29uZGl0aW9uLmlzRW1wdHkoKSkKKyAgICBpZiAoYnJlYWtzVmVj
dG9yLmF0KGkpLmNvbmRpdGlvbi5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgSlNWYWx1ZSBleGNlcHRpb247Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBtX2N1cnJlbnRDYWxs
RnJhbWUtPmV2YWx1YXRlKHN0cmluZ1RvVVN0cmluZyhicmVha0l0LT5zZWNvbmQuY29uZGl0aW9u
KSwgZXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IG1fY3VycmVudENhbGxGcmFtZS0+
ZXZhbHVhdGUoc3RyaW5nVG9VU3RyaW5nKGJyZWFrc1ZlY3Rvci5hdChpKS5jb25kaXRpb24pLCBl
eGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAgLy8gQW4gZXJyb25lb3Vz
IGNvbmRpdGlvbiBjb3VudHMgYXMgImZhbHNlIi4KICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MzQ3LDIwICs0MjcsMjAgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5jdGlv
blRvTGlzdGVuZXJzKEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjawogICAgIG1fY2FsbGluZ0xp
c3RlbmVycyA9IGZhbHNlOwogfQogCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjcmVhdGVDYWxs
RnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNh
bGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6Y3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBEZWJ1Z2dl
ckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKLSAgICBUZXh0UG9zaXRpb24gdGV4dFBvc2l0
aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChsaW5lTnVtYmVyKSwgT3JkaW5hbE51
bWJlcjo6Zmlyc3QoKSk7CisgICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbihPcmRpbmFsTnVt
YmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZyb21aZXJv
QmFzZWRJbnQoY29sdW1uTnVtYmVyKSk7CiAgICAgbV9jdXJyZW50Q2FsbEZyYW1lID0gSmF2YVNj
cmlwdENhbGxGcmFtZTo6Y3JlYXRlKGRlYnVnZ2VyQ2FsbEZyYW1lLCBtX2N1cnJlbnRDYWxsRnJh
bWUsIHNvdXJjZUlELCB0ZXh0UG9zaXRpb24pOwogICAgIHBhdXNlSWZOZWVkZWQoZGVidWdnZXJD
YWxsRnJhbWUuZHluYW1pY0dsb2JhbE9iamVjdCgpKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6dXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBEZWJ1Z2dlckNhbGxG
cmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJl
cikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVk
ZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBz
b3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7CiAgICAgQVNTRVJU
KG1fY3VycmVudENhbGxGcmFtZSk7CiAgICAgaWYgKCFtX2N1cnJlbnRDYWxsRnJhbWUpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJl
cjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpmaXJzdCgpKTsK
KyAgICBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNl
ZEludChsaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6ZnJvbVplcm9CYXNlZEludChjb2x1bW5O
dW1iZXIpKTsKICAgICBtX2N1cnJlbnRDYWxsRnJhbWUtPnVwZGF0ZShkZWJ1Z2dlckNhbGxGcmFt
ZSwgc291cmNlSUQsIHRleHRQb3NpdGlvbik7CiAgICAgcGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNh
bGxGcmFtZS5keW5hbWljR2xvYmFsT2JqZWN0KCkpOwogfQpAQCAtNDAxLDIyICs0ODEsMzcgQEAg
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VJZk5lZWRlZChKU0dsb2JhbE9iamVjdCogZHlu
YW1pY0dsb2JhbE9iamVjdCkKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbEV2ZW50KGNv
bnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNl
SUQsIGludCBsaW5lTnVtYmVyKQogeworICAgIGNhbGxFdmVudChkZWJ1Z2dlckNhbGxGcmFtZSwg
c291cmNlSUQsIGxpbmVOdW1iZXIsIDApOworfQorCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpj
YWxsRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCit7CiAgICAg
aWYgKCFtX3BhdXNlZCkKLSAgICAgICAgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChk
ZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAgICBjcmVhdGVD
YWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YXRT
dGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCiB7CisgICAgYXRTdGF0ZW1lbnQoZGVidWdn
ZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCAwKTsKK30KKwordm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIpCit7CiAgICAgaWYgKCFtX3BhdXNlZCkKLSAgICAgICAgdXBkYXRlQ2FsbEZyYW1lQW5k
UGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOwor
ICAgICAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1l
LCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6cmV0dXJuRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCiB7CisgICAgcmV0
dXJuRXZlbnQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCAwKTsKK30K
Kwordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmV0dXJuRXZlbnQoY29uc3QgRGVidWdnZXJDYWxs
RnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIpCit7CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICByZXR1
cm47CiAKLSAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZy
YW1lLCBzb3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJ
Zk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcik7CiAKICAgICAvLyBkZXRhY2ggbWF5IGhhdmUgYmVlbiBjYWxsZWQgZHVyaW5nIHBhdXNl
SWZOZWVkZWQKICAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkKQEAgLTQzMCwyNyArNTI1LDQy
IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KGNvbnN0IERlYnVnZ2VyQ2Fs
bEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZXhj
ZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpCiB7CisgICAgZXhj
ZXB0aW9uKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgMCwgaGFzSGFu
ZGxlcik7Cit9CisKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmV4Y2VwdGlvbihjb25zdCBEZWJ1
Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCBoYXNIYW5kbGVyKQorewogICAgIGlm
IChtX3BhdXNlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fcGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSA9PSBQYXVzZU9uQWxsRXhjZXB0aW9ucyB8fCAobV9wYXVzZU9uRXhjZXB0aW9uc1N0
YXRlID09IFBhdXNlT25VbmNhdWdodEV4Y2VwdGlvbnMgJiYgIWhhc0hhbmRsZXIpKQogICAgICAg
ICBtX3BhdXNlT25OZXh0U3RhdGVtZW50ID0gdHJ1ZTsKIAotICAgIHVwZGF0ZUNhbGxGcmFtZUFu
ZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsK
KyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBz
b3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6d2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1
Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQogeworICAg
IHdpbGxFeGVjdXRlUHJvZ3JhbShkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1i
ZXIsIDApOworfQorCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp3aWxsRXhlY3V0ZVByb2dyYW0o
Y29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3Vy
Y2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCit7CiAgICAgaWYgKCFtX3Bh
dXNlZCkKLSAgICAgICAgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNh
bGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAgICBjcmVhdGVDYWxsRnJhbWVB
bmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwg
Y29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVBy
b2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJf
dCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCiB7CisgICAgZGlkRXhlY3V0ZVByb2dyYW0oZGVi
dWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCAwKTsKK30KKwordm9pZCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUm
IGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGlu
dCBjb2x1bW5OdW1iZXIpCit7CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICByZXR1cm47CiAK
LSAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBz
b3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRl
ZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7
CiAKICAgICAvLyBUcmVhdCBzdGVwcGluZyBvdmVyIHRoZSBlbmQgb2YgYSBwcm9ncmFtIGxpa2Ug
c3RlcHBpbmcgb3V0LgogICAgIGlmIChtX2N1cnJlbnRDYWxsRnJhbWUgPT0gbV9wYXVzZU9uQ2Fs
bEZyYW1lKQpAQCAtNDYwLDExICs1NzAsMTYgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlk
RXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEYKIAog
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0IERlYnVnZ2Vy
Q2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5l
TnVtYmVyKQogeworICAgIGRpZFJlYWNoQnJlYWtwb2ludChkZWJ1Z2dlckNhbGxGcmFtZSwgc291
cmNlSUQsIGxpbmVOdW1iZXIsIDApOworfQorCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaWRS
ZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1l
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCit7
CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3BhdXNlT25OZXh0
U3RhdGVtZW50ID0gdHJ1ZTsKLSAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRl
YnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgdXBkYXRlQ2FsbEZy
YW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcik7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29tcGls
ZUFsbEpTRnVuY3Rpb25zU29vbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0RGVidWdTZXJ2ZXIuaAppbmRleCA4NGZiYTVjNjc4ZmM3MjVkZjI4NjJlZTlmZjNiZTY1MTg0
MTIxYWE2Li45ZDk3YzE2N2U1YzdkNDliZDZlNGVkYTFkNmJhYjQxM2YzYzhmZjM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKQEAgLTEyMyw4
ICsxMjMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaERpZFBhcnNlU291cmNlKGNv
bnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIEpTQzo6U291cmNlUHJvdmlkZXIqLCBib29sIGlz
Q29udGVudFNjcmlwdCk7CiAgICAgdm9pZCBkaXNwYXRjaEZhaWxlZFRvUGFyc2VTb3VyY2UoY29u
c3QgTGlzdGVuZXJTZXQmIGxpc3RlbmVycywgSlNDOjpTb3VyY2VQcm92aWRlciosIGludCBlcnJv
ckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIAotICAgIHZvaWQgY3JlYXRlQ2Fs
bEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50
cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKTsKLSAgICB2b2lkIHVwZGF0ZUNhbGxGcmFt
ZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90
IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7CisgICAgdm9pZCBjcmVhdGVDYWxsRnJhbWVBbmRQ
YXVzZUlmTmVlZGVkKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3Vy
Y2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOworICAgIHZvaWQgdXBkYXRl
Q2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwg
aW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKICAg
ICB2b2lkIHBhdXNlSWZOZWVkZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogZHluYW1pY0dsb2JhbE9i
amVjdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsK
QEAgLTEzOCw3ICsxMzgsMTkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVj
dXRlUHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNl
SUQsIGludCBsaW5lbm8pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29u
c3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5v
KTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBTY3JpcHRCcmVha3BvaW50PiBMaW5lVG9C
cmVha3BvaW50TWFwOworICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgSlNDOjpEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0IEpTQzo6RGVi
dWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGZpcnN0TGluZSwgaW50IGNv
bHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0IEpTQzo6RGVi
dWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIpOworICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgSlNDOjpEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlciwgYm9vbCBoYXNIYW5kbGVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4ZWN1
dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVubywgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGRpZEV4
ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3Vy
Y2VJRCwgaW50IGxpbmVubywgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlYWNoQnJlYWtwb2ludChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qg
c291cmNlSUQsIGludCBsaW5lbm8sIGludCBjb2x1bW5OdW1iZXIpOworCisKKyAgICB2b2lkIHVw
ZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbihpbnRwdHJfdCwgaW50KTsKKworICAgIHR5cGVk
ZWYgVmVjdG9yPFNjcmlwdEJyZWFrcG9pbnQ+IEJyZWFrcG9pbnRzSW5MaW5lOworICAgIHR5cGVk
ZWYgSGFzaE1hcDxsb25nLCBCcmVha3BvaW50c0luTGluZT4gTGluZVRvQnJlYWtwb2ludE1hcDsK
ICAgICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIExpbmVUb0JyZWFrcG9pbnRNYXA+IFNvdXJj
ZUlkVG9CcmVha3BvaW50c01hcDsKIAogICAgIGJvb2wgbV9jYWxsaW5nTGlzdGVuZXJzOwpAQCAt
MTUxLDYgKzE2MywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJh
bWU+IG1fY3VycmVudENhbGxGcmFtZTsKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXAgbV9z
b3VyY2VJZFRvQnJlYWtwb2ludHM7CiAgICAgVGltZXI8U2NyaXB0RGVidWdTZXJ2ZXI+IG1fcmVj
b21waWxlVGltZXI7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2N1cnJlbnRTb3VyY2VDb2RlOwor
ICAgIGludHB0cl90IG1fY3VycmVudFNvdXJjZUlEOworICAgIFNjcmlwdEJyZWFrcG9pbnQgbV9j
dXJyZW50U3RhdGVtZW50UG9zaXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155964</attachid>
            <date>2012-08-01 20:55:37 -0700</date>
            <delta_ts>2012-08-02 05:23:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120802115515.patch</filename>
            <type>text/plain</type>
            <size>314821</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
NWE0YjRhYmQ5MTIyZWU4YmM1Mzk4OTFmZmI2Zjk1ZTQyOGM0OGNhLi4yZmQ5M2U2OGY0N2MyYTYz
ZTg1ZGNiY2NjNjMwYWYyYzExNmJmNjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NjkgQEAKKzIwMTItMDgtMDEgIFBldGVyIFdhbmcgIDxwZXRlci53YW5nQHRvcmNobW9i
aWxlLmNvbS5jbj4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbSlNDXSBpbXBsZW1lbnQgc2V0
dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMwMDMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZnJleSBHYXJlbi4KKworICAgICAgICBBZGQgYSBjb3VudGVyIGluIGxleGVyIHRvIHJlY29yZCB0
aGUgY29sdW1uIG9mIGVhY2ggdG9rZW4uIERlYnVnZ2VyIHdpbGwgdXNlIGNvbHVtbiBpbmZvCisg
ICAgICAgIGluICJQcmV0dHkgUHJpbnQiIGRlYnVnIG1vZGUgb2YgSW5zcGVjdG9yLgorCisgICAg
ICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpw
YWRPcGNvZGVOYW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChCeXRl
Y29kZUdlbmVyYXRvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OkFycmF5Tm9kZTo6dG9Bcmd1bWVudExpc3QpOgorICAgICAgICAoSlND
OjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkNvbmRpdGlvbmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29uc3RTdGF0
ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFbXB0eVN0YXRlbWVudE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXhwclN0YXRlbWVudE5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OlZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OklmTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6SWZFbHNl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RG9XaGlsZU5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OldoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6Rm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb250aW51ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkJyZWFrTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6V2l0aE5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OlN3aXRjaE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkxhYmVsTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VGhyb3dO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpUcnlOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6RXZhbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuaDoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjp1bndpbmRDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dGhyb3dF
eGNlcHRpb24pOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZGVidWcpOgorICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChJbnRlcnByZXRlcik6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVi
dWcpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfZGVidWcpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAg
IChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEFTVEJ1aWxkZXIpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVDb21tYUV4cHIpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjpjcmVhdGVMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
Y3JlYXRlVW5hcnlQbHVzKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVm9pZCk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OnRoaXNFeHByKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZU9iamVjdExpdGVyYWwpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJheSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZU51bWJlckV4cHIpOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVCb29sZWFuKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTnVsbCk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUJyYWNrZXRBY2Nlc3MpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVSZWdFeHApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVO
ZXdFeHByKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uZGl0aW9uYWxFeHBy
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXNzaWduUmVzb2x2ZSk6CisgICAg
ICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVBcmd1bWVudHNMaXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlUHJvcGVydHlMaXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY0Rl
Y2xTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCbG9ja1N0YXRl
bWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUV4cHJTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVJZlN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZvckxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVGb3JJbkxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFbXB0
eVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVZhclN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVJldHVyblN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUJyZWFrU3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29udGludWVTdGF0ZW1lbnQpOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjpjcmVhdGVUcnlTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVXaGlsZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURv
V2hpbGVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMYWJlbFN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVdpdGhTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVUaHJvd1N0YXRlbWVudCk6CisgICAg
ICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURlYnVnZ2VyKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQ29uc3RTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjphcHBlbmRDb25zdERlY2wpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjb21iaW5lQ29t
bWFOb2Rlcyk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFwcGVuZEJpbmFyeU9wZXJhdGlv
bik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUFzc2lnbm1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjptYWtlVHlwZU9mTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VEZWxl
dGVOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQml0d2lzZU5vdE5vZGUpOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjptYWtlTXVsdE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpt
YWtlRGl2Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VNb2ROb2RlKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUFkZE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjptYWtlU3ViTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VMZWZ0
U2hpZnROb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZVJpZ2h0U2hpZnROb2Rl
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZVVSaWdodFNoaWZ0Tm9kZSk6CisgICAg
ICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VCaXRPck5vZGUpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjptYWtlQml0QW5kTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VC
aXRYT3JOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5v
ZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZSk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6bWFrZVByZWZpeE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlUG9z
dGZpeE5vZGUpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6Ojo6
c2V0Q29kZSk6CisgICAgICAgIChKU0M6Ojo6aW50ZXJuYWxTaGlmdCk6CisgICAgICAgIChKU0M6
Ojo6c2hpZnQpOgorICAgICAgICAoSlNDOjo6OmxleCk6CisgICAgICAgICogcGFyc2VyL0xleGVy
Lmg6CisgICAgICAgIChMZXhlcik6CisgICAgICAgIChKU0M6OkxleGVyOjpjdXJyZW50Q29sdW1u
TnVtYmVyKToKKyAgICAgICAgKEpTQzo6OjpsZXhFeHBlY3RJZGVudGlmaWVyKToKKyAgICAgICAg
KiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpOb2RlOjpOb2RlKToK
KyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OkV4cHJlc3Npb25Ob2RlKToKKyAgICAgICAg
KEpTQzo6U3RhdGVtZW50Tm9kZTo6U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6Ok51bGxO
b2RlOjpOdWxsTm9kZSk6CisgICAgICAgIChKU0M6OkJvb2xlYW5Ob2RlOjpCb29sZWFuTm9kZSk6
CisgICAgICAgIChKU0M6Ok51bWJlck5vZGU6Ok51bWJlck5vZGUpOgorICAgICAgICAoSlNDOjpT
dHJpbmdOb2RlOjpTdHJpbmdOb2RlKToKKyAgICAgICAgKEpTQzo6UmVnRXhwTm9kZTo6UmVnRXhw
Tm9kZSk6CisgICAgICAgIChKU0M6OlRoaXNOb2RlOjpUaGlzTm9kZSk6CisgICAgICAgIChKU0M6
OlJlc29sdmVOb2RlOjpSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkFycmF5Tm9kZTo6QXJy
YXlOb2RlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9k
ZSk6CisgICAgICAgIChKU0M6Ok9iamVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZSk6
CisgICAgICAgIChKU0M6OkJyYWNrZXRBY2Nlc3Nvck5vZGU6OkJyYWNrZXRBY2Nlc3Nvck5vZGUp
OgorICAgICAgICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZSk6CisgICAg
ICAgIChKU0M6OkFyZ3VtZW50TGlzdE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAo
SlNDOjpOZXdFeHByTm9kZTo6TmV3RXhwck5vZGUpOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rp
b25DYWxsTm9kZTo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlv
bkNhbGxWYWx1ZU5vZGU6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSk6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSk6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUp
OgorICAgICAgICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2Fs
bERvdE5vZGUpOgorICAgICAgICAoSlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAgICAgIChKU0M6OlByZVBvc3RSZXNvbHZlTm9kZTo6
UHJlUG9zdFJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6UG9zdGZpeFJlc29sdmVOb2RlOjpQ
b3N0Zml4UmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4QnJhY2tldE5vZGU6OlBv
c3RmaXhCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhEb3ROb2RlOjpQb3N0Zml4
RG90Tm9kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhFcnJvck5vZGU6OlBvc3RmaXhFcnJvck5v
ZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVSZXNvbHZlTm9kZTo6RGVsZXRlUmVzb2x2ZU5vZGUp
OgorICAgICAgICAoSlNDOjpEZWxldGVCcmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUpOgor
ICAgICAgICAoSlNDOjpEZWxldGVEb3ROb2RlOjpEZWxldGVEb3ROb2RlKToKKyAgICAgICAgKEpT
Qzo6RGVsZXRlVmFsdWVOb2RlOjpEZWxldGVWYWx1ZU5vZGUpOgorICAgICAgICAoSlNDOjpWb2lk
Tm9kZTo6Vm9pZE5vZGUpOgorICAgICAgICAoSlNDOjpUeXBlT2ZSZXNvbHZlTm9kZTo6VHlwZU9m
UmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVl
Tm9kZSk6CisgICAgICAgIChKU0M6OlByZWZpeFJlc29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9k
ZSk6CisgICAgICAgIChKU0M6OlByZWZpeEJyYWNrZXROb2RlOjpQcmVmaXhCcmFja2V0Tm9kZSk6
CisgICAgICAgIChKU0M6OlByZWZpeERvdE5vZGU6OlByZWZpeERvdE5vZGUpOgorICAgICAgICAo
SlNDOjpQcmVmaXhFcnJvck5vZGU6OlByZWZpeEVycm9yTm9kZSk6CisgICAgICAgIChKU0M6OlVu
YXJ5T3BOb2RlOjpVbmFyeU9wTm9kZSk6CisgICAgICAgIChKU0M6OlVuYXJ5UGx1c05vZGU6OlVu
YXJ5UGx1c05vZGUpOgorICAgICAgICAoSlNDOjpOZWdhdGVOb2RlOjpOZWdhdGVOb2RlKToKKyAg
ICAgICAgKEpTQzo6Qml0d2lzZU5vdE5vZGU6OkJpdHdpc2VOb3ROb2RlKToKKyAgICAgICAgKEpT
Qzo6TG9naWNhbE5vdE5vZGU6OkxvZ2ljYWxOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5
T3BOb2RlOjpCaW5hcnlPcE5vZGUpOgorICAgICAgICAoSlNDOjpNdWx0Tm9kZTo6TXVsdE5vZGUp
OgorICAgICAgICAoSlNDOjpEaXZOb2RlOjpEaXZOb2RlKToKKyAgICAgICAgKEpTQzo6TW9kTm9k
ZTo6TW9kTm9kZSk6CisgICAgICAgIChKU0M6OkFkZE5vZGU6OkFkZE5vZGUpOgorICAgICAgICAo
SlNDOjpTdWJOb2RlOjpTdWJOb2RlKToKKyAgICAgICAgKEpTQzo6TGVmdFNoaWZ0Tm9kZTo6TGVm
dFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OlJpZ2h0U2hpZnROb2RlOjpSaWdodFNoaWZ0Tm9k
ZSk6CisgICAgICAgIChKU0M6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGU6OlVuc2lnbmVkUmlnaHRT
aGlmdE5vZGUpOgorICAgICAgICAoSlNDOjpMZXNzTm9kZTo6TGVzc05vZGUpOgorICAgICAgICAo
SlNDOjpHcmVhdGVyTm9kZTo6R3JlYXRlck5vZGUpOgorICAgICAgICAoSlNDOjpMZXNzRXFOb2Rl
OjpMZXNzRXFOb2RlKToKKyAgICAgICAgKEpTQzo6R3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9k
ZSk6CisgICAgICAgIChKU0M6OlRocm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5
T3BOb2RlKToKKyAgICAgICAgKEpTQzo6SW5zdGFuY2VPZk5vZGU6Okluc3RhbmNlT2ZOb2RlKToK
KyAgICAgICAgKEpTQzo6SW5Ob2RlOjpJbk5vZGUpOgorICAgICAgICAoSlNDOjpFcXVhbE5vZGU6
OkVxdWFsTm9kZSk6CisgICAgICAgIChKU0M6Ok5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKToK
KyAgICAgICAgKEpTQzo6U3RyaWN0RXF1YWxOb2RlOjpTdHJpY3RFcXVhbE5vZGUpOgorICAgICAg
ICAoSlNDOjpOb3RTdHJpY3RFcXVhbE5vZGU6Ok5vdFN0cmljdEVxdWFsTm9kZSk6CisgICAgICAg
IChKU0M6OkJpdEFuZE5vZGU6OkJpdEFuZE5vZGUpOgorICAgICAgICAoSlNDOjpCaXRPck5vZGU6
OkJpdE9yTm9kZSk6CisgICAgICAgIChKU0M6OkJpdFhPck5vZGU6OkJpdFhPck5vZGUpOgorICAg
ICAgICAoSlNDOjpMb2dpY2FsT3BOb2RlOjpMb2dpY2FsT3BOb2RlKToKKyAgICAgICAgKEpTQzo6
Q29uZGl0aW9uYWxOb2RlOjpDb25kaXRpb25hbE5vZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9k
aWZ5UmVzb2x2ZU5vZGU6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkFz
c2lnblJlc29sdmVOb2RlOjpBc3NpZ25SZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRN
b2RpZnlCcmFja2V0Tm9kZTo6UmVhZE1vZGlmeUJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6
QXNzaWduQnJhY2tldE5vZGU6OkFzc2lnbkJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNz
aWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3RO
b2RlOjpSZWFkTW9kaWZ5RG90Tm9kZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkVycm9yTm9kZTo6
QXNzaWduRXJyb3JOb2RlKToKKyAgICAgICAgKEpTQzo6Q29tbWFOb2RlOjpDb21tYU5vZGUpOgor
ICAgICAgICAoSlNDOjpDb25zdFN0YXRlbWVudE5vZGU6OkNvbnN0U3RhdGVtZW50Tm9kZSk6Cisg
ICAgICAgIChKU0M6OkVtcHR5U3RhdGVtZW50Tm9kZTo6RW1wdHlTdGF0ZW1lbnROb2RlKToKKyAg
ICAgICAgKEpTQzo6RGVidWdnZXJTdGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGUp
OgorICAgICAgICAoSlNDOjpFeHByU3RhdGVtZW50Tm9kZTo6RXhwclN0YXRlbWVudE5vZGUpOgor
ICAgICAgICAoSlNDOjpWYXJTdGF0ZW1lbnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKToKKyAgICAg
ICAgKEpTQzo6SWZOb2RlOjpJZk5vZGUpOgorICAgICAgICAoSlNDOjpJZkVsc2VOb2RlOjpJZkVs
c2VOb2RlKToKKyAgICAgICAgKEpTQzo6RG9XaGlsZU5vZGU6OkRvV2hpbGVOb2RlKToKKyAgICAg
ICAgKEpTQzo6V2hpbGVOb2RlOjpXaGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjpG
b3JOb2RlKToKKyAgICAgICAgKEpTQzo6Q29udGludWVOb2RlOjpDb250aW51ZU5vZGUpOgorICAg
ICAgICAoSlNDOjpCcmVha05vZGU6OkJyZWFrTm9kZSk6CisgICAgICAgIChKU0M6OlJldHVybk5v
ZGU6OlJldHVybk5vZGUpOgorICAgICAgICAoSlNDOjpXaXRoTm9kZTo6V2l0aE5vZGUpOgorICAg
ICAgICAoSlNDOjpMYWJlbE5vZGU6OkxhYmVsTm9kZSk6CisgICAgICAgIChKU0M6OlRocm93Tm9k
ZTo6VGhyb3dOb2RlKToKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6VHJ5Tm9kZSk6CisgICAgICAg
IChKU0M6OkZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0Rl
Y2xOb2RlOjpGdW5jRGVjbE5vZGUpOgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjpTd2l0Y2hO
b2RlKToKKyAgICAgICAgKEpTQzo6Q29uc3REZWNsTm9kZTo6Q29uc3REZWNsTm9kZSk6CisgICAg
ICAgIChKU0M6OkJsb2NrTm9kZTo6QmxvY2tOb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2Rl
OjpGb3JJbk5vZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OlN0YXRlbWVudE5vZGU6OnNldExvYyk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpT
Y29wZU5vZGU6OlNjb3BlTm9kZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpQcm9ncmFt
Tm9kZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpFdmFsTm9kZTo6RXZhbE5vZGUpOgorICAgICAgICAoSlNDOjpFdmFsTm9kZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZSk6CisgICAgICAgICogcGFyc2VyL05v
ZGVzLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKEpTQzo6Tm9kZTo6Y29sdW1uTm8pOgor
ICAgICAgICAoRXhwcmVzc2lvbk5vZGUpOgorICAgICAgICAoU3RhdGVtZW50Tm9kZSk6CisgICAg
ICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OmNvbHVtbik6CisgICAgICAgIChOdWxsTm9kZSk6Cisg
ICAgICAgIChCb29sZWFuTm9kZSk6CisgICAgICAgIChOdW1iZXJOb2RlKToKKyAgICAgICAgKFN0
cmluZ05vZGUpOgorICAgICAgICAoUmVnRXhwTm9kZSk6CisgICAgICAgIChUaGlzTm9kZSk6Cisg
ICAgICAgIChSZXNvbHZlTm9kZSk6CisgICAgICAgIChBcnJheU5vZGUpOgorICAgICAgICAoUHJv
cGVydHlMaXN0Tm9kZSk6CisgICAgICAgIChPYmplY3RMaXRlcmFsTm9kZSk6CisgICAgICAgIChC
cmFja2V0QWNjZXNzb3JOb2RlKToKKyAgICAgICAgKERvdEFjY2Vzc29yTm9kZSk6CisgICAgICAg
IChBcmd1bWVudExpc3ROb2RlKToKKyAgICAgICAgKE5ld0V4cHJOb2RlKToKKyAgICAgICAgKEV2
YWxGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZSk6Cisg
ICAgICAgIChGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSk6CisgICAgICAgIChGdW5jdGlvbkNhbGxC
cmFja2V0Tm9kZSk6CisgICAgICAgIChGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKENh
bGxGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZSk6CisgICAgICAgIChQcmVQb3N0UmVzb2x2ZU5vZGUpOgorICAgICAgICAoUG9zdGZpeFJlc29s
dmVOb2RlKToKKyAgICAgICAgKFBvc3RmaXhCcmFja2V0Tm9kZSk6CisgICAgICAgIChQb3N0Zml4
RG90Tm9kZSk6CisgICAgICAgIChQb3N0Zml4RXJyb3JOb2RlKToKKyAgICAgICAgKERlbGV0ZVJl
c29sdmVOb2RlKToKKyAgICAgICAgKERlbGV0ZUJyYWNrZXROb2RlKToKKyAgICAgICAgKERlbGV0
ZURvdE5vZGUpOgorICAgICAgICAoRGVsZXRlVmFsdWVOb2RlKToKKyAgICAgICAgKFZvaWROb2Rl
KToKKyAgICAgICAgKFR5cGVPZlJlc29sdmVOb2RlKToKKyAgICAgICAgKFR5cGVPZlZhbHVlTm9k
ZSk6CisgICAgICAgIChQcmVmaXhSZXNvbHZlTm9kZSk6CisgICAgICAgIChQcmVmaXhCcmFja2V0
Tm9kZSk6CisgICAgICAgIChQcmVmaXhEb3ROb2RlKToKKyAgICAgICAgKFByZWZpeEVycm9yTm9k
ZSk6CisgICAgICAgIChVbmFyeU9wTm9kZSk6CisgICAgICAgIChVbmFyeVBsdXNOb2RlKToKKyAg
ICAgICAgKE5lZ2F0ZU5vZGUpOgorICAgICAgICAoQml0d2lzZU5vdE5vZGUpOgorICAgICAgICAo
TG9naWNhbE5vdE5vZGUpOgorICAgICAgICAoQmluYXJ5T3BOb2RlKToKKyAgICAgICAgKE11bHRO
b2RlKToKKyAgICAgICAgKERpdk5vZGUpOgorICAgICAgICAoTW9kTm9kZSk6CisgICAgICAgIChB
ZGROb2RlKToKKyAgICAgICAgKFN1Yk5vZGUpOgorICAgICAgICAoTGVmdFNoaWZ0Tm9kZSk6Cisg
ICAgICAgIChSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChVbnNpZ25lZFJpZ2h0U2hpZnROb2Rl
KToKKyAgICAgICAgKExlc3NOb2RlKToKKyAgICAgICAgKEdyZWF0ZXJOb2RlKToKKyAgICAgICAg
KExlc3NFcU5vZGUpOgorICAgICAgICAoR3JlYXRlckVxTm9kZSk6CisgICAgICAgIChUaHJvd2Fi
bGVCaW5hcnlPcE5vZGUpOgorICAgICAgICAoSW5zdGFuY2VPZk5vZGUpOgorICAgICAgICAoSW5O
b2RlKToKKyAgICAgICAgKEVxdWFsTm9kZSk6CisgICAgICAgIChOb3RFcXVhbE5vZGUpOgorICAg
ICAgICAoU3RyaWN0RXF1YWxOb2RlKToKKyAgICAgICAgKE5vdFN0cmljdEVxdWFsTm9kZSk6Cisg
ICAgICAgIChCaXRBbmROb2RlKToKKyAgICAgICAgKEJpdE9yTm9kZSk6CisgICAgICAgIChCaXRY
T3JOb2RlKToKKyAgICAgICAgKExvZ2ljYWxPcE5vZGUpOgorICAgICAgICAoQ29uZGl0aW9uYWxO
b2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlSZXNvbHZlTm9kZSk6CisgICAgICAgIChBc3NpZ25S
ZXNvbHZlTm9kZSk6CisgICAgICAgIChSZWFkTW9kaWZ5QnJhY2tldE5vZGUpOgorICAgICAgICAo
QXNzaWduQnJhY2tldE5vZGUpOgorICAgICAgICAoQXNzaWduRG90Tm9kZSk6CisgICAgICAgIChS
ZWFkTW9kaWZ5RG90Tm9kZSk6CisgICAgICAgIChBc3NpZ25FcnJvck5vZGUpOgorICAgICAgICAo
Q29tbWFOb2RlKToKKyAgICAgICAgKENvbnN0RGVjbE5vZGUpOgorICAgICAgICAoQ29uc3RTdGF0
ZW1lbnROb2RlKToKKyAgICAgICAgKEJsb2NrTm9kZSk6CisgICAgICAgIChFbXB0eVN0YXRlbWVu
dE5vZGUpOgorICAgICAgICAoRGVidWdnZXJTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEV4cHJT
dGF0ZW1lbnROb2RlKToKKyAgICAgICAgKFZhclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSWZO
b2RlKToKKyAgICAgICAgKElmRWxzZU5vZGUpOgorICAgICAgICAoRG9XaGlsZU5vZGUpOgorICAg
ICAgICAoV2hpbGVOb2RlKToKKyAgICAgICAgKEZvck5vZGUpOgorICAgICAgICAoRm9ySW5Ob2Rl
KToKKyAgICAgICAgKENvbnRpbnVlTm9kZSk6CisgICAgICAgIChCcmVha05vZGUpOgorICAgICAg
ICAoUmV0dXJuTm9kZSk6CisgICAgICAgIChXaXRoTm9kZSk6CisgICAgICAgIChMYWJlbE5vZGUp
OgorICAgICAgICAoVGhyb3dOb2RlKToKKyAgICAgICAgKFRyeU5vZGUpOgorICAgICAgICAoU2Nv
cGVOb2RlKToKKyAgICAgICAgKFByb2dyYW1Ob2RlKToKKyAgICAgICAgKEV2YWxOb2RlKToKKyAg
ICAgICAgKEZ1bmN0aW9uQm9keU5vZGUpOgorICAgICAgICAoRnVuY0V4cHJOb2RlKToKKyAgICAg
ICAgKEZ1bmNEZWNsTm9kZSk6CisgICAgICAgIChTd2l0Y2hOb2RlKToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6OjpwYXJzZVNvdXJjZUVsZW1lbnRzKToKKyAg
ICAgICAgKEpTQzo6OjpwYXJzZVZhckRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJz
ZUNvbnN0RGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlRG9XaGlsZVN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VXaGlsZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VWYXJEZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29uc3RE
ZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlNDOjo6OnBhcnNlRm9yU3RhdGVtZW50KToKKyAg
ICAgICAgKEpTQzo6OjpwYXJzZUJyZWFrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJz
ZUNvbnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVJldHVyblN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VUaHJvd1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VXaXRoU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVN3aXRjaFN0YXRl
bWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VUcnlTdGF0ZW1lbnQpOgorICAgICAgICAoSlND
Ojo6OnBhcnNlRGVidWdnZXJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlQmxvY2tT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VGdW5jdGlvbklu
Zm8pOgorICAgICAgICAoSlNDOjo6OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbik6CisgICAgICAg
IChKU0M6Ojo6cGFyc2VFeHByZXNzaW9uT3JMYWJlbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VFeHByZXNzaW9uU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUlmU3Rh
dGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICAoSlND
Ojo6OnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29u
ZGl0aW9uYWxFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUJpbmFyeUV4cHJlc3Np
b24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjo6OnBh
cnNlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VTdHJpY3RPYmplY3RMaXRl
cmFsKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUFycmF5TGl0ZXJhbCk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VBcmd1bWVu
dHMpOgorICAgICAgICAoSlNDOjo6OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAgICAgIChK
U0M6Ojo6cGFyc2VVbmFyeUV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoK
KyAgICAgICAgKEpTQzo6UGFyc2VyOjpuZXh0KToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpuZXh0
RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OlBhcnNlcjo6dG9rZW5TdGFydCk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjo6dG9rZW5MaW5lKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjp0
b2tlbkVuZCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6dG9rZW5Mb2NhdGlvbik6CisgICAgICAg
IChQYXJzZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmdldFRva2VuTmFtZSk6CisgICAgICAg
IChKU0M6Ojo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJUb2tlbnMuaDoKKyAgICAg
ICAgKEpTQzo6SlNUb2tlbkxvY2F0aW9uOjpKU1Rva2VuTG9jYXRpb24pOgorICAgICAgICAoSlNU
b2tlbkxvY2F0aW9uKToKKyAgICAgICAgKEpTVG9rZW4pOgorICAgICAgICAqIHBhcnNlci9Tb3Vy
Y2VQcm92aWRlckNhY2hlSXRlbS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlckNhY2hl
SXRlbTo6Y2xvc2VCcmFjZVRva2VuKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5o
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6Cisg
ICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUNvbW1hRXhwcik6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6Om1ha2VBc3NpZ25Ob2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6bWFrZVByZWZpeE5vZGUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpt
YWtlUG9zdGZpeE5vZGUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlVHlwZU9m
Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VEZWxldGVOb2RlKToKKyAg
ICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZU5lZ2F0ZU5vZGUpOgorICAgICAgICAoSlND
OjpTeW50YXhDaGVja2VyOjptYWtlQml0d2lzZU5vdE5vZGUpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tl
cjo6Y3JlYXRlVW5hcnlQbHVzKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRl
Vm9pZCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OnRoaXNFeHByKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZU9iamVjdExpdGVyYWwpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVBcnJheSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU51
bWJlckV4cHIpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVTdHJpbmcpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVCb29sZWFuKToKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlTnVsbCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZUJyYWNrZXRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVSZWdF
eHApOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOZXdFeHByKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ29uZGl0aW9uYWxFeHByKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQXNzaWduUmVzb2x2ZSk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZUFyZ3VtZW50c0xpc3QpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVQcm9wZXJ0eUxpc3QpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVG
dW5jRGVjbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJs
b2NrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRXhwclN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUlmU3RhdGVtZW50
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRm9yTG9vcCk6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OlN5
bnRheENoZWNrZXI6OmNyZWF0ZUVtcHR5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlVmFyU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tl
cjo6Y3JlYXRlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlQnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVh
dGVDb250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZVRyeVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN3aXRj
aFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVdoaWxlU3Rh
dGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlV2l0aFN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRocm93U3RhdGVtZW50KToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRGVidWdnZXIpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpjcmVhdGVDb25zdFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmFwcGVuZENvbnN0RGVjbCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9w
ZXJhdG9yU3RhY2tQb3ApOgorCiAyMDEyLTA4LTAxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgREZHIHNob3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuIFB1dEJ5VmFs
J3MgdGhhdCBjbG9iYmVyIHRoZSB3b3JsZCBhbmQgb25lcyB0aGF0IGRvbid0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5k
ZXggOWJmZGNjZDMxNDcyZTlkNThhZDNlMjE3ZDQ1YjBhNGFlZDdlMTNmMi4uMDc2M2U2ZWYwZTNh
N2FjN2JkZmQ0YzhjOTQyMmVlNDRkNTY4YTZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBA
CisyMDEyLTA4LTAxICBQZXRlciBXYW5nICA8cGV0ZXIud2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW0pTQ10gaW1wbGVtZW50IHNldHRpbmcgYnJlYWtw
b2ludHMgYnkgbGluZTpjb2x1bW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUzMDAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4u
CisKKyAgICAgICAgQXMgSlNDIGlzIGVuYWJsZWQgdG8gcHJvdmlkZSBjb2x1bW4gaW5mbyBvZiBz
dGF0ZW1lbnQsIFNjcmlwdERlYnVnU2VydmVyIGNhbiB1c2UgaXQgdG8KKyAgICAgICAgc3VwcG9y
dCAiUHJldHR5IFByaW50IiBkZWJ1ZyBtb2RlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0IGNhc2Ug
Zm9yIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2lu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2lu
dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2Vy
dmVyOjp1cGRhdGVDdXJyZW50U3RhdGVtZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0JyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RGVidWdTZXJ2ZXI6OmNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpleGNlcHRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OndpbGxFeGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlYWNoQnJlYWtwb2ludCk6CisgICAgICAgICog
YmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2Vy
dmVyKToKKwogMjAxMi0wOC0wMSAgWGluZ25hbiBXYW5nICA8eGluZ25hbi53YW5nQGludGVsLmNv
bT4KIAogICAgICAgICBJbmRleGVkREI6IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6Om1fbWV0YURh
dGFUeXBlIHNob3VsZCB1c2UgYnl0ZSB0eXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3Bjb2RlLmgKaW5kZXggMTRjZWZiOWQ5MDVkNWQ5MTIwZDBhNTE3ZjA3OGZmZDUwNTE0NjZhMS4u
NDMwOGU3OWRmNmFhMjNmNWNmNWYyNDYyNTM4ODQzYjI3NDRjOWE3OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtMTk0LDcgKzE5NCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBtYWNybyhvcF90aHJvdywgMikgXAogICAgICAgICBtYWNybyhvcF90aHJv
d19yZWZlcmVuY2VfZXJyb3IsIDIpIFwKICAgICAgICAgXAotICAgICAgICBtYWNybyhvcF9kZWJ1
ZywgNCkgXAorICAgICAgICBtYWNybyhvcF9kZWJ1ZywgNSkgXAogICAgICAgICBtYWNybyhvcF9w
cm9maWxlX3dpbGxfY2FsbCwgMikgXAogICAgICAgICBtYWNybyhvcF9wcm9maWxlX2RpZF9jYWxs
LCAyKSBcCiAgICAgICAgIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggMzNmMjgyYzY2NDY1NjA5NDMz
OWE0ZjY2NjM1NGExMWQ4YjYyMjc3Ni4uYWMyMzRiN2Y4OGJhYzM1ZjIyMzY0Nzc0NDZiNDI3OTlj
ZjlmY2ExMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTIwODMsNyArMjA4Myw3IEBAIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQb3BTY29wZSgpCiAgICAgbV9keW5hbWljU2NvcGVEZXB0aC0t
OwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVidWdIb29rKERlYnVnSG9va0lE
IGRlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCit2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0RGVidWdIb29rKERlYnVnSG9va0lEIGRlYnVnSG9va0lELCBpbnQgZmly
c3RMaW5lLCBpbnQgbGFzdExpbmUsIGludCBjb2x1bW4pCiB7CiAjaWYgRU5BQkxFKERFQlVHX1dJ
VEhfQlJFQUtQT0lOVCkKICAgICBpZiAoZGVidWdIb29rSUQgIT0gRGlkUmVhY2hCcmVha3BvaW50
KQpAQCAtMjA5Niw2ICsyMDk2LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVn
SG9vayhEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW4KICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZGVidWdIb29rSUQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChmaXJzdExpbmUpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChsYXN0TGluZSk7CisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNvbHVtbik7CiB9CiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OnB1c2hGaW5hbGx5Q29udGV4dChTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmgKaW5kZXggNTJmZDdlODNjNmMzNTAzMzU5OTEzNmMyZWI2ZDA4ZjJkMTYyYjQ5NS4uNDkw
OTkxZmE3ZjcxMjk2YTJmOTU0ZGNlNDQxYTA2YTJiODdmOWE4MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAt
NTA2LDcgKzUwNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
UHVzaFNjb3BlKFJlZ2lzdGVySUQqIHNjb3BlKTsKICAgICAgICAgdm9pZCBlbWl0UG9wU2NvcGUo
KTsKIAotICAgICAgICB2b2lkIGVtaXREZWJ1Z0hvb2soRGVidWdIb29rSUQsIGludCBmaXJzdExp
bmUsIGludCBsYXN0TGluZSk7CisgICAgICAgIHZvaWQgZW1pdERlYnVnSG9vayhEZWJ1Z0hvb2tJ
RCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKTsKIAogICAgICAgICBp
bnQgc2NvcGVEZXB0aCgpIHsgcmV0dXJuIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2ZpbmFsbHlE
ZXB0aDsgfQogICAgICAgICBib29sIGhhc0ZpbmFsaXNlcigpIHsgcmV0dXJuIG1fZmluYWxseURl
cHRoICE9IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcAppbmRleCBkMjQzZThjZTAwODQ5YjU1MmQ5OGRiMDUwMWMzNjlhNDE1
ZDJlZDBhLi40YWNjNTczZWQwOTM4MTMwMjU4YTQzNzU1MzhlYWVjODIxNzQ5MzRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CkBAIC0yMDIsMTggKzIwMiwyMSBAQCBib29sIEFycmF5Tm9kZTo6aXNTaW1wbGVBcnJheSgpIGNv
bnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUFyZ3VtZW50TGlzdE5vZGUqIEFycmF5Tm9kZTo6
dG9Bcmd1bWVudExpc3QoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlcikg
Y29uc3QKK0FyZ3VtZW50TGlzdE5vZGUqIEFycmF5Tm9kZTo6dG9Bcmd1bWVudExpc3QoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikgY29u
c3QKIHsKICAgICBBU1NFUlQoIW1fZWxpc2lvbiAmJiAhbV9vcHRpb25hbCk7CiAgICAgRWxlbWVu
dE5vZGUqIHB0ciA9IG1fZWxlbWVudDsKICAgICBpZiAoIXB0cikKICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgQXJndW1lbnRMaXN0Tm9kZSogaGVhZCA9IG5ldyAoZ2xvYmFsRGF0YSkgQXJndW1lbnRM
aXN0Tm9kZShsaW5lTnVtYmVyLCBwdHItPnZhbHVlKCkpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBs
b2NhdGlvbjsKKyAgICBsb2NhdGlvbi5saW5lID0gbGluZU51bWJlcjsKKyAgICBsb2NhdGlvbi5j
b2x1bW4gPSBjb2x1bW5OdW1iZXI7CisgICAgQXJndW1lbnRMaXN0Tm9kZSogaGVhZCA9IG5ldyAo
Z2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsb2NhdGlvbiwgcHRyLT52YWx1ZSgpKTsKICAg
ICBBcmd1bWVudExpc3ROb2RlKiB0YWlsID0gaGVhZDsKICAgICBwdHIgPSBwdHItPm5leHQoKTsK
ICAgICBmb3IgKDsgcHRyOyBwdHIgPSBwdHItPm5leHQoKSkgewogICAgICAgICBBU1NFUlQoIXB0
ci0+ZWxpc2lvbigpKTsKLSAgICAgICAgdGFpbCA9IG5ldyAoZ2xvYmFsRGF0YSkgQXJndW1lbnRM
aXN0Tm9kZShsaW5lTnVtYmVyLCB0YWlsLCBwdHItPnZhbHVlKCkpOworICAgICAgICB0YWlsID0g
bmV3IChnbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxvY2F0aW9uLCB0YWlsLCBwdHItPnZh
bHVlKCkpOwogICAgIH0KICAgICByZXR1cm4gaGVhZDsKIH0KQEAgLTUzNiw3ICs1MzksNyBAQCBS
ZWdpc3RlcklEKiBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLAogICAgICAgICAgICAgICAgIGlmIChtX2FyZ3MtPm1fbGlz
dE5vZGUtPm1fbmV4dCkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV9hcmdzLT5tX2xp
c3ROb2RlLT5tX25leHQtPm1fZXhwci0+aXNTaW1wbGVBcnJheSgpKTsKICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKCFtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fbmV4dC0+bV9uZXh0KTsKLSAgICAg
ICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2Rl
Kj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdl
bmVyYXRvci5nbG9iYWxEYXRhKCksIDApOworICAgICAgICAgICAgICAgICAgICBtX2FyZ3MtPm1f
bGlzdE5vZGUgPSBzdGF0aWNfY2FzdDxBcnJheU5vZGUqPihtX2FyZ3MtPm1fbGlzdE5vZGUtPm1f
bmV4dC0+bV9leHByKS0+dG9Bcmd1bWVudExpc3QoZ2VuZXJhdG9yLmdsb2JhbERhdGEoKSwgMCwg
MCk7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZWFsRnVuY3Rpb24g
PSBnZW5lcmF0b3IuZW1pdE1vdmUoZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCBiYXNl
LmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBjYWxsQXJndW1lbnRz
KGdlbmVyYXRvciwgbV9hcmdzKTsKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRO
b2RlKGNhbGxBcmd1bWVudHMudGhpc1JlZ2lzdGVyKCksIG9sZExpc3QtPm1fZXhwcik7CkBAIC0x
MTI4LDYgKzExMzEsOCBAQCBSZWdpc3RlcklEKiBDb25kaXRpb25hbE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcgogICAgIFJlZlB0cjxMYWJl
bD4gYmVmb3JlRWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJlZlB0cjxMYWJlbD4g
YWZ0ZXJFbHNlID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAKKyAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgbGluZU5vKCksIGxpbmVObygpLCBjb2x1bW5O
bygpKTsKKwogICAgIGlmIChtX2xvZ2ljYWwtPmhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkp
IHsKICAgICAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVUaGVuID0gZ2VuZXJhdG9yLm5ld0xhYmVs
KCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChtX2xvZ2lj
YWwsIGJlZm9yZVRoZW4uZ2V0KCksIGJlZm9yZUVsc2UuZ2V0KCksIHRydWUpOwpAQCAtMTM4NSw3
ICsxMzkwLDcgQEAgUmVnaXN0ZXJJRCogQ29uc3REZWNsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKIAogUmVnaXN0ZXJJRCogQ29uc3RT
dGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNv
bHVtbigpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb2RlKG1fbmV4dCk7CiB9CiAKQEAg
LTE0MjgsNyArMTQzMyw3IEBAIFJlZ2lzdGVySUQqIEJsb2NrTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAKIFJlZ2lzdGVySUQq
IEVtcHR5U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTE0MzYsNyArMTQ0
MSw3IEBAIFJlZ2lzdGVySUQqIEVtcHR5U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzCiAKIFJlZ2lzdGVySUQqIERlYnVnZ2VyU3Rh
dGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRSZWFjaEJy
ZWFrcG9pbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhEaWRSZWFjaEJyZWFrcG9pbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1
bW4oKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0KIApAQCAtMTQ0NSw3ICsxNDUwLDcgQEAgUmVnaXN0
ZXJJRCogRGVidWdnZXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmUKIFJlZ2lzdGVySUQqIEV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewog
ICAgIEFTU0VSVChtX2V4cHIpOwotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVj
dXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7IAorICAgIGdlbmVyYXRvci5l
bWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUo
KSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2V4cHIp
OwogfQogCkBAIC0xNDU0LDcgKzE0NTksNyBAQCBSZWdpc3RlcklEKiBFeHByU3RhdGVtZW50Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogUmVn
aXN0ZXJJRCogVmFyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewogICAgIEFTU0VSVChtX2V4cHIpOwotICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwg
bGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0
ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogfQogCkBAIC0xNDYyLDcgKzE0NjcsNyBAQCBSZWdp
c3RlcklEKiBWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZQogCiBSZWdpc3RlcklEKiBJZk5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBs
YXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRl
bWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICAKICAgICBSZWZQ
dHI8TGFiZWw+IGFmdGVyVGhlbiA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogCkBAIC0xNDg2LDcg
KzE0OTEsNyBAQCBSZWdpc3RlcklEKiBJZk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIFJlZ2lzdGVySUQqIElmRWxzZU5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigp
KTsKICAgICAKICAgICBSZWZQdHI8TGFiZWw+IGJlZm9yZUVsc2UgPSBnZW5lcmF0b3IubmV3TGFi
ZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGFmdGVyRWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgp
OwpAQCAtMTUyMiwxMiArMTUyNywxMSBAQCBSZWdpc3RlcklEKiBEb1doaWxlTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAgICAgUmVm
UHRyPExhYmVsPiB0b3BPZkxvb3AgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBnZW5lcmF0
b3IuZW1pdExhYmVsKHRvcE9mTG9vcC5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb29wSGlu
dCgpOwotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CiAgICAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVz
dWx0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJh
dG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVt
aXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIG1fZXhwci0+bGluZU5vKCksIG1fZXhw
ci0+bGluZU5vKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBsYXN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgaWYgKG1fZXhw
ci0+aGFzQ29uZGl0aW9uQ29udGV4dENvZGVnZW4oKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRO
b2RlSW5Db25kaXRpb25Db250ZXh0KG1fZXhwciwgdG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJl
YWtUYXJnZXQoKSwgZmFsc2UpOwogICAgIGVsc2UgewpAQCAtMTU0Niw3ICsxNTUwLDcgQEAgUmVn
aXN0ZXJJRCogV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHMKICAgICBSZWZQdHI8TGFiZWxTY29wZT4gc2NvcGUgPSBnZW5l
cmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29wKTsKICAgICBSZWZQdHI8TGFiZWw+
IHRvcE9mTG9vcCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIG1fZXhwci0+bGluZU5vKCksIG1fZXhwci0+
bGluZU5vKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmNvbHVtbk5v
KCkpOwogICAgIGlmIChtX2V4cHItPmhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9v
cC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFyZ2V0KCksIHRydWUpOwogICAgIGVsc2UgewpAQCAtMTU2
MCw3ICsxNTY0LDcgQEAgUmVnaXN0ZXJJRCogV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKICAgICBnZW5lcmF0b3IuZW1p
dE5vZGUoZHN0LCBtX3N0YXRlbWVudCk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3Bl
LT5jb250aW51ZVRhcmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBpZiAobV9leHByLT5oYXNDb25kaXRpb25D
b250ZXh0Q29kZWdlbigpKQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNv
bnRleHQobV9leHByLCB0b3BPZkxvb3AuZ2V0KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCBmYWxz
ZSk7CkBAIC0xNTgxLDcgKzE1ODUsNyBAQCBSZWdpc3RlcklEKiBGb3JOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAg
IFJlZlB0cjxMYWJlbFNjb3BlPiBzY29wZSA9IGdlbmVyYXRvci5uZXdMYWJlbFNjb3BlKExhYmVs
U2NvcGU6Okxvb3ApOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNv
bHVtbigpKTsKIAogICAgIGlmIChtX2V4cHIxKQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
Z2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSwgbV9leHByMSk7CkBAIC0xNjAyLDcgKzE2MDYsNyBA
QCBSZWdpc3RlcklEKiBGb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQg
PSBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVudCk7CiAKICAgICBnZW5lcmF0b3Iu
ZW1pdExhYmVsKHNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOwor
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExp
bmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGlmIChtX2V4cHIzKQogICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSwgbV9leHByMyk7CiAK
QEAgLTE2MjksNyArMTYzMyw3IEBAIFJlZ2lzdGVySUQqIEZvckluTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgaWYgKCFt
X2xleHByLT5pc0xvY2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBlbWl0VGhyb3dSZWZlcmVuY2VF
cnJvcihnZW5lcmF0b3IsICJMZWZ0IHNpZGUgb2YgZm9yLWluIHN0YXRlbWVudCBpcyBub3QgYSBy
ZWZlcmVuY2UuIik7CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29s
dW1uKCkpOwogCiAgICAgaWYgKG1faW5pdCkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdl
bmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1faW5pdCk7CkBAIC0xNjkyLDcgKzE2OTYsNyBAQCBS
ZWdpc3RlcklEKiBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+
Y29udGludWVUYXJnZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXROZXh0UHJvcGVydHlOYW1lKHBy
b3BlcnR5TmFtZSwgYmFzZS5nZXQoKSwgaS5nZXQoKSwgc2l6ZS5nZXQoKSwgaXRlci5nZXQoKSwg
bG9vcFN0YXJ0LmdldCgpKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwg
Y29sdW1uKCkpOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmJyZWFrVGFyZ2V0KCkp
OwogICAgIHJldHVybiBkc3Q7CiB9CkBAIC0xNzAyLDcgKzE3MDYsNyBAQCBSZWdpc3RlcklEKiBG
b3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkcwogLy8gRUNNQSAxMi43CiBSZWdpc3RlcklEKiBDb250aW51ZU5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7
Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0
TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICAK
ICAgICBMYWJlbFNjb3BlKiBzY29wZSA9IGdlbmVyYXRvci5jb250aW51ZVRhcmdldChtX2lkZW50
KTsKICAgICBBU1NFUlQoc2NvcGUpOwpAQCAtMTcxNiw3ICsxNzIwLDcgQEAgUmVnaXN0ZXJJRCog
Q29udGludWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCoKIC8vIEVDTUEgMTIuOAogUmVnaXN0ZXJJRCogQnJlYWtOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewot
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExp
bmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1
dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAg
ICAgTGFiZWxTY29wZSogc2NvcGUgPSBnZW5lcmF0b3IuYnJlYWtUYXJnZXQobV9pZGVudCk7CiAg
ICAgQVNTRVJUKHNjb3BlKTsKQEAgLTE3MjksNyArMTczMyw3IEBAIFJlZ2lzdGVySUQqIEJyZWFr
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzCiAKIFJlZ2lzdGVySUQqIFJldHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVt
aXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgp
KTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmly
c3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICBBU1NFUlQoZ2VuZXJhdG9yLmNv
ZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKTsKIAogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmln
bm9yZWRSZXN1bHQoKSkKQEAgLTE3NDUsNyArMTc0OSw3IEBAIFJlZ2lzdGVySUQqIFJldHVybk5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkCiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcFNjb3BlcyhsMC5nZXQoKSwgMCk7CiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwobDAuZ2V0KCkpOwogICAgIH0KLSAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgp
KTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsTGVhdmVDYWxsRnJhbWUsIGZpcnN0
TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0
UmV0dXJuKHIwKTsKIH0KIApAQCAtMTc1Myw3ICsxNzU3LDcgQEAgUmVnaXN0ZXJJRCogUmV0dXJu
Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGQKIAogUmVnaXN0ZXJJRCogV2l0aE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsK
KyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICAKICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gc2NvcGUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRO
b2RlKHNjb3BlLmdldCgpLCBtX2V4cHIpOyAvLyBzY29wZSBtdXN0IGJlIHByb3RlY3RlZCB1bnRp
bCBwb3BwZWQKQEAgLTE5MTgsNyArMTkyMiw3IEBAIFJlZ2lzdGVySUQqIENhc2VCbG9ja05vZGU6
OmVtaXRCeXRlY29kZUZvckJsb2NrKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlCiAK
IFJlZ2lzdGVySUQqIFN3aXRjaE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICAKICAgICBSZWZQdHI8TGFiZWxTY29wZT4gc2Nv
cGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpTd2l0Y2gpOwogCkBAIC0x
OTMzLDcgKzE5MzcsNyBAQCBSZWdpc3RlcklEKiBTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAogCiBSZWdpc3RlcklEKiBM
YWJlbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNv
bHVtbigpKTsKIAogICAgIEFTU0VSVCghZ2VuZXJhdG9yLmJyZWFrVGFyZ2V0KG1fbmFtZSkpOwog
CkBAIC0xOTQ4LDcgKzE5NTIsNyBAQCBSZWdpc3RlcklEKiBMYWJlbE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogCiBSZWdpc3Rl
cklEKiBUaHJvd05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKIAogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQo
KSkKICAgICAgICAgZHN0ID0gMDsKQEAgLTE5NjUsNyArMTk2OSw3IEBAIFJlZ2lzdGVySUQqIFRy
eU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiAgICAgLy8gTk9URTogVGhlIGNhdGNoIGFuZCBmaW5hbGx5IGJsb2NrcyBtdXN0
IGJlIGxhYmVsZWQgZXhwbGljaXRseSwgc28gdGhlCiAgICAgLy8gb3B0aW1pemVyIGtub3dzIHRo
ZXkgbWF5IGJlIGp1bXBlZCB0byBmcm9tIGFueXdoZXJlLgogCi0gICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsK
KyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKIAogICAgIFJlZlB0cjxMYWJlbD4gdHJ5U3Rh
cnRMYWJlbCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIGlmIChtX2ZpbmFsbHlCbG9jaykK
QEAgLTIwMjIsMTMgKzIwMjYsMTMgQEAgaW5saW5lIHZvaWQgU2NvcGVOb2RlOjplbWl0U3RhdGVt
ZW50c0J5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKIAogUmVnaXN0
ZXJJRCogUHJvZ3JhbU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVByb2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1p
dERlYnVnSG9vayhXaWxsRXhlY3V0ZVByb2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBj
b2x1bW4oKSk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZHN0UmVnaXN0ZXIgPSBnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdFJlZ2lzdGVyLmdl
dCgpLCBqc1VuZGVmaW5lZCgpKTsKICAgICBlbWl0U3RhdGVtZW50c0J5dGVjb2RlKGdlbmVyYXRv
ciwgZHN0UmVnaXN0ZXIuZ2V0KCkpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlk
RXhlY3V0ZVByb2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCks
IGNvbHVtbigpKTsKICAgICBnZW5lcmF0b3IuZW1pdEVuZChkc3RSZWdpc3Rlci5nZXQoKSk7CiAg
ICAgcmV0dXJuIDA7CiB9CkBAIC0yMDM3LDEzICsyMDQxLDEzIEBAIFJlZ2lzdGVySUQqIFByb2dy
YW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCopCiAKIFJlZ2lzdGVySUQqIEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwg
bGFzdExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRzdFJlZ2lz
dGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0TG9hZChk
c3RSZWdpc3Rlci5nZXQoKSwganNVbmRlZmluZWQoKSk7CiAgICAgZW1pdFN0YXRlbWVudHNCeXRl
Y29kZShnZW5lcmF0b3IsIGRzdFJlZ2lzdGVyLmdldCgpKTsKIAotICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKERpZEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFbmQoZHN0UmVnaXN0
ZXIuZ2V0KCkpOwogICAgIHJldHVybiAwOwogfQpAQCAtMjA1Miw3ICsyMDU2LDcgQEAgUmVnaXN0
ZXJJRCogRXZhbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKikKIAogUmVnaXN0ZXJJRCogRnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRW50ZXJDYWxsRnJhbWUs
IGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgZW1pdFN0YXRlbWVudHNC
eXRlY29kZShnZW5lcmF0b3IsIGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpOwogCiAgICAgU3Rh
dGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gdGhpcy0+c2luZ2xlU3RhdGVtZW50KCk7CkBA
IC0yMDY4LDcgKzIwNzIsNyBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkJvZHlOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgIC8vIElmIHRo
ZXJlIGlzIG5vIHJldHVybiB3ZSBtdXN0IGF1dG9tYXRpY2FsbHkgaW5zZXJ0IG9uZS4KICAgICBp
ZiAoIXJldHVybk5vZGUpIHsKICAgICAgICAgUmVnaXN0ZXJJRCogcjAgPSBnZW5lcmF0b3IuaXND
b25zdHJ1Y3RvcigpID8gZ2VuZXJhdG9yLnRoaXNSZWdpc3RlcigpIDogZ2VuZXJhdG9yLmVtaXRM
b2FkKDAsIGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsTGVhdmVDYWxsRnJhbWUsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY29sdW1uKCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdFJldHVybihyMCk7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyLmgKaW5kZXggYTIzNzMyOTE4NzgwM2VkYTk1N2EzN2QzYTBhOTA3YWZmMGI4OTIzMi4u
YTZhNDMzYWRmNTI3MDhmMWU4OThmNWRlMjI3YzNlMTdmNWI4OTJiYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKQEAgLTQyLDE0ICs0MiwyNSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRldGFjaChKU0dsb2JhbE9iamVjdCopOwog
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VQYXJzZWQoRXhlY1N0YXRlKiwgU291cmNlUHJv
dmlkZXIqLCBpbnQgZXJyb3JMaW5lTnVtYmVyLCBjb25zdCBVU3RyaW5nJiBlcnJvck1lc3NhZ2Up
ID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihjb25zdCBEZWJ1Z2dlckNhbGxG
cmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgYm9vbCBoYXNIYW5kbGVy
KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBhdFN0YXRlbWVudChjb25zdCBEZWJ1Z2dlckNh
bGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAwOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgY2FsbEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBy
ZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlcikgPSAwOwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVBy
b2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNv
bnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVy
KSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVi
dWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYs
IGludHB0cl90LCBpbnQsIGJvb2wpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGF0U3RhdGVt
ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCkgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgY2FsbEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRy
X3QsIGludCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuRXZlbnQoY29uc3QgRGVi
dWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50KSA9IDA7CisKKyAgICAgICAgdmlydHVhbCB2
b2lkIGV4Y2VwdGlvbihjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQsIGlu
dCwgYm9vbCkgeyB9OworICAgICAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgRGVi
dWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50LCBpbnQpIHsgfTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQs
IGludCkgeyB9OworICAgICAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuRXZlbnQoY29uc3QgRGVidWdn
ZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50LCBpbnQpIHsgfTsKKworCisgICAgICAgIHZpcnR1
YWwgdm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRw
dHJfdCwgaW50KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShj
b25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dHB0cl90LCBpbnQpID0gMDsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4ZWN1dGVQcm9n
cmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCwgaW50KSB7IH07Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxG
cmFtZSYsIGludHB0cl90LCBpbnQsIGludCkgeyB9OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVhY2hCcmVha3BvaW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCwg
aW50KSB7IH07CisKIAogICAgICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKEpTR2xv
YmFsRGF0YSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAppbmRleCAzZWRiODU4OWUzYTFlM2M5YTY5ZGE3ZWNlZmMzOTQwOWVhYmI0
MTI3Li5jMjdhN2U3NTVkZTVjNGRmNmNjOGE4MmRhYjNiMTUzMzAyNGM5NjE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTcz
MCw5ICs3MzAsOSBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZy
YW1lKENhbGxGcmFtZSomIGNhbGxGcmFtZSwgSlNWYWx1ZSBleAogICAgIGlmIChEZWJ1Z2dlciog
ZGVidWdnZXIgPSBjYWxsRnJhbWUtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSkg
ewogICAgICAgICBEZWJ1Z2dlckNhbGxGcmFtZSBkZWJ1Z2dlckNhbGxGcmFtZShjYWxsRnJhbWUs
IGV4Y2VwdGlvblZhbHVlKTsKICAgICAgICAgaWYgKGNhbGxGcmFtZS0+Y2FsbGVlKCkpCi0gICAg
ICAgICAgICBkZWJ1Z2dlci0+cmV0dXJuRXZlbnQoZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCktPmxhc3RMaW5lKCkpOworICAgICAgICAgICAgZGVidWdnZXItPnJldHVybkV2ZW50KGRl
YnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5sYXN0TGluZSgpLCAwKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgZGVidWdnZXItPmRpZEV4ZWN1dGVQcm9ncmFtKGRlYnVnZ2VyQ2Fs
bEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLT5sYXN0TGluZSgpKTsKKyAgICAgICAgICAgIGRlYnVnZ2Vy
LT5kaWRFeGVjdXRlUHJvZ3JhbShkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bGFz
dExpbmUoKSwgMCk7CiAgICAgfQogCiAgICAgLy8gSWYgdGhpcyBjYWxsIGZyYW1lIGNyZWF0ZWQg
YW4gYWN0aXZhdGlvbiBvciBhbiAnYXJndW1lbnRzJyBvYmplY3QsIHRlYXIgaXQgb2ZmLgpAQCAt
MTA1NSw3ICsxMDU1LDcgQEAgTkVWRVJfSU5MSU5FIEhhbmRsZXJJbmZvKiBJbnRlcnByZXRlcjo6
dGhyb3dFeGNlcHRpb24oQ2FsbEZyYW1lKiYgY2FsbEZyYW1lLCBKU1YKICAgICBpZiAoRGVidWdn
ZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1lLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2Vy
KCkpIHsKICAgICAgICAgRGVidWdnZXJDYWxsRnJhbWUgZGVidWdnZXJDYWxsRnJhbWUoY2FsbEZy
YW1lLCBleGNlcHRpb25WYWx1ZSk7CiAgICAgICAgIGJvb2wgaGFzSGFuZGxlciA9IGNvZGVCbG9j
ay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KTsKLSAgICAgICAgZGVi
dWdnZXItPmV4Y2VwdGlvbihkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQpLCBoYXNIYW5kbGVyKTsKKyAgICAgICAgZGVidWdnZXItPmV4Y2Vw
dGlvbihkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291
cmNlSUQoKSwgY29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQpLCAwLCBoYXNIYW5kbGVyKTsKICAgICB9CiAKICAgICAvLyBDYWxjdWxhdGUgYW4gZXhj
ZXB0aW9uIGhhbmRsZXIgdlBDLCB1bndpbmRpbmcgY2FsbCBmcmFtZXMgYXMgbmVjZXNzYXJ5LgpA
QCAtMTY0Myw3ICsxNjQzLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZShFdmFsRXhl
Y3V0YWJsZSogZXZhbCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTVmFsdWUKICAgICByZXR1cm4g
Y2hlY2tlZFJldHVybihyZXN1bHQpOwogfQogCi1ORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRl
cjo6ZGVidWcoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIERlYnVnSG9va0lEIGRlYnVnSG9va0lELCBp
bnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCitORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRl
cjo6ZGVidWcoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIERlYnVnSG9va0lEIGRlYnVnSG9va0lELCBp
bnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUsIGludCBjb2x1bW4pCiB7CiAgICAgRGVidWdnZXIq
IGRlYnVnZ2VyID0gY2FsbEZyYW1lLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7
CiAgICAgaWYgKCFkZWJ1Z2dlcikKQEAgLTE2NTEsMjIgKzE2NTEsMjIgQEAgTkVWRVJfSU5MSU5F
IHZvaWQgSW50ZXJwcmV0ZXI6OmRlYnVnKENhbGxGcmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJ
RCBkZWJ1Z0hvb2sKIAogICAgIHN3aXRjaCAoZGVidWdIb29rSUQpIHsKICAgICAgICAgY2FzZSBE
aWRFbnRlckNhbGxGcmFtZToKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5jYWxsRXZlbnQoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQo
KSwgZmlyc3RMaW5lKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5jYWxsRXZlbnQoY2FsbEZyYW1l
LCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwg
Zmlyc3RMaW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFdp
bGxMZWF2ZUNhbGxGcmFtZToKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5yZXR1cm5FdmVudChjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJ
RCgpLCBsYXN0TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+cmV0dXJuRXZlbnQoY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQo
KSwgbGFzdExpbmUsIGNvbHVtbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2Ug
V2lsbEV4ZWN1dGVTdGF0ZW1lbnQ6Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+YXRTdGF0ZW1lbnQo
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291
cmNlSUQoKSwgZmlyc3RMaW5lKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5hdFN0YXRlbWVudChj
YWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3Vy
Y2VJRCgpLCBmaXJzdExpbmUsIGNvbHVtbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IGNhc2UgV2lsbEV4ZWN1dGVQcm9ncmFtOgotICAgICAgICAgICAgZGVidWdnZXItPndpbGxFeGVj
dXRlUHJvZ3JhbShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0
YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJzdExpbmUpOworICAgICAgICAgICAgZGVidWdnZXItPndp
bGxFeGVjdXRlUHJvZ3JhbShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVy
RXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBmaXJzdExpbmUsIGNvbHVtbik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIGNhc2UgRGlkRXhlY3V0ZVByb2dyYW06Ci0gICAgICAgICAgICBk
ZWJ1Z2dlci0+ZGlkRXhlY3V0ZVByb2dyYW0oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9j
aygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgbGFzdExpbmUpOworICAgICAgICAg
ICAgZGVidWdnZXItPmRpZEV4ZWN1dGVQcm9ncmFtKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5lLCBjb2x1bW4p
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIERpZFJlYWNoQnJlYWtwb2ludDoK
LSAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRSZWFjaEJyZWFrcG9pbnQoY2FsbEZyYW1lLCBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgbGFzdExp
bmUpOworICAgICAgICAgICAgZGVidWdnZXItPmRpZFJlYWNoQnJlYWtwb2ludChjYWxsRnJhbWUs
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBs
YXN0TGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCmluZGV4IDg2NjNi
ZjhlYzM4M2ZjOTYwOWNlNGE2MDU1ZDk3NTNmZmQwNmNiYmIuLmY0Y2NkOTk1Yzk2YmYwYzlkNmQ2
YjMwZDI1MDZkZjdjMGJjY2QxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oCkBAIC0yNDAsNyArMjQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFNhbXBsaW5nVG9vbCogc2FtcGxlcigpIHsgcmV0dXJuIG1fc2FtcGxlci5nZXQo
KTsgfQogCiAgICAgICAgIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogdGhyb3dFeGNlcHRpb24o
Q2FsbEZyYW1lKiYsIEpTVmFsdWUmLCB1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7Ci0gICAgICAg
IE5FVkVSX0lOTElORSB2b2lkIGRlYnVnKENhbGxGcmFtZSosIERlYnVnSG9va0lELCBpbnQgZmly
c3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBkZWJ1ZyhD
YWxsRnJhbWUqLCBEZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQg
Y29sdW1uKTsKICAgICAgICAgc3RhdGljIGNvbnN0IFVTdHJpbmcgZ2V0VHJhY2VMaW5lKENhbGxG
cmFtZSosIFN0YWNrRnJhbWVDb2RlVHlwZSwgY29uc3QgVVN0cmluZyYsIGludCk7CiAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIGdldFN0YWNrVHJhY2UoSlNHbG9iYWxEYXRh
KiwgVmVjdG9yPFN0YWNrRnJhbWU+JiByZXN1bHRzKTsKICAgICAgICAgc3RhdGljIHZvaWQgYWRk
U3RhY2tUcmFjZUlmTmVjZXNzYXJ5KENhbGxGcmFtZSosIEpTT2JqZWN0KiBlcnJvcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCBjMGFmNmY5ZTliYmI1OTBh
MzY1MjE2MDdmNzcyMTk1NmU3ZWQ2OTU3Li40MjFjZjViYzYxZGMwNTcxYTlkNGNmNzcyNjg0ZWEw
NTc3ODQxZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAg
LTExNTgsNiArMTE1OCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2RlYnVnKEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMy
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1
bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kKSk7CisgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJl
bnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsKICAgICBzdHViQ2FsbC5jYWxsKCk7CiAjZW5k
aWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApp
bmRleCAwOTVlYTU3ZDM0OWZjMjY1NzRhMzI3OGVjMDBjMTIwYjBkZGI3MzQ5Li43MGE2MDhlM2Fm
ZDA1MDJhZmRmN2VkNzA3NzZlOTdlNjEyN2NkZWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC0xNDc4LDYgKzE0NzgsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
KTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tMzIoY3VycmVudEluc3Ry
dWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKGN1
cnJlbnRJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQpKTsKICAgICBzdHViQ2FsbC5jYWxsKCk7CiAj
ZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggMGYwM2Ew
YTRhOTQ2Y2M4MGM0MTQzYzRmYjI5YTQ2MjBhZTFhNzE0MC4uNzEwMGEwYzE5NGNkNDBmNGY2ZDll
OTM4MWY3MzJlZGMxNWI0NjhjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5j
cHAKQEAgLTM0MDMsOCArMzQwMyw5IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX2Rl
YnVnKQogICAgIGludCBkZWJ1Z0hvb2tJRCA9IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQzMigpOwog
ICAgIGludCBmaXJzdExpbmUgPSBzdGFja0ZyYW1lLmFyZ3NbMV0uaW50MzIoKTsKICAgICBpbnQg
bGFzdExpbmUgPSBzdGFja0ZyYW1lLmFyZ3NbMl0uaW50MzIoKTsKKyAgICBpbnQgY29sdW1uID0g
c3RhY2tGcmFtZS5hcmdzWzNdLmludDMyKCk7CiAKLSAgICBzdGFja0ZyYW1lLmdsb2JhbERhdGEt
PmludGVycHJldGVyLT5kZWJ1ZyhjYWxsRnJhbWUsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihk
ZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIHN0YWNrRnJhbWUuZ2xvYmFs
RGF0YS0+aW50ZXJwcmV0ZXItPmRlYnVnKGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8RGVidWdIb29r
SUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSwgY29sdW1uKTsKIH0KIAogREVG
SU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIHZtX3Rocm93KQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggZDJkNzQzZTBhYzYyZmEwNmQzYTAz
NzkzY2ZkMmVhOTdjYjQzY2RkMi4uNThiZjFiZGViNDdjZTNhZWU2Y2NjYWE4NmFhNTFhNWQ0M2Rh
ZWE1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMu
Y3BwCkBAIC0xNjAxLDggKzE2MDEsOSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
ZGVidWcpCiAgICAgaW50IGRlYnVnSG9va0lEID0gcGNbMV0udS5vcGVyYW5kOwogICAgIGludCBm
aXJzdExpbmUgPSBwY1syXS51Lm9wZXJhbmQ7CiAgICAgaW50IGxhc3RMaW5lID0gcGNbM10udS5v
cGVyYW5kOwotICAgIAotICAgIGdsb2JhbERhdGEuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0
YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUp
OworICAgIGludCBjb2x1bW4gPSBwY1s0XS51Lm9wZXJhbmQ7CisKKyAgICBnbG9iYWxEYXRhLmlu
dGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29r
SUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lLCBjb2x1bW4pOwogICAgIAogICAgIExMSU5UX0VORCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaAppbmRleCBkNGMx
NzA2MTczOWI5M2ZjMDFmZTQyNjUzM2ExYjM2MWY3YzNkZmU1Li4wYTcxZjEyOTRhYWFjNGU3YTYx
ZWIzMTA4NzQ5ZDhiMDA2OTFjNzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0FTVEJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FT
VEJ1aWxkZXIuaApAQCAtMTEyLDggKzExMiw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
aW50ICBEb250QnVpbGRLZXl3b3JkcyA9IDA7CiAgICAgc3RhdGljIGNvbnN0IGludCAgRG9udEJ1
aWxkU3RyaW5ncyA9IDA7CiAKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpbmFyeU5vZGUoaW50
IGxpbmVOdW1iZXIsIGludCB0b2tlbiwgc3RkOjpwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5
T3BJbmZvPiwgc3RkOjpwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPik7Ci0gICAg
RXhwcmVzc2lvbk5vZGUqIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZnVuYywgQXJndW1lbnRzTm9kZSogYXJncywgaW50IHN0YXJ0LCBpbnQgZGl2
b3QsIGludCBlbmQpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQmluYXJ5Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBpbnQgdG9rZW4sIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJp
bmFyeU9wSW5mbz4sIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4pOwor
ICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogZnVuYywgQXJndW1lbnRzTm9kZSogYXJncywgaW50IHN0
YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwogCiAgICAgSlNDOjpTb3VyY2VFbGVtZW50cyogY3Jl
YXRlU291cmNlRWxlbWVudHMoKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgSlNDOjpTb3Vy
Y2VFbGVtZW50cygpOyB9CiAKQEAgLTEyNCwxNjggKzEyNCwxNjggQEAgcHVibGljOgogCiAgICAg
dm9pZCBhcHBlbmRUb0NvbW1hKENvbW1hTm9kZSogY29tbWFOb2RlLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikgeyBjb21tYU5vZGUtPmFwcGVuZChleHByKTsgfQogCi0gICAgQ29tbWFOb2RlKiBjcmVh
dGVDb21tYUV4cHIoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Np
b25Ob2RlKiByaHMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBDb21tYU5vZGUobGluZU51
bWJlciwgbGhzLCByaHMpOyB9Ci0KLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZUFzc2lnbk5vZGUo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBPcGVyYXRvciwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0LCBib29sIGxlZnRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7Ci0gICAgRXhwcmVzc2lvbk5v
ZGUqIG1ha2VQcmVmaXhOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSosIE9wZXJh
dG9yLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7Ci0gICAgRXhwcmVzc2lvbk5vZGUq
IG1ha2VQb3N0Zml4Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRv
ciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBt
YWtlVHlwZU9mTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqKTsKLSAgICBFeHBy
ZXNzaW9uTm9kZSogbWFrZURlbGV0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBt
YWtlTmVnYXRlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqKTsKLSAgICBFeHBy
ZXNzaW9uTm9kZSogbWFrZUJpdHdpc2VOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSopOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTXVsdE5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VEaXZOb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTW9kTm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZUFk
ZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUq
IG1ha2VTdWJOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlQml0WE9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxl
ZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAg
ICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdEFuZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRPck5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VMZWZ0U2hpZnROb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlUmln
aHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lv
bk5vZGUqIG1ha2VVUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
Ci0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTG9naWNhbE5vdChpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMb2dpY2Fs
Tm90Tm9kZShsaW5lTnVtYmVyLCBleHByKTsgfQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVV
bmFyeVBsdXMoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVtYmVyLCBleHByKTsgfQotICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVWb2lkKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcikKKyAgICBDb21tYU5vZGUqIGNyZWF0ZUNvbW1hRXhwcihjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogcmhz
KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29tbWFOb2RlKGxvY2F0aW9uLCBsaHMsIHJo
cyk7IH0KKworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQXNzaWduTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCBsZWZ0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOworICAgIEV4cHJlc3Npb25Ob2RlKiBt
YWtlUHJlZml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIE9w
ZXJhdG9yLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVzc2lvbk5v
ZGUqIG1ha2VQb3N0Zml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSosIE9wZXJhdG9yLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCk7CisgICAgRXhwcmVz
c2lvbk5vZGUqIG1ha2VUeXBlT2ZOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKik7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VEZWxldGVOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBl
bmQpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTmVnYXRlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSopOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0d2lz
ZU5vdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICBF
eHByZXNzaW9uTm9kZSogbWFrZU11bHROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VEaXZOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VNb2ROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9u
Tm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5v
ZGUqIG1ha2VBZGROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBs
ZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VTdWJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRYT3JOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VC
aXRBbmROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhw
cmVzc2lvbk5vZGUqIG1ha2VCaXRPck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUxlZnRTaGlmdE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVJp
Z2h0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0
LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAg
RXhwcmVzc2lvbk5vZGUqIG1ha2VVUmlnaHRTaGlmdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKworICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVMb2dpY2FsTm90
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9naWNhbE5vdE5vZGUobG9jYXRpb24sIGV4cHIp
OyB9CisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVVuYXJ5UGx1cyhjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobG9jYXRpb24sIGV4cHIpOyB9CisgICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZVZvaWQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIpCiAgICAgewogICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBWb2lkTm9kZShsaW5lTnVtYmVyLCBleHByKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBWb2lkTm9kZShsb2NhdGlvbiwgZXhwcik7
CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2RlKiB0aGlzRXhwcihpbnQgbGluZU51bWJlcikKKyAg
ICBFeHByZXNzaW9uTm9kZSogdGhpc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
bikKICAgICB7CiAgICAgICAgIHVzZXNUaGlzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgVGhpc05vZGUobGluZU51bWJlcik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgVGhpc05vZGUobG9jYXRpb24pOwogICAgIH0KLSAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlUmVzb2x2ZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGlu
dCBzdGFydCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlUmVzb2x2ZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgaW50IHN0YXJ0KQog
ICAgIHsKICAgICAgICAgaWYgKG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRz
ID09ICppZGVudCkKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKLSAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCAqaWRlbnQsIHN0YXJ0
KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBSZXNvbHZlTm9kZShsb2NhdGlv
biwgKmlkZW50LCBzdGFydCk7CiAgICAgfQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVPYmpl
Y3RMaXRlcmFsKGludCBsaW5lTnVtYmVyKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgT2Jq
ZWN0TGl0ZXJhbE5vZGUobGluZU51bWJlcik7IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRl
T2JqZWN0TGl0ZXJhbChpbnQgbGluZU51bWJlciwgUHJvcGVydHlMaXN0Tm9kZSogcHJvcGVydGll
cykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE9iamVjdExpdGVyYWxOb2RlKGxpbmVOdW1i
ZXIsIHByb3BlcnRpZXMpOyB9CisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU9iamVjdExpdGVy
YWwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikgeyByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIE9iamVjdExpdGVyYWxOb2RlKGxvY2F0aW9uKTsgfQorICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVPYmplY3RMaXRlcmFsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFBy
b3BlcnR5TGlzdE5vZGUqIHByb3BlcnRpZXMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBP
YmplY3RMaXRlcmFsTm9kZShsb2NhdGlvbiwgcHJvcGVydGllcyk7IH0KIAotICAgIEV4cHJlc3Np
b25Ob2RlKiBjcmVhdGVBcnJheShpbnQgbGluZU51bWJlciwgaW50IGVsaXNpb25zKQorICAgIEV4
cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJheShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBpbnQgZWxpc2lvbnMpCiAgICAgewogICAgICAgICBpZiAoZWxpc2lvbnMpCiAgICAgICAgICAg
ICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcnJh
eU5vZGUobGluZU51bWJlciwgZWxpc2lvbnMpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIEFycmF5Tm9kZShsb2NhdGlvbiwgZWxpc2lvbnMpOwogICAgIH0KIAotICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVBcnJheShpbnQgbGluZU51bWJlciwgRWxlbWVudE5vZGUqIGVsZW1z
KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJyYXlOb2RlKGxpbmVOdW1iZXIsIGVsZW1z
KTsgfQotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJheShpbnQgbGluZU51bWJlciwgaW50
IGVsaXNpb25zLCBFbGVtZW50Tm9kZSogZWxlbXMpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEVsZW1lbnROb2RlKiBlbGVt
cykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsb2NhdGlvbiwgZWxlbXMp
OyB9CisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIGludCBlbGlzaW9ucywgRWxlbWVudE5vZGUqIGVsZW1zKQogICAgIHsKICAg
ICAgICAgaWYgKGVsaXNpb25zKQogICAgICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJyYXlOb2RlKGxpbmVOdW1iZXIsIGVsaXNpb25z
LCBlbGVtcyk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJyYXlOb2RlKGxv
Y2F0aW9uLCBlbGlzaW9ucywgZWxlbXMpOwogICAgIH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlTnVtYmVyRXhwcihpbnQgbGluZU51bWJlciwgZG91YmxlIGQpCisgICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZU51bWJlckV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgZG91
YmxlIGQpCiAgICAgewogICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBOdW1iZXJOb2RlKGxpbmVOdW1iZXIsIGQpOworICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bWJlck5vZGUobG9jYXRpb24sIGQpOwogICAgIH0KIAot
ICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVTdHJpbmcoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElk
ZW50aWZpZXIqIHN0cmluZykKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlU3RyaW5nKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIHN0cmluZykKICAg
ICB7CiAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIFN0cmluZ05vZGUobGluZU51bWJlciwgKnN0cmluZyk7CisgICAgICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgU3RyaW5nTm9kZShsb2NhdGlvbiwgKnN0cmluZyk7CiAgICAgfQog
Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJvb2xlYW4oaW50IGxpbmVOdW1iZXIsIGJvb2wg
YikKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQm9vbGVhbihjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBib29sIGIpCiAgICAgewogICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCb29sZWFuTm9kZShsaW5lTnVtYmVyLCBi
KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCb29sZWFuTm9kZShsb2NhdGlv
biwgYik7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bGwoaW50IGxpbmVO
dW1iZXIpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bGwoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbikKICAgICB7CiAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bGxOb2RlKGxpbmVOdW1iZXIpOworICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE51bGxOb2RlKGxvY2F0aW9uKTsKICAgICB9CiAKLSAg
ICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQnJhY2tldEFjY2VzcyhpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eSwgYm9vbCBwcm9wZXJ0
eUhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKKyAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlQnJhY2tldEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHByb3BlcnR5LCBi
b29sIHByb3BlcnR5SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5k
KQogICAgIHsKLSAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9nbG9i
YWxEYXRhKSBCcmFja2V0QWNjZXNzb3JOb2RlKGxpbmVOdW1iZXIsIGJhc2UsIHByb3BlcnR5LCBw
cm9wZXJ0eUhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogbm9k
ZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBCcmFja2V0QWNjZXNzb3JOb2RlKGxvY2F0aW9uLCBiYXNl
LCBwcm9wZXJ0eSwgcHJvcGVydHlIYXNBc3NpZ25tZW50cyk7CiAgICAgICAgIHNldEV4Y2VwdGlv
bkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7
CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURvdEFjY2VzcyhpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5LCBp
bnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRl
RG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwgaW50IHN0YXJ0LCBpbnQgZGl2b3Qs
IGludCBlbmQpCiAgICAgewotICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgRG90QWNjZXNzb3JOb2RlKGxpbmVOdW1iZXIsIGJhc2UsICpwcm9wZXJ0eSk7
CisgICAgICAgIERvdEFjY2Vzc29yTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBEb3RB
Y2Nlc3Nvck5vZGUobG9jYXRpb24sIGJhc2UsICpwcm9wZXJ0eSk7CiAgICAgICAgIHNldEV4Y2Vw
dGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBkaXZvdCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5v
ZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVJlZ0V4cChpbnQgbGluZU51
bWJlciwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3Ms
IGludCBzdGFydCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlUmVnRXhwKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElk
ZW50aWZpZXImIGZsYWdzLCBpbnQgc3RhcnQpCiAgICAgewogICAgICAgICBpZiAoWWFycjo6Y2hl
Y2tTeW50YXgocGF0dGVybi51c3RyaW5nKCkpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgIFJlZ0V4cE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVnRXhwTm9kZShsaW5l
TnVtYmVyLCBwYXR0ZXJuLCBmbGFncyk7CisgICAgICAgIFJlZ0V4cE5vZGUqIG5vZGUgPSBuZXcg
KG1fZ2xvYmFsRGF0YSkgUmVnRXhwTm9kZShsb2NhdGlvbiwgcGF0dGVybiwgZmxhZ3MpOwogICAg
ICAgICBpbnQgc2l6ZSA9IHBhdHRlcm4ubGVuZ3RoKCkgKyAyOyAvLyArIDIgZm9yIHRoZSB0d28g
LydzCiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIHN0YXJ0LCBzdGFydCArIHNp
emUsIHN0YXJ0ICsgc2l6ZSk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4
cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdFeHByKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwciwgQXJndW1lbnRzTm9kZSogYXJndW1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwg
aW50IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQXJndW1lbnRzTm9kZSog
YXJndW1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAg
IE5ld0V4cHJOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIE5ld0V4cHJOb2RlKGxpbmVO
dW1iZXIsIGV4cHIsIGFyZ3VtZW50cyk7CisgICAgICAgIE5ld0V4cHJOb2RlKiBub2RlID0gbmV3
IChtX2dsb2JhbERhdGEpIE5ld0V4cHJOb2RlKGxvY2F0aW9uLCBleHByLCBhcmd1bWVudHMpOwog
ICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAg
ICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVO
ZXdFeHByKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBp
bnQgZW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOZXdFeHByKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBl
bmQpCiAgICAgewotICAgICAgICBOZXdFeHByTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRh
KSBOZXdFeHByTm9kZShsaW5lTnVtYmVyLCBleHByKTsKKyAgICAgICAgTmV3RXhwck5vZGUqIG5v
ZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTmV3RXhwck5vZGUobG9jYXRpb24sIGV4cHIpOwogICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZW5kLCBlbmQpOwogICAgICAg
ICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQ29uZGl0
aW9uYWxFeHByKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogcmhzKQorICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVDb25kaXRpb25hbEV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lv
bk5vZGUqIHJocykKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29u
ZGl0aW9uYWxOb2RlKGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgbGhzLCByaHMpOworICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbmRpdGlvbmFsTm9kZShsb2NhdGlvbiwgY29uZGl0
aW9uLCBsaHMsIHJocyk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFzc2ln
blJlc29sdmUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNz
aW9uTm9kZSogcmhzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKKyAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlQXNzaWduUmVzb2x2ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJocywgaW50IHN0
YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiAgICAgewogICAgICAgICBpZiAocmhzLT5pc0Z1bmNF
eHByTm9kZSgpKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4ocmhzKS0+
Ym9keSgpLT5zZXRJbmZlcnJlZE5hbWUoaWRlbnQpOwotICAgICAgICBBc3NpZ25SZXNvbHZlTm9k
ZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25SZXNvbHZlTm9kZShsaW5lTnVtYmVy
LCBpZGVudCwgcmhzKTsKKyAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobG9jYXRpb24sIGlkZW50LCByaHMpOwogICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAg
ICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVGdW5j
dGlvbkV4cHIoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIEZ1bmN0aW9u
Qm9keU5vZGUqIGJvZHksIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcnMsIGludCBvcGVuQnJhY2VQ
b3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5l
KQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9k
ZSogYm9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFjZVBvcywgaW50
IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCiAgICAg
ewotICAgICAgICBGdW5jRXhwck5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5j
RXhwck5vZGUobGluZU51bWJlciwgKm5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVz
c2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbWV0
ZXJzKTsKLSAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lKTsK
KyAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4
cHJOb2RlKGxvY2F0aW9uLCAqbmFtZSwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9u
KG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtZXRlcnMp
OworICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUsIGxvY2F0
aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgRnVuY3Rp
b25Cb2R5Tm9kZSogY3JlYXRlRnVuY3Rpb25Cb2R5KGludCBsaW5lTnVtYmVyLCBib29sIGluU3Ry
aWN0Q29udGV4dCkKKyAgICBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGVGdW5jdGlvbkJvZHkoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgYm9vbCBpblN0cmljdENvbnRleHQpCiAgICAg
ewotICAgICAgICByZXR1cm4gRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKG1fZ2xvYmFsRGF0YSwg
bGluZU51bWJlciwgaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9k
eU5vZGU6OmNyZWF0ZShtX2dsb2JhbERhdGEsIGxvY2F0aW9uLCBpblN0cmljdENvbnRleHQpOwog
ICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0
ZXJPclNldHRlclByb3BlcnR5KGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlw
ZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1zLCBGdW5jdGlv
bkJvZHlOb2RlKiBib2R5LCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50
IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKKyAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJv
cGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVy
KiBuYW1lLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbXMsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGlu
dCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50
IGJvZHlFbmRMaW5lKQogICAgIHsKICAgICAgICAgQVNTRVJUKG5hbWUpOwotICAgICAgICBib2R5
LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUpOworICAgICAgICBib2R5LT5zZXRM
b2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAg
IGJvZHktPnNldEluZmVycmVkTmFtZSgqbmFtZSk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgUHJvcGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwgKm5hbWUsIG5ldyAobV9nbG9iYWxE
YXRhKSBGdW5jRXhwck5vZGUobGluZU51bWJlciwgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVz
LT5udWxsSWRlbnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5C
cmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtcyksIHR5cGUpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERh
dGEsICpuYW1lLCBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4cHJOb2RlKGxvY2F0aW9uLCBtX2ds
b2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBib2R5LCBtX3NvdXJjZUNv
ZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRM
aW5lKSwgcGFyYW1zKSwgdHlwZSk7CiAgICAgfQogICAgIAotICAgIHRlbXBsYXRlIDxib29sPiBQ
cm9wZXJ0eU5vZGUqIGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoSlNHbG9iYWxEYXRhKiwg
aW50IGxpbmVOdW1iZXIsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBkb3VibGUgbmFtZSwgUGFy
YW1ldGVyTm9kZSogcGFyYW1zLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBpbnQgb3BlbkJyYWNl
UG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGlu
ZSkKKyAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRl
clByb3BlcnR5KEpTR2xvYmFsRGF0YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBkb3VibGUgbmFtZSwgUGFyYW1ldGVyTm9kZSogcGFy
YW1zLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VC
cmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKICAgICB7Ci0gICAg
ICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSk7Ci0gICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwgbmFtZSwg
bmV3IChtX2dsb2JhbERhdGEpIEZ1bmNFeHByTm9kZShsaW5lTnVtYmVyLCBtX2dsb2JhbERhdGEt
PnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4
cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFy
YW1zKSwgdHlwZSk7CisgICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5k
TGluZSwgbG9jYXRpb24uY29sdW1uKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCBuYW1lLCBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVu
Y0V4cHJOb2RlKGxvY2F0aW9uLCBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51bGxJZGVu
dGlmaWVyLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBj
bG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1zKSwgdHlwZSk7CiAgICAgfQogCiAg
ICAgQXJndW1lbnRzTm9kZSogY3JlYXRlQXJndW1lbnRzKCkgeyByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIEFyZ3VtZW50c05vZGUoKTsgfQogICAgIEFyZ3VtZW50c05vZGUqIGNyZWF0ZUFyZ3Vt
ZW50cyhBcmd1bWVudExpc3ROb2RlKiBhcmdzKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
QXJndW1lbnRzTm9kZShhcmdzKTsgfQotICAgIEFyZ3VtZW50TGlzdE5vZGUqIGNyZWF0ZUFyZ3Vt
ZW50c0xpc3QoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBhcmcpIHsgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxpbmVOdW1iZXIsIGFyZyk7IH0KLSAg
ICBBcmd1bWVudExpc3ROb2RlKiBjcmVhdGVBcmd1bWVudHNMaXN0KGludCBsaW5lTnVtYmVyLCBB
cmd1bWVudExpc3ROb2RlKiBhcmdzLCBFeHByZXNzaW9uTm9kZSogYXJnKSB7IHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVtYmVyLCBhcmdzLCBhcmcpOyB9
CisgICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRzTGlzdChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYXJnKSB7IHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsb2NhdGlvbiwgYXJnKTsgfQorICAgIEFyZ3Vt
ZW50TGlzdE5vZGUqIGNyZWF0ZUFyZ3VtZW50c0xpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgQXJndW1lbnRMaXN0Tm9kZSogYXJncywgRXhwcmVzc2lvbk5vZGUqIGFyZykgeyBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobG9jYXRpb24sIGFyZ3Ms
IGFyZyk7IH0KIAogICAgIHRlbXBsYXRlIDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3Bl
cnR5KGNvbnN0IElkZW50aWZpZXIqIHByb3BlcnR5TmFtZSwgRXhwcmVzc2lvbk5vZGUqIG5vZGUs
IFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlKQogICAgIHsKQEAgLTI5NCw4ICsyOTQsOCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlOb2RlKG1fZ2xv
YmFsRGF0YSwgKnByb3BlcnR5TmFtZSwgbm9kZSwgdHlwZSk7CiAgICAgfQogICAgIHRlbXBsYXRl
IDxib29sPiBQcm9wZXJ0eU5vZGUqIGNyZWF0ZVByb3BlcnR5KEpTR2xvYmFsRGF0YSosIGRvdWJs
ZSBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUg
dHlwZSkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSwgbm9kZSwgdHlwZSk7IH0KLSAgICBQcm9wZXJ0eUxpc3ROb2RlKiBj
cmVhdGVQcm9wZXJ0eUxpc3QoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5Tm9kZSogcHJvcGVydHkp
IHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eUxpc3ROb2RlKGxpbmVOdW1iZXIs
IHByb3BlcnR5KTsgfQotICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChp
bnQgbGluZU51bWJlciwgUHJvcGVydHlOb2RlKiBwcm9wZXJ0eSwgUHJvcGVydHlMaXN0Tm9kZSog
dGFpbCkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5TGlzdE5vZGUobGluZU51
bWJlciwgcHJvcGVydHksIHRhaWwpOyB9CisgICAgUHJvcGVydHlMaXN0Tm9kZSogY3JlYXRlUHJv
cGVydHlMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZSog
cHJvcGVydHkpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eUxpc3ROb2RlKGxv
Y2F0aW9uLCBwcm9wZXJ0eSk7IH0KKyAgICBQcm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQcm9wZXJ0
eUxpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlKiBwcm9w
ZXJ0eSwgUHJvcGVydHlMaXN0Tm9kZSogdGFpbCkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IFByb3BlcnR5TGlzdE5vZGUobG9jYXRpb24sIHByb3BlcnR5LCB0YWlsKTsgfQogCiAgICAgRWxl
bWVudE5vZGUqIGNyZWF0ZUVsZW1lbnRMaXN0KGludCBlbGlzaW9ucywgRXhwcmVzc2lvbk5vZGUq
IGV4cHIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFbGVtZW50Tm9kZShlbGlzaW9ucywg
ZXhwcik7IH0KICAgICBFbGVtZW50Tm9kZSogY3JlYXRlRWxlbWVudExpc3QoRWxlbWVudE5vZGUq
IGVsZW1zLCBpbnQgZWxpc2lvbnMsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgRWxlbWVudE5vZGUoZWxlbXMsIGVsaXNpb25zLCBleHByKTsgfQpAQCAt
MzA5LDE5MSArMzA5LDE5MSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFVzZXNBcmd1bWVudHMo
RnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSkgeyBub2RlLT5zZXRVc2VzQXJndW1lbnRzKCk7IH0KIAot
ICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGludCBsaW5lTnVtYmVy
LCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0
ZXJOb2RlKiBwYXJhbWV0ZXJzLCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywg
aW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVGdW5jRGVjbFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBj
b25zdCBJZGVudGlmaWVyKiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0ZXJO
b2RlKiBwYXJhbWV0ZXJzLCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50
IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKICAgICB7Ci0gICAgICAgIEZ1bmNEZWNs
Tm9kZSogZGVjbCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRGVjbE5vZGUobGluZU51bWJlciwg
Km5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNs
b3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgRnVuY0Rl
Y2xOb2RlKiBkZWNsID0gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNEZWNsTm9kZShsb2NhdGlvbiwg
Km5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNs
b3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbWV0ZXJzKTsKICAgICAgICAgaWYgKCpu
YW1lID09IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzKQogICAgICAgICAg
ICAgdXNlc0FyZ3VtZW50cygpOwogICAgICAgICBtX3Njb3BlLm1fZnVuY0RlY2xhcmF0aW9ucy0+
ZGF0YS5hcHBlbmQoZGVjbC0+Ym9keSgpKTsKLSAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFy
dExpbmUsIGJvZHlFbmRMaW5lKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUs
IGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gZGVjbDsKICAg
ICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCbG9ja1N0YXRlbWVudChpbnQgbGluZU51
bWJlciwgSlNDOjpTb3VyY2VFbGVtZW50cyogZWxlbWVudHMsIGludCBzdGFydExpbmUsIGludCBl
bmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJsb2NrU3RhdGVtZW50KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEpTQzo6U291cmNlRWxlbWVudHMqIGVsZW1lbnRzLCBp
bnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIEJsb2NrTm9kZSogYmxv
Y2sgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQmxvY2tOb2RlKGxpbmVOdW1iZXIsIGVsZW1lbnRzKTsK
LSAgICAgICAgYmxvY2stPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICBCbG9j
a05vZGUqIGJsb2NrID0gbmV3IChtX2dsb2JhbERhdGEpIEJsb2NrTm9kZShsb2NhdGlvbiwgZWxl
bWVudHMpOworICAgICAgICBibG9jay0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRp
b24uY29sdW1uKTsKICAgICAgICAgcmV0dXJuIGJsb2NrOwogICAgIH0KIAotICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZUV4cHJTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRXhw
clN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRXhwclN0YXRlbWVu
dE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBFeHByU3RhdGVtZW50Tm9kZShsaW5l
TnVtYmVyLCBleHByKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCk7CisgICAg
ICAgIEV4cHJTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRXhwclN0
YXRlbWVudE5vZGUobG9jYXRpb24sIGV4cHIpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFy
dCwgZW5kLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnVlQmxvY2ssIGludCBz
dGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVJZlN0YXRlbWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBT
dGF0ZW1lbnROb2RlKiB0cnVlQmxvY2ssIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAg
ICAgIElmTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIElmTm9kZShsaW5lTnVtYmVy
LCBjb25kaXRpb24sIHRydWVCbG9jayk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBl
bmQpOworICAgICAgICBJZk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBJZk5vZGUo
bG9jYXRpb24sIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
c3RhcnQsIGVuZCwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVJZlN0YXRlbWVudChpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogdHJ1ZUJsb2NrLCBT
dGF0ZW1lbnROb2RlKiBmYWxzZUJsb2NrLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlSWZTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogdHJ1ZUJsb2NrLCBT
dGF0ZW1lbnROb2RlKiBmYWxzZUJsb2NrLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewotICAg
ICAgICBJZk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBJZkVsc2VOb2RlKGxpbmVO
dW1iZXIsIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBmYWxzZUJsb2NrKTsKLSAgICAgICAgcmVzdWx0
LT5zZXRMb2Moc3RhcnQsIGVuZCk7CisgICAgICAgIElmTm9kZSogcmVzdWx0ID0gbmV3IChtX2ds
b2JhbERhdGEpIElmRWxzZU5vZGUobG9jYXRpb24sIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBmYWxz
ZUJsb2NrKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY29s
dW1uKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2Rl
KiBjcmVhdGVGb3JMb29wKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6
ZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0
ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlRm9yTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgc3RhcnQsIGlu
dCBlbmQpCiAgICAgewotICAgICAgICBGb3JOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgRm9yTm9kZShsaW5lTnVtYmVyLCBpbml0aWFsaXplciwgY29uZGl0aW9uLCBpdGVyLCBzdGF0
ZW1lbnRzKTsKKyAgICAgICAgRm9yTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZv
ck5vZGUobG9jYXRpb24sIGluaXRpYWxpemVyLCBjb25kaXRpb24sIGl0ZXIsIHN0YXRlbWVudHMp
OwogICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoaW50IGxp
bmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW5pdGlh
bGl6ZXIsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBp
bnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCwgaW50IGluaXRTdGFydCwgaW50IGluaXRFbmQs
IGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZv
ckluTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogaXRl
ciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBl
bmQsIGludCBpbml0U3RhcnQsIGludCBpbml0RW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGlu
ZSkKICAgICB7Ci0gICAgICAgIEZvckluTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEp
IEZvckluTm9kZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsICppZGVudCwgaW5pdGlhbGl6ZXIs
IGl0ZXIsIHN0YXRlbWVudHMsIGluaXRTdGFydCwgaW5pdFN0YXJ0IC0gc3RhcnQsIGluaXRFbmQg
LSBpbml0U3RhcnQpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUp
OworICAgICAgICBGb3JJbk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JJbk5v
ZGUobV9nbG9iYWxEYXRhLCBsb2NhdGlvbiwgKmlkZW50LCBpbml0aWFsaXplciwgaXRlciwgc3Rh
dGVtZW50cywgaW5pdFN0YXJ0LCBpbml0U3RhcnQgLSBzdGFydCwgaW5pdEVuZCAtIGluaXRTdGFy
dCk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24u
Y29sdW1uKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBzdGFydCwgZGl2
b3QgKyAxLCBlbmQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGxocywgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGlu
dCBlU3RhcnQsIGludCBlRGl2b3QsIGludCBlRW5kLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1l
bnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgZVN0YXJ0LCBpbnQgZURpdm90LCBpbnQgZUVuZCwgaW50
IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcg
KG1fZ2xvYmFsRGF0YSkgRm9ySW5Ob2RlKGxpbmVOdW1iZXIsIGxocywgaXRlciwgc3RhdGVtZW50
cyk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQpOworICAgICAgICBGb3JJbk5v
ZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JJbk5vZGUobG9jYXRpb24sIGxocywg
aXRlciwgc3RhdGVtZW50cyk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGxv
Y2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0
YXJ0LCBlRGl2b3QsIGVFbmQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAg
IFN0YXRlbWVudE5vZGUqIGNyZWF0ZUVtcHR5U3RhdGVtZW50KGludCBsaW5lTnVtYmVyKSB7IHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRW1wdHlTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpOyB9
CisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRW1wdHlTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVtcHR5U3RhdGVt
ZW50Tm9kZShsb2NhdGlvbik7IH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVZhclN0YXRl
bWVudChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50
IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVWYXJTdGF0ZW1lbnQoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50
IGVuZCkKICAgICB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIHJlc3VsdDsKICAgICAgICAgaWYg
KCFleHByKQotICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEVtcHR5U3Rh
dGVtZW50Tm9kZShsaW5lTnVtYmVyKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyAobV9nbG9i
YWxEYXRhKSBFbXB0eVN0YXRlbWVudE5vZGUobG9jYXRpb24pOwogICAgICAgICBlbHNlCi0gICAg
ICAgICAgICByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgVmFyU3RhdGVtZW50Tm9kZShsaW5l
TnVtYmVyLCBleHByKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCk7CisgICAg
ICAgICAgICByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgVmFyU3RhdGVtZW50Tm9kZShsb2Nh
dGlvbiwgZXhwcik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGxvY2F0aW9u
LmNvbHVtbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlUmV0dXJuU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcmVzc2lvbiwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBl
bmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVJldHVyblN0YXRlbWVudChjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcmVzc2lvbiwgaW50
IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAg
ICAgICAgUmV0dXJuTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFJldHVybk5vZGUo
bGluZU51bWJlciwgZXhwcmVzc2lvbik7CisgICAgICAgIFJldHVybk5vZGUqIHJlc3VsdCA9IG5l
dyAobV9nbG9iYWxEYXRhKSBSZXR1cm5Ob2RlKGxvY2F0aW9uLCBleHByZXNzaW9uKTsKICAgICAg
ICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQpOwotICAg
ICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXN1bHQt
PnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQnJlYWtTdGF0
ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5l
LCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCcmVha1N0YXRlbWVudChj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50
IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBCcmVha05vZGUqIHJlc3Vs
dCA9IG5ldyAobV9nbG9iYWxEYXRhKSBCcmVha05vZGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVy
KTsKKyAgICAgICAgQnJlYWtOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJlYWtO
b2RlKG1fZ2xvYmFsRGF0YSwgbG9jYXRpb24pOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlv
bihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0
YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5k
TGluZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAK
LSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQgbGluZU51bWJlciwg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRM
aW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCcmVha1N0YXRlbWVu
dChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBpZGVu
dCwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAg
IHsKLSAgICAgICAgQnJlYWtOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJlYWtO
b2RlKGxpbmVOdW1iZXIsICppZGVudCk7CisgICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3
IChtX2dsb2JhbERhdGEpIEJyZWFrTm9kZShsb2NhdGlvbiwgKmlkZW50KTsKICAgICAgICAgc2V0
RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQpOwotICAgICAgICBy
ZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXN1bHQtPnNldExv
YyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGludWVTdGF0ZW1l
bnQoaW50IGxpbmVOdW1iZXIsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBp
bnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVDb250aW51ZVN0YXRlbWVudChj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50
IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBDb250aW51ZU5vZGUqIHJl
c3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb250aW51ZU5vZGUobV9nbG9iYWxEYXRhLCBsaW5l
TnVtYmVyKTsKKyAgICAgICAgQ29udGludWVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgQ29udGludWVOb2RlKG1fZ2xvYmFsRGF0YSwgbG9jYXRpb24pOwogICAgICAgICBzZXRFeGNl
cHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZUVuZCwgZUVuZCk7Ci0gICAgICAgIHJlc3Vs
dC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0
YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVDb250aW51ZVN0YXRlbWVudChp
bnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBlU3RhcnQsIGludCBl
RW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVh
dGVDb250aW51ZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25z
dCBJZGVudGlmaWVyKiBpZGVudCwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUs
IGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQ29udGludWVOb2RlKiByZXN1bHQgPSBuZXcg
KG1fZ2xvYmFsRGF0YSkgQ29udGludWVOb2RlKGxpbmVOdW1iZXIsICppZGVudCk7CisgICAgICAg
IENvbnRpbnVlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnRpbnVlTm9kZShs
b2NhdGlvbiwgKmlkZW50KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBl
U3RhcnQsIGVFbmQsIGVFbmQpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVu
ZExpbmUpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0
aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlVHJ5U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBTdGF0ZW1lbnROb2Rl
KiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNo
QmxvY2ssIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jaywgaW50IHN0YXJ0TGluZSwgaW50IGVu
ZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlVHJ5U3RhdGVtZW50KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywgU3RhdGVtZW50Tm9kZSog
ZmluYWxseUJsb2NrLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAg
IFRyeU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBUcnlOb2RlKGxpbmVOdW1iZXIs
IHRyeUJsb2NrLCAqaWRlbnQsIGNhdGNoQmxvY2ssIGZpbmFsbHlCbG9jayk7CisgICAgICAgIFRy
eU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBUcnlOb2RlKGxvY2F0aW9uLCB0cnlC
bG9jaywgKmlkZW50LCBjYXRjaEJsb2NrLCBmaW5hbGx5QmxvY2spOwogICAgICAgICBpZiAoY2F0
Y2hCbG9jaykKICAgICAgICAgICAgIHVzZXNDYXRjaCgpOwotICAgICAgICByZXN1bHQtPnNldExv
YyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUs
IGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlU3dpdGNoU3RhdGVtZW50KGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQ2xhdXNlTGlzdE5vZGUqIGZpcnN0Q2xhdXNlcywg
Q2FzZUNsYXVzZU5vZGUqIGRlZmF1bHRDbGF1c2UsIENsYXVzZUxpc3ROb2RlKiBzZWNvbmRDbGF1
c2VzLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVh
dGVTd2l0Y2hTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIsIENsYXVzZUxpc3ROb2RlKiBmaXJzdENsYXVzZXMsIENhc2VDbGF1c2VO
b2RlKiBkZWZhdWx0Q2xhdXNlLCBDbGF1c2VMaXN0Tm9kZSogc2Vjb25kQ2xhdXNlcywgaW50IHN0
YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewogICAgICAgICBDYXNlQmxvY2tOb2RlKiBjYXNl
cyA9IG5ldyAobV9nbG9iYWxEYXRhKSBDYXNlQmxvY2tOb2RlKGZpcnN0Q2xhdXNlcywgZGVmYXVs
dENsYXVzZSwgc2Vjb25kQ2xhdXNlcyk7Ci0gICAgICAgIFN3aXRjaE5vZGUqIHJlc3VsdCA9IG5l
dyAobV9nbG9iYWxEYXRhKSBTd2l0Y2hOb2RlKGxpbmVOdW1iZXIsIGV4cHIsIGNhc2VzKTsKLSAg
ICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgU3dpdGNo
Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFN3aXRjaE5vZGUobG9jYXRpb24sIGV4
cHIsIGNhc2VzKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBs
b2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0
YXRlbWVudE5vZGUqIGNyZWF0ZVdoaWxlU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnRMaW5lLCBp
bnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaGlsZVN0YXRlbWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0g
ICAgICAgIFdoaWxlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFdoaWxlTm9kZShs
aW5lTnVtYmVyLCBleHByLCBzdGF0ZW1lbnQpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFy
dExpbmUsIGVuZExpbmUpOworICAgICAgICBXaGlsZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9i
YWxEYXRhKSBXaGlsZU5vZGUobG9jYXRpb24sIGV4cHIsIHN0YXRlbWVudCk7CisgICAgICAgIHJl
c3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVEb1do
aWxlU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIs
IGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgRG9XaGlsZU5vZGUq
IHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBEb1doaWxlTm9kZShsaW5lTnVtYmVyLCBzdGF0
ZW1lbnQsIGV4cHIpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUp
OworICAgICAgICBEb1doaWxlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIERvV2hp
bGVOb2RlKGxvY2F0aW9uLCBzdGF0ZW1lbnQsIGV4cHIpOworICAgICAgICByZXN1bHQtPnNldExv
YyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlTGFiZWxTdGF0ZW1lbnQo
aW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBTdGF0ZW1lbnROb2RlKiBz
dGF0ZW1lbnQsIGludCBzdGFydCwgaW50IGVuZCkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVM
YWJlbFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVu
dGlmaWVyKiBpZGVudCwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnQsIGludCBl
bmQpCiAgICAgewotICAgICAgICBMYWJlbE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRh
KSBMYWJlbE5vZGUobGluZU51bWJlciwgKmlkZW50LCBzdGF0ZW1lbnQpOworICAgICAgICBMYWJl
bE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBMYWJlbE5vZGUobG9jYXRpb24sICpp
ZGVudCwgc3RhdGVtZW50KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBz
dGFydCwgZW5kLCBlbmQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0
YXRlbWVudE5vZGUqIGNyZWF0ZVdpdGhTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBzdGFydCwgaW50IGVu
ZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRl
V2l0aFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnQsIGludCBlbmQs
IGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKICAgICAgICAgdXNlc1dpdGgoKTsK
LSAgICAgICAgV2l0aE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBXaXRoTm9kZShs
aW5lTnVtYmVyLCBleHByLCBzdGF0ZW1lbnQsIGVuZCwgZW5kIC0gc3RhcnQpOwotICAgICAgICBy
ZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICBXaXRoTm9kZSogcmVz
dWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFdpdGhOb2RlKGxvY2F0aW9uLCBleHByLCBzdGF0ZW1l
bnQsIGVuZCwgZW5kIC0gc3RhcnQpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUs
IGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fSAgICAKICAgICAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVUaHJvd1N0YXRlbWVudChpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCwgaW50
IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlVGhyb3dT
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIGludCBzdGFydCwgaW50IGVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAg
ICAgewotICAgICAgICBUaHJvd05vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBUaHJv
d05vZGUobGluZU51bWJlciwgZXhwcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGlu
ZSwgZW5kTGluZSk7CisgICAgICAgIFRocm93Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERh
dGEpIFRocm93Tm9kZShsb2NhdGlvbiwgZXhwcik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0
YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgc2V0RXhjZXB0aW9u
TG9jYXRpb24ocmVzdWx0LCBzdGFydCwgZW5kLCBlbmQpOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KICAgICAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVEZWJ1Z2dlcihpbnQgbGlu
ZU51bWJlciwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlRGVidWdnZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50IHN0YXJ0
TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5vZGUq
IHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBEZWJ1Z2dlclN0YXRlbWVudE5vZGUobGluZU51
bWJlcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAg
ICAgIERlYnVnZ2VyU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIERl
YnVnZ2VyU3RhdGVtZW50Tm9kZShsb2NhdGlvbik7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0
YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29uc3RTdGF0ZW1lbnQo
aW50IGxpbmVOdW1iZXIsIENvbnN0RGVjbE5vZGUqIGRlY2xzLCBpbnQgc3RhcnRMaW5lLCBpbnQg
ZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVDb25zdFN0YXRlbWVudChjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBDb25zdERlY2xOb2RlKiBkZWNscywgaW50IHN0YXJ0
TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBDb25zdFN0YXRlbWVudE5vZGUqIHJl
c3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb25zdFN0YXRlbWVudE5vZGUobGluZU51bWJlciwg
ZGVjbHMpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAg
ICAgICBDb25zdFN0YXRlbWVudE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb25z
dFN0YXRlbWVudE5vZGUobG9jYXRpb24sIGRlY2xzKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
c3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIENvbnN0RGVjbE5vZGUqIGFwcGVuZENvbnN0RGVjbChpbnQgbGlu
ZU51bWJlciwgQ29uc3REZWNsTm9kZSogdGFpbCwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRXhw
cmVzc2lvbk5vZGUqIGluaXRpYWxpemVyKQorICAgIENvbnN0RGVjbE5vZGUqIGFwcGVuZENvbnN0
RGVjbChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBDb25zdERlY2xOb2RlKiB0YWls
LCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBFeHByZXNzaW9uTm9kZSogaW5pdGlhbGl6ZXIpCiAg
ICAgewotICAgICAgICBDb25zdERlY2xOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
Q29uc3REZWNsTm9kZShsaW5lTnVtYmVyLCAqbmFtZSwgaW5pdGlhbGl6ZXIpOworICAgICAgICBD
b25zdERlY2xOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3REZWNsTm9kZShs
b2NhdGlvbiwgKm5hbWUsIGluaXRpYWxpemVyKTsKICAgICAgICAgaWYgKHRhaWwpCiAgICAgICAg
ICAgICB0YWlsLT5tX25leHQgPSByZXN1bHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC01
MTEsNyArNTExLDcgQEAgcHVibGljOgogICAgICAgICBtX3Njb3BlLm1fdmFyRGVjbGFyYXRpb25z
LT5kYXRhLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpZGVudCwgYXR0cnMpKTsKICAgICB9CiAKLSAg
ICBFeHByZXNzaW9uTm9kZSogY29tYmluZUNvbW1hTm9kZXMoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBsaXN0LCBFeHByZXNzaW9uTm9kZSogaW5pdCkKKyAgICBFeHByZXNzaW9uTm9k
ZSogY29tYmluZUNvbW1hTm9kZXMoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGxpc3QsIEV4cHJlc3Npb25Ob2RlKiBpbml0KQogICAgIHsKICAgICAgICAg
aWYgKCFsaXN0KQogICAgICAgICAgICAgcmV0dXJuIGluaXQ7CkBAIC01MTksNyArNTE5LDcgQEAg
cHVibGljOgogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q29tbWFOb2RlKj4obGlzdCktPmFwcGVu
ZChpbml0KTsKICAgICAgICAgICAgIHJldHVybiBsaXN0OwogICAgICAgICB9Ci0gICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29tbWFOb2RlKGxpbmVOdW1iZXIsIGxpc3QsIGluaXQp
OworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbW1hTm9kZShsb2NhdGlvbiwg
bGlzdCwgaW5pdCk7CiAgICAgfQogCiAgICAgaW50IGV2YWxDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fZXZhbENvdW50OyB9CkBAIC01NDcsMTAgKzU0NywxMCBAQCBwdWJsaWM6CiAgICAgICAgIEFT
U0VSVChvcGVyYW5kU3RhY2tEZXB0aCA+PSAwKTsKICAgICAgICAgbV9iaW5hcnlPcGVyYW5kU3Rh
Y2sucmVzaXplKG1fYmluYXJ5T3BlcmFuZFN0YWNrLnNpemUoKSAtIGFtb3VudCk7CiAgICAgfQot
ICAgIHZvaWQgYXBwZW5kQmluYXJ5T3BlcmF0aW9uKGludCBsaW5lTnVtYmVyLCBpbnQmIG9wZXJh
bmRTdGFja0RlcHRoLCBpbnQmLCBjb25zdCBCaW5hcnlPcGVyYW5kJiBsaHMsIGNvbnN0IEJpbmFy
eU9wZXJhbmQmIHJocykKKyAgICB2b2lkIGFwcGVuZEJpbmFyeU9wZXJhdGlvbihjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQmLCBjb25z
dCBCaW5hcnlPcGVyYW5kJiBsaHMsIGNvbnN0IEJpbmFyeU9wZXJhbmQmIHJocykKICAgICB7CiAg
ICAgICAgIG9wZXJhbmRTdGFja0RlcHRoKys7Ci0gICAgICAgIG1fYmluYXJ5T3BlcmFuZFN0YWNr
LmFwcGVuZChzdGQ6Om1ha2VfcGFpcihtYWtlQmluYXJ5Tm9kZShsaW5lTnVtYmVyLCBtX2JpbmFy
eU9wZXJhdG9yU3RhY2subGFzdCgpLmZpcnN0LCBsaHMsIHJocyksIEJpbmFyeU9wSW5mbyhsaHMu
c2Vjb25kLCByaHMuc2Vjb25kKSkpOworICAgICAgICBtX2JpbmFyeU9wZXJhbmRTdGFjay5hcHBl
bmQoc3RkOjptYWtlX3BhaXIobWFrZUJpbmFyeU5vZGUobG9jYXRpb24sIG1fYmluYXJ5T3BlcmF0
b3JTdGFjay5sYXN0KCkuZmlyc3QsIGxocywgcmhzKSwgQmluYXJ5T3BJbmZvKGxocy5zZWNvbmQs
IHJocy5zZWNvbmQpKSk7CiAgICAgfQogICAgIHZvaWQgb3BlcmF0b3JTdGFja0FwcGVuZChpbnQm
IG9wZXJhdG9yU3RhY2tEZXB0aCwgaW50IG9wLCBpbnQgcHJlY2VkZW5jZSkKICAgICB7CkBAIC01
OTIsOSArNTkyLDkgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2lnbm1lbnRJbmZvU3RhY2suYXBw
ZW5kKEFzc2lnbm1lbnRJbmZvKG5vZGUsIHN0YXJ0LCBkaXZvdCwgYXNzaWdubWVudENvdW50LCBv
cCkpOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBc3NpZ25tZW50KGludCBs
aW5lTnVtYmVyLCBpbnQmIGFzc2lnbm1lbnRTdGFja0RlcHRoLCBFeHByZXNzaW9uTm9kZSogcmhz
LCBpbnQgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgaW50IGN1cnJlbnRBc3NpZ25tZW50Q291bnQs
IGludCBsYXN0VG9rZW5FbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFzc2lnbm1lbnQo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50JiBhc3NpZ25tZW50U3RhY2tEZXB0
aCwgRXhwcmVzc2lvbk5vZGUqIHJocywgaW50IGluaXRpYWxBc3NpZ25tZW50Q291bnQsIGludCBj
dXJyZW50QXNzaWdubWVudENvdW50LCBpbnQgbGFzdFRva2VuRW5kKQogICAgIHsKLSAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIHJlc3VsdCA9IG1ha2VBc3NpZ25Ob2RlKGxpbmVOdW1iZXIsIG1fYXNz
aWdubWVudEluZm9TdGFjay5sYXN0KCkubV9ub2RlLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFz
dCgpLm1fb3AsIHJocywgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX2luaXRBc3NpZ25t
ZW50cyAhPSBpbml0aWFsQXNzaWdubWVudENvdW50LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFz
dCgpLm1faW5pdEFzc2lnbm1lbnRzICE9IGN1cnJlbnRBc3NpZ25tZW50Q291bnQsIG1fYXNzaWdu
bWVudEluZm9TdGFjay5sYXN0KCkubV9zdGFydCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3Qo
KS5tX2Rpdm90ICsgMSwgbGFzdFRva2VuRW5kKTsKKyAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHJl
c3VsdCA9IG1ha2VBc3NpZ25Ob2RlKGxvY2F0aW9uLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFz
dCgpLm1fbm9kZSwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX29wLCByaHMsIG1fYXNz
aWdubWVudEluZm9TdGFjay5sYXN0KCkubV9pbml0QXNzaWdubWVudHMgIT0gaW5pdGlhbEFzc2ln
bm1lbnRDb3VudCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX2luaXRBc3NpZ25tZW50
cyAhPSBjdXJyZW50QXNzaWdubWVudENvdW50LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgp
Lm1fc3RhcnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9kaXZvdCArIDEsIGxhc3RU
b2tlbkVuZCk7CiAgICAgICAgIG1fYXNzaWdubWVudEluZm9TdGFjay5yZW1vdmVMYXN0KCk7CiAg
ICAgICAgIGFzc2lnbm1lbnRTdGFja0RlcHRoLS07CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBA
IC02MzUsOSArNjM1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgbV9ldmFsQ291bnQrKzsKICAgICAg
ICAgbV9zY29wZS5tX2ZlYXR1cmVzIHw9IEV2YWxGZWF0dXJlOwogICAgIH0KLSAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlTnVtYmVyKGludCBsaW5lTnVtYmVyLCBkb3VibGUgZCkKKyAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlTnVtYmVyKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGRvdWJsZSBkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdW1i
ZXJOb2RlKGxpbmVOdW1iZXIsIGQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IE51bWJlck5vZGUobG9jYXRpb24sIGQpOwogICAgIH0KICAgICAKICAgICBKU0dsb2JhbERhdGEq
IG1fZ2xvYmFsRGF0YTsKQEAgLTY1MCwzMyArNjUwLDMzIEBAIHByaXZhdGU6CiAgICAgaW50IG1f
ZXZhbENvdW50OwogfTsKIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VUeXBlT2ZO
b2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKK0V4cHJlc3Npb25Ob2Rl
KiBBU1RCdWlsZGVyOjptYWtlVHlwZU9mTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKIHsKICAgICBpZiAoZXhwci0+aXNSZXNvbHZlTm9k
ZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2
ZU5vZGUqPihleHByKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUeXBlT2ZS
ZXNvbHZlTm9kZShsaW5lTnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCkpOworICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFR5cGVPZlJlc29sdmVOb2RlKGxvY2F0aW9uLCByZXNv
bHZlLT5pZGVudGlmaWVyKCkpOwogICAgIH0KLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IFR5cGVPZlZhbHVlTm9kZShsaW5lTnVtYmVyLCBleHByKTsKKyAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIFR5cGVPZlZhbHVlTm9kZShsb2NhdGlvbiwgZXhwcik7CiB9CiAKLUV4cHJlc3Np
b25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGVsZXRlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorRXhwcmVzc2lv
bk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VEZWxldGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50
IGVuZCkKIHsKICAgICBpZiAoIWV4cHItPmlzTG9jYXRpb24oKSkKLSAgICAgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBEZWxldGVWYWx1ZU5vZGUobGluZU51bWJlciwgZXhwcik7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlVmFsdWVOb2RlKGxvY2F0aW9uLCBl
eHByKTsKICAgICBpZiAoZXhwci0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVO
b2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihleHByKTsKLSAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEZWxldGVSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBy
ZXNvbHZlLT5pZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7
CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlUmVzb2x2ZU5vZGUobG9j
YXRpb24sIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAt
IGRpdm90KTsKICAgICB9CiAgICAgaWYgKGV4cHItPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7
CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFj
a2V0QWNjZXNzb3JOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgRGVsZXRlQnJhY2tldE5vZGUobGluZU51bWJlciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0
LT5zdWJzY3JpcHQoKSwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEZWxldGVCcmFja2V0Tm9kZShsb2NhdGlvbiwg
YnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgZGl2b3QsIGRpdm90IC0gc3Rh
cnQsIGVuZCAtIGRpdm90KTsKICAgICB9CiAgICAgQVNTRVJUKGV4cHItPmlzRG90QWNjZXNzb3JO
b2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNz
b3JOb2RlKj4oZXhwcik7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEZWxldGVEb3RO
b2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZGl2b3QsIGRp
dm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IERlbGV0ZURvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwg
ZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKIH0KIAotRXhwcmVzc2lvbk5vZGUq
IEFTVEJ1aWxkZXI6Om1ha2VOZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogbikKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTmVnYXRlTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogbikKIHsKICAgICBpZiAo
bi0+aXNOdW1iZXIoKSkgewogICAgICAgICBOdW1iZXJOb2RlKiBudW1iZXJOb2RlID0gc3RhdGlj
X2Nhc3Q8TnVtYmVyTm9kZSo+KG4pOwpAQCAtNjg0LDEyOCArNjg0LDEyOCBAQCBFeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBuKQogICAgICAgICByZXR1cm4gbnVtYmVyTm9kZTsKICAgICB9CiAKLSAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIE5lZ2F0ZU5vZGUobGluZU51bWJlciwgbik7CisgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOZWdhdGVOb2RlKGxvY2F0aW9uLCBuKTsKIH0KIAotRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXR3aXNlTm90Tm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFr
ZUJpdHdpc2VOb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBleHByKQogewogICAgIGlmIChleHByLT5pc051bWJlcigpKQotICAgICAgICByZXR1
cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIH50b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5v
ZGUqPihleHByKS0+dmFsdWUoKSkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0
d2lzZU5vdE5vZGUobGluZU51bWJlciwgZXhwcik7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1i
ZXIobG9jYXRpb24sIH50b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByKS0+dmFs
dWUoKSkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0d2lzZU5vdE5vZGUobG9j
YXRpb24sIGV4cHIpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU11bHRO
b2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1
aWxkZXI6Om1ha2VNdWx0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAg
ZXhwcjIgPSBleHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKIAogICAgIGlmIChleHByMS0+aXNOdW1i
ZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihs
aW5lTnVtYmVyLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpICogc3Rh
dGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7CisgICAgICAgIHJldHVybiBj
cmVhdGVOdW1iZXIobG9jYXRpb24sIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZh
bHVlKCkgKiBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKIAogICAg
IGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEp
LT52YWx1ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQ
bHVzTm9kZShsaW5lTnVtYmVyLCBleHByMik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgVW5hcnlQbHVzTm9kZShsb2NhdGlvbiwgZXhwcjIpOwogCiAgICAgaWYgKGV4cHIyLT5p
c051bWJlcigpICYmIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkgPT0g
MSkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbmFyeVBsdXNOb2RlKGxpbmVO
dW1iZXIsIGV4cHIxKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbmFyeVBs
dXNOb2RlKGxvY2F0aW9uLCBleHByMSk7CiAKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IE11bHROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBNdWx0Tm9kZShsb2NhdGlvbiwgZXhwcjEs
IGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1
aWxkZXI6Om1ha2VEaXZOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VEaXZOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgZXhwcjEgPSBleHByMS0+c3RyaXBVbmFy
eVBsdXMoKTsKICAgICBleHByMiA9IGV4cHIyLT5zdHJpcFVuYXJ5UGx1cygpOwogCiAgICAgaWYg
KGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4g
Y3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSkt
PnZhbHVlKCkgLyBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKLSAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERpdk5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4
cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihs
b2NhdGlvbiwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAvIHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOworICAgIHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgRGl2Tm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VNb2ROb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6
Om1ha2VNb2ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCiB7CiAgICAgZXhwcjEgPSBleHByMS0+c3RyaXBVbmFyeVBsdXMoKTsKICAgICBleHByMiA9
IGV4cHIyLT5zdHJpcFVuYXJ5UGx1cygpOwogICAgIAogICAgIGlmIChleHByMS0+aXNOdW1iZXIo
KSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5l
TnVtYmVyLCBmbW9kKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCksIHN0
YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIE1vZE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgZm1v
ZChzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpLCBzdGF0aWNfY2FzdDxO
dW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBNb2ROb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMp
OwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFkZE5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFk
ZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsK
ICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAg
IHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIxKS0+dmFsdWUoKSArIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVl
KCkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQWRkTm9kZShsaW5lTnVtYmVyLCBl
eHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICByZXR1cm4gY3JlYXRl
TnVtYmVyKGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgp
ICsgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7CisgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBBZGROb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIsIHJpZ2h0
SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVN1
Yk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZVN1Yk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cykKIHsKICAgICBleHByMSA9IGV4cHIxLT5zdHJpcFVuYXJ5UGx1cygpOwogICAg
IGV4cHIyID0gZXhwcjItPnN0cmlwVW5hcnlQbHVzKCk7CiAKICAgICBpZiAoZXhwcjEtPmlzTnVt
YmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIo
bGluZU51bWJlciwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAtIHN0
YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOwotICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgU3ViTm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxvY2F0aW9uLCBzdGF0
aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpIC0gc3RhdGljX2Nhc3Q8TnVtYmVy
Tm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBT
dWJOb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQog
Ci1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUxlZnRTaGlmdE5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUxl
ZnRTaGlmdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cykKIHsKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0g
ICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgdG9JbnQzMihzdGF0aWNfY2Fz
dDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA8PCAodG9VSW50MzIoc3RhdGljX2Nhc3Q8
TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7Ci0gICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBMZWZ0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmln
aHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobG9jYXRpb24s
IHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPDwgKHRv
VUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikp
OworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVmdFNoaWZ0Tm9kZShsb2NhdGlvbiwg
ZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUq
IEFTVEJ1aWxkZXI6Om1ha2VSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUmlnaHRTaGlmdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBpZiAo
ZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBj
cmVhdGVOdW1iZXIobGluZU51bWJlciwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4o
ZXhwcjEpLT52YWx1ZSgpKSA+PiAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4
cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBS
aWdodFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxvY2F0aW9uLCB0b0ludDMyKHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpID4+ICh0b1VJbnQzMihzdGF0aWNf
Y2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSAmIDB4MWYpKTsKKyAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIFJpZ2h0U2hpZnROb2RlKGxvY2F0aW9uLCBleHByMSwgZXhwcjIs
IHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6
bWFrZVVSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJl
c3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlVVJpZ2h0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051
bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVy
KGxpbmVOdW1iZXIsIHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZh
bHVlKCkpID4+ICh0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1
ZSgpKSAmIDB4MWYpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuc2lnbmVkUmln
aHRTaGlmdE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgdG9VSW50MzIoc3RhdGlj
X2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0YXRpY19j
YXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOworICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZShsb2NhdGlvbiwgZXhwcjEs
IGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1
aWxkZXI6Om1ha2VCaXRPck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHBy
ZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdE9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1iZXIo
KSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5l
TnVtYmVyLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkp
IHwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7Ci0g
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCaXRPck5vZGUobGluZU51bWJlciwgZXhwcjEs
IGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJl
cihsb2NhdGlvbiwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1
ZSgpKSB8IHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkp
OworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0T3JOb2RlKGxvY2F0aW9uLCBleHBy
MSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZUJpdEFuZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitF
eHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdEFuZE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBpZiAoZXhwcjEtPmlzTnVt
YmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIo
bGluZU51bWJlciwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1
ZSgpKSAmIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkp
OwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0QW5kTm9kZShsaW5lTnVtYmVyLCBl
eHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICByZXR1cm4gY3JlYXRl
TnVtYmVyKGxvY2F0aW9uLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSkt
PnZhbHVlKCkpICYgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1
ZSgpKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCaXRBbmROb2RlKGxvY2F0aW9u
LCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNzaW9uTm9k
ZSogQVNUQnVpbGRlcjo6bWFrZUJpdFhPck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpdFhPck5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBpZiAoZXhwcjEt
PmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVO
dW1iZXIobGluZU51bWJlciwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEp
LT52YWx1ZSgpKSBeIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFs
dWUoKSkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0WE9yTm9kZShsaW5lTnVt
YmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICByZXR1cm4g
Y3JlYXRlTnVtYmVyKGxvY2F0aW9uLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihl
eHByMSktPnZhbHVlKCkpIF4gdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIp
LT52YWx1ZSgpKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBCaXRYT3JOb2RlKGxv
Y2F0aW9uLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogfQogCi1FeHByZXNz
aW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzLCBpbnQgc3RhcnQsIGlu
dCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rp
b25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogZnVuYywgQXJndW1lbnRzTm9kZSogYXJncywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBl
bmQpCiB7CiAgICAgaWYgKCFmdW5jLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKGxpbmVOdW1iZXIsIGZ1bmMsIGFy
Z3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKGxvY2F0aW9uLCBmdW5jLCBh
cmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIGlmIChmdW5jLT5p
c1Jlc29sdmVOb2RlKCkpIHsKICAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNf
Y2FzdDxSZXNvbHZlTm9kZSo+KGZ1bmMpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dGlmaWVyID0gcmVzb2x2ZS0+aWRlbnRpZmllcigpOwogICAgICAgICBpZiAoaWRlbnRpZmllciA9
PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmV2YWwpIHsKICAgICAgICAgICAgIHVzZXNF
dmFsKCk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEV2YWxGdW5jdGlv
bkNhbGxOb2RlKGxpbmVOdW1iZXIsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEV2YWxGdW5jdGlv
bkNhbGxOb2RlKGxvY2F0aW9uLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rp
b25DYWxsUmVzb2x2ZU5vZGUobGluZU51bWJlciwgaWRlbnRpZmllciwgYXJncywgZGl2b3QsIGRp
dm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShsb2NhdGlvbiwgaWRlbnRpZmllciwgYXJncywg
ZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICB9CiAgICAgaWYgKGZ1bmMt
PmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUq
IGJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4oZnVuYyk7Ci0gICAg
ICAgIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEZ1
bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tl
dC0+c3Vic2NyaXB0KCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7
CisgICAgICAgIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERh
dGEpIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGxvY2F0aW9uLCBicmFja2V0LT5iYXNlKCksIGJy
YWNrZXQtPnN1YnNjcmlwdCgpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOwogICAgICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhicmFja2V0LT5kaXZvdCgp
LCBicmFja2V0LT5lbmRPZmZzZXQoKSk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KQEAg
LTgxMywxMTggKzgxMywxMTggQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5j
dGlvbkNhbGxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSoKICAgICBEb3RBY2Nl
c3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwogICAg
IEZ1bmN0aW9uQ2FsbERvdE5vZGUqIG5vZGU7CiAgICAgaWYgKGRvdC0+aWRlbnRpZmllcigpID09
IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+Y2FsbCkKLSAgICAgICAgbm9kZSA9IG5ldyAo
bV9nbG9iYWxEYXRhKSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJh
c2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQg
LSBkaXZvdCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ2FsbEZ1bmN0aW9u
Q2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJn
cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBlbHNlIGlmIChkb3Qt
PmlkZW50aWZpZXIoKSA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFwcGx5KQotICAg
ICAgICBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShs
aW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBk
aXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90
LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7
CiAgICAgZWxzZQotICAgICAgICBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2Fs
bERvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdz
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBub2RlID0gbmV3
IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgp
LCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90KTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+
ZW5kT2Zmc2V0KCkpOwogICAgIHJldHVybiBub2RlOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNU
QnVpbGRlcjo6bWFrZUJpbmFyeU5vZGUoaW50IGxpbmVOdW1iZXIsIGludCB0b2tlbiwgcGFpcjxF
eHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4gbGhzLCBwYWlyPEV4cHJlc3Npb25Ob2RlKiwg
QmluYXJ5T3BJbmZvPiByaHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUJpbmFy
eU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50IHRva2VuLCBwYWlyPEV4
cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiBsaHMsIHBhaXI8RXhwcmVzc2lvbk5vZGUqLCBC
aW5hcnlPcEluZm8+IHJocykKIHsKICAgICBzd2l0Y2ggKHRva2VuKSB7CiAgICAgY2FzZSBPUjoK
LSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMb2dpY2FsT3BOb2RlKGxpbmVOdW1i
ZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxPcik7CisgICAgICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgTG9naWNhbE9wTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMu
Zmlyc3QsIE9wTG9naWNhbE9yKTsKIAogICAgIGNhc2UgQU5EOgotICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIExvZ2ljYWxPcE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMu
Zmlyc3QsIE9wTG9naWNhbEFuZCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
TG9naWNhbE9wTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIE9wTG9naWNhbEFu
ZCk7CiAKICAgICBjYXNlIEJJVE9SOgotICAgICAgICByZXR1cm4gbWFrZUJpdE9yTm9kZShsaW5l
TnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsK
KyAgICAgICAgcmV0dXJuIG1ha2VCaXRPck5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZp
cnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBCSVRYT1I6Ci0gICAg
ICAgIHJldHVybiBtYWtlQml0WE9yTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJz
dCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VCaXRYT3JO
b2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25t
ZW50KTsKIAogICAgIGNhc2UgQklUQU5EOgotICAgICAgICByZXR1cm4gbWFrZUJpdEFuZE5vZGUo
bGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVu
dCk7CisgICAgICAgIHJldHVybiBtYWtlQml0QW5kTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCBy
aHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIEVRRVE6Ci0g
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRXF1YWxOb2RlKGxpbmVOdW1iZXIsIGxo
cy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVxdWFsTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCBy
aHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIE5FOgotICAg
ICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE5vdEVxdWFsTm9kZShsaW5lTnVtYmVyLCBs
aHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOb3RFcXVhbE5vZGUobG9jYXRpb24sIGxocy5maXJz
dCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBTVFJF
UToKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBTdHJpY3RFcXVhbE5vZGUobGlu
ZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7
CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgU3RyaWN0RXF1YWxOb2RlKGxvY2F0
aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAog
ICAgIGNhc2UgU1RSTkVROgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE5vdFN0
cmljdEVxdWFsTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29u
ZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOb3RT
dHJpY3RFcXVhbE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25k
Lmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBMVDoKLSAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBMZXNzTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhz
LnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBMZXNzTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFz
QXNzaWdubWVudCk7CiAKICAgICBjYXNlIEdUOgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIEdyZWF0ZXJOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMu
c2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IEdyZWF0ZXJOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5o
YXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgTEU6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgTGVzc0VxTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhz
LnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBMZXNzRXFOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5o
YXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgR0U6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgR3JlYXRlckVxTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwg
cmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBHcmVhdGVyRXFOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNl
Y29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgSU5TVEFOQ0VPRjogewotICAgICAgICBJ
bnN0YW5jZU9mTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBJbnN0YW5jZU9mTm9kZShs
aW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50
KTsKKyAgICAgICAgSW5zdGFuY2VPZk5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSW5z
dGFuY2VPZk5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhh
c0Fzc2lnbm1lbnQpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBsaHMuc2Vj
b25kLnN0YXJ0LCByaHMuc2Vjb25kLnN0YXJ0LCByaHMuc2Vjb25kLmVuZCk7CiAgICAgICAgIHJl
dHVybiBub2RlOwogICAgIH0KIAogICAgIGNhc2UgSU5UT0tFTjogewotICAgICAgICBJbk5vZGUq
IG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSW5Ob2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwg
cmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICBJbk5vZGUqIG5v
ZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSW5Ob2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5m
aXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9j
YXRpb24obm9kZSwgbGhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29u
ZC5lbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKICAgICBjYXNlIExTSElGVDoK
LSAgICAgICAgcmV0dXJuIG1ha2VMZWZ0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwg
cmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFr
ZUxlZnRTaGlmdE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25k
Lmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBSU0hJRlQ6Ci0gICAgICAgIHJldHVybiBtYWtl
UmlnaHRTaGlmdE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNv
bmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlUmlnaHRTaGlmdE5vZGUobG9j
YXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwog
CiAgICAgY2FzZSBVUlNISUZUOgotICAgICAgICByZXR1cm4gbWFrZVVSaWdodFNoaWZ0Tm9kZShs
aW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VVUmlnaHRTaGlmdE5vZGUobG9jYXRpb24sIGxocy5maXJz
dCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBQTFVT
OgotICAgICAgICByZXR1cm4gbWFrZUFkZE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMu
Zmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlQWRk
Tm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdu
bWVudCk7CiAKICAgICBjYXNlIE1JTlVTOgotICAgICAgICByZXR1cm4gbWFrZVN1Yk5vZGUobGlu
ZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7
CisgICAgICAgIHJldHVybiBtYWtlU3ViTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmly
c3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIFRJTUVTOgotICAgICAg
ICByZXR1cm4gbWFrZU11bHROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBy
aHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZU11bHROb2RlKGxv
Y2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsK
IAogICAgIGNhc2UgRElWSURFOgotICAgICAgICByZXR1cm4gbWFrZURpdk5vZGUobGluZU51bWJl
ciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAg
ICAgIHJldHVybiBtYWtlRGl2Tm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJo
cy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIE1PRDoKLSAgICAgICAgcmV0dXJu
IG1ha2VNb2ROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25k
Lmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZU1vZE5vZGUobG9jYXRpb24sIGxo
cy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogICAgIH0KICAg
ICBDUkFTSCgpOwogICAgIHJldHVybiAwOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRl
cjo6bWFrZUFzc2lnbk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsb2MsIE9w
ZXJhdG9yIG9wLCBFeHByZXNzaW9uTm9kZSogZXhwciwgYm9vbCBsb2NIYXNBc3NpZ25tZW50cywg
Ym9vbCBleHBySGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQor
RXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsb2MsIE9wZXJhdG9yIG9wLCBFeHBy
ZXNzaW9uTm9kZSogZXhwciwgYm9vbCBsb2NIYXNBc3NpZ25tZW50cywgYm9vbCBleHBySGFzQXNz
aWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlmICghbG9j
LT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWdu
RXJyb3JOb2RlKGxpbmVOdW1iZXIsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7
CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduRXJyb3JOb2RlKGxvY2F0
aW9uLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogCiAgICAgaWYgKGxvYy0+
aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGlj
X2Nhc3Q8UmVzb2x2ZU5vZGUqPihsb2MpOwogICAgICAgICBpZiAob3AgPT0gT3BFcXVhbCkgewog
ICAgICAgICAgICAgaWYgKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZXhwciktPmJvZHkoKS0+c2V0SW5mZXJyZWROYW1l
KHJlc29sdmUtPmlkZW50aWZpZXIoKSk7Ci0gICAgICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSog
bm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25SZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBy
ZXNvbHZlLT5pZGVudGlmaWVyKCksIGV4cHIpOworICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5v
ZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobG9jYXRpb24s
IHJlc29sdmUtPmlkZW50aWZpZXIoKSwgZXhwcik7CiAgICAgICAgICAgICBzZXRFeGNlcHRpb25M
b2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgICAgICByZXR1cm4gbm9k
ZTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2Rp
ZnlSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wLCBleHBy
LCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7
CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1vZGlmeVJlc29sdmVOb2Rl
KGxvY2F0aW9uLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdu
bWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIGlm
IChsb2MtPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nv
ck5vZGUqIGJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4obG9jKTsK
ICAgICAgICAgaWYgKG9wID09IE9wRXF1YWwpCi0gICAgICAgICAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIEFzc2lnbkJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwg
YnJhY2tldC0+c3Vic2NyaXB0KCksIGV4cHIsIGxvY0hhc0Fzc2lnbm1lbnRzLCBleHBySGFzQXNz
aWdubWVudHMsIGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPmRpdm90KCkgLSBzdGFydCwgZW5k
IC0gYnJhY2tldC0+ZGl2b3QoKSk7Ci0gICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZSogbm9k
ZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5QnJhY2tldE5vZGUobGluZU51bWJlciwg
YnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgb3AsIGV4cHIsIGxvY0hhc0Fz
c2lnbm1lbnRzLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQg
LSBkaXZvdCk7CisgICAgICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnbkJy
YWNrZXROb2RlKGxvY2F0aW9uLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgp
LCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhhc0Fzc2lnbm1lbnRzLCBicmFja2V0LT5k
aXZvdCgpLCBicmFja2V0LT5kaXZvdCgpIC0gc3RhcnQsIGVuZCAtIGJyYWNrZXQtPmRpdm90KCkp
OworICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGxvY2F0aW9uLCBicmFja2V0LT5iYXNlKCksIGJyYWNr
ZXQtPnN1YnNjcmlwdCgpLCBvcCwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3Np
Z25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICAgICAgbm9k
ZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZW5kT2Zm
c2V0KCkpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CkBAIC05MzMsNTUgKzkzMyw1NSBA
QCBFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBsb2MsCiAgICAgaWYgKG9wID09IE9wRXF1YWwpIHsKICAgICAg
ICAgaWYgKGV4cHItPmlzRnVuY0V4cHJOb2RlKCkpCiAgICAgICAgICAgICBzdGF0aWNfY2FzdDxG
dW5jRXhwck5vZGUqPihleHByKS0+Ym9keSgpLT5zZXRJbmZlcnJlZE5hbWUoZG90LT5pZGVudGlm
aWVyKCkpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnbkRvdE5vZGUo
bGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBleHByLCBleHBySGFz
QXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdCgpIC0gc3RhcnQsIGVuZCAtIGRv
dC0+ZGl2b3QoKSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduRG90
Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBleHByLCBleHBy
SGFzQXNzaWdubWVudHMsIGRvdC0+ZGl2b3QoKSwgZG90LT5kaXZvdCgpIC0gc3RhcnQsIGVuZCAt
IGRvdC0+ZGl2b3QoKSk7CiAgICAgfQogCi0gICAgUmVhZE1vZGlmeURvdE5vZGUqIG5vZGUgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1vZGlmeURvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNl
KCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZv
dCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBu
b2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlEb3ROb2RlKGxvY2F0aW9uLCBkb3Qt
PmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBleHByLCBleHBySGFzQXNzaWdubWVudHMs
IGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgbm9kZS0+c2V0U3ViZXhw
cmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPmVuZE9mZnNldCgpKTsKICAgICByZXR1cm4g
bm9kZTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VQcmVmaXhOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3BlcmF0b3Igb3AsIGludCBzdGFy
dCwgaW50IGRpdm90LCBpbnQgZW5kKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VQ
cmVmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBleHByLCBPcGVyYXRvciBvcCwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiB7CiAg
ICAgaWYgKCFleHByLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgUHJlZml4RXJyb3JOb2RlKGxpbmVOdW1iZXIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFy
dCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByZWZp
eEVycm9yTm9kZShsb2NhdGlvbiwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZv
dCk7CiAKICAgICBpZiAoZXhwci0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVO
b2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihleHByKTsKLSAgICAgICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBy
ZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeFJlc29sdmVOb2Rl
KGxvY2F0aW9uLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFy
dCwgZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBpZiAoZXhwci0+aXNCcmFja2V0QWNjZXNzb3JO
b2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19j
YXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICAgICAgUHJlZml4QnJhY2tldE5v
ZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4QnJhY2tldE5vZGUobGluZU51bWJl
ciwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgb3AsIGRpdm90LCBkaXZv
dCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIFByZWZpeEJyYWNrZXROb2RlKiBub2Rl
ID0gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeEJyYWNrZXROb2RlKGxvY2F0aW9uLCBicmFja2V0
LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQs
IGVuZCAtIGRpdm90KTsKICAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tl
dC0+ZGl2b3QoKSwgYnJhY2tldC0+c3RhcnRPZmZzZXQoKSk7CiAgICAgICAgIHJldHVybiBub2Rl
OwogICAgIH0KICAgICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90
QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihleHByKTsK
LSAgICBQcmVmaXhEb3ROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeERvdE5v
ZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICBQcmVmaXhEb3ROb2RlKiBub2RlID0g
bmV3IChtX2dsb2JhbERhdGEpIFByZWZpeERvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBk
b3QtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7
CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPnN0YXJ0
T2Zmc2V0KCkpOwogICAgIHJldHVybiBub2RlOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVp
bGRlcjo6bWFrZVBvc3RmaXhOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
ciwgT3BlcmF0b3Igb3AsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQorRXhwcmVzc2lv
bk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VQb3N0Zml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3BlcmF0b3Igb3AsIGludCBzdGFydCwg
aW50IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlmICghZXhwci0+aXNMb2NhdGlvbigpKQotICAg
ICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhFcnJvck5vZGUobGluZU51bWJl
ciwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeEVycm9yTm9kZShsb2NhdGlvbiwgb3AsIGRpdm90
LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAKICAgICBpZiAoZXhwci0+aXNSZXNvbHZl
Tm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVz
b2x2ZU5vZGUqPihleHByKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0
Zml4UmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBQb3N0Zml4UmVzb2x2ZU5vZGUobG9jYXRpb24sIHJlc29sdmUtPmlkZW50aWZp
ZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAg
IGlmIChleHByLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNj
ZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGV4
cHIpOwotICAgICAgICBQb3N0Zml4QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgUG9zdGZpeEJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tl
dC0+c3Vic2NyaXB0KCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwor
ICAgICAgICBQb3N0Zml4QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9z
dGZpeEJyYWNrZXROb2RlKGxvY2F0aW9uLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNj
cmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICAgICAg
bm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZW5k
T2Zmc2V0KCkpOwogICAgICAgICByZXR1cm4gbm9kZTsKIAogICAgIH0KICAgICBBU1NFUlQoZXhw
ci0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0
aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICBQb3N0Zml4RG90Tm9kZSogbm9k
ZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4RG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJh
c2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0g
ZGl2b3QpOworICAgIFBvc3RmaXhEb3ROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFBv
c3RmaXhEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9w
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1YmV4
cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5lbmRPZmZzZXQoKSk7CiAgICAgcmV0dXJu
IG5vZGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDNiMDIw
ZjRmMmIxYjA5NmE3MGE5NWE5YjU4ODgyN2JkOTBiOTg1OWMuLjJhOGE4ZGM5ZTM2M2FkM2EyMjcx
NTk2ZTc1ZTE5ZjVkY2MyYjMxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCkBAIC00MTcsNiArNDE3LDcgQEAgdm9pZCBMZXhlcjxUPjo6c2V0Q29kZShjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIFBhcnNlckFyZW5hKiBhcmVuYSkKICAgICBtX2NvZGVFbmQgPSBtX2Nv
ZGVTdGFydCArIHNvdXJjZS5lbmRPZmZzZXQoKTsKICAgICBtX2Vycm9yID0gZmFsc2U7CiAgICAg
bV9hdExpbmVTdGFydCA9IHRydWU7CisgICAgbV9jb2x1bW5OdW1iZXIgPSAwOwogICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gVVN0cmluZygpOwogICAgIAogICAgIG1fYnVmZmVyOC5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGluaXRpYWxSZWFkQnVmZmVyQ2FwYWNpdHkpOwpAQCAtNDMzLDYgKzQzNCw3
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogdGVtcGxhdGUgPGludCBzaGlmdEFtb3VudD4gQUxX
QVlTX0lOTElORSB2b2lkIExleGVyPFQ+OjppbnRlcm5hbFNoaWZ0KCkKIHsKICAgICBtX2NvZGUg
Kz0gc2hpZnRBbW91bnQ7CisgICAgbV9jb2x1bW5OdW1iZXIgKz0gc2hpZnRBbW91bnQ7CiAgICAg
bV9jdXJyZW50ID0gKm1fY29kZTsKIH0KIApAQCAtNDQ0LDYgKzQ0Niw3IEBAIEFMV0FZU19JTkxJ
TkUgdm9pZCBMZXhlcjxUPjo6c2hpZnQoKQogICAgICsrbV9jb2RlOwogICAgIGlmIChMSUtFTFko
bV9jb2RlIDwgbV9jb2RlRW5kKSkKICAgICAgICAgbV9jdXJyZW50ID0gKm1fY29kZTsKKyAgICAr
K21fY29sdW1uTnVtYmVyOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTExODMsNyAr
MTE4Niw3IEBAIGJvb2wgTGV4ZXI8VD46Om5leHRUb2tlbklzQ29sb24oKQogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgVD4KLUpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXgoSlNUb2tlbkRhdGEqIHRv
a2VuRGF0YSwgSlNUb2tlbkluZm8qIHRva2VuSW5mbywgdW5zaWduZWQgbGV4ZXJGbGFncywgYm9v
bCBzdHJpY3RNb2RlKQorSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleChKU1Rva2VuRGF0YSogdG9r
ZW5EYXRhLCBKU1Rva2VuTG9jYXRpb24qIHRva2VuTG9jYXRpb24sIHVuc2lnbmVkIGxleGVyRmxh
Z3MsIGJvb2wgc3RyaWN0TW9kZSkKIHsKICAgICBBU1NFUlQoIW1fZXJyb3IpOwogICAgIEFTU0VS
VChtX2J1ZmZlcjguaXNFbXB0eSgpKTsKQEAgLTExOTksNyArMTIwMiw4IEBAIHN0YXJ0OgogICAg
IGlmIChhdEVuZCgpKQogICAgICAgICByZXR1cm4gRU9GVE9LOwogICAgIAotICAgIHRva2VuSW5m
by0+c3RhcnRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7CisgICAgdG9rZW5Mb2NhdGlvbi0+c3Rh
cnRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7CisgICAgdG9rZW5Mb2NhdGlvbi0+Y29sdW1uID0g
bV9jb2x1bW5OdW1iZXI7CiAKICAgICBDaGFyYWN0ZXJUeXBlIHR5cGU7CiAgICAgaWYgKExJS0VM
WShpc0xhdGluMShtX2N1cnJlbnQpKSkKQEAgLTE1MjIsNiArMTUyNiw3IEBAIGluTnVtYmVyQWZ0
ZXJEZWNpbWFsUG9pbnQ6CiAgICAgICAgIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKICAgICAgICAg
bV9hdExpbmVTdGFydCA9IHRydWU7CiAgICAgICAgIG1fdGVybWluYXRvciA9IHRydWU7CisgICAg
ICAgIG1fY29sdW1uTnVtYmVyID0gMDsKICAgICAgICAgZ290byBzdGFydDsKICAgICBjYXNlIENo
YXJhY3RlckludmFsaWQ6CiAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gaW52YWxpZENoYXJh
Y3Rlck1lc3NhZ2UoKTsKQEAgLTE1NDQsNiArMTU0OSw3IEBAIGluU2luZ2xlTGluZUNvbW1lbnQ6
CiAgICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwogICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOwog
ICAgIG1fdGVybWluYXRvciA9IHRydWU7CisgICAgbV9jb2x1bW5OdW1iZXIgPSAwOwogICAgIGlm
ICghbGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkpCiAgICAgICAgIGdvdG8gc3RhcnQ7CiAKQEAg
LTE1NTEsMTUgKzE1NTcsMTUgQEAgaW5TaW5nbGVMaW5lQ29tbWVudDoKICAgICAvLyBGYWxsIHRo
cm91Z2ggaW50byByZXR1cm5Ub2tlbi4KIAogcmV0dXJuVG9rZW46Ci0gICAgdG9rZW5JbmZvLT5s
aW5lID0gbV9saW5lTnVtYmVyOwotICAgIHRva2VuSW5mby0+ZW5kT2Zmc2V0ID0gY3VycmVudE9m
ZnNldCgpOworICAgIHRva2VuTG9jYXRpb24tPmxpbmUgPSBtX2xpbmVOdW1iZXI7CisgICAgdG9r
ZW5Mb2NhdGlvbi0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOwogICAgIG1fbGFzdFRva2Vu
ID0gdG9rZW47CiAgICAgcmV0dXJuIHRva2VuOwogCiByZXR1cm5FcnJvcjoKICAgICBtX2Vycm9y
ID0gdHJ1ZTsKLSAgICB0b2tlbkluZm8tPmxpbmUgPSBtX2xpbmVOdW1iZXI7Ci0gICAgdG9rZW5J
bmZvLT5lbmRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7CisgICAgdG9rZW5Mb2NhdGlvbi0+bGlu
ZSA9IG1fbGluZU51bWJlcjsKKyAgICB0b2tlbkxvY2F0aW9uLT5lbmRPZmZzZXQgPSBjdXJyZW50
T2Zmc2V0KCk7CiAgICAgcmV0dXJuIEVSUk9SVE9LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmgKaW5kZXggNDFmMWY4NTUzZTFlYjI1ZjU0NGJlZTE5MzVhMmFmNGJiZDA2OWU2
NC4uMWFjODMyYTJjN2I1ZjM4MmIzM2I3OGE1YzgzMDRiMTc1NTQwZjQ3MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAtODcsOSArODcsMTAgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0SXNSZXBhcnNpbmcoKSB7IG1faXNSZXBhcnNpbmcgPSB0cnVlOyB9CiAgICAgYm9vbCBp
c1JlcGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXBhcnNpbmc7IH0KIAotICAgIEpTVG9r
ZW5UeXBlIGxleChKU1Rva2VuRGF0YSosIEpTVG9rZW5JbmZvKiwgdW5zaWduZWQsIGJvb2wgc3Ry
aWN0TW9kZSk7CisgICAgSlNUb2tlblR5cGUgbGV4KEpTVG9rZW5EYXRhKiwgSlNUb2tlbkxvY2F0
aW9uKiwgdW5zaWduZWQsIGJvb2wgc3RyaWN0TW9kZSk7CiAgICAgYm9vbCBuZXh0VG9rZW5Jc0Nv
bG9uKCk7CiAgICAgaW50IGxpbmVOdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7
IH0KKyAgICBpbnQgY3VycmVudENvbHVtbk51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1u
TnVtYmVyOyB9CiAgICAgdm9pZCBzZXRMYXN0TGluZU51bWJlcihpbnQgbGFzdExpbmVOdW1iZXIp
IHsgbV9sYXN0TGluZU51bWJlciA9IGxhc3RMaW5lTnVtYmVyOyB9CiAgICAgaW50IGxhc3RMaW5l
TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGluZU51bWJlcjsgfQogICAgIGJvb2wgcHJl
dlRlcm1pbmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3Rlcm1pbmF0b3I7IH0KQEAgLTEyMCw3ICsx
MjEsNyBAQCBwdWJsaWM6CiAKICAgICBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIoKSBj
b25zdCB7IHJldHVybiBtX3NvdXJjZS0+cHJvdmlkZXIoKTsgfQogCi0gICAgSlNUb2tlblR5cGUg
bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuRGF0YSosIEpTVG9rZW5JbmZvKiwgdW5zaWduZWQs
IGJvb2wgc3RyaWN0TW9kZSk7CisgICAgSlNUb2tlblR5cGUgbGV4RXhwZWN0SWRlbnRpZmllcihK
U1Rva2VuRGF0YSosIEpTVG9rZW5Mb2NhdGlvbiosIHVuc2lnbmVkLCBib29sIHN0cmljdE1vZGUp
OwogCiBwcml2YXRlOgogICAgIHZvaWQgcmVjb3JkOChpbnQpOwpAQCAtMTY2LDYgKzE2Nyw3IEBA
IHByaXZhdGU6CiAKICAgICBpbnQgbV9saW5lTnVtYmVyOwogICAgIGludCBtX2xhc3RMaW5lTnVt
YmVyOworICAgIGludCBtX2NvbHVtbk51bWJlcjsKIAogICAgIFZlY3RvcjxMQ2hhcj4gbV9idWZm
ZXI4OwogICAgIFZlY3RvcjxVQ2hhcj4gbV9idWZmZXIxNjsKQEAgLTI1Nyw3ICsyNTksNyBAQCBB
TFdBWVNfSU5MSU5FIGNvbnN0IElkZW50aWZpZXIqIExleGVyPFQ+OjptYWtlSWRlbnRpZmllckxD
aGFyRnJvbVVDaGFyKGNvbnN0IFVDaAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUFMV0FZ
U19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tl
bkRhdGEqIHRva2VuRGF0YSwgSlNUb2tlbkluZm8qIHRva2VuSW5mbywgdW5zaWduZWQgbGV4ZXJG
bGFncywgYm9vbCBzdHJpY3RNb2RlKQorQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxU
Pjo6bGV4RXhwZWN0SWRlbnRpZmllcihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLCBKU1Rva2VuTG9j
YXRpb24qIHRva2VuTG9jYXRpb24sIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9k
ZSkKIHsKICAgICBBU1NFUlQoKGxleGVyRmxhZ3MgJiBMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRX
b3JkcykpOwogICAgIGNvbnN0IFQqIHN0YXJ0ID0gbV9jb2RlOwpAQCAtMjg1LDIwICsyODcsMjIg
QEAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4RXhwZWN0SWRlbnRpZmll
cihKU1Rva2VuRGF0YSogdG9rZW5EYXRhLAogICAgICAgICBtX2N1cnJlbnQgPSAwOwogCiAgICAg
bV9jb2RlID0gcHRyOworICAgIG1fY29sdW1uTnVtYmVyID0gbV9jb2x1bW5OdW1iZXIgKyAobV9j
b2RlIC0gc3RhcnQpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSBpZGVudGlmaWVyIGlmIG5lZWRlZAog
ICAgIGlmIChsZXhlckZsYWdzICYgTGV4ZXhGbGFnc0RvbnRCdWlsZEtleXdvcmRzKQogICAgICAg
ICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKICAgICBlbHNlCiAgICAgICAgIHRva2VuRGF0YS0+aWRl
bnQgPSBtYWtlSWRlbnRpZmllcihzdGFydCwgcHRyIC0gc3RhcnQpOwotICAgIHRva2VuSW5mby0+
bGluZSA9IG1fbGluZU51bWJlcjsKLSAgICB0b2tlbkluZm8tPnN0YXJ0T2Zmc2V0ID0gc3RhcnQg
LSBtX2NvZGVTdGFydDsKLSAgICB0b2tlbkluZm8tPmVuZE9mZnNldCA9IGN1cnJlbnRPZmZzZXQo
KTsKKyAgICB0b2tlbkxvY2F0aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOworICAgIHRva2VuTG9j
YXRpb24tPnN0YXJ0T2Zmc2V0ID0gc3RhcnQgLSBtX2NvZGVTdGFydDsKKyAgICB0b2tlbkxvY2F0
aW9uLT5lbmRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7CisgICAgdG9rZW5Mb2NhdGlvbi0+Y29s
dW1uID0gbV9jb2x1bW5OdW1iZXI7CiAgICAgbV9sYXN0VG9rZW4gPSBJREVOVDsKICAgICByZXR1
cm4gSURFTlQ7CiAgICAgCiBzbG93Q2FzZToKLSAgICByZXR1cm4gbGV4KHRva2VuRGF0YSwgdG9r
ZW5JbmZvLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKTsKKyAgICByZXR1cm4gbGV4KHRva2VuRGF0
YSwgdG9rZW5Mb2NhdGlvbiwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
Q29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1
Y3RvcnMuaAppbmRleCBiZTUwZWVhZmUzZTQwZWFjMWQ5N2I3ZDRkMDJiNWE0YzY5ODI5Njg2Li40
M2QxZTE3YzZhNGNjMDc1YzY2NGU2M2VkOTRiZjFkMGU2ZjFmMjgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApAQCAtNDIsNjAgKzQyLDYx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBnbG9iYWxEYXRhLT5wYXJzZXJBcmVuYS0+ZGVy
ZWZXaXRoQXJlbmEoYWRvcHRSZWYodGhpcykpOwogICAgIH0KIAotICAgIGlubGluZSBOb2RlOjpO
b2RlKGludCBsaW5lTnVtYmVyKQotICAgICAgICA6IG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBOb2RlOjpOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCisg
ICAgICAgIDogbV9saW5lTnVtYmVyKGxvY2F0aW9uLmxpbmUpCisgICAgICAgICwgbV9jb2x1bW5O
dW1iZXIobG9jYXRpb24uY29sdW1uKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRXhwcmVz
c2lvbk5vZGU6OkV4cHJlc3Npb25Ob2RlKGludCBsaW5lTnVtYmVyLCBSZXN1bHRUeXBlIHJlc3Vs
dFR5cGUpCi0gICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBFeHByZXNzaW9u
Tm9kZTo6RXhwcmVzc2lvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUmVz
dWx0VHlwZSByZXN1bHRUeXBlKQorICAgICAgICA6IE5vZGUobG9jYXRpb24pCiAgICAgICAgICwg
bV9yZXN1bHRUeXBlKHJlc3VsdFR5cGUpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBTdGF0
ZW1lbnROb2RlOjpTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyKQotICAgICAgICA6IE5vZGUo
bGluZU51bWJlcikKKyAgICBpbmxpbmUgU3RhdGVtZW50Tm9kZTo6U3RhdGVtZW50Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQorICAgICAgICA6IE5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgbV9sYXN0TGluZSgtMSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE51bGxO
b2RlOjpOdWxsTm9kZShpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudWxsVHlwZSgpKQorICAgIGlubGluZSBOdWxsTm9kZTo6
TnVsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKKyAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6bnVsbFR5cGUoKSkKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIEJvb2xlYW5Ob2RlOjpCb29sZWFuTm9kZShpbnQgbGluZU51bWJlciwg
Ym9vbCB2YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRU
eXBlOjpib29sZWFuVHlwZSgpKQorICAgIGlubGluZSBCb29sZWFuTm9kZTo6Qm9vbGVhbk5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgYm9vbCB2YWx1ZSkKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSkKICAgICAg
ICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTnVtYmVyTm9k
ZTo6TnVtYmVyTm9kZShpbnQgbGluZU51bWJlciwgZG91YmxlIHZhbHVlKQotICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSkKKyAgICBp
bmxpbmUgTnVtYmVyTm9kZTo6TnVtYmVyTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBkb3VibGUgdmFsdWUpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24sIFJl
c3VsdFR5cGU6Om51bWJlclR5cGUoKSkKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgU3RyaW5nTm9kZTo6U3RyaW5nTm9kZShpbnQgbGluZU51bWJl
ciwgY29uc3QgSWRlbnRpZmllciYgdmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGlu
ZU51bWJlciwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQorICAgIGlubGluZSBTdHJpbmdOb2Rl
OjpTdHJpbmdOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50
aWZpZXImIHZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uLCBSZXN1bHRU
eXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIFJlZ0V4cE5vZGU6OlJlZ0V4cE5vZGUoaW50IGxpbmVOdW1iZXIsIGNv
bnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzKQotICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFJlZ0V4cE5vZGU6OlJl
Z0V4cE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmll
ciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9wYXR0ZXJuKHBhdHRlcm4pCiAgICAgICAgICwg
bV9mbGFncyhmbGFncykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFRoaXNOb2RlOjpUaGlz
Tm9kZShpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBUaGlzTm9kZTo6VGhpc05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIFJlc29sdmVOb2RlOjpSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwg
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQsIGludCBzdGFydE9mZnNldCkKLSAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBSZXNvbHZlTm9kZTo6UmVzb2x2ZU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIGludCBzdGFydE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikK
ICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fc3RhcnRPZmZzZXQoc3RhcnRP
ZmZzZXQpCiAgICAgewpAQCAtMTE2LDI0ICsxMTcsMjQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGwtPm1fbmV4dCA9IHRoaXM7CiAgICAgfQogCi0gICAgaW5saW5lIEFycmF5Tm9kZTo6QXJy
YXlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgZWxpc2lvbikKLSAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBBcnJheU5vZGU6OkFycmF5Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBpbnQgZWxpc2lvbikKKyAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2VsZW1lbnQoMCkKICAgICAgICAgLCBtX2Vs
aXNpb24oZWxpc2lvbikKICAgICAgICAgLCBtX29wdGlvbmFsKHRydWUpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBBcnJheU5vZGU6OkFycmF5Tm9kZShpbnQgbGluZU51bWJlciwgRWxlbWVu
dE5vZGUqIGVsZW1lbnQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRWxlbWVudE5vZGUqIGVsZW1lbnQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9j
YXRpb24pCiAgICAgICAgICwgbV9lbGVtZW50KGVsZW1lbnQpCiAgICAgICAgICwgbV9lbGlzaW9u
KDApCiAgICAgICAgICwgbV9vcHRpb25hbChmYWxzZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgZWxpc2lvbiwgRWxl
bWVudE5vZGUqIGVsZW1lbnQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgaW50IGVsaXNpb24sIEVsZW1lbnROb2RlKiBlbGVtZW50KQorICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogICAg
ICAgICAsIG1fZWxpc2lvbihlbGlzaW9uKQogICAgICAgICAsIG1fb3B0aW9uYWwodHJ1ZSkKQEAg
LTE1NCw1NyArMTU1LDU3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBp
bmxpbmUgUHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZShpbnQgbGluZU51bWJlciwg
UHJvcGVydHlOb2RlKiBub2RlKQotICAgICAgICA6IE5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgUHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIG5vZGUpCisgICAgICAgIDogTm9kZShsb2NhdGlv
bikKICAgICAgICAgLCBtX25vZGUobm9kZSkKICAgICAgICAgLCBtX25leHQoMCkKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIFByb3BlcnR5TGlzdE5vZGU6OlByb3BlcnR5TGlzdE5vZGUoaW50
IGxpbmVOdW1iZXIsIFByb3BlcnR5Tm9kZSogbm9kZSwgUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkK
LSAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFByb3BlcnR5TGlzdE5vZGU6
OlByb3BlcnR5TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVy
dHlOb2RlKiBub2RlLCBQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0KQorICAgICAgICA6IE5vZGUobG9j
YXRpb24pCiAgICAgICAgICwgbV9ub2RlKG5vZGUpCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAg
ewogICAgICAgICBsaXN0LT5tX25leHQgPSB0aGlzOwogICAgIH0KIAotICAgIGlubGluZSBPYmpl
Y3RMaXRlcmFsTm9kZTo6T2JqZWN0TGl0ZXJhbE5vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgT2JqZWN0TGl0ZXJhbE5v
ZGU6Ok9iamVjdExpdGVyYWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCisg
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9saXN0KDApCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBPYmplY3RMaXRlcmFsTm9kZTo6T2JqZWN0TGl0ZXJh
bE5vZGUoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpCi0gICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgT2JqZWN0TGl0ZXJhbE5vZGU6
Ok9iamVjdExpdGVyYWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3Bl
cnR5TGlzdE5vZGUqIGxpc3QpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgbV9saXN0KGxpc3QpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCcmFja2V0
QWNjZXNzb3JOb2RlOjpCcmFja2V0QWNjZXNzb3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgYm9vbCBzdWJzY3JpcHRI
YXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAg
IGlubGluZSBCcmFja2V0QWNjZXNzb3JOb2RlOjpCcmFja2V0QWNjZXNzb3JOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9u
Tm9kZSogc3Vic2NyaXB0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAg
ICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKICAgICAgICAgLCBtX3N1YnNjcmlwdEhhc0Fzc2ln
bm1lbnRzKHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgRG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLSAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBEb3RBY2Nlc3Nvck5vZGU6OkRvdEFj
Y2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChp
ZGVudCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFyZ3VtZW50TGlzdE5vZGU6OkFyZ3Vt
ZW50TGlzdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAg
ICA6IE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXJndW1lbnRMaXN0Tm9kZTo6QXJndW1l
bnRMaXN0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogZXhwcikKKyAgICAgICAgOiBOb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbmV4dCgwKQog
ICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXJndW1l
bnRMaXN0Tm9kZTo6QXJndW1lbnRMaXN0Tm9kZShpbnQgbGluZU51bWJlciwgQXJndW1lbnRMaXN0
Tm9kZSogbGlzdE5vZGUsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IE5vZGUobGlu
ZU51bWJlcikKKyAgICBpbmxpbmUgQXJndW1lbnRMaXN0Tm9kZTo6QXJndW1lbnRMaXN0Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBBcmd1bWVudExpc3ROb2RlKiBsaXN0Tm9k
ZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogTm9kZShsb2NhdGlvbikKICAgICAg
ICAgLCBtX25leHQoMCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CkBAIC0yMjEsNDUg
KzIyMiw0NSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE5l
d0V4cHJOb2RlOjpOZXdFeHByTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgTmV3
RXhwck5vZGU6Ok5ld0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQog
ICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fYXJncygwKQogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgTmV3RXhwck5vZGU6Ok5ld0V4cHJOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwciwgQXJndW1lbnRzTm9kZSogYXJncykKLSAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBOZXdFeHByTm9kZTo6TmV3RXhwck5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIs
IEFyZ3VtZW50c05vZGUqIGFyZ3MpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
CiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0aW9uQ2Fs
bE5vZGUoaW50IGxpbmVOdW1iZXIsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEV2YWxGdW5jdGlvbkNhbGxOb2Rl
OjpFdmFsRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBB
cmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikK
ICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRnVuY3Rpb25DYWxs
VmFsdWVOb2RlOjpGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fZXhw
cihleHByKQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGludCBs
aW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
Ci0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRnVuY3Rp
b25DYWxsUmVzb2x2ZU5vZGU6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2Rl
KiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAg
ICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OkZ1bmN0aW9uQ2FsbEJy
YWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YnNjcmlwdCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6
OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVu
dHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAg
ICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJz
Y3JpcHQpCkBAIC0yNjcsOCArMjY4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2Uo
YmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQpAQCAtMjc2LDMxICsyNzcsMzEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxs
RG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJn
cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCi0gICAgICAgIDogRnVuY3Rpb25DYWxsRG90Tm9kZShsaW5lTnVtYmVyLCBiYXNlLCBpZGVu
dCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCisgICAgaW5saW5lIENhbGxG
dW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERv
dE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFwcGx5RnVuY3Rpb25DYWxsRG90
Tm9kZTo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3Ms
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KQotICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51bWJlciwgYmFzZSwgaWRlbnQs
IGFyZ3MsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgIGlubGluZSBBcHBseUZ1
bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEZ1bmN0aW9uQ2FsbERv
dE5vZGUobG9jYXRpb24sIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFByZVBvc3RSZXNvbHZlTm9kZTo6
UHJlUG9zdFJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVt
YmVyVHlwZSgpKSAvLyBjb3VsZCBiZSByZXVzYWJsZSBmb3IgcHJlPworICAgIGlubGluZSBQcmVQ
b3N0UmVzb2x2ZU5vZGU6OlByZVBvc3RSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSkgLy8gY291bGQgYmUgcmV1
c2FibGUgZm9yIHByZT8KICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwg
c3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgUG9zdGZpeFJlc29sdmVOb2RlOjpQb3N0Zml4UmVzb2x2ZU5v
ZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVy
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKLSAgICAgICAgOiBQcmVQb3N0UmVzb2x2ZU5vZGUobGluZU51bWJlciwgaWRlbnQsIGRpdm90
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgIGlubGluZSBQb3N0Zml4UmVzb2x2ZU5vZGU6
OlBvc3RmaXhSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogUHJlUG9zdFJl
c29sdmVOb2RlKGxvY2F0aW9uLCBpZGVudCwgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQp
CiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
UG9zdGZpeEJyYWNrZXROb2RlOjpQb3N0Zml4QnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBv
cGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQ
b3N0Zml4QnJhY2tldE5vZGU6OlBvc3RmaXhCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNj
cmlwdCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
CiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3Jp
cHQoc3Vic2NyaXB0KQpAQCAtMzA4LDggKzMwOSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgUG9zdGZpeERvdE5vZGU6OlBvc3RmaXhEb3ROb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisg
ICAgaW5saW5lIFBvc3RmaXhEb3ROb2RlOjpQb3N0Zml4RG90Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9u
KQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRlbnQo
aWRlbnQpCkBAIC0zMTcsNjggKzMxOCw2OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIFBvc3RmaXhFcnJvck5vZGU6OlBvc3RmaXhFcnJvck5vZGUoaW50IGxp
bmVOdW1iZXIsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIpCisgICAgaW5saW5lIFBvc3RmaXhFcnJvck5vZGU6OlBvc3RmaXhFcnJvck5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lv
bkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9vcGVyYXRv
cihvcGVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVsZXRlUmVzb2x2ZU5vZGU6OkRl
bGV0ZVJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
Ci0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRGVsZXRl
UmVzb2x2ZU5vZGU6OkRlbGV0ZVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3Rh
cnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgRGVsZXRlQnJhY2tldE5vZGU6OkRlbGV0ZUJyYWNrZXROb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNj
cmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
RGVsZXRlQnJhY2tldE5vZGU6OkRlbGV0ZUJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2Ny
aXB0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAg
ICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBEZWxldGVEb3ROb2RlOjpEZWxldGVEb3ROb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIERlbGV0
ZURvdE5vZGU6OkRlbGV0ZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFz
ZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
RGVsZXRlVmFsdWVOb2RlOjpEZWxldGVWYWx1ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAg
aW5saW5lIERlbGV0ZVZhbHVlTm9kZTo6RGVsZXRlVmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgVm9pZE5vZGU6OlZvaWROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlu
bGluZSBWb2lkTm9kZTo6Vm9pZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
CiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBUeXBl
T2ZSZXNvbHZlTm9kZTo6VHlwZU9mUmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJl
c3VsdFR5cGU6OnN0cmluZ1R5cGUoKSkKKyAgICBpbmxpbmUgVHlwZU9mUmVzb2x2ZU5vZGU6OlR5
cGVPZlJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uLCBSZXN1
bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIFR5cGVPZlZhbHVlTm9kZTo6VHlwZU9mVmFsdWVOb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCisgICAgaW5saW5lIFR5cGVP
ZlZhbHVlTm9kZTo6VHlwZU9mVmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0
aW9uLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVmaXhSZXNvbHZlTm9kZTo6UHJlZml4UmVzb2x2
ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBv
cGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCkKLSAgICAgICAgOiBQcmVQb3N0UmVzb2x2ZU5vZGUobGluZU51bWJlciwgaWRlbnQsIGRp
dm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgIGlubGluZSBQcmVmaXhSZXNvbHZlTm9k
ZTo6UHJlZml4UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IFByZVBvc3RS
ZXNvbHZlTm9kZShsb2NhdGlvbiwgaWRlbnQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0
KQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IFByZWZpeEJyYWNrZXROb2RlOjpQcmVmaXhCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9w
ZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFBy
ZWZpeEJyYWNrZXROb2RlOjpQcmVmaXhCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlw
dCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRP
ZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1
YnNjcmlwdChzdWJzY3JpcHQpCkBAIC0zODYsOCArMzg3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVmaXhEb3ROb2RlOjpQcmVmaXhEb3ROb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIp
CisgICAgaW5saW5lIFByZWZpeERvdE5vZGU6OlByZWZpeERvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlv
bikKICAgICAgICAgLCBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBz
dGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAs
IG1faWRlbnQoaWRlbnQpCkBAIC0zOTUsNDMgKzM5Niw0MyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIFByZWZpeEVycm9yTm9kZTo6UHJlZml4RXJyb3JOb2Rl
KGludCBsaW5lTnVtYmVyLCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcmVmaXhFcnJvck5vZGU6OlByZWZpeEVycm9yTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBPcGVyYXRvciBvcGVyLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX29wZXJh
dG9yKG9wZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBVbmFyeU9wTm9kZTo6VW5hcnlP
cE5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIsIE9wY29kZUlEIG9wY29kZUlEKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIsIHR5cGUpCisgICAgaW5saW5lIFVuYXJ5T3BOb2RlOjpVbmFyeU9wTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBSZXN1bHRUeXBlIHR5cGUsIEV4cHJlc3Npb25Ob2RlKiBl
eHByLCBPcGNvZGVJRCBvcGNvZGVJRCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlv
biwgdHlwZSkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX29wY29kZUlEKG9w
Y29kZUlEKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVW5hcnlQbHVzTm9kZTo6VW5hcnlQ
bHVzTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDog
VW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByLCBv
cF90b19qc251bWJlcikKKyAgICBpbmxpbmUgVW5hcnlQbHVzTm9kZTo6VW5hcnlQbHVzTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAg
ICAgICAgOiBVbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBl
eHByLCBvcF90b19qc251bWJlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE5lZ2F0ZU5v
ZGU6Ok5lZ2F0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAg
ICAgICA6IFVuYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwg
ZXhwciwgb3BfbmVnYXRlKQorICAgIGlubGluZSBOZWdhdGVOb2RlOjpOZWdhdGVOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAg
ICA6IFVuYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIs
IG9wX25lZ2F0ZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJpdHdpc2VOb3ROb2RlOjpC
aXR3aXNlTm90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSkK
KyAgICBpbmxpbmUgQml0d2lzZU5vdE5vZGU6OkJpdHdpc2VOb3ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpKQogICAgICAgICAsIG1f
ZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTG9naWNhbE5vdE5vZGU6Okxv
Z2ljYWxOb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAg
ICAgOiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBl
eHByLCBvcF9ub3QpCisgICAgaW5saW5lIExvZ2ljYWxOb3ROb2RlOjpMb2dpY2FsTm90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAg
ICAgICAgOiBVbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwg
ZXhwciwgb3Bfbm90KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQmluYXJ5T3BOb2RlOjpC
aW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEJp
bmFyeU9wTm9kZTo6QmluYXJ5T3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBv
cGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhwcjEoZXhwcjEpCiAgICAgICAgICwgbV9leHBy
MihleHByMikKICAgICAgICAgLCBtX29wY29kZUlEKG9wY29kZUlEKQpAQCAtNDM5LDggKzQ0MCw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQmluYXJ5T3BO
b2RlOjpCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3VsdFR5cGUgdHlwZSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlE
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGlu
ZU51bWJlciwgdHlwZSkKKyAgICBpbmxpbmUgQmluYXJ5T3BOb2RlOjpCaW5hcnlPcE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUmVzdWx0VHlwZSB0eXBlLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlv
biwgdHlwZSkKICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1fZXhwcjIoZXhw
cjIpCiAgICAgICAgICwgbV9vcGNvZGVJRChvcGNvZGVJRCkKQEAgLTQ0OCwxNDAgKzQ0OSwxNDAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBNdWx0Tm9kZTo6
TXVsdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5
T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIy
LCBvcF9tdWwsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIE11bHROb2RlOjpNdWx0
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAg
ICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBl
eHByMSwgZXhwcjIsIG9wX211bCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIERpdk5vZGU6OkRpdk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJl
clR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9kaXYsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAg
aW5saW5lIERpdk5vZGU6OkRpdk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5
cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9kaXYsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCiAgICAgewogICAgIH0KIAogCi0gICAgaW5saW5lIE1vZE5vZGU6Ok1vZE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1i
ZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9tb2QsIHJpZ2h0
SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIE1vZE5vZGU6Ok1vZE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5v
ZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9t
b2QsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBZGRO
b2RlOjpBZGROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJp
bmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JBZGQoZXhwcjEtPnJlc3VsdERl
c2NyaXB0b3IoKSwgZXhwcjItPnJlc3VsdERlc2NyaXB0b3IoKSksIGV4cHIxLCBleHByMiwgb3Bf
YWRkLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBBZGROb2RlOjpBZGROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDog
QmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpmb3JBZGQoZXhwcjEtPnJlc3VsdERl
c2NyaXB0b3IoKSwgZXhwcjItPnJlc3VsdERlc2NyaXB0b3IoKSksIGV4cHIxLCBleHByMiwgb3Bf
YWRkLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3Vi
Tm9kZTo6U3ViTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBC
aW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwg
ZXhwcjIsIG9wX3N1YiwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgU3ViTm9kZTo6
U3ViTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQor
ICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgp
LCBleHByMSwgZXhwcjIsIG9wX3N1YiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIExlZnRTaGlmdE5vZGU6OkxlZnRTaGlmdE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJl
c3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfbHNoaWZ0LCByaWdodEhhc0Fz
c2lnbm1lbnRzKQorICAgIGlubGluZSBMZWZ0U2hpZnROb2RlOjpMZWZ0U2hpZnROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmlu
YXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIs
IG9wX2xzaGlmdCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIFJpZ2h0U2hpZnROb2RlOjpSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6
Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9yc2hpZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMp
CisgICAgaW5saW5lIFJpZ2h0U2hpZnROb2RlOjpSaWdodFNoaWZ0Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9k
ZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9yc2hp
ZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBVbnNp
Z25lZFJpZ2h0U2hpZnROb2RlOjpVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1
bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfdXJzaGlmdCwgcmlnaHRIYXNB
c3NpZ25tZW50cykKKyAgICBpbmxpbmUgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZTo6VW5zaWduZWRS
aWdodFNoaWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6bnVtYmVy
VHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3Vyc2hpZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBMZXNzTm9kZTo6TGVzc05vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJl
c3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbGVzcywgcmlnaHRIYXNB
c3NpZ25tZW50cykKKyAgICBpbmxpbmUgTGVzc05vZGU6Okxlc3NOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2Rl
KGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2xl
c3MsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBHcmVh
dGVyTm9kZTo6R3JlYXRlck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAg
ICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCks
IGV4cHIxLCBleHByMiwgb3BfZ3JlYXRlciwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxp
bmUgR3JlYXRlck5vZGU6OkdyZWF0ZXJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1
bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2dyZWF0ZXIsIHJpZ2h0SGFz
QXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBMZXNzRXFOb2RlOjpMZXNz
RXFOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9w
Tm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIs
IG9wX2xlc3NlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTGVzc0VxTm9kZTo6
TGVzc0VxTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5
cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9sZXNzZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBHcmVhdGVyRXFOb2RlOjpHcmVhdGVyRXFOb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVt
YmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2dyZWF0ZXJl
cSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgR3JlYXRlckVxTm9kZTo6R3JlYXRl
ckVxTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQor
ICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUo
KSwgZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVyZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OlRocm93YWJsZUJp
bmFyeU9wTm9kZShpbnQgbGluZU51bWJlciwgUmVzdWx0VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwg
dHlwZSwgZXhwcjEsIGV4cHIyLCBvcGNvZGVJRCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBp
bmxpbmUgVGhyb3dhYmxlQmluYXJ5T3BOb2RlOjpUaHJvd2FibGVCaW5hcnlPcE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUmVzdWx0VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIHR5
cGUsIGV4cHIxLCBleHByMiwgb3Bjb2RlSUQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OlRocm93YWJsZUJpbmFy
eU9wTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
Ci0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgb3Bjb2Rl
SUQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIFRocm93YWJsZUJpbmFyeU9wTm9k
ZTo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBv
cGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9k
ZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCBvcGNvZGVJRCwgcmlnaHRIYXNBc3NpZ25tZW50cykK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEluc3RhbmNlT2ZOb2RlOjpJbnN0YW5jZU9mTm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBUaHJvd2FibGVCaW5h
cnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4
cHIyLCBvcF9pbnN0YW5jZW9mLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBJbnN0
YW5jZU9mTm9kZTo6SW5zdGFuY2VPZk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBUaHJvd2FibGVCaW5hcnlPcE5vZGUobG9jYXRp
b24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfaW5zdGFuY2Vv
ZiwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEluTm9k
ZTo6SW5Ob2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IFRocm93
YWJsZUJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIG9wX2luLCByaWdodEhh
c0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBJbk5vZGU6OkluTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IFRocm93YWJsZUJpbmFy
eU9wTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCBvcF9pbiwgcmlnaHRIYXNBc3NpZ25tZW50
cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEVxdWFsTm9kZTo6RXF1YWxOb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVt
YmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2VxLCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBFcXVhbE5vZGU6OkVxdWFsTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFy
eU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIy
LCBvcF9lcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IE5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFu
VHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX25lcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBp
bmxpbmUgTm90RXF1YWxOb2RlOjpOb3RFcXVhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24s
IFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbmVxLCByaWdodEhh
c0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3RyaWN0RXF1YWxOb2Rl
OjpTdHJpY3RFcXVhbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAg
IDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4
cHIxLCBleHByMiwgb3Bfc3RyaWN0ZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5l
IFN0cmljdEVxdWFsTm9kZTo6U3RyaWN0RXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9u
LCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3N0cmljdGVxLCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTm90U3RyaWN0
RXF1YWxOb2RlOjpOb3RTdHJpY3RFcXVhbE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xl
YW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbnN0cmljdGVxLCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorICAgIGlubGluZSBOb3RTdHJpY3RFcXVhbE5vZGU6Ok5vdFN0cmljdEVxdWFsTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJp
bmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4
cHIyLCBvcF9uc3RyaWN0ZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBCaXRBbmROb2RlOjpCaXRBbmROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpm
b3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdGFuZCwgcmlnaHRIYXNBc3NpZ25tZW50cykK
KyAgICBpbmxpbmUgQml0QW5kTm9kZTo6Qml0QW5kTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlv
biwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXRhbmQsIHJpZ2h0
SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCaXRPck5vZGU6OkJp
dE9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlP
cE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBv
cF9iaXRvciwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgQml0T3JOb2RlOjpCaXRP
ck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAg
ICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4
cHIxLCBleHByMiwgb3BfYml0b3IsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBCaXRYT3JOb2RlOjpCaXRYT3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBl
Ojpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdHhvciwgcmlnaHRIYXNBc3NpZ25tZW50
cykKKyAgICBpbmxpbmUgQml0WE9yTm9kZTo6Qml0WE9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2Nh
dGlvbiwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXR4b3IsIHJp
Z2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBMb2dpY2FsT3BO
b2RlOjpMb2dpY2FsT3BOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgTG9naWNhbE9wZXJhdG9yIG9wZXIpCi0gICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSkKKyAg
ICBpbmxpbmUgTG9naWNhbE9wTm9kZTo6TG9naWNhbE9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgTG9naWNhbE9wZXJhdG9yIG9wZXIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRp
b24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCkpCiAgICAgICAgICwgbV9leHByMShleHByMSkK
ICAgICAgICAgLCBtX2V4cHIyKGV4cHIyKQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIENvbmRpdGlvbmFsTm9kZTo6Q29uZGl0aW9uYWxOb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbG9naWNhbCwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bGluZU51bWJlcikKKyAgICBpbmxpbmUgQ29uZGl0aW9uYWxOb2RlOjpDb25kaXRpb25hbE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxvZ2ljYWws
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKQorICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbG9naWNhbChsb2dpY2FsKQog
ICAgICAgICAsIG1fZXhwcjEoZXhwcjEpCiAgICAgICAgICwgbV9leHByMihleHByMikKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIFJlYWRNb2RpZnlSZXNvbHZlTm9kZTo6UmVhZE1vZGlmeVJl
c29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0
b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBSZWFk
TW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3Blciwg
RXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2lkZW50
KGlkZW50KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQpCkBAIC01OTAsMTUgKzU5MSwxNSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnblJlc29sdmVO
b2RlOjpBc3NpZ25SZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyKQorICAgIGlubGluZSBBc3NpZ25SZXNvbHZlTm9kZTo6QXNzaWduUmVzb2x2ZU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2Nh
dGlvbikKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQogICAgICAgICAsIG1fcmlnaHQocmlnaHQp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZWFkTW9kaWZ5QnJhY2tldE5vZGU6OlJlYWRN
b2RpZnlCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4
cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBS
ZWFkTW9kaWZ5QnJhY2tldE5vZGU6OlJlYWRNb2RpZnlCcmFja2V0Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUq
IHN1YnNjcmlwdCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1
YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFz
ZShiYXNlKQogICAgICAgICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKQEAgLTYwOSw4ICs2MTAs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFzc2lnbkJy
YWNrZXROb2RlOjpBc3NpZ25CcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdo
dCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBBc3Np
Z25CcmFja2V0Tm9kZTo6QXNzaWduQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlv
bikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlw
dChzdWJzY3JpcHQpCkBAIC02MjAsOCArNjIxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBBc3NpZ25Eb3ROb2RlOjpB
c3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxv
Y2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9m
ZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRl
bnQoaWRlbnQpCkBAIC02MzAsOCArNjMxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgT3BlcmF0b3Igb3BlciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5s
aW5lIFJlYWRNb2RpZnlEb3ROb2RlOjpSZWFkTW9kaWZ5RG90Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAg
ICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9m
ZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQpA
QCAtNjQxLDIxICs2NDIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBBc3NpZ25FcnJvck5vZGU6OkFzc2lnbkVycm9yTm9kZShpbnQgbGluZU51bWJlciwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
Ci0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXNzaWdu
RXJyb3JOb2RlOjpBc3NpZ25FcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBDb21tYU5vZGU6OkNvbW1hTm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpCi0gICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQ29tbWFOb2RlOjpDb21tYU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRp
b24pCiAgICAgewogICAgICAgICBtX2V4cHJlc3Npb25zLmFwcGVuZChleHByMSk7CiAgICAgICAg
IG1fZXhwcmVzc2lvbnMuYXBwZW5kKGV4cHIyKTsKICAgICB9CiAKLSAgICBpbmxpbmUgQ29uc3RT
dGF0ZW1lbnROb2RlOjpDb25zdFN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIENvbnN0RGVj
bE5vZGUqIG5leHQpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlu
bGluZSBDb25zdFN0YXRlbWVudE5vZGU6OkNvbnN0U3RhdGVtZW50Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBDb25zdERlY2xOb2RlKiBuZXh0KQorICAgICAgICA6IFN0YXRl
bWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9uZXh0KG5leHQpCiAgICAgewogICAgIH0K
QEAgLTY2NCw1NyArNjY1LDU3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgRW1wdHlTdGF0ZW1lbnROb2RlOjpFbXB0eVN0YXRlbWVudE5vZGUoaW50IGxpbmVO
dW1iZXIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBF
bXB0eVN0YXRlbWVudE5vZGU6OkVtcHR5U3RhdGVtZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBEZWJ1Z2dlclN0YXRlbWVudE5vZGU6OkRlYnVnZ2VyU3RhdGVt
ZW50Tm9kZShpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6RGVidWdnZXJTdGF0ZW1lbnRO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50
Tm9kZShsb2NhdGlvbikKICAgICB7CiAgICAgfQogICAgIAotICAgIGlubGluZSBFeHByU3RhdGVt
ZW50Tm9kZTo6RXhwclN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
RXhwclN0YXRlbWVudE5vZGU6OkV4cHJTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBWYXJTdGF0ZW1lbnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIFZhclN0YXRlbWVudE5vZGU6OlZhclN0YXRlbWVudE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAg
IDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7
CiAgICAgfQogICAgIAotICAgIGlubGluZSBJZk5vZGU6OklmTm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaykKLSAgICAg
ICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIElmTm9kZTo6SWZOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRp
b24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2spCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2Nh
dGlvbikKICAgICAgICAgLCBtX2NvbmRpdGlvbihjb25kaXRpb24pCiAgICAgICAgICwgbV9pZkJs
b2NrKGlmQmxvY2spCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBJZkVsc2VOb2RlOjpJZkVs
c2VOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1l
bnROb2RlKiBpZkJsb2NrLCBTdGF0ZW1lbnROb2RlKiBlbHNlQmxvY2spCi0gICAgICAgIDogSWZO
b2RlKGxpbmVOdW1iZXIsIGNvbmRpdGlvbiwgaWZCbG9jaykKKyAgICBpbmxpbmUgSWZFbHNlTm9k
ZTo6SWZFbHNlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrLCBTdGF0ZW1lbnROb2RlKiBl
bHNlQmxvY2spCisgICAgICAgIDogSWZOb2RlKGxvY2F0aW9uLCBjb25kaXRpb24sIGlmQmxvY2sp
CiAgICAgICAgICwgbV9lbHNlQmxvY2soZWxzZUJsb2NrKQogICAgIHsKICAgICB9CiAKLSAgICBp
bmxpbmUgRG9XaGlsZU5vZGU6OkRvV2hpbGVOb2RlKGludCBsaW5lTnVtYmVyLCBTdGF0ZW1lbnRO
b2RlKiBzdGF0ZW1lbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFN0YXRlbWVu
dE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRG9XaGlsZU5vZGU6OkRvV2hpbGVOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikK
ICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCiAgICAgICAgICwgbV9leHByKGV4cHIp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBXaGlsZU5vZGU6OldoaWxlTm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkK
LSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFdoaWxlTm9k
ZTo6V2hpbGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCisgICAgICAgIDogU3RhdGVtZW50
Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX3N0YXRl
bWVudChzdGF0ZW1lbnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGb3JOb2RlOjpGb3JO
b2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIzLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQp
Ci0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGb3JOb2Rl
OjpGb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0
YXRlbWVudE5vZGUqIHN0YXRlbWVudCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9u
KQogICAgICAgICAsIG1fZXhwcjEoZXhwcjEpCiAgICAgICAgICwgbV9leHByMihleHByMikKICAg
ICAgICAgLCBtX2V4cHIzKGV4cHIzKQpAQCAtNzIzLDM4ICs3MjQsMzggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEFTU0VSVChzdGF0ZW1lbnQpOwogICAgIH0KIAotICAgIGlubGluZSBDb250
aW51ZU5vZGU6OkNvbnRpbnVlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5l
TnVtYmVyKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
Q29udGludWVOb2RlOjpDb250aW51ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9j
YXRpb24pCiAgICAgICAgICwgbV9pZGVudChnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxs
SWRlbnRpZmllcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIENvbnRpbnVlTm9kZTo6Q29u
dGludWVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLSAgICAg
ICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIENvbnRpbnVlTm9kZTo6
Q29udGludWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50
aWZpZXImIGlkZW50KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAg
ICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAgfQogICAgIAotICAgIGlubGluZSBCcmVha05v
ZGU6OkJyZWFrTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyKQot
ICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQnJlYWtOb2Rl
OjpCcmVha05vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAg
ICwgbV9pZGVudChnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllcikKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJyZWFrTm9kZTo6QnJlYWtOb2RlKGludCBsaW5lTnVt
YmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIEJyZWFrTm9kZTo6QnJlYWtOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgICAgICA6IFN0
YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAg
ICAgfQogICAgIAotICAgIGlubGluZSBSZXR1cm5Ob2RlOjpSZXR1cm5Ob2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogdmFsdWUpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBSZXR1cm5Ob2RlOjpSZXR1cm5Ob2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSkKKyAgICAgICAgOiBTdGF0
ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBXaXRoTm9kZTo6V2l0aE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIHVpbnQzMl90IGRpdm90
LCB1aW50MzJfdCBleHByZXNzaW9uTGVuZ3RoKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGlu
ZU51bWJlcikKKyAgICBpbmxpbmUgV2l0aE5vZGU6OldpdGhOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0
ZW1lbnQsIHVpbnQzMl90IGRpdm90LCB1aW50MzJfdCBleHByZXNzaW9uTGVuZ3RoKQorICAgICAg
ICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAg
ICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAgICAgICAsIG1fZGl2b3QoZGl2b3QpCkBA
IC03NjIsMjEgKzc2MywyMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIExhYmVsTm9kZTo6TGFiZWxOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlm
aWVyJiBuYW1lLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCi0gICAgICAgIDogU3RhdGVtZW50
Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBMYWJlbE5vZGU6OkxhYmVsTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBTdGF0ZW1l
bnROb2RlKiBzdGF0ZW1lbnQpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAg
ICAgICAgLCBtX25hbWUobmFtZSkKICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBUaHJvd05vZGU6OlRocm93Tm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBUaHJvd05vZGU6OlRocm93Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBTdGF0ZW1l
bnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgVHJ5Tm9kZTo6VHJ5Tm9kZShpbnQgbGluZU51bWJlciwgU3RhdGVtZW50Tm9k
ZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2VwdGlvbklkZW50LCBTdGF0ZW1lbnRO
b2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spCi0gICAgICAgIDog
U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBUcnlOb2RlOjpUcnlOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBj
b25zdCBJZGVudGlmaWVyJiBleGNlcHRpb25JZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9j
aywgU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUo
bG9jYXRpb24pCiAgICAgICAgICwgbV90cnlCbG9jayh0cnlCbG9jaykKICAgICAgICAgLCBtX2V4
Y2VwdGlvbklkZW50KGV4Y2VwdGlvbklkZW50KQogICAgICAgICAsIG1fY2F0Y2hCbG9jayhjYXRj
aEJsb2NrKQpAQCAtNzk3LDE1ICs3OTgsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGwt
Pm1fbmV4dCA9IHRoaXM7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4
cHJOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25C
b2R5Tm9kZSogYm9keSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJhbWV0ZXJOb2RlKiBw
YXJhbWV0ZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgRnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQorICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fYm9keShib2R5KQogICAg
IHsKICAgICAgICAgbV9ib2R5LT5maW5pc2hQYXJzaW5nKHNvdXJjZSwgcGFyYW1ldGVyLCBpZGVu
dCk7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmNEZWNsTm9kZTo6RnVuY0RlY2xOb2RlKGludCBs
aW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9k
eSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXIpCi0g
ICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGdW5jRGVjbE5v
ZGU6OkZ1bmNEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXIpCisgICAgICAgIDogU3RhdGVtZW50
Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2JvZHkoYm9keSkKICAgICB7CiAgICAgICAgIG1f
Ym9keS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIHBhcmFtZXRlciwgaWRlbnQpOwpAQCAtODM3LDI5
ICs4MzgsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBT
d2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
ciwgQ2FzZUJsb2NrTm9kZSogYmxvY2spCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBTd2l0Y2hOb2RlOjpTd2l0Y2hOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBDYXNlQmxvY2tOb2RlKiBibG9j
aykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhwcihl
eHByKQogICAgICAgICAsIG1fYmxvY2soYmxvY2spCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBDb25zdERlY2xOb2RlOjpDb25zdERlY2xOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluaXQpCi0gICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQ29uc3REZWNsTm9kZTo6Q29uc3REZWNsTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgRXhwcmVzc2lvbk5vZGUqIGluaXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRp
b24pCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX25leHQoMCkKICAgICAg
ICAgLCBtX2luaXQoaW5pdCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJsb2NrTm9kZTo6
QmxvY2tOb2RlKGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogc3RhdGVtZW50cykKLSAg
ICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEJsb2NrTm9kZTo6
QmxvY2tOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFNvdXJjZUVsZW1lbnRz
KiBzdGF0ZW1lbnRzKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAg
ICwgbV9zdGF0ZW1lbnRzKHN0YXRlbWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBG
b3JJbk5vZGU6OkZvckluTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGwsIEV4
cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCi0gICAgICAgIDog
U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGb3JJbk5vZGU6OkZvckluTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogbCwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkKKyAgICAgICAgOiBT
dGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1faW5pdCgwKQogICAgICAgICAsIG1f
bGV4cHIobCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKQEAgLTg2OCwxNiArODY5LDE2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJ
bk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBpbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIs
IFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZzZXQsIGlu
dCBlbmRPZmZzZXQpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlu
bGluZSBGb3JJbk5vZGU6OkZvckluTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHBy
ZXNzaW9uTm9kZSogaW4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0
ZW1lbnQsIGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQorICAgICAg
ICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9pbml0KDApCi0gICAgICAg
ICwgbV9sZXhwcihuZXcgKGdsb2JhbERhdGEpIFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50
LCBkaXZvdCAtIHN0YXJ0T2Zmc2V0KSkKKyAgICAgICAgLCBtX2xleHByKG5ldyAoZ2xvYmFsRGF0
YSkgUmVzb2x2ZU5vZGUobG9jYXRpb24sIGlkZW50LCBkaXZvdCAtIHN0YXJ0T2Zmc2V0KSkKICAg
ICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX3N0YXRlbWVudChzdGF0ZW1lbnQpCiAg
ICAgICAgICwgbV9pZGVudElzVmFyRGVjbCh0cnVlKQogICAgIHsKICAgICAgICAgaWYgKGluKSB7
Ci0gICAgICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAoZ2xvYmFsRGF0YSkg
QXNzaWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwgaWRlbnQsIGluKTsKKyAgICAgICAgICAgIEFz
c2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChnbG9iYWxEYXRhKSBBc3NpZ25SZXNvbHZlTm9k
ZShsb2NhdGlvbiwgaWRlbnQsIGluKTsKICAgICAgICAgICAgIG5vZGUtPnNldEV4Y2VwdGlvblNv
dXJjZUNvZGUoZGl2b3QsIGRpdm90IC0gc3RhcnRPZmZzZXQsIGVuZE9mZnNldCAtIGRpdm90KTsK
ICAgICAgICAgICAgIG1faW5pdCA9IG5vZGU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5jcHAKaW5kZXggYzMyZTRjNzNhMjRlYmViMjMzY2Q1ZTAxZmZmZDYzYTQ4
Njg1Yzg4Ni4uMDE3MjM1OWM3MDNmMmI5ZmUxMmJhNWIwOGYyNWRmYTQzYjQ5NjdiNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAKQEAgLTUyLDEwICs1MiwxOCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN0YXRlbWVu
dE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAordm9pZCBTdGF0ZW1lbnRO
b2RlOjpzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKQorewor
ICAgIG1fbGluZU51bWJlciA9IGZpcnN0TGluZTsKKyAgICBtX2xhc3RMaW5lID0gbGFzdExpbmU7
CisgICAgbV9jb2x1bW5OdW1iZXIgPSBjb2x1bW47Cit9CisKIHZvaWQgU3RhdGVtZW50Tm9kZTo6
c2V0TG9jKGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSkKIHsKICAgICBtX2xpbmVOdW1iZXIg
PSBmaXJzdExpbmU7CiAgICAgbV9sYXN0TGluZSA9IGxhc3RMaW5lOworICAgIG1fY29sdW1uTnVt
YmVyID0gMDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNvdXJjZUVs
ZW1lbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03NSw4ICs4Myw4IEBA
IFN0YXRlbWVudE5vZGUqIFNvdXJjZUVsZW1lbnRzOjpzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdAog
CiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU2NvcGVOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKLVNjb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQotICAgIDog
U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBib29sIGlu
U3RyaWN0Q29udGV4dCkKKyAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgLCBQYXJz
ZXJBcmVuYVJlZkNvdW50ZWQoZ2xvYmFsRGF0YSkKICAgICAsIG1fZmVhdHVyZXMoaW5TdHJpY3RD
b250ZXh0ID8gU3RyaWN0TW9kZUZlYXR1cmUgOiBOb0ZlYXR1cmVzKQogICAgICwgbV9udW1Db25z
dGFudHMoMCkKQEAgLTg0LDggKzkyLDggQEAgU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmljdENvbnQKIHsKIH0K
IAotU2NvcGVOb2RlOjpTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGlu
ZU51bWJlciwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBTb3VyY2VFbGVtZW50cyogY2hpbGRy
ZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlm
aWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKQotICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorU2NvcGVOb2RlOjpT
Y29wZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFNvdXJjZUVsZW1lbnRzKiBjaGls
ZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50
aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBu
dW1Db25zdGFudHMpCisgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICwgUGFyc2Vy
QXJlbmFSZWZDb3VudGVkKGdsb2JhbERhdGEpCiAgICAgLCBtX2ZlYXR1cmVzKGZlYXR1cmVzKQog
ICAgICwgbV9zb3VyY2Uoc291cmNlKQpAQCAtMTA3LDE0ICsxMTUsMTQgQEAgU3RhdGVtZW50Tm9k
ZSogU2NvcGVOb2RlOjpzaW5nbGVTdGF0ZW1lbnQoKSBjb25zdAogCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0gUHJvZ3JhbU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAotaW5saW5lIFByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNr
KiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0
dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVh
dHVyZXMsIGludCBudW1Db25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGlu
ZU51bWJlciwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRW
YXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCitpbmxpbmUgUHJvZ3JhbU5vZGU6OlBy
b2dyYW1Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ss
IEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJs
ZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQg
bnVtQ29uc3RhbnRzKQorICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxvY2F0aW9uLCBzb3Vy
Y2UsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVh
dHVyZXMsIG51bUNvbnN0YW50cykKIHsKIH0KIAotUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJv
Z3JhbU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVy
LCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25T
dGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFu
dHMpCitQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgU291cmNl
RWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1
bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogewot
ICAgIFJlZlB0cjxQcm9ncmFtTm9kZT4gbm9kZSA9IG5ldyBQcm9ncmFtTm9kZShnbG9iYWxEYXRh
LCBsaW5lTnVtYmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgIGNhcHR1cmVkVmFy
aWFibGVzLCBzb3VyY2UsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOworICAgIFJlZlB0cjxQcm9n
cmFtTm9kZT4gbm9kZSA9IG5ldyBQcm9ncmFtTm9kZShnbG9iYWxEYXRhLCBsb2NhdGlvbiwgY2hp
bGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssICBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNlLCBm
ZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIAogICAgIEFTU0VSVChub2RlLT5tX2FyZW5hLmxhc3Qo
KSA9PSBub2RlKTsKICAgICBub2RlLT5tX2FyZW5hLnJlbW92ZUxhc3QoKTsKQEAgLTEyNSwxNCAr
MTMzLDE0IEBAIFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVhdGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1p
bmxpbmUgRXZhbE5vZGU6OkV2YWxOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxp
bmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBG
dW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVz
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cykKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBzb3Vy
Y2UsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVh
dHVyZXMsIG51bUNvbnN0YW50cykKK2lubGluZSBFdmFsTm9kZTo6RXZhbE5vZGUoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTb3VyY2VF
bGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVu
Y1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCisgICAg
OiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbG9jYXRpb24sIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0
YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRz
KQogewogfQogCi1QYXNzUmVmUHRyPEV2YWxOb2RlPiBFdmFsTm9kZTo6Y3JlYXRlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJl
biwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZp
ZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVG
ZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKK1Bhc3NSZWZQdHI8RXZhbE5vZGU+
IEV2YWxOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2
YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJl
ZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVy
ZXMsIGludCBudW1Db25zdGFudHMpCiB7Ci0gICAgUmVmUHRyPEV2YWxOb2RlPiBub2RlID0gbmV3
IEV2YWxOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVu
Y1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRz
KTsKKyAgICBSZWZQdHI8RXZhbE5vZGU+IG5vZGUgPSBuZXcgRXZhbE5vZGUoZ2xvYmFsRGF0YSwg
bG9jYXRpb24sIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxl
cywgc291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKIAogICAgIEFTU0VSVChub2RlLT5t
X2FyZW5hLmxhc3QoKSA9PSBub2RlKTsKICAgICBub2RlLT5tX2FyZW5hLnJlbW92ZUxhc3QoKTsK
QEAgLTE0OSwxMyArMTU3LDEzIEBAIEZ1bmN0aW9uUGFyYW1ldGVyczo6RnVuY3Rpb25QYXJhbWV0
ZXJzKFBhcmFtZXRlck5vZGUqIGZpcnN0UGFyYW1ldGVyKQogICAgICAgICBhcHBlbmQocGFyYW1l
dGVyLT5pZGVudCgpKTsKIH0KIAotaW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9k
eU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0
cmljdENvbnRleHQpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgaW5T
dHJpY3RDb250ZXh0KQoraW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUo
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBib29sIGluU3RyaWN0Q29udGV4dCkKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsb2Nh
dGlvbiwgaW5TdHJpY3RDb250ZXh0KQogewogfQogCi1pbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6
RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVy
LCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25T
dGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3Qg
U291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzKQotICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIHNvdXJjZUNv
ZGUsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVh
dHVyZXMsIG51bUNvbnN0YW50cykKK2lubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJv
ZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1
bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMs
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50
IG51bUNvbnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsb2NhdGlvbiwgc291
cmNlQ29kZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVz
LCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQogewogfQogCkBAIC0xNzIsMTQgKzE4MCwxNCBAQCB2
b2lkIEZ1bmN0aW9uQm9keU5vZGU6OmZpbmlzaFBhcnNpbmcoUGFzc1JlZlB0cjxGdW5jdGlvblBh
cmFtZXRlcnM+IHBhcmFtZXRlcnMsCiAgICAgbV9pZGVudCA9IGlkZW50OwogfQogCi1GdW5jdGlv
bkJvZHlOb2RlKiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmljdENvbnRleHQpCitGdW5jdGlvbkJvZHlO
b2RlKiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBib29sIGluU3RyaWN0Q29udGV4dCkKIHsK
LSAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwg
aW5TdHJpY3RDb250ZXh0KTsKKyAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFs
RGF0YSwgbG9jYXRpb24sIGluU3RyaWN0Q29udGV4dCk7CiB9CiAKLVBhc3NSZWZQdHI8RnVuY3Rp
b25Cb2R5Tm9kZT4gRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgaW50IGxpbmVOdW1iZXIsIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sq
IHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1
cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMg
ZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+
IEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFy
U3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQm
IGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVh
dHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCiB7Ci0gICAgUmVmUHRyPEZ1bmN0aW9u
Qm9keU5vZGU+IG5vZGUgPSBuZXcgRnVuY3Rpb25Cb2R5Tm9kZShnbG9iYWxEYXRhLCBsaW5lTnVt
YmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNv
dXJjZUNvZGUsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOworICAgIFJlZlB0cjxGdW5jdGlvbkJv
ZHlOb2RlPiBub2RlID0gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgbG9jYXRpb24s
IGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNl
Q29kZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAKICAgICBBU1NFUlQobm9kZS0+bV9hcmVu
YS5sYXN0KCkgPT0gbm9kZSk7CiAgICAgbm9kZS0+bV9hcmVuYS5yZW1vdmVMYXN0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggNWIxNWJlNDRjY2VlNjgwMDA2MTIxZDZl
YmRmYjU2ZjBiOWU2ZDRlMC4uZWQxYTg1YWFmYmM4OWNlMThmNDUxMjAwOTg0ZGNiYTEyZWQ3OWFm
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTMwLDcgKzEzMCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTm9kZSA6IHB1YmxpYyBQYXJzZXJBcmVuYUZy
ZWVhYmxlIHsKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIE5vZGUoaW50KTsKKyAgICAgICAgTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVh
bCB+Tm9kZSgpIHsgfQpAQCAtMTM5LDEzICsxMzksMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgaW50IGxpbmVObygpIGNvbnN0IHsgcmV0dXJuIG1fbGluZU51bWJlcjsgfQogCisgICAg
ICAgIGludCBjb2x1bW5ObygpIGNvbnN0IHsgcmV0dXJuIG1fY29sdW1uTnVtYmVyOyB9CisKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIGludCBtX2xpbmVOdW1iZXI7CisgICAgICAgIGludCBtX2Nv
bHVtbk51bWJlcjsKICAgICB9OwogCiAgICAgY2xhc3MgRXhwcmVzc2lvbk5vZGUgOiBwdWJsaWMg
Tm9kZSB7CiAgICAgcHJvdGVjdGVkOgotICAgICAgICBFeHByZXNzaW9uTm9kZShpbnQsIFJlc3Vs
dFR5cGUgPSBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpKTsKKyAgICAgICAgRXhwcmVzc2lvbk5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUmVzdWx0VHlwZSA9IFJlc3VsdFR5cGU6OnVua25v
d25UeXBlKCkpOwogCiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNOdW1iZXIo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMTc1LDEyICsxNzgsMTQgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBTdGF0ZW1lbnROb2RlIDogcHVibGljIE5vZGUgewogICAgIHBy
b3RlY3RlZDoKLSAgICAgICAgU3RhdGVtZW50Tm9kZShpbnQpOworICAgICAgICBTdGF0ZW1lbnRO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAgICAgcHVibGljOgogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHNldExvYyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOwor
ICAgICAgICB2b2lkIHNldExvYyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUsIGludCBjb2x1
bW4pOwogICAgICAgICBpbnQgZmlyc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbGluZU5vKCk7IH0K
ICAgICAgICAgaW50IGxhc3RMaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0TGluZTsgfQorICAg
ICAgICBpbnQgY29sdW1uKCkgY29uc3QgeyByZXR1cm4gY29sdW1uTm8oKTt9CiAKICAgICAgICAg
dmlydHVhbCBib29sIGlzRW1wdHlTdGF0ZW1lbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZXR1cm5Ob2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KQEAgLTE5NCw3ICsxOTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE51bGxO
b2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE51bGxO
b2RlKGludCk7CisgICAgICAgIE51bGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMjA0LDcgKzIwOSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQm9vbGVhbk5vZGUgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQm9vbGVhbk5vZGUoaW50LCBib29sIHZhbHVl
KTsKKyAgICAgICAgQm9vbGVhbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCB2YWx1
ZSk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0yMTYsNyArMjIx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOdW1iZXJOb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE51bWJlck5vZGUoaW50LCBkb3Vi
bGUgdmFsdWUpOworICAgICAgICBOdW1iZXJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGRv
dWJsZSB2YWx1ZSk7CiAKICAgICAgICAgZG91YmxlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92
YWx1ZTsgfQogICAgICAgICB2b2lkIHNldFZhbHVlKGRvdWJsZSB2YWx1ZSkgeyBtX3ZhbHVlID0g
dmFsdWU7IH0KQEAgLTIzMiw3ICsyMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IFN0cmluZ05vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgU3RyaW5nTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgU3RyaW5nTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAKQEAgLTM0Miw3
ICszNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlZ0V4cE5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgotICAgICAgICBSZWdFeHBOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVy
biwgY29uc3QgSWRlbnRpZmllciYgZmxhZ3MpOworICAgICAgICBSZWdFeHBOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZp
ZXImIGZsYWdzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTM1
Myw3ICszNTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFRoaXNOb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFRoaXNOb2RlKGludCk7
CisgICAgICAgIFRoaXNOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMzYxLDcgKzM2Niw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwg
aW50IHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgUmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIGludCBzdGFydE9mZnNldCk7CiAKICAgICAgICAgY29u
c3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KIApA
QCAtMzkzLDExICszOTgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcnJheU5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXJyYXlO
b2RlKGludCwgaW50IGVsaXNpb24pOwotICAgICAgICBBcnJheU5vZGUoaW50LCBFbGVtZW50Tm9k
ZSopOwotICAgICAgICBBcnJheU5vZGUoaW50LCBpbnQgZWxpc2lvbiwgRWxlbWVudE5vZGUqKTsK
KyAgICAgICAgQXJyYXlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCBlbGlzaW9uKTsK
KyAgICAgICAgQXJyYXlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEVsZW1lbnROb2RlKik7
CisgICAgICAgIEFycmF5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQgZWxpc2lvbiwg
RWxlbWVudE5vZGUqKTsKIAotICAgICAgICBBcmd1bWVudExpc3ROb2RlKiB0b0FyZ3VtZW50TGlz
dChKU0dsb2JhbERhdGEqLCBpbnQpIGNvbnN0OworICAgICAgICBBcmd1bWVudExpc3ROb2RlKiB0
b0FyZ3VtZW50TGlzdChKU0dsb2JhbERhdGEqLCBpbnQsIGludCkgY29uc3Q7CiAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC00MjgsOCArNDMzLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBQcm9wZXJ0eUxpc3ROb2RlIDogcHVibGljIE5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShpbnQsIFByb3BlcnR5Tm9kZSopOwot
ICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKGludCwgUHJvcGVydHlOb2RlKiwgUHJvcGVydHlMaXN0
Tm9kZSopOworICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IFByb3BlcnR5Tm9kZSopOworICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIFByb3BlcnR5Tm9kZSosIFByb3BlcnR5TGlzdE5vZGUqKTsKIAogICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CiAKQEAgLTQ0MCw4ICs0NDUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIE9iamVjdExpdGVyYWxOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIE9iamVjdExpdGVyYWxOb2RlKGludCk7Ci0gICAgICAgIE9iamVjdExp
dGVyYWxOb2RlKGludCwgUHJvcGVydHlMaXN0Tm9kZSopOworICAgICAgICBPYmplY3RMaXRlcmFs
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKKyAgICAgICAgT2JqZWN0TGl0ZXJhbE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlMaXN0Tm9kZSopOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNDUxLDcgKzQ1Niw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIAogICAgIGNsYXNzIEJyYWNrZXRBY2Nlc3Nvck5vZGUgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgot
ICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4
cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMpOwor
ICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBib29sIHN1YnNjcmlw
dEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0
IHsgcmV0dXJuIG1fYmFzZTsgfQogICAgICAgICBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0KCkg
Y29uc3QgeyByZXR1cm4gbV9zdWJzY3JpcHQ7IH0KQEAgLTQ2OSw3ICs0NzQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIERvdEFjY2Vzc29yTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIERvdEFjY2Vzc29yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJik7CisgICAgICAgIERvdEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBiYXNlKCkgY29uc3QgeyByZXR1cm4gbV9iYXNlOyB9CiAgICAgICAgIGNv
bnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CkBA
IC00ODYsOCArNDkxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBcmd1bWVudExp
c3ROb2RlIDogcHVibGljIE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXJndW1lbnRMaXN0
Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgICAgIEFyZ3VtZW50TGlzdE5vZGUoaW50
LCBBcmd1bWVudExpc3ROb2RlKiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgQXJndW1lbnRM
aXN0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOworICAgICAg
ICBBcmd1bWVudExpc3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEFyZ3VtZW50TGlzdE5v
ZGUqLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUqIG1fbmV4
dDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKQEAgLTUwNiw4ICs1MTEsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE5ld0V4cHJOb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgTmV3RXhwck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOwotICAgICAgICBOZXdFeHBy
Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSopOworICAgICAgICBOZXdF
eHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOworICAgICAg
ICBOZXdFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIEFy
Z3VtZW50c05vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAg
LTUxOCw3ICs1MjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEV2YWxGdW5jdGlv
bkNhbGxOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUoaW50
LCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBFdmFsRnVuY3Rpb25DYWxsTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwpAQCAtNTI4LDcgKzUzMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgRnVuY3Rpb25DYWxsVmFsdWVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBw
dWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVu
Y3Rpb25DYWxsVmFsdWVOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKiwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
OworICAgICAgICBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwpAQCAtNTM5LDcgKzU0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUs
IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBG
dW5jdGlvbkNhbGxSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNO
b2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU1MCw3ICs1NTUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAKICAgICBjbGFzcyBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGludCwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05vZGUqLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7Cisg
ICAgICAgIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNO
b2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTYyLDcg
KzU2Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25E
YXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7Cisg
ICAgICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNTc1LDcgKzU4MCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJs
aWMgRnVuY3Rpb25DYWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDYWxsRnVuY3Rp
b25DYWxsRG90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpAQCAtNTgzLDcgKzU4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNz
IEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZSA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAg
ICAgICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU5MSw3ICs1OTYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFByZVBvc3RSZXNvbHZlTm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFByZVBvc3RSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXIm
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCk7CisgICAgICAgIFByZVBvc3RSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBtX2lkZW50OwpAQCAtNTk5LDcgKzYwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgUG9zdGZpeFJlc29sdmVOb2RlIDogcHVibGljIFByZVBvc3RSZXNvbHZlTm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBQb3N0Zml4UmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVu
dGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUG9zdGZpeFJlc29sdmVOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjA5LDcgKzYxNCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgUG9zdGZpeEJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgUG9zdGZpeEJyYWNrZXROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4
cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFBvc3RmaXhCcmFj
a2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhw
cmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTYyMSw3ICs2MjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIFBvc3RmaXhEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMg
VGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUG9zdGZp
eERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9w
ZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCk7CisgICAgICAgIFBvc3RmaXhEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTYzMyw3ICs2MzgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFBvc3RmaXhFcnJvck5vZGUgOiBwdWJsaWMgRXhw
cmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVi
bGljOgotICAgICAgICBQb3N0Zml4RXJyb3JOb2RlKGludCwgT3BlcmF0b3IsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAg
UG9zdGZpeEVycm9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBPcGVyYXRvciwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjQzLDcgKzY0OCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVsZXRlUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhw
cmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGlj
OgotICAgICAgICBEZWxldGVSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7Cisg
ICAgICAgIERlbGV0ZVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElk
ZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02
NTMsNyArNjU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWxldGVCcmFja2V0
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlbGV0ZUJyYWNrZXROb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRGVs
ZXRlQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKQEAgLTY2NCw3ICs2NjksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIERlbGV0ZURvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVEb3ROb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAg
IERlbGV0ZURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CkBAIC02NzUsNyArNjgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBE
ZWxldGVWYWx1ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgRGVsZXRlVmFsdWVOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgRGVs
ZXRlVmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02ODUsNyArNjkwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBWb2lkTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBWb2lkTm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
Kik7CisgICAgICAgIFZvaWROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02OTUsNyAr
NzAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBUeXBlT2ZSZXNvbHZlTm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBUeXBlT2ZSZXNv
bHZlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgVHlwZU9mUmVzb2x2ZU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9
CiAKQEAgLTcwNyw3ICs3MTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFR5cGVP
ZlZhbHVlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBUeXBlT2ZWYWx1ZU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBUeXBlT2ZW
YWx1ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTcxNyw3ICs3MjIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFByZWZpeFJlc29sdmVOb2RlIDogcHVibGljIFByZVBv
c3RSZXNvbHZlTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBQcmVmaXhSZXNvbHZlTm9kZShp
bnQsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQcmVmaXhSZXNvbHZl
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3Is
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTcyNyw3ICs3MzIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFByZWZpeEJyYWNrZXROb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQcmVmaXhCcmFja2V0Tm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwor
ICAgICAgICBQcmVmaXhCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTczOSw3ICs3NDQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFByZWZpeERvdE5vZGUgOiBwdWJsaWMgRXhwcmVz
c2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVQcmVmaXhlZFN1YkV4cHJlc3Npb25EYXRhIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFByZWZpeERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFByZWZpeERvdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
OwpAQCAtNzUxLDcgKzc1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJlZml4
RXJyb3JOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlZml4RXJyb3JOb2RlKGludCwgT3Bl
cmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KTsKKyAgICAgICAgUHJlZml4RXJyb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC03
NjEsNyArNzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBVbmFyeU9wTm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBVbmFyeU9wTm9k
ZShpbnQsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiwgT3Bjb2RlSUQpOworICAgICAgICBV
bmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBSZXN1bHRUeXBlLCBFeHByZXNzaW9u
Tm9kZSosIE9wY29kZUlEKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIoKSB7IHJldHVybiBtX2V4cHI7IH0KQEAgLTc3OCw3ICs3ODMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIFVuYXJ5UGx1c05vZGUgOiBwdWJsaWMgVW5hcnlPcE5vZGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgVW5hcnlQbHVzTm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
Kik7CisgICAgICAgIFVuYXJ5UGx1c05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgRXhwcmVzc2lvbk5v
ZGUqIHN0cmlwVW5hcnlQbHVzKCkgeyByZXR1cm4gZXhwcigpOyB9CkBAIC03ODYsMTIgKzc5MSwx
MiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE5lZ2F0ZU5vZGUgOiBwdWJsaWMgVW5h
cnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTmVnYXRlTm9kZShpbnQsIEV4cHJlc3Np
b25Ob2RlKik7CisgICAgICAgIE5lZ2F0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqKTsKICAgICB9OwogCiAgICAgY2xhc3MgQml0d2lzZU5vdE5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQml0d2lzZU5vdE5vZGUo
aW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBCaXR3aXNlTm90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICBFeHByZXNzaW9uTm9kZSogZXhwcigpIHsgcmV0dXJuIG1fZXhwcjsgfQpAQCAtODA1LDcgKzgx
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogIAogICAgIGNsYXNzIExvZ2ljYWxOb3ROb2RlIDogcHVi
bGljIFVuYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExvZ2ljYWxOb3ROb2RlKGlu
dCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgTG9naWNhbE5vdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKICAgICBwcml2YXRlOgogICAgICAgICB2b2lk
IGVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYsIExhYmVs
KiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VUYXJnZXQsIGJvb2wgZmFsbFRocm91Z2hNZWFuc1Ry
dWUpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzQ29uZGl0aW9uQ29udGV4dENvZGVnZW4oKSBj
b25zdCB7IHJldHVybiBleHByKCktPmhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCk7IH0KQEAg
LTgxMyw4ICs4MTgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJpbmFyeU9wTm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBCaW5hcnlP
cE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
T3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgICAgIEJpbmFyeU9wTm9k
ZShpbnQsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQmlu
YXJ5T3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKKyAgICAgICAgQmluYXJ5T3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFJlc3VsdFR5
cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJ
RCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0
U3RyY2F0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRlc3RpbmF0
aW9uLCBSZWdpc3RlcklEKiBsaHMgPSAwLCBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUqIGVtaXRFeHBy
ZXNzaW9uSW5mb0Zvck1lID0gMCk7CiAKQEAgLTgzOCw3MiArODQzLDcyIEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgTXVsdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIE11bHROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIE11
bHROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAK
ICAgICBjbGFzcyBEaXZOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBEaXZOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIERpdk5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNz
IE1vZE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE1v
ZE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTW9kTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgQWRkTm9kZSA6
IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQWRkTm9kZShpbnQs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpOworICAgICAgICBBZGROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0FkZCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KICAgICB9OwogCiAgICAgY2xhc3MgU3ViTm9kZSA6IHB1YmxpYyBCaW5h
cnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgU3ViTm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOworICAgICAgICBTdWJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N1YnRyYWN0KCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIH07CiAKICAgICBjbGFzcyBMZWZ0U2hpZnROb2RlIDogcHVibGljIEJpbmFy
eU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBMZWZ0U2hpZnROb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CisgICAgICAgIExlZnRTaGlmdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIFJpZ2h0U2hpZnROb2RlIDogcHVi
bGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBSaWdodFNoaWZ0Tm9kZShp
bnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBSaWdodFNoaWZ0Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgVW5zaWduZWRS
aWdodFNoaWZ0Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBV
bnNpZ25lZFJpZ2h0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOwogICAgIH07CiAKICAgICBjbGFzcyBMZXNzTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgTGVzc05vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAg
ICAgICAgTGVzc05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAg
ICAgfTsKIAogICAgIGNsYXNzIEdyZWF0ZXJOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBHcmVhdGVyTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAg
ICAgICBHcmVhdGVyTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
ICAgICB9OwogCiAgICAgY2xhc3MgTGVzc0VxTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgTGVzc0VxTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAg
ICAgICBMZXNzRXFOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwog
ICAgIH07CiAKICAgICBjbGFzcyBHcmVhdGVyRXFOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBHcmVhdGVyRXFOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CisgICAgICAgIEdyZWF0ZXJFcU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIFRocm93YWJsZUJpbmFyeU9wTm9kZSA6IHB1Ymxp
YyBCaW5hcnlPcE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVi
bGljOgotICAgICAgICBUaHJvd2FibGVCaW5hcnlPcE5vZGUoaW50LCBSZXN1bHRUeXBlLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShpbnQs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFJlc3VsdFR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKKyAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJ
RCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKQEAgLTkxMSw3ICs5MTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAg
ICBjbGFzcyBJbnN0YW5jZU9mTm9kZSA6IHB1YmxpYyBUaHJvd2FibGVCaW5hcnlPcE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgSW5zdGFuY2VPZk5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
KyAgICAgICAgSW5zdGFuY2VPZk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05MTksMTIg
KzkyNCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEluTm9kZSA6IHB1YmxpYyBU
aHJvd2FibGVCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSW5Ob2RlKGludCwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CisgICAgICAgIEluTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgRXF1YWxOb2RlIDogcHVibGljIEJp
bmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBFcXVhbE5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKKyAgICAgICAgRXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTMy
LDEyICs5MzcsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOb3RFcXVhbE5vZGUg
OiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5vdEVxdWFsTm9k
ZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBOb3RFcXVhbE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIFN0cmljdEVx
dWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgU3Ry
aWN0RXF1YWxOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIFN0cmljdEVxdWFsTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTk0NSwyOCArOTUwLDI4IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgTm90U3RyaWN0RXF1YWxOb2RlIDogcHVibGljIEJpbmFyeU9wTm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBOb3RTdHJpY3RFcXVhbE5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKKyAgICAgICAgTm90U3RyaWN0RXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBCaXRBbmROb2RlIDogcHVi
bGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBCaXRBbmROb2RlKGludCwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJpdEFuZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEJpdE9yTm9kZSA6IHB1Ymxp
YyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQml0T3JOb2RlKGludCwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CisgICAgICAgIEJpdE9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgQml0WE9yTm9kZSA6IHB1YmxpYyBC
aW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQml0WE9yTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOworICAgICAgICBCaXRYT3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICAvLyBtX2V4cHIxICYmIG1fZXhwcjIsIG1fZXhw
cjEgfHwgbV9leHByMgogICAgIGNsYXNzIExvZ2ljYWxPcE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTG9naWNhbE9wTm9kZShpbnQsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBMb2dpY2FsT3BlcmF0b3IpOwor
ICAgICAgICBMb2dpY2FsT3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBMb2dpY2FsT3BlcmF0b3IpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTgxLDcgKzk4Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIC8vIFRoZSB0ZXJuYXJ5IG9wZXJhdG9yLCAibV9sb2dpY2FsID8g
bV9leHByMSA6IG1fZXhwcjIiCiAgICAgY2xhc3MgQ29uZGl0aW9uYWxOb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENvbmRpdGlvbmFsTm9kZShpbnQs
IEV4cHJlc3Npb25Ob2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMik7CisgICAgICAgIENvbmRpdGlvbmFsTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogbG9naWNhbCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpAQCAtOTkzLDcgKzk5OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVh
ZE1vZGlmeVJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVhZE1vZGlmeVJlc29s
dmVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSog
IHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUmVhZE1vZGlmeVJl
c29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBPcGVy
YXRvciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDA2LDcgKzEwMTEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFzc2lnblJlc29sdmVOb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVy
JiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0KTsKKyAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDE3LDcg
KzEwMjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlYWRNb2RpZnlCcmFja2V0
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Np
b25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZShpbnQs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRv
ciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9u
Tm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1
YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwMzIsNyArMTAzNyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXNzaWduQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhw
cmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGlj
OgotICAgICAgICBBc3NpZ25CcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBF
eHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vi
c2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAg
ICBBc3NpZ25CcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwNDYsNyArMTA1
MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXNzaWduRG90Tm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIEFzc2lnbkRvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7CisgICAgICAgIEFzc2lnbkRvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTA1OSw3ICsxMDY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBSZWFkTW9kaWZ5RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwg
cHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IFJlYWRNb2RpZnlEb3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKKyAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwNzMsNyArMTA3OCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXNzaWduRXJyb3JOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgQXNzaWduRXJyb3JOb2RlKGludCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBBc3NpZ25FcnJvck5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOwpAQCAtMTA4Myw3ICsxMDg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBDb21tYU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBQYXJzZXJBcmVuYURl
bGV0YWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBDb21tYU5vZGUoaW50LCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMik7CisgICAgICAgIENvbW1hTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMik7CiAKICAgICAgICAgdXNpbmcgUGFyc2VyQXJlbmFEZWxldGFibGU6Om9wZXJh
dG9yIG5ldzsKIApAQCAtMTA5OCw3ICsxMTAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAg
ICAgY2xhc3MgQ29uc3REZWNsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBDb25zdERlY2xOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJl
c3Npb25Ob2RlKik7CisgICAgICAgIENvbnN0RGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICAgICAgYm9vbCBo
YXNJbml0aWFsaXplcigpIGNvbnN0IHsgcmV0dXJuIG1faW5pdDsgfQogICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCgpIHsgcmV0dXJuIG1faWRlbnQ7IH0KQEAgLTExMTgsNyArMTEyMyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29uc3RTdGF0ZW1lbnROb2RlIDogcHVi
bGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29uc3RTdGF0ZW1lbnRO
b2RlKGludCwgQ29uc3REZWNsTm9kZSogbmV4dCk7CisgICAgICAgIENvbnN0U3RhdGVtZW50Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBDb25zdERlY2xOb2RlKiBuZXh0KTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTExNDMsNyArMTE0OCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgQmxvY2tOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgQmxvY2tOb2RlKGludCwgU291cmNlRWxlbWVudHMqID0g
MCk7CisgICAgICAgIEJsb2NrTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTb3VyY2VFbGVt
ZW50cyogPSAwKTsKIAogICAgICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQoKSBj
b25zdDsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbGFzdFN0YXRlbWVudCgpIGNvbnN0OwpAQCAt
MTE1OCw3ICsxMTYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFbXB0eVN0YXRl
bWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBF
bXB0eVN0YXRlbWVudE5vZGUoaW50KTsKKyAgICAgICAgRW1wdHlTdGF0ZW1lbnROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
OwpAQCAtMTE2OCw3ICsxMTczLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3Mg
RGVidWdnZXJTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnROb2RlKGludCk7CisgICAgICAgIERlYnVnZ2Vy
U3RhdGVtZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKICAgICAgICAgCiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTE3Niw3ICsxMTgxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBFeHByU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1l
bnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKGludCwgRXhw
cmVzc2lvbk5vZGUqKTsKKyAgICAgICAgRXhwclN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogZXhw
cigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcjsgfQogCkBAIC0xMTkwLDggKzExOTUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFZhclN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVt
ZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBWYXJTdGF0ZW1lbnROb2RlKGludCwgRXhw
cmVzc2lvbk5vZGUqKTsgICAgICAgIAotCisgICAgICAgIFZhclN0YXRlbWVudE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CiAKQEAgLTEyMDAsNyArMTIwNCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgSWZOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgSWZOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50
Tm9kZSogaWZCbG9jayk7CisgICAgICAgIElmTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrKTsKIAogICAg
IHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTIxMSw3ICsxMjE1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZkVsc2VOb2RlIDogcHVibGljIElmTm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBJZkVsc2VOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGNv
bmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2Nr
KTsKKyAgICAgICAgSWZFbHNlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrLCBTdGF0ZW1lbnROb2RlKiBl
bHNlQmxvY2spOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTIy
MSw3ICsxMjI1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEb1doaWxlTm9kZSA6
IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERvV2hpbGVOb2Rl
KGludCwgU3RhdGVtZW50Tm9kZSosIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIERvV2hpbGVO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFN0YXRlbWVudE5vZGUqLCBFeHByZXNzaW9uTm9k
ZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTIzMiw3ICsx
MjM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBXaGlsZU5vZGUgOiBwdWJsaWMg
U3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBXaGlsZU5vZGUoaW50LCBFeHBy
ZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsKKyAgICAgICAgV2hpbGVOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSopOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTI0Myw3ICsxMjQ3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGb3JOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgRm9yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0YXRlbWVu
dE5vZGUqKTsKKyAgICAgICAgRm9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIzLCBTdGF0ZW1lbnROb2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CkBAIC0xMjU2LDggKzEyNjAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZv
ckluTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRm9ySW5Ob2RlKGludCwgRXhwcmVzc2lvbk5v
ZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsKLSAgICAgICAgRm9ySW5Ob2Rl
KEpTR2xvYmFsRGF0YSosIGludCwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwg
RXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgaW50IGRpdm90LCBpbnQgc3RhcnRPZmZz
ZXQsIGludCBlbmRPZmZzZXQpOworICAgICAgICBGb3JJbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsK
KyAgICAgICAgRm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3Rh
dGVtZW50Tm9kZSosIGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyNzEsOCArMTI3NSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29udGludWVOb2RlIDogcHVibGljIFN0
YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGlj
OgotICAgICAgICBDb250aW51ZU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50KTsKLSAgICAgICAgQ29u
dGludWVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBDb250aW51ZU5vZGUo
SlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CisgICAgICAgIENvbnRpbnVl
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAg
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyODIsOCArMTI4Niw4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQnJlYWtOb2RlIDogcHVibGljIFN0YXRl
bWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgot
ICAgICAgICBCcmVha05vZGUoSlNHbG9iYWxEYXRhKiwgaW50KTsKLSAgICAgICAgQnJlYWtOb2Rl
KGludCwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBCcmVha05vZGUoSlNHbG9iYWxEYXRh
KiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CisgICAgICAgIEJyZWFrTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyOTMsNyArMTI5Nyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgUmV0dXJuTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJs
aWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmV0dXJu
Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSk7CisgICAgICAgIFJldHVybk5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIHZhbHVlKTsKIAogICAgICAgICBF
eHByZXNzaW9uTm9kZSogdmFsdWUoKSB7IHJldHVybiBtX3ZhbHVlOyB9CiAKQEAgLTEzMDcsNyAr
MTMxMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgV2l0aE5vZGUgOiBwdWJsaWMg
U3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBXaXRoTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIHVpbnQzMl90IGRpdm90LCB1aW50MzJfdCBleHBy
ZXNzaW9uTGVuZ3RoKTsKKyAgICAgICAgV2l0aE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgdWludDMyX3QgZGl2b3QsIHVpbnQzMl90
IGV4cHJlc3Npb25MZW5ndGgpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
OwpAQCAtMTMyMCw3ICsxMzI0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBMYWJl
bE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExhYmVsTm9kZShpbnQsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqKTsKKyAgICAgICAgTGFiZWxOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqKTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEzMzEsNyArMTMzNSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVGhyb3dOb2RlIDogcHVibGljIFN0YXRlbWVu
dE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAg
ICAgICBUaHJvd05vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBUaHJvd05vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEzNDEsNyArMTM0NSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgVHJ5Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFRyeU5vZGUoaW50LCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29u
c3QgSWRlbnRpZmllciYgZXhjZXB0aW9uSWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ss
IFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jayk7CisgICAgICAgIFRyeU5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXIm
IGV4Y2VwdGlvbklkZW50LCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2Rl
KiBmaW5hbGx5QmxvY2spOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpA
QCAtMTM3MCw4ICsxMzc0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgRGVj
bGFyYXRpb25TdGFja3M6OlZhclN0YWNrIFZhclN0YWNrOwogICAgICAgICB0eXBlZGVmIERlY2xh
cmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrIEZ1bmN0aW9uU3RhY2s7CiAKLSAgICAgICAgU2Nv
cGVOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgYm9vbCBpblN0cmljdENvbnRleHQpOwotICAgICAg
ICBTY29wZU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNl
RWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgQ29k
ZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFs
RGF0YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKKyAg
ICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNv
bnN0IFNvdXJjZUNvZGUmLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFj
ayosIElkZW50aWZpZXJTZXQmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAg
ICAgICAgIHVzaW5nIFBhcnNlckFyZW5hUmVmQ291bnRlZDo6b3BlcmF0b3IgbmV3OwogCkBAIC0x
NDMzLDEyICsxNDM3LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIFByb2dyYW1Ob2Rl
IDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3Qg
Ym9vbCBpc0Z1bmN0aW9uTm9kZSA9IGZhbHNlOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
cm9ncmFtTm9kZT4gY3JlYXRlKEpTR2xvYmFsRGF0YSosIGludCwgU291cmNlRWxlbWVudHMqLCBW
YXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29k
ZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFByb2dyYW1Ob2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVu
dGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cyk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFs
c2U7CiAKICAgICBwcml2YXRlOgotICAgICAgICBQcm9ncmFtTm9kZShKU0dsb2JhbERhdGEqLCBp
bnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmll
clNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMp
OworICAgICAgICBQcm9ncmFtTm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZp
ZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KTsKIAogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CiAgICAgfTsKQEAgLTE0NDYsMTIgKzE0NTAsMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRXZhbE5vZGUgOiBwdWJsaWMgU2NvcGVOb2Rl
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzRnVuY3Rpb25Ob2Rl
ID0gZmFsc2U7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2YWxOb2RlPiBjcmVhdGUoSlNH
bG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFj
ayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQg
bnVtQ29uc3RhbnRzKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RXZhbE5vZGU+IGNyZWF0
ZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTb3VyY2VFbGVtZW50cyos
IFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VD
b2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSBmYWxzZTsKIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIEV2YWxOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFj
ayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENv
ZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIEV2YWxOb2RlKEpTR2xvYmFs
RGF0YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sq
LCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2Rl
RmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKICAg
ICB9OwpAQCAtMTQ2OCw4ICsxNDcyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVu
Y3Rpb25Cb2R5Tm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSB0cnVlOwotICAgICAgICBzdGF0aWMg
RnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlKEpTR2xvYmFsRGF0YSosIGludCwgYm9vbCBpc1N0cmlj
dE1vZGUpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBjcmVh
dGUoSlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rp
b25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgc3RhdGljIEZ1bmN0aW9uQm9keU5vZGUqIGNy
ZWF0ZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sIGlzU3RyaWN0
TW9kZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IGNyZWF0
ZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTb3VyY2VFbGVtZW50cyos
IFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VD
b2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICBGdW5jdGlv
blBhcmFtZXRlcnMqIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuZ2V0
KCk7IH0KICAgICAgICAgc2l6ZV90IHBhcmFtZXRlckNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzLT5zaXplKCk7IH0KQEAgLTE0ODYsOCArMTQ5MCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBzY29wZUlzRnVuY3Rpb24gPSB0cnVlOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqLCBpbnQs
IGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKLSAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2Jh
bERhdGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwg
SWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1D
b25zdGFudHMpOworICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSosIGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKKyAgICAgICAgRnVuY3Rp
b25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTb3VyY2VF
bGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25z
dCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAg
ICBJZGVudGlmaWVyIG1faWRlbnQ7CiAgICAgICAgIElkZW50aWZpZXIgbV9pbmZlcnJlZE5hbWU7
CkBAIC0xNDk2LDcgKzE1MDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmNF
eHByTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBG
dW5jRXhwck5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGNv
bnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOworICAgICAgICBGdW5jRXhwck5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uQm9k
eU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsKIAogICAgICAg
ICBGdW5jdGlvbkJvZHlOb2RlKiBib2R5KCkgeyByZXR1cm4gbV9ib2R5OyB9CiAKQEAgLTE1MTAs
NyArMTUxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY0RlY2xOb2RlIDog
cHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY0RlY2xOb2Rl
KGludCwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VD
b2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsKKyAgICAgICAgRnVuY0RlY2xOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbkJvZHlOb2RlKiwgY29u
c3QgU291cmNlQ29kZSYsIFBhcmFtZXRlck5vZGUqID0gMCk7CiAKICAgICAgICAgRnVuY3Rpb25C
b2R5Tm9kZSogYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogCkBAIC0xNTYxLDcgKzE1NjUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFN3aXRjaE5vZGUgOiBwdWJsaWMgU3RhdGVt
ZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBTd2l0Y2hOb2RlKGludCwgRXhwcmVzc2lv
bk5vZGUqLCBDYXNlQmxvY2tOb2RlKik7CisgICAgICAgIFN3aXRjaE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBDYXNlQmxvY2tOb2RlKik7CiAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKaW5kZXggNTU4ZjUwZTVmYjMwNTM0YzY2MjRlNzc0OWNiMDRlNjk1MmJjOTI2My4u
M2UyNDNiNDA3OTAyYWEwYmE5MzEzMzMzNzQzOWU5NzJlNThhZTYyYSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHRlbXBsYXRlIDxT
b3VyY2VFbGVtZW50c01vZGUgbW9kZSwgY2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVt
ZW50cyBQYXJzZXI8CiAgICAgYm9vbCBzZWVuTm9uRGlyZWN0aXZlID0gZmFsc2U7CiAgICAgY29u
c3QgSWRlbnRpZmllciogZGlyZWN0aXZlID0gMDsKICAgICB1bnNpZ25lZCBkaXJlY3RpdmVMaXRl
cmFsTGVuZ3RoID0gMDsKLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IG1fdG9rZW4ubV9pbmZv
LnN0YXJ0T2Zmc2V0OworICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gbV90b2tlbi5tX2xvY2F0
aW9uLnN0YXJ0T2Zmc2V0OwogICAgIHVuc2lnbmVkIG9sZExhc3RMaW5lTnVtYmVyID0gbV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKTsKICAgICB1bnNpZ25lZCBvbGRMaW5lTnVtYmVyID0gbV9sZXhl
ci0+bGluZU51bWJlcigpOwogICAgIGJvb2wgaGFzU2V0U3RyaWN0ID0gZmFsc2U7CkBAIC0xNzIs
NiArMTcyLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJE
ZWNsYXJhdGlvbihUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goVkFS
KSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAg
aW50IHN0YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVuZCA9IDA7CiAgICAgaW50IHNjcmF0
Y2g7CkBAIC0xODIsMjAgKzE4MywyMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpbwogICAgIGZh
aWxJZlRydWUobV9lcnJvcik7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKICAg
ICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVWYXJTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgdmFyRGVjbHMsIHN0YXJ0LCBlbmQpOworICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZVZhclN0YXRlbWVudChsb2NhdGlvbiwgdmFyRGVjbHMsIHN0YXJ0LCBlbmQpOwogfQogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnN0RGVjbGFyYXRpb24o
VHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKENPTlNUVE9LRU4pKTsK
KyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQg
c3RhcnQgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQgZW5kID0gMDsKICAgICBUcmVlQ29uc3REZWNs
TGlzdCBjb25zdERlY2xzID0gcGFyc2VDb25zdERlY2xhcmF0aW9uTGlzdChjb250ZXh0KTsKICAg
ICBmYWlsSWZUcnVlKG1fZXJyb3IpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7
CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29uc3RTdGF0ZW1lbnQobV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwgY29uc3REZWNscywgc3RhcnQsIGVuZCk7CisgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlQ29uc3RTdGF0ZW1lbnQobG9jYXRpb24sIGNvbnN0RGVjbHMsIHN0YXJ0LCBl
bmQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMjEwLDYgKzIxMiw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VEb1doaWxlU3RhdGVtCiAgICAgZW5kTG9vcCgpOwogICAgIGZhaWxJZkZh
bHNlKHN0YXRlbWVudCk7CiAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBKU1Rv
a2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBjb25zdW1lT3JGYWls
KFdISUxFKTsKICAgICBjb25zdW1lT3JGYWlsKE9QRU5QQVJFTik7CiAgICAgVHJlZUV4cHJlc3Np
b24gZXhwciA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTIxNywxMyArMjIwLDE0IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VEb1doaWxlU3RhdGVtCiAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsK
ICAgICBpZiAobWF0Y2goU0VNSUNPTE9OKSkKICAgICAgICAgbmV4dCgpOyAvLyBBbHdheXMgcGVy
Zm9ybXMgYXV0b21hdGljIHNlbWljb2xvbiBpbnNlcnRpb24uCi0gICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRG9XaGlsZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBzdGF0ZW1l
bnQsIGV4cHIsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
RG9XaGlsZVN0YXRlbWVudChsb2NhdGlvbiwgc3RhdGVtZW50LCBleHByLCBzdGFydExpbmUsIGVu
ZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVdo
aWxlU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChX
SElMRSkpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwog
ICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgY29uc3Vt
ZU9yRmFpbChPUEVOUEFSRU4pOwpAQCAtMjM2LDcgKzI0MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaGlsZVN0
YXRlbWVuCiAgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudChjb250
ZXh0LCB1bnVzZWQpOwogICAgIGVuZExvb3AoKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQp
OwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVdoaWxlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIGV4cHIsIHN0YXRlbWVudCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVXaGlsZVN0YXRlbWVudChsb2NhdGlvbiwgZXhwciwgc3RhdGVt
ZW50LCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgpAQCAtMjQ1LDYgKzI0OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpCiAgICAgVHJl
ZUV4cHJlc3Npb24gdmFyRGVjbHMgPSAwOwogICAgIGRvIHsKICAgICAgICAgZGVjbGFyYXRpb25z
Kys7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwog
ICAgICAgICBuZXh0KCk7CiAgICAgICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICAgICAgCkBA
IC0yNjUsMTEgKzI3MCwxMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xhcmF0aQogICAgICAgICAgICAg
bGFzdEluaXRpYWxpemVyID0gaW5pdGlhbGl6ZXI7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShp
bml0aWFsaXplcik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5v
ZGUgPSBjb250ZXh0LmNyZWF0ZUFzc2lnblJlc29sdmUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgKm5hbWUsIGluaXRpYWxpemVyLCB2YXJTdGFydCwgdmFyRGl2b3QsIGxhc3RUb2tlbkVuZCgp
KTsKKyAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBjb250ZXh0LmNyZWF0ZUFzc2ln
blJlc29sdmUobG9jYXRpb24sICpuYW1lLCBpbml0aWFsaXplciwgdmFyU3RhcnQsIHZhckRpdm90
LCBsYXN0VG9rZW5FbmQoKSk7CiAgICAgICAgICAgICBpZiAoIXZhckRlY2xzKQogICAgICAgICAg
ICAgICAgIHZhckRlY2xzID0gbm9kZTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICB2YXJEZWNscyA9IGNvbnRleHQuY29tYmluZUNvbW1hTm9kZXMobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgdmFyRGVjbHMsIG5vZGUpOworICAgICAgICAgICAgICAgIHZhckRlY2xzID0gY29u
dGV4dC5jb21iaW5lQ29tbWFOb2Rlcyhsb2NhdGlvbiwgdmFyRGVjbHMsIG5vZGUpOwogICAgICAg
ICB9CiAgICAgfSB3aGlsZSAobWF0Y2goQ09NTUEpKTsKICAgICByZXR1cm4gdmFyRGVjbHM7CkBA
IC0yODIsNiArMjg3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ29uc3RE
ZWNsTGlzdCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb25zdERlY2wKICAgICBUcmVlQ29uc3RE
ZWNsTGlzdCBjb25zdERlY2xzID0gMDsKICAgICBUcmVlQ29uc3REZWNsTGlzdCB0YWlsID0gMDsK
ICAgICBkbyB7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9u
KCkpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciogbmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwpAQCAtMjk0
LDcgKzMwMCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNvbnN0RGVjbExp
c3QgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29uc3REZWNsCiAgICAgICAgICAgICBuZXh0KFRy
ZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsgLy8gY29uc3VtZSAnPScKICAgICAgICAgICAg
IGluaXRpYWxpemVyID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAg
ICAgfQotICAgICAgICB0YWlsID0gY29udGV4dC5hcHBlbmRDb25zdERlY2wobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwgdGFpbCwgbmFtZSwgaW5pdGlhbGl6ZXIpOworICAgICAgICB0YWlsID0g
Y29udGV4dC5hcHBlbmRDb25zdERlY2wobG9jYXRpb24sIHRhaWwsIG5hbWUsIGluaXRpYWxpemVy
KTsKICAgICAgICAgaWYgKCFjb25zdERlY2xzKQogICAgICAgICAgICAgY29uc3REZWNscyA9IHRh
aWw7CiAgICAgfSB3aGlsZSAobWF0Y2goQ09NTUEpKTsKQEAgLTMwNSw2ICszMTEsNyBAQCB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0YXRlbWVudChUcmVlQnVp
bGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goRk9SKSk7CisgICAgSlNUb2tlbkxv
Y2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRv
a2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICBjb25zdW1lT3JGYWlsKE9QRU5QQVJFTik7CkBA
IC0zNTIsNyArMzU5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0YXRlbWVudCgKICAgICAgICAgZW5kTG9v
cCgpOwogICAgICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgICAgICAKLSAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IGZvckluVGFyZ2V0LCBmb3JJbkluaXRpYWxpemVyLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3Rh
cnQsIGluTG9jYXRpb24sIGV4cHJFbmQsIGluaXRTdGFydCwgaW5pdEVuZCwgc3RhcnRMaW5lLCBl
bmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKGxvY2F0aW9u
LCBmb3JJblRhcmdldCwgZm9ySW5Jbml0aWFsaXplciwgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0
YXJ0LCBpbkxvY2F0aW9uLCBleHByRW5kLCBpbml0U3RhcnQsIGluaXRFbmQsIHN0YXJ0TGluZSwg
ZW5kTGluZSk7CiAgICAgfQogICAgIAogICAgIGlmICghbWF0Y2goU0VNSUNPTE9OKSkgewpAQCAt
Mzg4LDcgKzM5NSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgICAgIFRyZWVTdGF0
ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICAg
ICAgZW5kTG9vcCgpOwogICAgICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwotICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVGb3JMb29wKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGRl
Y2xzLCBjb25kaXRpb24sIGluY3JlbWVudCwgc3RhdGVtZW50LCBzdGFydExpbmUsIGVuZExpbmUp
OworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JMb29wKGxvY2F0aW9uLCBkZWNscywg
Y29uZGl0aW9uLCBpbmNyZW1lbnQsIHN0YXRlbWVudCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAg
ICB9CiAgICAgCiAgICAgLy8gRm9yLWluIGxvb3AKQEAgLTQwNSwxMyArNDEyLDE0IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgZW5kTG9vcCgpOwogICAgIGZhaWxJZkZhbHNlKHN0YXRl
bWVudCk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9ySW5Mb29wKG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIGRlY2xzLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGRl
Y2xzRW5kLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUZvckluTG9vcChsb2NhdGlvbiwgZGVjbHMsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNT
dGFydCwgZGVjbHNFbmQsIGV4cHJFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQnJlYWtTdGF0ZW1lbnQoVHJlZUJ1
aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKEJSRUFLKSk7CisgICAgSlNUb2tl
bkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgaW50IHN0YXJ0Q29sID0g
dG9rZW5TdGFydCgpOwogICAgIGludCBlbmRDb2wgPSB0b2tlbkVuZCgpOwogICAgIGludCBzdGFy
dExpbmUgPSB0b2tlbkxpbmUoKTsKQEAgLTQyMCw3ICs0MjgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQnJlYWtT
dGF0ZW1lbgogICAgIAogICAgIGlmIChhdXRvU2VtaUNvbG9uKCkpIHsKICAgICAgICAgZmFpbElm
RmFsc2VXaXRoTWVzc2FnZShicmVha0lzVmFsaWQoKSwgIidicmVhaycgaXMgb25seSB2YWxpZCBp
bnNpZGUgYSBzd2l0Y2ggb3IgbG9vcCBzdGF0ZW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlQnJlYWtTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RhcnRD
b2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlQnJlYWtTdGF0ZW1lbnQobG9jYXRpb24sIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGlu
ZSwgZW5kTGluZSk7CiAgICAgfQogICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICBjb25zdCBJ
ZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwpAQCAtNDI5LDEzICs0Mzcs
MTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUJyZWFrU3RhdGVtZW4KICAgICBlbmRMaW5lID0gdG9rZW5MaW5lKCk7
CiAgICAgbmV4dCgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlQnJlYWtTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgaWRlbnQsIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlQnJlYWtTdGF0ZW1lbnQobG9jYXRpb24sIGlkZW50LCBzdGFydENv
bCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnRpbnVlU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250
ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChDT05USU5VRSkpOworICAgIEpTVG9rZW5Mb2NhdGlv
biBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBzdGFydENvbCA9IHRva2VuU3Rh
cnQoKTsKICAgICBpbnQgZW5kQ29sID0gdG9rZW5FbmQoKTsKICAgICBpbnQgc3RhcnRMaW5lID0g
dG9rZW5MaW5lKCk7CkBAIC00NDQsNyArNDUzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnRpbnVlU3RhdGUK
ICAgICAKICAgICBpZiAoYXV0b1NlbWlDb2xvbigpKSB7CiAgICAgICAgIGZhaWxJZkZhbHNlV2l0
aE1lc3NhZ2UoY29udGludWVJc1ZhbGlkKCksICInY29udGludWUnIGlzIG9ubHkgdmFsaWQgaW5z
aWRlIGEgbG9vcCBzdGF0ZW1lbnQiKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29u
dGludWVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RhcnRDb2wsIGVuZENv
bCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29u
dGludWVTdGF0ZW1lbnQobG9jYXRpb24sIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5k
TGluZSk7CiAgICAgfQogICAgIG1hdGNoT3JGYWlsKElERU5UKTsKICAgICBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwpAQCAtNDU1LDEzICs0NjQsMTQgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUNvbnRpbnVlU3RhdGUKICAgICBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAg
bmV4dCgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
aWRlbnQsIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobG9jYXRpb24sIGlkZW50LCBzdGFydENv
bCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVJldHVyblN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4
dCkKIHsKICAgICBBU1NFUlQobWF0Y2goUkVUVVJOKSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxv
Y2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgZmFpbElmRmFsc2UoY3VycmVudFNjb3BlKCkt
PmlzRnVuY3Rpb24oKSk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIGlu
dCBlbmRMaW5lID0gc3RhcnRMaW5lOwpAQCAtNDc0LDIwICs0ODQsMjEgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVJl
dHVyblN0YXRlbWUKICAgICBpZiAobWF0Y2goU0VNSUNPTE9OKSkKICAgICAgICAgZW5kTGluZSAg
PSB0b2tlbkxpbmUoKTsKICAgICBpZiAoYXV0b1NlbWlDb2xvbigpKQotICAgICAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
MCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KGxvY2F0aW9uLCAwLCBzdGFydCwgZW5kLCBzdGFydExp
bmUsIGVuZExpbmUpOwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24o
Y29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcik7CiAgICAgZW5kID0gbGFzdFRva2VuRW5k
KCk7CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIGVuZExpbmUgID0gdG9rZW5M
aW5lKCk7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhw
ciwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVSZXR1cm5TdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIHN0YXJ0LCBlbmQsIHN0YXJ0TGlu
ZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlVGhyb3dTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1h
dGNoKFRIUk9XKSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24o
KSk7CiAgICAgaW50IGVTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICBpbnQgc3RhcnRMaW5lID0g
dG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwpAQCAtNTAwLDEzICs1MTEsMTQgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZVRocm93U3RhdGVtZW4KICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIGZhaWxJ
ZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
VGhyb3dTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgZVN0YXJ0LCBl
RW5kLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVRocm93
U3RhdGVtZW50KGxvY2F0aW9uLCBleHByLCBlU3RhcnQsIGVFbmQsIHN0YXJ0TGluZSwgZW5kTGlu
ZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlV2l0aFN0
YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goV0lUSCkp
OworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGZh
aWxJZlRydWVXaXRoTWVzc2FnZShzdHJpY3RNb2RlKCksICInd2l0aCcgc3RhdGVtZW50cyBhcmUg
bm90IHZhbGlkIGluIHN0cmljdCBtb2RlIik7CiAgICAgY3VycmVudFNjb3BlKCktPnNldE5lZWRz
RnVsbEFjdGl2YXRpb24oKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CkBAIC01
MjMsMTMgKzUzNSwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlV2l0aFN0YXRlbWVudAogICAgIFRyZWVTdGF0ZW1l
bnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICBmYWls
SWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVdpdGhT
dGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgc3RhdGVtZW50LCBzdGFy
dCwgZW5kLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVdp
dGhTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIHN0YXRlbWVudCwgc3RhcnQsIGVuZCwgc3RhcnRM
aW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VTd2l0Y2hTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJU
KG1hdGNoKFNXSVRDSCkpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0
aW9uKCkpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAg
ICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwpAQCAtNTUwLDcgKzU2Myw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VTd2l0Y2hTdGF0ZW1lCiAgICAgZW5kU3dpdGNoKCk7CiAgICAgY29uc3VtZU9yRmFpbChDTE9T
RUJSQUNFKTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgZmlyc3RDbGF1c2VzLCBkZWZhdWx0Q2xh
dXNlLCBzZWNvbmRDbGF1c2VzLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZVN3aXRjaFN0YXRlbWVudChsb2NhdGlvbiwgZXhwciwgZmlyc3RDbGF1c2VzLCBk
ZWZhdWx0Q2xhdXNlLCBzZWNvbmRDbGF1c2VzLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIAog
fQogCkBAIC01OTgsNiArNjExLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VUcnlTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJU
KG1hdGNoKFRSWSkpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9u
KCkpOwogICAgIFRyZWVTdGF0ZW1lbnQgdHJ5QmxvY2sgPSAwOwogICAgIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50ID0gJm1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7
CiAgICAgVHJlZVN0YXRlbWVudCBjYXRjaEJsb2NrID0gMDsKQEAgLTYzNCwzNyArNjQ4LDM5IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VUcnlTdGF0ZW1lbnQoCiAgICAgICAgIGZhaWxJZkZhbHNlKGZpbmFsbHlCbG9j
ayk7CiAgICAgfQogICAgIGZhaWxJZkZhbHNlKGNhdGNoQmxvY2sgfHwgZmluYWxseUJsb2NrKTsK
LSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVUcnlTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgdHJ5QmxvY2ssIGlkZW50LCBjYXRjaEJsb2NrLCBmaW5hbGx5QmxvY2ssIGZpcnN0
TGluZSwgbGFzdExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVRyeVN0YXRlbWVudChs
b2NhdGlvbiwgdHJ5QmxvY2ssIGlkZW50LCBjYXRjaEJsb2NrLCBmaW5hbGx5QmxvY2ssIGZpcnN0
TGluZSwgbGFzdExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZURlYnVnZ2VyU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFT
U0VSVChtYXRjaChERUJVR0dFUikpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tl
bkxvY2F0aW9uKCkpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQg
ZW5kTGluZSA9IHN0YXJ0TGluZTsKICAgICBuZXh0KCk7CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xP
TikpCiAgICAgICAgIHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIGZhaWxJZkZhbHNlKGF1
dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRGVidWdnZXIobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVEZWJ1Z2dlcihsb2NhdGlvbiwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VCbG9ja1N0YXRlbWVudChU
cmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goT1BFTkJSQUNFKSk7Cisg
ICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgaW50IHN0
YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogICAgIGlmIChtYXRjaChDTE9TRUJSQUNF
KSkgewogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2Nr
U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIDAsIHN0YXJ0LCBtX2xhc3RMaW5l
KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobG9jYXRpb24s
IDAsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKICAgICB9CiAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHN1
YnRyZWUgPSBwYXJzZVNvdXJjZUVsZW1lbnRzPERvbnRDaGVja0ZvclN0cmljdE1vZGU+KGNvbnRl
eHQpOwogICAgIGZhaWxJZkZhbHNlKHN1YnRyZWUpOwogICAgIG1hdGNoT3JGYWlsKENMT1NFQlJB
Q0UpOwogICAgIG5leHQoKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCbG9ja1N0YXRlbWVu
dChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBzdWJ0cmVlLCBzdGFydCwgbV9sYXN0TGluZSk7
CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobG9jYXRpb24sIHN1YnRy
ZWUsIHN0YXJ0LCBtX2xhc3RMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4KQEAgLTY4NSw5ICs3MDEsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudChUcmUKICAgICBjYXNl
IEZVTkNUSU9OOgogICAgICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0V2l0aE1lc3NhZ2UobV9zdGF0
ZW1lbnREZXB0aCA9PSAxLCAiRnVuY3Rpb25zIGNhbm5vdCBiZSBkZWNsYXJlZCBpbiBhIG5lc3Rl
ZCBibG9jayBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkRl
Y2xhcmF0aW9uKGNvbnRleHQpOwotICAgIGNhc2UgU0VNSUNPTE9OOgorICAgIGNhc2UgU0VNSUNP
TE9OOiB7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUVtcHR5U3Rh
dGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCkpOworICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVFbXB0eVN0YXRlbWVudChsb2NhdGlvbik7CisgICAgfQogICAgIGNhc2UgSUY6CiAg
ICAgICAgIHJldHVybiBwYXJzZUlmU3RhdGVtZW50KGNvbnRleHQpOwogICAgIGNhc2UgRE86CkBA
IC03MjMsNyArNzQxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0YXRlbWVudChUcmUKICAgICBjYXNlIFNUUklO
RzoKICAgICAgICAgZGlyZWN0aXZlID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIGlm
IChkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKQotICAgICAgICAgICAgKmRpcmVjdGl2ZUxpdGVyYWxM
ZW5ndGggPSBtX3Rva2VuLm1faW5mby5lbmRPZmZzZXQgLSBtX3Rva2VuLm1faW5mby5zdGFydE9m
ZnNldDsKKyAgICAgICAgICAgICpkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gbV90b2tlbi5tX2xv
Y2F0aW9uLmVuZE9mZnNldCAtIG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKICAgICAg
ICAgbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCA9IG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3Vu
dDsKICAgICBkZWZhdWx0OgogICAgICAgICBUcmVlU3RhdGVtZW50IGV4cHJTdGF0ZW1lbnQgPSBw
YXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoY29udGV4dCk7CkBAIC03NTYsMTIgKzc3NCwxMiBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keShU
cmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpCi0gICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBzdHJpY3RNb2RlKCkpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5j
dGlvbkJvZHkodG9rZW5Mb2NhdGlvbigpLCBzdHJpY3RNb2RlKCkpOwogICAgIERlcHRoTWFuYWdl
ciBzdGF0ZW1lbnREZXB0aCgmbV9zdGF0ZW1lbnREZXB0aCk7CiAgICAgbV9zdGF0ZW1lbnREZXB0
aCA9IDA7CiAgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZ1bmN0aW9uQm9keUJ1aWxkZXIgYm9k
eUJ1aWxkZXIoY29uc3RfY2FzdDxKU0dsb2JhbERhdGEqPihtX2dsb2JhbERhdGEpLCBtX2xleGVy
LmdldCgpKTsKICAgICBmYWlsSWZGYWxzZShwYXJzZVNvdXJjZUVsZW1lbnRzPENoZWNrRm9yU3Ry
aWN0TW9kZT4oYm9keUJ1aWxkZXIpKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlv
bkJvZHkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RyaWN0TW9kZSgpKTsKKyAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkodG9rZW5Mb2NhdGlvbigpLCBzdHJpY3RNb2Rl
KCkpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtNzg2LDIwICs4MDQs
MjEgQEAgdGVtcGxhdGUgPEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgYm9vbCBu
YW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgY2xhc3MKICAgICAKICAgICBvcGVuQnJhY2VQb3MgPSBt
X3Rva2VuLm1fZGF0YS5pbnRWYWx1ZTsKICAgICBib2R5U3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7
CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgCiAg
ICAgLy8gSWYgd2Uga25vdyBhYm91dCB0aGlzIGZ1bmN0aW9uIGFscmVhZHksIHdlIGNhbiB1c2Ug
dGhlIGNhY2hlZCBpbmZvIGFuZCBza2lwIHRoZSBwYXJzZXIgdG8gdGhlIGVuZCBvZiB0aGUgZnVu
Y3Rpb24uCiAgICAgaWYgKGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBjYWNoZWRJbmZv
ID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUgPyBmaW5kQ2FjaGVkRnVuY3Rpb25J
bmZvKG9wZW5CcmFjZVBvcykgOiAwKSB7CiAgICAgICAgIC8vIElmIHdlJ3JlIGluIGEgc3RyaWN0
IGNvbnRleHQsIHRoZSBjYWNoZWQgZnVuY3Rpb24gaW5mbyBtdXN0IHNheSBpdCB3YXMgc3RyaWN0
IHRvby4KICAgICAgICAgQVNTRVJUKCFzdHJpY3RNb2RlKCkgfHwgY2FjaGVkSW5mby0+c3RyaWN0
TW9kZSk7Ci0gICAgICAgIGJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlKTsKKyAgICAgICAgYm9k
eSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KGxvY2F0aW9uLCBjYWNoZWRJbmZvLT5zdHJp
Y3RNb2RlKTsKICAgICAgICAgCiAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnJlc3RvcmVGdW5jdGlv
bkluZm8oY2FjaGVkSW5mbyk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHBvcFNjb3BlKGZ1bmN0aW9u
U2NvcGUsIFRyZWVCdWlsZGVyOjpOZWVkc0ZyZWVWYXJpYWJsZUluZm8pKTsKICAgICAgICAgCiAg
ICAgICAgIGNsb3NlQnJhY2VQb3MgPSBjYWNoZWRJbmZvLT5jbG9zZUJyYWNlUG9zOwogICAgICAg
ICBtX3Rva2VuID0gY2FjaGVkSW5mby0+Y2xvc2VCcmFjZVRva2VuKCk7Ci0gICAgICAgIG1fbGV4
ZXItPnNldE9mZnNldChtX3Rva2VuLm1faW5mby5lbmRPZmZzZXQpOwotICAgICAgICBtX2xleGVy
LT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9pbmZvLmxpbmUpOworICAgICAgICBtX2xleGVyLT5z
ZXRPZmZzZXQobV90b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldCk7CisgICAgICAgIG1fbGV4ZXIt
PnNldExpbmVOdW1iZXIobV90b2tlbi5tX2xvY2F0aW9uLmxpbmUpOwogICAgICAgICAKICAgICAg
ICAgbmV4dCgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTgyMSw3ICs4NDAsNyBAQCB0ZW1w
bGF0ZSA8RnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBib29sIG5hbWVJc0luQ29u
dGFpbmluZ1Njb3BlLCBjbGFzcwogICAgIE93blB0cjxTb3VyY2VQcm92aWRlckNhY2hlSXRlbT4g
bmV3SW5mbzsKICAgICBpbnQgZnVuY3Rpb25MZW5ndGggPSBjbG9zZUJyYWNlUG9zIC0gb3BlbkJy
YWNlUG9zOwogICAgIGlmIChUcmVlQnVpbGRlcjo6Q2FuVXNlRnVuY3Rpb25DYWNoZSAmJiBtX2Z1
bmN0aW9uQ2FjaGUgJiYgZnVuY3Rpb25MZW5ndGggPiBtaW5pbXVtRnVuY3Rpb25MZW5ndGhUb0Nh
Y2hlKSB7Ci0gICAgICAgIG5ld0luZm8gPSBhZG9wdFB0cihuZXcgU291cmNlUHJvdmlkZXJDYWNo
ZUl0ZW0obV90b2tlbi5tX2luZm8ubGluZSwgY2xvc2VCcmFjZVBvcykpOworICAgICAgICBuZXdJ
bmZvID0gYWRvcHRQdHIobmV3IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKG1fdG9rZW4ubV9sb2Nh
dGlvbi5saW5lLCBjbG9zZUJyYWNlUG9zKSk7CiAgICAgICAgIGZ1bmN0aW9uU2NvcGUtPnNhdmVG
dW5jdGlvbkluZm8obmV3SW5mby5nZXQoKSk7CiAgICAgfQogICAgIApAQCAtODQxLDYgKzg2MCw3
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNs
YXJhdGlvbihUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goRlVOQ1RJ
T04pKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAg
ICBuZXh0KCk7CiAgICAgY29uc3QgSWRlbnRpZmllciogbmFtZSA9IDA7CiAgICAgVHJlZUZvcm1h
bFBhcmFtZXRlckxpc3QgcGFyYW1ldGVycyA9IDA7CkBAIC04NTEsNyArODcxLDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUZ1bmN0aW9uRGVjbGEKICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVu
Y3Rpb25OZWVkc05hbWUsIHRydWU+KGNvbnRleHQsIG5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9w
ZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSkpKTsKICAgICBmYWlsSWZG
YWxzZShuYW1lKTsKICAgICBmYWlsSWZGYWxzZUlmU3RyaWN0KGRlY2xhcmVWYXJpYWJsZShuYW1l
KSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQobV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBj
bG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKKyAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVudChsb2NhdGlvbiwgbmFtZSwgYm9keSwgcGFyYW1l
dGVycywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RM
aW5lKTsKIH0KIAogc3RydWN0IExhYmVsSW5mbyB7CkBAIC04NzUsMTAgKzg5NSwxMSBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlRXhwcmVzc2lvbk9yTAogICAgICAqIHNwZWNpYWwgY2FzZSB0aGF0IGxvb2tzIGZvciBh
IGNvbG9uIGFzIHRoZSBuZXh0IGNoYXJhY3RlciBpbiB0aGUgaW5wdXQuCiAgICAgICovCiAgICAg
VmVjdG9yPExhYmVsSW5mbz4gbGFiZWxzOwotICAgIAorICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbjsKICAgICBkbyB7CiAgICAgICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICAg
ICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgICAgICBsb2NhdGlvbiA9IHRva2Vu
TG9jYXRpb24oKTsKICAgICAgICAgaWYgKCFuZXh0VG9rZW5Jc0NvbG9uKCkpIHsKICAgICAgICAg
ICAgIC8vIElmIHdlIGhpdCB0aGlzIHBhdGggd2UncmUgbWFraW5nIGEgZXhwcmVzc2lvbiBzdGF0
ZW1lbnQsIHdoaWNoCiAgICAgICAgICAgICAvLyBieSBkZWZpbml0aW9uIGNhbid0IG1ha2UgdXNl
IG9mIGNvbnRpbnVlL2JyZWFrIHNvIHdlIGNhbiBqdXN0CkBAIC04ODYsNyArOTA3LDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUV4cHJlc3Npb25PckwKICAgICAgICAgICAgIFRyZWVFeHByZXNzaW9uIGV4cHJlc3Np
b24gPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShl
eHByZXNzaW9uKTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0g
ICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGV4cHJlc3Npb24sIHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAg
ICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KGxvY2F0aW9uLCBleHBy
ZXNzaW9uLCBzdGFydExpbmUsIG1fbGFzdExpbmUpOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0
IElkZW50aWZpZXIqIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIGludCBl
bmQgPSB0b2tlbkVuZCgpOwpAQCAtOTI1LDcgKzk0Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9u
T3JMCiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxhYmVscy5zaXplKCk7IGkrKykgewogICAgICAgICBjb25zdCBMYWJlbEluZm8mIGluZm8g
PSBsYWJlbHNbbGFiZWxzLnNpemUoKSAtIGkgLSAxXTsKLSAgICAgICAgc3RhdGVtZW50ID0gY29u
dGV4dC5jcmVhdGVMYWJlbFN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBpbmZv
Lm1faWRlbnQsIHN0YXRlbWVudCwgaW5mby5tX3N0YXJ0LCBpbmZvLm1fZW5kKTsKKyAgICAgICAg
c3RhdGVtZW50ID0gY29udGV4dC5jcmVhdGVMYWJlbFN0YXRlbWVudChsb2NhdGlvbiwgaW5mby5t
X2lkZW50LCBzdGF0ZW1lbnQsIGluZm8ubV9zdGFydCwgaW5mby5tX2VuZCk7CiAgICAgfQogICAg
IHJldHVybiBzdGF0ZW1lbnQ7CiB9CkBAIC05MzQsMTcgKzk1NSwxOCBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQoVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCiB7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgIEpT
VG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIFRyZWVFeHByZXNz
aW9uIGV4cHJlc3Npb24gPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFs
c2UoZXhwcmVzc2lvbik7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpKTsKLSAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGV4cHJlc3Npb24sIHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlRXhwclN0YXRlbWVudChsb2NhdGlvbiwgZXhwcmVzc2lvbiwgc3RhcnRMaW5lLCBt
X2xhc3RMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VJZlN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2go
SUYpKTsKLSAgICAKKyAgICBKU1Rva2VuTG9jYXRpb24gaWZMb2NhdGlvbih0b2tlbkxvY2F0aW9u
KCkpOwogICAgIGludCBzdGFydCA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICAKQEAg
LTk2MCwxMyArOTgyLDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJZlN0YXRlbWVudChUCiAgICAgZmFpbElmRmFs
c2UodHJ1ZUJsb2NrKTsKICAgICAKICAgICBpZiAoIW1hdGNoKEVMU0UpKQotICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBj
b25kaXRpb24sIHRydWVCbG9jaywgc3RhcnQsIGVuZCk7CisgICAgICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUlmU3RhdGVtZW50KGlmTG9jYXRpb24sIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBzdGFy
dCwgZW5kKTsKICAgICAKICAgICBWZWN0b3I8VHJlZUV4cHJlc3Npb24+IGV4cHJTdGFjazsKICAg
ICBWZWN0b3I8cGFpcjxpbnQsIGludD4gPiBwb3NTdGFjazsKKyAgICBWZWN0b3I8SlNUb2tlbkxv
Y2F0aW9uPiB0b2tlbkxvY2F0aW9uU3RhY2s7CiAgICAgVmVjdG9yPFRyZWVTdGF0ZW1lbnQ+IHN0
YXRlbWVudFN0YWNrOwogICAgIGJvb2wgdHJhaWxpbmdFbHNlID0gZmFsc2U7CiAgICAgZG8gewor
ICAgICAgICB0b2tlbkxvY2F0aW9uU3RhY2suYXBwZW5kKHRva2VuTG9jYXRpb24oKSk7CiAgICAg
ICAgIG5leHQoKTsKICAgICAgICAgaWYgKCFtYXRjaChJRikpIHsKICAgICAgICAgICAgIGNvbnN0
IElkZW50aWZpZXIqIHVudXNlZCA9IDA7CkBAIC05OTIsNyArMTAxNiw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJ
ZlN0YXRlbWVudChUCiAgICAgICAgIHBvc1N0YWNrLmFwcGVuZChtYWtlX3BhaXIoaW5uZXJTdGFy
dCwgaW5uZXJFbmQpKTsKICAgICAgICAgc3RhdGVtZW50U3RhY2suYXBwZW5kKGlubmVyVHJ1ZUJs
b2NrKTsKICAgICB9IHdoaWxlIChtYXRjaChFTFNFKSk7Ci0gICAgCisKICAgICBpZiAoIXRyYWls
aW5nRWxzZSkgewogICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb25kaXRpb24gPSBleHByU3RhY2su
bGFzdCgpOwogICAgICAgICBleHByU3RhY2sucmVtb3ZlTGFzdCgpOwpAQCAtMTAwMCw3ICsxMDI0
LDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUlmU3RhdGVtZW50KFQKICAgICAgICAgc3RhdGVtZW50U3RhY2sucmVt
b3ZlTGFzdCgpOwogICAgICAgICBwYWlyPGludCwgaW50PiBwb3MgPSBwb3NTdGFjay5sYXN0KCk7
CiAgICAgICAgIHBvc1N0YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgc3RhdGVtZW50U3RhY2su
YXBwZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHBvcy5maXJzdCwgcG9zLnNlY29uZCkpOworICAgICAg
ICBKU1Rva2VuTG9jYXRpb24gZWxzZUxvY2F0aW9uID0gdG9rZW5Mb2NhdGlvblN0YWNrLmxhc3Qo
KTsKKyAgICAgICAgdG9rZW5Mb2NhdGlvblN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgc3Rh
dGVtZW50U3RhY2suYXBwZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQoZWxzZUxvY2F0aW9u
LCBjb25kaXRpb24sIHRydWVCbG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vjb25kKSk7CiAgICAgfQog
ICAgIAogICAgIHdoaWxlICghZXhwclN0YWNrLmlzRW1wdHkoKSkgewpAQCAtMTAxMiwxNiArMTAz
OCwxOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVAogICAgICAgICBzdGF0ZW1lbnRTdGFjay5y
ZW1vdmVMYXN0KCk7CiAgICAgICAgIHBhaXI8aW50LCBpbnQ+IHBvcyA9IHBvc1N0YWNrLmxhc3Qo
KTsKICAgICAgICAgcG9zU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICBzdGF0ZW1lbnRTdGFj
ay5hcHBlbmQoY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBjb25kaXRpb24sIHRydWVCbG9jaywgZmFsc2VCbG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vj
b25kKSk7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBlbHNlTG9jYXRpb24gPSB0b2tlbkxvY2F0
aW9uU3RhY2subGFzdCgpOworICAgICAgICB0b2tlbkxvY2F0aW9uU3RhY2sucmVtb3ZlTGFzdCgp
OworICAgICAgICBzdGF0ZW1lbnRTdGFjay5hcHBlbmQoY29udGV4dC5jcmVhdGVJZlN0YXRlbWVu
dChlbHNlTG9jYXRpb24sIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBmYWxzZUJsb2NrLCBwb3MuZmly
c3QsIHBvcy5zZWNvbmQpKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
SWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxv
Y2ssIHN0YXRlbWVudFN0YWNrLmxhc3QoKSwgc3RhcnQsIGVuZCk7CisgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlSWZTdGF0ZW1lbnQoaWZMb2NhdGlvbiwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0
YXRlbWVudFN0YWNrLmxhc3QoKSwgc3RhcnQsIGVuZCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNvbnRleHQp
CiB7CiAgICAgZmFpbElmU3RhY2tPdmVyZmxvdygpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJzZUFz
c2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKG5vZGUpOwogICAg
IGlmICghbWF0Y2goQ09NTUEpKQpAQCAtMTAzMSw3ICsxMDYwLDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBy
ZXNzaW9uKFQKICAgICBtX25vbkxIU0NvdW50Kys7CiAgICAgVHJlZUV4cHJlc3Npb24gcmlnaHQg
PSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHJp
Z2h0KTsKLSAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6Q29tbWEgY29tbWFOb2RlID0gY29udGV4
dC5jcmVhdGVDb21tYUV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgbm9kZSwgcmlnaHQp
OworICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpDb21tYSBjb21tYU5vZGUgPSBjb250ZXh0LmNy
ZWF0ZUNvbW1hRXhwcihsb2NhdGlvbiwgbm9kZSwgcmlnaHQpOwogICAgIHdoaWxlIChtYXRjaChD
T01NQSkpIHsKICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAg
ICAgICAgIHJpZ2h0ID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTEw
NDYsNiArMTA3NSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVuCiB7CiAgICAgZmFpbElmU3Rh
Y2tPdmVyZmxvdygpOwogICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICBKU1Rva2Vu
TG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgaW5pdGlhbEFzc2ln
bm1lbnRDb3VudCA9IG1fYXNzaWdubWVudENvdW50OwogICAgIGludCBpbml0aWFsTm9uTEhTQ291
bnQgPSBtX25vbkxIU0NvdW50OwogICAgIFRyZWVFeHByZXNzaW9uIGxocyA9IHBhcnNlQ29uZGl0
aW9uYWxFeHByZXNzaW9uKGNvbnRleHQpOwpAQCAtMTA5OCw3ICsxMTI4LDcgQEAgZW5kOgogICAg
ICAgICByZXR1cm4gbGhzOwogICAgIAogICAgIHdoaWxlIChhc3NpZ25tZW50U3RhY2spCi0gICAg
ICAgIGxocyA9IGNvbnRleHQuY3JlYXRlQXNzaWdubWVudChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBhc3NpZ25tZW50U3RhY2ssIGxocywgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3Np
Z25tZW50Q291bnQsIGxhc3RUb2tlbkVuZCgpKTsKKyAgICAgICAgbGhzID0gY29udGV4dC5jcmVh
dGVBc3NpZ25tZW50KGxvY2F0aW9uLCBhc3NpZ25tZW50U3RhY2ssIGxocywgaW5pdGlhbEFzc2ln
bm1lbnRDb3VudCwgbV9hc3NpZ25tZW50Q291bnQsIGxhc3RUb2tlbkVuZCgpKTsKICAgICAKICAg
ICByZXR1cm4gbGhzOwogfQpAQCAtMTEwNiw2ICsxMTM2LDcgQEAgZW5kOgogdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKFRyZWVC
dWlsZGVyJiBjb250ZXh0KQogeworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxv
Y2F0aW9uKCkpOwogICAgIFRyZWVFeHByZXNzaW9uIGNvbmQgPSBwYXJzZUJpbmFyeUV4cHJlc3Np
b24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoY29uZCk7CiAgICAgaWYgKCFtYXRjaChRVUVT
VElPTikpCkBAIC0xMTE4LDcgKzExNDksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbmRpdGlvbmFsRQogICAg
IAogICAgIFRyZWVFeHByZXNzaW9uIHJocyA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29u
dGV4dCk7CiAgICAgZmFpbElmRmFsc2UocmhzKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVD
b25kaXRpb25hbEV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZCwgbGhzLCByaHMp
OworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbmRpdGlvbmFsRXhwcihsb2NhdGlvbiwgY29u
ZCwgbGhzLCByaHMpOwogfQogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChK
U1Rva2VuVHlwZSB0b2tlbikKQEAgLTExNDEsNiArMTE3Miw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQmluYXJ5
RXhwcmVzCiAgICAgaW50IG9wZXJhbmRTdGFja0RlcHRoID0gMDsKICAgICBpbnQgb3BlcmF0b3JT
dGFja0RlcHRoID0gMDsKICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5RXhwckNvbnRl
eHQgYmluYXJ5RXhwckNvbnRleHQoY29udGV4dCk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0
aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgaW50IGV4
cHJTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICAgICAgaW50IGluaXRpYWxBc3NpZ25tZW50cyA9
IG1fYXNzaWdubWVudENvdW50OwpAQCAtMTE2Miw3ICsxMTk0LDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VCaW5h
cnlFeHByZXMKICAgICAgICAgICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpCaW5hcnlPcGVyYW5k
IHJocyA9IGNvbnRleHQuZ2V0RnJvbU9wZXJhbmRTdGFjaygtMSk7CiAgICAgICAgICAgICB0eXBl
bmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3BlcmFuZCBsaHMgPSBjb250ZXh0LmdldEZyb21PcGVy
YW5kU3RhY2soLTIpOwogICAgICAgICAgICAgY29udGV4dC5zaHJpbmtPcGVyYW5kU3RhY2tCeShv
cGVyYW5kU3RhY2tEZXB0aCwgMik7Ci0gICAgICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9w
ZXJhdGlvbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBvcGVyYW5kU3RhY2tEZXB0aCwgb3Bl
cmF0b3JTdGFja0RlcHRoLCBsaHMsIHJocyk7CisgICAgICAgICAgICBjb250ZXh0LmFwcGVuZEJp
bmFyeU9wZXJhdGlvbihsb2NhdGlvbiwgb3BlcmFuZFN0YWNrRGVwdGgsIG9wZXJhdG9yU3RhY2tE
ZXB0aCwgbGhzLCByaHMpOwogICAgICAgICAgICAgY29udGV4dC5vcGVyYXRvclN0YWNrUG9wKG9w
ZXJhdG9yU3RhY2tEZXB0aCk7CiAgICAgICAgIH0KICAgICAgICAgY29udGV4dC5vcGVyYXRvclN0
YWNrQXBwZW5kKG9wZXJhdG9yU3RhY2tEZXB0aCwgb3BlcmF0b3JUb2tlbiwgcHJlY2VkZW5jZSk7
CkBAIC0xMTczLDcgKzEyMDUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJpbmFyeUV4cHJlcwogICAgICAgICB0
eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3BlcmFuZCByaHMgPSBjb250ZXh0LmdldEZyb21P
cGVyYW5kU3RhY2soLTEpOwogICAgICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3Bl
cmFuZCBsaHMgPSBjb250ZXh0LmdldEZyb21PcGVyYW5kU3RhY2soLTIpOwogICAgICAgICBjb250
ZXh0LnNocmlua09wZXJhbmRTdGFja0J5KG9wZXJhbmRTdGFja0RlcHRoLCAyKTsKLSAgICAgICAg
Y29udGV4dC5hcHBlbmRCaW5hcnlPcGVyYXRpb24obV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
b3BlcmFuZFN0YWNrRGVwdGgsIG9wZXJhdG9yU3RhY2tEZXB0aCwgbGhzLCByaHMpOworICAgICAg
ICBjb250ZXh0LmFwcGVuZEJpbmFyeU9wZXJhdGlvbihsb2NhdGlvbiwgb3BlcmFuZFN0YWNrRGVw
dGgsIG9wZXJhdG9yU3RhY2tEZXB0aCwgbGhzLCByaHMpOwogICAgICAgICBjb250ZXh0Lm9wZXJh
dG9yU3RhY2tQb3Aob3BlcmF0b3JTdGFja0RlcHRoKTsKICAgICB9CiAgICAgcmV0dXJuIGNvbnRl
eHQucG9wT3BlcmFuZFN0YWNrKG9wZXJhbmRTdGFja0RlcHRoKTsKQEAgLTEyMjIsMTEgKzEyNTQs
MTIgQEAgdGVtcGxhdGUgPGJvb2wgY29tcGxldGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJv
cGVydHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnMKICAgICAgICAgICAgIG51bWVyaWNQcm9wZXJ0
eU5hbWUgPSBtX3Rva2VuLm1fZGF0YS5kb3VibGVWYWx1ZTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgZmFpbCgpOworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2Nh
dGlvbigpKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5j
dGlvbkluZm88RnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgZmFsc2U+KGNvbnRleHQsIGFjY2Vzc29y
TmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5
U3RhcnRMaW5lKSkpOwogICAgICAgICBpZiAoc3RyaW5nUHJvcGVydHlOYW1lKQotICAgICAgICAg
ICAgcmV0dXJuIGNvbnRleHQudGVtcGxhdGUgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eTxj
b21wbGV0ZT4obV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgdHlwZSwgc3RyaW5nUHJvcGVydHlO
YW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlT
dGFydExpbmUsIG1fbGFzdExpbmUpOwotICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBj
cmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihjb25zdF9jYXN0PEpTR2xvYmFs
RGF0YSo+KG1fZ2xvYmFsRGF0YSksIG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHR5cGUsIG51
bWVyaWNQcm9wZXJ0eU5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VC
cmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgICAgICAgICByZXR1cm4g
Y29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihs
b2NhdGlvbiwgdHlwZSwgc3RyaW5nUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVu
QnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOworICAg
ICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5
PGNvbXBsZXRlPihjb25zdF9jYXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xvYmFsRGF0YSksIGxvY2F0
aW9uLCB0eXBlLCBudW1lcmljUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJh
Y2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOwogICAgIH0K
ICAgICBjYXNlIE5VTUJFUjogewogICAgICAgICBkb3VibGUgcHJvcGVydHlOYW1lID0gbV90b2tl
bi5tX2RhdGEuZG91YmxlVmFsdWU7CkBAIC0xMjQ5LDEyICsxMjgyLDEzIEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
T2JqZWN0TGl0ZXJhCiAgICAgdW5zaWduZWQgb2xkTGFzdExpbmVOdW1iZXIgPSBtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpOwogICAgIHVuc2lnbmVkIG9sZExpbmVOdW1iZXIgPSBtX2xleGVyLT5s
aW5lTnVtYmVyKCk7CiAgICAgY29uc3VtZU9yRmFpbFdpdGhGbGFncyhPUEVOQlJBQ0UsIFRyZWVC
dWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKLSAgICAKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9j
YXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKwogICAgIGludCBvbGROb25MSFNDb3VudCA9IG1fbm9u
TEhTQ291bnQ7CiAgICAgCiAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgIG5l
eHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0
TGl0ZXJhbChsb2NhdGlvbik7CiAgICAgfQogICAgIAogICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0
eSA9IHBhcnNlUHJvcGVydHk8ZmFsc2U+KGNvbnRleHQpOwpAQCAtMTI2NiwxMyArMTMwMCwxNCBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZU9iamVjdExpdGVyYQogICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVy
KG9sZExpbmVOdW1iZXIpOwogICAgICAgICByZXR1cm4gcGFyc2VTdHJpY3RPYmplY3RMaXRlcmFs
KGNvbnRleHQpOwogICAgIH0KLSAgICBUcmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNv
bnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3Bl
cnR5KTsKKyAgICBUcmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRl
UHJvcGVydHlMaXN0KGxvY2F0aW9uLCBwcm9wZXJ0eSk7CiAgICAgVHJlZVByb3BlcnR5TGlzdCB0
YWlsID0gcHJvcGVydHlMaXN0OwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAg
bmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAgICAgICAgIC8vIGFsbG93IGV4
dHJhIGNvbW1hLCBzZWUgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkz
OQogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpCiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgSlNUb2tlbkxvY2F0aW9uIHByb3BlcnR5TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsK
ICAgICAgICAgcHJvcGVydHkgPSBwYXJzZVByb3BlcnR5PGZhbHNlPihjb250ZXh0KTsKICAgICAg
ICAgZmFpbElmRmFsc2UocHJvcGVydHkpOwogICAgICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZh
bGlkYXRlZCAmJiBjb250ZXh0LmdldFR5cGUocHJvcGVydHkpICE9IFByb3BlcnR5Tm9kZTo6Q29u
c3RhbnQpIHsKQEAgLTEyODIsMTQgKzEzMTcsMTUgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VPYmplY3RMaXRlcmEK
ICAgICAgICAgICAgIG1fbGV4ZXItPnNldExpbmVOdW1iZXIob2xkTGluZU51bWJlcik7CiAgICAg
ICAgICAgICByZXR1cm4gcGFyc2VTdHJpY3RPYmplY3RMaXRlcmFsKGNvbnRleHQpOwogICAgICAg
ICB9Ci0gICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCBwcm9wZXJ0eSwgdGFpbCk7CisgICAgICAgIHRhaWwgPSBjb250ZXh0
LmNyZWF0ZVByb3BlcnR5TGlzdChwcm9wZXJ0eUxvY2F0aW9uLCBwcm9wZXJ0eSwgdGFpbCk7CiAg
ICAgfQotICAgIAorCisgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgY29uc3Vt
ZU9yRmFpbChDTE9TRUJSQUNFKTsKICAgICAKICAgICBtX25vbkxIU0NvdW50ID0gb2xkTm9uTEhT
Q291bnQ7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCBwcm9wZXJ0eUxpc3QpOworICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZU9iamVjdExpdGVyYWwobG9jYXRpb24sIHByb3BlcnR5TGlzdCk7CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0xMjk5LDkgKzEzMzUsMTAgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VTdHJpY3RPYmplY3QKICAgICAKICAgICBpbnQgb2xkTm9uTEhTQ291bnQgPSBtX25vbkxIU0Nv
dW50OwogCisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7ICAg
IAogICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkgewogICAgICAgICBuZXh0KCk7Ci0gICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobG9jYXRp
b24pOwogICAgIH0KICAgICAKICAgICBUcmVlUHJvcGVydHkgcHJvcGVydHkgPSBwYXJzZVByb3Bl
cnR5PHRydWU+KGNvbnRleHQpOwpAQCAtMTMxMywxMyArMTM1MCwxNCBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0
cmljdE9iamVjdAogICAgIGlmICghbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkKQogICAgICAgICBv
YmplY3RWYWxpZGF0b3IuYWRkKGNvbnRleHQuZ2V0TmFtZShwcm9wZXJ0eSkuaW1wbCgpLCBjb250
ZXh0LmdldFR5cGUocHJvcGVydHkpKTsKICAgICAKLSAgICBUcmVlUHJvcGVydHlMaXN0IHByb3Bl
cnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIHByb3BlcnR5KTsKKyAgICBUcmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNv
bnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KGxvY2F0aW9uLCBwcm9wZXJ0eSk7CiAgICAgVHJlZVBy
b3BlcnR5TGlzdCB0YWlsID0gcHJvcGVydHlMaXN0OwogICAgIHdoaWxlIChtYXRjaChDT01NQSkp
IHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICAvLyBhbGxvdyBleHRyYSBjb21tYSwgc2VlIGh0
dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MzkKICAgICAgICAgaWYgKG1h
dGNoKENMT1NFQlJBQ0UpKQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIEpTVG9rZW5Mb2Nh
dGlvbiBwcm9wZXJ0eUxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIHByb3BlcnR5
ID0gcGFyc2VQcm9wZXJ0eTx0cnVlPihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UocHJv
cGVydHkpOwogICAgICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCkgewpAQCAtMTMz
MSwxNCArMTM2OSwxNSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVN0cmljdE9iamVjdAogICAgICAgICAgICAgICAg
IHByb3BlcnR5RW50cnkuaXRlcmF0b3ItPnNlY29uZCB8PSBjb250ZXh0LmdldFR5cGUocHJvcGVy
dHkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHRhaWwgPSBjb250ZXh0LmNy
ZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBwcm9wZXJ0eSwgdGFp
bCk7CisgICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChwcm9wZXJ0eUxv
Y2F0aW9uLCBwcm9wZXJ0eSwgdGFpbCk7CiAgICAgfQotICAgIAorCisgICAgbG9jYXRpb24gPSB0
b2tlbkxvY2F0aW9uKCk7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFKTsKIAogICAgIG1f
bm9uTEhTQ291bnQgPSBvbGROb25MSFNDb3VudDsKIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHlMaXN0KTsK
KyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKGxvY2F0aW9uLCBwcm9wZXJ0
eUxpc3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAtMTM1NCw4ICsx
MzkzLDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJheUxpdGVyYWwKICAgICAgICAgZWxpc2lvbnMrKzsKICAg
ICB9CiAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0tFVCkpIHsKKyAgICAgICAgSlNUb2tlbkxvY2F0
aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6
OkRvbnRCdWlsZFN0cmluZ3MpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheSht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBlbGlzaW9ucyk7CisgICAgICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUFycmF5KGxvY2F0aW9uLCBlbGlzaW9ucyk7CiAgICAgfQogICAgIAogICAgIFRy
ZWVFeHByZXNzaW9uIGVsZW0gPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwpA
QCAtMTM3MywxOSArMTQxMywyMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFycmF5TGl0ZXJhbAogICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDS0VUKSkgeworICAgICAgICAg
ICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgICAg
ICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKLSAgICAgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUFycmF5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGVsaXNpb25z
LCBlbGVtZW50TGlzdCk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShs
b2NhdGlvbiwgZWxpc2lvbnMsIGVsZW1lbnRMaXN0KTsKICAgICAgICAgfQogICAgICAgICBUcmVl
RXhwcmVzc2lvbiBlbGVtID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAg
ICAgICAgZmFpbElmRmFsc2UoZWxlbSk7CiAgICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZUVs
ZW1lbnRMaXN0KHRhaWwsIGVsaXNpb25zLCBlbGVtKTsKICAgICB9Ci0gICAgCisKKyAgICBKU1Rv
a2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBjb25zdW1lT3JGYWls
KENMT1NFQlJBQ0tFVCk7CiAgICAgCiAgICAgbV9ub25MSFNDb3VudCA9IG9sZE5vbkxIU0NvdW50
OwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFycmF5KG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIGVsZW1lbnRMaXN0KTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShs
b2NhdGlvbiwgZWxlbWVudExpc3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgpAQCAtMTQwOSwzOCArMTQ1MSw0NSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlFeHByZQogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBjYXNlIFRISVNUT0tFTjogeworICAgICAgICBK
U1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgp
OwotICAgICAgICByZXR1cm4gY29udGV4dC50aGlzRXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQudGhpc0V4cHIobG9jYXRpb24pOwogICAgIH0K
ICAgICBjYXNlIElERU5UOiB7CiAgICAgICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAg
ICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAg
IG5leHQoKTsKICAgICAgICAgY3VycmVudFNjb3BlKCktPnVzZVZhcmlhYmxlKGlkZW50LCBtX2ds
b2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmlkZW50KTsKICAgICAgICAgbV9sYXN0
SWRlbnRpZmllciA9IGlkZW50OwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXNvbHZl
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGlkZW50LCBzdGFydCk7CisgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZVJlc29sdmUobG9jYXRpb24sIGlkZW50LCBzdGFydCk7CiAgICAgfQog
ICAgIGNhc2UgU1RSSU5HOiB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbV90
b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tl
bkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZVN0cmluZyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBpZGVudCk7CisgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZVN0cmluZyhsb2NhdGlvbiwgaWRlbnQpOwogICAgIH0KICAgICBj
YXNlIE5VTUJFUjogewogICAgICAgICBkb3VibGUgZCA9IG1fdG9rZW4ubV9kYXRhLmRvdWJsZVZh
bHVlOworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsK
ICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVOdW1iZXJFeHBy
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGQpOworICAgICAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVOdW1iZXJFeHByKGxvY2F0aW9uLCBkKTsKICAgICB9CiAgICAgY2FzZSBOVUxMVE9LRU46
IHsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAg
ICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTnVsbChtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTnVsbChs
b2NhdGlvbik7CiAgICAgfQogICAgIGNhc2UgVFJVRVRPS0VOOiB7CisgICAgICAgIEpTVG9rZW5M
b2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7Ci0gICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJvb2xlYW4obV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJvb2xlYW4obG9jYXRpb24s
IHRydWUpOwogICAgIH0KICAgICBjYXNlIEZBTFNFVE9LRU46IHsKKyAgICAgICAgSlNUb2tlbkxv
Y2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKLSAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQm9vbGVhbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCBmYWxzZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJvb2xlYW4obG9jYXRpb24s
IGZhbHNlKTsKICAgICB9CiAgICAgY2FzZSBESVZFUVVBTDoKICAgICBjYXNlIERJVklERTogewpA
QCAtMTQ1Myw4ICsxNTAyLDkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmUKICAgICAgICAgICAg
IGZhaWxJZkZhbHNlKG1fbGV4ZXItPnNjYW5SZWdFeHAocGF0dGVybiwgZmxhZ3MpKTsKICAgICAg
ICAgCiAgICAgICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICAgICAgSlNUb2tlbkxv
Y2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKLSAgICAg
ICAgVHJlZUV4cHJlc3Npb24gcmUgPSBjb250ZXh0LmNyZWF0ZVJlZ0V4cChtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCAqcGF0dGVybiwgKmZsYWdzLCBzdGFydCk7CisgICAgICAgIFRyZWVFeHBy
ZXNzaW9uIHJlID0gY29udGV4dC5jcmVhdGVSZWdFeHAobG9jYXRpb24sICpwYXR0ZXJuLCAqZmxh
Z3MsIHN0YXJ0KTsKICAgICAgICAgaWYgKCFyZSkgewogICAgICAgICAgICAgY29uc3QgY2hhciog
eWFyckVycm9yTXNnID0gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi0+dXN0cmluZygpKTsKICAg
ICAgICAgICAgIEFTU0VSVCghbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkpOwpAQCAtMTQ3MSw2ICsx
NTIxLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUFyZ3VtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcmd1bWVu
dHMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgY29uc3VtZU9yRmFpbFdpdGhGbGFncyhP
UEVOUEFSRU4sIFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKKyAgICBKU1Rva2VuTG9j
YXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpZiAobWF0Y2goQ0xPU0VQQVJF
TikpIHsKICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50cygpOwpAQCAtMTQ3OCwxMyArMTUyOSwx
NCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVBcmd1bWVudHMgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlQXJndW1lbnRzKFRyZQogICAgIFRyZWVFeHByZXNzaW9uIGZpcnN0QXJn
ID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShm
aXJzdEFyZyk7CiAgICAgCi0gICAgVHJlZUFyZ3VtZW50c0xpc3QgYXJnTGlzdCA9IGNvbnRleHQu
Y3JlYXRlQXJndW1lbnRzTGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBmaXJzdEFyZyk7
CisgICAgVHJlZUFyZ3VtZW50c0xpc3QgYXJnTGlzdCA9IGNvbnRleHQuY3JlYXRlQXJndW1lbnRz
TGlzdChsb2NhdGlvbiwgZmlyc3RBcmcpOwogICAgIFRyZWVBcmd1bWVudHNMaXN0IHRhaWwgPSBh
cmdMaXN0OwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKKyAgICAgICAgSlNUb2tlbkxvY2F0
aW9uIGFyZ3VtZW50TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dChUcmVl
QnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGFyZyA9
IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNl
KGFyZyk7Ci0gICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50c0xpc3QobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgdGFpbCwgYXJnKTsKKyAgICAgICAgdGFpbCA9IGNvbnRleHQu
Y3JlYXRlQXJndW1lbnRzTGlzdChhcmd1bWVudExvY2F0aW9uLCB0YWlsLCBhcmcpOwogICAgIH0K
ICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4pOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUFyZ3VtZW50cyhhcmdMaXN0KTsKQEAgLTE0OTcsNiArMTU0OSw3IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVt
YmVyRXhwcmVzCiAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgIGludCBleHByZXNz
aW9uU3RhcnQgPSBzdGFydDsKICAgICBpbnQgbmV3Q291bnQgPSAwOworICAgIEpTVG9rZW5Mb2Nh
dGlvbiBsb2NhdGlvbjsKICAgICB3aGlsZSAobWF0Y2goTkVXKSkgewogICAgICAgICBuZXh0KCk7
CiAgICAgICAgIG5ld0NvdW50Kys7CkBAIC0xNTA5LDE0ICsxNTYyLDE2IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
TWVtYmVyRXhwcmVzCiAgICAgICAgIGludCBvcGVuQnJhY2VQb3MgPSAwOwogICAgICAgICBpbnQg
Y2xvc2VCcmFjZVBvcyA9IDA7CiAgICAgICAgIGludCBib2R5U3RhcnRMaW5lID0gMDsKKyAgICAg
ICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAg
ZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIGZh
bHNlPihjb250ZXh0LCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3Nl
QnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7Ci0gICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0
ZUZ1bmN0aW9uRXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBuYW1lLCBib2R5LCBwYXJh
bWV0ZXJzLCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFz
dExpbmUpOworICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobG9jYXRp
b24sIG5hbWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywg
Ym9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CiAgICAgfSBlbHNlCiAgICAgICAgIGJhc2UgPSBw
YXJzZVByaW1hcnlFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIAogICAgIGZhaWxJZkZhbHNlKGJh
c2UpOwogICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGxvY2F0aW9uID0gdG9rZW5Mb2NhdGlv
bigpOwogICAgICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAgICAgICAgIGNhc2UgT1BF
TkJSQUNLRVQ6IHsKICAgICAgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwpA
QCAtMTUyNiw3ICsxNTgxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAg
IGludCBpbml0aWFsQXNzaWdubWVudHMgPSBtX2Fzc2lnbm1lbnRDb3VudDsKICAgICAgICAgICAg
IFRyZWVFeHByZXNzaW9uIHByb3BlcnR5ID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAg
ICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHkpOwotICAgICAgICAgICAgYmFzZSA9IGNvbnRl
eHQuY3JlYXRlQnJhY2tldEFjY2VzcyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBw
cm9wZXJ0eSwgaW5pdGlhbEFzc2lnbm1lbnRzICE9IG1fYXNzaWdubWVudENvdW50LCBleHByZXNz
aW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kKCkpOworICAgICAgICAgICAgYmFzZSA9
IGNvbnRleHQuY3JlYXRlQnJhY2tldEFjY2Vzcyhsb2NhdGlvbiwgYmFzZSwgcHJvcGVydHksIGlu
aXRpYWxBc3NpZ25tZW50cyAhPSBtX2Fzc2lnbm1lbnRDb3VudCwgZXhwcmVzc2lvblN0YXJ0LCBl
eHByZXNzaW9uRW5kLCB0b2tlbkVuZCgpKTsKICAgICAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xP
U0VCUkFDS0VUKTsKICAgICAgICAgICAgIG1fbm9uTEhTQ291bnQgPSBub25MSFNDb3VudDsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTUzOSwxMiArMTU5NCwxMiBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJl
ckV4cHJlcwogICAgICAgICAgICAgICAgIGludCBleHByRW5kID0gbGFzdFRva2VuRW5kKCk7CiAg
ICAgICAgICAgICAgICAgVHJlZUFyZ3VtZW50cyBhcmd1bWVudHMgPSBwYXJzZUFyZ3VtZW50cyhj
b250ZXh0KTsKICAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShhcmd1bWVudHMpOwotICAgICAg
ICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgYmFzZSwgYXJndW1lbnRzLCBzdGFydCwgZXhwckVuZCwgbGFzdFRva2VuRW5kKCkp
OyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3RXhw
cihsb2NhdGlvbiwgYmFzZSwgYXJndW1lbnRzLCBzdGFydCwgZXhwckVuZCwgbGFzdFRva2VuRW5k
KCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpbnQgZXhwcmVzc2lv
bkVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAgICAgICAgIFRyZWVBcmd1bWVudHMgYXJn
dW1lbnRzID0gcGFyc2VBcmd1bWVudHMoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgZmFpbElm
RmFsc2UoYXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5tYWtlRnVu
Y3Rpb25DYWxsTm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBhcmd1bWVudHMs
IGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgbGFzdFRva2VuRW5kKCkpOworICAgICAg
ICAgICAgICAgIGJhc2UgPSBjb250ZXh0Lm1ha2VGdW5jdGlvbkNhbGxOb2RlKGxvY2F0aW9uLCBi
YXNlLCBhcmd1bWVudHMsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgbGFzdFRva2Vu
RW5kKCkpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9ub25MSFNDb3VudCA9IG5vbkxI
U0NvdW50OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTU0LDcgKzE2MDksNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgaW50IGV4cHJlc3Npb25FbmQgPSBsYXN0VG9r
ZW5FbmQoKTsKICAgICAgICAgICAgIG5leHRFeHBlY3RJZGVudGlmaWVyKExleGVyRmxhZ3NJZ25v
cmVSZXNlcnZlZFdvcmRzIHwgVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZEtleXdvcmRzKTsKICAgICAg
ICAgICAgIG1hdGNoT3JGYWlsKElERU5UKTsKLSAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNy
ZWF0ZURvdEFjY2VzcyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBtX3Rva2VuLm1f
ZGF0YS5pZGVudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZCgpKTsK
KyAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZURvdEFjY2Vzcyhsb2NhdGlvbiwgYmFz
ZSwgbV90b2tlbi5tX2RhdGEuaWRlbnQsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwg
dG9rZW5FbmQoKSk7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtMTU2NCw3ICsxNjE5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAg
ICB9CiBlbmRNZW1iZXJFeHByZXNzaW9uOgogICAgIHdoaWxlIChuZXdDb3VudC0tKQotICAgICAg
ICBiYXNlID0gY29udGV4dC5jcmVhdGVOZXdFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IGJhc2UsIHN0YXJ0LCBsYXN0VG9rZW5FbmQoKSk7CisgICAgICAgIGJhc2UgPSBjb250ZXh0LmNy
ZWF0ZU5ld0V4cHIobG9jYXRpb24sIGJhc2UsIHN0YXJ0LCBsYXN0VG9rZW5FbmQoKSk7CiAgICAg
cmV0dXJuIGJhc2U7CiB9CiAKQEAgLTE2MDIsNiArMTY1Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlF
eHByZXNzCiAgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgIH0KICAg
ICBpbnQgc3ViRXhwclN0YXJ0ID0gdG9rZW5TdGFydCgpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBs
b2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJz
ZU1lbWJlckV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZXhwcik7CiAgICAg
Ym9vbCBpc0V2YWxPckFyZ3VtZW50cyA9IGZhbHNlOwpAQCAtMTYxNCw3ICsxNjcwLDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICBjYXNlIFBMVVNQTFVTOgogICAgICAgICBtX25vblRy
aXZpYWxFeHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgbV9ub25MSFNDb3VudCsrOwotICAgICAg
ICBleHByID0gY29udGV4dC5tYWtlUG9zdGZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KSwgZXhwciwgT3BQbHVzUGx1cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5F
bmQoKSk7CisgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZShsb2NhdGlvbiwg
ZXhwciwgT3BQbHVzUGx1cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQo
KSk7CiAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0
cmljdFdpdGhOYW1lQW5kTWVzc2FnZShpc0V2YWxPckFyZ3VtZW50cywgIiciLCBtX2xhc3RJZGVu
dGlmaWVyLT5pbXBsKCksICInIGNhbm5vdCBiZSBtb2RpZmllZCBpbiBzdHJpY3QgbW9kZSIpOwog
ICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3QocmVxdWlyZXNMRXhwcik7CkBAIC0xNjIzLDcgKzE2
NzksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgIGNhc2UgTUlOVVNNSU5VUzoKICAg
ICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgICAgIG1fbm9uTEhTQ291
bnQrKzsKLSAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGV4cHIsIE9wTWludXNNaW51cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9r
ZW5FbmQoKSwgdG9rZW5FbmQoKSk7CisgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQb3N0Zml4
Tm9kZShsb2NhdGlvbiwgZXhwciwgT3BNaW51c01pbnVzLCBzdWJFeHByU3RhcnQsIGxhc3RUb2tl
bkVuZCgpLCB0b2tlbkVuZCgpKTsKICAgICAgICAgbV9hc3NpZ25tZW50Q291bnQrKzsKICAgICAg
ICAgZmFpbElmVHJ1ZUlmU3RyaWN0V2l0aE5hbWVBbmRNZXNzYWdlKGlzRXZhbE9yQXJndW1lbnRz
LCAiJyIsIG1fbGFzdElkZW50aWZpZXItPmltcGwoKSwgIicgY2Fubm90IGJlIG1vZGlmaWVkIGlu
IHN0cmljdCBtb2RlIik7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChyZXF1aXJlc0xFeHBy
KTsKQEAgLTE2MzcsNDAgKzE2OTMsNDIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICAK
ICAgICBpZiAoIVRyZWVCdWlsZGVyOjpDcmVhdGVzQVNUICYmIChtX3N5bnRheEFscmVhZHlWYWxp
ZGF0ZWQgfHwgIXN0cmljdE1vZGUoKSkpCiAgICAgICAgIHJldHVybiBleHByOwotICAgIAorCisg
ICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CisgICAgbG9jYXRpb24ubGluZSA9IG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCk7CiAgICAgd2hpbGUgKHRva2VuU3RhY2tEZXB0aCkgewogICAg
ICAgICBzd2l0Y2ggKGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFR5cGUodG9rZW5TdGFja0Rl
cHRoKSkgewogICAgICAgICBjYXNlIEVYQ0xBTUFUSU9OOgotICAgICAgICAgICAgZXhwciA9IGNv
bnRleHQuY3JlYXRlTG9naWNhbE5vdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByKTsK
KyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0ZUxvZ2ljYWxOb3QobG9jYXRpb24sIGV4
cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVElMREU6Ci0gICAgICAgICAg
ICBleHByID0gY29udGV4dC5tYWtlQml0d2lzZU5vdE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgZXhwcik7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlQml0d2lzZU5vdE5v
ZGUobG9jYXRpb24sIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTUlO
VVM6Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlTmVnYXRlTm9kZShtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCBleHByKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VO
ZWdhdGVOb2RlKGxvY2F0aW9uLCBleHByKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFBMVVM6Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVVbmFyeVBsdXMobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7CisgICAgICAgICAgICBleHByID0gY29udGV4
dC5jcmVhdGVVbmFyeVBsdXMobG9jYXRpb24sIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUExVU1BMVVM6CiAgICAgICAgIGNhc2UgQVVUT1BMVVNQTFVTOgotICAgICAg
ICAgICAgZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgZXhwciwgT3BQbHVzUGx1cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQo
dG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKKyAgICAgICAgICAgIGV4
cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcFBsdXNQbHVzLCBj
b250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBzdWJFeHBy
U3RhcnQgKyAxLCBlbmQpOwogICAgICAgICAgICAgbV9hc3NpZ25tZW50Q291bnQrKzsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1JTlVTTUlOVVM6CiAgICAgICAgIGNhc2UgQVVU
T01JTlVTTUlOVVM6Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlUHJlZml4Tm9kZSht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBPcE1pbnVzTWludXMsIGNvbnRleHQudW5h
cnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEs
IGVuZCk7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlUHJlZml4Tm9kZShsb2NhdGlv
biwgZXhwciwgT3BNaW51c01pbnVzLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0
b2tlblN0YWNrRGVwdGgpLCBzdWJFeHByU3RhcnQgKyAxLCBlbmQpOwogICAgICAgICAgICAgbV9h
c3NpZ25tZW50Q291bnQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRZUEVP
RjoKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VUeXBlT2ZOb2RlKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGV4cHIpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVR5
cGVPZk5vZGUobG9jYXRpb24sIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgVk9JRFRPS0VOOgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlVm9pZChtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0
LmNyZWF0ZVZvaWQobG9jYXRpb24sIGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgREVMRVRFVE9LRU46CiAgICAgICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3RXaXRoTmFt
ZUFuZE1lc3NhZ2UoY29udGV4dC5pc1Jlc29sdmUoZXhwciksICJDYW5ub3QgZGVsZXRlIHVucXVh
bGlmaWVkIHByb3BlcnR5IiwgbV9sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAiaW4gc3RyaWN0IG1v
ZGUiKTsKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VEZWxldGVOb2RlKG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0
KHRva2VuU3RhY2tEZXB0aCksIGVuZCwgZW5kKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0
Lm1ha2VEZWxldGVOb2RlKGxvY2F0aW9uLCBleHByLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xh
c3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBlbmQsIGVuZCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIC8vIElmIHdlIGdldCBoZXJlIHNvbWV0aGlu
ZyBoYXMgZ29uZSBob3JyaWJseSBob3JyaWJseSB3cm9uZwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKaW5kZXggYzJhMTFkNjY1Yjc5MTNlYzVmNjQzMWMwNjM2YzFhOGE2ZGQ2YTAx
Ni4uNzlhOTViNjk2M2I0MTI5MGJjYTNiNGZhOWM4NTgwZmNiNjIzNTU3NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC01MDIsMTggKzUwMiwxOCBAQCBwcml2YXRlOgog
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIG5leHQodW5zaWduZWQgbGV4ZXJGbGFncyA9IDApCiAg
ICAgewotICAgICAgICBtX2xhc3RMaW5lID0gbV90b2tlbi5tX2luZm8ubGluZTsKLSAgICAgICAg
bV9sYXN0VG9rZW5FbmQgPSBtX3Rva2VuLm1faW5mby5lbmRPZmZzZXQ7CisgICAgICAgIG1fbGFz
dExpbmUgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZTsKKyAgICAgICAgbV9sYXN0VG9rZW5FbmQg
PSBtX3Rva2VuLm1fbG9jYXRpb24uZW5kT2Zmc2V0OwogICAgICAgICBtX2xleGVyLT5zZXRMYXN0
TGluZU51bWJlcihtX2xhc3RMaW5lKTsKLSAgICAgICAgbV90b2tlbi5tX3R5cGUgPSBtX2xleGVy
LT5sZXgoJm1fdG9rZW4ubV9kYXRhLCAmbV90b2tlbi5tX2luZm8sIGxleGVyRmxhZ3MsIHN0cmlj
dE1vZGUoKSk7CisgICAgICAgIG1fdG9rZW4ubV90eXBlID0gbV9sZXhlci0+bGV4KCZtX3Rva2Vu
Lm1fZGF0YSwgJm1fdG9rZW4ubV9sb2NhdGlvbiwgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSgpKTsK
ICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbmV4dEV4cGVjdElkZW50aWZpZXIodW5z
aWduZWQgbGV4ZXJGbGFncyA9IDApCiAgICAgewotICAgICAgICBtX2xhc3RMaW5lID0gbV90b2tl
bi5tX2luZm8ubGluZTsKLSAgICAgICAgbV9sYXN0VG9rZW5FbmQgPSBtX3Rva2VuLm1faW5mby5l
bmRPZmZzZXQ7CisgICAgICAgIG1fbGFzdExpbmUgPSBtX3Rva2VuLm1fbG9jYXRpb24ubGluZTsK
KyAgICAgICAgbV9sYXN0VG9rZW5FbmQgPSBtX3Rva2VuLm1fbG9jYXRpb24uZW5kT2Zmc2V0Owog
ICAgICAgICBtX2xleGVyLT5zZXRMYXN0TGluZU51bWJlcihtX2xhc3RMaW5lKTsKLSAgICAgICAg
bV90b2tlbi5tX3R5cGUgPSBtX2xleGVyLT5sZXhFeHBlY3RJZGVudGlmaWVyKCZtX3Rva2VuLm1f
ZGF0YSwgJm1fdG9rZW4ubV9pbmZvLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKCkpOworICAgICAg
ICBtX3Rva2VuLm1fdHlwZSA9IG1fbGV4ZXItPmxleEV4cGVjdElkZW50aWZpZXIoJm1fdG9rZW4u
bV9kYXRhLCAmbV90b2tlbi5tX2xvY2F0aW9uLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKCkpOwog
ICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBuZXh0VG9rZW5Jc0NvbG9uKCkKQEAgLTU0
MSwyMCArNTQxLDI1IEBAIHByaXZhdGU6CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSBpbnQgdG9r
ZW5TdGFydCgpCiAgICAgewotICAgICAgICByZXR1cm4gbV90b2tlbi5tX2luZm8uc3RhcnRPZmZz
ZXQ7CisgICAgICAgIHJldHVybiBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CiAgICAg
fQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgaW50IHRva2VuTGluZSgpCiAgICAgewotICAgICAg
ICByZXR1cm4gbV90b2tlbi5tX2luZm8ubGluZTsKKyAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9s
b2NhdGlvbi5saW5lOwogICAgIH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIGludCB0b2tlbkVu
ZCgpCiAgICAgewotICAgICAgICByZXR1cm4gbV90b2tlbi5tX2luZm8uZW5kT2Zmc2V0OworICAg
ICAgICByZXR1cm4gbV90b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldDsKICAgICB9CiAgICAgCi0g
ICAgY29uc3QgY2hhciogZ2V0VG9rZW5OYW1lKEpTVG9rZW5UeXBlIHRvaykgCisgICAgQUxXQVlT
X0lOTElORSBjb25zdCBKU1Rva2VuTG9jYXRpb24mIHRva2VuTG9jYXRpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fdG9rZW4ubV9sb2NhdGlvbjsKKyAgICB9CisKKyAgICBjb25zdCBjaGFy
KiBnZXRUb2tlbk5hbWUoSlNUb2tlblR5cGUgdG9rKQogICAgIHsKICAgICAgICAgc3dpdGNoICh0
b2spIHsKICAgICAgICAgY2FzZSBOVUxMVE9LRU46IApAQCAtMTAwMyw4ICsxMDA4LDExIEBAIFBh
c3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqCiAKICAgICBSZWZQdHI8UGFyc2VkTm9kZT4gcmVzdWx0Owog
ICAgIGlmIChtX3NvdXJjZUVsZW1lbnRzKSB7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbjsKKyAgICAgICAgbG9jYXRpb24ubGluZSA9IG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCk7
CisgICAgICAgIGxvY2F0aW9uLmNvbHVtbiA9IG1fbGV4ZXItPmN1cnJlbnRDb2x1bW5OdW1iZXIo
KTsKICAgICAgICAgcmVzdWx0ID0gUGFyc2VkTm9kZTo6Y3JlYXRlKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LT5nbG9iYWxEYXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3Nv
dXJjZUVsZW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92YXJE
ZWNsYXJhdGlvbnMgPyAmbV92YXJEZWNsYXJhdGlvbnMtPmRhdGEgOiAwLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9mdW5jRGVjbGFyYXRpb25zID8gJm1fZnVuY0RlY2xh
cmF0aW9ucy0+ZGF0YSA6IDAsCkBAIC0xMDEyLDcgKzEwMjAsNyBAQCBQYXNzUmVmUHRyPFBhcnNl
ZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iagogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm1fc291cmNlLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mZWF0dXJlcywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbnVtQ29uc3RhbnRzKTsKLSAgICAgICAgcmVz
dWx0LT5zZXRMb2MobV9zb3VyY2UtPmZpcnN0TGluZSgpLCBtX2xhc3RMaW5lKTsKKyAgICAgICAg
cmVzdWx0LT5zZXRMb2MobV9zb3VyY2UtPmZpcnN0TGluZSgpLCBtX2xhc3RMaW5lLCBtX2xleGVy
LT5jdXJyZW50Q29sdW1uTnVtYmVyKCkpOwogICAgIH0gZWxzZSBpZiAobGV4aWNhbEdsb2JhbE9i
amVjdCkgewogICAgICAgICAvLyBXZSBjYW4gbmV2ZXIgc2VlIGEgc3ludGF4IGVycm9yIHdoZW4g
cmVwYXJzaW5nIGEgZnVuY3Rpb24sIHNpbmNlIHdlIHNob3VsZCBoYXZlCiAgICAgICAgIC8vIHJl
cG9ydGVkIHRoZSBlcnJvciB3aGVuIHBhcnNpbmcgdGhlIGNvbnRhaW5pbmcgcHJvZ3JhbSBvciBl
dmFsIGNvZGUuIFNvIGlmIHdlJ3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlclRva2Vucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXJUb2tlbnMuaAppbmRleCBhMWVhNzUxYWMyMGE3OTJmZjRjNWU2MjFhMDFiYzc3NDllYTNhOWJm
Li42ZTZjZWMxMTRkNDQ1ZTM3ODY1ZmVjOGMzOTFkZjViNTFkZWM1MTdhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKQEAgLTE0MCwxNyArMTQwLDI1IEBA
IHVuaW9uIEpTVG9rZW5EYXRhIHsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudDsKIH07CiAK
LXN0cnVjdCBKU1Rva2VuSW5mbyB7Ci0gICAgSlNUb2tlbkluZm8oKSA6IGxpbmUoMCkgeyB9Citz
dHJ1Y3QgSlNUb2tlbkxvY2F0aW9uIHsKKyAgICBKU1Rva2VuTG9jYXRpb24oKSA6IGxpbmUoMCks
IGNvbHVtbigwKSB7IH0KKyAgICBKU1Rva2VuTG9jYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbikKKyAgICB7CisgICAgICAgIGxpbmUgPSBsb2NhdGlvbi5saW5lOworICAgICAg
ICBzdGFydE9mZnNldCA9IGxvY2F0aW9uLnN0YXJ0T2Zmc2V0OworICAgICAgICBlbmRPZmZzZXQg
PSBsb2NhdGlvbi5lbmRPZmZzZXQ7CisgICAgICAgIGNvbHVtbiA9IGxvY2F0aW9uLmNvbHVtbjsK
KyAgICB9CiAgICAgaW50IGxpbmU7CiAgICAgaW50IHN0YXJ0T2Zmc2V0OwogICAgIGludCBlbmRP
ZmZzZXQ7CisgICAgaW50IGNvbHVtbjsKIH07CiAKIHN0cnVjdCBKU1Rva2VuIHsKICAgICBKU1Rv
a2VuVHlwZSBtX3R5cGU7CiAgICAgSlNUb2tlbkRhdGEgbV9kYXRhOwotICAgIEpTVG9rZW5JbmZv
IG1faW5mbzsKKyAgICBKU1Rva2VuTG9jYXRpb24gbV9sb2NhdGlvbjsKIH07CiAKIGVudW0gSlNQ
YXJzZXJTdHJpY3RuZXNzIHsgSlNQYXJzZU5vcm1hbCwgSlNQYXJzZVN0cmljdCB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRl
bS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRlckNhY2hlSXRl
bS5oCmluZGV4IDM2NjIzNjdhMDFiNzA5ZDljZDRlYzNkNDdkMmYzZGI5M2U1ZTI0YTcuLjhiMzYy
MDVkZDM1YjdiYWE3ZDg3ODQxNTZkNzQ0YjZkN2RiZWEyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgKQEAgLTUz
LDkgKzUzLDkgQEAgcHVibGljOgogICAgICAgICBKU1Rva2VuIHRva2VuOwogICAgICAgICB0b2tl
bi5tX3R5cGUgPSBDTE9TRUJSQUNFOwogICAgICAgICB0b2tlbi5tX2RhdGEuaW50VmFsdWUgPSBj
bG9zZUJyYWNlUG9zOwotICAgICAgICB0b2tlbi5tX2luZm8uc3RhcnRPZmZzZXQgPSBjbG9zZUJy
YWNlUG9zOwotICAgICAgICB0b2tlbi5tX2luZm8uZW5kT2Zmc2V0ID0gY2xvc2VCcmFjZVBvcyAr
IDE7Ci0gICAgICAgIHRva2VuLm1faW5mby5saW5lID0gY2xvc2VCcmFjZUxpbmU7IAorICAgICAg
ICB0b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0ID0gY2xvc2VCcmFjZVBvczsKKyAgICAgICAg
dG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQgPSBjbG9zZUJyYWNlUG9zICsgMTsKKyAgICAgICAg
dG9rZW4ubV9sb2NhdGlvbi5saW5lID0gY2xvc2VCcmFjZUxpbmU7IAogICAgICAgICByZXR1cm4g
dG9rZW47CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRh
eENoZWNrZXIuaAppbmRleCBmZTNjZTcxNGYzMGU0OTAwY2E1NGI1NjU1ZmQ4YTExOTA2YzdmZGRl
Li43ZDQ0ZWYzYzY2ZWNjZThlYzY4YmFmZWE5M2RiYzlhYWM0MGI5NDEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaApAQCAtMTE5LDQyICsxMTksNDIg
QEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBEb250QnVpbGRTdHJpbmdzID0g
TGV4ZXJGbGFnc0RvbnRCdWlsZFN0cmluZ3M7CiAKICAgICBpbnQgY3JlYXRlU291cmNlRWxlbWVu
dHMoKSB7IHJldHVybiAxOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZUZ1bmN0aW9uQ2FsbE5v
ZGUoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQ2FsbEV4cHI7IH0KKyAg
ICBFeHByZXNzaW9uVHlwZSBtYWtlRnVuY3Rpb25DYWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQ2FsbEV4cHI7IH0KICAgICB2
b2lkIGFwcGVuZFRvQ29tbWEoRXhwcmVzc2lvblR5cGUmIGJhc2UsIEV4cHJlc3Npb25UeXBlIHJp
Z2h0KSB7IGJhc2UgPSByaWdodDsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbW1hRXhw
cihpbnQsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSByaWdodCkgeyByZXR1cm4gcmln
aHQ7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlQXNzaWduTm9kZShpbnQsIEV4cHJlc3Npb25U
eXBlLCBPcGVyYXRvciwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGJvb2wsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZVByZWZp
eE5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIFByZUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlUG9zdGZpeE5vZGUoaW50LCBF
eHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIFBvc3RFeHBy
OyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZVR5cGVPZk5vZGUoaW50LCBFeHByZXNzaW9uVHlw
ZSkgeyByZXR1cm4gVHlwZW9mRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VEZWxldGVO
b2RlKGludCwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERlbGV0ZUV4
cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlTmVnYXRlTm9kZShpbnQsIEV4cHJlc3Npb25U
eXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlQml0d2lz
ZU5vdE5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlTG9naWNhbE5vdChpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJl
dHVybiBVbmFyeUV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVVbmFyeVBsdXMoaW50
LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlVm9pZChpbnQsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0K
LSAgICBFeHByZXNzaW9uVHlwZSB0aGlzRXhwcihpbnQpIHsgcmV0dXJuIFRoaXNFeHByOyB9Ci0g
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlUmVzb2x2ZShpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBp
bnQpIHsgcmV0dXJuIFJlc29sdmVFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlT2Jq
ZWN0TGl0ZXJhbChpbnQpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9Ci0gICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQsIGludCkgeyByZXR1cm4gT2JqZWN0TGl0
ZXJhbEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJheShpbnQsIGludCkgeyBy
ZXR1cm4gQXJyYXlMaXRlcmFsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5
KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KLSAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVOdW1iZXJFeHByKGludCwgZG91YmxlKSB7IHJldHVybiBOdW1iZXJFeHBy
OyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlU3RyaW5nKGludCwgY29uc3QgSWRlbnRpZmll
ciopIHsgcmV0dXJuIFN0cmluZ0V4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29s
ZWFuKGludCwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVOdWxsKGludCkgeyByZXR1cm4gTnVsbEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVCcmFja2V0QWNjZXNzKGludCwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBi
b29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBCcmFja2V0RXhwcjsgfQotICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZURvdEFjY2VzcyhpbnQsIEV4cHJlc3Npb25UeXBlLCBjb25zdCBJZGVudGlm
aWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRG90RXhwcjsgfQotICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZVJlZ0V4cChpbnQsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElk
ZW50aWZpZXImLCBpbnQpIHsgcmV0dXJuIFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4udXN0cmlu
ZygpKSA/IDAgOiBSZWdFeHBFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3RXhw
cihpbnQsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4
cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGludCwgRXhwcmVzc2lvblR5
cGUsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlQ29uZGl0aW9uYWxFeHByKGludCwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBF
eHByZXNzaW9uVHlwZSkgeyByZXR1cm4gQ29uZGl0aW9uYWxFeHByOyB9Ci0gICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlQXNzaWduUmVzb2x2ZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNz
aW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQXNzaWdubWVudEV4cHI7IH0KLSAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoaW50LCBjb25zdCBJZGVudGlmaWVyKiwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRnVuY3Rpb25FeHByOyB9Ci0g
ICAgaW50IGNyZWF0ZUZ1bmN0aW9uQm9keShpbnQsIGJvb2wpIHsgcmV0dXJuIDE7IH0KKyAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVDb21tYUV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvblR5cGUsIEV4cHJlc3Npb25UeXBlIHJpZ2h0KSB7IHJldHVybiByaWdodDsgfQorICAg
IEV4cHJlc3Npb25UeXBlIG1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGJvb2wsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUg
bWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIE9w
ZXJhdG9yLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQcmVFeHByOyB9CisgICAgRXhwcmVzc2lv
blR5cGUgbWFrZVBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25U
eXBlLCBPcGVyYXRvciwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gUG9zdEV4cHI7IH0KKyAgICBF
eHByZXNzaW9uVHlwZSBtYWtlVHlwZU9mTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uVHlwZSkgeyByZXR1cm4gVHlwZW9mRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1h
a2VEZWxldGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQs
IGludCwgaW50KSB7IHJldHVybiBEZWxldGVFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFr
ZU5lZ2F0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0
dXJuIFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VCaXR3aXNlTm90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHBy
OyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTG9naWNhbE5vdChjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlVW5hcnlQbHVzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVW
b2lkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFy
eUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSB0aGlzRXhwcihjb25zdCBKU1Rva2VuTG9jYXRp
b24mKSB7IHJldHVybiBUaGlzRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlc29s
dmUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1
cm4gUmVzb2x2ZUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVPYmplY3RMaXRlcmFs
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9Cisg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBpbnQpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlQXJyYXkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50KSB7IHJldHVybiBBcnJh
eUxpdGVyYWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQXJyYXkoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgaW50LCBpbnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KKyAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOdW1iZXJFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGRvdWJsZSkgeyByZXR1cm4gTnVtYmVyRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZVN0cmluZyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKikgeyByZXR1
cm4gU3RyaW5nRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJvb2xlYW4oY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gQm9vbEV4cHI7IH0KKyAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpIHsgcmV0dXJuIE51bGxF
eHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2Vzcyhjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIGJvb2wsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIEJyYWNrZXRFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlRG90QWNjZXNzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBjb25z
dCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRG90RXhwcjsgfQorICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJ
ZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiwgaW50KSB7IHJldHVybiBZYXJy
OjpjaGVja1N5bnRheChwYXR0ZXJuLnVzdHJpbmcoKSkgPyAwIDogUmVnRXhwRXhwcjsgfQorICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQorICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvblR5cGUsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9CisgICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlQ29uZGl0aW9uYWxFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIENvbmRp
dGlvbmFsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFzc2lnblJlc29sdmUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBp
bnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQorICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZUZ1bmN0aW9uRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVu
dGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRnVuY3Rpb25F
eHByOyB9CisgICAgaW50IGNyZWF0ZUZ1bmN0aW9uQm9keShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBib29sKSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJu
IDE7IH0KICAgICBpbnQgY3JlYXRlQXJndW1lbnRzKGludCkgeyByZXR1cm4gMTsgfQotICAgIGlu
dCBjcmVhdGVBcmd1bWVudHNMaXN0KGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNy
ZWF0ZUFyZ3VtZW50c0xpc3QoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBj
cmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCkgeyByZXR1cm4g
MTsgfQorICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgdGVtcGxhdGUgPGJvb2wgY29tcGxldGU+IFBy
b3BlcnR5IGNyZWF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIGludCwgUHJvcGVy
dHlOb2RlOjpUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBpZiAoIWNvbXBsZXRlKQpAQCAtMTY4
LDggKzE2OCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBQcm9wZXJ0eSh0eXBlKTsK
ICAgICAgICAgcmV0dXJuIFByb3BlcnR5KCZnbG9iYWxEYXRhLT5wYXJzZXJBcmVuYS0+aWRlbnRp
ZmllckFyZW5hKCkubWFrZU51bWVyaWNJZGVudGlmaWVyKGdsb2JhbERhdGEsIG5hbWUpLCB0eXBl
KTsKICAgICB9Ci0gICAgaW50IGNyZWF0ZVByb3BlcnR5TGlzdChpbnQsIFByb3BlcnR5KSB7IHJl
dHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVByb3BlcnR5TGlzdChpbnQsIFByb3BlcnR5LCBpbnQp
IHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlUHJvcGVydHlMaXN0KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIFByb3BlcnR5KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVByb3BlcnR5
TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eSwgaW50KSB7IHJldHVybiAxOyB9
CiAgICAgaW50IGNyZWF0ZUVsZW1lbnRMaXN0KGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAg
aW50IGNyZWF0ZUVsZW1lbnRMaXN0KGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBp
bnQgY3JlYXRlRm9ybWFsUGFyYW1ldGVyTGlzdChjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4g
MTsgfQpAQCAtMTc4LDM5ICsxNzgsMzkgQEAgcHVibGljOgogICAgIGludCBjcmVhdGVDbGF1c2VM
aXN0KGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVDbGF1c2VMaXN0KGludCwgaW50
KSB7IHJldHVybiAxOyB9CiAgICAgdm9pZCBzZXRVc2VzQXJndW1lbnRzKGludCkgeyB9Ci0gICAg
aW50IGNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQmxv
Y2tTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNy
ZWF0ZUV4cHJTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAg
aW50IGNyZWF0ZUlmU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAx
OyB9Ci0gICAgaW50IGNyZWF0ZUlmU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRm9yTG9vcChpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRm9ySW5Mb29w
KGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVGb3JJbkxvb3Ao
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsg
fQotICAgIGludCBjcmVhdGVFbXB0eVN0YXRlbWVudChpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBp
bnQgY3JlYXRlVmFyU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQot
ICAgIGludCBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVudChpbnQsIGludCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVu
dChpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KLSAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50LCBj
b25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAg
aW50IGNyZWF0ZVRyeVN0YXRlbWVudChpbnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVTd2l0Y2hTdGF0ZW1l
bnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAg
aW50IGNyZWF0ZVdoaWxlU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9Ci0gICAgaW50IGNyZWF0ZVdpdGhTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZURvV2hpbGVTdGF0ZW1l
bnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRl
TGFiZWxTdGF0ZW1lbnQoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCkgeyBy
ZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVUaHJvd1N0YXRlbWVudChpbnQsIGludCwgaW50LCBp
bnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZURlYnVnZ2VyKGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQ29uc3RTdGF0ZW1lbnQoaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGFwcGVuZENvbnN0RGVjbChp
bnQsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4gMTsgfQotICAgIHRlbXBs
YXRlIDxib29sIHN0cmljdD4gUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShp
bnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50KQorICAgIGludCBjcmVhdGVGdW5jRGVjbFN0YXRlbWVu
dChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVCbG9ja1N0YXRl
bWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9
CisgICAgaW50IGNyZWF0ZUV4cHJTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVJZlN0YXRlbWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAg
ICBpbnQgY3JlYXRlSWZTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRm9yTG9vcChjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9CisgICAgaW50IGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUZvckluTG9vcChjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVFbXB0eVN0YXRlbWVudChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mKSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVZhclN0YXRlbWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50
IGNyZWF0ZVJldHVyblN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVCcmVha1N0YXRlbWVu
dChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KKyAgICBpbnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAg
IGludCBjcmVhdGVDb250aW51ZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0
ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVUcnlTdGF0ZW1lbnQoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVN3aXRjaFN0YXRlbWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9CisgICAgaW50IGNyZWF0ZVdoaWxlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVXaXRo
U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRG9XaGlsZVN0YXRlbWVudChjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAg
ICBpbnQgY3JlYXRlTGFiZWxTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciosIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRl
VGhyb3dTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRGVidWdnZXIoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29uc3RT
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQorICAgIGludCBhcHBlbmRDb25zdERlY2woY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50
LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiAxOyB9CisgICAgdGVtcGxhdGUgPGJv
b2wgc3RyaWN0PiBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlLCBjb25zdCBJZGVudGlmaWVy
KiBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KQogICAgIHsKICAgICAgICAgQVNT
RVJUKG5hbWUpOwogICAgICAgICBpZiAoIXN0cmljdCkKICAgICAgICAgICAgIHJldHVybiBQcm9w
ZXJ0eSh0eXBlKTsKICAgICAgICAgcmV0dXJuIFByb3BlcnR5KG5hbWUsIHR5cGUpOwogICAgIH0K
LSAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVy
UHJvcGVydHkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlw
ZSB0eXBlLCBkb3VibGUgbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkKKyAgICB0
ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVy
dHkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9w
ZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUsIGludCwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQpCiAgICAgewogICAgICAgICBpZiAoIXN0cmljdCkKICAgICAgICAgICAgIHJldHVybiBQ
cm9wZXJ0eSh0eXBlKTsKQEAgLTIxOSw3ICsyMTksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFw
cGVuZFN0YXRlbWVudChpbnQsIGludCkgeyB9CiAgICAgdm9pZCBhZGRWYXIoY29uc3QgSWRlbnRp
ZmllciosIGJvb2wpIHsgfQotICAgIGludCBjb21iaW5lQ29tbWFOb2RlcyhpbnQsIGludCwgaW50
KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNvbWJpbmVDb21tYU5vZGVzKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGV2YWxDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KICAgICB2b2lkIGFwcGVuZEJpbmFyeUV4cHJlc3Npb25JbmZvKGlu
dCYgb3BlcmFuZFN0YWNrRGVwdGgsIGludCBleHByLCBpbnQsIGludCwgaW50LCBib29sKQogICAg
IHsKQEAgLTIzNSw3ICsyMzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBvcGVyYXRvclN0YWNrSGFz
SGlnaGVyUHJlY2VkZW5jZShpbnQmLCBpbnQpIHsgcmV0dXJuIHRydWU7IH0KICAgICBCaW5hcnlP
cGVyYW5kIGdldEZyb21PcGVyYW5kU3RhY2soaW50KSB7IHJldHVybiBtX3RvcEJpbmFyeUV4cHI7
IH0KICAgICB2b2lkIHNocmlua09wZXJhbmRTdGFja0J5KGludCYgb3BlcmFuZFN0YWNrRGVwdGgs
IGludCBhbW91bnQpIHsgb3BlcmFuZFN0YWNrRGVwdGggLT0gYW1vdW50OyB9Ci0gICAgdm9pZCBh
cHBlbmRCaW5hcnlPcGVyYXRpb24oaW50LCBpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQmLCBC
aW5hcnlPcGVyYW5kLCBCaW5hcnlPcGVyYW5kKSB7IG9wZXJhbmRTdGFja0RlcHRoKys7IH0KKyAg
ICB2b2lkIGFwcGVuZEJpbmFyeU9wZXJhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQm
IG9wZXJhbmRTdGFja0RlcHRoLCBpbnQmLCBCaW5hcnlPcGVyYW5kLCBCaW5hcnlPcGVyYW5kKSB7
IG9wZXJhbmRTdGFja0RlcHRoKys7IH0KICAgICB2b2lkIG9wZXJhdG9yU3RhY2tBcHBlbmQoaW50
JiBvcGVyYXRvclN0YWNrRGVwdGgsIGludCwgaW50KSB7IG9wZXJhdG9yU3RhY2tEZXB0aCsrOyB9
CiAgICAgaW50IHBvcE9wZXJhbmRTdGFjayhpbnQmKSB7IGludCByZXMgPSBtX3RvcEJpbmFyeUV4
cHI7IG1fdG9wQmluYXJ5RXhwciA9IDA7IHJldHVybiByZXM7IH0KICAgICAKQEAgLTI0NSw3ICsy
NDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bmFyeVRva2VuU3RhY2tSZW1vdmVMYXN0KGludCYg
c3RhY2tEZXB0aCkgeyBzdGFja0RlcHRoID0gMDsgfQogICAgIAogICAgIHZvaWQgYXNzaWdubWVu
dFN0YWNrQXBwZW5kKGludCwgaW50LCBpbnQsIGludCwgaW50LCBPcGVyYXRvcikgeyB9Ci0gICAg
aW50IGNyZWF0ZUFzc2lnbm1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQXNzaWdubWVudChj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgcmV0dXJuIDE7IH0KICAgICBjb25zdCBJZGVudGlmaWVyJiBnZXROYW1l
KGNvbnN0IFByb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3QgeyBBU1NFUlQocHJvcGVydHkubmFtZSk7
IHJldHVybiAqcHJvcGVydHkubmFtZTsgfQogICAgIFByb3BlcnR5Tm9kZTo6VHlwZSBnZXRUeXBl
KGNvbnN0IFByb3BlcnR5JiBwcm9wZXJ0eSkgY29uc3QgeyByZXR1cm4gcHJvcGVydHkudHlwZTsg
fQogICAgIGJvb2wgaXNSZXNvbHZlKEV4cHJlc3Npb25UeXBlIGV4cHIpIGNvbnN0IHsgcmV0dXJu
IGV4cHIgPT0gUmVzb2x2ZUV4cHIgfHwgZXhwciA9PSBSZXNvbHZlRXZhbEV4cHI7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCA5
YWNlODJkOTM3YTkxNzM5OTM0YmE3M2MzN2VkY2Q5MDRjYjNmNzg4Li4wMGI2OGE1OTQyYjJkNGVi
MGY5ZDdiYmU1NWMyOTUzNTVkZDk4NTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC03NSwyMCArNzUsMjggQEAgU3RyaW5nIFNj
cmlwdERlYnVnU2VydmVyOjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNv
bnN0IFNjcmlwdEJyZWEKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRFZhbHVlKTsKICAgICBpZiAo
aXQgPT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCiAgICAgICAgIGl0ID0gbV9zb3Vy
Y2VJZFRvQnJlYWtwb2ludHMuc2V0KHNvdXJjZUlEVmFsdWUsIExpbmVUb0JyZWFrcG9pbnRNYXAo
KSkuaXRlcmF0b3I7Ci0gICAgaWYgKGl0LT5zZWNvbmQuY29udGFpbnMoc2NyaXB0QnJlYWtwb2lu
dC5saW5lTnVtYmVyICsgMSkpCi0gICAgICAgIHJldHVybiAiIjsKLSAgICBpdC0+c2Vjb25kLnNl
dChzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIgKyAxLCBzY3JpcHRCcmVha3BvaW50KTsKKyAg
ICBMaW5lVG9CcmVha3BvaW50TWFwOjppdGVyYXRvciBicmVha3NJdCA9IGl0LT5zZWNvbmQuZmlu
ZChzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIgKyAxKTsKKyAgICBpZiAoYnJlYWtzSXQgPT0g
aXQtPnNlY29uZC5lbmQoKSkKKyAgICAgICAgYnJlYWtzSXQgPSBpdC0+c2Vjb25kLnNldChzY3Jp
cHRCcmVha3BvaW50LmxpbmVOdW1iZXIgKyAxLCBCcmVha3BvaW50c0luTGluZSgpKS5pdGVyYXRv
cjsKKworICAgIEJyZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vj
b25kOworICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykgeworICAgICAgICBp
ZiAoYnJlYWtzVmVjdG9yLmF0KGkpLmNvbHVtbk51bWJlciA9PSBzY3JpcHRCcmVha3BvaW50LmNv
bHVtbk51bWJlcikKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICB9CisgICAgYnJlYWtzVmVj
dG9yLmFwcGVuZChzY3JpcHRCcmVha3BvaW50KTsKKwogICAgICphY3R1YWxMaW5lTnVtYmVyID0g
c2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyOwotICAgIC8vIEZJWE1FKFdLNTMwMDMpOiBpbXBs
ZW1lbnQgc2V0dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbi4KLSAgICAqYWN0dWFsQ29s
dW1uTnVtYmVyID0gMDsKLSAgICByZXR1cm4gc291cmNlSUQgKyAiOiIgKyBTdHJpbmc6Om51bWJl
cihzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIpOworICAgICphY3R1YWxDb2x1bW5OdW1iZXIg
PSBzY3JpcHRCcmVha3BvaW50LmNvbHVtbk51bWJlcjsKKyAgICByZXR1cm4gc291cmNlSUQgKyAi
OiIgKyBTdHJpbmc6Om51bWJlcihzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIpICsgIjoiICsg
U3RyaW5nOjpudW1iZXIoc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXIpOwogfQogCiB2b2lk
IFNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtw
b2ludElkKQogewogICAgIFZlY3RvcjxTdHJpbmc+IHRva2VuczsKICAgICBicmVha3BvaW50SWQu
c3BsaXQoIjoiLCB0b2tlbnMpOwotICAgIGlmICh0b2tlbnMuc2l6ZSgpICE9IDIpCisgICAgaWYg
KHRva2Vucy5zaXplKCkgIT0gMykKICAgICAgICAgcmV0dXJuOwogICAgIGJvb2wgc3VjY2VzczsK
ICAgICBpbnRwdHJfdCBzb3VyY2VJRFZhbHVlID0gdG9rZW5zWzBdLnRvSW50UHRyKCZzdWNjZXNz
KTsKQEAgLTk3LDkgKzEwNSw2MyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVh
a3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKQogICAgIHVuc2lnbmVkIGxpbmVOdW1i
ZXIgPSB0b2tlbnNbMV0udG9VSW50KCZzdWNjZXNzKTsKICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAg
ICAgIHJldHVybjsKKyAgICB1bnNpZ25lZCBjb2x1bW5OdW1iZXIgPSB0b2tlbnNbMl0udG9VSW50
KCZzdWNjZXNzKTsKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIHJldHVybjsKKwogICAgIFNv
dXJjZUlkVG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NvdXJjZUlkVG9CcmVha3Bv
aW50cy5maW5kKHNvdXJjZUlEVmFsdWUpOwotICAgIGlmIChpdCAhPSBtX3NvdXJjZUlkVG9CcmVh
a3BvaW50cy5lbmQoKSkKLSAgICAgICAgaXQtPnNlY29uZC5yZW1vdmUobGluZU51bWJlciArIDEp
OworICAgIGlmIChpdCA9PSBtX3NvdXJjZUlkVG9CcmVha3BvaW50cy5lbmQoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6Oml0ZXJhdG9yIGJyZWFrc0l0ID0gaXQt
PnNlY29uZC5maW5kKGxpbmVOdW1iZXIgKyAxKTsKKyAgICBpZiAoYnJlYWtzSXQgPT0gaXQtPnNl
Y29uZC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQnJlYWtwb2ludHNJbkxpbmUmIGJy
ZWFrc1ZlY3RvciA9IGJyZWFrc0l0LT5zZWNvbmQ7CisgICAgdW5zaWduZWQgYnJlYWtzQ291bnQg
PSBicmVha3NWZWN0b3Iuc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBicmVh
a3NDb3VudDsgaSsrKSB7CisgICAgICAgIGlmIChicmVha3NWZWN0b3IuYXQoaSkuY29sdW1uTnVt
YmVyID09IHN0YXRpY19jYXN0PGludD4oY29sdW1uTnVtYmVyKSkgeworICAgICAgICAgICAgYnJl
YWtzVmVjdG9yLnJlbW92ZShpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorfQorCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDdXJyZW50U3RhdGVtZW50UG9z
aXRpb24oaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lKQoreworICAgIGlmIChsaW5lIDwgMCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgU291cmNlUHJvdmlkZXIqIHNvdXJjZSA9IHJlaW50ZXJw
cmV0X2Nhc3Q8U291cmNlUHJvdmlkZXIqPihzb3VyY2VJRCk7CisKKyAgICBpZiAobV9jdXJyZW50
U291cmNlSUQgIT0gc291cmNlSUQpIHsKKyAgICAgICAgU3RyaW5nIHNvdXJjZUNvZGUgPSB1c3Ry
aW5nVG9TdHJpbmcoSlNDOjpVU3RyaW5nKGNvbnN0X2Nhc3Q8U3RyaW5nSW1wbCo+KHNvdXJjZS0+
ZGF0YSgpKSkpOworICAgICAgICBtX2N1cnJlbnRTb3VyY2VDb2RlLmNsZWFyKCk7CisgICAgICAg
IHNvdXJjZUNvZGUuc3BsaXQoIlxuIiwgdHJ1ZSwgbV9jdXJyZW50U291cmNlQ29kZSk7CisgICAg
ICAgIG1fY3VycmVudFNvdXJjZUlEID0gc291cmNlSUQ7CisgICAgICAgIG1fY3VycmVudFN0YXRl
bWVudFBvc2l0aW9uLmxpbmVOdW1iZXIgPSAwOworICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQ
b3NpdGlvbi5jb2x1bW5OdW1iZXIgPSAwOworICAgIH0KKworICAgIGlmIChsaW5lICE9IG1fY3Vy
cmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIpIHsKKyAgICAgICAgbV9jdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24ubGluZU51bWJlciA9IGxpbmU7CisgICAgICAgIG1fY3VycmVudFN0YXRl
bWVudFBvc2l0aW9uLmNvbHVtbk51bWJlciA9IDA7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpbnQgc3RhcnRMaW5lID0gc291cmNlLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLnplcm9C
YXNlZEludCgpOworICAgIGlmICgobV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51bWJl
ciAtIHN0YXJ0TGluZSAtIDEpID49IHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50U291cmNlQ29k
ZS5zaXplKCkpKQorICAgICAgICByZXR1cm47CisgICAgY29uc3QgU3RyaW5nJiBjb2RlSW5MaW5l
ID0gbV9jdXJyZW50U291cmNlQ29kZVttX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVt
YmVyIC0gc3RhcnRMaW5lIC0gMV07CisgICAgaWYgKGNvZGVJbkxpbmUuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisgICAgaW50IG5leHRDb2x1bW4gPSBjb2RlSW5MaW5lLmZpbmQoIjsiLCBt
X2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIpOworICAgIGlmIChuZXh0Q29s
dW1uICE9IC0xKSB7CisgICAgICAgIFVDaGFyIGMgPSBjb2RlSW5MaW5lW25leHRDb2x1bW4gKyAx
XTsKKyAgICAgICAgaWYgKGMgPT0gJyAnIHx8IGMgPT0gJ1x0JykKKyAgICAgICAgICAgIG5leHRD
b2x1bW4gKz0gMTsKKyAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVt
YmVyID0gbmV4dENvbHVtbiArIDE7CisgICAgfSBlbHNlCisgICAgICAgIG1fY3VycmVudFN0YXRl
bWVudFBvc2l0aW9uLmNvbHVtbk51bWJlciA9IDA7CiB9CiAKIGJvb2wgU2NyaXB0RGVidWdTZXJ2
ZXI6Omhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYg
cG9zaXRpb24pIGNvbnN0CkBAIC0xMTAsMTkgKzE3MiwzNyBAQCBib29sIFNjcmlwdERlYnVnU2Vy
dmVyOjpoYXNCcmVha3BvaW50KGludHB0cl90IHNvdXJjZUlELCBjb25zdCBUZXh0UG9zaXRpb24m
IHBvcwogICAgIFNvdXJjZUlkVG9CcmVha3BvaW50c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBt
X3NvdXJjZUlkVG9CcmVha3BvaW50cy5maW5kKHNvdXJjZUlEKTsKICAgICBpZiAoaXQgPT0gbV9z
b3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
bnQgbGluZU51bWJlciA9IHBvc2l0aW9uLm1fbGluZS5vbmVCYXNlZEludCgpOwotICAgIGlmIChs
aW5lTnVtYmVyIDw9IDApCisKKyAgICBpbnQgbGluZU51bWJlciA9IHBvc2l0aW9uLm1fbGluZS56
ZXJvQmFzZWRJbnQoKTsKKyAgICBpbnQgY29sdW1uTnVtYmVyID0gcG9zaXRpb24ubV9jb2x1bW4u
emVyb0Jhc2VkSW50KCk7CisgICAgaWYgKGxpbmVOdW1iZXIgPCAwIHx8IGNvbHVtbk51bWJlciA8
IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6OmNv
bnN0X2l0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5maW5kKGxpbmVOdW1iZXIgKyAxKTsK
KyAgICBpZiAoYnJlYWtzSXQgPT0gaXQtPnNlY29uZC5lbmQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIExpbmVUb0JyZWFrcG9pbnRNYXA6OmNvbnN0X2l0ZXJhdG9yIGJyZWFrSXQgPSBp
dC0+c2Vjb25kLmZpbmQobGluZU51bWJlcik7Ci0gICAgaWYgKGJyZWFrSXQgPT0gaXQtPnNlY29u
ZC5lbmQoKSkKKworICAgIGJvb2wgaGl0ID0gZmFsc2U7CisgICAgY29uc3QgQnJlYWtwb2ludHNJ
bkxpbmUmIGJyZWFrc1ZlY3RvciA9IGJyZWFrc0l0LT5zZWNvbmQ7CisgICAgdW5zaWduZWQgYnJl
YWtzQ291bnQgPSBicmVha3NWZWN0b3Iuc2l6ZSgpOworICAgIHVuc2lnbmVkIGk7CisgICAgZm9y
IChpID0gMDsgaSA8IGJyZWFrc0NvdW50OyBpKyspIHsKKyAgICAgICAgaW50IGJyZWFrQ29sdW1u
ID0gYnJlYWtzVmVjdG9yLmF0KGkpLmNvbHVtbk51bWJlcjsKKyAgICAgICAgaW50IGJyZWFrTGlu
ZSA9IGJyZWFrc1ZlY3Rvci5hdChpKS5saW5lTnVtYmVyOworICAgICAgICBpZiAobGluZU51bWJl
ciA9PSBicmVha0xpbmUgJiYgY29sdW1uTnVtYmVyID09IGJyZWFrQ29sdW1uKSB7CisgICAgICAg
ICAgICBoaXQgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgaWYgKCFoaXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIEFuIGVtcHR5IGNv
bmRpdGlvbiBjb3VudHMgYXMgbm8gY29uZGl0aW9uIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gInRy
dWUiLgotICAgIGlmIChicmVha0l0LT5zZWNvbmQuY29uZGl0aW9uLmlzRW1wdHkoKSkKKyAgICBp
ZiAoYnJlYWtzVmVjdG9yLmF0KGkpLmNvbmRpdGlvbi5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgSlNWYWx1ZSBleGNlcHRpb247Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBt
X2N1cnJlbnRDYWxsRnJhbWUtPmV2YWx1YXRlKHN0cmluZ1RvVVN0cmluZyhicmVha0l0LT5zZWNv
bmQuY29uZGl0aW9uKSwgZXhjZXB0aW9uKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IG1fY3VycmVu
dENhbGxGcmFtZS0+ZXZhbHVhdGUoc3RyaW5nVG9VU3RyaW5nKGJyZWFrc1ZlY3Rvci5hdChpKS5j
b25kaXRpb24pLCBleGNlcHRpb24pOwogICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAgLy8g
QW4gZXJyb25lb3VzIGNvbmRpdGlvbiBjb3VudHMgYXMgImZhbHNlIi4KICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMzQ3LDIwICs0MjcsMjAgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlz
cGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjawogICAg
IG1fY2FsbGluZ0xpc3RlbmVycyA9IGZhbHNlOwogfQogCi12b2lkIFNjcmlwdERlYnVnU2VydmVy
OjpjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1l
JiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQor
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChj
b25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKLSAgICBUZXh0UG9zaXRp
b24gdGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChsaW5lTnVtYmVy
KSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSk7CisgICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlv
bihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1i
ZXI6OmZyb21aZXJvQmFzZWRJbnQoY29sdW1uTnVtYmVyKSk7CiAgICAgbV9jdXJyZW50Q2FsbEZy
YW1lID0gSmF2YVNjcmlwdENhbGxGcmFtZTo6Y3JlYXRlKGRlYnVnZ2VyQ2FsbEZyYW1lLCBtX2N1
cnJlbnRDYWxsRnJhbWUsIHNvdXJjZUlELCB0ZXh0UG9zaXRpb24pOwogICAgIHBhdXNlSWZOZWVk
ZWQoZGVidWdnZXJDYWxsRnJhbWUuZHluYW1pY0dsb2JhbE9iamVjdCgpKTsKIH0KIAotdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6dXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBE
ZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFu
ZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1l
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7
CiAgICAgQVNTRVJUKG1fY3VycmVudENhbGxGcmFtZSk7CiAgICAgaWYgKCFtX2N1cnJlbnRDYWxs
RnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb24o
T3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVy
OjpmaXJzdCgpKTsKKyAgICBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6
OmZyb21PbmVCYXNlZEludChsaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6ZnJvbVplcm9CYXNl
ZEludChjb2x1bW5OdW1iZXIpKTsKICAgICBtX2N1cnJlbnRDYWxsRnJhbWUtPnVwZGF0ZShkZWJ1
Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIHRleHRQb3NpdGlvbik7CiAgICAgcGF1c2VJZk5lZWRl
ZChkZWJ1Z2dlckNhbGxGcmFtZS5keW5hbWljR2xvYmFsT2JqZWN0KCkpOwogfQpAQCAtNDAxLDIy
ICs0ODEsMzcgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VJZk5lZWRlZChKU0dsb2Jh
bE9iamVjdCogZHluYW1pY0dsb2JhbE9iamVjdCkKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
Y2FsbEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50
cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQogeworICAgIGNhbGxFdmVudChkZWJ1Z2dl
ckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIDApOworfQorCit2b2lkIFNjcmlwdERl
YnVnU2VydmVyOjpjYWxsRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2Fs
bEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpCit7CiAgICAgaWYgKCFtX3BhdXNlZCkKLSAgICAgICAgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1
c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAg
ICAgICBjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBz
b3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6YXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2Fs
bEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCiB7CisgICAgYXRTdGF0
ZW1lbnQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCAwKTsKK30KKwor
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIpCit7CiAgICAgaWYgKCFtX3BhdXNlZCkKLSAgICAgICAgdXBkYXRl
Q2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxp
bmVOdW1iZXIpOworICAgICAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVn
Z2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAog
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmV0dXJuRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIp
CiB7CisgICAgcmV0dXJuRXZlbnQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVt
YmVyLCAwKTsKK30KKwordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmV0dXJuRXZlbnQoY29uc3Qg
RGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCit7CiAgICAgaWYgKG1fcGF1c2VkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRl
YnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgdXBkYXRlQ2FsbEZy
YW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcik7CiAKICAgICAvLyBkZXRhY2ggbWF5IGhhdmUgYmVlbiBjYWxsZWQg
ZHVyaW5nIHBhdXNlSWZOZWVkZWQKICAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkKQEAgLTQz
MCwyNyArNTI1LDQyIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwKIAogdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6ZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxG
cmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBib29sIGhhc0hhbmRsZXIp
CiB7CisgICAgZXhjZXB0aW9uKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJl
ciwgMCwgaGFzSGFuZGxlcik7Cit9CisKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmV4Y2VwdGlv
bihjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCBoYXNIYW5kbGVy
KQorewogICAgIGlmIChtX3BhdXNlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fcGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9PSBQYXVzZU9uQWxsRXhjZXB0aW9ucyB8fCAobV9wYXVzZU9u
RXhjZXB0aW9uc1N0YXRlID09IFBhdXNlT25VbmNhdWdodEV4Y2VwdGlvbnMgJiYgIWhhc0hhbmRs
ZXIpKQogICAgICAgICBtX3BhdXNlT25OZXh0U3RhdGVtZW50ID0gdHJ1ZTsKIAotICAgIHVwZGF0
ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBs
aW5lTnVtYmVyKTsKKyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAogdm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6d2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2Fs
bEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVt
YmVyKQogeworICAgIHdpbGxFeGVjdXRlUHJvZ3JhbShkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNl
SUQsIGxpbmVOdW1iZXIsIDApOworfQorCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp3aWxsRXhl
Y3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCit7CiAg
ICAgaWYgKCFtX3BhdXNlZCkKLSAgICAgICAgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRl
ZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAgICBjcmVh
dGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwg
bGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZy
YW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCiB7CisgICAgZGlkRXhlY3V0
ZVByb2dyYW0oZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCAwKTsKK30K
Kwordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdn
ZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCit7CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlcik7CisgICAgdXBkYXRlQ2FsbEZyYW1lQW5k
UGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcik7CiAKICAgICAvLyBUcmVhdCBzdGVwcGluZyBvdmVyIHRoZSBlbmQgb2YgYSBw
cm9ncmFtIGxpa2Ugc3RlcHBpbmcgb3V0LgogICAgIGlmIChtX2N1cnJlbnRDYWxsRnJhbWUgPT0g
bV9wYXVzZU9uQ2FsbEZyYW1lKQpAQCAtNDYwLDExICs1NzAsMTYgQEAgdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVn
Z2VyQ2FsbEYKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkUmVhY2hCcmVha3BvaW50KGNv
bnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNl
SUQsIGludCBsaW5lTnVtYmVyKQogeworICAgIGRpZFJlYWNoQnJlYWtwb2ludChkZWJ1Z2dlckNh
bGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIsIDApOworfQorCit2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVn
Z2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIpCit7CiAgICAgaWYgKG1fcGF1c2VkKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X3BhdXNlT25OZXh0U3RhdGVtZW50ID0gdHJ1ZTsKLSAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVz
ZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlcik7CisgICAg
dXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNl
SUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCA4NGZiYTVjNjc4ZmM3MjVkZjI4NjJl
ZTlmZjNiZTY1MTg0MTIxYWE2Li45ZDk3YzE2N2U1YzdkNDliZDZlNGVkYTFkNmJhYjQxM2YzYzhm
ZjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1Nl
cnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmgKQEAgLTEyMyw4ICsxMjMsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBkaXNwYXRjaERpZFBh
cnNlU291cmNlKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIEpTQzo6U291cmNlUHJvdmlk
ZXIqLCBib29sIGlzQ29udGVudFNjcmlwdCk7CiAgICAgdm9pZCBkaXNwYXRjaEZhaWxlZFRvUGFy
c2VTb3VyY2UoY29uc3QgTGlzdGVuZXJTZXQmIGxpc3RlbmVycywgSlNDOjpTb3VyY2VQcm92aWRl
ciosIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIAotICAgIHZv
aWQgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBKU0M6OkRlYnVnZ2VyQ2Fs
bEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKTsKLSAgICB2b2lkIHVw
ZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFt
ZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7CisgICAgdm9pZCBjcmVhdGVD
YWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOworICAg
IHZvaWQgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBKU0M6OkRlYnVnZ2Vy
Q2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyKTsKICAgICB2b2lkIHBhdXNlSWZOZWVkZWQoSlNDOjpKU0dsb2JhbE9iamVjdCogZHlu
YW1pY0dsb2JhbE9iamVjdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKQEAgLTEzOCw3ICsxMzgsMTkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50
cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJy
ZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZW5vKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBTY3JpcHRCcmVha3Bv
aW50PiBMaW5lVG9CcmVha3BvaW50TWFwOworICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29u
c3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGF0U3RhdGVtZW50KGNv
bnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGZpcnN0
TGluZSwgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNv
bnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOworICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29u
c3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCBoYXNIYW5kbGVyKTsKKyAgICB2aXJ0dWFsIHZv
aWQgd2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubywgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVh
bCB2b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubywgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1l
JiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8sIGludCBjb2x1bW5OdW1iZXIpOworCisK
KyAgICB2b2lkIHVwZGF0ZUN1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbihpbnRwdHJfdCwgaW50KTsK
KworICAgIHR5cGVkZWYgVmVjdG9yPFNjcmlwdEJyZWFrcG9pbnQ+IEJyZWFrcG9pbnRzSW5MaW5l
OworICAgIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBCcmVha3BvaW50c0luTGluZT4gTGluZVRvQnJl
YWtwb2ludE1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50cHRyX3QsIExpbmVUb0JyZWFrcG9p
bnRNYXA+IFNvdXJjZUlkVG9CcmVha3BvaW50c01hcDsKIAogICAgIGJvb2wgbV9jYWxsaW5nTGlz
dGVuZXJzOwpAQCAtMTUxLDYgKzE2MywxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPEphdmFT
Y3JpcHRDYWxsRnJhbWU+IG1fY3VycmVudENhbGxGcmFtZTsKICAgICBTb3VyY2VJZFRvQnJlYWtw
b2ludHNNYXAgbV9zb3VyY2VJZFRvQnJlYWtwb2ludHM7CiAgICAgVGltZXI8U2NyaXB0RGVidWdT
ZXJ2ZXI+IG1fcmVjb21waWxlVGltZXI7CisKKyAgICBWZWN0b3I8U3RyaW5nPiBtX2N1cnJlbnRT
b3VyY2VDb2RlOworICAgIGludHB0cl90IG1fY3VycmVudFNvdXJjZUlEOworICAgIFNjcmlwdEJy
ZWFrcG9pbnQgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb247CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156045</attachid>
            <date>2012-08-02 05:24:22 -0700</date>
            <delta_ts>2012-08-03 04:57:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120802202400.patch</filename>
            <type>text/plain</type>
            <size>321665</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZWM0MjBjMDVhMDNkMzgzYjMzYTNkZjkxYWRhMWEwNGEwMTBmZjgxLi5kYjBlYWZjZjA3YjVlNjFm
NjUwYTZhM2UxZjBmMTdkYTlkZjg4NDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NjkgQEAKKzIwMTItMDgtMDIgIFBldGVyIFdhbmcgIDxwZXRlci53YW5nQHRvcmNobW9i
aWxlLmNvbS5jbj4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbSlNDXSBpbXBsZW1lbnQgc2V0
dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMwMDMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZnJleSBHYXJlbi4KKworICAgICAgICBBZGQgYSBjb3VudGVyIGluIGxleGVyIHRvIHJlY29yZCB0
aGUgY29sdW1uIG9mIGVhY2ggdG9rZW4uIERlYnVnZ2VyIHdpbGwgdXNlIGNvbHVtbiBpbmZvCisg
ICAgICAgIGluICJQcmV0dHkgUHJpbnQiIGRlYnVnIG1vZGUgb2YgSW5zcGVjdG9yLgorCisgICAg
ICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpw
YWRPcGNvZGVOYW1lKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayk6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChCeXRl
Y29kZUdlbmVyYXRvcik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgIChKU0M6OkFycmF5Tm9kZTo6dG9Bcmd1bWVudExpc3QpOgorICAgICAgICAoSlND
OjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkNvbmRpdGlvbmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29uc3RTdGF0
ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFbXB0eVN0YXRlbWVudE5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RXhwclN0YXRlbWVudE5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OlZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OklmTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6SWZFbHNl
Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RG9XaGlsZU5vZGU6OmVtaXRCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OldoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6Rm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb250aW51ZU5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgIChKU0M6OkJyZWFrTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
UmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6V2l0aE5vZGU6OmVtaXRC
eXRlY29kZSk6CisgICAgICAgIChKU0M6OlN3aXRjaE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkxhYmVsTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VGhyb3dO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpUcnlOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6RXZhbE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQm9keU5v
ZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuaDoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjp1bndpbmRDYWxsRnJhbWUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dGhyb3dF
eGNlcHRpb24pOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZGVidWcpOgorICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChJbnRlcnByZXRlcik6CisgICAg
ICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfZGVi
dWcpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfZGVidWcpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAg
IChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQ
YXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6Cisg
ICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEFTVEJ1aWxkZXIpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVDb21tYUV4cHIpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjpjcmVhdGVMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
Y3JlYXRlVW5hcnlQbHVzKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVm9pZCk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OnRoaXNFeHByKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZU9iamVjdExpdGVyYWwpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBcnJheSk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZU51bWJlckV4cHIpOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVCb29sZWFuKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTnVsbCk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUJyYWNrZXRBY2Nlc3MpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjpjcmVhdGVSZWdFeHApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVO
ZXdFeHByKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29uZGl0aW9uYWxFeHBy
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXNzaWduUmVzb2x2ZSk6CisgICAg
ICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVBcmd1bWVudHNMaXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlUHJvcGVydHlMaXN0KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY0Rl
Y2xTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVCbG9ja1N0YXRl
bWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUV4cHJTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVJZlN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZvckxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVGb3JJbkxvb3ApOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFbXB0
eVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVZhclN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVJldHVyblN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUJyZWFrU3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQ29udGludWVTdGF0ZW1lbnQpOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjpjcmVhdGVUcnlTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjpjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVXaGlsZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURv
V2hpbGVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVMYWJlbFN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVdpdGhTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVUaHJvd1N0YXRlbWVudCk6CisgICAg
ICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURlYnVnZ2VyKToKKyAgICAgICAgKEpTQzo6QVNU
QnVpbGRlcjo6Y3JlYXRlQ29uc3RTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjphcHBlbmRDb25zdERlY2wpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjb21iaW5lQ29t
bWFOb2Rlcyk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmFwcGVuZEJpbmFyeU9wZXJhdGlv
bik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUFzc2lnbm1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVOdW1iZXIpOgorICAgICAgICAoSlNDOjpBU1RCdWls
ZGVyOjptYWtlVHlwZU9mTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VEZWxl
dGVOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUpOgorICAg
ICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQml0d2lzZU5vdE5vZGUpOgorICAgICAgICAoSlND
OjpBU1RCdWlsZGVyOjptYWtlTXVsdE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpt
YWtlRGl2Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VNb2ROb2RlKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUFkZE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjptYWtlU3ViTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VMZWZ0
U2hpZnROb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZVJpZ2h0U2hpZnROb2Rl
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZVVSaWdodFNoaWZ0Tm9kZSk6CisgICAg
ICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VCaXRPck5vZGUpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjptYWtlQml0QW5kTm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VC
aXRYT3JOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5v
ZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZSk6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6bWFrZVByZWZpeE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlUG9z
dGZpeE5vZGUpOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgIChKU0M6Ojo6
c2V0Q29kZSk6CisgICAgICAgIChKU0M6Ojo6aW50ZXJuYWxTaGlmdCk6CisgICAgICAgIChKU0M6
Ojo6c2hpZnQpOgorICAgICAgICAoSlNDOjo6OmxleCk6CisgICAgICAgICogcGFyc2VyL0xleGVy
Lmg6CisgICAgICAgIChMZXhlcik6CisgICAgICAgIChKU0M6OkxleGVyOjpjdXJyZW50Q29sdW1u
TnVtYmVyKToKKyAgICAgICAgKEpTQzo6OjpsZXhFeHBlY3RJZGVudGlmaWVyKToKKyAgICAgICAg
KiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpOb2RlOjpOb2RlKToK
KyAgICAgICAgKEpTQzo6RXhwcmVzc2lvbk5vZGU6OkV4cHJlc3Npb25Ob2RlKToKKyAgICAgICAg
KEpTQzo6U3RhdGVtZW50Tm9kZTo6U3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChKU0M6Ok51bGxO
b2RlOjpOdWxsTm9kZSk6CisgICAgICAgIChKU0M6OkJvb2xlYW5Ob2RlOjpCb29sZWFuTm9kZSk6
CisgICAgICAgIChKU0M6Ok51bWJlck5vZGU6Ok51bWJlck5vZGUpOgorICAgICAgICAoSlNDOjpT
dHJpbmdOb2RlOjpTdHJpbmdOb2RlKToKKyAgICAgICAgKEpTQzo6UmVnRXhwTm9kZTo6UmVnRXhw
Tm9kZSk6CisgICAgICAgIChKU0M6OlRoaXNOb2RlOjpUaGlzTm9kZSk6CisgICAgICAgIChKU0M6
OlJlc29sdmVOb2RlOjpSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkFycmF5Tm9kZTo6QXJy
YXlOb2RlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9k
ZSk6CisgICAgICAgIChKU0M6Ok9iamVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZSk6
CisgICAgICAgIChKU0M6OkJyYWNrZXRBY2Nlc3Nvck5vZGU6OkJyYWNrZXRBY2Nlc3Nvck5vZGUp
OgorICAgICAgICAoSlNDOjpEb3RBY2Nlc3Nvck5vZGU6OkRvdEFjY2Vzc29yTm9kZSk6CisgICAg
ICAgIChKU0M6OkFyZ3VtZW50TGlzdE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAo
SlNDOjpOZXdFeHByTm9kZTo6TmV3RXhwck5vZGUpOgorICAgICAgICAoSlNDOjpFdmFsRnVuY3Rp
b25DYWxsTm9kZTo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlv
bkNhbGxWYWx1ZU5vZGU6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSk6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSk6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OkZ1bmN0aW9uQ2FsbERvdE5vZGUp
OgorICAgICAgICAoSlNDOjpDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2Fs
bERvdE5vZGUpOgorICAgICAgICAoSlNDOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5
RnVuY3Rpb25DYWxsRG90Tm9kZSk6CisgICAgICAgIChKU0M6OlByZVBvc3RSZXNvbHZlTm9kZTo6
UHJlUG9zdFJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6UG9zdGZpeFJlc29sdmVOb2RlOjpQ
b3N0Zml4UmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4QnJhY2tldE5vZGU6OlBv
c3RmaXhCcmFja2V0Tm9kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhEb3ROb2RlOjpQb3N0Zml4
RG90Tm9kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhFcnJvck5vZGU6OlBvc3RmaXhFcnJvck5v
ZGUpOgorICAgICAgICAoSlNDOjpEZWxldGVSZXNvbHZlTm9kZTo6RGVsZXRlUmVzb2x2ZU5vZGUp
OgorICAgICAgICAoSlNDOjpEZWxldGVCcmFja2V0Tm9kZTo6RGVsZXRlQnJhY2tldE5vZGUpOgor
ICAgICAgICAoSlNDOjpEZWxldGVEb3ROb2RlOjpEZWxldGVEb3ROb2RlKToKKyAgICAgICAgKEpT
Qzo6RGVsZXRlVmFsdWVOb2RlOjpEZWxldGVWYWx1ZU5vZGUpOgorICAgICAgICAoSlNDOjpWb2lk
Tm9kZTo6Vm9pZE5vZGUpOgorICAgICAgICAoSlNDOjpUeXBlT2ZSZXNvbHZlTm9kZTo6VHlwZU9m
UmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVl
Tm9kZSk6CisgICAgICAgIChKU0M6OlByZWZpeFJlc29sdmVOb2RlOjpQcmVmaXhSZXNvbHZlTm9k
ZSk6CisgICAgICAgIChKU0M6OlByZWZpeEJyYWNrZXROb2RlOjpQcmVmaXhCcmFja2V0Tm9kZSk6
CisgICAgICAgIChKU0M6OlByZWZpeERvdE5vZGU6OlByZWZpeERvdE5vZGUpOgorICAgICAgICAo
SlNDOjpQcmVmaXhFcnJvck5vZGU6OlByZWZpeEVycm9yTm9kZSk6CisgICAgICAgIChKU0M6OlVu
YXJ5T3BOb2RlOjpVbmFyeU9wTm9kZSk6CisgICAgICAgIChKU0M6OlVuYXJ5UGx1c05vZGU6OlVu
YXJ5UGx1c05vZGUpOgorICAgICAgICAoSlNDOjpOZWdhdGVOb2RlOjpOZWdhdGVOb2RlKToKKyAg
ICAgICAgKEpTQzo6Qml0d2lzZU5vdE5vZGU6OkJpdHdpc2VOb3ROb2RlKToKKyAgICAgICAgKEpT
Qzo6TG9naWNhbE5vdE5vZGU6OkxvZ2ljYWxOb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QmluYXJ5
T3BOb2RlOjpCaW5hcnlPcE5vZGUpOgorICAgICAgICAoSlNDOjpNdWx0Tm9kZTo6TXVsdE5vZGUp
OgorICAgICAgICAoSlNDOjpEaXZOb2RlOjpEaXZOb2RlKToKKyAgICAgICAgKEpTQzo6TW9kTm9k
ZTo6TW9kTm9kZSk6CisgICAgICAgIChKU0M6OkFkZE5vZGU6OkFkZE5vZGUpOgorICAgICAgICAo
SlNDOjpTdWJOb2RlOjpTdWJOb2RlKToKKyAgICAgICAgKEpTQzo6TGVmdFNoaWZ0Tm9kZTo6TGVm
dFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6OlJpZ2h0U2hpZnROb2RlOjpSaWdodFNoaWZ0Tm9k
ZSk6CisgICAgICAgIChKU0M6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGU6OlVuc2lnbmVkUmlnaHRT
aGlmdE5vZGUpOgorICAgICAgICAoSlNDOjpMZXNzTm9kZTo6TGVzc05vZGUpOgorICAgICAgICAo
SlNDOjpHcmVhdGVyTm9kZTo6R3JlYXRlck5vZGUpOgorICAgICAgICAoSlNDOjpMZXNzRXFOb2Rl
OjpMZXNzRXFOb2RlKToKKyAgICAgICAgKEpTQzo6R3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9k
ZSk6CisgICAgICAgIChKU0M6OlRocm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5
T3BOb2RlKToKKyAgICAgICAgKEpTQzo6SW5zdGFuY2VPZk5vZGU6Okluc3RhbmNlT2ZOb2RlKToK
KyAgICAgICAgKEpTQzo6SW5Ob2RlOjpJbk5vZGUpOgorICAgICAgICAoSlNDOjpFcXVhbE5vZGU6
OkVxdWFsTm9kZSk6CisgICAgICAgIChKU0M6Ok5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKToK
KyAgICAgICAgKEpTQzo6U3RyaWN0RXF1YWxOb2RlOjpTdHJpY3RFcXVhbE5vZGUpOgorICAgICAg
ICAoSlNDOjpOb3RTdHJpY3RFcXVhbE5vZGU6Ok5vdFN0cmljdEVxdWFsTm9kZSk6CisgICAgICAg
IChKU0M6OkJpdEFuZE5vZGU6OkJpdEFuZE5vZGUpOgorICAgICAgICAoSlNDOjpCaXRPck5vZGU6
OkJpdE9yTm9kZSk6CisgICAgICAgIChKU0M6OkJpdFhPck5vZGU6OkJpdFhPck5vZGUpOgorICAg
ICAgICAoSlNDOjpMb2dpY2FsT3BOb2RlOjpMb2dpY2FsT3BOb2RlKToKKyAgICAgICAgKEpTQzo6
Q29uZGl0aW9uYWxOb2RlOjpDb25kaXRpb25hbE5vZGUpOgorICAgICAgICAoSlNDOjpSZWFkTW9k
aWZ5UmVzb2x2ZU5vZGU6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OkFz
c2lnblJlc29sdmVOb2RlOjpBc3NpZ25SZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRN
b2RpZnlCcmFja2V0Tm9kZTo6UmVhZE1vZGlmeUJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6
QXNzaWduQnJhY2tldE5vZGU6OkFzc2lnbkJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6QXNz
aWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRNb2RpZnlEb3RO
b2RlOjpSZWFkTW9kaWZ5RG90Tm9kZSk6CisgICAgICAgIChKU0M6OkFzc2lnbkVycm9yTm9kZTo6
QXNzaWduRXJyb3JOb2RlKToKKyAgICAgICAgKEpTQzo6Q29tbWFOb2RlOjpDb21tYU5vZGUpOgor
ICAgICAgICAoSlNDOjpDb25zdFN0YXRlbWVudE5vZGU6OkNvbnN0U3RhdGVtZW50Tm9kZSk6Cisg
ICAgICAgIChKU0M6OkVtcHR5U3RhdGVtZW50Tm9kZTo6RW1wdHlTdGF0ZW1lbnROb2RlKToKKyAg
ICAgICAgKEpTQzo6RGVidWdnZXJTdGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGUp
OgorICAgICAgICAoSlNDOjpFeHByU3RhdGVtZW50Tm9kZTo6RXhwclN0YXRlbWVudE5vZGUpOgor
ICAgICAgICAoSlNDOjpWYXJTdGF0ZW1lbnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKToKKyAgICAg
ICAgKEpTQzo6SWZOb2RlOjpJZk5vZGUpOgorICAgICAgICAoSlNDOjpJZkVsc2VOb2RlOjpJZkVs
c2VOb2RlKToKKyAgICAgICAgKEpTQzo6RG9XaGlsZU5vZGU6OkRvV2hpbGVOb2RlKToKKyAgICAg
ICAgKEpTQzo6V2hpbGVOb2RlOjpXaGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjpG
b3JOb2RlKToKKyAgICAgICAgKEpTQzo6Q29udGludWVOb2RlOjpDb250aW51ZU5vZGUpOgorICAg
ICAgICAoSlNDOjpCcmVha05vZGU6OkJyZWFrTm9kZSk6CisgICAgICAgIChKU0M6OlJldHVybk5v
ZGU6OlJldHVybk5vZGUpOgorICAgICAgICAoSlNDOjpXaXRoTm9kZTo6V2l0aE5vZGUpOgorICAg
ICAgICAoSlNDOjpMYWJlbE5vZGU6OkxhYmVsTm9kZSk6CisgICAgICAgIChKU0M6OlRocm93Tm9k
ZTo6VGhyb3dOb2RlKToKKyAgICAgICAgKEpTQzo6VHJ5Tm9kZTo6VHJ5Tm9kZSk6CisgICAgICAg
IChKU0M6OkZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0Rl
Y2xOb2RlOjpGdW5jRGVjbE5vZGUpOgorICAgICAgICAoSlNDOjpTd2l0Y2hOb2RlOjpTd2l0Y2hO
b2RlKToKKyAgICAgICAgKEpTQzo6Q29uc3REZWNsTm9kZTo6Q29uc3REZWNsTm9kZSk6CisgICAg
ICAgIChKU0M6OkJsb2NrTm9kZTo6QmxvY2tOb2RlKToKKyAgICAgICAgKEpTQzo6Rm9ySW5Ob2Rl
OjpGb3JJbk5vZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OlN0YXRlbWVudE5vZGU6OnNldExvYyk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpT
Y29wZU5vZGU6OlNjb3BlTm9kZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpQcm9ncmFt
Tm9kZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjpjcmVhdGUpOgorICAgICAgICAoSlND
OjpFdmFsTm9kZTo6RXZhbE5vZGUpOgorICAgICAgICAoSlNDOjpFdmFsTm9kZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZSk6CisgICAgICAgICogcGFyc2VyL05v
ZGVzLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKEpTQzo6Tm9kZTo6Y29sdW1uTm8pOgor
ICAgICAgICAoRXhwcmVzc2lvbk5vZGUpOgorICAgICAgICAoU3RhdGVtZW50Tm9kZSk6CisgICAg
ICAgIChKU0M6OlN0YXRlbWVudE5vZGU6OmNvbHVtbik6CisgICAgICAgIChOdWxsTm9kZSk6Cisg
ICAgICAgIChCb29sZWFuTm9kZSk6CisgICAgICAgIChOdW1iZXJOb2RlKToKKyAgICAgICAgKFN0
cmluZ05vZGUpOgorICAgICAgICAoUmVnRXhwTm9kZSk6CisgICAgICAgIChUaGlzTm9kZSk6Cisg
ICAgICAgIChSZXNvbHZlTm9kZSk6CisgICAgICAgIChBcnJheU5vZGUpOgorICAgICAgICAoUHJv
cGVydHlMaXN0Tm9kZSk6CisgICAgICAgIChPYmplY3RMaXRlcmFsTm9kZSk6CisgICAgICAgIChC
cmFja2V0QWNjZXNzb3JOb2RlKToKKyAgICAgICAgKERvdEFjY2Vzc29yTm9kZSk6CisgICAgICAg
IChBcmd1bWVudExpc3ROb2RlKToKKyAgICAgICAgKE5ld0V4cHJOb2RlKToKKyAgICAgICAgKEV2
YWxGdW5jdGlvbkNhbGxOb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZSk6Cisg
ICAgICAgIChGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZSk6CisgICAgICAgIChGdW5jdGlvbkNhbGxC
cmFja2V0Tm9kZSk6CisgICAgICAgIChGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKENh
bGxGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZSk6CisgICAgICAgIChQcmVQb3N0UmVzb2x2ZU5vZGUpOgorICAgICAgICAoUG9zdGZpeFJlc29s
dmVOb2RlKToKKyAgICAgICAgKFBvc3RmaXhCcmFja2V0Tm9kZSk6CisgICAgICAgIChQb3N0Zml4
RG90Tm9kZSk6CisgICAgICAgIChQb3N0Zml4RXJyb3JOb2RlKToKKyAgICAgICAgKERlbGV0ZVJl
c29sdmVOb2RlKToKKyAgICAgICAgKERlbGV0ZUJyYWNrZXROb2RlKToKKyAgICAgICAgKERlbGV0
ZURvdE5vZGUpOgorICAgICAgICAoRGVsZXRlVmFsdWVOb2RlKToKKyAgICAgICAgKFZvaWROb2Rl
KToKKyAgICAgICAgKFR5cGVPZlJlc29sdmVOb2RlKToKKyAgICAgICAgKFR5cGVPZlZhbHVlTm9k
ZSk6CisgICAgICAgIChQcmVmaXhSZXNvbHZlTm9kZSk6CisgICAgICAgIChQcmVmaXhCcmFja2V0
Tm9kZSk6CisgICAgICAgIChQcmVmaXhEb3ROb2RlKToKKyAgICAgICAgKFByZWZpeEVycm9yTm9k
ZSk6CisgICAgICAgIChVbmFyeU9wTm9kZSk6CisgICAgICAgIChVbmFyeVBsdXNOb2RlKToKKyAg
ICAgICAgKE5lZ2F0ZU5vZGUpOgorICAgICAgICAoQml0d2lzZU5vdE5vZGUpOgorICAgICAgICAo
TG9naWNhbE5vdE5vZGUpOgorICAgICAgICAoQmluYXJ5T3BOb2RlKToKKyAgICAgICAgKE11bHRO
b2RlKToKKyAgICAgICAgKERpdk5vZGUpOgorICAgICAgICAoTW9kTm9kZSk6CisgICAgICAgIChB
ZGROb2RlKToKKyAgICAgICAgKFN1Yk5vZGUpOgorICAgICAgICAoTGVmdFNoaWZ0Tm9kZSk6Cisg
ICAgICAgIChSaWdodFNoaWZ0Tm9kZSk6CisgICAgICAgIChVbnNpZ25lZFJpZ2h0U2hpZnROb2Rl
KToKKyAgICAgICAgKExlc3NOb2RlKToKKyAgICAgICAgKEdyZWF0ZXJOb2RlKToKKyAgICAgICAg
KExlc3NFcU5vZGUpOgorICAgICAgICAoR3JlYXRlckVxTm9kZSk6CisgICAgICAgIChUaHJvd2Fi
bGVCaW5hcnlPcE5vZGUpOgorICAgICAgICAoSW5zdGFuY2VPZk5vZGUpOgorICAgICAgICAoSW5O
b2RlKToKKyAgICAgICAgKEVxdWFsTm9kZSk6CisgICAgICAgIChOb3RFcXVhbE5vZGUpOgorICAg
ICAgICAoU3RyaWN0RXF1YWxOb2RlKToKKyAgICAgICAgKE5vdFN0cmljdEVxdWFsTm9kZSk6Cisg
ICAgICAgIChCaXRBbmROb2RlKToKKyAgICAgICAgKEJpdE9yTm9kZSk6CisgICAgICAgIChCaXRY
T3JOb2RlKToKKyAgICAgICAgKExvZ2ljYWxPcE5vZGUpOgorICAgICAgICAoQ29uZGl0aW9uYWxO
b2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlSZXNvbHZlTm9kZSk6CisgICAgICAgIChBc3NpZ25S
ZXNvbHZlTm9kZSk6CisgICAgICAgIChSZWFkTW9kaWZ5QnJhY2tldE5vZGUpOgorICAgICAgICAo
QXNzaWduQnJhY2tldE5vZGUpOgorICAgICAgICAoQXNzaWduRG90Tm9kZSk6CisgICAgICAgIChS
ZWFkTW9kaWZ5RG90Tm9kZSk6CisgICAgICAgIChBc3NpZ25FcnJvck5vZGUpOgorICAgICAgICAo
Q29tbWFOb2RlKToKKyAgICAgICAgKENvbnN0RGVjbE5vZGUpOgorICAgICAgICAoQ29uc3RTdGF0
ZW1lbnROb2RlKToKKyAgICAgICAgKEJsb2NrTm9kZSk6CisgICAgICAgIChFbXB0eVN0YXRlbWVu
dE5vZGUpOgorICAgICAgICAoRGVidWdnZXJTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEV4cHJT
dGF0ZW1lbnROb2RlKToKKyAgICAgICAgKFZhclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoSWZO
b2RlKToKKyAgICAgICAgKElmRWxzZU5vZGUpOgorICAgICAgICAoRG9XaGlsZU5vZGUpOgorICAg
ICAgICAoV2hpbGVOb2RlKToKKyAgICAgICAgKEZvck5vZGUpOgorICAgICAgICAoRm9ySW5Ob2Rl
KToKKyAgICAgICAgKENvbnRpbnVlTm9kZSk6CisgICAgICAgIChCcmVha05vZGUpOgorICAgICAg
ICAoUmV0dXJuTm9kZSk6CisgICAgICAgIChXaXRoTm9kZSk6CisgICAgICAgIChMYWJlbE5vZGUp
OgorICAgICAgICAoVGhyb3dOb2RlKToKKyAgICAgICAgKFRyeU5vZGUpOgorICAgICAgICAoU2Nv
cGVOb2RlKToKKyAgICAgICAgKFByb2dyYW1Ob2RlKToKKyAgICAgICAgKEV2YWxOb2RlKToKKyAg
ICAgICAgKEZ1bmN0aW9uQm9keU5vZGUpOgorICAgICAgICAoRnVuY0V4cHJOb2RlKToKKyAgICAg
ICAgKEZ1bmNEZWNsTm9kZSk6CisgICAgICAgIChTd2l0Y2hOb2RlKToKKyAgICAgICAgKiBwYXJz
ZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6OjpwYXJzZVNvdXJjZUVsZW1lbnRzKToKKyAg
ICAgICAgKEpTQzo6OjpwYXJzZVZhckRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJz
ZUNvbnN0RGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlRG9XaGlsZVN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VXaGlsZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VWYXJEZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29uc3RE
ZWNsYXJhdGlvbkxpc3QpOgorICAgICAgICAoSlNDOjo6OnBhcnNlRm9yU3RhdGVtZW50KToKKyAg
ICAgICAgKEpTQzo6OjpwYXJzZUJyZWFrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJz
ZUNvbnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVJldHVyblN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VUaHJvd1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VXaXRoU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVN3aXRjaFN0YXRl
bWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VUcnlTdGF0ZW1lbnQpOgorICAgICAgICAoSlND
Ojo6OnBhcnNlRGVidWdnZXJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlQmxvY2tT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VGdW5jdGlvbklu
Zm8pOgorICAgICAgICAoSlNDOjo6OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbik6CisgICAgICAg
IChKU0M6Ojo6cGFyc2VFeHByZXNzaW9uT3JMYWJlbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VFeHByZXNzaW9uU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUlmU3Rh
dGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUV4cHJlc3Npb24pOgorICAgICAgICAoSlND
Ojo6OnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlQ29u
ZGl0aW9uYWxFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUJpbmFyeUV4cHJlc3Np
b24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjo6OnBh
cnNlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VTdHJpY3RPYmplY3RMaXRl
cmFsKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUFycmF5TGl0ZXJhbCk6CisgICAgICAgIChKU0M6
Ojo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VBcmd1bWVu
dHMpOgorICAgICAgICAoSlNDOjo6OnBhcnNlTWVtYmVyRXhwcmVzc2lvbik6CisgICAgICAgIChK
U0M6Ojo6cGFyc2VVbmFyeUV4cHJlc3Npb24pOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoK
KyAgICAgICAgKEpTQzo6UGFyc2VyOjpuZXh0KToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpuZXh0
RXhwZWN0SWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OlBhcnNlcjo6dG9rZW5TdGFydCk6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjo6dG9rZW5MaW5lKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjp0
b2tlbkVuZCk6CisgICAgICAgIChKU0M6OlBhcnNlcjo6dG9rZW5Mb2NhdGlvbik6CisgICAgICAg
IChQYXJzZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI6OmdldFRva2VuTmFtZSk6CisgICAgICAg
IChKU0M6Ojo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJUb2tlbnMuaDoKKyAgICAg
ICAgKEpTQzo6SlNUb2tlbkxvY2F0aW9uOjpKU1Rva2VuTG9jYXRpb24pOgorICAgICAgICAoSlNU
b2tlbkxvY2F0aW9uKToKKyAgICAgICAgKEpTVG9rZW4pOgorICAgICAgICAqIHBhcnNlci9Tb3Vy
Y2VQcm92aWRlckNhY2hlSXRlbS5oOgorICAgICAgICAoSlNDOjpTb3VyY2VQcm92aWRlckNhY2hl
SXRlbTo6Y2xvc2VCcmFjZVRva2VuKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5o
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlRnVuY3Rpb25DYWxsTm9kZSk6Cisg
ICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUNvbW1hRXhwcik6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6Om1ha2VBc3NpZ25Ob2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6bWFrZVByZWZpeE5vZGUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpt
YWtlUG9zdGZpeE5vZGUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlVHlwZU9m
Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VEZWxldGVOb2RlKToKKyAg
ICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZU5lZ2F0ZU5vZGUpOgorICAgICAgICAoSlND
OjpTeW50YXhDaGVja2VyOjptYWtlQml0d2lzZU5vdE5vZGUpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tl
cjo6Y3JlYXRlVW5hcnlQbHVzKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRl
Vm9pZCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OnRoaXNFeHByKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlUmVzb2x2ZSk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZU9iamVjdExpdGVyYWwpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVBcnJheSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU51
bWJlckV4cHIpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVTdHJpbmcpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVCb29sZWFuKToKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlTnVsbCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZUJyYWNrZXRBY2Nlc3MpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVEb3RBY2Nlc3MpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVSZWdF
eHApOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOZXdFeHByKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ29uZGl0aW9uYWxFeHByKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQXNzaWduUmVzb2x2ZSk6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZ1bmN0aW9uRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmNyZWF0ZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNr
ZXI6OmNyZWF0ZUFyZ3VtZW50c0xpc3QpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpj
cmVhdGVQcm9wZXJ0eUxpc3QpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVG
dW5jRGVjbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJs
b2NrU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRXhwclN0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUlmU3RhdGVtZW50
KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRm9yTG9vcCk6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OlN5
bnRheENoZWNrZXI6OmNyZWF0ZUVtcHR5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4
Q2hlY2tlcjo6Y3JlYXRlVmFyU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tl
cjo6Y3JlYXRlUmV0dXJuU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
Y3JlYXRlQnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVh
dGVDb250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZVRyeVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN3aXRj
aFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVdoaWxlU3Rh
dGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlV2l0aFN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVMYWJlbFN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVRocm93U3RhdGVtZW50KToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRGVidWdnZXIpOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpjcmVhdGVDb25zdFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRh
eENoZWNrZXI6OmFwcGVuZENvbnN0RGVjbCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjb21iaW5lQ29tbWFOb2Rlcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om9w
ZXJhdG9yU3RhY2tQb3ApOgorCiAyMDEyLTA4LTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgbWlzc2VkIGEgc3R5bGUgZ29vZiBpbiB0aGUg
cHJldmlvdXMgcGF0Y2g6ICJOb2RlSW5kZXggbm9kZUluZGV4IgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGRjMzg3
ZGFhYzg2MmNhZTY2MzgzZjU0MDQyNTljZmJkMTdhODI1NmYuLjIyNDNjNmU0ZTdmOTg2N2EzOGU0
MDYyNjU0YzBkM2I3ODZkNjZhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMi0w
OC0wMiAgUGV0ZXIgV2FuZyAgPHBldGVyLndhbmdAdG9yY2htb2JpbGUuY29tLmNuPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFtKU0NdIGltcGxlbWVudCBzZXR0aW5nIGJyZWFrcG9pbnRzIGJ5
IGxpbmU6Y29sdW1uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01MzAwMworCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAg
ICAgIEFzIEpTQyBpcyBlbmFibGVkIHRvIHByb3ZpZGUgY29sdW1uIGluZm8gb2Ygc3RhdGVtZW50
LCBTY3JpcHREZWJ1Z1NlcnZlciBjYW4gdXNlIGl0IHRvCisgICAgICAgIHN1cHBvcnQgIlByZXR0
eSBQcmludCIgZGVidWcgbW9kZS4KKworICAgICAgICBObyBuZXcgdGVzdCBjYXNlIGZvciB0aGlz
IHBhdGNoLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6dXBk
YXRlQ3VycmVudFN0YXRlbWVudFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERl
YnVnU2VydmVyOjpoYXNCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpjYWxsRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmF0U3RhdGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpyZXR1cm5FdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dERlYnVnU2VydmVyOjp3aWxsRXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RGVidWdTZXJ2ZXI6OmRpZEV4ZWN1dGVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdERlYnVnU2VydmVyOjpkaWRSZWFjaEJyZWFrcG9pbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgIChTY3JpcHREZWJ1Z1NlcnZlcik6CisK
IDIwMTItMDgtMDIgIHVsYW5AY2hyb21pdW0ub3JnICA8dWxhbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBJbXByb3ZlIGdhcmJhZ2UgY29sbGVjdG9yIGhpbnQgaWYgcGFnZSB1
c2VzIENhbnZhcyBjb250ZXh0cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAppbmRleCA1Mzc0YTUzN2FiMzliZDkxNjgyNmUxOTRkYzgzMzY1OGIyZWRkNjQw
Li4wZTJhOThiYzU1NWUwM2E5NWNkNGY1OTA1ZTg3ZjQ5OTM3MDkyMWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTUyNSw3ICsxNTI1LDgg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBWZWN0b3I8SW5z
dHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYKICAgICAgICAgICAgIGludCBkZWJ1Z0hvb2tJRCA9
ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGZpcnN0TGluZSA9ICgrK2l0KS0+
dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IGxhc3RMaW5lID0gKCsraXQpLT51Lm9wZXJhbmQ7
Ci0gICAgICAgICAgICBkYXRhTG9nKCJbJTRkXSBkZWJ1Z1x0XHQgJXMsICVkLCAlZCIsIGxvY2F0
aW9uLCBkZWJ1Z0hvb2tOYW1lKGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7Cisg
ICAgICAgICAgICBpbnQgY29sdW1uID0gKCsraXQpLT51Lm9wZXJhbmQ7CisgICAgICAgICAgICBk
YXRhTG9nKCJbJTRkXSBkZWJ1Z1x0XHQgJXMsICVkLCAlZCwgJWQiLCBsb2NhdGlvbiwgZGVidWdI
b29rTmFtZShkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUsIGNvbHVtbik7CiAgICAg
ICAgICAgICBkdW1wQnl0ZWNvZGVDb21tZW50QW5kTmV3TGluZShsb2NhdGlvbik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29k
ZS5oCmluZGV4IDE0Y2VmYjlkOTA1ZDVkOTEyMGQwYTUxN2YwNzhmZmQ1MDUxNDY2YTEuLjQzMDhl
NzlkZjZhYTIzZjVjZjVmMjQ2MjUzODg0M2IyNzQ0YzlhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmgKQEAgLTE5NCw3ICsxOTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgbWFjcm8ob3BfdGhyb3csIDIpIFwKICAgICAgICAgbWFjcm8ob3BfdGhyb3dfcmVm
ZXJlbmNlX2Vycm9yLCAyKSBcCiAgICAgICAgIFwKLSAgICAgICAgbWFjcm8ob3BfZGVidWcsIDQp
IFwKKyAgICAgICAgbWFjcm8ob3BfZGVidWcsIDUpIFwKICAgICAgICAgbWFjcm8ob3BfcHJvZmls
ZV93aWxsX2NhbGwsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfcHJvZmlsZV9kaWRfY2FsbCwgMikg
XAogICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDMzZjI4MmM2NjQ2NTYwOTQzMzlhNGY2
NjYzNTRhMTFkOGI2MjI3NzYuLmFjMjM0YjdmODhiYWMzNWYyMjM2NDc3NDQ2YjQyNzk5Y2Y5ZmNh
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yMDgzLDcgKzIwODMsNyBAQCB2b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UG9wU2NvcGUoKQogICAgIG1fZHluYW1pY1Njb3BlRGVwdGgtLTsKIH0K
IAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1Z0hvb2tJRCBkZWJ1
Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQordm9pZCBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGlu
ZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKQogewogI2lmIEVOQUJMRShERUJVR19XSVRIX0JS
RUFLUE9JTlQpCiAgICAgaWYgKGRlYnVnSG9va0lEICE9IERpZFJlYWNoQnJlYWtwb2ludCkKQEAg
LTIwOTYsNiArMjA5Niw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2so
RGVidWdIb29rSUQgZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGluCiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGRlYnVnSG9va0lEKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmly
c3RMaW5lKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGFzdExpbmUpOworICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChjb2x1bW4pOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpw
dXNoRmluYWxseUNvbnRleHQoU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IDUyZmQ3ZTgzYzZjMzUwMzM1OTkxMzZjMmViNmQwOGYyZDE2MmI0OTUuLjQ5MDk5MWZh
N2Y3MTI5NmEyZjk1NGRjZTQ0MWEwNmEyYjg3ZjlhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTUwNiw3
ICs1MDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1c2hT
Y29wZShSZWdpc3RlcklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQgZW1pdFBvcFNjb3BlKCk7CiAK
LSAgICAgICAgdm9pZCBlbWl0RGVidWdIb29rKERlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBp
bnQgbGFzdExpbmUpOworICAgICAgICB2b2lkIGVtaXREZWJ1Z0hvb2soRGVidWdIb29rSUQsIGlu
dCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVtbik7CiAKICAgICAgICAgaW50IHNj
b3BlRGVwdGgoKSB7IHJldHVybiBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9maW5hbGx5RGVwdGg7
IH0KICAgICAgICAgYm9vbCBoYXNGaW5hbGlzZXIoKSB7IHJldHVybiBtX2ZpbmFsbHlEZXB0aCAh
PSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKaW5kZXggZDI0M2U4Y2UwMDg0OWI1NTJkOThkYjA1MDFjMzY5YTQxNWQyZWQw
YS4uNGFjYzU3M2VkMDkzODEzMDI1OGE0Mzc1NTM4ZWFlYzgyMTc0OTM0YiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAt
MjAyLDE4ICsyMDIsMjEgQEAgYm9vbCBBcnJheU5vZGU6OmlzU2ltcGxlQXJyYXkoKSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1Bcmd1bWVudExpc3ROb2RlKiBBcnJheU5vZGU6OnRvQXJn
dW1lbnRMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIpIGNvbnN0
CitBcmd1bWVudExpc3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpIGNvbnN0CiB7
CiAgICAgQVNTRVJUKCFtX2VsaXNpb24gJiYgIW1fb3B0aW9uYWwpOwogICAgIEVsZW1lbnROb2Rl
KiBwdHIgPSBtX2VsZW1lbnQ7CiAgICAgaWYgKCFwdHIpCiAgICAgICAgIHJldHVybiAwOwotICAg
IEFyZ3VtZW50TGlzdE5vZGUqIGhlYWQgPSBuZXcgKGdsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5v
ZGUobGluZU51bWJlciwgcHRyLT52YWx1ZSgpKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRp
b247CisgICAgbG9jYXRpb24ubGluZSA9IGxpbmVOdW1iZXI7CisgICAgbG9jYXRpb24uY29sdW1u
ID0gY29sdW1uTnVtYmVyOworICAgIEFyZ3VtZW50TGlzdE5vZGUqIGhlYWQgPSBuZXcgKGdsb2Jh
bERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobG9jYXRpb24sIHB0ci0+dmFsdWUoKSk7CiAgICAgQXJn
dW1lbnRMaXN0Tm9kZSogdGFpbCA9IGhlYWQ7CiAgICAgcHRyID0gcHRyLT5uZXh0KCk7CiAgICAg
Zm9yICg7IHB0cjsgcHRyID0gcHRyLT5uZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKCFwdHItPmVs
aXNpb24oKSk7Ci0gICAgICAgIHRhaWwgPSBuZXcgKGdsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5v
ZGUobGluZU51bWJlciwgdGFpbCwgcHRyLT52YWx1ZSgpKTsKKyAgICAgICAgdGFpbCA9IG5ldyAo
Z2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsb2NhdGlvbiwgdGFpbCwgcHRyLT52YWx1ZSgp
KTsKICAgICB9CiAgICAgcmV0dXJuIGhlYWQ7CiB9CkBAIC01MzYsNyArNTM5LDcgQEAgUmVnaXN0
ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQpIHsKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9k
ZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CiAgICAgICAgICAgICAgICAgICAg
IEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7Ci0gICAgICAgICAg
ICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9kZSo+KG1f
YXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50TGlzdChnZW5lcmF0
b3IuZ2xvYmFsRGF0YSgpLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3RO
b2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQt
Pm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdlbmVyYXRvci5nbG9iYWxEYXRhKCksIDAsIDApOwog
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2Vu
ZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQo
KSk7CiAgICAgICAgICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5l
cmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShj
YWxsQXJndW1lbnRzLnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwpAQCAtMTEyOCw2
ICsxMTMxLDggQEAgUmVnaXN0ZXJJRCogQ29uZGl0aW9uYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKICAgICBSZWZQdHI8TGFiZWw+IGJl
Zm9yZUVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGFmdGVy
RWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogCisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGxpbmVObygpLCBsaW5lTm8oKSwgY29sdW1uTm8oKSk7
CisKICAgICBpZiAobV9sb2dpY2FsLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKSB7CiAg
ICAgICAgIFJlZlB0cjxMYWJlbD4gYmVmb3JlVGhlbiA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9sb2dpY2FsLCBi
ZWZvcmVUaGVuLmdldCgpLCBiZWZvcmVFbHNlLmdldCgpLCB0cnVlKTsKQEAgLTEzODUsNyArMTM5
MCw3IEBAIFJlZ2lzdGVySUQqIENvbnN0RGVjbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAKIFJlZ2lzdGVySUQqIENvbnN0U3RhdGVt
ZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShtX25leHQpOwogfQogCkBAIC0xNDI4
LDcgKzE0MzMsNyBAQCBSZWdpc3RlcklEKiBCbG9ja05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogCiBSZWdpc3RlcklEKiBFbXB0
eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKICAgICByZXR1cm4gZHN0OwogfQogCkBAIC0xNDM2LDcgKzE0NDEsNyBA
QCBSZWdpc3RlcklEKiBFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpcwogCiBSZWdpc3RlcklEKiBEZWJ1Z2dlclN0YXRlbWVu
dE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkUmVhY2hCcmVha3Bv
aW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soRGlkUmVhY2hCcmVha3BvaW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkp
OwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTE0NDUsNyArMTQ1MCw3IEBAIFJlZ2lzdGVySUQq
IERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlCiBSZWdpc3RlcklEKiBFeHByU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBB
U1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOyAKKyAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNv
bHVtbigpKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9leHByKTsKIH0K
IApAQCAtMTQ1NCw3ICsxNDU5LDcgQEAgUmVnaXN0ZXJJRCogRXhwclN0YXRlbWVudE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3QKIFJlZ2lzdGVy
SUQqIFZhclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKICAgICBBU1NFUlQobV9leHByKTsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50
LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdE5vZGUobV9leHByKTsKIH0KIApAQCAtMTQ2Miw3ICsxNDY3LDcgQEAgUmVnaXN0ZXJJ
RCogVmFyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGUKIAogUmVnaXN0ZXJJRCogSWZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQs
IGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPExh
YmVsPiBhZnRlclRoZW4gPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIApAQCAtMTQ4Niw3ICsxNDkx
LDcgQEAgUmVnaXN0ZXJJRCogSWZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiBSZWdpc3RlcklEKiBJZkVsc2VOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAg
ICAgCiAgICAgUmVmUHRyPExhYmVsPiBiZWZvcmVFbHNlID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7
CiAgICAgUmVmUHRyPExhYmVsPiBhZnRlckVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKQEAg
LTE1MjIsMTIgKzE1MjcsMTEgQEAgUmVnaXN0ZXJJRCogRG9XaGlsZU5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKgogICAgIFJlZlB0cjxM
YWJlbD4gdG9wT2ZMb29wID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgZ2VuZXJhdG9yLmVt
aXRMYWJlbCh0b3BPZkxvb3AuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TG9vcEhpbnQoKTsK
LSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCkpOwogICAgCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9
IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxp
bmVObygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGlmIChtX2V4cHItPmhh
c0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUlu
Q29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFy
Z2V0KCksIGZhbHNlKTsKICAgICBlbHNlIHsKQEAgLTE1NDYsNyArMTU1MCw3IEBAIFJlZ2lzdGVy
SUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3BlID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CiAgICAgUmVmUHRyPExhYmVsPiB0b3BP
Zkxvb3AgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4cHItPmxpbmVO
bygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
bV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5jb2x1bW5ObygpKTsK
ICAgICBpZiAobV9leHByLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKQogICAgICAgICBn
ZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BPZkxvb3AuZ2V0
KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCB0cnVlKTsKICAgICBlbHNlIHsKQEAgLTE1NjAsNyAr
MTU2NCw3IEBAIFJlZ2lzdGVySUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgZ2VuZXJhdG9yLmVtaXROb2Rl
KGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29u
dGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIG1fZXhwci0+bGluZU5vKCksIG1fZXhwci0+bGluZU5vKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAgaWYgKG1fZXhwci0+aGFzQ29uZGl0aW9uQ29udGV4
dENvZGVnZW4oKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0
KG1fZXhwciwgdG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwgZmFsc2UpOwpA
QCAtMTU4MSw3ICsxNTg1LDcgQEAgUmVnaXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBSZWZQ
dHI8TGFiZWxTY29wZT4gc2NvcGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3Bl
OjpMb29wKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAKICAgICBpZiAobV9leHByMSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjEpOwpAQCAtMTYwMiw3ICsxNjA2LDcgQEAgUmVn
aXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2Vu
ZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRM
YWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICBpZiAobV9leHByMykKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjMpOwogCkBAIC0x
NjI5LDcgKzE2MzMsNyBAQCBSZWdpc3RlcklEKiBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAgIGlmICghbV9sZXhw
ci0+aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gZW1pdFRocm93UmVmZXJlbmNlRXJyb3Io
Z2VuZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGZvci1pbiBzdGF0ZW1lbnQgaXMgbm90IGEgcmVmZXJl
bmNlLiIpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigp
KTsKIAogICAgIGlmIChtX2luaXQpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0
b3IuaWdub3JlZFJlc3VsdCgpLCBtX2luaXQpOwpAQCAtMTY5Miw3ICsxNjk2LDcgQEAgUmVnaXN0
ZXJJRCogRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHMKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRp
bnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TmV4dFByb3BlcnR5TmFtZShwcm9wZXJ0
eU5hbWUsIGJhc2UuZ2V0KCksIGkuZ2V0KCksIHNpemUuZ2V0KCksIGl0ZXIuZ2V0KCksIGxvb3BT
dGFydC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0
ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVt
bigpKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKICAg
ICByZXR1cm4gZHN0OwogfQpAQCAtMTcwMiw3ICsxNzA2LDcgQEAgUmVnaXN0ZXJJRCogRm9ySW5O
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHMKIC8vIEVDTUEgMTIuNwogUmVnaXN0ZXJJRCogQ29udGludWVOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAg
TGFiZWxTY29wZSogc2NvcGUgPSBnZW5lcmF0b3IuY29udGludWVUYXJnZXQobV9pZGVudCk7CiAg
ICAgQVNTRVJUKHNjb3BlKTsKQEAgLTE3MTYsNyArMTcyMCw3IEBAIFJlZ2lzdGVySUQqIENvbnRp
bnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqCiAvLyBFQ01BIDEyLjgKIFJlZ2lzdGVySUQqIEJyZWFrTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBn
ZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIAogICAgIExh
YmVsU2NvcGUqIHNjb3BlID0gZ2VuZXJhdG9yLmJyZWFrVGFyZ2V0KG1faWRlbnQpOwogICAgIEFT
U0VSVChzY29wZSk7CkBAIC0xNzI5LDcgKzE3MzMsNyBAQCBSZWdpc3RlcklEKiBCcmVha05vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
cwogCiBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgQVNTRVJUKGdlbmVyYXRvci5jb2RlVHlw
ZSgpID09IEZ1bmN0aW9uQ29kZSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpCkBAIC0xNzQ1LDcgKzE3NDksNyBAQCBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZAog
ICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBTY29wZXMobDAuZ2V0KCksIDApOwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdExhYmVsKGwwLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUo
KSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFJldHVy
bihyMCk7CiB9CiAKQEAgLTE3NTMsNyArMTc1Nyw3IEBAIFJlZ2lzdGVySUQqIFJldHVybk5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
CiAKIFJlZ2lzdGVySUQqIFdpdGhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNj
b3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0Tm9kZShz
Y29wZS5nZXQoKSwgbV9leHByKTsgLy8gc2NvcGUgbXVzdCBiZSBwcm90ZWN0ZWQgdW50aWwgcG9w
cGVkCkBAIC0xOTE4LDcgKzE5MjIsNyBAQCBSZWdpc3RlcklEKiBDYXNlQmxvY2tOb2RlOjplbWl0
Qnl0ZWNvZGVGb3JCbG9jayhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogCiBSZWdp
c3RlcklEKiBTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdp
bGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0
TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3BlID0g
Z2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6U3dpdGNoKTsKIApAQCAtMTkzMyw3
ICsxOTM3LDcgQEAgUmVnaXN0ZXJJRCogU3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAogUmVnaXN0ZXJJRCogTGFiZWxO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVt
ZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4o
KSk7CiAKICAgICBBU1NFUlQoIWdlbmVyYXRvci5icmVha1RhcmdldChtX25hbWUpKTsKIApAQCAt
MTk0OCw3ICsxOTUyLDcgQEAgUmVnaXN0ZXJJRCogTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCog
VGhyb3dOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRl
U3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBj
b2x1bW4oKSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCiAg
ICAgICAgIGRzdCA9IDA7CkBAIC0xOTY1LDcgKzE5NjksNyBAQCBSZWdpc3RlcklEKiBUcnlOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCog
ZHN0KQogICAgIC8vIE5PVEU6IFRoZSBjYXRjaCBhbmQgZmluYWxseSBibG9ja3MgbXVzdCBiZSBs
YWJlbGVkIGV4cGxpY2l0bHksIHNvIHRoZQogICAgIC8vIG9wdGltaXplciBrbm93cyB0aGV5IG1h
eSBiZSBqdW1wZWQgdG8gZnJvbSBhbnl3aGVyZS4KIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdI
b29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAg
Z2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgp
LCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBSZWZQdHI8TGFiZWw+IHRyeVN0YXJ0TGFi
ZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBpZiAobV9maW5hbGx5QmxvY2spCkBAIC0y
MDIyLDEzICsyMDI2LDEzIEBAIGlubGluZSB2b2lkIFNjb3BlTm9kZTo6ZW1pdFN0YXRlbWVudHNC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAKIFJlZ2lzdGVySUQq
IFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQ
cm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1u
KCkpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRzdFJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0TG9hZChkc3RSZWdpc3Rlci5nZXQoKSwg
anNVbmRlZmluZWQoKSk7CiAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5lcmF0b3IsIGRz
dFJlZ2lzdGVyLmdldCgpKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1
dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1
bW4oKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFbmQoZHN0UmVnaXN0ZXIuZ2V0KCkpOwogICAgIHJl
dHVybiAwOwogfQpAQCAtMjAzNywxMyArMjA0MSwxMyBAQCBSZWdpc3RlcklEKiBQcm9ncmFtTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
KQogCiBSZWdpc3RlcklEKiBFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RM
aW5lKCksIGNvbHVtbigpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkc3RSZWdpc3RlciA9
IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBnZW5lcmF0b3IuZW1pdExvYWQoZHN0UmVn
aXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUo
Z2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7CiAKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY29sdW1uKCkpOwogICAgIGdlbmVyYXRvci5lbWl0RW5kKGRzdFJlZ2lzdGVyLmdl
dCgpKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTIwNTIsNyArMjA1Niw3IEBAIFJlZ2lzdGVySUQq
IEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCopCiAKIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQm9keU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAgICBnZW5lcmF0
b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1lLCBmaXJz
dExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNv
ZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAogICAgIFN0YXRlbWVu
dE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgpOwpAQCAtMjA2
OCw3ICsyMDcyLDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAvLyBJZiB0aGVyZSBp
cyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCiAgICAgaWYgKCFy
ZXR1cm5Ob2RlKSB7CiAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9yLmlzQ29uc3Ry
dWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5lbWl0TG9hZCgw
LCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExl
YXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjApOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5oCmluZGV4IGEyMzczMjkxODc4MDNlZGE5NTdhMzdkM2EwYTkwN2FmZjBiODkyMzIuLmJjNzQz
Njc3ZTIyNzQzNzZmOWRkMGQ4NWFhNWQ2ZDg3NTFiNTAxMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC00MiwxNCArNDIsMTYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3QqKTsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEV4ZWNTdGF0ZSosIFNvdXJjZVByb3ZpZGVy
KiwgaW50IGVycm9yTGluZU51bWJlciwgY29uc3QgVVN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUm
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFuZGxlcikgPSAw
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKLSAgICAgICAgdmly
dHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcmV0dXJu
RXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpID0gMDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4ZWN1dGVQcm9ncmFt
KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVt
YmVyKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBE
ZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAw
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0IERlYnVnZ2Vy
Q2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRw
dHJfdCwgaW50LCBpbnQsIGJvb2wpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGF0U3RhdGVt
ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCwgaW50KSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCwgaW50LCBpbnQpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50
KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCwgaW50KSA9IDA7CisKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHdpbGxFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxG
cmFtZSYsIGludHB0cl90LCBpbnQsIGludCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlk
RXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50LCBp
bnQpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBE
ZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQsIGludCkgPSAwOworCiAKICAgICAgICAg
dm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhKU0dsb2JhbERhdGEqKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggM2Vk
Yjg1ODllM2ExZTNjOWE2OWRhN2VjZWZjMzk0MDllYWJiNDEyNy4uNTFmMjJiZWRkYTY0NmU1YTcy
ZDA2N2ViNWIwYmJmMWRjMTI5Y2JkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC03MzAsOSArNzMwLDkgQEAgTkVWRVJfSU5M
SU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZShDYWxsRnJhbWUqJiBjYWxsRnJh
bWUsIEpTVmFsdWUgZXgKICAgICBpZiAoRGVidWdnZXIqIGRlYnVnZ2VyID0gY2FsbEZyYW1lLT5k
eW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpIHsKICAgICAgICAgRGVidWdnZXJDYWxs
RnJhbWUgZGVidWdnZXJDYWxsRnJhbWUoY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSk7CiAgICAg
ICAgIGlmIChjYWxsRnJhbWUtPmNhbGxlZSgpKQotICAgICAgICAgICAgZGVidWdnZXItPnJldHVy
bkV2ZW50KGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5z
b3VyY2VJRCgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5sYXN0TGluZSgpKTsKKyAg
ICAgICAgICAgIGRlYnVnZ2VyLT5yZXR1cm5FdmVudChkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+bGFzdExpbmUoKSwgMCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRlYnVn
Z2VyLT5kaWRFeGVjdXRlUHJvZ3JhbShkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+
bGFzdExpbmUoKSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+ZGlkRXhlY3V0ZVByb2dyYW0oZGVi
dWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCks
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmxhc3RMaW5lKCksIDApOwogICAgIH0KIAog
ICAgIC8vIElmIHRoaXMgY2FsbCBmcmFtZSBjcmVhdGVkIGFuIGFjdGl2YXRpb24gb3IgYW4gJ2Fy
Z3VtZW50cycgb2JqZWN0LCB0ZWFyIGl0IG9mZi4KQEAgLTEwNTUsNyArMTA1NSw3IEBAIE5FVkVS
X0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnRocm93RXhjZXB0aW9uKENhbGxGcmFt
ZSomIGNhbGxGcmFtZSwgSlNWCiAgICAgaWYgKERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNhbGxGcmFt
ZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKSB7CiAgICAgICAgIERlYnVnZ2Vy
Q2FsbEZyYW1lIGRlYnVnZ2VyQ2FsbEZyYW1lKGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUpOwog
ICAgICAgICBib29sIGhhc0hhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCk7Ci0gICAgICAgIGRlYnVnZ2VyLT5leGNlcHRpb24oZGVidWdn
ZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNv
ZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSwgaGFz
SGFuZGxlcik7CisgICAgICAgIGRlYnVnZ2VyLT5leGNlcHRpb24oZGVidWdnZXJDYWxsRnJhbWUs
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+bGlu
ZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSwgMCwgaGFzSGFuZGxlcik7
CiAgICAgfQogCiAgICAgLy8gQ2FsY3VsYXRlIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIHZQQywgdW53
aW5kaW5nIGNhbGwgZnJhbWVzIGFzIG5lY2Vzc2FyeS4KQEAgLTE2NDMsNyArMTY0Myw3IEBAIEpT
VmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFt
ZSogY2FsbEZyYW1lLCBKU1ZhbHVlCiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsK
IH0KIAotTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRlYnVnKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RM
aW5lKQorTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRlYnVnKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RM
aW5lLCBpbnQgY29sdW1uKQogewogICAgIERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNhbGxGcmFtZS0+
ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpOwogICAgIGlmICghZGVidWdnZXIpCkBA
IC0xNjUxLDIyICsxNjUxLDIyIEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJldGVyOjpkZWJ1
ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rCiAKICAgICBzd2l0
Y2ggKGRlYnVnSG9va0lEKSB7CiAgICAgICAgIGNhc2UgRGlkRW50ZXJDYWxsRnJhbWU6Ci0gICAg
ICAgICAgICBkZWJ1Z2dlci0+Y2FsbEV2ZW50KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGZpcnN0TGluZSk7CisgICAgICAg
ICAgICBkZWJ1Z2dlci0+Y2FsbEV2ZW50KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2so
KS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGZpcnN0TGluZSwgY29sdW1uKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBXaWxsTGVhdmVDYWxsRnJhbWU6Ci0gICAg
ICAgICAgICBkZWJ1Z2dlci0+cmV0dXJuRXZlbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgbGFzdExpbmUpOworICAgICAg
ICAgICAgZGVidWdnZXItPnJldHVybkV2ZW50KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5lLCBjb2x1bW4pOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFdpbGxFeGVjdXRlU3RhdGVtZW50Ogot
ICAgICAgICAgICAgZGVidWdnZXItPmF0U3RhdGVtZW50KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGZpcnN0TGluZSk7Cisg
ICAgICAgICAgICBkZWJ1Z2dlci0+YXRTdGF0ZW1lbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNv
ZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgZmlyc3RMaW5lLCBjb2x1
bW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFdpbGxFeGVjdXRlUHJvZ3Jh
bToKLSAgICAgICAgICAgIGRlYnVnZ2VyLT53aWxsRXhlY3V0ZVByb2dyYW0oY2FsbEZyYW1lLCBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgZmly
c3RMaW5lKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT53aWxsRXhlY3V0ZVByb2dyYW0oY2FsbEZy
YW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQo
KSwgZmlyc3RMaW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNl
IERpZEV4ZWN1dGVQcm9ncmFtOgotICAgICAgICAgICAgZGVidWdnZXItPmRpZEV4ZWN1dGVQcm9n
cmFtKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkt
PnNvdXJjZUlEKCksIGxhc3RMaW5lKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRFeGVjdXRl
UHJvZ3JhbShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJs
ZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgY2FzZSBEaWRSZWFjaEJyZWFrcG9pbnQ6Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+
ZGlkUmVhY2hCcmVha3BvaW50KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3du
ZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5lKTsKKyAgICAgICAgICAgIGRlYnVn
Z2VyLT5kaWRSZWFjaEJyZWFrcG9pbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
LT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgbGFzdExpbmUsIGNvbHVtbik7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgfQogfQpAQCAtNTI0NSw3ICs1MjQ1LDcgQEAgc2tpcF9pZF9j
dXN0b21fc2VsZjoKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0KICAgICBERUZJ
TkVfT1BDT0RFKG9wX2RlYnVnKSB7Ci0gICAgICAgIC8qIGRlYnVnIGRlYnVnSG9va0lEKG4pIGZp
cnN0TGluZShuKSBsYXN0TGluZShuKQorICAgICAgICAvKiBkZWJ1ZyBkZWJ1Z0hvb2tJRChuKSBm
aXJzdExpbmUobikgbGFzdExpbmUobikgY29sdW1uKG4pCiAKICAgICAgICAgIE5vdGlmaWVzIHRo
ZSBkZWJ1Z2dlciBvZiB0aGUgY3VycmVudCBzdGF0ZSBvZiBleGVjdXRpb24uIFRoaXMgb3Bjb2Rl
CiAgICAgICAgICBpcyBvbmx5IGdlbmVyYXRlZCB3aGlsZSB0aGUgZGVidWdnZXIgaXMgYXR0YWNo
ZWQuCkBAIC01MjUzLDggKzUyNTMsMTAgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAg
aW50IGRlYnVnSG9va0lEID0gdlBDWzFdLnUub3BlcmFuZDsKICAgICAgICAgaW50IGZpcnN0TGlu
ZSA9IHZQQ1syXS51Lm9wZXJhbmQ7CiAgICAgICAgIGludCBsYXN0TGluZSA9IHZQQ1szXS51Lm9w
ZXJhbmQ7CisgICAgICAgIGludCBjb2x1bW4gPSB2UENbNF0udS5vcGVyYW5kOwogCi0gICAgICAg
IGRlYnVnKGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwg
Zmlyc3RMaW5lLCBsYXN0TGluZSk7CisKKyAgICAgICAgZGVidWcoY2FsbEZyYW1lLCBzdGF0aWNf
Y2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lLCBjb2x1
bW4pOwogCiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2RlYnVnKTsKICAgICAgICAg
TkVYVF9JTlNUUlVDVElPTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCA4NjYzYmY4ZWMzODNmYzk2MDljZTRhNjA1NWQ5NzUzZmZk
MDZjYmJiLi5mNGNjZDk5NWM5NmJmMGM5ZDZkNmIzMGQyNTA2ZGY3YzBiY2NkMTM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaApAQCAtMjQw
LDcgKzI0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTYW1wbGluZ1Rvb2wqIHNhbXBs
ZXIoKSB7IHJldHVybiBtX3NhbXBsZXIuZ2V0KCk7IH0KIAogICAgICAgICBORVZFUl9JTkxJTkUg
SGFuZGxlckluZm8qIHRocm93RXhjZXB0aW9uKENhbGxGcmFtZSomLCBKU1ZhbHVlJiwgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBkZWJ1ZyhDYWxs
RnJhbWUqLCBEZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKTsKKyAgICAg
ICAgTkVWRVJfSU5MSU5FIHZvaWQgZGVidWcoQ2FsbEZyYW1lKiwgRGVidWdIb29rSUQsIGludCBm
aXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVtbik7CiAgICAgICAgIHN0YXRpYyBjb25z
dCBVU3RyaW5nIGdldFRyYWNlTGluZShDYWxsRnJhbWUqLCBTdGFja0ZyYW1lQ29kZVR5cGUsIGNv
bnN0IFVTdHJpbmcmLCBpbnQpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCBnZXRTdGFja1RyYWNlKEpTR2xvYmFsRGF0YSosIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0
cyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGFkZFN0YWNrVHJhY2VJZk5lY2Vzc2FyeShDYWxsRnJh
bWUqLCBKU09iamVjdCogZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAKaW5kZXggYzBhZjZmOWU5YmJiNTkwYTM2NTIxNjA3Zjc3MjE5NTZlN2VkNjk1Ny4uNDIx
Y2Y1YmM2MWRjMDU3MWE5ZDRjZjc3MjY4NGVhMDU3Nzg0MWU0YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xMTU4LDYgKzExNTgsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIHN0dWJD
YWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKSk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVk
SW1tMzIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7
CiAgICAgc3R1YkNhbGwuY2FsbCgpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggMDk1ZWE1N2QzNDlmYzI2NTc0YTMyNzhl
YzAwYzEyMGIwZGRiNzM0OS4uNzBhNjA4ZTNhZmQwNTAyYWZkZjdlZDcwNzc2ZTk3ZTYxMjdjZGVl
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApA
QCAtMTQ3OCw2ICsxNDc4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW0zMihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
SW1tMzIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgIHN0dWJDYWxsLmFk
ZEFyZ3VtZW50KEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpKTsKKyAgICBz
dHViQ2FsbC5hZGRBcmd1bWVudChJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5k
KSk7CiAgICAgc3R1YkNhbGwuY2FsbCgpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCmluZGV4IDBmMDNhMGE0YTk0NmNjODBjNDE0M2M0ZmIyOWE0NjIwYWUx
YTcxNDAuLjcxMDBhMGMxOTRjZDQwZjRmNmQ5ZTkzODFmNzMyZWRjMTViNDY4Y2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0zNDAzLDggKzM0MDMsOSBAQCBERUZJ
TkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9kZWJ1ZykKICAgICBpbnQgZGVidWdIb29rSUQgPSBz
dGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKTsKICAgICBpbnQgZmlyc3RMaW5lID0gc3RhY2tGcmFt
ZS5hcmdzWzFdLmludDMyKCk7CiAgICAgaW50IGxhc3RMaW5lID0gc3RhY2tGcmFtZS5hcmdzWzJd
LmludDMyKCk7CisgICAgaW50IGNvbHVtbiA9IHN0YWNrRnJhbWUuYXJnc1szXS5pbnQzMigpOwog
Ci0gICAgc3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+ZGVidWcoY2FsbEZyYW1l
LCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RM
aW5lKTsKKyAgICBzdGFja0ZyYW1lLmdsb2JhbERhdGEtPmludGVycHJldGVyLT5kZWJ1ZyhjYWxs
RnJhbWUsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwg
bGFzdExpbmUsIGNvbHVtbik7CiB9CiAKIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCB2bV90
aHJvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3Bw
CmluZGV4IGQyZDc0M2UwYWM2MmZhMDZkM2EwMzc5M2NmZDJlYTk3Y2I0M2NkZDIuLjU4YmYxYmRl
YjQ3Y2UzYWVlNmNjY2FhODZhYTUxYTVkNDNkYWVhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTYwMSw4ICsxNjAxLDkgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlYnVnKQogICAgIGludCBkZWJ1Z0hvb2tJRCA9
IHBjWzFdLnUub3BlcmFuZDsKICAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOwog
ICAgIGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKLSAgICAKLSAgICBnbG9iYWxEYXRh
LmludGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdI
b29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICBpbnQgY29sdW1uID0gcGNbNF0udS5v
cGVyYW5kOworCisgICAgZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+ZGVidWcoZXhlYywgc3RhdGlj
X2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSwgY29s
dW1uKTsKICAgICAKICAgICBMTElOVF9FTkQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmgKaW5kZXggZDRjMTcwNjE3MzliOTNmYzAxZmU0MjY1MzNhMWIzNjFm
N2MzZGZlNS4uMGE3MWYxMjk0YWFhYzRlN2E2MWViMzEwODc0OWQ4YjAwNjkxYzc4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTExMiw4ICsxMTIsOCBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGludCAgRG9udEJ1aWxkS2V5d29yZHMgPSAwOwog
ICAgIHN0YXRpYyBjb25zdCBpbnQgIERvbnRCdWlsZFN0cmluZ3MgPSAwOwogCi0gICAgRXhwcmVz
c2lvbk5vZGUqIG1ha2VCaW5hcnlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgdG9rZW4sIHN0ZDo6
cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4sIHN0ZDo6cGFpcjxFeHByZXNzaW9u
Tm9kZSosIEJpbmFyeU9wSW5mbz4pOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRnVuY3Rpb25D
YWxsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGZ1bmMsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZUJpbmFyeU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50IHRva2VuLCBz
dGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+LCBzdGQ6OnBhaXI8RXhwcmVz
c2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+KTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUZ1bmN0
aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGZ1bmMs
IEFyZ3VtZW50c05vZGUqIGFyZ3MsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKIAog
ICAgIEpTQzo6U291cmNlRWxlbWVudHMqIGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkgeyByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIEpTQzo6U291cmNlRWxlbWVudHMoKTsgfQogCkBAIC0xMjQsMTY4
ICsxMjQsMTY4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kVG9Db21tYShDb21tYU5vZGUq
IGNvbW1hTm9kZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgY29tbWFOb2RlLT5hcHBlbmQoZXhw
cik7IH0KIAotICAgIENvbW1hTm9kZSogY3JlYXRlQ29tbWFFeHByKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogcmhzKSB7IHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgQ29tbWFOb2RlKGxpbmVOdW1iZXIsIGxocywgcmhzKTsgfQotCi0gICAgRXhw
cmVzc2lvbk5vZGUqIG1ha2VBc3NpZ25Ob2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogbGVmdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBsZWZ0SGFzQXNz
aWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3Qs
IGludCBlbmQpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlUHJlZml4Tm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGlu
dCBlbmQpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlUG9zdGZpeE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQg
ZW5kKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZVR5cGVPZk5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VEZWxldGVOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSosIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQg
ZW5kKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZU5lZ2F0ZU5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXR3aXNlTm90Tm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqKTsKLSAgICBFeHByZXNzaW9uTm9kZSog
bWFrZU11bHROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlRGl2Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBF
eHByZXNzaW9uTm9kZSogbWFrZU1vZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VBZGROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlU3ViTm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdFhPck5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRBbmRO
b2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUq
IHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBt
YWtlQml0T3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlTGVmdFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
LSAgICBFeHByZXNzaW9uTm9kZSogbWFrZVJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlVVJpZ2h0U2hpZnROb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZUxvZ2ljYWxOb3QoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9naWNhbE5vdE5vZGUobGluZU51bWJlciwgZXhwcik7IH0K
LSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlVW5hcnlQbHVzKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05v
ZGUobGluZU51bWJlciwgZXhwcik7IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlVm9pZChp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgQ29tbWFOb2RlKiBjcmVh
dGVDb21tYUV4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIHJocykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IENvbW1hTm9kZShsb2NhdGlvbiwgbGhzLCByaHMpOyB9CisKKyAgICBFeHByZXNzaW9uTm9kZSog
bWFrZUFzc2lnbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxl
ZnQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgbGVmdEhhc0Fzc2lnbm1l
bnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQg
ZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3Qs
IGludCBlbmQpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlUG9zdGZpeE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQg
ZGl2b3QsIGludCBlbmQpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlVHlwZU9mTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOworICAgIEV4cHJlc3Npb25Ob2Rl
KiBtYWtlRGVsZXRlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSos
IGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFr
ZU5lZ2F0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAg
ICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdHdpc2VOb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VNdWx0Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2Rl
KiBtYWtlRGl2Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVm
dCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAg
IEV4cHJlc3Npb25Ob2RlKiBtYWtlTW9kTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQWRkTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlU3ViTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25O
b2RlKiBtYWtlQml0WE9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
OworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0QW5kTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0T3JOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9k
ZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUq
IG1ha2VMZWZ0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VSaWdodFNoaWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlVVJpZ2h0U2hp
ZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHBy
ZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisKKyAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlTG9naWNhbE5vdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExv
Z2ljYWxOb3ROb2RlKGxvY2F0aW9uLCBleHByKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVVbmFyeVBsdXMoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbmFyeVBsdXNOb2RlKGxvY2F0
aW9uLCBleHByKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVWb2lkKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQogICAgIHsKICAgICAg
ICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVm9p
ZE5vZGUobGluZU51bWJlciwgZXhwcik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgVm9pZE5vZGUobG9jYXRpb24sIGV4cHIpOwogICAgIH0KLSAgICBFeHByZXNzaW9uTm9kZSog
dGhpc0V4cHIoaW50IGxpbmVOdW1iZXIpCisgICAgRXhwcmVzc2lvbk5vZGUqIHRoaXNFeHByKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCiAgICAgewogICAgICAgICB1c2VzVGhpcygp
OwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFRoaXNOb2RlKGxpbmVOdW1iZXIp
OworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFRoaXNOb2RlKGxvY2F0aW9uKTsK
ICAgICB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVJlc29sdmUoaW50IGxpbmVOdW1iZXIs
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgc3RhcnQpCisgICAgRXhwcmVzc2lvbk5vZGUq
IGNyZWF0ZVJlc29sdmUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRl
bnRpZmllciogaWRlbnQsIGludCBzdGFydCkKICAgICB7CiAgICAgICAgIGlmIChtX2dsb2JhbERh
dGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9PSAqaWRlbnQpCiAgICAgICAgICAgICB1c2Vz
QXJndW1lbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVzb2x2ZU5v
ZGUobGluZU51bWJlciwgKmlkZW50LCBzdGFydCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgUmVzb2x2ZU5vZGUobG9jYXRpb24sICppZGVudCwgc3RhcnQpOwogICAgIH0KLSAg
ICBFeHByZXNzaW9uTm9kZSogY3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQgbGluZU51bWJlcikgeyBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE9iamVjdExpdGVyYWxOb2RlKGxpbmVOdW1iZXIpOyB9
Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU9iamVjdExpdGVyYWwoaW50IGxpbmVOdW1iZXIs
IFByb3BlcnR5TGlzdE5vZGUqIHByb3BlcnRpZXMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBPYmplY3RMaXRlcmFsTm9kZShsaW5lTnVtYmVyLCBwcm9wZXJ0aWVzKTsgfQorICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVPYmplY3RMaXRlcmFsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24pIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBPYmplY3RMaXRlcmFsTm9kZShsb2Nh
dGlvbik7IH0KKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlT2JqZWN0TGl0ZXJhbChjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eUxpc3ROb2RlKiBwcm9wZXJ0aWVzKSB7
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgT2JqZWN0TGl0ZXJhbE5vZGUobG9jYXRpb24sIHBy
b3BlcnRpZXMpOyB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxpbmVO
dW1iZXIsIGludCBlbGlzaW9ucykKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50IGVsaXNpb25zKQogICAgIHsKICAgICAg
ICAgaWYgKGVsaXNpb25zKQogICAgICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJyYXlOb2RlKGxpbmVOdW1iZXIsIGVsaXNpb25zKTsK
KyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcnJheU5vZGUobG9jYXRpb24sIGVs
aXNpb25zKTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxp
bmVOdW1iZXIsIEVsZW1lbnROb2RlKiBlbGVtcykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IEFycmF5Tm9kZShsaW5lTnVtYmVyLCBlbGVtcyk7IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIGludCBlbGlzaW9ucywgRWxlbWVudE5vZGUqIGVsZW1z
KQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJheShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFbGVtZW50Tm9kZSogZWxlbXMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBBcnJheU5vZGUobG9jYXRpb24sIGVsZW1zKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVBcnJheShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBpbnQgZWxpc2lvbnMsIEVs
ZW1lbnROb2RlKiBlbGVtcykKICAgICB7CiAgICAgICAgIGlmIChlbGlzaW9ucykKICAgICAgICAg
ICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFy
cmF5Tm9kZShsaW5lTnVtYmVyLCBlbGlzaW9ucywgZWxlbXMpOworICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsb2NhdGlvbiwgZWxpc2lvbnMsIGVsZW1zKTsKICAg
ICB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bWJlckV4cHIoaW50IGxpbmVOdW1iZXIs
IGRvdWJsZSBkKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdW1iZXJFeHByKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGRvdWJsZSBkKQogICAgIHsKICAgICAgICAgaW5jQ29u
c3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTnVtYmVyTm9kZShs
aW5lTnVtYmVyLCBkKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdW1iZXJO
b2RlKGxvY2F0aW9uLCBkKTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlU3Ry
aW5nKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBzdHJpbmcpCisgICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZVN0cmluZyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBj
b25zdCBJZGVudGlmaWVyKiBzdHJpbmcpCiAgICAgewogICAgICAgICBpbmNDb25zdGFudHMoKTsK
LSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBTdHJpbmdOb2RlKGxpbmVOdW1iZXIs
ICpzdHJpbmcpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN0cmluZ05vZGUo
bG9jYXRpb24sICpzdHJpbmcpOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVC
b29sZWFuKGludCBsaW5lTnVtYmVyLCBib29sIGIpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZUJvb2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgYm9vbCBiKQogICAgIHsK
ICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgQm9vbGVhbk5vZGUobGluZU51bWJlciwgYik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgQm9vbGVhbk5vZGUobG9jYXRpb24sIGIpOwogICAgIH0KIAotICAgIEV4cHJlc3Np
b25Ob2RlKiBjcmVhdGVOdWxsKGludCBsaW5lTnVtYmVyKQorICAgIEV4cHJlc3Npb25Ob2RlKiBj
cmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCiAgICAgewogICAgICAg
ICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdWxs
Tm9kZShsaW5lTnVtYmVyKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdWxs
Tm9kZShsb2NhdGlvbik7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJyYWNr
ZXRBY2Nlc3MoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9u
Tm9kZSogcHJvcGVydHksIGJvb2wgcHJvcGVydHlIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBp
bnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJyYWNrZXRBY2Nl
c3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eSwgYm9vbCBwcm9wZXJ0eUhhc0Fzc2lnbm1lbnRzLCBp
bnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIEJyYWNrZXRBY2Nl
c3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJhY2tldEFjY2Vzc29yTm9kZShs
aW5lTnVtYmVyLCBiYXNlLCBwcm9wZXJ0eSwgcHJvcGVydHlIYXNBc3NpZ25tZW50cyk7CisgICAg
ICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJhY2tl
dEFjY2Vzc29yTm9kZShsb2NhdGlvbiwgYmFzZSwgcHJvcGVydHksIHByb3BlcnR5SGFzQXNzaWdu
bWVudHMpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3Qs
IGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVEb3RBY2Nlc3MoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQp
CisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciogcHJv
cGVydHksIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRG90
QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIERvdEFjY2Vzc29yTm9kZShs
aW5lTnVtYmVyLCBiYXNlLCAqcHJvcGVydHkpOworICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5v
ZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRG90QWNjZXNzb3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAq
cHJvcGVydHkpOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2
b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVSZWdFeHAoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIHBhdHRl
cm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBpbnQgc3RhcnQpCisgICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50IHN0YXJ0KQog
ICAgIHsKICAgICAgICAgaWYgKFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4udXN0cmluZygpKSkK
ICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBSZWdFeHBOb2RlKiBub2RlID0gbmV3ICht
X2dsb2JhbERhdGEpIFJlZ0V4cE5vZGUobGluZU51bWJlciwgcGF0dGVybiwgZmxhZ3MpOworICAg
ICAgICBSZWdFeHBOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFJlZ0V4cE5vZGUobG9j
YXRpb24sIHBhdHRlcm4sIGZsYWdzKTsKICAgICAgICAgaW50IHNpemUgPSBwYXR0ZXJuLmxlbmd0
aCgpICsgMjsgLy8gKyAyIGZvciB0aGUgdHdvIC8ncwogICAgICAgICBzZXRFeGNlcHRpb25Mb2Nh
dGlvbihub2RlLCBzdGFydCwgc3RhcnQgKyBzaXplLCBzdGFydCArIHNpemUpOwogICAgICAgICBy
ZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTmV3RXhwcihp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3Vt
ZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUq
IGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3VtZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2
b3QsIGludCBlbmQpCiAgICAgewotICAgICAgICBOZXdFeHByTm9kZSogbm9kZSA9IG5ldyAobV9n
bG9iYWxEYXRhKSBOZXdFeHByTm9kZShsaW5lTnVtYmVyLCBleHByLCBhcmd1bWVudHMpOworICAg
ICAgICBOZXdFeHByTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBOZXdFeHByTm9kZShs
b2NhdGlvbiwgZXhwciwgYXJndW1lbnRzKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24o
bm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAK
LSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTmV3RXhwcihpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgTmV3RXhwck5v
ZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTmV3RXhwck5vZGUobGluZU51bWJlciwgZXhw
cik7CisgICAgICAgIE5ld0V4cHJOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIE5ld0V4
cHJOb2RlKGxvY2F0aW9uLCBleHByKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9k
ZSwgc3RhcnQsIGVuZCwgZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAg
RXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5v
ZGUqIHJocykKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQ29uZGl0aW9uYWxFeHByKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiByaHMpCiAgICAgewotICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbmRpdGlvbmFsTm9kZShsaW5lTnVtYmVyLCBjb25k
aXRpb24sIGxocywgcmhzKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBDb25k
aXRpb25hbE5vZGUobG9jYXRpb24sIGNvbmRpdGlvbiwgbGhzLCByaHMpOwogICAgIH0KIAotICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBc3NpZ25SZXNvbHZlKGludCBsaW5lTnVtYmVyLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJocywgaW50IHN0YXJ0LCBpbnQg
ZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFzc2lnblJlc29sdmUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEV4cHJlc3Npb25Ob2RlKiByaHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogICAg
IHsKICAgICAgICAgaWYgKHJocy0+aXNGdW5jRXhwck5vZGUoKSkKICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEZ1bmNFeHByTm9kZSo+KHJocyktPmJvZHkoKS0+c2V0SW5mZXJyZWROYW1lKGlkZW50
KTsKLSAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
QXNzaWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwgaWRlbnQsIHJocyk7CisgICAgICAgIEFzc2ln
blJlc29sdmVOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnblJlc29sdmVOb2Rl
KGxvY2F0aW9uLCBpZGVudCwgcmhzKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9k
ZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAg
ICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rpb25FeHByKGludCBsaW5lTnVtYmVyLCBjb25z
dCBJZGVudGlmaWVyKiBuYW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0ZXJOb2Rl
KiBwYXJhbWV0ZXJzLCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJv
ZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRl
RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50
aWZpZXIqIG5hbWUsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFtZXRlck5vZGUqIHBhcmFt
ZXRlcnMsIGludCBvcGVuQnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0
TGluZSwgaW50IGJvZHlFbmRMaW5lKQogICAgIHsKLSAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1
bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4cHJOb2RlKGxpbmVOdW1iZXIsICpuYW1lLCBi
b2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNl
UG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7Ci0gICAgICAgIGJvZHktPnNldExvYyhi
b2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0
ID0gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgKm5hbWUsIGJvZHks
IG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3Ms
IGJvZHlTdGFydExpbmUpLCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlT
dGFydExpbmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAotICAgIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZUZ1bmN0aW9uQm9k
eShpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmljdENvbnRleHQpCisgICAgRnVuY3Rpb25Cb2R5
Tm9kZSogY3JlYXRlRnVuY3Rpb25Cb2R5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGJvb2wgaW5TdHJpY3RDb250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9k
eU5vZGU6OmNyZWF0ZShtX2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCk7
CisgICAgICAgIHJldHVybiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUobV9nbG9iYWxEYXRhLCBs
b2NhdGlvbiwgaW5TdHJpY3RDb250ZXh0KTsKICAgICB9CiAgICAgCi0gICAgdGVtcGxhdGUgPGJv
b2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShpbnQgbGluZU51
bWJlciwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIFBh
cmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgaW50IG9wZW5CcmFj
ZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExp
bmUpCisgICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0
ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6
OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1z
LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFj
ZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkKICAgICB7CiAgICAgICAg
IEFTU0VSVChuYW1lKTsKLSAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlF
bmRMaW5lKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5l
LCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICBib2R5LT5zZXRJbmZlcnJlZE5hbWUoKm5hbWUp
OwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2Jh
bERhdGEsICpuYW1lLCBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4cHJOb2RlKGxpbmVOdW1iZXIs
IG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291
cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlT
dGFydExpbmUpLCBwYXJhbXMpLCB0eXBlKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCAqbmFtZSwgbmV3IChtX2dsb2JhbERhdGEp
IEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxs
SWRlbnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBv
cywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtcyksIHR5cGUpOwogICAgIH0K
ICAgICAKLSAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNl
dHRlclByb3BlcnR5KEpTR2xvYmFsRGF0YSosIGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGU6
OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25C
b2R5Tm9kZSogYm9keSwgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBi
b2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCisgICAgdGVtcGxhdGUgPGJvb2w+IFByb3Bl
cnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShKU0dsb2JhbERhdGEqLCBjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91
YmxlIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwg
aW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBp
bnQgYm9keUVuZExpbmUpCiAgICAgewotICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGlu
ZSwgYm9keUVuZExpbmUpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3Bl
cnR5Tm9kZShtX2dsb2JhbERhdGEsIG5hbWUsIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5v
ZGUobGluZU51bWJlciwgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmll
ciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VC
cmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtcyksIHR5cGUpOworICAgICAgICBib2R5LT5z
ZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwg
bmFtZSwgbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgbV9nbG9iYWxE
YXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5z
dWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSks
IHBhcmFtcyksIHR5cGUpOwogICAgIH0KIAogICAgIEFyZ3VtZW50c05vZGUqIGNyZWF0ZUFyZ3Vt
ZW50cygpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudHNOb2RlKCk7IH0KICAg
ICBBcmd1bWVudHNOb2RlKiBjcmVhdGVBcmd1bWVudHMoQXJndW1lbnRMaXN0Tm9kZSogYXJncykg
eyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50c05vZGUoYXJncyk7IH0KLSAgICBB
cmd1bWVudExpc3ROb2RlKiBjcmVhdGVBcmd1bWVudHNMaXN0KGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogYXJnKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0
Tm9kZShsaW5lTnVtYmVyLCBhcmcpOyB9Ci0gICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJn
dW1lbnRzTGlzdChpbnQgbGluZU51bWJlciwgQXJndW1lbnRMaXN0Tm9kZSogYXJncywgRXhwcmVz
c2lvbk5vZGUqIGFyZykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5v
ZGUobGluZU51bWJlciwgYXJncywgYXJnKTsgfQorICAgIEFyZ3VtZW50TGlzdE5vZGUqIGNyZWF0
ZUFyZ3VtZW50c0xpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGFyZykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUo
bG9jYXRpb24sIGFyZyk7IH0KKyAgICBBcmd1bWVudExpc3ROb2RlKiBjcmVhdGVBcmd1bWVudHNM
aXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEFyZ3VtZW50TGlzdE5vZGUqIGFy
Z3MsIEV4cHJlc3Npb25Ob2RlKiBhcmcpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1
bWVudExpc3ROb2RlKGxvY2F0aW9uLCBhcmdzLCBhcmcpOyB9CiAKICAgICB0ZW1wbGF0ZSA8Ym9v
bD4gUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0
eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSkKICAg
ICB7CkBAIC0yOTQsOCArMjk0LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERhdGEsICpwcm9wZXJ0eU5hbWUsIG5vZGUs
IHR5cGUpOwogICAgIH0KICAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVQ
cm9wZXJ0eShKU0dsb2JhbERhdGEqLCBkb3VibGUgcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9k
ZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUp
OyB9Ci0gICAgUHJvcGVydHlMaXN0Tm9kZSogY3JlYXRlUHJvcGVydHlMaXN0KGludCBsaW5lTnVt
YmVyLCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
UHJvcGVydHlMaXN0Tm9kZShsaW5lTnVtYmVyLCBwcm9wZXJ0eSk7IH0KLSAgICBQcm9wZXJ0eUxp
c3ROb2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5Tm9kZSog
cHJvcGVydHksIFByb3BlcnR5TGlzdE5vZGUqIHRhaWwpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBQcm9wZXJ0eUxpc3ROb2RlKGxpbmVOdW1iZXIsIHByb3BlcnR5LCB0YWlsKTsgfQorICAg
IFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5KSB7IHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgUHJvcGVydHlMaXN0Tm9kZShsb2NhdGlvbiwgcHJvcGVydHkpOyB9CisgICAgUHJv
cGVydHlMaXN0Tm9kZSogY3JlYXRlUHJvcGVydHlMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIFByb3BlcnR5Tm9kZSogcHJvcGVydHksIFByb3BlcnR5TGlzdE5vZGUqIHRhaWwp
IHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eUxpc3ROb2RlKGxvY2F0aW9uLCBw
cm9wZXJ0eSwgdGFpbCk7IH0KIAogICAgIEVsZW1lbnROb2RlKiBjcmVhdGVFbGVtZW50TGlzdChp
bnQgZWxpc2lvbnMsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgRWxlbWVudE5vZGUoZWxpc2lvbnMsIGV4cHIpOyB9CiAgICAgRWxlbWVudE5vZGUqIGNy
ZWF0ZUVsZW1lbnRMaXN0KEVsZW1lbnROb2RlKiBlbGVtcywgaW50IGVsaXNpb25zLCBFeHByZXNz
aW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVsZW1lbnROb2RlKGVs
ZW1zLCBlbGlzaW9ucywgZXhwcik7IH0KQEAgLTMwOSwxOTEgKzMwOSwxOTEgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzZXRVc2VzQXJndW1lbnRzKEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUpIHsgbm9k
ZS0+c2V0VXNlc0FyZ3VtZW50cygpOyB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGdW5j
RGVjbFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVu
Y3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5C
cmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVu
ZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rp
b25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFj
ZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExp
bmUpCiAgICAgewotICAgICAgICBGdW5jRGVjbE5vZGUqIGRlY2wgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgRnVuY0RlY2xOb2RlKGxpbmVOdW1iZXIsICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1
YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwg
cGFyYW1ldGVycyk7CisgICAgICAgIEZ1bmNEZWNsTm9kZSogZGVjbCA9IG5ldyAobV9nbG9iYWxE
YXRhKSBGdW5jRGVjbE5vZGUobG9jYXRpb24sICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1
YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwg
cGFyYW1ldGVycyk7CiAgICAgICAgIGlmICgqbmFtZSA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5
TmFtZXMtPmFyZ3VtZW50cykKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKICAgICAgICAg
bV9zY29wZS5tX2Z1bmNEZWNsYXJhdGlvbnMtPmRhdGEuYXBwZW5kKGRlY2wtPmJvZHkoKSk7Ci0g
ICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSk7CisgICAgICAg
IGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwgbG9jYXRpb24uY29sdW1u
KTsKICAgICAgICAgcmV0dXJuIGRlY2w7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3Jl
YXRlQmxvY2tTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEpTQzo6U291cmNlRWxlbWVudHMqIGVs
ZW1lbnRzLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVCbG9ja1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBKU0M6
OlNvdXJjZUVsZW1lbnRzKiBlbGVtZW50cywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAg
ICAgewotICAgICAgICBCbG9ja05vZGUqIGJsb2NrID0gbmV3IChtX2dsb2JhbERhdGEpIEJsb2Nr
Tm9kZShsaW5lTnVtYmVyLCBlbGVtZW50cyk7Ci0gICAgICAgIGJsb2NrLT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lKTsKKyAgICAgICAgQmxvY2tOb2RlKiBibG9jayA9IG5ldyAobV9nbG9iYWxE
YXRhKSBCbG9ja05vZGUobG9jYXRpb24sIGVsZW1lbnRzKTsKKyAgICAgICAgYmxvY2stPnNldExv
YyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiBi
bG9jazsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVFeHByU3RhdGVtZW50KGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQor
ICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUV4cHJTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkK
ICAgICB7Ci0gICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgRXhwclN0YXRlbWVudE5vZGUobGluZU51bWJlciwgZXhwcik7Ci0gICAgICAgIHJlc3Vs
dC0+c2V0TG9jKHN0YXJ0LCBlbmQpOworICAgICAgICBFeHByU3RhdGVtZW50Tm9kZSogcmVzdWx0
ID0gbmV3IChtX2dsb2JhbERhdGEpIEV4cHJTdGF0ZW1lbnROb2RlKGxvY2F0aW9uLCBleHByKTsK
KyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY29sdW1uKTsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVJ
ZlN0YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3Rh
dGVtZW50Tm9kZSogdHJ1ZUJsb2NrLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlSWZTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogdHJ1ZUJsb2NrLCBpbnQg
c3RhcnQsIGludCBlbmQpCiAgICAgewotICAgICAgICBJZk5vZGUqIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBJZk5vZGUobGluZU51bWJlciwgY29uZGl0aW9uLCB0cnVlQmxvY2spOwotICAg
ICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAgICAgICAgSWZOb2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgSWZOb2RlKGxvY2F0aW9uLCBjb25kaXRpb24sIHRydWVCbG9j
ayk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGxvY2F0aW9uLmNvbHVtbik7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3Jl
YXRlSWZTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24s
IFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywgU3RhdGVtZW50Tm9kZSogZmFsc2VCbG9jaywgaW50
IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24s
IFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywgU3RhdGVtZW50Tm9kZSogZmFsc2VCbG9jaywgaW50
IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgSWZOb2RlKiByZXN1bHQgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgSWZFbHNlTm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24sIHRydWVCbG9jaywg
ZmFsc2VCbG9jayk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQpOworICAgICAg
ICBJZk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBJZkVsc2VOb2RlKGxvY2F0aW9u
LCBjb25kaXRpb24sIHRydWVCbG9jaywgZmFsc2VCbG9jayk7CisgICAgICAgIHJlc3VsdC0+c2V0
TG9jKHN0YXJ0LCBlbmQsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9yTG9vcChpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9u
LCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IHN0
YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckxvb3AoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyLCBFeHBy
ZXNzaW9uTm9kZSogY29uZGl0aW9uLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9k
ZSogc3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRm9yTm9k
ZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZvck5vZGUobGluZU51bWJlciwgaW5pdGlh
bGl6ZXIsIGNvbmRpdGlvbiwgaXRlciwgc3RhdGVtZW50cyk7CisgICAgICAgIEZvck5vZGUqIHJl
c3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JOb2RlKGxvY2F0aW9uLCBpbml0aWFsaXplciwg
Y29uZGl0aW9uLCBpdGVyLCBzdGF0ZW1lbnRzKTsKICAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3Rh
cnQsIGVuZCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogaXRlciwg
U3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQs
IGludCBpbml0U3RhcnQsIGludCBpbml0RW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkK
KyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBpbml0
aWFsaXplciwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMs
IGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kLCBpbnQgaW5pdFN0YXJ0LCBpbnQgaW5pdEVu
ZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBGb3JJbk5vZGUq
IHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JJbk5vZGUobV9nbG9iYWxEYXRhLCBsaW5l
TnVtYmVyLCAqaWRlbnQsIGluaXRpYWxpemVyLCBpdGVyLCBzdGF0ZW1lbnRzLCBpbml0U3RhcnQs
IGluaXRTdGFydCAtIHN0YXJ0LCBpbml0RW5kIC0gaW5pdFN0YXJ0KTsKLSAgICAgICAgcmVzdWx0
LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9ySW5Ob2RlKG1fZ2xvYmFsRGF0YSwgbG9jYXRpb24sICpp
ZGVudCwgaW5pdGlhbGl6ZXIsIGl0ZXIsIHN0YXRlbWVudHMsIGluaXRTdGFydCwgaW5pdFN0YXJ0
IC0gc3RhcnQsIGluaXRFbmQgLSBpbml0U3RhcnQpOworICAgICAgICByZXN1bHQtPnNldExvYyhz
dGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHNldEV4Y2VwdGlv
bkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGRpdm90ICsgMSwgZW5kKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBT
dGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQgZVN0YXJ0LCBpbnQgZURpdm90LCBpbnQgZUVu
ZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9v
cChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogbGhzLCBF
eHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IGVTdGFy
dCwgaW50IGVEaXZvdCwgaW50IGVFbmQsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAg
ICAgIEZvckluTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZvckluTm9kZShsaW5l
TnVtYmVyLCBsaHMsIGl0ZXIsIHN0YXRlbWVudHMpOwotICAgICAgICByZXN1bHQtPnNldExvYyhz
dGFydCwgZW5kKTsKKyAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgRm9ySW5Ob2RlKGxvY2F0aW9uLCBsaHMsIGl0ZXIsIHN0YXRlbWVudHMpOworICAgICAgICBy
ZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICBzZXRF
eGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFydCwgZURpdm90LCBlRW5kKTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVFbXB0eVN0
YXRlbWVudChpbnQgbGluZU51bWJlcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVtcHR5
U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKTsgfQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUVt
cHR5U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pIHsgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBFbXB0eVN0YXRlbWVudE5vZGUobG9jYXRpb24pOyB9CiAKLSAgICBT
dGF0ZW1lbnROb2RlKiBjcmVhdGVWYXJTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3Jl
YXRlVmFyU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewogICAgICAgICBTdGF0ZW1l
bnROb2RlKiByZXN1bHQ7CiAgICAgICAgIGlmICghZXhwcikKLSAgICAgICAgICAgIHJlc3VsdCA9
IG5ldyAobV9nbG9iYWxEYXRhKSBFbXB0eVN0YXRlbWVudE5vZGUobGluZU51bWJlcik7CisgICAg
ICAgICAgICByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRW1wdHlTdGF0ZW1lbnROb2RlKGxv
Y2F0aW9uKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChtX2dsb2Jh
bERhdGEpIFZhclN0YXRlbWVudE5vZGUobGluZU51bWJlciwgZXhwcik7Ci0gICAgICAgIHJlc3Vs
dC0+c2V0TG9jKHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChtX2dsb2Jh
bERhdGEpIFZhclN0YXRlbWVudE5vZGUobG9jYXRpb24sIGV4cHIpOworICAgICAgICByZXN1bHQt
PnNldExvYyhzdGFydCwgZW5kLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVJldHVyblN0YXRlbWVudChp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHJlc3Npb24sIGludCBlU3RhcnQsIGlu
dCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVSZXR1cm5TdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHJlc3Npb24sIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRM
aW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIFJldHVybk5vZGUqIHJlc3VsdCA9IG5l
dyAobV9nbG9iYWxEYXRhKSBSZXR1cm5Ob2RlKGxpbmVOdW1iZXIsIGV4cHJlc3Npb24pOworICAg
ICAgICBSZXR1cm5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmV0dXJuTm9kZShs
b2NhdGlvbiwgZXhwcmVzc2lvbik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3Vs
dCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5l
LCBlbmRMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBs
b2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0
YXRlbWVudE5vZGUqIGNyZWF0ZUJyZWFrU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgZVN0
YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlQnJlYWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAg
IHsKLSAgICAgICAgQnJlYWtOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJlYWtO
b2RlKG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlcik7CisgICAgICAgIEJyZWFrTm9kZSogcmVzdWx0
ID0gbmV3IChtX2dsb2JhbERhdGEpIEJyZWFrTm9kZShtX2dsb2JhbERhdGEsIGxvY2F0aW9uKTsK
ICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQp
OwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICBy
ZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQnJl
YWtTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQg
ZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlQnJlYWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQg
c3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIEJyZWFrTm9kZSogcmVzdWx0
ID0gbmV3IChtX2dsb2JhbERhdGEpIEJyZWFrTm9kZShsaW5lTnVtYmVyLCAqaWRlbnQpOworICAg
ICAgICBCcmVha05vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBCcmVha05vZGUobG9j
YXRpb24sICppZGVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0
YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRM
aW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlv
bi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgZVN0YXJ0
LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAg
IHsKLSAgICAgICAgQ29udGludWVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29u
dGludWVOb2RlKG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlcik7CisgICAgICAgIENvbnRpbnVlTm9k
ZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnRpbnVlTm9kZShtX2dsb2JhbERhdGEs
IGxvY2F0aW9uKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQs
IGVFbmQsIGVFbmQpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUp
OworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNv
bHVtbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50LCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExp
bmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBlU3Rh
cnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAg
IENvbnRpbnVlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnRpbnVlTm9kZShs
aW5lTnVtYmVyLCAqaWRlbnQpOworICAgICAgICBDb250aW51ZU5vZGUqIHJlc3VsdCA9IG5ldyAo
bV9nbG9iYWxEYXRhKSBDb250aW51ZU5vZGUobG9jYXRpb24sICppZGVudCk7CiAgICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAg
cmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVRyeVN0YXRlbWVudChp
bnQgbGluZU51bWJlciwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXIq
IGlkZW50LCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5
QmxvY2ssIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZVRyeVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1l
bnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUq
IGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jaywgaW50IHN0YXJ0TGluZSwg
aW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBUcnlOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgVHJ5Tm9kZShsaW5lTnVtYmVyLCB0cnlCbG9jaywgKmlkZW50LCBjYXRjaEJsb2Nr
LCBmaW5hbGx5QmxvY2spOworICAgICAgICBUcnlOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgVHJ5Tm9kZShsb2NhdGlvbiwgdHJ5QmxvY2ssICppZGVudCwgY2F0Y2hCbG9jaywgZmlu
YWxseUJsb2NrKTsKICAgICAgICAgaWYgKGNhdGNoQmxvY2spCiAgICAgICAgICAgICB1c2VzQ2F0
Y2goKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAg
ICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0
ZVN3aXRjaFN0YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIENs
YXVzZUxpc3ROb2RlKiBmaXJzdENsYXVzZXMsIENhc2VDbGF1c2VOb2RlKiBkZWZhdWx0Q2xhdXNl
LCBDbGF1c2VMaXN0Tm9kZSogc2Vjb25kQ2xhdXNlcywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExp
bmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlU3dpdGNoU3RhdGVtZW50KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBDbGF1c2VMaXN0Tm9k
ZSogZmlyc3RDbGF1c2VzLCBDYXNlQ2xhdXNlTm9kZSogZGVmYXVsdENsYXVzZSwgQ2xhdXNlTGlz
dE5vZGUqIHNlY29uZENsYXVzZXMsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsK
ICAgICAgICAgQ2FzZUJsb2NrTm9kZSogY2FzZXMgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ2FzZUJs
b2NrTm9kZShmaXJzdENsYXVzZXMsIGRlZmF1bHRDbGF1c2UsIHNlY29uZENsYXVzZXMpOwotICAg
ICAgICBTd2l0Y2hOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgU3dpdGNoTm9kZShs
aW5lTnVtYmVyLCBleHByLCBjYXNlcyk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGlu
ZSwgZW5kTGluZSk7CisgICAgICAgIFN3aXRjaE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxE
YXRhKSBTd2l0Y2hOb2RlKGxvY2F0aW9uLCBleHByLCBjYXNlcyk7CisgICAgICAgIHJlc3VsdC0+
c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaGlsZVN0YXRl
bWVudChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUq
IHN0YXRlbWVudCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlV2hpbGVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0
TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBXaGlsZU5vZGUqIHJlc3VsdCA9IG5l
dyAobV9nbG9iYWxEYXRhKSBXaGlsZU5vZGUobGluZU51bWJlciwgZXhwciwgc3RhdGVtZW50KTsK
LSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgV2hp
bGVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgV2hpbGVOb2RlKGxvY2F0aW9uLCBl
eHByLCBzdGF0ZW1lbnQpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExp
bmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0g
ICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRG9XaGlsZVN0YXRlbWVudChpbnQgbGluZU51bWJlciwg
U3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0
TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRG9XaGlsZVN0YXRl
bWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiBzdGF0
ZW1lbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkK
ICAgICB7Ci0gICAgICAgIERvV2hpbGVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
RG9XaGlsZU5vZGUobGluZU51bWJlciwgc3RhdGVtZW50LCBleHByKTsKLSAgICAgICAgcmVzdWx0
LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgRG9XaGlsZU5vZGUqIHJlc3Vs
dCA9IG5ldyAobV9nbG9iYWxEYXRhKSBEb1doaWxlTm9kZShsb2NhdGlvbiwgc3RhdGVtZW50LCBl
eHByKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlv
bi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZUxhYmVsU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnQsIGludCBlbmQp
CisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlTGFiZWxTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUq
IHN0YXRlbWVudCwgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgTGFiZWxOb2Rl
KiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTGFiZWxOb2RlKGxpbmVOdW1iZXIsICppZGVu
dCwgc3RhdGVtZW50KTsKKyAgICAgICAgTGFiZWxOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgTGFiZWxOb2RlKGxvY2F0aW9uLCAqaWRlbnQsIHN0YXRlbWVudCk7CiAgICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGVuZCwgZW5kKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaXRoU3RhdGVt
ZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSog
c3RhdGVtZW50LCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5l
KQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVdpdGhTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0
YXRlbWVudCwgaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkK
ICAgICB7CiAgICAgICAgIHVzZXNXaXRoKCk7Ci0gICAgICAgIFdpdGhOb2RlKiByZXN1bHQgPSBu
ZXcgKG1fZ2xvYmFsRGF0YSkgV2l0aE5vZGUobGluZU51bWJlciwgZXhwciwgc3RhdGVtZW50LCBl
bmQsIGVuZCAtIHN0YXJ0KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRM
aW5lKTsKKyAgICAgICAgV2l0aE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBXaXRo
Tm9kZShsb2NhdGlvbiwgZXhwciwgc3RhdGVtZW50LCBlbmQsIGVuZCAtIHN0YXJ0KTsKKyAgICAg
ICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0gICAgCiAgICAgCi0gICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlVGhyb3dTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBl
eHByLCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAg
IFN0YXRlbWVudE5vZGUqIGNyZWF0ZVRocm93U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQsIGlu
dCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgVGhyb3dOb2RlKiByZXN1
bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgVGhyb3dOb2RlKGxpbmVOdW1iZXIsIGV4cHIpOwotICAg
ICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICBUaHJvd05v
ZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBUaHJvd05vZGUobG9jYXRpb24sIGV4cHIp
OworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNv
bHVtbik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGVuZCwg
ZW5kKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlRGVidWdnZXIoaW50IGxpbmVOdW1iZXIsIGludCBzdGFydExpbmUsIGludCBl
bmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZURlYnVnZ2VyKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAg
ICAgICAgRGVidWdnZXJTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
RGVidWdnZXJTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpOwotICAgICAgICByZXN1bHQtPnNldExv
YyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5vZGUqIHJl
c3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBEZWJ1Z2dlclN0YXRlbWVudE5vZGUobG9jYXRpb24p
OworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNv
bHVtbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZUNvbnN0U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBDb25zdERlY2xOb2Rl
KiBkZWNscywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlQ29uc3RTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQ29u
c3REZWNsTm9kZSogZGVjbHMsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAg
ICAgICAgQ29uc3RTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29u
c3RTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGRlY2xzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgQ29uc3RTdGF0ZW1lbnROb2RlKiByZXN1
bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3RTdGF0ZW1lbnROb2RlKGxvY2F0aW9uLCBkZWNs
cyk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24u
Y29sdW1uKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBDb25zdERlY2xO
b2RlKiBhcHBlbmRDb25zdERlY2woaW50IGxpbmVOdW1iZXIsIENvbnN0RGVjbE5vZGUqIHRhaWws
IGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikKKyAg
ICBDb25zdERlY2xOb2RlKiBhcHBlbmRDb25zdERlY2woY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgQ29uc3REZWNsTm9kZSogdGFpbCwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRXhw
cmVzc2lvbk5vZGUqIGluaXRpYWxpemVyKQogICAgIHsKLSAgICAgICAgQ29uc3REZWNsTm9kZSog
cmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnN0RGVjbE5vZGUobGluZU51bWJlciwgKm5h
bWUsIGluaXRpYWxpemVyKTsKKyAgICAgICAgQ29uc3REZWNsTm9kZSogcmVzdWx0ID0gbmV3ICht
X2dsb2JhbERhdGEpIENvbnN0RGVjbE5vZGUobG9jYXRpb24sICpuYW1lLCBpbml0aWFsaXplcik7
CiAgICAgICAgIGlmICh0YWlsKQogICAgICAgICAgICAgdGFpbC0+bV9uZXh0ID0gcmVzdWx0Owog
ICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTExLDcgKzUxMSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9zY29wZS5tX3ZhckRlY2xhcmF0aW9ucy0+ZGF0YS5hcHBlbmQoc3RkOjptYWtlX3BhaXIo
aWRlbnQsIGF0dHJzKSk7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNvbWJpbmVDb21t
YU5vZGVzKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGlzdCwgRXhwcmVzc2lvbk5v
ZGUqIGluaXQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNvbWJpbmVDb21tYU5vZGVzKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsaXN0LCBFeHByZXNzaW9u
Tm9kZSogaW5pdCkKICAgICB7CiAgICAgICAgIGlmICghbGlzdCkKICAgICAgICAgICAgIHJldHVy
biBpbml0OwpAQCAtNTE5LDcgKzUxOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHN0YXRpY19j
YXN0PENvbW1hTm9kZSo+KGxpc3QpLT5hcHBlbmQoaW5pdCk7CiAgICAgICAgICAgICByZXR1cm4g
bGlzdDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbW1h
Tm9kZShsaW5lTnVtYmVyLCBsaXN0LCBpbml0KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBDb21tYU5vZGUobG9jYXRpb24sIGxpc3QsIGluaXQpOwogICAgIH0KIAogICAgIGlu
dCBldmFsQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2V2YWxDb3VudDsgfQpAQCAtNTQ3LDEwICs1
NDcsMTAgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQob3BlcmFuZFN0YWNrRGVwdGggPj0gMCk7
CiAgICAgICAgIG1fYmluYXJ5T3BlcmFuZFN0YWNrLnJlc2l6ZShtX2JpbmFyeU9wZXJhbmRTdGFj
ay5zaXplKCkgLSBhbW91bnQpOwogICAgIH0KLSAgICB2b2lkIGFwcGVuZEJpbmFyeU9wZXJhdGlv
bihpbnQgbGluZU51bWJlciwgaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50JiwgY29uc3QgQmlu
YXJ5T3BlcmFuZCYgbGhzLCBjb25zdCBCaW5hcnlPcGVyYW5kJiByaHMpCisgICAgdm9pZCBhcHBl
bmRCaW5hcnlPcGVyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50JiBv
cGVyYW5kU3RhY2tEZXB0aCwgaW50JiwgY29uc3QgQmluYXJ5T3BlcmFuZCYgbGhzLCBjb25zdCBC
aW5hcnlPcGVyYW5kJiByaHMpCiAgICAgewogICAgICAgICBvcGVyYW5kU3RhY2tEZXB0aCsrOwot
ICAgICAgICBtX2JpbmFyeU9wZXJhbmRTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIobWFrZUJp
bmFyeU5vZGUobGluZU51bWJlciwgbV9iaW5hcnlPcGVyYXRvclN0YWNrLmxhc3QoKS5maXJzdCwg
bGhzLCByaHMpLCBCaW5hcnlPcEluZm8obGhzLnNlY29uZCwgcmhzLnNlY29uZCkpKTsKKyAgICAg
ICAgbV9iaW5hcnlPcGVyYW5kU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG1ha2VCaW5hcnlO
b2RlKGxvY2F0aW9uLCBtX2JpbmFyeU9wZXJhdG9yU3RhY2subGFzdCgpLmZpcnN0LCBsaHMsIHJo
cyksIEJpbmFyeU9wSW5mbyhsaHMuc2Vjb25kLCByaHMuc2Vjb25kKSkpOwogICAgIH0KICAgICB2
b2lkIG9wZXJhdG9yU3RhY2tBcHBlbmQoaW50JiBvcGVyYXRvclN0YWNrRGVwdGgsIGludCBvcCwg
aW50IHByZWNlZGVuY2UpCiAgICAgewpAQCAtNTkyLDkgKzU5Miw5IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmFwcGVuZChBc3NpZ25tZW50SW5mbyhub2RlLCBzdGFy
dCwgZGl2b3QsIGFzc2lnbm1lbnRDb3VudCwgb3ApKTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlQXNzaWdubWVudChpbnQgbGluZU51bWJlciwgaW50JiBhc3NpZ25tZW50U3Rh
Y2tEZXB0aCwgRXhwcmVzc2lvbk5vZGUqIHJocywgaW50IGluaXRpYWxBc3NpZ25tZW50Q291bnQs
IGludCBjdXJyZW50QXNzaWdubWVudENvdW50LCBpbnQgbGFzdFRva2VuRW5kKQorICAgIEV4cHJl
c3Npb25Ob2RlKiBjcmVhdGVBc3NpZ25tZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGludCYgYXNzaWdubWVudFN0YWNrRGVwdGgsIEV4cHJlc3Npb25Ob2RlKiByaHMsIGludCBp
bml0aWFsQXNzaWdubWVudENvdW50LCBpbnQgY3VycmVudEFzc2lnbm1lbnRDb3VudCwgaW50IGxh
c3RUb2tlbkVuZCkKICAgICB7Ci0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiByZXN1bHQgPSBtYWtl
QXNzaWduTm9kZShsaW5lTnVtYmVyLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fbm9k
ZSwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX29wLCByaHMsIG1fYXNzaWdubWVudElu
Zm9TdGFjay5sYXN0KCkubV9pbml0QXNzaWdubWVudHMgIT0gaW5pdGlhbEFzc2lnbm1lbnRDb3Vu
dCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX2luaXRBc3NpZ25tZW50cyAhPSBjdXJy
ZW50QXNzaWdubWVudENvdW50LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fc3RhcnQs
IG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9kaXZvdCArIDEsIGxhc3RUb2tlbkVuZCk7
CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiByZXN1bHQgPSBtYWtlQXNzaWduTm9kZShsb2NhdGlv
biwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX25vZGUsIG1fYXNzaWdubWVudEluZm9T
dGFjay5sYXN0KCkubV9vcCwgcmhzLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1faW5p
dEFzc2lnbm1lbnRzICE9IGluaXRpYWxBc3NpZ25tZW50Q291bnQsIG1fYXNzaWdubWVudEluZm9T
dGFjay5sYXN0KCkubV9pbml0QXNzaWdubWVudHMgIT0gY3VycmVudEFzc2lnbm1lbnRDb3VudCwg
bV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5tX3N0YXJ0LCBtX2Fzc2lnbm1lbnRJbmZvU3Rh
Y2subGFzdCgpLm1fZGl2b3QgKyAxLCBsYXN0VG9rZW5FbmQpOwogICAgICAgICBtX2Fzc2lnbm1l
bnRJbmZvU3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICBhc3NpZ25tZW50U3RhY2tEZXB0aC0t
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNjM1LDkgKzYzNSw5IEBAIHByaXZhdGU6CiAg
ICAgICAgIG1fZXZhbENvdW50Kys7CiAgICAgICAgIG1fc2NvcGUubV9mZWF0dXJlcyB8PSBFdmFs
RmVhdHVyZTsKICAgICB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bWJlcihpbnQgbGlu
ZU51bWJlciwgZG91YmxlIGQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bWJlcihjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBkb3VibGUgZCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTnVtYmVyTm9kZShsaW5lTnVtYmVyLCBkKTsKKyAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdW1iZXJOb2RlKGxvY2F0aW9uLCBkKTsKICAg
ICB9CiAgICAgCiAgICAgSlNHbG9iYWxEYXRhKiBtX2dsb2JhbERhdGE7CkBAIC02NTAsMzMgKzY1
MCwzMyBAQCBwcml2YXRlOgogICAgIGludCBtX2V2YWxDb3VudDsKIH07CiAKLUV4cHJlc3Npb25O
b2RlKiBBU1RCdWlsZGVyOjptYWtlVHlwZU9mTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVR5cGVPZk5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCiB7
CiAgICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSog
cmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgVHlwZU9mUmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2
ZS0+aWRlbnRpZmllcigpKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUeXBl
T2ZSZXNvbHZlTm9kZShsb2NhdGlvbiwgcmVzb2x2ZS0+aWRlbnRpZmllcigpKTsKICAgICB9Ci0g
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUeXBlT2ZWYWx1ZU5vZGUobGluZU51bWJlciwg
ZXhwcik7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUeXBlT2ZWYWx1ZU5vZGUobG9j
YXRpb24sIGV4cHIpOwogfQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZURlbGV0
ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGlu
dCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGVsZXRl
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhw
ciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiB7CiAgICAgaWYgKCFleHByLT5pc0xv
Y2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlVmFsdWVO
b2RlKGxpbmVOdW1iZXIsIGV4cHIpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IERlbGV0ZVZhbHVlTm9kZShsb2NhdGlvbiwgZXhwcik7CiAgICAgaWYgKGV4cHItPmlzUmVzb2x2
ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJl
c29sdmVOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVs
ZXRlUmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBkaXZvdCwg
ZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIERlbGV0ZVJlc29sdmVOb2RlKGxvY2F0aW9uLCByZXNvbHZlLT5pZGVudGlmaWVyKCks
IGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIGlmIChleHBy
LT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2Rl
KiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAg
ICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZUJyYWNrZXROb2RlKGxpbmVOdW1i
ZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGRpdm90LCBkaXZvdCAt
IHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
RGVsZXRlQnJhY2tldE5vZGUobG9jYXRpb24sIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vi
c2NyaXB0KCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAg
IEFTU0VSVChleHByLT5pc0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUq
IGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlRG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwg
ZG90LT5pZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7Cisg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEZWxldGVEb3ROb2RlKGxvY2F0aW9uLCBkb3Qt
PmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTmVnYXRlTm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIG4pCitFeHByZXNzaW9uTm9kZSogQVNUQnVp
bGRlcjo6bWFrZU5lZ2F0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIG4pCiB7CiAgICAgaWYgKG4tPmlzTnVtYmVyKCkpIHsKICAgICAgICAgTnVt
YmVyTm9kZSogbnVtYmVyTm9kZSA9IHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihuKTsKQEAgLTY4
NCwxMjggKzY4NCwxMjggQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VOZWdhdGVO
b2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbikKICAgICAgICAgcmV0dXJuIG51
bWJlck5vZGU7CiAgICAgfQogCi0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOZWdhdGVO
b2RlKGxpbmVOdW1iZXIsIG4pOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTmVnYXRl
Tm9kZShsb2NhdGlvbiwgbik7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtl
Qml0d2lzZU5vdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXR3aXNlTm90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKIHsKICAgICBpZiAoZXhw
ci0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB+
dG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwciktPnZhbHVlKCkpKTsKLSAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdHdpc2VOb3ROb2RlKGxpbmVOdW1iZXIsIGV4cHIp
OworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxvY2F0aW9uLCB+dG9JbnQzMihzdGF0aWNf
Y2FzdDxOdW1iZXJOb2RlKj4oZXhwciktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIEJpdHdpc2VOb3ROb2RlKGxvY2F0aW9uLCBleHByKTsKIH0KIAotRXhwcmVzc2lv
bk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VNdWx0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTXVsdE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBleHByMSA9IGV4
cHIxLT5zdHJpcFVuYXJ5UGx1cygpOwogICAgIGV4cHIyID0gZXhwcjItPnN0cmlwVW5hcnlQbHVz
KCk7CiAKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0g
ICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgc3RhdGljX2Nhc3Q8TnVtYmVy
Tm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAqIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMikt
PnZhbHVlKCkpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxvY2F0aW9uLCBzdGF0aWNf
Y2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpICogc3RhdGljX2Nhc3Q8TnVtYmVyTm9k
ZSo+KGV4cHIyKS0+dmFsdWUoKSk7CiAKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgc3Rh
dGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSA9PSAxKQotICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobGluZU51bWJlciwgZXhwcjIpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobG9jYXRpb24s
IGV4cHIyKTsKIAogICAgIGlmIChleHByMi0+aXNOdW1iZXIoKSAmJiBzdGF0aWNfY2FzdDxOdW1i
ZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVtYmVyLCBleHByMSk7CisgICAgICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsb2NhdGlvbiwgZXhwcjEpOwogCi0g
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBNdWx0Tm9kZShsaW5lTnVtYmVyLCBleHByMSwg
ZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgTXVsdE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGl2Tm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGl2
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewog
ICAgIGV4cHIxID0gZXhwcjEtPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAgZXhwcjIgPSBleHByMi0+
c3RyaXBVbmFyeVBsdXMoKTsKIAogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+
aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBzdGF0
aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpIC8gc3RhdGljX2Nhc3Q8TnVtYmVy
Tm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBE
aXZOb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobG9jYXRpb24sIHN0YXRpY19jYXN0PE51bWJlck5v
ZGUqPihleHByMSktPnZhbHVlKCkgLyBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52
YWx1ZSgpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERpdk5vZGUobG9jYXRpb24s
IGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2Rl
KiBBU1RCdWlsZGVyOjptYWtlTW9kTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
K0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTW9kTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0
cmlwVW5hcnlQbHVzKCk7CiAgICAgZXhwcjIgPSBleHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKICAg
ICAKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAg
ICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgZm1vZChzdGF0aWNfY2FzdDxOdW1i
ZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIp
LT52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBNb2ROb2RlKGxpbmVO
dW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVy
biBjcmVhdGVOdW1iZXIobG9jYXRpb24sIGZtb2Qoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4
cHIxKS0+dmFsdWUoKSwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkp
OworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTW9kTm9kZShsb2NhdGlvbiwgZXhwcjEs
IGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1
aWxkZXI6Om1ha2VBZGROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBZGROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYm
IGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1i
ZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgKyBzdGF0aWNfY2Fz
dDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIEFkZE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8
TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSArIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihl
eHByMiktPnZhbHVlKCkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQWRkTm9kZShs
b2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VTdWJOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VTdWJOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgZXhwcjEgPSBl
eHByMS0+c3RyaXBVbmFyeVBsdXMoKTsKICAgICBleHByMiA9IGV4cHIyLT5zdHJpcFVuYXJ5UGx1
cygpOwogCiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQot
ICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRpY19jYXN0PE51bWJl
ck5vZGUqPihleHByMSktPnZhbHVlKCkgLSBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIp
LT52YWx1ZSgpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN1Yk5vZGUobGluZU51
bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJu
IGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+
dmFsdWUoKSAtIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOworICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgU3ViTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIy
LCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6
Om1ha2VMZWZ0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VMZWZ0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJl
cigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxp
bmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUo
KSkgPDwgKHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkp
ICYgMHgxZikpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVmdFNoaWZ0Tm9kZShs
aW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBy
ZXR1cm4gY3JlYXRlTnVtYmVyKGxvY2F0aW9uLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5v
ZGUqPihleHByMSktPnZhbHVlKCkpIDw8ICh0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2Rl
Kj4oZXhwcjIpLT52YWx1ZSgpKSAmIDB4MWYpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIExlZnRTaGlmdE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUmlnaHRTaGlmdE5v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVp
bGRlcjo6bWFrZVJpZ2h0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5p
c051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50
MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPj4gKHRvVUludDMy
KHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOwotICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmlnaHRTaGlmdE5vZGUobGluZU51bWJlciwgZXhw
cjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51
bWJlcihsb2NhdGlvbiwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52
YWx1ZSgpKSA+PiAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFs
dWUoKSkgJiAweDFmKSk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBSaWdodFNoaWZ0
Tm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAot
RXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VVUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVVS
aWdodFNoaWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB0b1VJbnQzMihzdGF0aWNf
Y2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA+PiAodG9VSW50MzIoc3RhdGljX2Nh
c3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7Ci0gICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGV4cHIx
LCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1i
ZXIobG9jYXRpb24sIHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZh
bHVlKCkpID4+ICh0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1
ZSgpKSAmIDB4MWYpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuc2lnbmVkUmln
aHRTaGlmdE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0T3JOb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VC
aXRPck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
IHsKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAg
ICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51bWJlciwgdG9JbnQzMihzdGF0aWNfY2FzdDxO
dW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSB8IHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVy
Tm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
Qml0T3JOb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobG9jYXRpb24sIHRvSW50MzIoc3RhdGljX2Nh
c3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgfCB0b0ludDMyKHN0YXRpY19jYXN0PE51
bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEJpdE9yTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRBbmROb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VCaXRBbmROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQot
ICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nh
c3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgJiB0b0ludDMyKHN0YXRpY19jYXN0PE51
bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEJpdEFuZE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1l
bnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgdG9JbnQzMihzdGF0
aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSAmIHRvSW50MzIoc3RhdGljX2Nh
c3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOworICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgQml0QW5kTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRYT3JOb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxk
ZXI6Om1ha2VCaXRYT3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJl
cigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3Rh
dGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgXiB0b0ludDMyKHN0YXRpY19j
YXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIEJpdFhPck5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgdG9JbnQz
MihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSBeIHRvSW50MzIoc3Rh
dGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOworICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgQml0WE9yTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5j
dGlvbkNhbGxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZnVuYywgQXJndW1l
bnRzTm9kZSogYXJncywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGZ1bmMsIEFyZ3VtZW50c05vZGUqIGFyZ3Ms
IGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlmICghZnVuYy0+aXNMb2Nh
dGlvbigpKQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbFZh
bHVlTm9kZShsaW5lTnVtYmVyLCBmdW5jLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5k
IC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2Fs
bFZhbHVlTm9kZShsb2NhdGlvbiwgZnVuYywgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVu
ZCAtIGRpdm90KTsKICAgICBpZiAoZnVuYy0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJl
c29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihmdW5jKTsKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllciA9IHJlc29sdmUtPmlkZW50aWZpZXIo
KTsKICAgICAgICAgaWYgKGlkZW50aWZpZXIgPT0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVz
LT5ldmFsKSB7CiAgICAgICAgICAgICB1c2VzRXZhbCgpOwotICAgICAgICAgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBFdmFsRnVuY3Rpb25DYWxsTm9kZShsaW5lTnVtYmVyLCBhcmdzLCBk
aXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICAgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBFdmFsRnVuY3Rpb25DYWxsTm9kZShsb2NhdGlvbiwgYXJncywgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICAgICAgfQotICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGxpbmVOdW1iZXIs
IGlkZW50aWZpZXIsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7Cisg
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUo
bG9jYXRpb24sIGlkZW50aWZpZXIsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CiAgICAgfQogICAgIGlmIChmdW5jLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewog
ICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tl
dEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwotICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSog
bm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShsaW5lTnVt
YmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBhcmdzLCBkaXZvdCwg
ZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0
Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShs
b2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgYXJncywgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICAgICAgbm9kZS0+c2V0U3ViZXhw
cmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZW5kT2Zmc2V0KCkpOwogICAg
ICAgICByZXR1cm4gbm9kZTsKICAgICB9CkBAIC04MTMsMTE4ICs4MTMsMTE4IEBAIEV4cHJlc3Np
b25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqCiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxE
b3RBY2Nlc3Nvck5vZGUqPihmdW5jKTsKICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKiBub2RlOwog
ICAgIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMt
PmNhbGwpCi0gICAgICAgIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ2FsbEZ1bmN0aW9uQ2Fs
bERvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdz
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBub2RlID0gbmV3
IChtX2dsb2JhbERhdGEpIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJh
c2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQg
LSBkaXZvdCk7CiAgICAgZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV9nbG9iYWxEYXRh
LT5wcm9wZXJ0eU5hbWVzLT5hcHBseSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRh
KSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+
aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwor
ICAgICAgICBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwg
ZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIGVsc2UKLSAgICAgICAgbm9kZSA9IG5l
dyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAt
IGRpdm90KTsKKyAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxE
b3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRp
dm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVz
c2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPmVuZE9mZnNldCgpKTsKICAgICByZXR1cm4gbm9k
ZTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaW5hcnlOb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgdG9rZW4sIHBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+
IGxocywgcGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4gcmhzKQorRXhwcmVzc2lv
bk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaW5hcnlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGludCB0b2tlbiwgcGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4g
bGhzLCBwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiByaHMpCiB7CiAgICAgc3dp
dGNoICh0b2tlbikgewogICAgIGNhc2UgT1I6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgTG9naWNhbE9wTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgT3BM
b2dpY2FsT3IpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxPcE5v
ZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxPcik7CiAKICAgICBj
YXNlIEFORDoKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMb2dpY2FsT3BOb2Rl
KGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxBbmQpOworICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxPcE5vZGUobG9jYXRpb24sIGxocy5m
aXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxBbmQpOwogCiAgICAgY2FzZSBCSVRPUjoKLSAgICAg
ICAgcmV0dXJuIG1ha2VCaXRPck5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3Qs
IHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlQml0T3JOb2Rl
KGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50
KTsKIAogICAgIGNhc2UgQklUWE9SOgotICAgICAgICByZXR1cm4gbWFrZUJpdFhPck5vZGUobGlu
ZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7
CisgICAgICAgIHJldHVybiBtYWtlQml0WE9yTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMu
Zmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIEJJVEFORDoKLSAg
ICAgICAgcmV0dXJuIG1ha2VCaXRBbmROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZp
cnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZUJpdEFu
ZE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2ln
bm1lbnQpOwogCiAgICAgY2FzZSBFUUVROgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEVxdWFsTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29u
ZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFcXVh
bE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2ln
bm1lbnQpOwogCiAgICAgY2FzZSBORToKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBOb3RFcXVhbE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNv
bmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTm90
RXF1YWxOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKIAogICAgIGNhc2UgU1RSRVE6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgU3RyaWN0RXF1YWxOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0
LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIFN0cmljdEVxdWFsTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJo
cy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIFNUUk5FUToKLSAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOb3RTdHJpY3RFcXVhbE5vZGUobGluZU51bWJlciwgbGhz
LmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTm90U3RyaWN0RXF1YWxOb2RlKGxvY2F0aW9uLCBsaHMu
Zmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2Ug
TFQ6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVzc05vZGUobGluZU51bWJl
ciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVzc05vZGUobG9jYXRpb24sIGxocy5maXJz
dCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBHVDoK
LSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBHcmVhdGVyTm9kZShsaW5lTnVtYmVy
LCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBHcmVhdGVyTm9kZShsb2NhdGlvbiwgbGhzLmZp
cnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIExF
OgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExlc3NFcU5vZGUobGluZU51bWJl
ciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVzc0VxTm9kZShsb2NhdGlvbiwgbGhzLmZp
cnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIEdF
OgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEdyZWF0ZXJFcU5vZGUobGluZU51
bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7Cisg
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgR3JlYXRlckVxTm9kZShsb2NhdGlvbiwg
bGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBj
YXNlIElOU1RBTkNFT0Y6IHsKLSAgICAgICAgSW5zdGFuY2VPZk5vZGUqIG5vZGUgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgSW5zdGFuY2VPZk5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmly
c3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIEluc3RhbmNlT2ZOb2RlKiBu
b2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEluc3RhbmNlT2ZOb2RlKGxvY2F0aW9uLCBsaHMuZmly
c3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKICAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24obm9kZSwgbGhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5zdGFydCwg
cmhzLnNlY29uZC5lbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKICAgICBjYXNl
IElOVE9LRU46IHsKLSAgICAgICAgSW5Ob2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIElu
Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3Np
Z25tZW50KTsKKyAgICAgICAgSW5Ob2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEluTm9k
ZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVu
dCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIGxocy5zZWNvbmQuc3RhcnQs
IHJocy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7
CiAgICAgfQogCiAgICAgY2FzZSBMU0hJRlQ6Ci0gICAgICAgIHJldHVybiBtYWtlTGVmdFNoaWZ0
Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3Np
Z25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VMZWZ0U2hpZnROb2RlKGxvY2F0aW9uLCBsaHMu
Zmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2Ug
UlNISUZUOgotICAgICAgICByZXR1cm4gbWFrZVJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGxo
cy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICBy
ZXR1cm4gbWFrZVJpZ2h0U2hpZnROb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwg
cmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgVVJTSElGVDoKLSAgICAgICAg
cmV0dXJuIG1ha2VVUmlnaHRTaGlmdE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmly
c3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlVVJpZ2h0
U2hpZnROb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKIAogICAgIGNhc2UgUExVUzoKLSAgICAgICAgcmV0dXJuIG1ha2VBZGROb2Rl
KGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1l
bnQpOworICAgICAgICByZXR1cm4gbWFrZUFkZE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhz
LmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBNSU5VUzoKLSAg
ICAgICAgcmV0dXJuIG1ha2VTdWJOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0
LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZVN1Yk5vZGUo
bG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQp
OwogCiAgICAgY2FzZSBUSU1FUzoKLSAgICAgICAgcmV0dXJuIG1ha2VNdWx0Tm9kZShsaW5lTnVt
YmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VNdWx0Tm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3Qs
IHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIERJVklERToKLSAgICAgICAg
cmV0dXJuIG1ha2VEaXZOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMu
c2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZURpdk5vZGUobG9jYXRp
b24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAg
ICAgY2FzZSBNT0Q6Ci0gICAgICAgIHJldHVybiBtYWtlTW9kTm9kZShsaW5lTnVtYmVyLCBsaHMu
Zmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0
dXJuIG1ha2VNb2ROb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29u
ZC5oYXNBc3NpZ25tZW50KTsKICAgICB9CiAgICAgQ1JBU0goKTsKICAgICByZXR1cm4gMDsKIH0K
IAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogbG9jLCBPcGVyYXRvciBvcCwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIsIGJvb2wgbG9jSGFzQXNzaWdubWVudHMsIGJvb2wgZXhwckhhc0Fzc2lnbm1lbnRzLCBpbnQg
c3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlQXNzaWduTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogbG9jLCBPcGVyYXRvciBvcCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGJvb2wgbG9jSGFz
QXNzaWdubWVudHMsIGJvb2wgZXhwckhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZv
dCwgaW50IGVuZCkKIHsKICAgICBpZiAoIWxvYy0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnbkVycm9yTm9kZShsaW5lTnVtYmVyLCBkaXZvdCwg
ZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIEFzc2lnbkVycm9yTm9kZShsb2NhdGlvbiwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVu
ZCAtIGRpdm90KTsKIAogICAgIGlmIChsb2MtPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBS
ZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4obG9jKTsKICAg
ICAgICAgaWYgKG9wID09IE9wRXF1YWwpIHsKICAgICAgICAgICAgIGlmIChleHByLT5pc0Z1bmNF
eHByTm9kZSgpKQogICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGV4
cHIpLT5ib2R5KCktPnNldEluZmVycmVkTmFtZShyZXNvbHZlLT5pZGVudGlmaWVyKCkpOwotICAg
ICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNz
aWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBleHByKTsK
KyAgICAgICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEp
IEFzc2lnblJlc29sdmVOb2RlKGxvY2F0aW9uLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIGV4cHIp
OwogICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBl
bmQpOwogICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVz
b2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwg
ZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIFJlYWRNb2RpZnlSZXNvbHZlTm9kZShsb2NhdGlvbiwgcmVzb2x2ZS0+aWRlbnRpZmll
cigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBpZiAobG9jLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUo
KSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8
QnJhY2tldEFjY2Vzc29yTm9kZSo+KGxvYyk7CiAgICAgICAgIGlmIChvcCA9PSBPcEVxdWFsKQot
ICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25CcmFja2V0Tm9kZShs
aW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBleHByLCBs
b2NIYXNBc3NpZ25tZW50cywgZXhwckhhc0Fzc2lnbm1lbnRzLCBicmFja2V0LT5kaXZvdCgpLCBi
cmFja2V0LT5kaXZvdCgpIC0gc3RhcnQsIGVuZCAtIGJyYWNrZXQtPmRpdm90KCkpOwotICAgICAg
ICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1v
ZGlmeUJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vi
c2NyaXB0KCksIG9wLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhhc0Fzc2lnbm1lbnRz
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25CcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+
YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4
cHJIYXNBc3NpZ25tZW50cywgYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZGl2b3QoKSAtIHN0
YXJ0LCBlbmQgLSBicmFja2V0LT5kaXZvdCgpKTsKKyAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXRO
b2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlCcmFja2V0Tm9kZShsb2Nh
dGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgb3AsIGV4cHIsIGxv
Y0hhc0Fzc2lnbm1lbnRzLCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0
LCBlbmQgLSBkaXZvdCk7CiAgICAgICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGJyYWNr
ZXQtPmRpdm90KCksIGJyYWNrZXQtPmVuZE9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7
CiAgICAgfQpAQCAtOTMzLDU1ICs5MzMsNTUgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6
Om1ha2VBc3NpZ25Ob2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbG9jLAogICAg
IGlmIChvcCA9PSBPcEVxdWFsKSB7CiAgICAgICAgIGlmIChleHByLT5pc0Z1bmNFeHByTm9kZSgp
KQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZXhwciktPmJvZHkoKS0+
c2V0SW5mZXJyZWROYW1lKGRvdC0+aWRlbnRpZmllcigpKTsKLSAgICAgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBBc3NpZ25Eb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3Qt
PmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkb3QtPmRpdm90KCksIGRv
dC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBkb3QtPmRpdm90KCkpOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIEFzc2lnbkRvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBk
b3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkb3QtPmRpdm90KCks
IGRvdC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBkb3QtPmRpdm90KCkpOwogICAgIH0KIAotICAg
IFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlE
b3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4
cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
KTsKKyAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWFk
TW9kaWZ5RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBv
cCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0g
ZGl2b3QpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90
LT5lbmRPZmZzZXQoKSk7CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBB
U1RCdWlsZGVyOjptYWtlUHJlZml4Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJl
c3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUHJlZml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3BlcmF0b3Igb3AsIGludCBzdGFy
dCwgaW50IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlmICghZXhwci0+aXNMb2NhdGlvbigpKQot
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeEVycm9yTm9kZShsaW5lTnVt
YmVyLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhFcnJvck5vZGUobG9jYXRpb24sIG9wLCBkaXZv
dCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogCiAgICAgaWYgKGV4cHItPmlzUmVzb2x2
ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJl
c29sdmVOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJl
Zml4UmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZGl2
b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9n
bG9iYWxEYXRhKSBQcmVmaXhSZXNvbHZlTm9kZShsb2NhdGlvbiwgcmVzb2x2ZS0+aWRlbnRpZmll
cigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICB9CiAgICAg
aWYgKGV4cHItPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nl
c3Nvck5vZGUqIGJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4oZXhw
cik7Ci0gICAgICAgIFByZWZpeEJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEp
IFByZWZpeEJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+
c3Vic2NyaXB0KCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAg
ICAgICBQcmVmaXhCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhC
cmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQo
KSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgICAgIG5vZGUt
PnNldFN1YmV4cHJlc3Npb25JbmZvKGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPnN0YXJ0T2Zm
c2V0KCkpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAgICAgQVNTRVJUKGV4cHItPmlz
RG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nh
c3Q8RG90QWNjZXNzb3JOb2RlKj4oZXhwcik7Ci0gICAgUHJlZml4RG90Tm9kZSogbm9kZSA9IG5l
dyAobV9nbG9iYWxEYXRhKSBQcmVmaXhEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBk
b3QtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7
CisgICAgUHJlZml4RG90Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhEb3RO
b2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwg
ZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25J
bmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5zdGFydE9mZnNldCgpKTsKICAgICByZXR1cm4gbm9kZTsK
IH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VQb3N0Zml4Tm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQsIGlu
dCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUG9zdGZp
eE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKIHsKICAgICBp
ZiAoIWV4cHItPmlzTG9jYXRpb24oKSkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBQb3N0Zml4RXJyb3JOb2RlKGxpbmVOdW1iZXIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhF
cnJvck5vZGUobG9jYXRpb24sIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3Qp
OwogCiAgICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9k
ZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJl
c29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZv
dCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeFJlc29sdmVOb2Rl
KGxvY2F0aW9uLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFy
dCwgZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBpZiAoZXhwci0+aXNCcmFja2V0QWNjZXNzb3JO
b2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19j
YXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihleHByKTsKLSAgICAgICAgUG9zdGZpeEJyYWNrZXRO
b2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhCcmFja2V0Tm9kZShsaW5lTnVt
YmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRp
dm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgUG9zdGZpeEJyYWNrZXROb2RlKiBu
b2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhCcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJh
Y2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0
YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGJy
YWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPmVuZE9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuIG5v
ZGU7CiAKICAgICB9CiAgICAgQVNTRVJUKGV4cHItPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAg
IERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZXhw
cik7Ci0gICAgUG9zdGZpeERvdE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZp
eERvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwg
ZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICBQb3N0Zml4RG90Tm9kZSog
bm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4RG90Tm9kZShsb2NhdGlvbiwgZG90LT5i
YXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAt
IGRpdm90KTsKICAgICBub2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRv
dC0+ZW5kT2Zmc2V0KCkpOwogICAgIHJldHVybiBub2RlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmNwcAppbmRleCAzYjAyMGY0ZjJiMWIwOTZhNzBhOTVhOWI1ODg4MjdiZDkw
Yjk4NTljLi4yYThhOGRjOWUzNjNhZDNhMjI3MTU5NmU3NWUxOWY1ZGNjMmIzMTMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtNDE3LDYgKzQxNyw3IEBAIHZvaWQg
TGV4ZXI8VD46OnNldENvZGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJBcmVuYSog
YXJlbmEpCiAgICAgbV9jb2RlRW5kID0gbV9jb2RlU3RhcnQgKyBzb3VyY2UuZW5kT2Zmc2V0KCk7
CiAgICAgbV9lcnJvciA9IGZhbHNlOwogICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOworICAgIG1f
Y29sdW1uTnVtYmVyID0gMDsKICAgICBtX2xleEVycm9yTWVzc2FnZSA9IFVTdHJpbmcoKTsKICAg
ICAKICAgICBtX2J1ZmZlcjgucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbml0aWFsUmVhZEJ1ZmZl
ckNhcGFjaXR5KTsKQEAgLTQzMyw2ICs0MzQsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHRl
bXBsYXRlIDxpbnQgc2hpZnRBbW91bnQ+IEFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6aW50
ZXJuYWxTaGlmdCgpCiB7CiAgICAgbV9jb2RlICs9IHNoaWZ0QW1vdW50OworICAgIG1fY29sdW1u
TnVtYmVyICs9IHNoaWZ0QW1vdW50OwogICAgIG1fY3VycmVudCA9ICptX2NvZGU7CiB9CiAKQEAg
LTQ0NCw2ICs0NDYsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VD46OnNoaWZ0KCkKICAg
ICArK21fY29kZTsKICAgICBpZiAoTElLRUxZKG1fY29kZSA8IG1fY29kZUVuZCkpCiAgICAgICAg
IG1fY3VycmVudCA9ICptX2NvZGU7CisgICAgKyttX2NvbHVtbk51bWJlcjsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CkBAIC0xMTgzLDcgKzExODYsNyBAQCBib29sIExleGVyPFQ+OjpuZXh0
VG9rZW5Jc0NvbG9uKCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1KU1Rva2VuVHlwZSBM
ZXhlcjxUPjo6bGV4KEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIEpTVG9rZW5JbmZvKiB0b2tlbklu
Zm8sIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKK0pTVG9rZW5UeXBlIExl
eGVyPFQ+OjpsZXgoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSwgSlNUb2tlbkxvY2F0aW9uKiB0b2tl
bkxvY2F0aW9uLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7CiAgICAg
QVNTRVJUKCFtX2Vycm9yKTsKICAgICBBU1NFUlQobV9idWZmZXI4LmlzRW1wdHkoKSk7CkBAIC0x
MTk5LDcgKzEyMDIsOCBAQCBzdGFydDoKICAgICBpZiAoYXRFbmQoKSkKICAgICAgICAgcmV0dXJu
IEVPRlRPSzsKICAgICAKLSAgICB0b2tlbkluZm8tPnN0YXJ0T2Zmc2V0ID0gY3VycmVudE9mZnNl
dCgpOworICAgIHRva2VuTG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOwor
ICAgIHRva2VuTG9jYXRpb24tPmNvbHVtbiA9IG1fY29sdW1uTnVtYmVyOwogCiAgICAgQ2hhcmFj
dGVyVHlwZSB0eXBlOwogICAgIGlmIChMSUtFTFkoaXNMYXRpbjEobV9jdXJyZW50KSkpCkBAIC0x
NTIyLDYgKzE1MjYsNyBAQCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBzaGlm
dExpbmVUZXJtaW5hdG9yKCk7CiAgICAgICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOwogICAgICAg
ICBtX3Rlcm1pbmF0b3IgPSB0cnVlOworICAgICAgICBtX2NvbHVtbk51bWJlciA9IDA7CiAgICAg
ICAgIGdvdG8gc3RhcnQ7CiAgICAgY2FzZSBDaGFyYWN0ZXJJbnZhbGlkOgogICAgICAgICBtX2xl
eEVycm9yTWVzc2FnZSA9IGludmFsaWRDaGFyYWN0ZXJNZXNzYWdlKCk7CkBAIC0xNTQ0LDYgKzE1
NDksNyBAQCBpblNpbmdsZUxpbmVDb21tZW50OgogICAgIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsK
ICAgICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsKICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVlOworICAg
IG1fY29sdW1uTnVtYmVyID0gMDsKICAgICBpZiAoIWxhc3RUb2tlbldhc1Jlc3RyS2V5d29yZCgp
KQogICAgICAgICBnb3RvIHN0YXJ0OwogCkBAIC0xNTUxLDE1ICsxNTU3LDE1IEBAIGluU2luZ2xl
TGluZUNvbW1lbnQ6CiAgICAgLy8gRmFsbCB0aHJvdWdoIGludG8gcmV0dXJuVG9rZW4uCiAKIHJl
dHVyblRva2VuOgotICAgIHRva2VuSW5mby0+bGluZSA9IG1fbGluZU51bWJlcjsKLSAgICB0b2tl
bkluZm8tPmVuZE9mZnNldCA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICB0b2tlbkxvY2F0aW9uLT5s
aW5lID0gbV9saW5lTnVtYmVyOworICAgIHRva2VuTG9jYXRpb24tPmVuZE9mZnNldCA9IGN1cnJl
bnRPZmZzZXQoKTsKICAgICBtX2xhc3RUb2tlbiA9IHRva2VuOwogICAgIHJldHVybiB0b2tlbjsK
IAogcmV0dXJuRXJyb3I6CiAgICAgbV9lcnJvciA9IHRydWU7Ci0gICAgdG9rZW5JbmZvLT5saW5l
ID0gbV9saW5lTnVtYmVyOwotICAgIHRva2VuSW5mby0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNl
dCgpOworICAgIHRva2VuTG9jYXRpb24tPmxpbmUgPSBtX2xpbmVOdW1iZXI7CisgICAgdG9rZW5M
b2NhdGlvbi0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOwogICAgIHJldHVybiBFUlJPUlRP
SzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDQxZjFmODU1M2Ux
ZWIyNWY1NDRiZWUxOTM1YTJhZjRiYmQwNjllNjQuLjFhYzgzMmEyYzdiNWYzODJiMzNiNzhhNWM4
MzA0YjE3NTU0MGY0NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTg3
LDkgKzg3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzUmVwYXJzaW5nKCkgeyBtX2lzUmVw
YXJzaW5nID0gdHJ1ZTsgfQogICAgIGJvb2wgaXNSZXBhcnNpbmcoKSBjb25zdCB7IHJldHVybiBt
X2lzUmVwYXJzaW5nOyB9CiAKLSAgICBKU1Rva2VuVHlwZSBsZXgoSlNUb2tlbkRhdGEqLCBKU1Rv
a2VuSW5mbyosIHVuc2lnbmVkLCBib29sIHN0cmljdE1vZGUpOworICAgIEpTVG9rZW5UeXBlIGxl
eChKU1Rva2VuRGF0YSosIEpTVG9rZW5Mb2NhdGlvbiosIHVuc2lnbmVkLCBib29sIHN0cmljdE1v
ZGUpOwogICAgIGJvb2wgbmV4dFRva2VuSXNDb2xvbigpOwogICAgIGludCBsaW5lTnVtYmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CisgICAgaW50IGN1cnJlbnRDb2x1bW5OdW1i
ZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbHVtbk51bWJlcjsgfQogICAgIHZvaWQgc2V0TGFzdExp
bmVOdW1iZXIoaW50IGxhc3RMaW5lTnVtYmVyKSB7IG1fbGFzdExpbmVOdW1iZXIgPSBsYXN0TGlu
ZU51bWJlcjsgfQogICAgIGludCBsYXN0TGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGFz
dExpbmVOdW1iZXI7IH0KICAgICBib29sIHByZXZUZXJtaW5hdG9yKCkgY29uc3QgeyByZXR1cm4g
bV90ZXJtaW5hdG9yOyB9CkBAIC0xMjAsNyArMTIxLDcgQEAgcHVibGljOgogCiAgICAgU291cmNl
UHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UtPnByb3Zp
ZGVyKCk7IH0KIAotICAgIEpTVG9rZW5UeXBlIGxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbkRh
dGEqLCBKU1Rva2VuSW5mbyosIHVuc2lnbmVkLCBib29sIHN0cmljdE1vZGUpOworICAgIEpTVG9r
ZW5UeXBlIGxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbkRhdGEqLCBKU1Rva2VuTG9jYXRpb24q
LCB1bnNpZ25lZCwgYm9vbCBzdHJpY3RNb2RlKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHJlY29y
ZDgoaW50KTsKQEAgLTE2Niw2ICsxNjcsNyBAQCBwcml2YXRlOgogCiAgICAgaW50IG1fbGluZU51
bWJlcjsKICAgICBpbnQgbV9sYXN0TGluZU51bWJlcjsKKyAgICBpbnQgbV9jb2x1bW5OdW1iZXI7
CiAKICAgICBWZWN0b3I8TENoYXI+IG1fYnVmZmVyODsKICAgICBWZWN0b3I8VUNoYXI+IG1fYnVm
ZmVyMTY7CkBAIC0yNTcsNyArMjU5LDcgQEAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVy
KiBMZXhlcjxUPjo6bWFrZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihjb25zdCBVQ2gKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+
OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIEpTVG9rZW5JbmZv
KiB0b2tlbkluZm8sIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKK0FMV0FZ
U19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tl
bkRhdGEqIHRva2VuRGF0YSwgSlNUb2tlbkxvY2F0aW9uKiB0b2tlbkxvY2F0aW9uLCB1bnNpZ25l
ZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7CiAgICAgQVNTRVJUKChsZXhlckZsYWdz
ICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMpKTsKICAgICBjb25zdCBUKiBzdGFydCA9
IG1fY29kZTsKQEAgLTI4NSwyMCArMjg3LDIyIEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUg
TGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSwKICAg
ICAgICAgbV9jdXJyZW50ID0gMDsKIAogICAgIG1fY29kZSA9IHB0cjsKKyAgICBtX2NvbHVtbk51
bWJlciA9IG1fY29sdW1uTnVtYmVyICsgKG1fY29kZSAtIHN0YXJ0KTsKIAogICAgIC8vIENyZWF0
ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVkZWQKICAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4Rmxh
Z3NEb250QnVpbGRLZXl3b3JkcykKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAgICAg
ZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUlkZW50aWZpZXIoc3RhcnQsIHB0
ciAtIHN0YXJ0KTsKLSAgICB0b2tlbkluZm8tPmxpbmUgPSBtX2xpbmVOdW1iZXI7Ci0gICAgdG9r
ZW5JbmZvLT5zdGFydE9mZnNldCA9IHN0YXJ0IC0gbV9jb2RlU3RhcnQ7Ci0gICAgdG9rZW5JbmZv
LT5lbmRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7CisgICAgdG9rZW5Mb2NhdGlvbi0+bGluZSA9
IG1fbGluZU51bWJlcjsKKyAgICB0b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNldCA9IHN0YXJ0IC0g
bV9jb2RlU3RhcnQ7CisgICAgdG9rZW5Mb2NhdGlvbi0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNl
dCgpOworICAgIHRva2VuTG9jYXRpb24tPmNvbHVtbiA9IG1fY29sdW1uTnVtYmVyOwogICAgIG1f
bGFzdFRva2VuID0gSURFTlQ7CiAgICAgcmV0dXJuIElERU5UOwogICAgIAogc2xvd0Nhc2U6Ci0g
ICAgcmV0dXJuIGxleCh0b2tlbkRhdGEsIHRva2VuSW5mbywgbGV4ZXJGbGFncywgc3RyaWN0TW9k
ZSk7CisgICAgcmV0dXJuIGxleCh0b2tlbkRhdGEsIHRva2VuTG9jYXRpb24sIGxleGVyRmxhZ3Ms
IHN0cmljdE1vZGUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKaW5kZXggYmU1MGVlYWZlM2U0MGVh
YzFkOTdiN2Q0ZDAyYjVhNGM2OTgyOTY4Ni4uNDNkMWUxN2M2YTRjYzA3NWM2NjRlNjNlZDk0YmYx
ZDBlNmYxZjI4MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
Q29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29u
c3RydWN0b3JzLmgKQEAgLTQyLDYwICs0Miw2MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Z2xvYmFsRGF0YS0+cGFyc2VyQXJlbmEtPmRlcmVmV2l0aEFyZW5hKGFkb3B0UmVmKHRoaXMpKTsK
ICAgICB9CiAKLSAgICBpbmxpbmUgTm9kZTo6Tm9kZShpbnQgbGluZU51bWJlcikKLSAgICAgICAg
OiBtX2xpbmVOdW1iZXIobGluZU51bWJlcikKKyAgICBpbmxpbmUgTm9kZTo6Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQorICAgICAgICA6IG1fbGluZU51bWJlcihsb2NhdGlv
bi5saW5lKQorICAgICAgICAsIG1fY29sdW1uTnVtYmVyKGxvY2F0aW9uLmNvbHVtbikKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIEV4cHJlc3Npb25Ob2RlOjpFeHByZXNzaW9uTm9kZShpbnQg
bGluZU51bWJlciwgUmVzdWx0VHlwZSByZXN1bHRUeXBlKQotICAgICAgICA6IE5vZGUobGluZU51
bWJlcikKKyAgICBpbmxpbmUgRXhwcmVzc2lvbk5vZGU6OkV4cHJlc3Npb25Ob2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0VHlwZSkKKyAgICAgICAg
OiBOb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fcmVzdWx0VHlwZShyZXN1bHRUeXBlKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3RhdGVtZW50Tm9kZTo6U3RhdGVtZW50Tm9kZShpbnQg
bGluZU51bWJlcikKLSAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFN0YXRl
bWVudE5vZGU6OlN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikK
KyAgICAgICAgOiBOb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbGFzdExpbmUoLTEpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBOdWxsTm9kZTo6TnVsbE5vZGUoaW50IGxpbmVOdW1iZXIp
Ci0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVsbFR5
cGUoKSkKKyAgICBpbmxpbmUgTnVsbE5vZGU6Ok51bGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24sIFJlc3VsdFR5
cGU6Om51bGxUeXBlKCkpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCb29sZWFuTm9kZTo6
Qm9vbGVhbk5vZGUoaW50IGxpbmVOdW1iZXIsIGJvb2wgdmFsdWUpCi0gICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSkKKyAgICBpbmxp
bmUgQm9vbGVhbk5vZGU6OkJvb2xlYW5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGJvb2wgdmFsdWUpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24sIFJlc3Vs
dFR5cGU6OmJvb2xlYW5UeXBlKCkpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIE51bWJlck5vZGU6Ok51bWJlck5vZGUoaW50IGxpbmVOdW1iZXIs
IGRvdWJsZSB2YWx1ZSkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1
bHRUeXBlOjpudW1iZXJUeXBlKCkpCisgICAgaW5saW5lIE51bWJlck5vZGU6Ok51bWJlck5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgZG91YmxlIHZhbHVlKQorICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCkpCiAgICAg
ICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFN0cmluZ05v
ZGU6OlN0cmluZ05vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIHZhbHVlKQot
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OnN0cmluZ1R5
cGUoKSkKKyAgICBpbmxpbmUgU3RyaW5nTm9kZTo6U3RyaW5nTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiB2YWx1ZSkKKyAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQogICAgICAgICAs
IG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZWdFeHBOb2RlOjpS
ZWdFeHBOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25z
dCBJZGVudGlmaWVyJiBmbGFncykKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBSZWdFeHBOb2RlOjpSZWdFeHBOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXIm
IGZsYWdzKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1f
cGF0dGVybihwYXR0ZXJuKQogICAgICAgICAsIG1fZmxhZ3MoZmxhZ3MpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBUaGlzTm9kZTo6VGhpc05vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgVGhpc05vZGU6OlRoaXNO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobG9jYXRpb24pCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZXNvbHZlTm9kZTo6
UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBpbnQg
c3RhcnRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBp
bmxpbmUgUmVzb2x2ZU5vZGU6OlJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBpbnQgc3RhcnRPZmZzZXQpCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAg
ICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zmc2V0KQogICAgIHsKQEAgLTExNiwyNCArMTE3
LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBsLT5tX25leHQgPSB0aGlzOwogICAgIH0K
IAotICAgIGlubGluZSBBcnJheU5vZGU6OkFycmF5Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGVs
aXNpb24pCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
QXJyYXlOb2RlOjpBcnJheU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50
IGVsaXNpb24pCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwg
bV9lbGVtZW50KDApCiAgICAgICAgICwgbV9lbGlzaW9uKGVsaXNpb24pCiAgICAgICAgICwgbV9v
cHRpb25hbCh0cnVlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJh
eU5vZGUoaW50IGxpbmVOdW1iZXIsIEVsZW1lbnROb2RlKiBlbGVtZW50KQotICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFycmF5Tm9kZTo6QXJyYXlOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEVsZW1lbnROb2RlKiBlbGVtZW50KQor
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZWxlbWVudChl
bGVtZW50KQogICAgICAgICAsIG1fZWxpc2lvbigwKQogICAgICAgICAsIG1fb3B0aW9uYWwoZmFs
c2UpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcnJheU5vZGU6OkFycmF5Tm9kZShpbnQg
bGluZU51bWJlciwgaW50IGVsaXNpb24sIEVsZW1lbnROb2RlKiBlbGVtZW50KQotICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFycmF5Tm9kZTo6QXJyYXlO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBlbGlzaW9uLCBFbGVtZW50
Tm9kZSogZWxlbWVudCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAg
ICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAgICAgLCBtX2VsaXNpb24oZWxpc2lvbikKICAg
ICAgICAgLCBtX29wdGlvbmFsKHRydWUpCkBAIC0xNTQsNTcgKzE1NSw1NyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFByb3BlcnR5TGlzdE5vZGU6OlByb3Bl
cnR5TGlzdE5vZGUoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5Tm9kZSogbm9kZSkKLSAgICAgICAg
OiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFByb3BlcnR5TGlzdE5vZGU6OlByb3BlcnR5
TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlKiBu
b2RlKQorICAgICAgICA6IE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9ub2RlKG5vZGUpCiAg
ICAgICAgICwgbV9uZXh0KDApCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcm9wZXJ0eUxp
c3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGUqIG5v
ZGUsIFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpCi0gICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBQcm9wZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZSogbm9kZSwgUHJvcGVydHlMaXN0Tm9k
ZSogbGlzdCkKKyAgICAgICAgOiBOb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbm9kZShub2Rl
KQogICAgICAgICAsIG1fbmV4dCgwKQogICAgIHsKICAgICAgICAgbGlzdC0+bV9uZXh0ID0gdGhp
czsKICAgICB9CiAKLSAgICBpbmxpbmUgT2JqZWN0TGl0ZXJhbE5vZGU6Ok9iamVjdExpdGVyYWxO
b2RlKGludCBsaW5lTnVtYmVyKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIp
CisgICAgaW5saW5lIE9iamVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0
aW9uKQogICAgICAgICAsIG1fbGlzdCgwKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgT2Jq
ZWN0TGl0ZXJhbE5vZGU6Ok9iamVjdExpdGVyYWxOb2RlKGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0
eUxpc3ROb2RlKiBsaXN0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisg
ICAgaW5saW5lIE9iamVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0KQorICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbGlzdChsaXN0KQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgQnJhY2tldEFjY2Vzc29yTm9kZTo6QnJhY2tldEFjY2Vzc29y
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2Rl
KiBzdWJzY3JpcHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQnJhY2tldEFjY2Vzc29yTm9kZTo6
QnJhY2tldEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgYm9vbCBzdWJzY3Jp
cHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAg
ICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCiAg
ICAgICAgICwgbV9zdWJzY3JpcHRIYXNBc3NpZ25tZW50cyhzdWJzY3JpcHRIYXNBc3NpZ25tZW50
cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNz
b3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBp
bmxpbmUgRG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fYmFz
ZShiYXNlKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBBcmd1bWVudExpc3ROb2RlOjpBcmd1bWVudExpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5s
aW5lIEFyZ3VtZW50TGlzdE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogTm9kZShsb2Nh
dGlvbikKICAgICAgICAgLCBtX25leHQoMCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIEFyZ3VtZW50TGlzdE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUo
aW50IGxpbmVOdW1iZXIsIEFyZ3VtZW50TGlzdE5vZGUqIGxpc3ROb2RlLCBFeHByZXNzaW9uTm9k
ZSogZXhwcikKLSAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFyZ3VtZW50
TGlzdE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgQXJndW1lbnRMaXN0Tm9kZSogbGlzdE5vZGUsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAg
ICAgICA6IE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgICAgICwgbV9l
eHByKGV4cHIpCiAgICAgewpAQCAtMjIxLDQ1ICsyMjIsNDUgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBOZXdFeHByTm9kZTo6TmV3RXhwck5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIE5ld0V4cHJOb2RlOjpOZXdFeHByTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAg
ICAgLCBtX2FyZ3MoMCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE5ld0V4cHJOb2RlOjpO
ZXdFeHByTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50
c05vZGUqIGFyZ3MpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBp
bmxpbmUgTmV3RXhwck5vZGU6Ok5ld0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdzKQorICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAg
ICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRXZhbEZ1bmN0
aW9uQ2FsbE5vZGU6OkV2YWxGdW5jdGlvbkNhbGxOb2RlKGludCBsaW5lTnVtYmVyLCBBcmd1bWVu
dHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAg
IGlubGluZSBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9hcmdzKGFy
Z3MpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OkZ1
bmN0aW9uQ2FsbFZhbHVlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIs
IEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6RnVuY3Rpb25DYWxsVmFsdWVO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHBy
LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlv
bikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX2FyZ3MoYXJn
cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjpG
dW5jdGlvbkNhbGxSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjpGdW5jdGlvbkNh
bGxSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3Qs
IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAg
ICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmN0aW9uQ2Fs
bEJyYWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05v
ZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5s
aW5lIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVz
c2lvbk5vZGUqIHN1YnNjcmlwdCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRh
dGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2Up
CiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtMjY3LDggKzI2OCw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90
Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGdW5jdGlvbkNh
bGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJn
dW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBl
bmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVu
dCkKQEAgLTI3NiwzMSArMjc3LDMxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3RO
b2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEZ1bmN0aW9uQ2FsbERv
dE5vZGUobGluZU51bWJlciwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KQorICAgIGlubGluZSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0
aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdz
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwg
YXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3RO
b2RlKGxpbmVOdW1iZXIsIGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVu
ZE9mZnNldCkKKyAgICBpbmxpbmUgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0
aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdz
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwg
YXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBQcmVQb3N0UmVzb2x2ZU5vZGU6OlByZVBvc3RSZXNvbHZlTm9kZShpbnQgbGluZU51
bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSkgLy8gY291bGQgYmUgcmV1c2Fi
bGUgZm9yIHByZT8KKyAgICBpbmxpbmUgUHJlUG9zdFJlc29sdmVOb2RlOjpQcmVQb3N0UmVzb2x2
ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpu
dW1iZXJUeXBlKCkpIC8vIGNvdWxkIGJlIHJldXNhYmxlIGZvciBwcmU/CiAgICAgICAgICwgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAg
ICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFBvc3RmaXhS
ZXNvbHZlTm9kZTo6UG9zdGZpeFJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogUHJlUG9zdFJlc29sdmVO
b2RlKGxpbmVOdW1iZXIsIGlkZW50LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAg
ICBpbmxpbmUgUG9zdGZpeFJlc29sdmVOb2RlOjpQb3N0Zml4UmVzb2x2ZU5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9y
IG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KQorICAgICAgICA6IFByZVBvc3RSZXNvbHZlTm9kZShsb2NhdGlvbiwgaWRlbnQsIGRp
dm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFBvc3RmaXhCcmFja2V0Tm9kZTo6UG9zdGZpeEJy
YWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUG9zdGZpeEJyYWNrZXROb2RlOjpQb3N0Zml4QnJh
Y2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJl
c3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFz
ZShiYXNlKQogICAgICAgICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKQEAgLTMwOCw4ICszMDks
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFBvc3RmaXhE
b3ROb2RlOjpQb3N0Zml4RG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQb3N0Zml4RG90Tm9kZTo6UG9z
dGZpeERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHBy
ZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jh
c2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQpAQCAtMzE3LDY4ICszMTgsNjggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQb3N0Zml4RXJyb3JO
b2RlOjpQb3N0Zml4RXJyb3JOb2RlKGludCBsaW5lTnVtYmVyLCBPcGVyYXRvciBvcGVyLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQb3N0Zml4RXJy
b3JOb2RlOjpQb3N0Zml4RXJyb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAg
ICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5k
T2Zmc2V0KQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIERlbGV0ZVJlc29sdmVOb2RlOjpEZWxldGVSZXNvbHZlTm9kZShpbnQgbGluZU51bWJl
ciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIERlbGV0ZVJlc29sdmVOb2RlOjpEZWxldGVSZXNvbHZlTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAg
ICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlbGV0ZUJyYWNr
ZXROb2RlOjpEZWxldGVCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIERlbGV0ZUJyYWNrZXROb2RlOjpEZWxldGVCcmFj
a2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0
YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwg
bV9zdWJzY3JpcHQoc3Vic2NyaXB0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVsZXRl
RG90Tm9kZTo6RGVsZXRlRG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyKQorICAgIGlubGluZSBEZWxldGVEb3ROb2RlOjpEZWxldGVEb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlbGV0ZVZhbHVlTm9kZTo6RGVsZXRlVmFsdWVO
b2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBEZWxldGVWYWx1ZU5vZGU6OkRlbGV0
ZVZhbHVlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBt
X2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFZvaWROb2RlOjpWb2lkTm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgVm9pZE5vZGU6OlZvaWROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgVHlwZU9mUmVzb2x2ZU5vZGU6OlR5cGVPZlJlc29sdmVO
b2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLSAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCisgICAg
aW5saW5lIFR5cGVPZlJlc29sdmVOb2RlOjpUeXBlT2ZSZXNvbHZlTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQogICAgICAg
ICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBUeXBlT2ZWYWx1
ZU5vZGU6OlR5cGVPZlZhbHVlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6c3Ry
aW5nVHlwZSgpKQorICAgIGlubGluZSBUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVlTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgp
KQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJl
Zml4UmVzb2x2ZU5vZGU6OlByZWZpeFJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogUHJlUG9zdFJlc29s
dmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkK
KyAgICBpbmxpbmUgUHJlZml4UmVzb2x2ZU5vZGU6OlByZWZpeFJlc29sdmVOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRv
ciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCkKKyAgICAgICAgOiBQcmVQb3N0UmVzb2x2ZU5vZGUobG9jYXRpb24sIGlkZW50LCBk
aXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVmaXhCcmFja2V0Tm9kZTo6UHJlZml4QnJh
Y2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9u
Tm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcmVmaXhCcmFja2V0Tm9kZTo6UHJlZml4QnJhY2tl
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZVByZWZpeGVkU3Vi
RXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwg
bV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtMzg2LDgg
KzM4Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJl
Zml4RG90Tm9kZTo6UHJlZml4RG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcmVmaXhEb3ROb2RlOjpQ
cmVmaXhEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlUHJlZml4
ZWRTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAg
ICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQpAQCAtMzk1LDQzICsz
OTYsNDMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVm
aXhFcnJvck5vZGU6OlByZWZpeEVycm9yTm9kZShpbnQgbGluZU51bWJlciwgT3BlcmF0b3Igb3Bl
ciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUHJl
Zml4RXJyb3JOb2RlOjpQcmVmaXhFcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
CiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBl
bmRPZmZzZXQpCiAgICAgICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgVW5hcnlPcE5vZGU6OlVuYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBSZXN1bHRU
eXBlIHR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBPcGNvZGVJRCBvcGNvZGVJRCkKLSAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCB0eXBlKQorICAgIGlubGluZSBVbmFyeU9w
Tm9kZTo6VW5hcnlPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUmVzdWx0
VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogZXhwciwgT3Bjb2RlSUQgb3Bjb2RlSUQpCisgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24sIHR5cGUpCiAgICAgICAgICwgbV9leHByKGV4
cHIpCiAgICAgICAgICwgbV9vcGNvZGVJRChvcGNvZGVJRCkKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIFVuYXJ5UGx1c05vZGU6OlVuYXJ5UGx1c05vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFVuYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3Vs
dFR5cGU6Om51bWJlclR5cGUoKSwgZXhwciwgb3BfdG9fanNudW1iZXIpCisgICAgaW5saW5lIFVu
YXJ5UGx1c05vZGU6OlVuYXJ5UGx1c05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogVW5hcnlPcE5vZGUobG9jYXRpb24s
IFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwciwgb3BfdG9fanNudW1iZXIpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBOZWdhdGVOb2RlOjpOZWdhdGVOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBVbmFyeU9wTm9kZShsaW5lTnVtYmVy
LCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIsIG9wX25lZ2F0ZSkKKyAgICBpbmxpbmUg
TmVnYXRlTm9kZTo6TmVnYXRlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBVbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVz
dWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByLCBvcF9uZWdhdGUpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBCaXR3aXNlTm90Tm9kZTo6Qml0d2lzZU5vdE5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCkpCisgICAgaW5saW5lIEJpdHdpc2VOb3ROb2RlOjpC
aXR3aXNlTm90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlw
ZTo6Zm9yQml0T3AoKSkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIExvZ2ljYWxOb3ROb2RlOjpMb2dpY2FsTm90Tm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogVW5hcnlPcE5vZGUobGluZU51bWJlciwg
UmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwciwgb3Bfbm90KQorICAgIGlubGluZSBMb2dp
Y2FsTm90Tm9kZTo6TG9naWNhbE5vdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogVW5hcnlPcE5vZGUobG9jYXRpb24s
IFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIsIG9wX25vdCkKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIEJpbmFyeU9wTm9kZTo6QmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bj
b2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBCaW5hcnlPcE5vZGU6OkJpbmFyeU9wTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4
cHIxKGV4cHIxKQogICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCiAgICAgICAgICwgbV9vcGNvZGVJ
RChvcGNvZGVJRCkKQEAgLTQzOSw4ICs0NDAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIEJpbmFyeU9wTm9kZTo6QmluYXJ5T3BOb2RlKGludCBsaW5lTnVt
YmVyLCBSZXN1bHRUeXBlIHR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQot
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIHR5cGUpCisgICAgaW5saW5lIEJp
bmFyeU9wTm9kZTo6QmluYXJ5T3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IFJlc3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24sIHR5cGUpCiAgICAgICAgICwgbV9leHByMShl
eHByMSkKICAgICAgICAgLCBtX2V4cHIyKGV4cHIyKQogICAgICAgICAsIG1fb3Bjb2RlSUQob3Bj
b2RlSUQpCkBAIC00NDgsMTQwICs0NDksMTQwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgTXVsdE5vZGU6Ok11bHROb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBl
OjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbXVsLCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorICAgIGlubGluZSBNdWx0Tm9kZTo6TXVsdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24s
IFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9tdWwsIHJpZ2h0SGFz
QXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBEaXZOb2RlOjpEaXZOb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZGl2
LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBEaXZOb2RlOjpEaXZOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmlu
YXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHBy
Miwgb3BfZGl2LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKIAotICAgIGlu
bGluZSBNb2ROb2RlOjpNb2ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAg
ICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCks
IGV4cHIxLCBleHByMiwgb3BfbW9kLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBN
b2ROb2RlOjpNb2ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpudW1i
ZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbW9kLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgQWRkTm9kZTo6QWRkTm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0
VHlwZTo6Zm9yQWRkKGV4cHIxLT5yZXN1bHREZXNjcmlwdG9yKCksIGV4cHIyLT5yZXN1bHREZXNj
cmlwdG9yKCkpLCBleHByMSwgZXhwcjIsIG9wX2FkZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAg
ICBpbmxpbmUgQWRkTm9kZTo6QWRkTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0
VHlwZTo6Zm9yQWRkKGV4cHIxLT5yZXN1bHREZXNjcmlwdG9yKCksIGV4cHIyLT5yZXN1bHREZXNj
cmlwdG9yKCkpLCBleHByMSwgZXhwcjIsIG9wX2FkZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIFN1Yk5vZGU6OlN1Yk5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3Vs
dFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9zdWIsIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCisgICAgaW5saW5lIFN1Yk5vZGU6OlN1Yk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRp
b24sIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9zdWIsIHJpZ2h0
SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBMZWZ0U2hpZnROb2Rl
OjpMZWZ0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6
IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwg
ZXhwcjIsIG9wX2xzaGlmdCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTGVmdFNo
aWZ0Tm9kZTo6TGVmdFNoaWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlw
ZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9sc2hpZnQsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSaWdodFNoaWZ0Tm9kZTo6UmlnaHRTaGlm
dE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BO
b2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3Bf
cnNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBSaWdodFNoaWZ0Tm9kZTo6
UmlnaHRTaGlmdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmZvckJp
dE9wKCksIGV4cHIxLCBleHByMiwgb3BfcnNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZTo6VW5zaWduZWRS
aWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBC
aW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwg
ZXhwcjIsIG9wX3Vyc2hpZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIFVuc2ln
bmVkUmlnaHRTaGlmdE5vZGU6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUo
bG9jYXRpb24sIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF91cnNo
aWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTGVz
c05vZGU6Okxlc3NOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6
IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHBy
MSwgZXhwcjIsIG9wX2xlc3MsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIExlc3NO
b2RlOjpMZXNzTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9vbGVh
blR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9sZXNzLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgR3JlYXRlck5vZGU6OkdyZWF0ZXJOb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVy
LCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2dyZWF0ZXIsIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEdyZWF0ZXJOb2RlOjpHcmVhdGVyTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6
IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEs
IGV4cHIyLCBvcF9ncmVhdGVyLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgTGVzc0VxTm9kZTo6TGVzc0VxTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6
Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9sZXNzZXEsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCisgICAgaW5saW5lIExlc3NFcU5vZGU6Okxlc3NFcU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9j
YXRpb24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbGVzc2Vx
LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgR3JlYXRl
ckVxTm9kZTo6R3JlYXRlckVxTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAg
ICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUo
KSwgZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVyZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAg
aW5saW5lIEdyZWF0ZXJFcU5vZGU6OkdyZWF0ZXJFcU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRp
b24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZ3JlYXRlcmVx
LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVGhyb3dh
YmxlQmluYXJ5T3BOb2RlOjpUaHJvd2FibGVCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIFJl
c3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAg
IDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIHR5cGUsIGV4cHIxLCBleHByMiwgb3Bjb2RlSUQs
IHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIFRocm93YWJsZUJpbmFyeU9wTm9kZTo6
VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFJl
c3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAg
IDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCB0eXBlLCBleHByMSwgZXhwcjIsIG9wY29kZUlELCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVGhyb3dhYmxl
QmluYXJ5T3BOb2RlOjpUaHJvd2FibGVCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJ
RCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5l
TnVtYmVyLCBleHByMSwgZXhwcjIsIG9wY29kZUlELCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAg
IGlubGluZSBUaHJvd2FibGVCaW5hcnlPcE5vZGU6OlRocm93YWJsZUJpbmFyeU9wTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgb3Bj
b2RlSUQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBJ
bnN0YW5jZU9mTm9kZTo6SW5zdGFuY2VPZk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCi0gICAgICAgIDogVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5
cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfaW5zdGFuY2VvZiwgcmlnaHRIYXNB
c3NpZ25tZW50cykKKyAgICBpbmxpbmUgSW5zdGFuY2VPZk5vZGU6Okluc3RhbmNlT2ZOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDog
VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgp
LCBleHByMSwgZXhwcjIsIG9wX2luc3RhbmNlb2YsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBJbk5vZGU6OkluTm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cykKLSAgICAgICAgOiBUaHJvd2FibGVCaW5hcnlPcE5vZGUobGluZU51bWJlciwg
ZXhwcjEsIGV4cHIyLCBvcF9pbiwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgSW5O
b2RlOjpJbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cykKKyAgICAgICAgOiBUaHJvd2FibGVCaW5hcnlPcE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHBy
Miwgb3BfaW4sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBFcXVhbE5vZGU6OkVxdWFsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAg
ICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUo
KSwgZXhwcjEsIGV4cHIyLCBvcF9lcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUg
RXF1YWxOb2RlOjpFcXVhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6
OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBOb3RFcXVhbE5vZGU6Ok5vdEVxdWFsTm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGlu
ZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9uZXEs
IHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIE5vdEVxdWFsTm9kZTo6Tm90RXF1YWxO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAg
ICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBl
eHByMSwgZXhwcjIsIG9wX25lcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIFN0cmljdEVxdWFsTm9kZTo6U3RyaWN0RXF1YWxOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBS
ZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3N0cmljdGVxLCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBTdHJpY3RFcXVhbE5vZGU6OlN0cmljdEVxdWFs
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAg
ICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9zdHJpY3RlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIE5vdFN0cmljdEVxdWFsTm9kZTo6Tm90U3RyaWN0RXF1YWxOb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX25z
dHJpY3RlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTm90U3RyaWN0RXF1YWxO
b2RlOjpOb3RTdHJpY3RFcXVhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5
cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbnN0cmljdGVxLCByaWdodEhhc0Fz
c2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQml0QW5kTm9kZTo6Qml0QW5k
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5v
ZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9i
aXRhbmQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEJpdEFuZE5vZGU6OkJpdEFu
ZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAg
ICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4
cHIxLCBleHByMiwgb3BfYml0YW5kLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgQml0T3JOb2RlOjpCaXRPck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6
OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfYml0b3IsIHJpZ2h0SGFzQXNzaWdubWVudHMp
CisgICAgaW5saW5lIEJpdE9yTm9kZTo6Qml0T3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9u
LCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdG9yLCByaWdodEhh
c0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQml0WE9yTm9kZTo6Qml0
WE9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlP
cE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBv
cF9iaXR4b3IsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEJpdFhPck5vZGU6OkJp
dFhPck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
KyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmZvckJpdE9wKCks
IGV4cHIxLCBleHByMiwgb3BfYml0eG9yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgTG9naWNhbE9wTm9kZTo6TG9naWNhbE9wTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIExvZ2lj
YWxPcGVyYXRvciBvcGVyKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJl
c3VsdFR5cGU6OmJvb2xlYW5UeXBlKCkpCisgICAgaW5saW5lIExvZ2ljYWxPcE5vZGU6OkxvZ2lj
YWxPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIExvZ2ljYWxPcGVyYXRvciBvcGVyKQorICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgp
KQogICAgICAgICAsIG1fZXhwcjEoZXhwcjEpCiAgICAgICAgICwgbV9leHByMihleHByMikKICAg
ICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDb25k
aXRpb25hbE5vZGU6OkNvbmRpdGlvbmFsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGxvZ2ljYWwsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIENvbmRp
dGlvbmFsTm9kZTo6Q29uZGl0aW9uYWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAg
ICAgICAgLCBtX2xvZ2ljYWwobG9naWNhbCkKICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQogICAg
ICAgICAsIG1fZXhwcjIoZXhwcjIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZWFkTW9k
aWZ5UmVzb2x2ZU5vZGU6OlJlYWRNb2RpZnlSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiAgcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bGluZU51bWJlcikKKyAgICBpbmxpbmUgUmVhZE1vZGlmeVJlc29sdmVOb2RlOjpSZWFkTW9kaWZ5
UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
CiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBl
bmRPZmZzZXQpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3JpZ2h0KHJp
Z2h0KQpAQCAtNTkwLDE1ICs1OTEsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBBc3NpZ25SZXNvbHZlTm9kZTo6QXNzaWduUmVzb2x2ZU5vZGUoaW50IGxp
bmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQp
Ci0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXNzaWdu
UmVzb2x2ZU5vZGU6OkFzc2lnblJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQpCisg
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9pZGVudChpZGVu
dCkKICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
UmVhZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVy
YXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdu
bWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmVhZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9k
aWZ5QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikK
ICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlw
dChzdWJzY3JpcHQpCkBAIC02MDksOCArNjEwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25CcmFja2V0Tm9kZTo6QXNzaWduQnJhY2tldE5vZGUo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vi
c2NyaXB0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVu
dHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bGluZU51bWJlcikKKyAgICBpbmxpbmUgQXNzaWduQnJhY2tldE5vZGU6OkFzc2lnbkJyYWNrZXRO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wg
c3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNl
KGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtNjIwLDggKzYyMSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXNzaWduRG90
Tm9kZTo6QXNzaWduRG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
KyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBt
X2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQpAQCAtNjMwLDggKzYzMSw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeURv
dE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25O
b2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1v
ZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3Qs
IHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRh
dGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2Up
CiAgICAgICAgICwgbV9pZGVudChpZGVudCkKQEAgLTY0MSwyMSArNjQyLDIxIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXNzaWduRXJyb3JOb2RlOjpBc3Np
Z25FcnJvck5vZGUoaW50IGxpbmVOdW1iZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIEFzc2lnbkVycm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFy
dE9mZnNldCwgZW5kT2Zmc2V0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQ29tbWFOb2Rl
OjpDb21tYU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisg
ICAgaW5saW5lIENvbW1hTm9kZTo6Q29tbWFOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKQorICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgIHsKICAgICAgICAgbV9leHByZXNz
aW9ucy5hcHBlbmQoZXhwcjEpOwogICAgICAgICBtX2V4cHJlc3Npb25zLmFwcGVuZChleHByMik7
CiAgICAgfQogCi0gICAgaW5saW5lIENvbnN0U3RhdGVtZW50Tm9kZTo6Q29uc3RTdGF0ZW1lbnRO
b2RlKGludCBsaW5lTnVtYmVyLCBDb25zdERlY2xOb2RlKiBuZXh0KQotICAgICAgICA6IFN0YXRl
bWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQ29uc3RTdGF0ZW1lbnROb2RlOjpDb25z
dFN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQ29uc3REZWNs
Tm9kZSogbmV4dCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAs
IG1fbmV4dChuZXh0KQogICAgIHsKICAgICB9CkBAIC02NjQsNTcgKzY2NSw1NyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEVtcHR5U3RhdGVtZW50Tm9kZTo6
RW1wdHlTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyKQotICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRW1wdHlTdGF0ZW1lbnROb2RlOjpFbXB0eVN0YXRl
bWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0
ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVidWdnZXJT
dGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAg
ICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBEZWJ1Z2dlclN0YXRl
bWVudE5vZGU6OkRlYnVnZ2VyU3RhdGVtZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgewogICAgIH0K
ICAgICAKLSAgICBpbmxpbmUgRXhwclN0YXRlbWVudE5vZGU6OkV4cHJTdGF0ZW1lbnROb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBTdGF0ZW1lbnRO
b2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEV4cHJTdGF0ZW1lbnROb2RlOjpFeHByU3RhdGVt
ZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhw
cihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVmFyU3RhdGVtZW50Tm9kZTo6VmFy
U3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAg
ICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBWYXJTdGF0ZW1lbnRO
b2RlOjpWYXJTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgSWZO
b2RlOjpJZk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0
YXRlbWVudE5vZGUqIGlmQmxvY2spCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBJZk5vZGU6OklmTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrKQor
ICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9jb25kaXRpb24o
Y29uZGl0aW9uKQogICAgICAgICAsIG1faWZCbG9jayhpZkJsb2NrKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgSWZFbHNlTm9kZTo6SWZFbHNlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9k
ZSogZWxzZUJsb2NrKQotICAgICAgICA6IElmTm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24sIGlm
QmxvY2spCisgICAgaW5saW5lIElmRWxzZU5vZGU6OklmRWxzZU5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9k
ZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2NrKQorICAgICAgICA6IElmTm9kZShs
b2NhdGlvbiwgY29uZGl0aW9uLCBpZkJsb2NrKQogICAgICAgICAsIG1fZWxzZUJsb2NrKGVsc2VC
bG9jaykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERvV2hpbGVOb2RlOjpEb1doaWxlTm9k
ZShpbnQgbGluZU51bWJlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBFeHByZXNzaW9uTm9k
ZSogZXhwcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IERvV2hpbGVOb2RlOjpEb1doaWxlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAg
ICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVt
ZW50KQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
V2hpbGVOb2RlOjpXaGlsZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
LCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBXaGlsZU5vZGU6OldoaWxlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3Rh
dGVtZW50KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9l
eHByKGV4cHIpCiAgICAgICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgRm9yTm9kZTo6Rm9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MywgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGlu
ZU51bWJlcikKKyAgICBpbmxpbmUgRm9yTm9kZTo6Rm9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIzLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCisgICAg
ICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQog
ICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCiAgICAgICAgICwgbV9leHByMyhleHByMykKQEAgLTcy
MywzOCArNzI0LDM4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBU1NFUlQoc3RhdGVtZW50
KTsKICAgICB9CiAKLSAgICBpbmxpbmUgQ29udGludWVOb2RlOjpDb250aW51ZU5vZGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBTdGF0ZW1lbnRO
b2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIENvbnRpbnVlTm9kZTo6Q29udGludWVOb2RlKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikK
KyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1faWRlbnQoZ2xv
YmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNvbnRpbnVlTm9kZShpbnQgbGluZU51bWJlciwgY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNvbnRpbnVlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICAgICAgOiBTdGF0
ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAg
IH0KICAgICAKLSAgICBpbmxpbmUgQnJlYWtOb2RlOjpCcmVha05vZGUoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVO
dW1iZXIpCisgICAgaW5saW5lIEJyZWFrTm9kZTo6QnJlYWtOb2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0
ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1faWRlbnQoZ2xvYmFsRGF0YS0+cHJvcGVy
dHlOYW1lcy0+bnVsbElkZW50aWZpZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCcmVh
a05vZGU6OkJyZWFrTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
Ci0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBCcmVha05v
ZGU6OkJyZWFrTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAg
ICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgUmV0dXJu
Tm9kZTo6UmV0dXJuTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIHZhbHVlKQot
ICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmV0dXJuTm9k
ZTo6UmV0dXJuTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogdmFsdWUpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAg
LCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgV2l0aE5vZGU6Oldp
dGhOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9k
ZSogc3RhdGVtZW50LCB1aW50MzJfdCBkaXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCkK
LSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFdpdGhOb2Rl
OjpXaXRoTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCB1aW50MzJfdCBkaXZvdCwgdWludDMy
X3QgZXhwcmVzc2lvbkxlbmd0aCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQog
ICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkK
ICAgICAgICAgLCBtX2Rpdm90KGRpdm90KQpAQCAtNzYyLDIxICs3NjMsMjEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBMYWJlbE5vZGU6OkxhYmVsTm9kZShp
bnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgU3RhdGVtZW50Tm9kZSogc3Rh
dGVtZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUg
TGFiZWxOb2RlOjpMYWJlbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29u
c3QgSWRlbnRpZmllciYgbmFtZSwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQorICAgICAgICA6
IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgICAg
ICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVGhy
b3dOb2RlOjpUaHJvd05vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQot
ICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgVGhyb3dOb2Rl
OjpUaHJvd05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBt
X2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFRyeU5vZGU6OlRyeU5vZGUo
aW50IGxpbmVOdW1iZXIsIFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBjb25zdCBJZGVudGlmaWVy
JiBleGNlcHRpb25JZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywgU3RhdGVtZW50Tm9k
ZSogZmluYWxseUJsb2NrKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgVHJ5Tm9kZTo6VHJ5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciYgZXhjZXB0aW9uSWRl
bnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9j
aykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fdHJ5Qmxv
Y2sodHJ5QmxvY2spCiAgICAgICAgICwgbV9leGNlcHRpb25JZGVudChleGNlcHRpb25JZGVudCkK
ICAgICAgICAgLCBtX2NhdGNoQmxvY2soY2F0Y2hCbG9jaykKQEAgLTc5NywxNSArNzk4LDE1IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBsLT5tX25leHQgPSB0aGlzOwogICAgIH0KIAotICAg
IGlubGluZSBGdW5jRXhwck5vZGU6OkZ1bmNFeHByTm9kZShpbnQgbGluZU51bWJlciwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQotICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFt
ZXRlck5vZGUqIHBhcmFtZXRlcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikK
ICAgICAgICAgLCBtX2JvZHkoYm9keSkKICAgICB7CiAgICAgICAgIG1fYm9keS0+ZmluaXNoUGFy
c2luZyhzb3VyY2UsIHBhcmFtZXRlciwgaWRlbnQpOwogICAgIH0KIAotICAgIGlubGluZSBGdW5j
RGVjbE5vZGU6OkZ1bmNEZWNsTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
UGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51
bWJlcikKKyAgICBpbmxpbmUgRnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9k
eU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFy
YW1ldGVyKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9i
b2R5KGJvZHkpCiAgICAgewogICAgICAgICBtX2JvZHktPmZpbmlzaFBhcnNpbmcoc291cmNlLCBw
YXJhbWV0ZXIsIGlkZW50KTsKQEAgLTgzNywyOSArODM4LDI5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3dpdGNoTm9kZTo6U3dpdGNoTm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIENhc2VCbG9ja05vZGUqIGJsb2NrKQotICAg
ICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgU3dpdGNoTm9kZTo6
U3dpdGNoTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogZXhwciwgQ2FzZUJsb2NrTm9kZSogYmxvY2spCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShs
b2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX2Jsb2NrKGJsb2Nr
KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQ29uc3REZWNsTm9kZTo6Q29uc3REZWNsTm9k
ZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2Rl
KiBpbml0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IENvbnN0RGVjbE5vZGU6OkNvbnN0RGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBpbml0KQorICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQp
CiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgICAgICwgbV9pbml0KGluaXQpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBCbG9ja05vZGU6OkJsb2NrTm9kZShpbnQgbGluZU51bWJlciwgU291
cmNlRWxlbWVudHMqIHN0YXRlbWVudHMpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBCbG9ja05vZGU6OkJsb2NrTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyogc3RhdGVtZW50cykKKyAgICAgICAgOiBTdGF0
ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fc3RhdGVtZW50cyhzdGF0ZW1lbnRzKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJbk5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50
Tm9kZSogc3RhdGVtZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGwsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnRO
b2RlKiBzdGF0ZW1lbnQpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAg
ICAgLCBtX2luaXQoMCkKICAgICAgICAgLCBtX2xleHByKGwpCiAgICAgICAgICwgbV9leHByKGV4
cHIpCkBAIC04NjgsMTYgKzg2OSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIEZvckluTm9kZTo6Rm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9k
ZSogaW4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGlu
dCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQotICAgICAgICA6IFN0YXRl
bWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJbk5vZGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluLCBFeHByZXNzaW9uTm9k
ZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgZGl2b3QsIGludCBzdGFydE9m
ZnNldCwgaW50IGVuZE9mZnNldCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQog
ICAgICAgICAsIG1faW5pdCgwKQotICAgICAgICAsIG1fbGV4cHIobmV3IChnbG9iYWxEYXRhKSBS
ZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBpZGVudCwgZGl2b3QgLSBzdGFydE9mZnNldCkpCisgICAg
ICAgICwgbV9sZXhwcihuZXcgKGdsb2JhbERhdGEpIFJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVu
dCwgZGl2b3QgLSBzdGFydE9mZnNldCkpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAg
ICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAgICAgICAsIG1faWRlbnRJc1ZhckRlY2wodHJ1
ZSkKICAgICB7CiAgICAgICAgIGlmIChpbikgewotICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5v
ZGUqIG5vZGUgPSBuZXcgKGdsb2JhbERhdGEpIEFzc2lnblJlc29sdmVOb2RlKGxpbmVOdW1iZXIs
IGlkZW50LCBpbik7CisgICAgICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAo
Z2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobG9jYXRpb24sIGlkZW50LCBpbik7CiAgICAg
ICAgICAgICBub2RlLT5zZXRFeGNlcHRpb25Tb3VyY2VDb2RlKGRpdm90LCBkaXZvdCAtIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQgLSBkaXZvdCk7CiAgICAgICAgICAgICBtX2luaXQgPSBub2RlOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGMzMmU0
YzczYTI0ZWJlYjIzM2NkNWUwMWZmZmQ2M2E0ODY4NWM4ODYuLjAxNzIzNTljNzAzZjJiOWZlMTJi
YTViMDhmMjVkZmE0M2I0OTY3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
Y3BwCkBAIC01MiwxMCArNTIsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBTdGF0ZW1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKK3ZvaWQgU3RhdGVtZW50Tm9kZTo6c2V0TG9jKGludCBmaXJzdExpbmUsIGlu
dCBsYXN0TGluZSwgaW50IGNvbHVtbikKK3sKKyAgICBtX2xpbmVOdW1iZXIgPSBmaXJzdExpbmU7
CisgICAgbV9sYXN0TGluZSA9IGxhc3RMaW5lOworICAgIG1fY29sdW1uTnVtYmVyID0gY29sdW1u
OworfQorCiB2b2lkIFN0YXRlbWVudE5vZGU6OnNldExvYyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFz
dExpbmUpCiB7CiAgICAgbV9saW5lTnVtYmVyID0gZmlyc3RMaW5lOwogICAgIG1fbGFzdExpbmUg
PSBsYXN0TGluZTsKKyAgICBtX2NvbHVtbk51bWJlciA9IDA7CiB9CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBTb3VyY2VFbGVtZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpAQCAtNzUsOCArODMsOCBAQCBTdGF0ZW1lbnROb2RlKiBTb3VyY2VFbGVtZW50
czo6c2luZ2xlU3RhdGVtZW50KCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIFNjb3BlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1TY29wZU5v
ZGU6OlNjb3BlTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBi
b29sIGluU3RyaWN0Q29udGV4dCkKLSAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKK1Nj
b3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgYm9vbCBpblN0cmljdENvbnRleHQpCisgICAgOiBTdGF0ZW1l
bnROb2RlKGxvY2F0aW9uKQogICAgICwgUGFyc2VyQXJlbmFSZWZDb3VudGVkKGdsb2JhbERhdGEp
CiAgICAgLCBtX2ZlYXR1cmVzKGluU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVGZWF0dXJlIDog
Tm9GZWF0dXJlcykKICAgICAsIG1fbnVtQ29uc3RhbnRzKDApCkBAIC04NCw4ICs5Miw4IEBAIFNj
b3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1i
ZXIsIGJvb2wgaW5TdHJpY3RDb250CiB7CiB9CiAKLVNjb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0
aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIENv
ZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFN0YXRlbWVudE5v
ZGUobGluZU51bWJlcikKK1Njb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVu
Y3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywg
Q29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorICAgIDogU3RhdGVtZW50
Tm9kZShsb2NhdGlvbikKICAgICAsIFBhcnNlckFyZW5hUmVmQ291bnRlZChnbG9iYWxEYXRhKQog
ICAgICwgbV9mZWF0dXJlcyhmZWF0dXJlcykKICAgICAsIG1fc291cmNlKHNvdXJjZSkKQEAgLTEw
NywxNCArMTE1LDE0IEBAIFN0YXRlbWVudE5vZGUqIFNjb3BlTm9kZTo6c2luZ2xlU3RhdGVtZW50
KCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb2dyYW1Ob2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBQcm9ncmFtTm9kZTo6UHJv
Z3JhbU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291cmNl
RWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1
bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQotICAg
IDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIHNvdXJjZSwgY2hpbGRyZW4sIHZh
clN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3Rh
bnRzKQoraW5saW5lIFByb2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFNvdXJjZUVsZW1lbnRzKiBj
aGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElk
ZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2Us
IENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKKyAgICA6IFNjb3BlTm9k
ZShnbG9iYWxEYXRhLCBsb2NhdGlvbiwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNT
dGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCiB7CiB9CiAK
LVBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBW
YXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNl
dCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1
cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4g
UHJvZ3JhbU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sq
IHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1
cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cykKIHsKLSAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IG5vZGUg
PSBuZXcgUHJvZ3JhbU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgY2hpbGRyZW4sIHZhclN0
YWNrLCBmdW5jU3RhY2ssICBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNlLCBmZWF0dXJlcywgbnVt
Q29uc3RhbnRzKTsKKyAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IG5vZGUgPSBuZXcgUHJvZ3JhbU5v
ZGUoZ2xvYmFsRGF0YSwgbG9jYXRpb24sIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCAg
Y2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAKICAg
ICBBU1NFUlQobm9kZS0+bV9hcmVuYS5sYXN0KCkgPT0gbm9kZSk7CiAgICAgbm9kZS0+bV9hcmVu
YS5yZW1vdmVMYXN0KCk7CkBAIC0xMjUsMTQgKzEzMywxNCBAQCBQYXNzUmVmUHRyPFByb2dyYW1O
b2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxp
bmVOdQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIEV2YWxOb2RlOjpFdmFsTm9kZShKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hp
bGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVu
dGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBD
b2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUo
Z2xvYmFsRGF0YSwgbGluZU51bWJlciwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNT
dGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCitpbmxpbmUg
RXZhbE5vZGU6OkV2YWxOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayog
dmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVy
ZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1
cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxvY2F0
aW9uLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlh
YmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKIHsKIH0KIAotUGFzc1JlZlB0cjxFdmFsTm9k
ZT4gRXZhbE5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVt
YmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rp
b25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25z
dGFudHMpCitQYXNzUmVmUHRyPEV2YWxOb2RlPiBFdmFsTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgU291cmNlRWxl
bWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNT
dGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogewotICAg
IFJlZlB0cjxFdmFsTm9kZT4gbm9kZSA9IG5ldyBFdmFsTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVt
YmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNv
dXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CisgICAgUmVmUHRyPEV2YWxOb2RlPiBub2Rl
ID0gbmV3IEV2YWxOb2RlKGdsb2JhbERhdGEsIGxvY2F0aW9uLCBjaGlsZHJlbiwgdmFyU3RhY2ss
IGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0
YW50cyk7CiAKICAgICBBU1NFUlQobm9kZS0+bV9hcmVuYS5sYXN0KCkgPT0gbm9kZSk7CiAgICAg
bm9kZS0+bV9hcmVuYS5yZW1vdmVMYXN0KCk7CkBAIC0xNDksMTMgKzE1NywxMyBAQCBGdW5jdGlv
blBhcmFtZXRlcnM6OkZ1bmN0aW9uUGFyYW1ldGVycyhQYXJhbWV0ZXJOb2RlKiBmaXJzdFBhcmFt
ZXRlcikKICAgICAgICAgYXBwZW5kKHBhcmFtZXRlci0+aWRlbnQoKSk7CiB9CiAKLWlubGluZSBG
dW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQotICAgIDogU2NvcGVOb2Rl
KGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCkKK2lubGluZSBGdW5jdGlv
bkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgYm9vbCBpblN0cmljdENvbnRleHQpCisgICAg
OiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbG9jYXRpb24sIGluU3RyaWN0Q29udGV4dCkKIHsKIH0K
IAotaW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBW
YXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNl
dCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVG
ZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFNjb3BlTm9kZShnbG9i
YWxEYXRhLCBsaW5lTnVtYmVyLCBzb3VyY2VDb2RlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNT
dGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCitpbmxpbmUg
RnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFNvdXJjZUVsZW1lbnRzKiBjaGls
ZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50
aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2Rl
LCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCisgICAgOiBTY29wZU5v
ZGUoZ2xvYmFsRGF0YSwgbG9jYXRpb24sIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2YXJTdGFjaywg
ZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKIHsK
IH0KIApAQCAtMTcyLDE0ICsxODAsMTQgQEAgdm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpmaW5pc2hQ
YXJzaW5nKFBhc3NSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzLAogICAgIG1f
aWRlbnQgPSBpZGVudDsKIH0KIAotRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6
Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5T
dHJpY3RDb250ZXh0KQorRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRl
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgYm9vbCBpblN0cmljdENvbnRleHQpCiB7Ci0gICAgcmV0dXJuIG5ldyBGdW5jdGlvbkJvZHlO
b2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCk7CisgICAgcmV0dXJu
IG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEsIGxvY2F0aW9uLCBpblN0cmljdENvbnRl
eHQpOwogfQogCi1QYXNzUmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IEZ1bmN0aW9uQm9keU5vZGU6
OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VF
bGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVu
Y1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29k
ZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQor
UGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBT
b3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFj
ayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291
cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3Rh
bnRzKQogewotICAgIFJlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBub2RlID0gbmV3IEZ1bmN0aW9u
Qm9keU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5j
U3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBzb3VyY2VDb2RlLCBmZWF0dXJlcywgbnVtQ29uc3Rh
bnRzKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gbm9kZSA9IG5ldyBGdW5jdGlvbkJv
ZHlOb2RlKGdsb2JhbERhdGEsIGxvY2F0aW9uLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFj
aywgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZUNvZGUsIGZlYXR1cmVzLCBudW1Db25zdGFudHMp
OwogCiAgICAgQVNTRVJUKG5vZGUtPm1fYXJlbmEubGFzdCgpID09IG5vZGUpOwogICAgIG5vZGUt
Pm1fYXJlbmEucmVtb3ZlTGFzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmlu
ZGV4IDViMTViZTQ0Y2NlZTY4MDAwNjEyMWQ2ZWJkZmI1NmYwYjllNmQ0ZTAuLmVkMWE4NWFhZmJj
ODljZTE4ZjQ1MTIwMDk4NGRjYmExMmVkNzlhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IE5vZGUgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAgICAgcHJvdGVjdGVkOgotICAg
ICAgICBOb2RlKGludCk7CisgICAgICAgIE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAK
ICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgfk5vZGUoKSB7IH0KQEAgLTEzOSwxMyArMTM5
LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGludCBsaW5lTm8oKSBjb25zdCB7IHJl
dHVybiBtX2xpbmVOdW1iZXI7IH0KIAorICAgICAgICBpbnQgY29sdW1uTm8oKSBjb25zdCB7IHJl
dHVybiBtX2NvbHVtbk51bWJlcjsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBpbnQgbV9s
aW5lTnVtYmVyOworICAgICAgICBpbnQgbV9jb2x1bW5OdW1iZXI7CiAgICAgfTsKIAogICAgIGNs
YXNzIEV4cHJlc3Npb25Ob2RlIDogcHVibGljIE5vZGUgewogICAgIHByb3RlY3RlZDoKLSAgICAg
ICAgRXhwcmVzc2lvbk5vZGUoaW50LCBSZXN1bHRUeXBlID0gUmVzdWx0VHlwZTo6dW5rbm93blR5
cGUoKSk7CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFJl
c3VsdFR5cGUgPSBSZXN1bHRUeXBlOjp1bmtub3duVHlwZSgpKTsKIAogICAgIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAg
LTE3NSwxMiArMTc4LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3RhdGVtZW50
Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFN0YXRlbWVudE5v
ZGUoaW50KTsKKyAgICAgICAgU3RhdGVtZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsK
IAogICAgIHB1YmxpYzoKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRMb2MoaW50
IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKTsKKyAgICAgICAgdm9pZCBzZXRMb2MoaW50IGZpcnN0
TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKTsKICAgICAgICAgaW50IGZpcnN0TGluZSgp
IGNvbnN0IHsgcmV0dXJuIGxpbmVObygpOyB9CiAgICAgICAgIGludCBsYXN0TGluZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbGFzdExpbmU7IH0KKyAgICAgICAgaW50IGNvbHVtbigpIGNvbnN0IHsgcmV0
dXJuIGNvbHVtbk5vKCk7fQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5U3RhdGVtZW50
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzUmV0dXJu
Tm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xOTQsNyArMTk5LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBOdWxsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7
CiAgICAgcHVibGljOgotICAgICAgICBOdWxsTm9kZShpbnQpOworICAgICAgICBOdWxsTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTIwNCw3ICsyMDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJv
b2xlYW5Ob2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IEJvb2xlYW5Ob2RlKGludCwgYm9vbCB2YWx1ZSk7CisgICAgICAgIEJvb2xlYW5Ob2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wgdmFsdWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwpAQCAtMjE2LDcgKzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgTnVtYmVyTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBOdW1iZXJOb2RlKGludCwgZG91YmxlIHZhbHVlKTsKKyAgICAgICAgTnVtYmVyTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBkb3VibGUgdmFsdWUpOwogCiAgICAgICAgIGRvdWJs
ZSB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICAgICAgdm9pZCBzZXRWYWx1
ZShkb3VibGUgdmFsdWUpIHsgbV92YWx1ZSA9IHZhbHVlOyB9CkBAIC0yMzIsNyArMjM3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBTdHJpbmdOb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFN0cmluZ05vZGUoaW50LCBjb25zdCBJZGVu
dGlmaWVyJik7CisgICAgICAgIFN0cmluZ05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgSWRlbnRpZmllciYpOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIHZhbHVlKCkgeyBy
ZXR1cm4gbV92YWx1ZTsgfQogCkBAIC0zNDIsNyArMzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBSZWdFeHBOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVnRXhwTm9kZShp
bnQsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzKTsK
KyAgICAgICAgUmVnRXhwTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlm
aWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncyk7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0zNTMsNyArMzU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBUaGlzTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBUaGlzTm9kZShpbnQpOworICAgICAgICBUaGlzTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAg
LTM2MSw3ICszNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlc29sdmVOb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlc29sdmVO
b2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIGludCBzdGFydE9mZnNldCk7CisgICAgICAgIFJl
c29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBpbnQg
c3RhcnRPZmZzZXQpOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50OyB9CiAKQEAgLTM5MywxMSArMzk4LDExIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgQXJyYXlOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEFycmF5Tm9kZShpbnQsIGludCBlbGlzaW9uKTsKLSAgICAg
ICAgQXJyYXlOb2RlKGludCwgRWxlbWVudE5vZGUqKTsKLSAgICAgICAgQXJyYXlOb2RlKGludCwg
aW50IGVsaXNpb24sIEVsZW1lbnROb2RlKik7CisgICAgICAgIEFycmF5Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBpbnQgZWxpc2lvbik7CisgICAgICAgIEFycmF5Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFbGVtZW50Tm9kZSopOworICAgICAgICBBcnJheU5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgaW50IGVsaXNpb24sIEVsZW1lbnROb2RlKik7CiAKLSAgICAgICAgQXJn
dW1lbnRMaXN0Tm9kZSogdG9Bcmd1bWVudExpc3QoSlNHbG9iYWxEYXRhKiwgaW50KSBjb25zdDsK
KyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogdG9Bcmd1bWVudExpc3QoSlNHbG9iYWxEYXRhKiwg
aW50LCBpbnQpIGNvbnN0OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpA
QCAtNDI4LDggKzQzMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJvcGVydHlM
aXN0Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFByb3BlcnR5TGlz
dE5vZGUoaW50LCBQcm9wZXJ0eU5vZGUqKTsKLSAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShpbnQs
IFByb3BlcnR5Tm9kZSosIFByb3BlcnR5TGlzdE5vZGUqKTsKKyAgICAgICAgUHJvcGVydHlMaXN0
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGUqKTsKKyAgICAgICAgUHJv
cGVydHlMaXN0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGUqLCBQcm9w
ZXJ0eUxpc3ROb2RlKik7CiAKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogCkBAIC00NDAsOCArNDQ1
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBPYmplY3RMaXRlcmFsTm9kZSA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBPYmplY3RMaXRlcmFs
Tm9kZShpbnQpOwotICAgICAgICBPYmplY3RMaXRlcmFsTm9kZShpbnQsIFByb3BlcnR5TGlzdE5v
ZGUqKTsKKyAgICAgICAgT2JqZWN0TGl0ZXJhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7
CisgICAgICAgIE9iamVjdExpdGVyYWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3Bl
cnR5TGlzdE5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAg
LTQ1MSw3ICs0NTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBCcmFja2V0
QWNjZXNzb3JOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZShp
bnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBib29s
IHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YnNjcmlwdCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic2NyaXB0OyB9
CkBAIC00NjksNyArNDc0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEb3RBY2Nl
c3Nvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoaW50LCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBEb3RBY2Nlc3Nv
ck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYmFzZTsgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQpAQCAtNDg2LDggKzQ5MSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgQXJndW1lbnRMaXN0Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIEFyZ3VtZW50TGlzdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOwot
ICAgICAgICBBcmd1bWVudExpc3ROb2RlKGludCwgQXJndW1lbnRMaXN0Tm9kZSosIEV4cHJlc3Np
b25Ob2RlKik7CisgICAgICAgIEFyZ3VtZW50TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBBcmd1bWVudExpc3ROb2RlKiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAg
ICAgICBBcmd1bWVudExpc3ROb2RlKiBtX25leHQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBt
X2V4cHI7CkBAIC01MDYsOCArNTExLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBO
ZXdFeHByTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJl
c3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5ld0V4cHJOb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqKTsKLSAgICAgICAgTmV3RXhwck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSosIEFy
Z3VtZW50c05vZGUqKTsKKyAgICAgICAgTmV3RXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgTmV3RXhwck5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKik7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01MTgsNyArNTIzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBFdmFsRnVuY3Rpb25DYWxsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGludCwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAg
RXZhbEZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgQXJndW1lbnRzTm9k
ZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTUyOCw3ICs1
MzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbFZhbHVlTm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRh
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRnVuY3Rpb25DYWxsVmFsdWVO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9k
ZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTUzOSw3ICs1
NDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbFJlc29sdmVO
b2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoaW50LCBj
b25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRnVuY3Rpb25DYWxs
UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEFy
Z3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBA
IC01NTAsNyArNTU1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgRnVuY3Rp
b25DYWxsQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2Fi
bGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxC
cmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vi
c2NyaXB0LCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YnNjcmlwdCwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU2Miw3ICs1NjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1
YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBG
dW5jdGlvbkNhbGxEb3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTU3NSw3ICs1ODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENh
bGxGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAg
IENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU4Myw3ICs1ODgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBw
dWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBBcHBseUZ1
bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CkBAIC01OTEsNyArNTk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBQcmVQb3N0UmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQcmVQb3N0UmVzb2x2
ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQcmVQb3N0UmVzb2x2ZU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKQEAgLTU5OSw3ICs2
MDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFBvc3RmaXhSZXNvbHZlTm9kZSA6
IHB1YmxpYyBQcmVQb3N0UmVzb2x2ZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUG9zdGZp
eFJlc29sdmVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAg
IFBvc3RmaXhSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlm
aWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
QEAgLTYwOSw3ICs2MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFBvc3RmaXhC
cmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4
cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBvc3RmaXhCcmFja2V0Tm9kZShp
bnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVy
YXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOworICAgICAgICBQb3N0Zml4QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJh
dG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02MjEsNyAr
NjI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQb3N0Zml4RG90Tm9kZSA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFBvc3RmaXhEb3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQb3N0Zml4RG90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CkBAIC02MzMsNyArNjM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQ
b3N0Zml4RXJyb3JOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxl
U3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUG9zdGZpeEVycm9yTm9k
ZShpbnQsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFBvc3RmaXhFcnJvck5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTY0Myw3ICs2NDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERl
bGV0ZVJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVsZXRlUmVzb2x2ZU5vZGUo
aW50LCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBEZWxldGVSZXNvbHZlTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjUzLDcgKzY1OCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgRGVsZXRlQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUs
IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBE
ZWxldGVCcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9k
ZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCk7CisgICAgICAgIERlbGV0ZUJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02NjQsNyArNjY5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEZWxldGVEb3ROb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1
YmxpYzoKLSAgICAgICAgRGVsZXRlRG90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBEZWxldGVEb3ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjc1LDcgKzY4MCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVsZXRlVmFsdWVOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlbGV0ZVZhbHVlTm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKik7CisgICAgICAgIERlbGV0ZVZhbHVlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOwpAQCAtNjg1LDcgKzY5MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
Vm9pZE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
Vm9pZE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBWb2lkTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwpAQCAtNjk1LDcgKzcwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgVHlwZU9mUmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgVHlwZU9mUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVy
Jik7CisgICAgICAgIFR5cGVPZlJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNv
bnN0IElkZW50aWZpZXImKTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQogCkBAIC03MDcsNyArNzEyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBUeXBlT2ZWYWx1ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lv
bk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVHlwZU9mVmFsdWVOb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqKTsKKyAgICAgICAgVHlwZU9mVmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CkBAIC03MTcsNyArNzIyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVm
aXhSZXNvbHZlTm9kZSA6IHB1YmxpYyBQcmVQb3N0UmVzb2x2ZU5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgUHJlZml4UmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0
b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KTsKKyAgICAgICAgUHJlZml4UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CkBAIC03MjcsNyArNzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBQcmVmaXhCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRo
cm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAg
UHJlZml4QnJhY2tldE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9m
ZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlZml4QnJhY2tldE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2Rl
KiBzdWJzY3JpcHQsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CkBAIC03MzksNyArNzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQ
cmVmaXhEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlUHJl
Zml4ZWRTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQcmVmaXhEb3RO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRv
ciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpOworICAgICAgICBQcmVmaXhEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTc1MSw3ICs3NTYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIFByZWZpeEVycm9yTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIFByZWZpeEVycm9yTm9kZShpbnQsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFByZWZpeEVycm9y
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNzYxLDcgKzc2Niw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgVW5hcnlPcE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgVW5hcnlPcE5vZGUoaW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9u
Tm9kZSosIE9wY29kZUlEKTsKKyAgICAgICAgVW5hcnlPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgUmVzdWx0VHlwZSwgRXhwcmVzc2lvbk5vZGUqLCBPcGNvZGVJRCk7CiAKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHByKCkgeyByZXR1cm4gbV9leHByOyB9
CkBAIC03NzgsNyArNzgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBVbmFyeVBs
dXNOb2RlIDogcHVibGljIFVuYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFVuYXJ5
UGx1c05vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBVbmFyeVBsdXNOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIEV4cHJlc3Npb25Ob2RlKiBzdHJpcFVuYXJ5UGx1cygpIHsgcmV0dXJu
IGV4cHIoKTsgfQpAQCAtNzg2LDEyICs3OTEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBOZWdhdGVOb2RlIDogcHVibGljIFVuYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIE5lZ2F0ZU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBOZWdhdGVOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAgICAgfTsKIAogICAg
IGNsYXNzIEJpdHdpc2VOb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIEJpdHdpc2VOb3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAg
ICAgQml0d2lzZU5vdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
KTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIoKSB7IHJl
dHVybiBtX2V4cHI7IH0KQEAgLTgwNSw3ICs4MTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAKICAg
ICBjbGFzcyBMb2dpY2FsTm90Tm9kZSA6IHB1YmxpYyBVbmFyeU9wTm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBMb2dpY2FsTm90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAg
IExvZ2ljYWxOb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRl
eHQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBMYWJlbCogdHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFy
Z2V0LCBib29sIGZhbGxUaHJvdWdoTWVhbnNUcnVlKTsKICAgICAgICAgdmlydHVhbCBib29sIGhh
c0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkgY29uc3QgeyByZXR1cm4gZXhwcigpLT5oYXNDb25k
aXRpb25Db250ZXh0Q29kZWdlbigpOyB9CkBAIC04MTMsOCArODE4LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBCaW5hcnlPcE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgQmluYXJ5T3BOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOwotICAgICAgICBCaW5hcnlPcE5vZGUoaW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJpbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2Rl
SUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJpbmFyeU9wTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFN0cmNhdChCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbiwgUmVnaXN0ZXJJRCogbGhzID0gMCwgUmVh
ZE1vZGlmeVJlc29sdmVOb2RlKiBlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZSA9IDApOwogCkBAIC04
MzgsNzIgKzg0Myw3MiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE11bHROb2RlIDog
cHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBNdWx0Tm9kZShpbnQs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpOworICAgICAgICBNdWx0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgRGl2Tm9kZSA6IHB1YmxpYyBC
aW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGl2Tm9kZShpbnQsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOworICAgICAgICBEaXZOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBNb2ROb2RlIDogcHVibGljIEJpbmFyeU9wTm9k
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBNb2ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgICAgIE1vZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAg
ICAgfTsKIAogICAgIGNsYXNzIEFkZE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIEFkZE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQWRk
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNBZGQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAogICAg
IGNsYXNzIFN1Yk5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIFN1Yk5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgU3ViTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNTdWJ0cmFjdCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwogCiAgICAgY2xhc3Mg
TGVmdFNoaWZ0Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgTGVmdFNoaWZ0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBMZWZ0U2hpZnRO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAg
ICBjbGFzcyBSaWdodFNoaWZ0Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgUmlnaHRTaGlmdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAg
UmlnaHRTaGlmdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAg
ICAgfTsKIAogICAgIGNsYXNzIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5
T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgTGVz
c05vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExlc3NO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIExlc3NOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBHcmVhdGVyTm9k
ZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgR3JlYXRlck5v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgR3JlYXRlck5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIExlc3NFcU5v
ZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExlc3NFcU5v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTGVzc0VxTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgR3JlYXRlckVx
Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgR3JlYXRl
ckVxTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBHcmVhdGVyRXFOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBU
aHJvd2FibGVCaW5hcnlPcE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlLCBwdWJsaWMgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgVGhyb3dhYmxlQmluYXJ5
T3BOb2RlKGludCwgUmVzdWx0VHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgICAg
ICBUaHJvd2FibGVCaW5hcnlPcE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBSZXN1
bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bj
b2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIFRocm93YWJsZUJpbmFy
eU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05MTEsNyArOTE2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgSW5zdGFuY2VPZk5vZGUgOiBwdWJs
aWMgVGhyb3dhYmxlQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEluc3RhbmNl
T2ZOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEluc3RhbmNlT2ZOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwpAQCAtOTE5LDEyICs5MjQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBJbk5vZGUgOiBwdWJsaWMgVGhyb3dhYmxlQmluYXJ5T3BOb2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIEluTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBJbk5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAg
IGNsYXNzIEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgRXF1YWxOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEVxdWFsTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTkzMiwxMiArOTM3LDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgTm90RXF1YWxOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBOb3RFcXVhbE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAg
ICAgTm90RXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwog
ICAgIH07CiAKICAgICBjbGFzcyBTdHJpY3RFcXVhbE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFN0cmljdEVxdWFsTm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOworICAgICAgICBTdHJpY3RFcXVhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05
NDUsMjggKzk1MCwyOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE5vdFN0cmljdEVx
dWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTm90
U3RyaWN0RXF1YWxOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIE5vdFN0cmljdEVx
dWFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9Owog
CiAgICAgY2xhc3MgQml0QW5kTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgQml0QW5kTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBCaXRB
bmROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAK
ICAgICBjbGFzcyBCaXRPck5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIEJpdE9yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBCaXRPck5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAg
IGNsYXNzIEJpdFhPck5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIEJpdFhPck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQml0WE9yTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAg
Ly8gbV9leHByMSAmJiBtX2V4cHIyLCBtX2V4cHIxIHx8IG1fZXhwcjIKICAgICBjbGFzcyBMb2dp
Y2FsT3BOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IExvZ2ljYWxPcE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgTG9naWNhbE9wZXJhdG9yKTsKKyAgICAgICAgTG9naWNhbE9wTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgTG9naWNhbE9wZXJhdG9yKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTk4MSw3ICs5ODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBUaGUgdGVy
bmFyeSBvcGVyYXRvciwgIm1fbG9naWNhbCA/IG1fZXhwcjEgOiBtX2V4cHIyIgogICAgIGNsYXNz
IENvbmRpdGlvbmFsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBDb25kaXRpb25hbE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogbG9naWNhbCwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpOworICAgICAgICBDb25k
aXRpb25hbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxvZ2lj
YWwsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTk5Myw3ICs5OTgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlYWRNb2RpZnlSZXNvbHZlTm9kZSA6IHB1YmxpYyBF
eHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIFJlYWRNb2RpZnlSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXIm
LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCk7CisgICAgICAgIFJlYWRNb2RpZnlSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApOwpAQCAtMTAwNiw3ICsxMDExLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBBc3NpZ25SZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFzc2lnblJlc29s
dmVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCk7Cisg
ICAgICAgIEFzc2lnblJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElk
ZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQpOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwpAQCAtMTAxNyw3ICsxMDIyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBSZWFkTW9kaWZ5QnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUs
IHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAg
ICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVz
c2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7Cisg
ICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CkBAIC0xMDMyLDcgKzEwMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFz
c2lnbkJyYWNrZXROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNzaWduQnJhY2tldE5vZGUo
aW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXNzaWduQnJhY2tldE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJz
Y3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50
cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CkBAIC0xMDQ2LDcgKzEwNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIEFzc2lnbkRvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJv
d2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBBc3NpZ25Eb3ROb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9u
Tm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVu
c2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBBc3NpZ25E
b3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwNTks
NyArMTA2NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVhZE1vZGlmeURvdE5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25O
b2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFJlYWRNb2Rp
ZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCk7CkBAIC0xMDczLDcgKzEwNzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFz
c2lnbkVycm9yTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4
cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFzc2lnbkVycm9yTm9kZShpbnQs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KTsKKyAgICAgICAgQXNzaWduRXJyb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwODMsNyArMTA4OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29tbWFOb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQ29tbWFOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIpOworICAgICAgICBDb21tYU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpOwogCiAgICAgICAgIHVzaW5n
IFBhcnNlckFyZW5hRGVsZXRhYmxlOjpvcGVyYXRvciBuZXc7CiAKQEAgLTEwOTgsNyArMTEwMyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIENvbnN0RGVjbE5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29uc3REZWNsTm9kZShp
bnQsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBDb25zdERl
Y2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNz
aW9uTm9kZSopOwogCiAgICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVy
biBtX2luaXQ7IH0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQoKSB7IHJldHVybiBt
X2lkZW50OyB9CkBAIC0xMTE4LDcgKzExMjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIENvbnN0U3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJs
aWM6Ci0gICAgICAgIENvbnN0U3RhdGVtZW50Tm9kZShpbnQsIENvbnN0RGVjbE5vZGUqIG5leHQp
OworICAgICAgICBDb25zdFN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgQ29u
c3REZWNsTm9kZSogbmV4dCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CkBAIC0xMTQzLDcgKzExNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJsb2Nr
Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJsb2Nr
Tm9kZShpbnQsIFNvdXJjZUVsZW1lbnRzKiA9IDApOworICAgICAgICBCbG9ja05vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgU291cmNlRWxlbWVudHMqID0gMCk7CiAKICAgICAgICAgU3RhdGVt
ZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50KCkgY29uc3Q7CiAgICAgICAgIFN0YXRlbWVudE5vZGUq
IGxhc3RTdGF0ZW1lbnQoKSBjb25zdDsKQEAgLTExNTgsNyArMTE2Myw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgRW1wdHlTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVudE5v
ZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRW1wdHlTdGF0ZW1lbnROb2RlKGludCk7CisgICAg
ICAgIEVtcHR5U3RhdGVtZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTExNjgsNyArMTE3Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIERlYnVnZ2VyU3RhdGVtZW50Tm9kZSA6IHB1Ymxp
YyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlYnVnZ2VyU3RhdGVtZW50
Tm9kZShpbnQpOworICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJik7CiAgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
QEAgLTExNzYsNyArMTE4MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXhwclN0
YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBFeHByU3RhdGVtZW50Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIEV4cHJT
dGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAK
ICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIoKSBjb25zdCB7IHJldHVybiBtX2V4cHI7IH0K
IApAQCAtMTE5MCw4ICsxMTk1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBWYXJT
dGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgVmFyU3RhdGVtZW50Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7ICAgICAgICAKLQorICAg
ICAgICBWYXJTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKik7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogCkBAIC0xMjAwLDcg
KzEyMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElmTm9kZSA6IHB1YmxpYyBT
dGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIElmTm9kZShpbnQsIEV4cHJlc3Np
b25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2spOworICAgICAgICBJZk5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3Rh
dGVtZW50Tm9kZSogaWZCbG9jayk7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTEyMTEsNyArMTIxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
SWZFbHNlTm9kZSA6IHB1YmxpYyBJZk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSWZFbHNl
Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxv
Y2ssIFN0YXRlbWVudE5vZGUqIGVsc2VCbG9jayk7CisgICAgICAgIElmRWxzZU5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9k
ZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2NrKTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyMjEsNyArMTIyNSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgRG9XaGlsZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBEb1doaWxlTm9kZShpbnQsIFN0YXRlbWVudE5vZGUqLCBFeHByZXNz
aW9uTm9kZSopOworICAgICAgICBEb1doaWxlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBT
dGF0ZW1lbnROb2RlKiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKQEAgLTEyMzIsNyArMTIzNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgV2hpbGVOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgV2hpbGVOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7
CisgICAgICAgIFdoaWxlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSosIFN0YXRlbWVudE5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KTsKQEAgLTEyNDMsNyArMTI0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRm9y
Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZvck5v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIzLCBTdGF0ZW1lbnROb2RlKik7CisgICAgICAgIEZvck5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIEV4cHJlc3Npb25Ob2RlKiBleHByMywgU3RhdGVtZW50Tm9kZSopOwogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTI1Niw4ICsxMjYwLDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGb3JJbk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9k
ZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IEZvckluTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1l
bnROb2RlKik7Ci0gICAgICAgIEZvckluTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGNvbnN0IElk
ZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9k
ZSosIGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsKKyAgICAgICAg
Rm9ySW5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVz
c2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7CisgICAgICAgIEZvckluTm9kZShKU0dsb2JhbERh
dGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lv
bk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqLCBpbnQgZGl2b3QsIGludCBz
dGFydE9mZnNldCwgaW50IGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CkBAIC0xMjcxLDggKzEyNzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIENvbnRpbnVlTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxl
RXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29udGludWVOb2RlKEpTR2xv
YmFsRGF0YSosIGludCk7Ci0gICAgICAgIENvbnRpbnVlTm9kZShpbnQsIGNvbnN0IElkZW50aWZp
ZXImKTsKKyAgICAgICAgQ29udGludWVOb2RlKEpTR2xvYmFsRGF0YSosIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYpOworICAgICAgICBDb250aW51ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Y29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CkBAIC0xMjgyLDggKzEyODYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIEJyZWFrTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhw
cmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgQnJlYWtOb2RlKEpTR2xvYmFsRGF0
YSosIGludCk7Ci0gICAgICAgIEJyZWFrTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImKTsKKyAg
ICAgICAgQnJlYWtOb2RlKEpTR2xvYmFsRGF0YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwor
ICAgICAgICBCcmVha05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmll
ciYpOwogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0x
MjkzLDcgKzEyOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJldHVybk5vZGUg
OiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFJldHVybk5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogdmFs
dWUpOworICAgICAgICBSZXR1cm5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiB2YWx1ZSk7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHZhbHVlKCkgeyByZXR1
cm4gbV92YWx1ZTsgfQogCkBAIC0xMzA3LDcgKzEzMTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIFdpdGhOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoK
LSAgICAgICAgV2l0aE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqLCB1
aW50MzJfdCBkaXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCk7CisgICAgICAgIFdpdGhO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9k
ZSosIHVpbnQzMl90IGRpdm90LCB1aW50MzJfdCBleHByZXNzaW9uTGVuZ3RoKTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEzMjAsNyArMTMyNCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgTGFiZWxOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUs
IHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBM
YWJlbE5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBTdGF0ZW1lbnROb2RlKik7Cisg
ICAgICAgIExhYmVsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBTdGF0ZW1lbnROb2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CkBAIC0xMzMxLDcgKzEzMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IFRocm93Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVz
c2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgVGhyb3dOb2RlKGludCwgRXhwcmVzc2lv
bk5vZGUqKTsKKyAgICAgICAgVGhyb3dOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0x
MzQxLDcgKzEzNDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFRyeU5vZGUgOiBw
dWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBUcnlOb2RlKGludCwg
U3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2VwdGlvbklkZW50
LCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2sp
OworICAgICAgICBUcnlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFN0YXRlbWVudE5vZGUq
IHRyeUJsb2NrLCBjb25zdCBJZGVudGlmaWVyJiBleGNlcHRpb25JZGVudCwgU3RhdGVtZW50Tm9k
ZSogY2F0Y2hCbG9jaywgU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrKTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEzNzAsOCArMTM3NCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayBWYXJT
dGFjazsKICAgICAgICAgdHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayBG
dW5jdGlvblN0YWNrOwogCi0gICAgICAgIFNjb3BlTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGJv
b2wgaW5TdHJpY3RDb250ZXh0KTsKLSAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIGlu
dCwgY29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlv
blN0YWNrKiwgSWRlbnRpZmllclNldCYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7
CisgICAgICAgIFNjb3BlTm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBib29sIGluU3RyaWN0Q29udGV4dCk7CisgICAgICAgIFNjb3BlTm9kZShKU0dsb2JhbERhdGEq
LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNlRWxlbWVu
dHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgQ29kZUZlYXR1
cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB1c2luZyBQYXJzZXJBcmVuYVJlZkNv
dW50ZWQ6Om9wZXJhdG9yIG5ldzsKIApAQCAtMTQzMywxMiArMTQzNywxMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBQcm9ncmFtTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1
YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSBmYWxzZTsK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IGNyZWF0ZShKU0dsb2JhbERh
dGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRl
bnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25z
dGFudHMpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gY3JlYXRlKEpT
R2xvYmFsRGF0YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFNvdXJjZUVsZW1lbnRzKiwgVmFy
U3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUm
LCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHN0YXRpYyBjb25z
dCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IGZhbHNlOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
UHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNr
KiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29k
ZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgUHJvZ3JhbU5vZGUoSlNHbG9i
YWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFj
ayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENv
ZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwog
ICAgIH07CkBAIC0xNDQ2LDEyICsxNDUwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IEV2YWxOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgY29uc3QgYm9vbCBpc0Z1bmN0aW9uTm9kZSA9IGZhbHNlOwotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxFdmFsTm9kZT4gY3JlYXRlKEpTR2xvYmFsRGF0YSosIGludCwgU291cmNlRWxlbWVu
dHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291
cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEV2YWxOb2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJ
ZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNv
bnN0YW50cyk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0g
ZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAgICAgICBFdmFsTm9kZShKU0dsb2JhbERhdGEqLCBp
bnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmll
clNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMp
OworICAgICAgICBFdmFsTm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJT
ZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsK
IAogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CiAgICAgfTsKQEAgLTE0NjgsOCArMTQ3Miw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGUgOiBwdWJsaWMgU2NvcGVO
b2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzRnVuY3Rpb25O
b2RlID0gdHJ1ZTsKLSAgICAgICAgc3RhdGljIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShKU0ds
b2JhbERhdGEqLCBpbnQsIGJvb2wgaXNTdHJpY3RNb2RlKTsKLSAgICAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gY3JlYXRlKEpTR2xvYmFsRGF0YSosIGludCwgU291cmNl
RWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29u
c3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAg
IHN0YXRpYyBGdW5jdGlvbkJvZHlOb2RlKiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgYm9vbCBpc1N0cmljdE1vZGUpOworICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJ
ZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNv
bnN0YW50cyk7CiAKICAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29u
c3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgpOyB9CiAgICAgICAgIHNpemVfdCBwYXJhbWV0
ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy0+c2l6ZSgpOyB9CkBAIC0xNDg2
LDggKzE0OTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wg
c2NvcGVJc0Z1bmN0aW9uID0gdHJ1ZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEZ1bmN0aW9u
Qm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBib29sIGluU3RyaWN0Q29udGV4dCk7Ci0gICAg
ICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyos
IFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VD
b2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgRnVuY3Rpb25C
b2R5Tm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sIGluU3Ry
aWN0Q29udGV4dCk7CisgICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9u
U3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50OwogICAgICAg
ICBJZGVudGlmaWVyIG1faW5mZXJyZWROYW1lOwpAQCAtMTQ5Niw3ICsxNTAwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVuY0V4cHJOb2RlKGludCwgY29uc3QgSWRlbnRp
ZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9k
ZSogPSAwKTsKKyAgICAgICAgRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNv
bnN0IElkZW50aWZpZXImLCBGdW5jdGlvbkJvZHlOb2RlKiwgY29uc3QgU291cmNlQ29kZSYsIFBh
cmFtZXRlck5vZGUqID0gMCk7CiAKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSgpIHsg
cmV0dXJuIG1fYm9keTsgfQogCkBAIC0xNTEwLDcgKzE1MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEZ1bmNEZWNsTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIEZ1bmNEZWNsTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBGdW5j
dGlvbkJvZHlOb2RlKiwgY29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRlck5vZGUqID0gMCk7Cisg
ICAgICAgIEZ1bmNEZWNsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlm
aWVyJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2Rl
KiA9IDApOwogCiAgICAgICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkoKSB7IHJldHVybiBtX2Jv
ZHk7IH0KIApAQCAtMTU2MSw3ICsxNTY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBTd2l0Y2hOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgU3dpdGNoTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwgQ2FzZUJsb2NrTm9kZSopOworICAg
ICAgICBTd2l0Y2hOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwg
Q2FzZUJsb2NrTm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDU1OGY1MGU1ZmIzMDUz
NGM2NjI0ZTc3NDljYjA0ZTY5NTJiYzkyNjMuLjNlMjQzYjQwNzkwMmFhMGJhOTMxMzMzMzc0Mzll
OTcyZTU4YWU2MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAg
LTEzOCw3ICsxMzgsNyBAQCB0ZW1wbGF0ZSA8U291cmNlRWxlbWVudHNNb2RlIG1vZGUsIGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPAogICAgIGJvb2wgc2Vlbk5v
bkRpcmVjdGl2ZSA9IGZhbHNlOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGRpcmVjdGl2ZSA9IDA7
CiAgICAgdW5zaWduZWQgZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDA7Ci0gICAgdW5zaWduZWQg
c3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1faW5mby5zdGFydE9mZnNldDsKKyAgICB1bnNpZ25lZCBz
dGFydE9mZnNldCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKICAgICB1bnNpZ25l
ZCBvbGRMYXN0TGluZU51bWJlciA9IG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCk7CiAgICAgdW5z
aWduZWQgb2xkTGluZU51bWJlciA9IG1fbGV4ZXItPmxpbmVOdW1iZXIoKTsKICAgICBib29sIGhh
c1NldFN0cmljdCA9IGZhbHNlOwpAQCAtMTcyLDYgKzE3Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFt
ZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRl
eHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFZBUikpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBzdGFydCA9IHRva2VuTGluZSgpOwogICAg
IGludCBlbmQgPSAwOwogICAgIGludCBzY3JhdGNoOwpAQCAtMTgyLDIwICsxODMsMjEgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVZhckRlY2xhcmF0aW8KICAgICBmYWlsSWZUcnVlKG1fZXJyb3IpOwogICAgIGZhaWxJ
ZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
VmFyU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHZhckRlY2xzLCBzdGFydCwg
ZW5kKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVWYXJTdGF0ZW1lbnQobG9jYXRpb24sIHZh
ckRlY2xzLCBzdGFydCwgZW5kKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VDb25zdERlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAg
IEFTU0VSVChtYXRjaChDT05TVFRPS0VOKSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9u
KHRva2VuTG9jYXRpb24oKSk7CiAgICAgaW50IHN0YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgaW50
IGVuZCA9IDA7CiAgICAgVHJlZUNvbnN0RGVjbExpc3QgY29uc3REZWNscyA9IHBhcnNlQ29uc3RE
ZWNsYXJhdGlvbkxpc3QoY29udGV4dCk7CiAgICAgZmFpbElmVHJ1ZShtX2Vycm9yKTsKICAgICBm
YWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUNvbnN0U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGNvbnN0RGVjbHMs
IHN0YXJ0LCBlbmQpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnN0U3RhdGVtZW50KGxv
Y2F0aW9uLCBjb25zdERlY2xzLCBzdGFydCwgZW5kKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KQEAgLTIxMCw2ICsyMTIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRG9XaGlsZVN0YXRlbQog
ICAgIGVuZExvb3AoKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIGludCBlbmRM
aW5lID0gdG9rZW5MaW5lKCk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9j
YXRpb24oKSk7CiAgICAgY29uc3VtZU9yRmFpbChXSElMRSk7CiAgICAgY29uc3VtZU9yRmFpbChP
UEVOUEFSRU4pOwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29u
dGV4dCk7CkBAIC0yMTcsMTMgKzIyMCwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRG9XaGlsZVN0YXRlbQogICAg
IGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAg
ICAgICAgIG5leHQoKTsgLy8gQWx3YXlzIHBlcmZvcm1zIGF1dG9tYXRpYyBzZW1pY29sb24gaW5z
ZXJ0aW9uLgotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgc3RhdGVtZW50LCBleHByLCBzdGFydExpbmUsIGVuZExpbmUp
OworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQobG9jYXRpb24sIHN0
YXRlbWVudCwgZXhwciwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaGlsZVN0YXRlbWVudChUcmVlQnVpbGRlciYgY29u
dGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goV0hJTEUpKTsKKyAgICBKU1Rva2VuTG9jYXRpb24g
bG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5l
KCk7CiAgICAgbmV4dCgpOwogICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKQEAgLTIzNiw3
ICsyNDAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlV2hpbGVTdGF0ZW1lbgogICAgIFRyZWVTdGF0ZW1lbnQgc3Rh
dGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICBlbmRMb29wKCk7
CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVX
aGlsZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBzdGF0ZW1lbnQs
IHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlV2hpbGVTdGF0
ZW1lbnQobG9jYXRpb24sIGV4cHIsIHN0YXRlbWVudCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTI0NSw2ICsyNDksNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVZhckRlY2xhcmF0aQogICAgIFRyZWVFeHByZXNzaW9uIHZhckRlY2xzID0gMDsKICAg
ICBkbyB7CiAgICAgICAgIGRlY2xhcmF0aW9ucysrOworICAgICAgICBKU1Rva2VuTG9jYXRpb24g
bG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBtYXRj
aE9yRmFpbChJREVOVCk7CiAgICAgICAgIApAQCAtMjY1LDExICsyNzAsMTEgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VWYXJEZWNsYXJhdGkKICAgICAgICAgICAgIGxhc3RJbml0aWFsaXplciA9IGluaXRpYWxpemVy
OwogICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5pdGlhbGl6ZXIpOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gY29udGV4dC5jcmVhdGVBc3NpZ25SZXNv
bHZlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksICpuYW1lLCBpbml0aWFsaXplciwgdmFyU3Rh
cnQsIHZhckRpdm90LCBsYXN0VG9rZW5FbmQoKSk7CisgICAgICAgICAgICBUcmVlRXhwcmVzc2lv
biBub2RlID0gY29udGV4dC5jcmVhdGVBc3NpZ25SZXNvbHZlKGxvY2F0aW9uLCAqbmFtZSwgaW5p
dGlhbGl6ZXIsIHZhclN0YXJ0LCB2YXJEaXZvdCwgbGFzdFRva2VuRW5kKCkpOwogICAgICAgICAg
ICAgaWYgKCF2YXJEZWNscykKICAgICAgICAgICAgICAgICB2YXJEZWNscyA9IG5vZGU7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdmFyRGVjbHMgPSBjb250ZXh0LmNvbWJpbmVD
b21tYU5vZGVzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHZhckRlY2xzLCBub2RlKTsKKyAg
ICAgICAgICAgICAgICB2YXJEZWNscyA9IGNvbnRleHQuY29tYmluZUNvbW1hTm9kZXMobG9jYXRp
b24sIHZhckRlY2xzLCBub2RlKTsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKG1hdGNoKENPTU1B
KSk7CiAgICAgcmV0dXJuIHZhckRlY2xzOwpAQCAtMjgyLDYgKzI4Nyw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNvbnN0RGVjbExpc3QgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlQ29uc3REZWNsCiAgICAgVHJlZUNvbnN0RGVjbExpc3QgY29uc3REZWNscyA9IDA7CiAgICAg
VHJlZUNvbnN0RGVjbExpc3QgdGFpbCA9IDA7CiAgICAgZG8geworICAgICAgICBKU1Rva2VuTG9j
YXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwogICAgICAg
ICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG5hbWUgPSBt
X3Rva2VuLm1fZGF0YS5pZGVudDsKQEAgLTI5NCw3ICszMDAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVDb25zdERlY2xMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNv
bnN0RGVjbAogICAgICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7
IC8vIGNvbnN1bWUgJz0nCiAgICAgICAgICAgICBpbml0aWFsaXplciA9IHBhcnNlQXNzaWdubWVu
dEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIH0KLSAgICAgICAgdGFpbCA9IGNvbnRleHQu
YXBwZW5kQ29uc3REZWNsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRhaWwsIG5hbWUsIGlu
aXRpYWxpemVyKTsKKyAgICAgICAgdGFpbCA9IGNvbnRleHQuYXBwZW5kQ29uc3REZWNsKGxvY2F0
aW9uLCB0YWlsLCBuYW1lLCBpbml0aWFsaXplcik7CiAgICAgICAgIGlmICghY29uc3REZWNscykK
ICAgICAgICAgICAgIGNvbnN0RGVjbHMgPSB0YWlsOwogICAgIH0gd2hpbGUgKG1hdGNoKENPTU1B
KSk7CkBAIC0zMDUsNiArMzExLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGb3JTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJU
KG1hdGNoKEZPUikpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9u
KCkpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAg
Y29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwpAQCAtMzUyLDcgKzM1OSw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
b3JTdGF0ZW1lbnQoCiAgICAgICAgIGVuZExvb3AoKTsKICAgICAgICAgZmFpbElmRmFsc2Uoc3Rh
dGVtZW50KTsKICAgICAgICAgCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9v
cChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBmb3JJblRhcmdldCwgZm9ySW5Jbml0aWFsaXpl
ciwgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBpbkxvY2F0aW9uLCBleHByRW5kLCBpbml0
U3RhcnQsIGluaXRFbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUZvckluTG9vcChsb2NhdGlvbiwgZm9ySW5UYXJnZXQsIGZvckluSW5pdGlhbGl6
ZXIsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFydCwgaW5Mb2NhdGlvbiwgZXhwckVuZCwgaW5p
dFN0YXJ0LCBpbml0RW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIH0KICAgICAKICAgICBp
ZiAoIW1hdGNoKFNFTUlDT0xPTikpIHsKQEAgLTM4OCw3ICszOTUsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9y
U3RhdGVtZW50KAogICAgICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVt
ZW50KGNvbnRleHQsIHVudXNlZCk7CiAgICAgICAgIGVuZExvb3AoKTsKICAgICAgICAgZmFpbElm
RmFsc2Uoc3RhdGVtZW50KTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9yTG9vcCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBkZWNscywgY29uZGl0aW9uLCBpbmNyZW1lbnQsIHN0
YXRlbWVudCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRm9yTG9vcChsb2NhdGlvbiwgZGVjbHMsIGNvbmRpdGlvbiwgaW5jcmVtZW50LCBzdGF0ZW1l
bnQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiAgICAgfQogICAgIAogICAgIC8vIEZvci1pbiBsb29w
CkBAIC00MDUsMTMgKzQxMiwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAgIGVuZExv
b3AoKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIAotICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUZvckluTG9vcChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBkZWNscywgZXhw
ciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBkZWNsc0VuZCwgZXhwckVuZCwgc3RhcnRMaW5lLCBl
bmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJbkxvb3AobG9jYXRpb24sIGRl
Y2xzLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBleHByRW5kLCBzdGFy
dExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUJyZWFrU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VS
VChtYXRjaChCUkVBSykpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0
aW9uKCkpOwogICAgIGludCBzdGFydENvbCA9IHRva2VuU3RhcnQoKTsKICAgICBpbnQgZW5kQ29s
ID0gdG9rZW5FbmQoKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CkBAIC00MjAs
NyArNDI4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUJyZWFrU3RhdGVtZW4KICAgICAKICAgICBpZiAoYXV0b1Nl
bWlDb2xvbigpKSB7CiAgICAgICAgIGZhaWxJZkZhbHNlV2l0aE1lc3NhZ2UoYnJlYWtJc1ZhbGlk
KCksICInYnJlYWsnIGlzIG9ubHkgdmFsaWQgaW5zaWRlIGEgc3dpdGNoIG9yIGxvb3Agc3RhdGVt
ZW50Iik7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGlu
ZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KGxvY2F0aW9u
LCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIH0KICAgICBtYXRj
aE9yRmFpbChJREVOVCk7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1f
ZGF0YS5pZGVudDsKQEAgLTQyOSwxMyArNDM3LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VCcmVha1N0YXRlbWVu
CiAgICAgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICBmYWlsSWZGYWxz
ZShhdXRvU2VtaUNvbG9uKCkpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVt
ZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGlkZW50LCBzdGFydENvbCwgZW5kQ29sLCBz
dGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVt
ZW50KGxvY2F0aW9uLCBpZGVudCwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5l
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb250aW51
ZVN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goQ09O
VElOVUUpKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsK
ICAgICBpbnQgc3RhcnRDb2wgPSB0b2tlblN0YXJ0KCk7CiAgICAgaW50IGVuZENvbCA9IHRva2Vu
RW5kKCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwpAQCAtNDQ0LDcgKzQ1Myw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VDb250aW51ZVN0YXRlCiAgICAgCiAgICAgaWYgKGF1dG9TZW1pQ29sb24o
KSkgewogICAgICAgICBmYWlsSWZGYWxzZVdpdGhNZXNzYWdlKGNvbnRpbnVlSXNWYWxpZCgpLCAi
J2NvbnRpbnVlJyBpcyBvbmx5IHZhbGlkIGluc2lkZSBhIGxvb3Agc3RhdGVtZW50Iik7Ci0gICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGxvY2F0aW9uLCBzdGFy
dENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIH0KICAgICBtYXRjaE9yRmFp
bChJREVOVCk7CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5p
ZGVudDsKQEAgLTQ1NSwxMyArNDY0LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb250aW51ZVN0YXRlCiAgICAg
ZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICBmYWlsSWZGYWxzZShhdXRv
U2VtaUNvbG9uKCkpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGlkZW50LCBzdGFydENvbCwgZW5kQ29sLCBzdGFy
dExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVt
ZW50KGxvY2F0aW9uLCBpZGVudCwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5l
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VSZXR1cm5T
dGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFJFVFVS
TikpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAg
IGZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5pc0Z1bmN0aW9uKCkpOwogICAgIGludCBzdGFy
dExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQgZW5kTGluZSA9IHN0YXJ0TGluZTsKQEAgLTQ3
NCwyMCArNDg0LDIxIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VSZXR1cm5TdGF0ZW1lCiAgICAgaWYgKG1hdGNoKFNF
TUlDT0xPTikpCiAgICAgICAgIGVuZExpbmUgID0gdG9rZW5MaW5lKCk7CiAgICAgaWYgKGF1dG9T
ZW1pQ29sb24oKSkKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIDAsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5k
TGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVJldHVyblN0YXRlbWVudChsb2Nh
dGlvbiwgMCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICBUcmVlRXhwcmVz
c2lvbiBleHByID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGV4
cHIpOwogICAgIGVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgIGlmIChtYXRjaChTRU1JQ09MT04p
KQogICAgICAgICBlbmRMaW5lICA9IHRva2VuTGluZSgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9T
ZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5k
TGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KGxvY2F0aW9u
LCBleHByLCBzdGFydCwgZW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVRocm93U3RhdGVtZW50KFRyZWVCdWlsZGVy
JiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChUSFJPVykpOworICAgIEpTVG9rZW5Mb2Nh
dGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBlU3RhcnQgPSB0b2tlblN0
YXJ0KCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKQEAg
LTUwMCwxMyArNTExLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VUaHJvd1N0YXRlbWVuCiAgICAgaW50IGVuZExp
bmUgPSB0b2tlbkxpbmUoKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwogICAg
IAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVRocm93U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIGV4cHIsIGVTdGFydCwgZUVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVUaHJvd1N0YXRlbWVudChsb2NhdGlvbiwgZXhwciwgZVN0
YXJ0LCBlRW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
TGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVdpdGhTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQp
CiB7CiAgICAgQVNTRVJUKG1hdGNoKFdJVEgpKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBmYWlsSWZUcnVlV2l0aE1lc3NhZ2Uoc3RyaWN0TW9k
ZSgpLCAiJ3dpdGgnIHN0YXRlbWVudHMgYXJlIG5vdCB2YWxpZCBpbiBzdHJpY3QgbW9kZSIpOwog
ICAgIGN1cnJlbnRTY29wZSgpLT5zZXROZWVkc0Z1bGxBY3RpdmF0aW9uKCk7CiAgICAgaW50IHN0
YXJ0TGluZSA9IHRva2VuTGluZSgpOwpAQCAtNTIzLDEzICs1MzUsMTQgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVdp
dGhTdGF0ZW1lbnQKICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50
KGNvbnRleHQsIHVudXNlZCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICAKLSAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVXaXRoU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIGV4cHIsIHN0YXRlbWVudCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsK
KyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaXRoU3RhdGVtZW50KGxvY2F0aW9uLCBleHByLCBz
dGF0ZW1lbnQsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3dpdGNoU3RhdGVtZW50KFRyZWVCdWls
ZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChTV0lUQ0gpKTsKKyAgICBKU1Rva2Vu
TG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgc3RhcnRMaW5lID0g
dG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsK
QEAgLTU1MCw3ICs1NjMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0
ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3dpdGNoU3RhdGVtZQogICAgIGVuZFN3aXRj
aCgpOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDRSk7CiAgICAgCi0gICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlU3dpdGNoU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4
cHIsIGZpcnN0Q2xhdXNlcywgZGVmYXVsdENsYXVzZSwgc2Vjb25kQ2xhdXNlcywgc3RhcnRMaW5l
LCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQobG9j
YXRpb24sIGV4cHIsIGZpcnN0Q2xhdXNlcywgZGVmYXVsdENsYXVzZSwgc2Vjb25kQ2xhdXNlcywg
c3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICAKIH0KIApAQCAtNTk4LDYgKzYxMSw3IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVHJ5U3RhdGVtZW50KFRyZWVCdWls
ZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChUUlkpKTsKKyAgICBKU1Rva2VuTG9j
YXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBUcmVlU3RhdGVtZW50IHRyeUJs
b2NrID0gMDsKICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICZtX2dsb2JhbERhdGEtPnBy
b3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwogICAgIFRyZWVTdGF0ZW1lbnQgY2F0Y2hCbG9j
ayA9IDA7CkBAIC02MzQsMzcgKzY0OCwzOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVHJ5U3RhdGVtZW50KAogICAg
ICAgICBmYWlsSWZGYWxzZShmaW5hbGx5QmxvY2spOwogICAgIH0KICAgICBmYWlsSWZGYWxzZShj
YXRjaEJsb2NrIHx8IGZpbmFsbHlCbG9jayk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVHJ5
U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRyeUJsb2NrLCBpZGVudCwgY2F0
Y2hCbG9jaywgZmluYWxseUJsb2NrLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICByZXR1cm4g
Y29udGV4dC5jcmVhdGVUcnlTdGF0ZW1lbnQobG9jYXRpb24sIHRyeUJsb2NrLCBpZGVudCwgY2F0
Y2hCbG9jaywgZmluYWxseUJsb2NrLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZWJ1Z2dlclN0YXRlbWVudChUcmVl
QnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goREVCVUdHRVIpKTsKKyAgICBK
U1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgc3RhcnRM
aW5lID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVuZExpbmUgPSBzdGFydExpbmU7CiAgICAgbmV4
dCgpOwogICAgIGlmIChtYXRjaChTRU1JQ09MT04pKQogICAgICAgICBzdGFydExpbmUgPSB0b2tl
bkxpbmUoKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwotICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZURlYnVnZ2VyKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHN0YXJ0TGlu
ZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRGVidWdnZXIobG9jYXRpb24s
IHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+
CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlQmxvY2tTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAg
QVNTRVJUKG1hdGNoKE9QRU5CUkFDRSkpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0
b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBzdGFydCA9IHRva2VuTGluZSgpOwogICAgIG5leHQo
KTsKICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgbmV4dCgpOwotICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVCbG9ja1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCAwLCBzdGFydCwgbV9sYXN0TGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUJsb2NrU3RhdGVtZW50KGxvY2F0aW9uLCAwLCBzdGFydCwgbV9sYXN0TGluZSk7CiAgICAg
fQogICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdWJ0cmVlID0gcGFyc2VTb3VyY2VFbGVtZW50czxE
b250Q2hlY2tGb3JTdHJpY3RNb2RlPihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShzdWJ0cmVl
KTsKICAgICBtYXRjaE9yRmFpbChDTE9TRUJSQUNFKTsKICAgICBuZXh0KCk7Ci0gICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
c3VidHJlZSwgc3RhcnQsIG1fbGFzdExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJs
b2NrU3RhdGVtZW50KGxvY2F0aW9uLCBzdWJ0cmVlLCBzdGFydCwgbV9sYXN0TGluZSk7CiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC02ODUsOSArNzAxLDExIEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VTdGF0ZW1lbnQoVHJlCiAgICAgY2FzZSBGVU5DVElPTjoKICAgICAgICAgZmFpbElmRmFs
c2VJZlN0cmljdFdpdGhNZXNzYWdlKG1fc3RhdGVtZW50RGVwdGggPT0gMSwgIkZ1bmN0aW9ucyBj
YW5ub3QgYmUgZGVjbGFyZWQgaW4gYSBuZXN0ZWQgYmxvY2sgaW4gc3RyaWN0IG1vZGUiKTsKICAg
ICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihjb250ZXh0KTsKLSAgICBjYXNl
IFNFTUlDT0xPTjoKKyAgICBjYXNlIFNFTUlDT0xPTjogeworICAgICAgICBKU1Rva2VuTG9jYXRp
b24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwotICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVFbXB0eVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRW1wdHlTdGF0ZW1lbnQobG9jYXRp
b24pOworICAgIH0KICAgICBjYXNlIElGOgogICAgICAgICByZXR1cm4gcGFyc2VJZlN0YXRlbWVu
dChjb250ZXh0KTsKICAgICBjYXNlIERPOgpAQCAtNzIzLDcgKzc0MSw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VT
dGF0ZW1lbnQoVHJlCiAgICAgY2FzZSBTVFJJTkc6CiAgICAgICAgIGRpcmVjdGl2ZSA9IG1fdG9r
ZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBpZiAoZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkKLSAg
ICAgICAgICAgICpkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gbV90b2tlbi5tX2luZm8uZW5kT2Zm
c2V0IC0gbV90b2tlbi5tX2luZm8uc3RhcnRPZmZzZXQ7CisgICAgICAgICAgICAqZGlyZWN0aXZl
TGl0ZXJhbExlbmd0aCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQgLSBtX3Rva2VuLm1f
bG9jYXRpb24uc3RhcnRPZmZzZXQ7CiAgICAgICAgIG5vblRyaXZpYWxFeHByZXNzaW9uQ291bnQg
PSBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQ7CiAgICAgZGVmYXVsdDoKICAgICAgICAgVHJl
ZVN0YXRlbWVudCBleHByU3RhdGVtZW50ID0gcGFyc2VFeHByZXNzaW9uU3RhdGVtZW50KGNvbnRl
eHQpOwpAQCAtNzU2LDEyICs3NzQsMTIgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAg
aWYgKG1hdGNoKENMT1NFQlJBQ0UpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5j
dGlvbkJvZHkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RyaWN0TW9kZSgpKTsKKyAgICAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHRva2VuTG9jYXRpb24oKSwgc3Ry
aWN0TW9kZSgpKTsKICAgICBEZXB0aE1hbmFnZXIgc3RhdGVtZW50RGVwdGgoJm1fc3RhdGVtZW50
RGVwdGgpOwogICAgIG1fc3RhdGVtZW50RGVwdGggPSAwOwogICAgIHR5cGVuYW1lIFRyZWVCdWls
ZGVyOjpGdW5jdGlvbkJvZHlCdWlsZGVyIGJvZHlCdWlsZGVyKGNvbnN0X2Nhc3Q8SlNHbG9iYWxE
YXRhKj4obV9nbG9iYWxEYXRhKSwgbV9sZXhlci5nZXQoKSk7CiAgICAgZmFpbElmRmFsc2UocGFy
c2VTb3VyY2VFbGVtZW50czxDaGVja0ZvclN0cmljdE1vZGU+KGJvZHlCdWlsZGVyKSk7Ci0gICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIHN0cmljdE1vZGUoKSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5
KHRva2VuTG9jYXRpb24oKSwgc3RyaWN0TW9kZSgpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IExleGVyVHlwZT4KQEAgLTc4NiwyMCArODA0LDIxIEBAIHRlbXBsYXRlIDxGdW5jdGlvblJlcXVp
cmVtZW50cyByZXF1aXJlbWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIGNsYXNz
CiAgICAgCiAgICAgb3BlbkJyYWNlUG9zID0gbV90b2tlbi5tX2RhdGEuaW50VmFsdWU7CiAgICAg
Ym9keVN0YXJ0TGluZSA9IHRva2VuTGluZSgpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlv
bih0b2tlbkxvY2F0aW9uKCkpOwogICAgIAogICAgIC8vIElmIHdlIGtub3cgYWJvdXQgdGhpcyBm
dW5jdGlvbiBhbHJlYWR5LCB3ZSBjYW4gdXNlIHRoZSBjYWNoZWQgaW5mbyBhbmQgc2tpcCB0aGUg
cGFyc2VyIHRvIHRoZSBlbmQgb2YgdGhlIGZ1bmN0aW9uLgogICAgIGlmIChjb25zdCBTb3VyY2VQ
cm92aWRlckNhY2hlSXRlbSogY2FjaGVkSW5mbyA9IFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5jdGlv
bkNhY2hlID8gZmluZENhY2hlZEZ1bmN0aW9uSW5mbyhvcGVuQnJhY2VQb3MpIDogMCkgewogICAg
ICAgICAvLyBJZiB3ZSdyZSBpbiBhIHN0cmljdCBjb250ZXh0LCB0aGUgY2FjaGVkIGZ1bmN0aW9u
IGluZm8gbXVzdCBzYXkgaXQgd2FzIHN0cmljdCB0b28uCiAgICAgICAgIEFTU0VSVCghc3RyaWN0
TW9kZSgpIHx8IGNhY2hlZEluZm8tPnN0cmljdE1vZGUpOwotICAgICAgICBib2R5ID0gY29udGV4
dC5jcmVhdGVGdW5jdGlvbkJvZHkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY2FjaGVkSW5m
by0+c3RyaWN0TW9kZSk7CisgICAgICAgIGJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9k
eShsb2NhdGlvbiwgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7CiAgICAgICAgIAogICAgICAgICBm
dW5jdGlvblNjb3BlLT5yZXN0b3JlRnVuY3Rpb25JbmZvKGNhY2hlZEluZm8pOwogICAgICAgICBm
YWlsSWZGYWxzZShwb3BTY29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVl
VmFyaWFibGVJbmZvKSk7CiAgICAgICAgIAogICAgICAgICBjbG9zZUJyYWNlUG9zID0gY2FjaGVk
SW5mby0+Y2xvc2VCcmFjZVBvczsKICAgICAgICAgbV90b2tlbiA9IGNhY2hlZEluZm8tPmNsb3Nl
QnJhY2VUb2tlbigpOwotICAgICAgICBtX2xleGVyLT5zZXRPZmZzZXQobV90b2tlbi5tX2luZm8u
ZW5kT2Zmc2V0KTsKLSAgICAgICAgbV9sZXhlci0+c2V0TGluZU51bWJlcihtX3Rva2VuLm1faW5m
by5saW5lKTsKKyAgICAgICAgbV9sZXhlci0+c2V0T2Zmc2V0KG1fdG9rZW4ubV9sb2NhdGlvbi5l
bmRPZmZzZXQpOworICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2Nh
dGlvbi5saW5lKTsKICAgICAgICAgCiAgICAgICAgIG5leHQoKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC04MjEsNyArODQwLDcgQEAgdGVtcGxhdGUgPEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJl
cXVpcmVtZW50cywgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgY2xhc3MKICAgICBPd25Q
dHI8U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0+IG5ld0luZm87CiAgICAgaW50IGZ1bmN0aW9uTGVu
Z3RoID0gY2xvc2VCcmFjZVBvcyAtIG9wZW5CcmFjZVBvczsKICAgICBpZiAoVHJlZUJ1aWxkZXI6
OkNhblVzZUZ1bmN0aW9uQ2FjaGUgJiYgbV9mdW5jdGlvbkNhY2hlICYmIGZ1bmN0aW9uTGVuZ3Ro
ID4gbWluaW11bUZ1bmN0aW9uTGVuZ3RoVG9DYWNoZSkgewotICAgICAgICBuZXdJbmZvID0gYWRv
cHRQdHIobmV3IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKG1fdG9rZW4ubV9pbmZvLmxpbmUsIGNs
b3NlQnJhY2VQb3MpKTsKKyAgICAgICAgbmV3SW5mbyA9IGFkb3B0UHRyKG5ldyBTb3VyY2VQcm92
aWRlckNhY2hlSXRlbShtX3Rva2VuLm1fbG9jYXRpb24ubGluZSwgY2xvc2VCcmFjZVBvcykpOwog
ICAgICAgICBmdW5jdGlvblNjb3BlLT5zYXZlRnVuY3Rpb25JbmZvKG5ld0luZm8uZ2V0KCkpOwog
ICAgIH0KICAgICAKQEAgLTg0MSw2ICs4NjAsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRleHQp
CiB7CiAgICAgQVNTRVJUKG1hdGNoKEZVTkNUSU9OKSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxv
Y2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgbmV4dCgpOwogICAgIGNvbnN0IElkZW50aWZp
ZXIqIG5hbWUgPSAwOwogICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSAw
OwpAQCAtODUxLDcgKzg3MSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhCiAgICAgZmFpbElm
RmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTmVlZHNOYW1lLCB0cnVlPihjb250ZXh0
LCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJv
ZHlTdGFydExpbmUpKSk7CiAgICAgZmFpbElmRmFsc2UobmFtZSk7CiAgICAgZmFpbElmRmFsc2VJ
ZlN0cmljdChkZWNsYXJlVmFyaWFibGUobmFtZSkpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0
ZUZ1bmNEZWNsU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIG5hbWUsIGJvZHks
IHBhcmFtZXRlcnMsIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwg
bV9sYXN0TGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQo
bG9jYXRpb24sIG5hbWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFj
ZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CiB9CiAKIHN0cnVjdCBMYWJlbEluZm8g
ewpAQCAtODc1LDEwICs4OTUsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb25PckwKICAgICAgKiBz
cGVjaWFsIGNhc2UgdGhhdCBsb29rcyBmb3IgYSBjb2xvbiBhcyB0aGUgbmV4dCBjaGFyYWN0ZXIg
aW4gdGhlIGlucHV0LgogICAgICAqLwogICAgIFZlY3RvcjxMYWJlbEluZm8+IGxhYmVsczsKLSAg
ICAKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb247CiAgICAgZG8gewogICAgICAgICBpbnQg
c3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUo
KTsKKyAgICAgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgICAgIGlmICghbmV4
dFRva2VuSXNDb2xvbigpKSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBoaXQgdGhpcyBwYXRoIHdl
J3JlIG1ha2luZyBhIGV4cHJlc3Npb24gc3RhdGVtZW50LCB3aGljaAogICAgICAgICAgICAgLy8g
YnkgZGVmaW5pdGlvbiBjYW4ndCBtYWtlIHVzZSBvZiBjb250aW51ZS9icmVhayBzbyB3ZSBjYW4g
anVzdApAQCAtODg2LDcgKzkwNyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uT3JMCiAgICAgICAg
ICAgICBUcmVlRXhwcmVzc2lvbiBleHByZXNzaW9uID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQp
OwogICAgICAgICAgICAgZmFpbElmRmFsc2UoZXhwcmVzc2lvbik7CiAgICAgICAgICAgICBmYWls
SWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRXhwclN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByZXNzaW9uLCBz
dGFydExpbmUsIG1fbGFzdExpbmUpOworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
RXhwclN0YXRlbWVudChsb2NhdGlvbiwgZXhwcmVzc2lvbiwgc3RhcnRMaW5lLCBtX2xhc3RMaW5l
KTsKICAgICAgICAgfQogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4u
bV9kYXRhLmlkZW50OwogICAgICAgICBpbnQgZW5kID0gdG9rZW5FbmQoKTsKQEAgLTkyNSw3ICs5
NDYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lvbk9yTAogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVu
dCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsYWJlbHMuc2l6ZSgpOyBpKyspIHsKICAg
ICAgICAgY29uc3QgTGFiZWxJbmZvJiBpbmZvID0gbGFiZWxzW2xhYmVscy5zaXplKCkgLSBpIC0g
MV07Ci0gICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlTGFiZWxTdGF0ZW1lbnQobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgaW5mby5tX2lkZW50LCBzdGF0ZW1lbnQsIGluZm8ubV9z
dGFydCwgaW5mby5tX2VuZCk7CisgICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlTGFi
ZWxTdGF0ZW1lbnQobG9jYXRpb24sIGluZm8ubV9pZGVudCwgc3RhdGVtZW50LCBpbmZvLm1fc3Rh
cnQsIGluZm8ubV9lbmQpOwogICAgIH0KICAgICByZXR1cm4gc3RhdGVtZW50OwogfQpAQCAtOTM0
LDE3ICs5NTUsMTggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VF
eHByZXNzaW9uU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIGludCBzdGFy
dExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5M
b2NhdGlvbigpKTsKICAgICBUcmVlRXhwcmVzc2lvbiBleHByZXNzaW9uID0gcGFyc2VFeHByZXNz
aW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGV4cHJlc3Npb24pOwogICAgIGZhaWxJZkZh
bHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwclN0YXRl
bWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByZXNzaW9uLCBzdGFydExpbmUsIG1f
bGFzdExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQobG9jYXRp
b24sIGV4cHJlc3Npb24sIHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0
ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNv
bnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKElGKSk7Ci0gICAgCisgICAgSlNUb2tlbkxvY2F0
aW9uIGlmTG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgc3RhcnQgPSB0b2tlbkxp
bmUoKTsKICAgICBuZXh0KCk7CiAgICAgCkBAIC05NjAsMTMgKzk4MiwxNSBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
SWZTdGF0ZW1lbnQoVAogICAgIGZhaWxJZkZhbHNlKHRydWVCbG9jayk7CiAgICAgCiAgICAgaWYg
KCFtYXRjaChFTFNFKSkKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXJ0LCBl
bmQpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChpZkxvY2F0aW9u
LCBjb25kaXRpb24sIHRydWVCbG9jaywgc3RhcnQsIGVuZCk7CiAgICAgCiAgICAgVmVjdG9yPFRy
ZWVFeHByZXNzaW9uPiBleHByU3RhY2s7CiAgICAgVmVjdG9yPHBhaXI8aW50LCBpbnQ+ID4gcG9z
U3RhY2s7CisgICAgVmVjdG9yPEpTVG9rZW5Mb2NhdGlvbj4gdG9rZW5Mb2NhdGlvblN0YWNrOwog
ICAgIFZlY3RvcjxUcmVlU3RhdGVtZW50PiBzdGF0ZW1lbnRTdGFjazsKICAgICBib29sIHRyYWls
aW5nRWxzZSA9IGZhbHNlOwogICAgIGRvIHsKKyAgICAgICAgdG9rZW5Mb2NhdGlvblN0YWNrLmFw
cGVuZCh0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGlmICghbWF0
Y2goSUYpKSB7CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOwpAQCAt
OTkyLDcgKzEwMTYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVAogICAgICAgICBwb3NTdGFj
ay5hcHBlbmQobWFrZV9wYWlyKGlubmVyU3RhcnQsIGlubmVyRW5kKSk7CiAgICAgICAgIHN0YXRl
bWVudFN0YWNrLmFwcGVuZChpbm5lclRydWVCbG9jayk7CiAgICAgfSB3aGlsZSAobWF0Y2goRUxT
RSkpOwotICAgIAorCiAgICAgaWYgKCF0cmFpbGluZ0Vsc2UpIHsKICAgICAgICAgVHJlZUV4cHJl
c3Npb24gY29uZGl0aW9uID0gZXhwclN0YWNrLmxhc3QoKTsKICAgICAgICAgZXhwclN0YWNrLnJl
bW92ZUxhc3QoKTsKQEAgLTEwMDAsNyArMTAyNCw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJZlN0YXRlbWVudChU
CiAgICAgICAgIHN0YXRlbWVudFN0YWNrLnJlbW92ZUxhc3QoKTsKICAgICAgICAgcGFpcjxpbnQs
IGludD4gcG9zID0gcG9zU3RhY2subGFzdCgpOwogICAgICAgICBwb3NTdGFjay5yZW1vdmVMYXN0
KCk7Ci0gICAgICAgIHN0YXRlbWVudFN0YWNrLmFwcGVuZChjb250ZXh0LmNyZWF0ZUlmU3RhdGVt
ZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBwb3Mu
Zmlyc3QsIHBvcy5zZWNvbmQpKTsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGVsc2VMb2NhdGlv
biA9IHRva2VuTG9jYXRpb25TdGFjay5sYXN0KCk7CisgICAgICAgIHRva2VuTG9jYXRpb25TdGFj
ay5yZW1vdmVMYXN0KCk7CisgICAgICAgIHN0YXRlbWVudFN0YWNrLmFwcGVuZChjb250ZXh0LmNy
ZWF0ZUlmU3RhdGVtZW50KGVsc2VMb2NhdGlvbiwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHBvcy5m
aXJzdCwgcG9zLnNlY29uZCkpOwogICAgIH0KICAgICAKICAgICB3aGlsZSAoIWV4cHJTdGFjay5p
c0VtcHR5KCkpIHsKQEAgLTEwMTIsMTYgKzEwMzgsMTkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlmU3RhdGVtZW50
KFQKICAgICAgICAgc3RhdGVtZW50U3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICBwYWlyPGlu
dCwgaW50PiBwb3MgPSBwb3NTdGFjay5sYXN0KCk7CiAgICAgICAgIHBvc1N0YWNrLnJlbW92ZUxh
c3QoKTsKLSAgICAgICAgc3RhdGVtZW50U3RhY2suYXBwZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0
ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIGZh
bHNlQmxvY2ssIHBvcy5maXJzdCwgcG9zLnNlY29uZCkpOworICAgICAgICBKU1Rva2VuTG9jYXRp
b24gZWxzZUxvY2F0aW9uID0gdG9rZW5Mb2NhdGlvblN0YWNrLmxhc3QoKTsKKyAgICAgICAgdG9r
ZW5Mb2NhdGlvblN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgc3RhdGVtZW50U3RhY2suYXBw
ZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQoZWxzZUxvY2F0aW9uLCBjb25kaXRpb24sIHRy
dWVCbG9jaywgZmFsc2VCbG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vjb25kKSk7CiAgICAgfQogICAg
IAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBzdGF0ZW1lbnRTdGFjay5sYXN0KCksIHN0
YXJ0LCBlbmQpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KGlmTG9jYXRp
b24sIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBzdGF0ZW1lbnRTdGFjay5sYXN0KCksIHN0YXJ0LCBl
bmQpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBy
ZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIGZhaWxJZlN0YWNrT3ZlcmZsb3co
KTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBU
cmVlRXhwcmVzc2lvbiBub2RlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsK
ICAgICBmYWlsSWZGYWxzZShub2RlKTsKICAgICBpZiAoIW1hdGNoKENPTU1BKSkKQEAgLTEwMzEs
NyArMTA2MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lvbihUCiAgICAgbV9ub25MSFNDb3VudCsr
OwogICAgIFRyZWVFeHByZXNzaW9uIHJpZ2h0ID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihj
b250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShyaWdodCk7Ci0gICAgdHlwZW5hbWUgVHJlZUJ1aWxk
ZXI6OkNvbW1hIGNvbW1hTm9kZSA9IGNvbnRleHQuY3JlYXRlQ29tbWFFeHByKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIG5vZGUsIHJpZ2h0KTsKKyAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
Q29tbWEgY29tbWFOb2RlID0gY29udGV4dC5jcmVhdGVDb21tYUV4cHIobG9jYXRpb24sIG5vZGUs
IHJpZ2h0KTsKICAgICB3aGlsZSAobWF0Y2goQ09NTUEpKSB7CiAgICAgICAgIG5leHQoVHJlZUJ1
aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwogICAgICAgICByaWdodCA9IHBhcnNlQXNzaWdubWVu
dEV4cHJlc3Npb24oY29udGV4dCk7CkBAIC0xMDQ2LDYgKzEwNzUsNyBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUFzc2lnbm1lbgogewogICAgIGZhaWxJZlN0YWNrT3ZlcmZsb3coKTsKICAgICBpbnQgc3RhcnQg
PSB0b2tlblN0YXJ0KCk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRp
b24oKSk7CiAgICAgaW50IGluaXRpYWxBc3NpZ25tZW50Q291bnQgPSBtX2Fzc2lnbm1lbnRDb3Vu
dDsKICAgICBpbnQgaW5pdGlhbE5vbkxIU0NvdW50ID0gbV9ub25MSFNDb3VudDsKICAgICBUcmVl
RXhwcmVzc2lvbiBsaHMgPSBwYXJzZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihjb250ZXh0KTsKQEAg
LTEwOTgsNyArMTEyOCw3IEBAIGVuZDoKICAgICAgICAgcmV0dXJuIGxoczsKICAgICAKICAgICB3
aGlsZSAoYXNzaWdubWVudFN0YWNrKQotICAgICAgICBsaHMgPSBjb250ZXh0LmNyZWF0ZUFzc2ln
bm1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgYXNzaWdubWVudFN0YWNrLCBsaHMsIGlu
aXRpYWxBc3NpZ25tZW50Q291bnQsIG1fYXNzaWdubWVudENvdW50LCBsYXN0VG9rZW5FbmQoKSk7
CisgICAgICAgIGxocyA9IGNvbnRleHQuY3JlYXRlQXNzaWdubWVudChsb2NhdGlvbiwgYXNzaWdu
bWVudFN0YWNrLCBsaHMsIGluaXRpYWxBc3NpZ25tZW50Q291bnQsIG1fYXNzaWdubWVudENvdW50
LCBsYXN0VG9rZW5FbmQoKSk7CiAgICAgCiAgICAgcmV0dXJuIGxoczsKIH0KQEAgLTExMDYsNiAr
MTEzNiw3IEBAIGVuZDoKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUNvbmRpdGlvbmFsRXhwcmVzc2lvbihUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKKyAgICBKU1Rv
a2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBUcmVlRXhwcmVzc2lv
biBjb25kID0gcGFyc2VCaW5hcnlFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNl
KGNvbmQpOwogICAgIGlmICghbWF0Y2goUVVFU1RJT04pKQpAQCAtMTExOCw3ICsxMTQ5LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VDb25kaXRpb25hbEUKICAgICAKICAgICBUcmVlRXhwcmVzc2lvbiByaHMgPSBw
YXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHJocyk7
Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQ29uZGl0aW9uYWxFeHByKG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIGNvbmQsIGxocywgcmhzKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVD
b25kaXRpb25hbEV4cHIobG9jYXRpb24sIGNvbmQsIGxocywgcmhzKTsKIH0KIAogQUxXQVlTX0lO
TElORSBzdGF0aWMgYm9vbCBpc1VuYXJ5T3AoSlNUb2tlblR5cGUgdG9rZW4pCkBAIC0xMTQxLDYg
KzExNzIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUJpbmFyeUV4cHJlcwogICAgIGludCBvcGVyYW5kU3RhY2tE
ZXB0aCA9IDA7CiAgICAgaW50IG9wZXJhdG9yU3RhY2tEZXB0aCA9IDA7CiAgICAgdHlwZW5hbWUg
VHJlZUJ1aWxkZXI6OkJpbmFyeUV4cHJDb250ZXh0IGJpbmFyeUV4cHJDb250ZXh0KGNvbnRleHQp
OworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIHdo
aWxlICh0cnVlKSB7CiAgICAgICAgIGludCBleHByU3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAg
ICAgIGludCBpbml0aWFsQXNzaWdubWVudHMgPSBtX2Fzc2lnbm1lbnRDb3VudDsKQEAgLTExNjIs
NyArMTE5NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQmluYXJ5RXhwcmVzCiAgICAgICAgICAgICB0eXBlbmFt
ZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3BlcmFuZCByaHMgPSBjb250ZXh0LmdldEZyb21PcGVyYW5k
U3RhY2soLTEpOwogICAgICAgICAgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkJpbmFyeU9wZXJh
bmQgbGhzID0gY29udGV4dC5nZXRGcm9tT3BlcmFuZFN0YWNrKC0yKTsKICAgICAgICAgICAgIGNv
bnRleHQuc2hyaW5rT3BlcmFuZFN0YWNrQnkob3BlcmFuZFN0YWNrRGVwdGgsIDIpOwotICAgICAg
ICAgICAgY29udGV4dC5hcHBlbmRCaW5hcnlPcGVyYXRpb24obV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgb3BlcmFuZFN0YWNrRGVwdGgsIG9wZXJhdG9yU3RhY2tEZXB0aCwgbGhzLCByaHMpOwor
ICAgICAgICAgICAgY29udGV4dC5hcHBlbmRCaW5hcnlPcGVyYXRpb24obG9jYXRpb24sIG9wZXJh
bmRTdGFja0RlcHRoLCBvcGVyYXRvclN0YWNrRGVwdGgsIGxocywgcmhzKTsKICAgICAgICAgICAg
IGNvbnRleHQub3BlcmF0b3JTdGFja1BvcChvcGVyYXRvclN0YWNrRGVwdGgpOwogICAgICAgICB9
CiAgICAgICAgIGNvbnRleHQub3BlcmF0b3JTdGFja0FwcGVuZChvcGVyYXRvclN0YWNrRGVwdGgs
IG9wZXJhdG9yVG9rZW4sIHByZWNlZGVuY2UpOwpAQCAtMTE3Myw3ICsxMjA1LDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VCaW5hcnlFeHByZXMKICAgICAgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkJpbmFyeU9w
ZXJhbmQgcmhzID0gY29udGV4dC5nZXRGcm9tT3BlcmFuZFN0YWNrKC0xKTsKICAgICAgICAgdHlw
ZW5hbWUgVHJlZUJ1aWxkZXI6OkJpbmFyeU9wZXJhbmQgbGhzID0gY29udGV4dC5nZXRGcm9tT3Bl
cmFuZFN0YWNrKC0yKTsKICAgICAgICAgY29udGV4dC5zaHJpbmtPcGVyYW5kU3RhY2tCeShvcGVy
YW5kU3RhY2tEZXB0aCwgMik7Ci0gICAgICAgIGNvbnRleHQuYXBwZW5kQmluYXJ5T3BlcmF0aW9u
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIG9wZXJhbmRTdGFja0RlcHRoLCBvcGVyYXRvclN0
YWNrRGVwdGgsIGxocywgcmhzKTsKKyAgICAgICAgY29udGV4dC5hcHBlbmRCaW5hcnlPcGVyYXRp
b24obG9jYXRpb24sIG9wZXJhbmRTdGFja0RlcHRoLCBvcGVyYXRvclN0YWNrRGVwdGgsIGxocywg
cmhzKTsKICAgICAgICAgY29udGV4dC5vcGVyYXRvclN0YWNrUG9wKG9wZXJhdG9yU3RhY2tEZXB0
aCk7CiAgICAgfQogICAgIHJldHVybiBjb250ZXh0LnBvcE9wZXJhbmRTdGFjayhvcGVyYW5kU3Rh
Y2tEZXB0aCk7CkBAIC0xMjIyLDExICsxMjU0LDEyIEBAIHRlbXBsYXRlIDxib29sIGNvbXBsZXRl
LCBjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
CiAgICAgICAgICAgICBudW1lcmljUHJvcGVydHlOYW1lID0gbV90b2tlbi5tX2RhdGEuZG91Ymxl
VmFsdWU7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgSlNUb2tl
bkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKICAg
ICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0aW9uTm9SZXF1aXJlbWVu
dHMsIGZhbHNlPihjb250ZXh0LCBhY2Nlc3Nvck5hbWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5C
cmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSkpKTsKICAgICAgICAgaWYgKHN0
cmluZ1Byb3BlcnR5TmFtZSkKLSAgICAgICAgICAgIHJldHVybiBjb250ZXh0LnRlbXBsYXRlIGNy
ZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHk8Y29tcGxldGU+KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIHR5cGUsIHN0cmluZ1Byb3BlcnR5TmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJy
YWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKLSAgICAg
ICAgcmV0dXJuIGNvbnRleHQudGVtcGxhdGUgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eTxj
b21wbGV0ZT4oY29uc3RfY2FzdDxKU0dsb2JhbERhdGEqPihtX2dsb2JhbERhdGEpLCBtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCB0eXBlLCBudW1lcmljUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJz
LCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFz
dExpbmUpOworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQudGVtcGxhdGUgY3JlYXRlR2V0dGVy
T3JTZXR0ZXJQcm9wZXJ0eTxjb21wbGV0ZT4obG9jYXRpb24sIHR5cGUsIHN0cmluZ1Byb3BlcnR5
TmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5
U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQudGVtcGxhdGUg
Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eTxjb21wbGV0ZT4oY29uc3RfY2FzdDxKU0dsb2Jh
bERhdGEqPihtX2dsb2JhbERhdGEpLCBsb2NhdGlvbiwgdHlwZSwgbnVtZXJpY1Byb3BlcnR5TmFt
ZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3Rh
cnRMaW5lLCBtX2xhc3RMaW5lKTsKICAgICB9CiAgICAgY2FzZSBOVU1CRVI6IHsKICAgICAgICAg
ZG91YmxlIHByb3BlcnR5TmFtZSA9IG1fdG9rZW4ubV9kYXRhLmRvdWJsZVZhbHVlOwpAQCAtMTI0
OSwxMiArMTI4MiwxMyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU9iamVjdExpdGVyYQogICAgIHVuc2lnbmVkIG9s
ZExhc3RMaW5lTnVtYmVyID0gbV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKTsKICAgICB1bnNpZ25l
ZCBvbGRMaW5lTnVtYmVyID0gbV9sZXhlci0+bGluZU51bWJlcigpOwogICAgIGNvbnN1bWVPckZh
aWxXaXRoRmxhZ3MoT1BFTkJSQUNFLCBUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7Ci0g
ICAgCisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisKICAg
ICBpbnQgb2xkTm9uTEhTQ291bnQgPSBtX25vbkxIU0NvdW50OwogICAgIAogICAgIGlmIChtYXRj
aChDTE9TRUJSQUNFKSkgewogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSk7CisgICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobG9jYXRpb24pOwogICAgIH0KICAg
ICAKICAgICBUcmVlUHJvcGVydHkgcHJvcGVydHkgPSBwYXJzZVByb3BlcnR5PGZhbHNlPihjb250
ZXh0KTsKQEAgLTEyNjYsMTMgKzEzMDAsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VPYmplY3RMaXRlcmEKICAg
ICAgICAgbV9sZXhlci0+c2V0TGluZU51bWJlcihvbGRMaW5lTnVtYmVyKTsKICAgICAgICAgcmV0
dXJuIHBhcnNlU3RyaWN0T2JqZWN0TGl0ZXJhbChjb250ZXh0KTsKICAgICB9Ci0gICAgVHJlZVBy
b3BlcnR5TGlzdCBwcm9wZXJ0eUxpc3QgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCBwcm9wZXJ0eSk7CisgICAgVHJlZVByb3BlcnR5TGlzdCBw
cm9wZXJ0eUxpc3QgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChsb2NhdGlvbiwgcHJvcGVy
dHkpOwogICAgIFRyZWVQcm9wZXJ0eUxpc3QgdGFpbCA9IHByb3BlcnR5TGlzdDsKICAgICB3aGls
ZSAobWF0Y2goQ09NTUEpKSB7CiAgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0
cmluZ3MpOwogICAgICAgICAvLyBhbGxvdyBleHRyYSBjb21tYSwgc2VlIGh0dHA6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU5MzkKICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJB
Q0UpKQogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBwcm9wZXJ0
eUxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIHByb3BlcnR5ID0gcGFyc2VQcm9w
ZXJ0eTxmYWxzZT4oY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5KTsKICAg
ICAgICAgaWYgKCFtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQgJiYgY29udGV4dC5nZXRUeXBlKHBy
b3BlcnR5KSAhPSBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KSB7CkBAIC0xMjgyLDE0ICsxMzE3LDE1
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlT2JqZWN0TGl0ZXJhCiAgICAgICAgICAgICBtX2xleGVyLT5zZXRMaW5l
TnVtYmVyKG9sZExpbmVOdW1iZXIpOwogICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3RyaWN0T2Jq
ZWN0TGl0ZXJhbChjb250ZXh0KTsKICAgICAgICAgfQotICAgICAgICB0YWlsID0gY29udGV4dC5j
cmVhdGVQcm9wZXJ0eUxpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHksIHRh
aWwpOworICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QocHJvcGVydHlM
b2NhdGlvbiwgcHJvcGVydHksIHRhaWwpOwogICAgIH0KLSAgICAKKworICAgIGxvY2F0aW9uID0g
dG9rZW5Mb2NhdGlvbigpOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDRSk7CiAgICAgCiAg
ICAgbV9ub25MSFNDb3VudCA9IG9sZE5vbkxIU0NvdW50OwogICAgIAotICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVy
dHlMaXN0KTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKGxvY2F0aW9u
LCBwcm9wZXJ0eUxpc3QpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgpAQCAt
MTI5OSw5ICsxMzM1LDEwIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJl
c3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RyaWN0T2JqZWN0CiAgICAgCiAgICAgaW50
IG9sZE5vbkxIU0NvdW50ID0gbV9ub25MSFNDb3VudDsKIAorICAgIEpTVG9rZW5Mb2NhdGlvbiBs
b2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOyAgICAKICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkp
IHsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVPYmplY3RM
aXRlcmFsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCkpOworICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVPYmplY3RMaXRlcmFsKGxvY2F0aW9uKTsKICAgICB9CiAgICAgCiAgICAgVHJlZVBy
b3BlcnR5IHByb3BlcnR5ID0gcGFyc2VQcm9wZXJ0eTx0cnVlPihjb250ZXh0KTsKQEAgLTEzMTMs
MTMgKzEzNTAsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdHJpY3RPYmplY3QKICAgICBpZiAoIW1fc3ludGF4
QWxyZWFkeVZhbGlkYXRlZCkKICAgICAgICAgb2JqZWN0VmFsaWRhdG9yLmFkZChjb250ZXh0Lmdl
dE5hbWUocHJvcGVydHkpLmltcGwoKSwgY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KSk7CiAgICAg
Ci0gICAgVHJlZVByb3BlcnR5TGlzdCBwcm9wZXJ0eUxpc3QgPSBjb250ZXh0LmNyZWF0ZVByb3Bl
cnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBwcm9wZXJ0eSk7CisgICAgVHJlZVBy
b3BlcnR5TGlzdCBwcm9wZXJ0eUxpc3QgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChsb2Nh
dGlvbiwgcHJvcGVydHkpOwogICAgIFRyZWVQcm9wZXJ0eUxpc3QgdGFpbCA9IHByb3BlcnR5TGlz
dDsKICAgICB3aGlsZSAobWF0Y2goQ09NTUEpKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAg
Ly8gYWxsb3cgZXh0cmEgY29tbWEsIHNlZSBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01OTM5CiAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNFKSkKICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBKU1Rva2VuTG9jYXRpb24gcHJvcGVydHlMb2NhdGlvbih0b2tlbkxv
Y2F0aW9uKCkpOwogICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8dHJ1ZT4oY29udGV4
dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5KTsKICAgICAgICAgaWYgKCFtX3N5bnRh
eEFscmVhZHlWYWxpZGF0ZWQpIHsKQEAgLTEzMzEsMTQgKzEzNjksMTUgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VT
dHJpY3RPYmplY3QKICAgICAgICAgICAgICAgICBwcm9wZXJ0eUVudHJ5Lml0ZXJhdG9yLT5zZWNv
bmQgfD0gY29udGV4dC5nZXRUeXBlKHByb3BlcnR5KTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwgcHJvcGVydHksIHRhaWwpOworICAgICAgICB0YWlsID0gY29udGV4dC5j
cmVhdGVQcm9wZXJ0eUxpc3QocHJvcGVydHlMb2NhdGlvbiwgcHJvcGVydHksIHRhaWwpOwogICAg
IH0KLSAgICAKKworICAgIGxvY2F0aW9uID0gdG9rZW5Mb2NhdGlvbigpOwogICAgIGNvbnN1bWVP
ckZhaWwoQ0xPU0VCUkFDRSk7CiAKICAgICBtX25vbkxIU0NvdW50ID0gb2xkTm9uTEhTQ291bnQ7
CiAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVPYmplY3RMaXRlcmFsKG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIHByb3BlcnR5TGlzdCk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2Jq
ZWN0TGl0ZXJhbChsb2NhdGlvbiwgcHJvcGVydHlMaXN0KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KQEAgLTEzNTQsOCArMTM5Myw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXJyYXlMaXRl
cmFsCiAgICAgICAgIGVsaXNpb25zKys7CiAgICAgfQogICAgIGlmIChtYXRjaChDTE9TRUJSQUNL
RVQpKSB7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OwogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKLSAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZWxp
c2lvbnMpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShsb2NhdGlvbiwgZWxp
c2lvbnMpOwogICAgIH0KICAgICAKICAgICBUcmVlRXhwcmVzc2lvbiBlbGVtID0gcGFyc2VBc3Np
Z25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTEzNzMsMTkgKzE0MTMsMjEgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VBcnJheUxpdGVyYWwKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKG1hdGNo
KENMT1NFQlJBQ0tFVCkpIHsKKyAgICAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0
b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxk
U3RyaW5ncyk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcnJheShtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBlbGlzaW9ucywgZWxlbWVudExpc3QpOworICAgICAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkobG9jYXRpb24sIGVsaXNpb25zLCBlbGVtZW50TGlz
dCk7CiAgICAgICAgIH0KICAgICAgICAgVHJlZUV4cHJlc3Npb24gZWxlbSA9IHBhcnNlQXNzaWdu
bWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGVsZW0pOwogICAg
ICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVFbGVtZW50TGlzdCh0YWlsLCBlbGlzaW9ucywgZWxl
bSk7CiAgICAgfQotICAgIAorCisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9j
YXRpb24oKSk7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNLRVQpOwogICAgIAogICAgIG1f
bm9uTEhTQ291bnQgPSBvbGROb25MSFNDb3VudDsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVBcnJheShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBlbGVtZW50TGlzdCk7CisgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkobG9jYXRpb24sIGVsZW1lbnRMaXN0KTsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTE0MDksMzggKzE0NTEsNDUgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VQcmltYXJ5RXhwcmUKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAg
Y2FzZSBUSElTVE9LRU46IHsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2Vu
TG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQudGhp
c0V4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSk7CisgICAgICAgIHJldHVybiBjb250ZXh0
LnRoaXNFeHByKGxvY2F0aW9uKTsKICAgICB9CiAgICAgY2FzZSBJREVOVDogewogICAgICAgICBp
bnQgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlv
bih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGN1cnJlbnRTY29w
ZSgpLT51c2VWYXJpYWJsZShpZGVudCwgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFs
ID09ICppZGVudCk7CiAgICAgICAgIG1fbGFzdElkZW50aWZpZXIgPSBpZGVudDsKLSAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlUmVzb2x2ZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBp
ZGVudCwgc3RhcnQpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVSZXNvbHZlKGxvY2F0
aW9uLCBpZGVudCwgc3RhcnQpOwogICAgIH0KICAgICBjYXNlIFNUUklORzogewogICAgICAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgICAgICBK
U1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgp
OwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVTdHJpbmcobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgaWRlbnQpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVTdHJpbmcobG9j
YXRpb24sIGlkZW50KTsKICAgICB9CiAgICAgY2FzZSBOVU1CRVI6IHsKICAgICAgICAgZG91Ymxl
IGQgPSBtX3Rva2VuLm1fZGF0YS5kb3VibGVWYWx1ZTsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9u
IGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlTnVtYmVyRXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBk
KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTnVtYmVyRXhwcihsb2NhdGlvbiwgZCk7
CiAgICAgfQogICAgIGNhc2UgTlVMTFRPS0VOOiB7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBs
b2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZU51bGwobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSk7CisgICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZU51bGwobG9jYXRpb24pOwogICAgIH0KICAgICBjYXNlIFRS
VUVUT0tFTjogeworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlv
bigpKTsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCb29s
ZWFuKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRydWUpOworICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVCb29sZWFuKGxvY2F0aW9uLCB0cnVlKTsKICAgICB9CiAgICAgY2FzZSBGQUxT
RVRPS0VOOiB7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9u
KCkpOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJvb2xl
YW4obV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZmFsc2UpOworICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVCb29sZWFuKGxvY2F0aW9uLCBmYWxzZSk7CiAgICAgfQogICAgIGNhc2UgRElW
RVFVQUw6CiAgICAgY2FzZSBESVZJREU6IHsKQEAgLTE0NTMsOCArMTUwMiw5IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlUHJpbWFyeUV4cHJlCiAgICAgICAgICAgICBmYWlsSWZGYWxzZShtX2xleGVyLT5zY2FuUmVn
RXhwKHBhdHRlcm4sIGZsYWdzKSk7CiAgICAgICAgIAogICAgICAgICBpbnQgc3RhcnQgPSB0b2tl
blN0YXJ0KCk7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9u
KCkpOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIFRyZWVFeHByZXNzaW9uIHJlID0gY29udGV4
dC5jcmVhdGVSZWdFeHAobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgKnBhdHRlcm4sICpmbGFn
cywgc3RhcnQpOworICAgICAgICBUcmVlRXhwcmVzc2lvbiByZSA9IGNvbnRleHQuY3JlYXRlUmVn
RXhwKGxvY2F0aW9uLCAqcGF0dGVybiwgKmZsYWdzLCBzdGFydCk7CiAgICAgICAgIGlmICghcmUp
IHsKICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHlhcnJFcnJvck1zZyA9IFlhcnI6OmNoZWNrU3lu
dGF4KHBhdHRlcm4tPnVzdHJpbmcoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIW1fZXJyb3JNZXNz
YWdlLmlzTnVsbCgpKTsKQEAgLTE0NzEsNiArMTUyMSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVBcmd1bWVudHMgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlQXJndW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewog
ICAgIGNvbnN1bWVPckZhaWxXaXRoRmxhZ3MoT1BFTlBBUkVOLCBUcmVlQnVpbGRlcjo6RG9udEJ1
aWxkU3RyaW5ncyk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24o
KSk7CiAgICAgaWYgKG1hdGNoKENMT1NFUEFSRU4pKSB7CiAgICAgICAgIG5leHQoVHJlZUJ1aWxk
ZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcmd1
bWVudHMoKTsKQEAgLTE0NzgsMTMgKzE1MjksMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlQXJndW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFyZ3VtZW50cyhUcmUK
ICAgICBUcmVlRXhwcmVzc2lvbiBmaXJzdEFyZyA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24o
Y29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoZmlyc3RBcmcpOwogICAgIAotICAgIFRyZWVBcmd1
bWVudHNMaXN0IGFyZ0xpc3QgPSBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50c0xpc3QobV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwgZmlyc3RBcmcpOworICAgIFRyZWVBcmd1bWVudHNMaXN0IGFyZ0xp
c3QgPSBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50c0xpc3QobG9jYXRpb24sIGZpcnN0QXJnKTsKICAg
ICBUcmVlQXJndW1lbnRzTGlzdCB0YWlsID0gYXJnTGlzdDsKICAgICB3aGlsZSAobWF0Y2goQ09N
TUEpKSB7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBhcmd1bWVudExvY2F0aW9uKHRva2VuTG9j
YXRpb24oKSk7CiAgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3MpOwog
ICAgICAgICBUcmVlRXhwcmVzc2lvbiBhcmcgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNv
bnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShhcmcpOwotICAgICAgICB0YWlsID0gY29udGV4
dC5jcmVhdGVBcmd1bWVudHNMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRhaWwsIGFy
Zyk7CisgICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZUFyZ3VtZW50c0xpc3QoYXJndW1lbnRM
b2NhdGlvbiwgdGFpbCwgYXJnKTsKICAgICB9CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRVBBUkVO
KTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVBcmd1bWVudHMoYXJnTGlzdCk7CkBAIC0xNDk3
LDYgKzE1NDksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgIGludCBzdGFydCA9IHRv
a2VuU3RhcnQoKTsKICAgICBpbnQgZXhwcmVzc2lvblN0YXJ0ID0gc3RhcnQ7CiAgICAgaW50IG5l
d0NvdW50ID0gMDsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb247CiAgICAgd2hpbGUgKG1h
dGNoKE5FVykpIHsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBuZXdDb3VudCsrOwpAQCAtMTUw
OSwxNCArMTU2MiwxNiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICBpbnQgb3Bl
bkJyYWNlUG9zID0gMDsKICAgICAgICAgaW50IGNsb3NlQnJhY2VQb3MgPSAwOwogICAgICAgICBp
bnQgYm9keVN0YXJ0TGluZSA9IDA7CisgICAgICAgIGxvY2F0aW9uID0gdG9rZW5Mb2NhdGlvbigp
OwogICAgICAgICBuZXh0KCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5m
bzxGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBmYWxzZT4oY29udGV4dCwgbmFtZSwgcGFyYW1ldGVy
cywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSkpOwot
ICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkV4cHIobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJyYWNlUG9zLCBjbG9zZUJy
YWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKKyAgICAgICAgYmFzZSA9IGNvbnRl
eHQuY3JlYXRlRnVuY3Rpb25FeHByKGxvY2F0aW9uLCBuYW1lLCBib2R5LCBwYXJhbWV0ZXJzLCBv
cGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOwog
ICAgIH0gZWxzZQogICAgICAgICBiYXNlID0gcGFyc2VQcmltYXJ5RXhwcmVzc2lvbihjb250ZXh0
KTsKICAgICAKICAgICBmYWlsSWZGYWxzZShiYXNlKTsKICAgICB3aGlsZSAodHJ1ZSkgeworICAg
ICAgICBsb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKICAgICAgICAgc3dpdGNoIChtX3Rva2Vu
Lm1fdHlwZSkgewogICAgICAgICBjYXNlIE9QRU5CUkFDS0VUOiB7CiAgICAgICAgICAgICBtX25v
blRyaXZpYWxFeHByZXNzaW9uQ291bnQrKzsKQEAgLTE1MjYsNyArMTU4MSw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICBpbnQgaW5pdGlhbEFzc2lnbm1lbnRzID0gbV9h
c3NpZ25tZW50Q291bnQ7CiAgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBwcm9wZXJ0eSA9IHBh
cnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5
KTsKLSAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZUJyYWNrZXRBY2Nlc3MobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgYmFzZSwgcHJvcGVydHksIGluaXRpYWxBc3NpZ25tZW50cyAh
PSBtX2Fzc2lnbm1lbnRDb3VudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tl
bkVuZCgpKTsKKyAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZUJyYWNrZXRBY2Nlc3Mo
bG9jYXRpb24sIGJhc2UsIHByb3BlcnR5LCBpbml0aWFsQXNzaWdubWVudHMgIT0gbV9hc3NpZ25t
ZW50Q291bnQsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQoKSk7CiAg
ICAgICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0tFVCk7CiAgICAgICAgICAgICBtX25v
bkxIU0NvdW50ID0gbm9uTEhTQ291bnQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1MzksMTIg
KzE1OTQsMTIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAgICAgICBpbnQg
ZXhwckVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAgICAgICAgIFRyZWVBcmd1bWVudHMg
YXJndW1lbnRzID0gcGFyc2VBcmd1bWVudHMoY29udGV4dCk7CiAgICAgICAgICAgICAgICAgZmFp
bElmRmFsc2UoYXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVh
dGVOZXdFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGJhc2UsIGFyZ3VtZW50cywgc3Rh
cnQsIGV4cHJFbmQsIGxhc3RUb2tlbkVuZCgpKTsgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IGJhc2UgPSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIobG9jYXRpb24sIGJhc2UsIGFyZ3VtZW50cywg
c3RhcnQsIGV4cHJFbmQsIGxhc3RUb2tlbkVuZCgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgaW50IGV4cHJlc3Npb25FbmQgPSBsYXN0VG9rZW5FbmQoKTsKICAgICAg
ICAgICAgICAgICBUcmVlQXJndW1lbnRzIGFyZ3VtZW50cyA9IHBhcnNlQXJndW1lbnRzKGNvbnRl
eHQpOwogICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGFyZ3VtZW50cyk7Ci0gICAgICAgICAg
ICAgICAgYmFzZSA9IGNvbnRleHQubWFrZUZ1bmN0aW9uQ2FsbE5vZGUobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgYmFzZSwgYXJndW1lbnRzLCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25F
bmQsIGxhc3RUb2tlbkVuZCgpKTsKKyAgICAgICAgICAgICAgICBiYXNlID0gY29udGV4dC5tYWtl
RnVuY3Rpb25DYWxsTm9kZShsb2NhdGlvbiwgYmFzZSwgYXJndW1lbnRzLCBleHByZXNzaW9uU3Rh
cnQsIGV4cHJlc3Npb25FbmQsIGxhc3RUb2tlbkVuZCgpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIG1fbm9uTEhTQ291bnQgPSBub25MSFNDb3VudDsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtMTU1NCw3ICsxNjA5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgICAg
IGludCBleHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kKCk7CiAgICAgICAgICAgICBuZXh0RXhw
ZWN0SWRlbnRpZmllcihMZXhlckZsYWdzSWdub3JlUmVzZXJ2ZWRXb3JkcyB8IFRyZWVCdWlsZGVy
OjpEb250QnVpbGRLZXl3b3Jkcyk7CiAgICAgICAgICAgICBtYXRjaE9yRmFpbChJREVOVCk7Ci0g
ICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVEb3RBY2Nlc3MobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgYmFzZSwgbV90b2tlbi5tX2RhdGEuaWRlbnQsIGV4cHJlc3Npb25TdGFydCwg
ZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQoKSk7CisgICAgICAgICAgICBiYXNlID0gY29udGV4dC5j
cmVhdGVEb3RBY2Nlc3MobG9jYXRpb24sIGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlkZW50LCBleHBy
ZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kKCkpOwogICAgICAgICAgICAgbmV4
dCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE1NjQsNyArMTYxOSw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgfQogZW5kTWVtYmVyRXhwcmVzc2lvbjoKICAg
ICB3aGlsZSAobmV3Q291bnQtLSkKLSAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3RXhw
cihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBzdGFydCwgbGFzdFRva2VuRW5kKCkp
OworICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVOZXdFeHByKGxvY2F0aW9uLCBiYXNlLCBz
dGFydCwgbGFzdFRva2VuRW5kKCkpOwogICAgIHJldHVybiBiYXNlOwogfQogCkBAIC0xNjAyLDYg
KzE2NTcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgICAgICBtX25vblRyaXZpYWxF
eHByZXNzaW9uQ291bnQrKzsKICAgICB9CiAgICAgaW50IHN1YkV4cHJTdGFydCA9IHRva2VuU3Rh
cnQoKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAg
ICBUcmVlRXhwcmVzc2lvbiBleHByID0gcGFyc2VNZW1iZXJFeHByZXNzaW9uKGNvbnRleHQpOwog
ICAgIGZhaWxJZkZhbHNlKGV4cHIpOwogICAgIGJvb2wgaXNFdmFsT3JBcmd1bWVudHMgPSBmYWxz
ZTsKQEAgLTE2MTQsNyArMTY3MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgY2Fz
ZSBQTFVTUExVUzoKICAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAg
ICAgIG1fbm9uTEhTQ291bnQrKzsKLSAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhO
b2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIE9wUGx1c1BsdXMsIHN1YkV4cHJT
dGFydCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOworICAgICAgICBleHByID0gY29udGV4
dC5tYWtlUG9zdGZpeE5vZGUobG9jYXRpb24sIGV4cHIsIE9wUGx1c1BsdXMsIHN1YkV4cHJTdGFy
dCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOwogICAgICAgICBtX2Fzc2lnbm1lbnRDb3Vu
dCsrOwogICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3RXaXRoTmFtZUFuZE1lc3NhZ2UoaXNFdmFs
T3JBcmd1bWVudHMsICInIiwgbV9sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAiJyBjYW5ub3QgYmUg
bW9kaWZpZWQgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KHJl
cXVpcmVzTEV4cHIpOwpAQCAtMTYyMyw3ICsxNjc5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJl
c3MKICAgICBjYXNlIE1JTlVTTUlOVVM6CiAgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25D
b3VudCsrOwogICAgICAgICBtX25vbkxIU0NvdW50Kys7Ci0gICAgICAgIGV4cHIgPSBjb250ZXh0
Lm1ha2VQb3N0Zml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBPcE1pbnVz
TWludXMsIHN1YkV4cHJTdGFydCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOworICAgICAg
ICBleHByID0gY29udGV4dC5tYWtlUG9zdGZpeE5vZGUobG9jYXRpb24sIGV4cHIsIE9wTWludXNN
aW51cywgc3ViRXhwclN0YXJ0LCBsYXN0VG9rZW5FbmQoKSwgdG9rZW5FbmQoKSk7CiAgICAgICAg
IG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdFdpdGhOYW1l
QW5kTWVzc2FnZShpc0V2YWxPckFyZ3VtZW50cywgIiciLCBtX2xhc3RJZGVudGlmaWVyLT5pbXBs
KCksICInIGNhbm5vdCBiZSBtb2RpZmllZCBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICBmYWls
SWZUcnVlSWZTdHJpY3QocmVxdWlyZXNMRXhwcik7CkBAIC0xNjM3LDQwICsxNjkzLDQyIEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlVW5hcnlFeHByZXNzCiAgICAgCiAgICAgaWYgKCFUcmVlQnVpbGRlcjo6Q3JlYXRl
c0FTVCAmJiAobV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkIHx8ICFzdHJpY3RNb2RlKCkpKQogICAg
ICAgICByZXR1cm4gZXhwcjsKLSAgICAKKworICAgIGxvY2F0aW9uID0gdG9rZW5Mb2NhdGlvbigp
OworICAgIGxvY2F0aW9uLmxpbmUgPSBtX2xleGVyLT5sYXN0TGluZU51bWJlcigpOwogICAgIHdo
aWxlICh0b2tlblN0YWNrRGVwdGgpIHsKICAgICAgICAgc3dpdGNoIChjb250ZXh0LnVuYXJ5VG9r
ZW5TdGFja0xhc3RUeXBlKHRva2VuU3RhY2tEZXB0aCkpIHsKICAgICAgICAgY2FzZSBFWENMQU1B
VElPTjoKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0ZUxvZ2ljYWxOb3QobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5j
cmVhdGVMb2dpY2FsTm90KGxvY2F0aW9uLCBleHByKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFRJTERFOgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZUJpdHdpc2VO
b3ROb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIpOworICAgICAgICAgICAgZXhw
ciA9IGNvbnRleHQubWFrZUJpdHdpc2VOb3ROb2RlKGxvY2F0aW9uLCBleHByKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIE1JTlVTOgotICAgICAgICAgICAgZXhwciA9IGNvbnRl
eHQubWFrZU5lZ2F0ZU5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7CisgICAg
ICAgICAgICBleHByID0gY29udGV4dC5tYWtlTmVnYXRlTm9kZShsb2NhdGlvbiwgZXhwcik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQTFVTOgotICAgICAgICAgICAgZXhwciA9
IGNvbnRleHQuY3JlYXRlVW5hcnlQbHVzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIp
OworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlVW5hcnlQbHVzKGxvY2F0aW9uLCBl
eHByKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBMVVNQTFVTOgogICAgICAg
ICBjYXNlIEFVVE9QTFVTUExVUzoKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVm
aXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIE9wUGx1c1BsdXMsIGNvbnRl
eHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIHN1YkV4cHJTdGFy
dCArIDEsIGVuZCk7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlUHJlZml4Tm9kZShs
b2NhdGlvbiwgZXhwciwgT3BQbHVzUGx1cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3Rh
cnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKICAgICAgICAgICAg
IG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBN
SU5VU01JTlVTOgogICAgICAgICBjYXNlIEFVVE9NSU5VU01JTlVTOgotICAgICAgICAgICAgZXhw
ciA9IGNvbnRleHQubWFrZVByZWZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhw
ciwgT3BNaW51c01pbnVzLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0
YWNrRGVwdGgpLCBzdWJFeHByU3RhcnQgKyAxLCBlbmQpOworICAgICAgICAgICAgZXhwciA9IGNv
bnRleHQubWFrZVByZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIE9wTWludXNNaW51cywgY29udGV4
dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0
ICsgMSwgZW5kKTsKICAgICAgICAgICAgIG1fYXNzaWdubWVudENvdW50Kys7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBUWVBFT0Y6Ci0gICAgICAgICAgICBleHByID0gY29udGV4
dC5tYWtlVHlwZU9mTm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByKTsKKyAgICAg
ICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VUeXBlT2ZOb2RlKGxvY2F0aW9uLCBleHByKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFZPSURUT0tFTjoKLSAgICAgICAgICAgIGV4
cHIgPSBjb250ZXh0LmNyZWF0ZVZvaWQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7
CisgICAgICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVWb2lkKGxvY2F0aW9uLCBleHByKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERFTEVURVRPS0VOOgogICAgICAgICAg
ICAgZmFpbElmVHJ1ZUlmU3RyaWN0V2l0aE5hbWVBbmRNZXNzYWdlKGNvbnRleHQuaXNSZXNvbHZl
KGV4cHIpLCAiQ2Fubm90IGRlbGV0ZSB1bnF1YWxpZmllZCBwcm9wZXJ0eSIsIG1fbGFzdElkZW50
aWZpZXItPmltcGwoKSwgImluIHN0cmljdCBtb2RlIik7Ci0gICAgICAgICAgICBleHByID0gY29u
dGV4dC5tYWtlRGVsZXRlTm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBjb250
ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBlbmQsIGVuZCk7
CisgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlRGVsZXRlTm9kZShsb2NhdGlvbiwgZXhw
ciwgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgZW5k
LCBlbmQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICAvLyBJZiB3ZSBnZXQgaGVyZSBzb21ldGhpbmcgaGFzIGdvbmUgaG9ycmlibHkgaG9ycmlibHkg
d3JvbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGMyYTExZDY2NWI3
OTEzZWM1ZjY0MzFjMDYzNmMxYThhNmRkNmEwMTYuLjc5YTk1YjY5NjNiNDEyOTBiY2EzYjRmYTlj
ODU4MGZjYjYyMzU1NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAt
NTAyLDE4ICs1MDIsMTggQEAgcHJpdmF0ZToKIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBuZXh0
KHVuc2lnbmVkIGxleGVyRmxhZ3MgPSAwKQogICAgIHsKLSAgICAgICAgbV9sYXN0TGluZSA9IG1f
dG9rZW4ubV9pbmZvLmxpbmU7Ci0gICAgICAgIG1fbGFzdFRva2VuRW5kID0gbV90b2tlbi5tX2lu
Zm8uZW5kT2Zmc2V0OworICAgICAgICBtX2xhc3RMaW5lID0gbV90b2tlbi5tX2xvY2F0aW9uLmxp
bmU7CisgICAgICAgIG1fbGFzdFRva2VuRW5kID0gbV90b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNl
dDsKICAgICAgICAgbV9sZXhlci0+c2V0TGFzdExpbmVOdW1iZXIobV9sYXN0TGluZSk7Ci0gICAg
ICAgIG1fdG9rZW4ubV90eXBlID0gbV9sZXhlci0+bGV4KCZtX3Rva2VuLm1fZGF0YSwgJm1fdG9r
ZW4ubV9pbmZvLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKCkpOworICAgICAgICBtX3Rva2VuLm1f
dHlwZSA9IG1fbGV4ZXItPmxleCgmbV90b2tlbi5tX2RhdGEsICZtX3Rva2VuLm1fbG9jYXRpb24s
IGxleGVyRmxhZ3MsIHN0cmljdE1vZGUoKSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIG5leHRFeHBlY3RJZGVudGlmaWVyKHVuc2lnbmVkIGxleGVyRmxhZ3MgPSAwKQogICAgIHsK
LSAgICAgICAgbV9sYXN0TGluZSA9IG1fdG9rZW4ubV9pbmZvLmxpbmU7Ci0gICAgICAgIG1fbGFz
dFRva2VuRW5kID0gbV90b2tlbi5tX2luZm8uZW5kT2Zmc2V0OworICAgICAgICBtX2xhc3RMaW5l
ID0gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmU7CisgICAgICAgIG1fbGFzdFRva2VuRW5kID0gbV90
b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldDsKICAgICAgICAgbV9sZXhlci0+c2V0TGFzdExpbmVO
dW1iZXIobV9sYXN0TGluZSk7Ci0gICAgICAgIG1fdG9rZW4ubV90eXBlID0gbV9sZXhlci0+bGV4
RXhwZWN0SWRlbnRpZmllcigmbV90b2tlbi5tX2RhdGEsICZtX3Rva2VuLm1faW5mbywgbGV4ZXJG
bGFncywgc3RyaWN0TW9kZSgpKTsKKyAgICAgICAgbV90b2tlbi5tX3R5cGUgPSBtX2xleGVyLT5s
ZXhFeHBlY3RJZGVudGlmaWVyKCZtX3Rva2VuLm1fZGF0YSwgJm1fdG9rZW4ubV9sb2NhdGlvbiwg
bGV4ZXJGbGFncywgc3RyaWN0TW9kZSgpKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgbmV4dFRva2VuSXNDb2xvbigpCkBAIC01NDEsMjAgKzU0MSwyNSBAQCBwcml2YXRlOgogICAg
IAogICAgIEFMV0FZU19JTkxJTkUgaW50IHRva2VuU3RhcnQoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fdG9rZW4ubV9pbmZvLnN0YXJ0T2Zmc2V0OworICAgICAgICByZXR1cm4gbV90b2tlbi5t
X2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OwogICAgIH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIGlu
dCB0b2tlbkxpbmUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9pbmZvLmxpbmU7
CisgICAgICAgIHJldHVybiBtX3Rva2VuLm1fbG9jYXRpb24ubGluZTsKICAgICB9CiAgICAgCiAg
ICAgQUxXQVlTX0lOTElORSBpbnQgdG9rZW5FbmQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
dG9rZW4ubV9pbmZvLmVuZE9mZnNldDsKKyAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9sb2NhdGlv
bi5lbmRPZmZzZXQ7CiAgICAgfQogICAgIAotICAgIGNvbnN0IGNoYXIqIGdldFRva2VuTmFtZShK
U1Rva2VuVHlwZSB0b2spIAorICAgIEFMV0FZU19JTkxJTkUgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiB0b2tlbkxvY2F0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Rva2VuLm1fbG9jYXRp
b247CisgICAgfQorCisgICAgY29uc3QgY2hhciogZ2V0VG9rZW5OYW1lKEpTVG9rZW5UeXBlIHRv
aykKICAgICB7CiAgICAgICAgIHN3aXRjaCAodG9rKSB7CiAgICAgICAgIGNhc2UgTlVMTFRPS0VO
OiAKQEAgLTEwMDMsOCArMTAwOCwxMSBAQCBQYXNzUmVmUHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iagogCiAgICAg
UmVmUHRyPFBhcnNlZE5vZGU+IHJlc3VsdDsKICAgICBpZiAobV9zb3VyY2VFbGVtZW50cykgewor
ICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb247CisgICAgICAgIGxvY2F0aW9uLmxpbmUg
PSBtX2xleGVyLT5sYXN0TGluZU51bWJlcigpOworICAgICAgICBsb2NhdGlvbi5jb2x1bW4gPSBt
X2xleGVyLT5jdXJyZW50Q29sdW1uTnVtYmVyKCk7CiAgICAgICAgIHJlc3VsdCA9IFBhcnNlZE5v
ZGU6OmNyZWF0ZSgmbGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9zb3VyY2VFbGVtZW50cywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fdmFyRGVjbGFyYXRpb25zID8gJm1fdmFyRGVjbGFyYXRp
b25zLT5kYXRhIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZnVu
Y0RlY2xhcmF0aW9ucyA/ICZtX2Z1bmNEZWNsYXJhdGlvbnMtPmRhdGEgOiAwLApAQCAtMTAxMiw3
ICsxMDIwLDcgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2UoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmoKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICptX3NvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZmVhdHVyZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X251bUNvbnN0YW50cyk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKG1fc291cmNlLT5maXJzdExp
bmUoKSwgbV9sYXN0TGluZSk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKG1fc291cmNlLT5maXJz
dExpbmUoKSwgbV9sYXN0TGluZSwgbV9sZXhlci0+Y3VycmVudENvbHVtbk51bWJlcigpKTsKICAg
ICB9IGVsc2UgaWYgKGxleGljYWxHbG9iYWxPYmplY3QpIHsKICAgICAgICAgLy8gV2UgY2FuIG5l
dmVyIHNlZSBhIHN5bnRheCBlcnJvciB3aGVuIHJlcGFyc2luZyBhIGZ1bmN0aW9uLCBzaW5jZSB3
ZSBzaG91bGQgaGF2ZQogICAgICAgICAvLyByZXBvcnRlZCB0aGUgZXJyb3Igd2hlbiBwYXJzaW5n
IHRoZSBjb250YWluaW5nIHByb2dyYW0gb3IgZXZhbCBjb2RlLiBTbyBpZiB3ZSdyZQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKaW5kZXggYTFlYTc1MWFjMjBh
NzkyZmY0YzVlNjIxYTAxYmM3NzQ5ZWEzYTliZi4uNmU2Y2VjMTE0ZDQ0NWUzNzg2NWZlYzhjMzkx
ZGY1YjUxZGVjNTE3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJUb2tlbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRv
a2Vucy5oCkBAIC0xNDAsMTcgKzE0MCwyNSBAQCB1bmlvbiBKU1Rva2VuRGF0YSB7CiAgICAgY29u
c3QgSWRlbnRpZmllciogaWRlbnQ7CiB9OwogCi1zdHJ1Y3QgSlNUb2tlbkluZm8gewotICAgIEpT
VG9rZW5JbmZvKCkgOiBsaW5lKDApIHsgfQorc3RydWN0IEpTVG9rZW5Mb2NhdGlvbiB7CisgICAg
SlNUb2tlbkxvY2F0aW9uKCkgOiBsaW5lKDApLCBjb2x1bW4oMCkgeyB9CisgICAgSlNUb2tlbkxv
Y2F0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCisgICAgeworICAgICAgICBs
aW5lID0gbG9jYXRpb24ubGluZTsKKyAgICAgICAgc3RhcnRPZmZzZXQgPSBsb2NhdGlvbi5zdGFy
dE9mZnNldDsKKyAgICAgICAgZW5kT2Zmc2V0ID0gbG9jYXRpb24uZW5kT2Zmc2V0OworICAgICAg
ICBjb2x1bW4gPSBsb2NhdGlvbi5jb2x1bW47CisgICAgfQogICAgIGludCBsaW5lOwogICAgIGlu
dCBzdGFydE9mZnNldDsKICAgICBpbnQgZW5kT2Zmc2V0OworICAgIGludCBjb2x1bW47CiB9Owog
CiBzdHJ1Y3QgSlNUb2tlbiB7CiAgICAgSlNUb2tlblR5cGUgbV90eXBlOwogICAgIEpTVG9rZW5E
YXRhIG1fZGF0YTsKLSAgICBKU1Rva2VuSW5mbyBtX2luZm87CisgICAgSlNUb2tlbkxvY2F0aW9u
IG1fbG9jYXRpb247CiB9OwogCiBlbnVtIEpTUGFyc2VyU3RyaWN0bmVzcyB7IEpTUGFyc2VOb3Jt
YWwsIEpTUGFyc2VTdHJpY3QgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaAppbmRleCAzNjYyMzY3YTAxYjcwOWQ5Y2Q0
ZWMzZDQ3ZDJmM2RiOTNlNWUyNGE3Li44YjM2MjA1ZGQzNWI3YmFhN2Q4Nzg0MTU2ZDc0NGI2ZDdk
YmVhMmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1NvdXJjZVBy
b3ZpZGVyQ2FjaGVJdGVtLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3Vy
Y2VQcm92aWRlckNhY2hlSXRlbS5oCkBAIC01Myw5ICs1Myw5IEBAIHB1YmxpYzoKICAgICAgICAg
SlNUb2tlbiB0b2tlbjsKICAgICAgICAgdG9rZW4ubV90eXBlID0gQ0xPU0VCUkFDRTsKICAgICAg
ICAgdG9rZW4ubV9kYXRhLmludFZhbHVlID0gY2xvc2VCcmFjZVBvczsKLSAgICAgICAgdG9rZW4u
bV9pbmZvLnN0YXJ0T2Zmc2V0ID0gY2xvc2VCcmFjZVBvczsKLSAgICAgICAgdG9rZW4ubV9pbmZv
LmVuZE9mZnNldCA9IGNsb3NlQnJhY2VQb3MgKyAxOwotICAgICAgICB0b2tlbi5tX2luZm8ubGlu
ZSA9IGNsb3NlQnJhY2VMaW5lOyAKKyAgICAgICAgdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNl
dCA9IGNsb3NlQnJhY2VQb3M7CisgICAgICAgIHRva2VuLm1fbG9jYXRpb24uZW5kT2Zmc2V0ID0g
Y2xvc2VCcmFjZVBvcyArIDE7CisgICAgICAgIHRva2VuLm1fbG9jYXRpb24ubGluZSA9IGNsb3Nl
QnJhY2VMaW5lOyAKICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgIH0KICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggZmUzY2U3MTRmMzBl
NDkwMGNhNTRiNTY1NWZkOGExMTkwNmM3ZmRkZS4uN2Q0NGVmM2M2NmVjY2U4ZWM2OGJhZmVhOTNk
YmM5YWFjNDBiOTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9T
eW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhD
aGVja2VyLmgKQEAgLTExOSw0MiArMTE5LDQyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgRG9udEJ1aWxkU3RyaW5ncyA9IExleGVyRmxhZ3NEb250QnVpbGRTdHJpbmdzOwog
CiAgICAgaW50IGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkgeyByZXR1cm4gMTsgfQotICAgIEV4cHJl
c3Npb25UeXBlIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIENhbGxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZUZ1bmN0aW9u
Q2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIENhbGxFeHByOyB9CiAgICAgdm9pZCBhcHBlbmRUb0NvbW1hKEV4cHJlc3Npb25U
eXBlJiBiYXNlLCBFeHByZXNzaW9uVHlwZSByaWdodCkgeyBiYXNlID0gcmlnaHQ7IH0KLSAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVDb21tYUV4cHIoaW50LCBFeHByZXNzaW9uVHlwZSwgRXhwcmVz
c2lvblR5cGUgcmlnaHQpIHsgcmV0dXJuIHJpZ2h0OyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFr
ZUFzc2lnbk5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIEV4cHJlc3Npb25UeXBl
LCBib29sLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQot
ICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQcmVmaXhOb2RlKGludCwgRXhwcmVzc2lvblR5cGUsIE9w
ZXJhdG9yLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQcmVFeHByOyB9Ci0gICAgRXhwcmVzc2lv
blR5cGUgbWFrZVBvc3RmaXhOb2RlKGludCwgRXhwcmVzc2lvblR5cGUsIE9wZXJhdG9yLCBpbnQs
IGludCwgaW50KSB7IHJldHVybiBQb3N0RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VU
eXBlT2ZOb2RlKGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFR5cGVvZkV4cHI7IH0KLSAg
ICBFeHByZXNzaW9uVHlwZSBtYWtlRGVsZXRlTm9kZShpbnQsIEV4cHJlc3Npb25UeXBlLCBpbnQs
IGludCwgaW50KSB7IHJldHVybiBEZWxldGVFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFr
ZU5lZ2F0ZU5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0g
ICAgRXhwcmVzc2lvblR5cGUgbWFrZUJpdHdpc2VOb3ROb2RlKGludCwgRXhwcmVzc2lvblR5cGUp
IHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUxvZ2ljYWxO
b3QoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlVW5hcnlQbHVzKGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVu
YXJ5RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVZvaWQoaW50LCBFeHByZXNzaW9u
VHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgdGhpc0V4cHIo
aW50KSB7IHJldHVybiBUaGlzRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlc29s
dmUoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiBSZXNvbHZlRXhwcjsgfQot
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVjdExpdGVyYWwoaW50KSB7IHJldHVybiBPYmpl
Y3RMaXRlcmFsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVjdExpdGVyYWwo
aW50LCBpbnQpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlQXJyYXkoaW50LCBpbnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KLSAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJheShpbnQsIGludCwgaW50KSB7IHJldHVybiBBcnJh
eUxpdGVyYWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVtYmVyRXhwcihpbnQs
IGRvdWJsZSkgeyByZXR1cm4gTnVtYmVyRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZVN0cmluZyhpbnQsIGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVybiBTdHJpbmdFeHByOyB9Ci0g
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQm9vbGVhbihpbnQsIGJvb2wpIHsgcmV0dXJuIEJvb2xF
eHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVsbChpbnQpIHsgcmV0dXJuIE51bGxF
eHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2VzcyhpbnQsIEV4cHJl
c3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
QnJhY2tldEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nlc3MoaW50LCBF
eHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IERvdEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZWdFeHAoaW50LCBjb25zdCBJ
ZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiwgaW50KSB7IHJldHVybiBZYXJy
OjpjaGVja1N5bnRheChwYXR0ZXJuLnVzdHJpbmcoKSkgPyAwIDogUmVnRXhwRXhwcjsgfQotICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoaW50LCBFeHByZXNzaW9uVHlwZSwgaW50LCBp
bnQsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlTmV3RXhwcihpbnQsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhw
cjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihpbnQsIEV4cHJl
c3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIENvbmRp
dGlvbmFsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFzc2lnblJlc29sdmUoaW50
LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIEFzc2lnbm1lbnRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25F
eHByKGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbkJvZHkoaW50
LCBib29sKSB7IHJldHVybiAxOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29tbWFFeHBy
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSBy
aWdodCkgeyByZXR1cm4gcmlnaHQ7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlQXNzaWduTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIEV4cHJl
c3Npb25UeXBlLCBib29sLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50
RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQcmVmaXhOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gUHJlRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQb3N0Zml4Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIFBvc3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVR5cGVPZk5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFR5cGVvZkV4
cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlRGVsZXRlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRGVsZXRlRXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VOZWdhdGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNz
aW9uVHlwZSBtYWtlQml0d2lzZU5vdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZUxvZ2ljYWxOb3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0
dXJuIFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVVuYXJ5UGx1cyhjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9
CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlVm9pZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUg
dGhpc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gVGhpc0V4cHI7IH0KKyAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZXNvbHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNv
bnN0IElkZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJuIFJlc29sdmVFeHByOyB9CisgICAgRXhwcmVz
c2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJl
dHVybiBPYmplY3RMaXRlcmFsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVj
dExpdGVyYWwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50KSB7IHJldHVybiBPYmplY3RMaXRl
cmFsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGludCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhwcjsgfQorICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJl
dHVybiBBcnJheUxpdGVyYWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVtYmVy
RXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBkb3VibGUpIHsgcmV0dXJuIE51bWJlckV4cHI7
IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVTdHJpbmcoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIFN0cmluZ0V4cHI7IH0KKyAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVCb29sZWFuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wpIHsgcmV0
dXJuIEJvb2xFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVsbChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mKSB7IHJldHVybiBOdWxsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUs
IEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBCcmFja2V0RXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIERvdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZWdFeHAoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRl
bnRpZmllciYsIGludCkgeyByZXR1cm4gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi51c3RyaW5n
KCkpID8gMCA6IFJlZ0V4cEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHBy
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHBy
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1
cm4gTmV3RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIEV4
cHJlc3Npb25UeXBlKSB7IHJldHVybiBDb25kaXRpb25hbEV4cHI7IH0KKyAgICBFeHByZXNzaW9u
VHlwZSBjcmVhdGVBc3NpZ25SZXNvbHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElk
ZW50aWZpZXImLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQXNzaWdu
bWVudEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQorICAgIGludCBjcmVhdGVGdW5jdGlv
bkJvZHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gMTsgfQogICAgIGlu
dCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50
cyhpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQXJndW1lbnRzTGlzdChpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQXJndW1lbnRzTGlzdChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQXJndW1lbnRz
TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAg
IHRlbXBsYXRlIDxib29sIGNvbXBsZXRlPiBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShjb25zdCBJ
ZGVudGlmaWVyKiBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlKQogICAgIHsKICAg
ICAgICAgaWYgKCFjb21wbGV0ZSkKQEAgLTE2OCw4ICsxNjgsOCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CiAgICAgICAgIHJldHVybiBQcm9wZXJ0eSgmZ2xv
YmFsRGF0YS0+cGFyc2VyQXJlbmEtPmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRp
ZmllcihnbG9iYWxEYXRhLCBuYW1lKSwgdHlwZSk7CiAgICAgfQotICAgIGludCBjcmVhdGVQcm9w
ZXJ0eUxpc3QoaW50LCBQcm9wZXJ0eSkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVQcm9w
ZXJ0eUxpc3QoaW50LCBQcm9wZXJ0eSwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0
ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eSkgeyByZXR1cm4g
MTsgfQorICAgIGludCBjcmVhdGVQcm9wZXJ0eUxpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
UHJvcGVydHksIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVFbGVtZW50TGlzdChp
bnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVFbGVtZW50TGlzdChpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3Qo
Y29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIDE7IH0KQEAgLTE3OCwzOSArMTc4LDM5IEBAIHB1
YmxpYzoKICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBp
bnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIHZvaWQgc2V0
VXNlc0FyZ3VtZW50cyhpbnQpIHsgfQotICAgIGludCBjcmVhdGVGdW5jRGVjbFN0YXRlbWVudChp
bnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUJsb2NrU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVFeHByU3RhdGVtZW50KGludCwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVJZlN0YXRlbWVudChpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVJZlN0YXRlbWVu
dChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNy
ZWF0ZUZvckxvb3AoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAx
OyB9Ci0gICAgaW50IGNyZWF0ZUZvckluTG9vcChpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KLSAgICBpbnQgY3JlYXRlRm9ySW5Mb29wKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRW1wdHlTdGF0ZW1l
bnQoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVZhclN0YXRlbWVudChpbnQsIGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlUmV0dXJuU3RhdGVtZW50
KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3Jl
YXRlQnJlYWtTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0K
LSAgICBpbnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUNvbnRpbnVlU3Rh
dGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNy
ZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVUcnlTdGF0ZW1lbnQoaW50LCBp
bnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0K
LSAgICBpbnQgY3JlYXRlU3dpdGNoU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVXaGlsZVN0YXRlbWVudChpbnQs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVXaXRoU3Rh
dGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQot
ICAgIGludCBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7
IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUxhYmVsU3RhdGVtZW50KGludCwgY29uc3QgSWRl
bnRpZmllciosIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlVGhy
b3dTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQot
ICAgIGludCBjcmVhdGVEZWJ1Z2dlcihpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAg
aW50IGNyZWF0ZUNvbnN0U3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsg
fQotICAgIGludCBhcHBlbmRDb25zdERlY2woaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBp
bnQpIHsgcmV0dXJuIDE7IH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNy
ZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwg
Y29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkKKyAg
ICBpbnQgY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KKyAgICBpbnQgY3JlYXRlQmxvY2tTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVFeHByU3RhdGVtZW50
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAg
ICBpbnQgY3JlYXRlSWZTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQs
IGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUlmU3RhdGVtZW50KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9
CisgICAgaW50IGNyZWF0ZUZvckxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVGb3JJbkxv
b3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAg
IGludCBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRl
RW1wdHlTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gMTsgfQorICAg
IGludCBjcmVhdGVWYXJTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQs
IGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0K
KyAgICBpbnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUJyZWFrU3RhdGVt
ZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9
CisgICAgaW50IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAg
ICBpbnQgY3JlYXRlVHJ5U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgY29u
c3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGlu
dCBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVXaGlsZVN0
YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlV2l0aFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50
IGNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQs
IGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUxhYmVsU3RhdGVtZW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50KSB7
IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVRocm93U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50
IGNyZWF0ZURlYnVnZ2VyKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJldHVy
biAxOyB9CisgICAgaW50IGNyZWF0ZUNvbnN0U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgYXBwZW5kQ29uc3REZWNs
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCkgeyBy
ZXR1cm4gMTsgfQorICAgIHRlbXBsYXRlIDxib29sIHN0cmljdD4gUHJvcGVydHkgY3JlYXRlR2V0
dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6
OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQsIGludCkKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKICAgICAgICAgaWYgKCFzdHJp
Y3QpCiAgICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CiAgICAgICAgIHJldHVybiBQ
cm9wZXJ0eShuYW1lLCB0eXBlKTsKICAgICB9Ci0gICAgdGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQ
cm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUsIGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQpCisgICAgdGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQcm9wZXJ0
eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBu
YW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KQogICAgIHsKICAgICAgICAgaWYgKCFz
dHJpY3QpCiAgICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CkBAIC0yMTksNyArMjE5
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmRTdGF0ZW1lbnQoaW50LCBpbnQpIHsgfQog
ICAgIHZvaWQgYWRkVmFyKGNvbnN0IElkZW50aWZpZXIqLCBib29sKSB7IH0KLSAgICBpbnQgY29t
YmluZUNvbW1hTm9kZXMoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjb21i
aW5lQ29tbWFOb2Rlcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQogICAgIGludCBldmFsQ291bnQoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdm9pZCBh
cHBlbmRCaW5hcnlFeHByZXNzaW9uSW5mbyhpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQgZXhw
ciwgaW50LCBpbnQsIGludCwgYm9vbCkKICAgICB7CkBAIC0yMzUsNyArMjM1LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgb3BlcmF0b3JTdGFja0hhc0hpZ2hlclByZWNlZGVuY2UoaW50JiwgaW50KSB7
IHJldHVybiB0cnVlOyB9CiAgICAgQmluYXJ5T3BlcmFuZCBnZXRGcm9tT3BlcmFuZFN0YWNrKGlu
dCkgeyByZXR1cm4gbV90b3BCaW5hcnlFeHByOyB9CiAgICAgdm9pZCBzaHJpbmtPcGVyYW5kU3Rh
Y2tCeShpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQgYW1vdW50KSB7IG9wZXJhbmRTdGFja0Rl
cHRoIC09IGFtb3VudDsgfQotICAgIHZvaWQgYXBwZW5kQmluYXJ5T3BlcmF0aW9uKGludCwgaW50
JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50JiwgQmluYXJ5T3BlcmFuZCwgQmluYXJ5T3BlcmFuZCkg
eyBvcGVyYW5kU3RhY2tEZXB0aCsrOyB9CisgICAgdm9pZCBhcHBlbmRCaW5hcnlPcGVyYXRpb24o
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50JiwgQmlu
YXJ5T3BlcmFuZCwgQmluYXJ5T3BlcmFuZCkgeyBvcGVyYW5kU3RhY2tEZXB0aCsrOyB9CiAgICAg
dm9pZCBvcGVyYXRvclN0YWNrQXBwZW5kKGludCYgb3BlcmF0b3JTdGFja0RlcHRoLCBpbnQsIGlu
dCkgeyBvcGVyYXRvclN0YWNrRGVwdGgrKzsgfQogICAgIGludCBwb3BPcGVyYW5kU3RhY2soaW50
JikgeyBpbnQgcmVzID0gbV90b3BCaW5hcnlFeHByOyBtX3RvcEJpbmFyeUV4cHIgPSAwOyByZXR1
cm4gcmVzOyB9CiAgICAgCkBAIC0yNDUsNyArMjQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5h
cnlUb2tlblN0YWNrUmVtb3ZlTGFzdChpbnQmIHN0YWNrRGVwdGgpIHsgc3RhY2tEZXB0aCA9IDA7
IH0KICAgICAKICAgICB2b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQsIGludCwgaW50LCBp
bnQsIGludCwgT3BlcmF0b3IpIHsgfQotICAgIGludCBjcmVhdGVBc3NpZ25tZW50KGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAxOyB9
CisgICAgaW50IGNyZWF0ZUFzc2lnbm1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAxOyB9CiAg
ICAgY29uc3QgSWRlbnRpZmllciYgZ2V0TmFtZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNv
bnN0IHsgQVNTRVJUKHByb3BlcnR5Lm5hbWUpOyByZXR1cm4gKnByb3BlcnR5Lm5hbWU7IH0KICAg
ICBQcm9wZXJ0eU5vZGU6OlR5cGUgZ2V0VHlwZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNv
bnN0IHsgcmV0dXJuIHByb3BlcnR5LnR5cGU7IH0KICAgICBib29sIGlzUmVzb2x2ZShFeHByZXNz
aW9uVHlwZSBleHByKSBjb25zdCB7IHJldHVybiBleHByID09IFJlc29sdmVFeHByIHx8IGV4cHIg
PT0gUmVzb2x2ZUV2YWxFeHByOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggOWFjZTgyZDkzN2E5MTczOTkzNGJhNzNjMzdlZGNk
OTA0Y2IzZjc4OC4uNTExNTJmYTZjYjc4ZWI5M2VkYWNiN2M3Zjg3ZTk4NzcyZTgzYzFmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcApA
QCAtNzUsMjAgKzc1LDI4IEBAIFN0cmluZyBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2lu
dChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVhCiAgICAgU291cmNlSWRU
b0JyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmZp
bmQoc291cmNlSURWYWx1ZSk7CiAgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRz
LmVuZCgpKQogICAgICAgICBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLnNldChzb3VyY2VJ
RFZhbHVlLCBMaW5lVG9CcmVha3BvaW50TWFwKCkpLml0ZXJhdG9yOwotICAgIGlmIChpdC0+c2Vj
b25kLmNvbnRhaW5zKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEpKQotICAgICAgICBy
ZXR1cm4gIiI7Ci0gICAgaXQtPnNlY29uZC5zZXQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVy
ICsgMSwgc2NyaXB0QnJlYWtwb2ludCk7CisgICAgTGluZVRvQnJlYWtwb2ludE1hcDo6aXRlcmF0
b3IgYnJlYWtzSXQgPSBpdC0+c2Vjb25kLmZpbmQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVy
ICsgMSk7CisgICAgaWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisgICAgICAgIGJy
ZWFrc0l0ID0gaXQtPnNlY29uZC5zZXQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSwg
QnJlYWtwb2ludHNJbkxpbmUoKSkuaXRlcmF0b3I7CisKKyAgICBCcmVha3BvaW50c0luTGluZSYg
YnJlYWtzVmVjdG9yID0gYnJlYWtzSXQtPnNlY29uZDsKKyAgICB1bnNpZ25lZCBicmVha3NDb3Vu
dCA9IGJyZWFrc1ZlY3Rvci5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJy
ZWFrc0NvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5O
dW1iZXIgPT0gc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXIpCisgICAgICAgICAgICByZXR1
cm4gIiI7CisgICAgfQorICAgIGJyZWFrc1ZlY3Rvci5hcHBlbmQoc2NyaXB0QnJlYWtwb2ludCk7
CisKICAgICAqYWN0dWFsTGluZU51bWJlciA9IHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcjsK
LSAgICAvLyBGSVhNRShXSzUzMDAzKTogaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2ludHMgYnkg
bGluZTpjb2x1bW4uCi0gICAgKmFjdHVhbENvbHVtbk51bWJlciA9IDA7Ci0gICAgcmV0dXJuIHNv
dXJjZUlEICsgIjoiICsgU3RyaW5nOjpudW1iZXIoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVy
KTsKKyAgICAqYWN0dWFsQ29sdW1uTnVtYmVyID0gc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1i
ZXI7CisgICAgcmV0dXJuIHNvdXJjZUlEICsgIjoiICsgU3RyaW5nOjpudW1iZXIoc2NyaXB0QnJl
YWtwb2ludC5saW5lTnVtYmVyKSArICI6IiArIFN0cmluZzo6bnVtYmVyKHNjcmlwdEJyZWFrcG9p
bnQuY29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJl
YWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkKIHsKICAgICBWZWN0b3I8U3RyaW5n
PiB0b2tlbnM7CiAgICAgYnJlYWtwb2ludElkLnNwbGl0KCI6IiwgdG9rZW5zKTsKLSAgICBpZiAo
dG9rZW5zLnNpemUoKSAhPSAyKQorICAgIGlmICh0b2tlbnMuc2l6ZSgpICE9IDMpCiAgICAgICAg
IHJldHVybjsKICAgICBib29sIHN1Y2Nlc3M7CiAgICAgaW50cHRyX3Qgc291cmNlSURWYWx1ZSA9
IHRva2Vuc1swXS50b0ludFB0cigmc3VjY2Vzcyk7CkBAIC05Nyw5ICsxMDUsNjMgQEAgdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9p
bnRJZCkKICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyID0gdG9rZW5zWzFdLnRvVUludCgmc3VjY2Vz
cyk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm47CisgICAgdW5zaWduZWQgY29s
dW1uTnVtYmVyID0gdG9rZW5zWzJdLnRvVUludCgmc3VjY2Vzcyk7CisgICAgaWYgKCFzdWNjZXNz
KQorICAgICAgICByZXR1cm47CisKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRFZhbHVlKTsKLSAg
ICBpZiAoaXQgIT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIGl0LT5z
ZWNvbmQucmVtb3ZlKGxpbmVOdW1iZXIgKyAxKTsKKyAgICBpZiAoaXQgPT0gbV9zb3VyY2VJZFRv
QnJlYWtwb2ludHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBMaW5lVG9CcmVha3BvaW50
TWFwOjppdGVyYXRvciBicmVha3NJdCA9IGl0LT5zZWNvbmQuZmluZChsaW5lTnVtYmVyICsgMSk7
CisgICAgaWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIEJyZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25k
OworICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKKyAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykgeworICAgICAgICBpZiAo
YnJlYWtzVmVjdG9yLmF0KGkpLmNvbHVtbk51bWJlciA9PSBzdGF0aWNfY2FzdDxpbnQ+KGNvbHVt
bk51bWJlcikpIHsKKyAgICAgICAgICAgIGJyZWFrc1ZlY3Rvci5yZW1vdmUoaSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBTY3JpcHREZWJ1Z1NlcnZl
cjo6dXBkYXRlQ3VycmVudFN0YXRlbWVudFBvc2l0aW9uKGludHB0cl90IHNvdXJjZUlELCBpbnQg
bGluZSkKK3sKKyAgICBpZiAobGluZSA8IDApCisgICAgICAgIHJldHVybjsKKworICAgIFNvdXJj
ZVByb3ZpZGVyKiBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PFNvdXJjZVByb3ZpZGVyKj4oc291
cmNlSUQpOworCisgICAgaWYgKG1fY3VycmVudFNvdXJjZUlEICE9IHNvdXJjZUlEKSB7CisgICAg
ICAgIFN0cmluZyBzb3VyY2VDb2RlID0gdXN0cmluZ1RvU3RyaW5nKEpTQzo6VVN0cmluZyhjb25z
dF9jYXN0PFN0cmluZ0ltcGwqPihzb3VyY2UtPmRhdGEoKSkpKTsKKyAgICAgICAgbV9jdXJyZW50
U291cmNlQ29kZS5jbGVhcigpOworICAgICAgICBzb3VyY2VDb2RlLnNwbGl0KCJcbiIsIHRydWUs
IG1fY3VycmVudFNvdXJjZUNvZGUpOworICAgICAgICBtX2N1cnJlbnRTb3VyY2VJRCA9IHNvdXJj
ZUlEOworICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyID0gMDsK
KyAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0gMDsKKyAg
ICB9CisKKyAgICBpZiAobGluZSAhPSBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVt
YmVyKSB7CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIgPSBs
aW5lOworICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIgPSAw
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IHN0YXJ0TGluZSA9IHNvdXJjZS0+
c3RhcnRQb3NpdGlvbigpLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsKKyAgICBpZiAoKG1fY3VycmVu
dFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIgLSBzdGFydExpbmUgLSAxKSA+PSBzdGF0aWNf
Y2FzdDxpbnQ+KG1fY3VycmVudFNvdXJjZUNvZGUuc2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGNvbnN0IFN0cmluZyYgY29kZUluTGluZSA9IG1fY3VycmVudFNvdXJjZUNvZGVbbV9jdXJy
ZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51bWJlciAtIHN0YXJ0TGluZSAtIDFdOworICAgIGlm
IChjb2RlSW5MaW5lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGludCBuZXh0Q29s
dW1uID0gY29kZUluTGluZS5maW5kKCI7IiwgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29s
dW1uTnVtYmVyKTsKKyAgICBpZiAobmV4dENvbHVtbiAhPSAtMSkgeworICAgICAgICBVQ2hhciBj
ID0gY29kZUluTGluZVtuZXh0Q29sdW1uICsgMV07CisgICAgICAgIGlmIChjID09ICcgJyB8fCBj
ID09ICdcdCcpCisgICAgICAgICAgICBuZXh0Q29sdW1uICs9IDE7CisgICAgICAgIG1fY3VycmVu
dFN0YXRlbWVudFBvc2l0aW9uLmNvbHVtbk51bWJlciA9IG5leHRDb2x1bW4gKyAxOworICAgIH0g
ZWxzZQorICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIgPSAw
OwogfQogCiBib29sIFNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVha3BvaW50KGludHB0cl90IHNv
dXJjZUlELCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdApAQCAtMTEwLDE5ICsx
NzIsMzcgQEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludChpbnRwdHJfdCBz
b3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3MKICAgICBTb3VyY2VJZFRvQnJlYWtwb2lu
dHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChz
b3VyY2VJRCk7CiAgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW50IGxpbmVOdW1iZXIgPSBwb3NpdGlvbi5tX2xp
bmUub25lQmFzZWRJbnQoKTsKLSAgICBpZiAobGluZU51bWJlciA8PSAwKQorCisgICAgaW50IGxp
bmVOdW1iZXIgPSBwb3NpdGlvbi5tX2xpbmUuemVyb0Jhc2VkSW50KCk7CisgICAgaW50IGNvbHVt
bk51bWJlciA9IHBvc2l0aW9uLm1fY29sdW1uLnplcm9CYXNlZEludCgpOworICAgIGlmIChsaW5l
TnVtYmVyIDwgMCB8fCBjb2x1bW5OdW1iZXIgPCAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBMaW5lVG9CcmVha3BvaW50TWFwOjpjb25zdF9pdGVyYXRvciBicmVha3NJdCA9IGl0LT5z
ZWNvbmQuZmluZChsaW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGJyZWFrc0l0ID09IGl0LT5zZWNv
bmQuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBMaW5lVG9CcmVha3BvaW50TWFw
Ojpjb25zdF9pdGVyYXRvciBicmVha0l0ID0gaXQtPnNlY29uZC5maW5kKGxpbmVOdW1iZXIpOwot
ICAgIGlmIChicmVha0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisKKyAgICBib29sIGhpdCA9IGZh
bHNlOworICAgIGNvbnN0IEJyZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJ
dC0+c2Vjb25kOworICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUo
KTsKKyAgICB1bnNpZ25lZCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBicmVha3NDb3VudDsgaSsr
KSB7CisgICAgICAgIGludCBicmVha0NvbHVtbiA9IGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5O
dW1iZXI7CisgICAgICAgIGludCBicmVha0xpbmUgPSBicmVha3NWZWN0b3IuYXQoaSkubGluZU51
bWJlcjsKKyAgICAgICAgaWYgKGxpbmVOdW1iZXIgPT0gYnJlYWtMaW5lICYmIGNvbHVtbk51bWJl
ciA9PSBicmVha0NvbHVtbikgeworICAgICAgICAgICAgaGl0ID0gdHJ1ZTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmICghaGl0KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAvLyBBbiBlbXB0eSBjb25kaXRpb24gY291bnRzIGFzIG5vIGNvbmRpdGlv
biB3aGljaCBpcyBlcXVpdmFsZW50IHRvICJ0cnVlIi4KLSAgICBpZiAoYnJlYWtJdC0+c2Vjb25k
LmNvbmRpdGlvbi5pc0VtcHR5KCkpCisgICAgaWYgKGJyZWFrc1ZlY3Rvci5hdChpKS5jb25kaXRp
b24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEpTVmFsdWUgZXhjZXB0
aW9uOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5ldmFsdWF0ZShz
dHJpbmdUb1VTdHJpbmcoYnJlYWtJdC0+c2Vjb25kLmNvbmRpdGlvbiksIGV4Y2VwdGlvbik7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmV2YWx1YXRlKHN0cmluZ1Rv
VVN0cmluZyhicmVha3NWZWN0b3IuYXQoaSkuY29uZGl0aW9uKSwgZXhjZXB0aW9uKTsKICAgICBp
ZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgIC8vIEFuIGVycm9uZW91cyBjb25kaXRpb24gY291bnRz
IGFzICJmYWxzZSIuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0NywyMCArNDI3LDIwIEBA
IHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhKYXZh
U2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2sKICAgICBtX2NhbGxpbmdMaXN0ZW5lcnMgPSBmYWxzZTsK
IH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5l
ZWRlZChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90
IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNyZWF0
ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVn
Z2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIpCiB7Ci0gICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVy
Ojpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZpcnN0KCkpOwor
ICAgIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2Vk
SW50KGxpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpmcm9tWmVyb0Jhc2VkSW50KGNvbHVtbk51
bWJlcikpOwogICAgIG1fY3VycmVudENhbGxGcmFtZSA9IEphdmFTY3JpcHRDYWxsRnJhbWU6OmNy
ZWF0ZShkZWJ1Z2dlckNhbGxGcmFtZSwgbV9jdXJyZW50Q2FsbEZyYW1lLCBzb3VyY2VJRCwgdGV4
dFBvc2l0aW9uKTsKICAgICBwYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLmR5bmFtaWNH
bG9iYWxPYmplY3QoKSk7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxG
cmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2Fs
bEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlwdERl
YnVnU2VydmVyOjp1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IERlYnVnZ2Vy
Q2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIEFTU0VSVChtX2N1cnJlbnRDYWxsRnJh
bWUpOwogICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZElu
dChsaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSk7CisgICAgVGV4dFBvc2l0aW9u
IHRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciks
IE9yZGluYWxOdW1iZXI6OmZyb21aZXJvQmFzZWRJbnQoY29sdW1uTnVtYmVyKSk7CiAgICAgbV9j
dXJyZW50Q2FsbEZyYW1lLT51cGRhdGUoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCB0ZXh0
UG9zaXRpb24pOwogICAgIHBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUuZHluYW1pY0ds
b2JhbE9iamVjdCgpKTsKIH0KQEAgLTM5OSwyNCArNDc5LDI0IEBAIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnBhdXNlSWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3Qp
CiAgICAgbV9wYXVzZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2Fs
bEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2Fs
bEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIGlm
ICghbV9wYXVzZWQpCi0gICAgICAgIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVi
dWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICAgICAgY3JlYXRlQ2Fs
bEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlcik7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmF0U3Rh
dGVtZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YXRT
dGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7CiAgICAg
aWYgKCFtX3BhdXNlZCkKLSAgICAgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChk
ZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAgICB1cGRhdGVD
YWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmV0
dXJuRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpy
ZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGlu
dHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAg
ICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUNhbGxGcmFtZUFu
ZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsK
KyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBz
b3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIAogICAgIC8vIGRldGFjaCBtYXkg
aGF2ZSBiZWVuIGNhbGxlZCBkdXJpbmcgcGF1c2VJZk5lZWRlZAogICAgIGlmICghbV9jdXJyZW50
Q2FsbEZyYW1lKQpAQCAtNDI4LDcgKzUwOCw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJl
dHVybkV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwKICAg
ICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlcigpOwogfQog
Ci12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIs
IGJvb2wgaGFzSGFuZGxlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmV4Y2VwdGlvbihjb25z
dCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCBoYXNIYW5kbGVyKQogewog
ICAgIGlmIChtX3BhdXNlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM2LDIxICs1MTYsMjEgQEAg
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1l
JiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW4KICAgICBpZiAobV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRl
ID09IFBhdXNlT25BbGxFeGNlcHRpb25zIHx8IChtX3BhdXNlT25FeGNlcHRpb25zU3RhdGUgPT0g
UGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9ucyAmJiAhaGFzSGFuZGxlcikpCiAgICAgICAgIG1fcGF1
c2VPbk5leHRTdGF0ZW1lbnQgPSB0cnVlOwogCi0gICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJ
Zk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgIHVw
ZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlE
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogfQogCi12b2lkIFNjcmlwdERlYnVnU2VydmVy
Ojp3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2Fs
bEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlwdERl
YnVnU2VydmVyOjp3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRl
YnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBj
b2x1bW5OdW1iZXIpCiB7CiAgICAgaWYgKCFtX3BhdXNlZCkKLSAgICAgICAgY3JlYXRlQ2FsbEZy
YW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1i
ZXIpOworICAgICAgICBjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2Fs
bEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAotdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIp
Cit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dl
ckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJD
YWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQ
YXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyKTsKIAogICAgIC8vIFRyZWF0IHN0ZXBwaW5nIG92ZXIgdGhlIGVuZCBvZiBhIHBy
b2dyYW0gbGlrZSBzdGVwcGluZyBvdXQuCiAgICAgaWYgKG1fY3VycmVudENhbGxGcmFtZSA9PSBt
X3BhdXNlT25DYWxsRnJhbWUpCkBAIC00NTgsMTMgKzUzOCwxMyBAQCB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdn
ZXJDYWxsRgogICAgIG1fY3VycmVudENhbGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2Fs
bGVyKCk7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlYWNoQnJlYWtwb2ludChj
b25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZU51bWJlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlYWNoQnJl
YWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0
cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBp
ZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGF1c2VPbk5leHRTdGF0ZW1l
bnQgPSB0cnVlOwotICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJD
YWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQ
YXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29s
dW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNG
dW5jdGlvbnNTb29uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1
Z1NlcnZlci5oCmluZGV4IDg0ZmJhNWM2NzhmYzcyNWRmMjg2MmVlOWZmM2JlNjUxODQxMjFhYTYu
LjkzNTkxNGM2YjQxOGRjM2ZhMzYzMzc4NzQyNjI1NzVhNWFhZDg1ZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMTIzLDIyICsxMjMs
MjYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShjb25zdCBM
aXN0ZW5lclNldCYgbGlzdGVuZXJzLCBKU0M6OlNvdXJjZVByb3ZpZGVyKiwgYm9vbCBpc0NvbnRl
bnRTY3JpcHQpOwogICAgIHZvaWQgZGlzcGF0Y2hGYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IExp
c3RlbmVyU2V0JiBsaXN0ZW5lcnMsIEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5l
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAKLSAgICB2b2lkIGNyZWF0ZUNhbGxGcmFt
ZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90
IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7Ci0gICAgdm9pZCB1cGRhdGVDYWxsRnJhbWVBbmRQ
YXVzZUlmTmVlZGVkKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3Vy
Y2VJRCwgaW50IGxpbmVOdW1iZXIpOworICAgIHZvaWQgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJ
Zk5lZWRlZChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2b2lkIHVwZGF0ZUNhbGxG
cmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0
cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CiAgICAgdm9p
ZCBwYXVzZUlmTmVlZGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3Qp
OwogCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaChKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTb3VyY2VQ
cm92aWRlciosIGludCBlcnJvckxpbmUsIGNvbnN0IEpTQzo6VVN0cmluZyYgZXJyb3JNc2cpOwot
ICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYs
IGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7Ci0gICAgdmlydHVhbCB2b2lkIGF0
U3RhdGVtZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGZpcnN0TGluZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0IEpT
Qzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIp
OwotICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFt
ZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgYm9vbCBoYXNIYW5kbGVyKTsK
LSAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJD
YWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubyk7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubyk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWNoQnJl
YWtwb2ludChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lbm8pOwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPGxvbmcsIFNjcmlwdEJyZWFrcG9p
bnQ+IExpbmVUb0JyZWFrcG9pbnRNYXA7CisgICAgdmlydHVhbCB2b2lkIGNhbGxFdmVudChjb25z
dCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29u
c3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgZmlyc3RM
aW5lLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuRXZlbnQoY29u
c3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihjb25z
dCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVt
YmVyLCBpbnQgY29sdW1uTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpOworICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0
cl90IHNvdXJjZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUm
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubywgaW50IGNvbHVtbk51bWJlcik7CisKKwor
ICAgIHZvaWQgdXBkYXRlQ3VycmVudFN0YXRlbWVudFBvc2l0aW9uKGludHB0cl90LCBpbnQpOwor
CisgICAgdHlwZWRlZiBWZWN0b3I8U2NyaXB0QnJlYWtwb2ludD4gQnJlYWtwb2ludHNJbkxpbmU7
CisgICAgdHlwZWRlZiBIYXNoTWFwPGxvbmcsIEJyZWFrcG9pbnRzSW5MaW5lPiBMaW5lVG9CcmVh
a3BvaW50TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnRwdHJfdCwgTGluZVRvQnJlYWtwb2lu
dE1hcD4gU291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOwogCiAgICAgYm9vbCBtX2NhbGxpbmdMaXN0
ZW5lcnM7CkBAIC0xNTEsNiArMTU1LDEwIEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8SmF2YVNj
cmlwdENhbGxGcmFtZT4gbV9jdXJyZW50Q2FsbEZyYW1lOwogICAgIFNvdXJjZUlkVG9CcmVha3Bv
aW50c01hcCBtX3NvdXJjZUlkVG9CcmVha3BvaW50czsKICAgICBUaW1lcjxTY3JpcHREZWJ1Z1Nl
cnZlcj4gbV9yZWNvbXBpbGVUaW1lcjsKKworICAgIFZlY3RvcjxTdHJpbmc+IG1fY3VycmVudFNv
dXJjZUNvZGU7CisgICAgaW50cHRyX3QgbV9jdXJyZW50U291cmNlSUQ7CisgICAgU2NyaXB0QnJl
YWtwb2ludCBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0
RGVidWdnZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIu
aAppbmRleCA3ODRhODAyOTRiNmM4Zjc2YzQ2OTQ4MmE0Njg4NDI5ZGMyZDhkYjBiLi5iNTUxZjdk
Yzg3NTg4ZGU5YjQ1YzlmZDA0YzUyMDNjNjlhY2JmNDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCkBAIC01NCwxMyArNTQsMTMgQEAgcHVibGlj
OgogICAgIHZvaWQgaW5pdEdsb2JhbENhbGxGcmFtZShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZy
YW1lJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpTb3VyY2VQcm92aWRlciosIGludCBlcnJvckxpbmUsIGNvbnN0IEpTQzo6VVN0cmluZyYg
ZXJyb3JNc2cpOwotICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dl
ckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7Ci0gICAgdmly
dHVhbCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOwotICAgIHZpcnR1YWwgdm9pZCByZXR1cm5F
dmVudChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGlu
dCBsaW5lTnVtYmVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhjZXB0aW9uKGNvbnN0IEpTQzo6RGVi
dWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wg
aGFzSGFuZGxlcik7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxFeGVjdXRlUHJvZ3JhbShjb25zdCBK
U0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pOwot
ICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2Fs
bEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pOwotICAgIHZpcnR1YWwgdm9p
ZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0
cl90IHNvdXJjZUlELCBpbnQgbGluZW5vKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsbEV2ZW50KGNv
bnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVO
dW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOworICAgIHZpcnR1YWwgdm9pZCBhdFN0YXRlbWVudChj
b25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuRXZlbnQo
Y29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihj
b25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpOworICAgIHZpcnR1YWwg
dm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1ubm8pOworICAgIHZpcnR1YWwg
dm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50
cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8sIGludCBjb2x1bW5ubyk7CisgICAgdmlydHVhbCB2
b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50
cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8sIGludCBjb2x1bW5ubyk7CiAKICAgICBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVj
dC5nZXQoKTsgfQogICAgIFdlYlNjcmlwdENhbGxGcmFtZSAqZ2xvYmFsQ2FsbEZyYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9nbG9iYWxDYWxsRnJhbWUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IDY1ZjQxYzg5YWEyZGQzM2Nk
MGNhZWEzNjRlYzIyNWEyN2Y2OGQ4YjQuLjRmZmU3MjViOGFmYTMyOTYwZjRhYzg1ODQ5ZjQ3MTUw
OTVjYjk0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0
RGVidWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1
Z2dlci5tbQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OnNvdXJj
ZVBhcnNlZChFeGVjU3RhdGUqIGV4ZWMsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92CiAgICAg
bV9jYWxsaW5nRGVsZWdhdGUgPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6
Y2FsbEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50
cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQordm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6
Y2FsbEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50
cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewogICAg
IGlmIChtX2NhbGxpbmdEZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTYxLDcgKzE2MSw3
IEBAIHZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OmNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxG
cmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGluCiAgICAgbV9jYWxsaW5nRGVsZWdhdGUgPSBmYWxz
ZTsKIH0KIAotdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6YXRTdGF0ZW1lbnQoY29uc3QgRGVidWdn
ZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpCit2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjphdFN0YXRlbWVudChjb25zdCBEZWJ1
Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAobV9jYWxsaW5nRGVsZWdh
dGUpCiAgICAgICAgIHJldHVybjsKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIFdlYlNjcmlwdERl
YnVnZ2VyOjphdFN0YXRlbWVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxs
RnJhbWUsCiAgICAgbV9jYWxsaW5nRGVsZWdhdGUgPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJTY3Jp
cHREZWJ1Z2dlcjo6cmV0dXJuRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFdlYlNj
cmlwdERlYnVnZ2VyOjpyZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdn
ZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlcikKIHsKICAgICBpZiAobV9jYWxsaW5nRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsK
QEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpyZXR1cm5FdmVudChj
b25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsCiAgICAgbV9jYWxsaW5n
RGVsZWdhdGUgPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6ZXhjZXB0aW9u
KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291
cmNlSUQsIGludCBsaW5lTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpCit2b2lkIFdlYlNjcmlwdERl
YnVnZ2VyOjpleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZy
YW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIs
IGJvb2wgaGFzSGFuZGxlcikKIHsKICAgICBpZiAobV9jYWxsaW5nRGVsZWdhdGUpCiAgICAgICAg
IHJldHVybjsKQEAgLTIyNCwxNyArMjI0LDE3IEBAIHZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OmV4
Y2VwdGlvbihjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGluCiAg
ICAgbV9jYWxsaW5nRGVsZWdhdGUgPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJTY3JpcHREZWJ1Z2dl
cjo6d2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNh
bGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pCit2b2lkIFdlYlNjcmlwdERl
YnVnZ2VyOjp3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVn
Z2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubywgaW50IGNvbHVtbm5v
KQogewotICAgIGNhbGxFdmVudChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVubyk7
CisgICAgY2FsbEV2ZW50KGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZW5vLCBjb2x1
bW5ubyk7CiB9CiAKLXZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OmRpZEV4ZWN1dGVQcm9ncmFtKGNv
bnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNl
SUQsIGludCBsaW5lbm8pCit2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpkaWRFeGVjdXRlUHJvZ3Jh
bShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1ubm8pCiB7Ci0gICAgcmV0dXJuRXZlbnQoZGVi
dWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lbm8pOworICAgIHJldHVybkV2ZW50KGRlYnVn
Z2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZW5vLCBjb2x1bW5ubyk7CiB9CiAKLXZvaWQgV2Vi
U2NyaXB0RGVidWdnZXI6OmRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFt
ZSYsIGludHB0cl90LCBpbnQpCit2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpkaWRSZWFjaEJyZWFr
cG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50LCBpbnQpCiB7CiAg
ICAgcmV0dXJuOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156329</attachid>
            <date>2012-08-03 04:58:16 -0700</date>
            <delta_ts>2012-08-05 17:42:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120803195749.patch</filename>
            <type>text/plain</type>
            <size>324566</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZWM0MjBjMDVhMDNkMzgzYjMzYTNkZjkxYWRhMWEwNGEwMTBmZjgxLi40NTY3MGViNjk3ZDZmMzQx
MmZkMjlmM2E0NTE0YWJmZjI4MTk4YjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NzMgQEAKKzIwMTItMDgtMDMgIFBldGVyIFdhbmcgIDxwZXRlci53YW5nQHRvcmNobW9i
aWxlLmNvbS5jbj4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbSlNDXSBpbXBsZW1lbnQgc2V0
dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMwMDMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZnJleSBHYXJlbi4KKworICAgICAgICBBZGQgYSBjb3VudGVyIHRvIExleGVyIHRvIHJlY29yZCB0
aGUgY29sdW1uIGluZm8gb2YgZWFjaCBUb2tlbi4gQWRkIGEgY29sdW1uIHBhcmFtZXRlciB0bwor
ICAgICAgICBvcF9kZWJ1ZywgY3RpX29wX2RlYnVnLCBhbmQgX2xsaW50X29wX2RlYnVnIGJ5dGUt
Y29kZSBjb21tYW5kLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpyZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREZWJ1Z0hvb2spOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAoQnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpBcnJheU5vZGU6OnRvQXJndW1lbnRM
aXN0KToKKyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpDb25zdFN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkVtcHR5U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6RGVidWdnZXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpFeHByU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VmFyU3Rh
dGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6SWZOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpJZkVsc2VOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpEb1doaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6V2hpbGVO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkNvbnRpbnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QnJlYWtOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpXaXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6U3dp
dGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6TGFiZWxOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpUaHJvd05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OlRyeU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZSk6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjpkZWJ1Zyk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcml2YXRlRXhl
Y3V0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKElu
dGVycHJldGVyKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9kZWJ1Zyk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWJ1Zyk6CisgICAgICAgICogaml0L0pJVFN0
dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToK
KyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoQVNUQnVpbGRlcik6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNvbW1hRXhwcik6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVVbmFyeVBsdXMpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVWb2lk
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6dGhpc0V4cHIpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjpjcmVhdGVSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUFycmF5
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTnVtYmVyRXhwcik6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVN0cmluZyk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUJvb2xlYW4pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVOdWxs
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQnJhY2tldEFjY2Vzcyk6CisgICAg
ICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZVJlZ0V4cCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZU5ld0V4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVDb25kaXRpb25hbEV4
cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBc3NpZ25SZXNvbHZlKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUFyZ3VtZW50c0xpc3QpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVQcm9wZXJ0eUxpc3QpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5j
RGVjbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUJsb2NrU3Rh
dGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRXhwclN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUlmU3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRm9yTG9vcCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUVt
cHR5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVmFyU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmV0dXJuU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQnJlYWtTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVDb250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVRyeVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZVN3aXRjaFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZVdoaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRl
RG9XaGlsZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUxhYmVs
U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlV2l0aFN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVRocm93U3RhdGVtZW50KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRGVidWdnZXIpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjpjcmVhdGVDb25zdFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmFwcGVuZENvbnN0RGVjbCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNvbWJpbmVD
b21tYU5vZGVzKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kQmluYXJ5T3BlcmF0
aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXNzaWdubWVudCk6CisgICAg
ICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZU51bWJlcik6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6Om1ha2VUeXBlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZURl
bGV0ZU5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlTmVnYXRlTm9kZSk6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VCaXR3aXNlTm90Tm9kZSk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6Om1ha2VNdWx0Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
Om1ha2VEaXZOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZU1vZE5vZGUpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQWRkTm9kZSk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6Om1ha2VTdWJOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUxl
ZnRTaGlmdE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlUmlnaHRTaGlmdE5v
ZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlVVJpZ2h0U2hpZnROb2RlKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUJpdE9yTm9kZSk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6Om1ha2VCaXRBbmROb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFr
ZUJpdFhPck5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxs
Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VCaW5hcnlOb2RlKToKKyAgICAg
ICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjptYWtlUHJlZml4Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VQ
b3N0Zml4Tm9kZSk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
OjpzZXRDb2RlKToKKyAgICAgICAgKEpTQzo6OjppbnRlcm5hbFNoaWZ0KToKKyAgICAgICAgKEpT
Qzo6OjpzaGlmdCk6CisgICAgICAgIChKU0M6Ojo6bGV4KToKKyAgICAgICAgKiBwYXJzZXIvTGV4
ZXIuaDoKKyAgICAgICAgKExleGVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmN1cnJlbnRDb2x1
bW5OdW1iZXIpOgorICAgICAgICAoSlNDOjo6OmxleEV4cGVjdElkZW50aWZpZXIpOgorICAgICAg
ICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6Ok5vZGU6Ok5vZGUp
OgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6RXhwcmVzc2lvbk5vZGUpOgorICAgICAg
ICAoSlNDOjpTdGF0ZW1lbnROb2RlOjpTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6TnVs
bE5vZGU6Ok51bGxOb2RlKToKKyAgICAgICAgKEpTQzo6Qm9vbGVhbk5vZGU6OkJvb2xlYW5Ob2Rl
KToKKyAgICAgICAgKEpTQzo6TnVtYmVyTm9kZTo6TnVtYmVyTm9kZSk6CisgICAgICAgIChKU0M6
OlN0cmluZ05vZGU6OlN0cmluZ05vZGUpOgorICAgICAgICAoSlNDOjpSZWdFeHBOb2RlOjpSZWdF
eHBOb2RlKToKKyAgICAgICAgKEpTQzo6VGhpc05vZGU6OlRoaXNOb2RlKToKKyAgICAgICAgKEpT
Qzo6UmVzb2x2ZU5vZGU6OlJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyYXlOb2RlOjpB
cnJheU5vZGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3RO
b2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0TGl0ZXJhbE5vZGU6Ok9iamVjdExpdGVyYWxOb2Rl
KToKKyAgICAgICAgKEpTQzo6QnJhY2tldEFjY2Vzc29yTm9kZTo6QnJhY2tldEFjY2Vzc29yTm9k
ZSk6CisgICAgICAgIChKU0M6OkRvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKToKKyAg
ICAgICAgKEpTQzo6QXJndW1lbnRMaXN0Tm9kZTo6QXJndW1lbnRMaXN0Tm9kZSk6CisgICAgICAg
IChKU0M6Ok5ld0V4cHJOb2RlOjpOZXdFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkV2YWxGdW5j
dGlvbkNhbGxOb2RlOjpFdmFsRnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZTo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlKToKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2Rl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25D
YWxsRG90Tm9kZSk6CisgICAgICAgIChKU0M6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6UHJlUG9zdFJlc29sdmVOb2Rl
OjpQcmVQb3N0UmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4UmVzb2x2ZU5vZGU6
OlBvc3RmaXhSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhCcmFja2V0Tm9kZTo6
UG9zdGZpeEJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6UG9zdGZpeERvdE5vZGU6OlBvc3Rm
aXhEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6UG9zdGZpeEVycm9yTm9kZTo6UG9zdGZpeEVycm9y
Tm9kZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZVJlc29sdmVOb2RlOjpEZWxldGVSZXNvbHZlTm9k
ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJyYWNrZXROb2RlOjpEZWxldGVCcmFja2V0Tm9kZSk6
CisgICAgICAgIChKU0M6OkRlbGV0ZURvdE5vZGU6OkRlbGV0ZURvdE5vZGUpOgorICAgICAgICAo
SlNDOjpEZWxldGVWYWx1ZU5vZGU6OkRlbGV0ZVZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6OlZv
aWROb2RlOjpWb2lkTm9kZSk6CisgICAgICAgIChKU0M6OlR5cGVPZlJlc29sdmVOb2RlOjpUeXBl
T2ZSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlR5cGVPZlZhbHVlTm9kZTo6VHlwZU9mVmFs
dWVOb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4UmVzb2x2ZU5vZGU6OlByZWZpeFJlc29sdmVO
b2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4QnJhY2tldE5vZGU6OlByZWZpeEJyYWNrZXROb2Rl
KToKKyAgICAgICAgKEpTQzo6UHJlZml4RG90Tm9kZTo6UHJlZml4RG90Tm9kZSk6CisgICAgICAg
IChKU0M6OlByZWZpeEVycm9yTm9kZTo6UHJlZml4RXJyb3JOb2RlKToKKyAgICAgICAgKEpTQzo6
VW5hcnlPcE5vZGU6OlVuYXJ5T3BOb2RlKToKKyAgICAgICAgKEpTQzo6VW5hcnlQbHVzTm9kZTo6
VW5hcnlQbHVzTm9kZSk6CisgICAgICAgIChKU0M6Ok5lZ2F0ZU5vZGU6Ok5lZ2F0ZU5vZGUpOgor
ICAgICAgICAoSlNDOjpCaXR3aXNlTm90Tm9kZTo6Qml0d2lzZU5vdE5vZGUpOgorICAgICAgICAo
SlNDOjpMb2dpY2FsTm90Tm9kZTo6TG9naWNhbE5vdE5vZGUpOgorICAgICAgICAoSlNDOjpCaW5h
cnlPcE5vZGU6OkJpbmFyeU9wTm9kZSk6CisgICAgICAgIChKU0M6Ok11bHROb2RlOjpNdWx0Tm9k
ZSk6CisgICAgICAgIChKU0M6OkRpdk5vZGU6OkRpdk5vZGUpOgorICAgICAgICAoSlNDOjpNb2RO
b2RlOjpNb2ROb2RlKToKKyAgICAgICAgKEpTQzo6QWRkTm9kZTo6QWRkTm9kZSk6CisgICAgICAg
IChKU0M6OlN1Yk5vZGU6OlN1Yk5vZGUpOgorICAgICAgICAoSlNDOjpMZWZ0U2hpZnROb2RlOjpM
ZWZ0U2hpZnROb2RlKToKKyAgICAgICAgKEpTQzo6UmlnaHRTaGlmdE5vZGU6OlJpZ2h0U2hpZnRO
b2RlKToKKyAgICAgICAgKEpTQzo6VW5zaWduZWRSaWdodFNoaWZ0Tm9kZTo6VW5zaWduZWRSaWdo
dFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6Okxlc3NOb2RlOjpMZXNzTm9kZSk6CisgICAgICAg
IChKU0M6OkdyZWF0ZXJOb2RlOjpHcmVhdGVyTm9kZSk6CisgICAgICAgIChKU0M6Okxlc3NFcU5v
ZGU6Okxlc3NFcU5vZGUpOgorICAgICAgICAoSlNDOjpHcmVhdGVyRXFOb2RlOjpHcmVhdGVyRXFO
b2RlKToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlOjpUaHJvd2FibGVCaW5h
cnlPcE5vZGUpOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mTm9kZTo6SW5zdGFuY2VPZk5vZGUp
OgorICAgICAgICAoSlNDOjpJbk5vZGU6OkluTm9kZSk6CisgICAgICAgIChKU0M6OkVxdWFsTm9k
ZTo6RXF1YWxOb2RlKToKKyAgICAgICAgKEpTQzo6Tm90RXF1YWxOb2RlOjpOb3RFcXVhbE5vZGUp
OgorICAgICAgICAoSlNDOjpTdHJpY3RFcXVhbE5vZGU6OlN0cmljdEVxdWFsTm9kZSk6CisgICAg
ICAgIChKU0M6Ok5vdFN0cmljdEVxdWFsTm9kZTo6Tm90U3RyaWN0RXF1YWxOb2RlKToKKyAgICAg
ICAgKEpTQzo6Qml0QW5kTm9kZTo6Qml0QW5kTm9kZSk6CisgICAgICAgIChKU0M6OkJpdE9yTm9k
ZTo6Qml0T3JOb2RlKToKKyAgICAgICAgKEpTQzo6Qml0WE9yTm9kZTo6Qml0WE9yTm9kZSk6Cisg
ICAgICAgIChKU0M6OkxvZ2ljYWxPcE5vZGU6OkxvZ2ljYWxPcE5vZGUpOgorICAgICAgICAoSlND
OjpDb25kaXRpb25hbE5vZGU6OkNvbmRpdGlvbmFsTm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRN
b2RpZnlSZXNvbHZlTm9kZTo6UmVhZE1vZGlmeVJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6
QXNzaWduUmVzb2x2ZU5vZGU6OkFzc2lnblJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6UmVh
ZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUpOgorICAgICAgICAoSlND
OjpBc3NpZ25CcmFja2V0Tm9kZTo6QXNzaWduQnJhY2tldE5vZGUpOgorICAgICAgICAoSlNDOjpB
c3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeURv
dE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRXJyb3JOb2Rl
OjpBc3NpZ25FcnJvck5vZGUpOgorICAgICAgICAoSlNDOjpDb21tYU5vZGU6OkNvbW1hTm9kZSk6
CisgICAgICAgIChKU0M6OkNvbnN0U3RhdGVtZW50Tm9kZTo6Q29uc3RTdGF0ZW1lbnROb2RlKToK
KyAgICAgICAgKEpTQzo6RW1wdHlTdGF0ZW1lbnROb2RlOjpFbXB0eVN0YXRlbWVudE5vZGUpOgor
ICAgICAgICAoSlNDOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGU6OkRlYnVnZ2VyU3RhdGVtZW50Tm9k
ZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2RlOjpFeHByU3RhdGVtZW50Tm9kZSk6
CisgICAgICAgIChKU0M6OlZhclN0YXRlbWVudE5vZGU6OlZhclN0YXRlbWVudE5vZGUpOgorICAg
ICAgICAoSlNDOjpJZk5vZGU6OklmTm9kZSk6CisgICAgICAgIChKU0M6OklmRWxzZU5vZGU6Oklm
RWxzZU5vZGUpOgorICAgICAgICAoSlNDOjpEb1doaWxlTm9kZTo6RG9XaGlsZU5vZGUpOgorICAg
ICAgICAoSlNDOjpXaGlsZU5vZGU6OldoaWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZvck5vZGU6
OkZvck5vZGUpOgorICAgICAgICAoSlNDOjpDb250aW51ZU5vZGU6OkNvbnRpbnVlTm9kZSk6Cisg
ICAgICAgIChKU0M6OkJyZWFrTm9kZTo6QnJlYWtOb2RlKToKKyAgICAgICAgKEpTQzo6UmV0dXJu
Tm9kZTo6UmV0dXJuTm9kZSk6CisgICAgICAgIChKU0M6OldpdGhOb2RlOjpXaXRoTm9kZSk6Cisg
ICAgICAgIChKU0M6OkxhYmVsTm9kZTo6TGFiZWxOb2RlKToKKyAgICAgICAgKEpTQzo6VGhyb3dO
b2RlOjpUaHJvd05vZGUpOgorICAgICAgICAoSlNDOjpUcnlOb2RlOjpUcnlOb2RlKToKKyAgICAg
ICAgKEpTQzo6RnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUpOgorICAgICAgICAoSlNDOjpGdW5j
RGVjbE5vZGU6OkZ1bmNEZWNsTm9kZSk6CisgICAgICAgIChKU0M6OlN3aXRjaE5vZGU6OlN3aXRj
aE5vZGUpOgorICAgICAgICAoSlNDOjpDb25zdERlY2xOb2RlOjpDb25zdERlY2xOb2RlKToKKyAg
ICAgICAgKEpTQzo6QmxvY2tOb2RlOjpCbG9ja05vZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5v
ZGU6OkZvckluTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6U3RhdGVtZW50Tm9kZTo6c2V0TG9jKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6
OlNjb3BlTm9kZTo6U2NvcGVOb2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OlByb2dy
YW1Ob2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkV2YWxOb2RlOjpFdmFsTm9kZSk6CisgICAgICAgIChKU0M6OkV2YWxOb2RlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKToKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlNDOjpOb2RlOjpjb2x1bW5Obyk6
CisgICAgICAgIChFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChTdGF0ZW1lbnROb2RlKToKKyAg
ICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6Y29sdW1uKToKKyAgICAgICAgKE51bGxOb2RlKToK
KyAgICAgICAgKEJvb2xlYW5Ob2RlKToKKyAgICAgICAgKE51bWJlck5vZGUpOgorICAgICAgICAo
U3RyaW5nTm9kZSk6CisgICAgICAgIChSZWdFeHBOb2RlKToKKyAgICAgICAgKFRoaXNOb2RlKToK
KyAgICAgICAgKFJlc29sdmVOb2RlKToKKyAgICAgICAgKEFycmF5Tm9kZSk6CisgICAgICAgIChQ
cm9wZXJ0eUxpc3ROb2RlKToKKyAgICAgICAgKE9iamVjdExpdGVyYWxOb2RlKToKKyAgICAgICAg
KEJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoRG90QWNjZXNzb3JOb2RlKToKKyAgICAg
ICAgKEFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoTmV3RXhwck5vZGUpOgorICAgICAgICAo
RXZhbEZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoRnVuY3Rpb25DYWxsVmFsdWVOb2RlKToK
KyAgICAgICAgKEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2Fs
bEJyYWNrZXROb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAo
Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoQXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlKToKKyAgICAgICAgKFByZVBvc3RSZXNvbHZlTm9kZSk6CisgICAgICAgIChQb3N0Zml4UmVz
b2x2ZU5vZGUpOgorICAgICAgICAoUG9zdGZpeEJyYWNrZXROb2RlKToKKyAgICAgICAgKFBvc3Rm
aXhEb3ROb2RlKToKKyAgICAgICAgKFBvc3RmaXhFcnJvck5vZGUpOgorICAgICAgICAoRGVsZXRl
UmVzb2x2ZU5vZGUpOgorICAgICAgICAoRGVsZXRlQnJhY2tldE5vZGUpOgorICAgICAgICAoRGVs
ZXRlRG90Tm9kZSk6CisgICAgICAgIChEZWxldGVWYWx1ZU5vZGUpOgorICAgICAgICAoVm9pZE5v
ZGUpOgorICAgICAgICAoVHlwZU9mUmVzb2x2ZU5vZGUpOgorICAgICAgICAoVHlwZU9mVmFsdWVO
b2RlKToKKyAgICAgICAgKFByZWZpeFJlc29sdmVOb2RlKToKKyAgICAgICAgKFByZWZpeEJyYWNr
ZXROb2RlKToKKyAgICAgICAgKFByZWZpeERvdE5vZGUpOgorICAgICAgICAoUHJlZml4RXJyb3JO
b2RlKToKKyAgICAgICAgKFVuYXJ5T3BOb2RlKToKKyAgICAgICAgKFVuYXJ5UGx1c05vZGUpOgor
ICAgICAgICAoTmVnYXRlTm9kZSk6CisgICAgICAgIChCaXR3aXNlTm90Tm9kZSk6CisgICAgICAg
IChMb2dpY2FsTm90Tm9kZSk6CisgICAgICAgIChCaW5hcnlPcE5vZGUpOgorICAgICAgICAoTXVs
dE5vZGUpOgorICAgICAgICAoRGl2Tm9kZSk6CisgICAgICAgIChNb2ROb2RlKToKKyAgICAgICAg
KEFkZE5vZGUpOgorICAgICAgICAoU3ViTm9kZSk6CisgICAgICAgIChMZWZ0U2hpZnROb2RlKToK
KyAgICAgICAgKFJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKFVuc2lnbmVkUmlnaHRTaGlmdE5v
ZGUpOgorICAgICAgICAoTGVzc05vZGUpOgorICAgICAgICAoR3JlYXRlck5vZGUpOgorICAgICAg
ICAoTGVzc0VxTm9kZSk6CisgICAgICAgIChHcmVhdGVyRXFOb2RlKToKKyAgICAgICAgKFRocm93
YWJsZUJpbmFyeU9wTm9kZSk6CisgICAgICAgIChJbnN0YW5jZU9mTm9kZSk6CisgICAgICAgIChJ
bk5vZGUpOgorICAgICAgICAoRXF1YWxOb2RlKToKKyAgICAgICAgKE5vdEVxdWFsTm9kZSk6Cisg
ICAgICAgIChTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoTm90U3RyaWN0RXF1YWxOb2RlKToK
KyAgICAgICAgKEJpdEFuZE5vZGUpOgorICAgICAgICAoQml0T3JOb2RlKToKKyAgICAgICAgKEJp
dFhPck5vZGUpOgorICAgICAgICAoTG9naWNhbE9wTm9kZSk6CisgICAgICAgIChDb25kaXRpb25h
bE5vZGUpOgorICAgICAgICAoUmVhZE1vZGlmeVJlc29sdmVOb2RlKToKKyAgICAgICAgKEFzc2ln
blJlc29sdmVOb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlCcmFja2V0Tm9kZSk6CisgICAgICAg
IChBc3NpZ25CcmFja2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25Eb3ROb2RlKToKKyAgICAgICAg
KFJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKEFzc2lnbkVycm9yTm9kZSk6CisgICAgICAg
IChDb21tYU5vZGUpOgorICAgICAgICAoQ29uc3REZWNsTm9kZSk6CisgICAgICAgIChDb25zdFN0
YXRlbWVudE5vZGUpOgorICAgICAgICAoQmxvY2tOb2RlKToKKyAgICAgICAgKEVtcHR5U3RhdGVt
ZW50Tm9kZSk6CisgICAgICAgIChEZWJ1Z2dlclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoRXhw
clN0YXRlbWVudE5vZGUpOgorICAgICAgICAoVmFyU3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChJ
Zk5vZGUpOgorICAgICAgICAoSWZFbHNlTm9kZSk6CisgICAgICAgIChEb1doaWxlTm9kZSk6Cisg
ICAgICAgIChXaGlsZU5vZGUpOgorICAgICAgICAoRm9yTm9kZSk6CisgICAgICAgIChGb3JJbk5v
ZGUpOgorICAgICAgICAoQ29udGludWVOb2RlKToKKyAgICAgICAgKEJyZWFrTm9kZSk6CisgICAg
ICAgIChSZXR1cm5Ob2RlKToKKyAgICAgICAgKFdpdGhOb2RlKToKKyAgICAgICAgKExhYmVsTm9k
ZSk6CisgICAgICAgIChUaHJvd05vZGUpOgorICAgICAgICAoVHJ5Tm9kZSk6CisgICAgICAgIChT
Y29wZU5vZGUpOgorICAgICAgICAoUHJvZ3JhbU5vZGUpOgorICAgICAgICAoRXZhbE5vZGUpOgor
ICAgICAgICAoRnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAgICAgIChGdW5jRXhwck5vZGUpOgorICAg
ICAgICAoRnVuY0RlY2xOb2RlKToKKyAgICAgICAgKFN3aXRjaE5vZGUpOgorICAgICAgICAqIHBh
cnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6OnBhcnNlU291cmNlRWxlbWVudHMpOgor
ICAgICAgICAoSlNDOjo6OnBhcnNlVmFyRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjo6OnBh
cnNlQ29uc3REZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VEb1doaWxlU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVdoaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZVZhckRlY2xhcmF0aW9uTGlzdCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25z
dERlY2xhcmF0aW9uTGlzdCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VGb3JTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjo6OnBhcnNlQnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBh
cnNlQ29udGludWVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlUmV0dXJuU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVRocm93U3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZVdpdGhTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU3dpdGNoU3Rh
dGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVRyeVN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6Ojo6cGFyc2VEZWJ1Z2dlclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VCbG9j
a1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VTdGF0ZW1lbnQpOgorICAgICAgICAo
SlNDOjo6OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9u
SW5mbyk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAg
ICAgKEpTQzo6OjpwYXJzZUV4cHJlc3Npb25PckxhYmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlSWZT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChK
U0M6Ojo6cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VD
b25kaXRpb25hbEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlQmluYXJ5RXhwcmVz
c2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Ojo6
cGFyc2VPYmplY3RMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVN0cmljdE9iamVjdExp
dGVyYWwpOgorICAgICAgICAoSlNDOjo6OnBhcnNlQXJyYXlMaXRlcmFsKToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZVByaW1hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUFyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAg
KEpTQzo6OjpwYXJzZVVuYXJ5RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5o
OgorICAgICAgICAoSlNDOjpQYXJzZXI6Om5leHQpOgorICAgICAgICAoSlNDOjpQYXJzZXI6Om5l
eHRFeHBlY3RJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjp0b2tlblN0YXJ0KToK
KyAgICAgICAgKEpTQzo6UGFyc2VyOjp0b2tlbkxpbmUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6
OnRva2VuRW5kKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjp0b2tlbkxvY2F0aW9uKToKKyAgICAg
ICAgKFBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjo6Z2V0VG9rZW5OYW1lKToKKyAgICAg
ICAgKEpTQzo6OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAg
ICAgICAoSlNDOjpKU1Rva2VuTG9jYXRpb246OkpTVG9rZW5Mb2NhdGlvbik6CisgICAgICAgIChK
U1Rva2VuTG9jYXRpb24pOgorICAgICAgICAoSlNUb2tlbik6CisgICAgICAgICogcGFyc2VyL1Nv
dXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmg6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyQ2Fj
aGVJdGVtOjpjbG9zZUJyYWNlVG9rZW4pOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2Vy
Lmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ29tbWFFeHByKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjptYWtlUHJlZml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
Om1ha2VQb3N0Zml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VUeXBl
T2ZOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZURlbGV0ZU5vZGUpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlTmVnYXRlTm9kZSk6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6Om1ha2VCaXR3aXNlTm90Tm9kZSk6CisgICAgICAgIChKU0M6OlN5
bnRheENoZWNrZXI6OmNyZWF0ZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVVbmFyeVBsdXMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVh
dGVWb2lkKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6dGhpc0V4cHIpOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6Y3JlYXRlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OlN5bnRheENo
ZWNrZXI6OmNyZWF0ZUFycmF5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRl
TnVtYmVyRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN0cmluZyk6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJvb2xlYW4pOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOdWxsKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlQnJhY2tldEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVJl
Z0V4cCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU5ld0V4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDb25kaXRpb25hbEV4cHIpOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVBc3NpZ25SZXNvbHZlKToKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlQXJndW1lbnRzTGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNyZWF0ZVByb3BlcnR5TGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZUZ1bmNEZWNsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRl
QmxvY2tTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVFeHBy
U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlSWZTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGb3JMb29wKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRm9ySW5Mb29wKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRW1wdHlTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVWYXJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVSZXR1cm5TdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2Vy
OjpjcmVhdGVCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZUNvbnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlVHJ5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlU3dp
dGNoU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlV2hpbGVT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVXaXRoU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRG9XaGlsZVN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUxhYmVsU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlVGhyb3dTdGF0ZW1lbnQpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVEZWJ1Z2dlcik6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUNvbnN0U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6YXBwZW5kQ29uc3REZWNsKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tl
cjo6Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlN5bnRheENo
ZWNrZXI6OmNvbWJpbmVDb21tYU5vZGVzKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
b3BlcmF0b3JTdGFja1BvcCk6CisKIDIwMTItMDgtMDIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBtaXNzZWQgYSBzdHlsZSBnb29mIGluIHRo
ZSBwcmV2aW91cyBwYXRjaDogIk5vZGVJbmRleCBub2RlSW5kZXgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMz
ODdkYWFjODYyY2FlNjYzODNmNTQwNDI1OWNmYmQxN2E4MjU2Zi4uZDQxMTcwMWFkOTRkMDE1Zjlj
MjRmNGQ5ZWJkMWIyYmI1NDRhMjVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEy
LTA4LTAzICBQZXRlciBXYW5nICA8cGV0ZXIud2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogW0pTQ10gaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2ludHMg
YnkgbGluZTpjb2x1bW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUzMDAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAg
ICAgICAgU2luY2UgSlNDIGNhbiBwcm92aWRlIGNvbHVtbiBpbmZvIG5vdywgU2NyaXB0RGVidWdT
ZXJ2ZXIgY2FuIHVzZSBpdCB0byBzdXBwb3J0ICJQcmV0dHkgUHJpbnQiCisgICAgICAgIGRlYnVn
IG1vZGUuIFRoZSByZWxhdGVkIGludGVyZmFjZXMgZGVyaXZlZCBmcm9tIEpTQzo6RGVidWdnZXIg
d2FzIGFkZGVkIGEgcGFyYW1ldGVyLiAKKworICAgICAgICBObyBuZXcgdGVzdHMgZm9yIHRoaXMg
cGF0Y2guCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjp1cGRh
dGVDdXJyZW50U3RhdGVtZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6Omhhc0JyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OmNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdERlYnVnU2VydmVyOjpleGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OndpbGxFeGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHREZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RGVidWdTZXJ2ZXI6OmRpZFJlYWNoQnJlYWtwb2ludCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToKKwog
MjAxMi0wOC0wMiAgdWxhbkBjaHJvbWl1bS5vcmcgIDx1bGFuQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIEltcHJvdmUgZ2FyYmFnZSBjb2xsZWN0b3IgaGludCBpZiBwYWdlIHVz
ZXMgQ2FudmFzIGNvbnRleHRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYjU4ZDgyZTI1NjY2MWI5ZTNj
NDcyZGIxZmVjZGRjMTUwMzQ4NTBmYi4uNWE2NDgxZDgxZDk5ZGQ3ZTMyMDE0MjFkNmIxYjQ1MDEw
ZmI0NjY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA4LTAzICBQ
ZXRlciBXYW5nICA8cGV0ZXIud2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogW0pTQ10gaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2ludHMgYnkgbGluZTpj
b2x1bW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUz
MDAzCisKKyAgICAgICAgTm8gcmV2aWV3LCBqdXN0IGNoYW5nZWQgdGhlIGludGVyZmFjZSBhY2Nv
cmRpbmcgdGhlIGNoYW5nZXMgSlNDOjpEZWJ1Z2dlci4KKworICAgICAgICBObyBKU0MgY2FuIHBy
b3ZpZGUgdGhlIGNvbHVtbiBpbmZvIG9mIGN1cnJlbnQgSlMgc3RhdGVtZW50LCBtYWMgcG9ydGlu
ZyBjYW4gdXNlIGl0IHRvIHN1cHBvcnQKKyAgICAgICAgIlByZXR0eSBQcmludCIgZGVidWcgbW9k
ZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaDoKKyAgICAgICAgKFdl
YlNjcmlwdERlYnVnZ2VyKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1t
OgorICAgICAgICAoV2ViU2NyaXB0RGVidWdnZXI6OmNhbGxFdmVudCk6CisgICAgICAgIChXZWJT
Y3JpcHREZWJ1Z2dlcjo6YXRTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViU2NyaXB0RGVidWdnZXI6
OnJldHVybkV2ZW50KToKKyAgICAgICAgKFdlYlNjcmlwdERlYnVnZ2VyOjpleGNlcHRpb24pOgor
ICAgICAgICAoV2ViU2NyaXB0RGVidWdnZXI6OndpbGxFeGVjdXRlUHJvZ3JhbSk6CisgICAgICAg
IChXZWJTY3JpcHREZWJ1Z2dlcjo6ZGlkRXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAoV2ViU2Ny
aXB0RGVidWdnZXI6OmRpZFJlYWNoQnJlYWtwb2ludCk6CisKIDIwMTItMDgtMDEgIEppYW4gTGkg
IDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBuZXcgQ1NTIHByb3BlcnR5ICIt
d2Via2l0LXdpZGdldC1yZWdpb24iIHRvIGV4cG9zZSBkYXNoYm9hcmQgcmVnaW9uIHN1cHBvcnQg
Zm9yIG90aGVyIHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggNTM3NGE1MzdhYjM5YmQ5MTY4MjZlMTk0ZGM4MzM2NThiMmVkZDY0MC4uMGUy
YTk4YmM1NTVlMDNhOTVjZDRmNTkwNWU4N2Y0OTkzNzA5MjFjNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE1MjUsNyArMTUyNSw4IEBAIHZv
aWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVmVjdG9yPEluc3RydWN0
aW9uPjo6Y29uc3RfaXRlcmF0b3ImCiAgICAgICAgICAgICBpbnQgZGVidWdIb29rSUQgPSAoKytp
dCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBmaXJzdExpbmUgPSAoKytpdCktPnUub3Bl
cmFuZDsKICAgICAgICAgICAgIGludCBsYXN0TGluZSA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAg
ICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZGVidWdcdFx0ICVzLCAlZCwgJWQiLCBsb2NhdGlvbiwg
ZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgICAg
ICAgICAgaW50IGNvbHVtbiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAgICAgICAgICAgZGF0YUxv
ZygiWyU0ZF0gZGVidWdcdFx0ICVzLCAlZCwgJWQsICVkIiwgbG9jYXRpb24sIGRlYnVnSG9va05h
bWUoZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lLCBjb2x1bW4pOwogICAgICAgICAg
ICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24pOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApp
bmRleCAxNGNlZmI5ZDkwNWQ1ZDkxMjBkMGE1MTdmMDc4ZmZkNTA1MTQ2NmExLi40MzA4ZTc5ZGY2
YWEyM2Y1Y2Y1ZjI0NjI1Mzg4NDNiMjc0NGM5YTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCkBAIC0xOTQsNyArMTk0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIG1hY3JvKG9wX3Rocm93LCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX3Rocm93X3JlZmVyZW5j
ZV9lcnJvciwgMikgXAogICAgICAgICBcCi0gICAgICAgIG1hY3JvKG9wX2RlYnVnLCA0KSBcCisg
ICAgICAgIG1hY3JvKG9wX2RlYnVnLCA1KSBcCiAgICAgICAgIG1hY3JvKG9wX3Byb2ZpbGVfd2ls
bF9jYWxsLCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX3Byb2ZpbGVfZGlkX2NhbGwsIDIpIFwKICAg
ICAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAzM2YyODJjNjY0NjU2MDk0MzM5YTRmNjY2MzU0
YTExZDhiNjIyNzc2Li4xNGE2OWI1MzA5NTYxNGJkM2Y5MTM2YWE0YzVkMzQzYzNmZGQ1YmZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcApAQCAtMTI0OSw3ICsxMjQ5LDcgQEAgUmVzb2x2ZVJlc3VsdCBCeXRl
Y29kZUdlbmVyYXRvcjo6cmVzb2x2ZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKICAgICAg
ICAgaWYgKCFjdXJyZW50U2NvcGUtPmlzVmFyaWFibGVPYmplY3QoKSkgewogICAgICAgICAgICAg
ZmxhZ3MgfD0gUmVzb2x2ZVJlc3VsdDo6RHluYW1pY0ZsYWc7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfSAgICAgICAgCisgICAgICAgIH0KICAgICAgICAgSlNTeW1ib2xUYWJsZU9iamVj
dCogY3VycmVudFZhcmlhYmxlT2JqZWN0ID0ganNDYXN0PEpTU3ltYm9sVGFibGVPYmplY3QqPihj
dXJyZW50U2NvcGUpOwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gY3VycmVudFZh
cmlhYmxlT2JqZWN0LT5zeW1ib2xUYWJsZSgpLmdldChwcm9wZXJ0eS5pbXBsKCkpOwogCkBAIC0y
MDgzLDcgKzIwODMsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UG9wU2NvcGUoKQog
ICAgIG1fZHluYW1pY1Njb3BlRGVwdGgtLTsKIH0KIAotdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdERlYnVnSG9vayhEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50
IGxhc3RMaW5lKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1Z0hv
b2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1u
KQogewogI2lmIEVOQUJMRShERUJVR19XSVRIX0JSRUFLUE9JTlQpCiAgICAgaWYgKGRlYnVnSG9v
a0lEICE9IERpZFJlYWNoQnJlYWtwb2ludCkKQEAgLTIwOTYsNiArMjA5Niw3IEBAIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2soRGVidWdIb29rSUQgZGVidWdIb29rSUQsIGlu
dCBmaXJzdExpbmUsIGluCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRlYnVnSG9va0lEKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmlyc3RMaW5lKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQobGFzdExpbmUpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjb2x1bW4pOwog
fQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoRmluYWxseUNvbnRleHQoU3RhdGVtZW50
Tm9kZSogZmluYWxseUJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDUyZmQ3ZTgzYzZjMzUwMzM1OTkx
MzZjMmViNmQwOGYyZDE2MmI0OTUuLjQ5MDk5MWZhN2Y3MTI5NmEyZjk1NGRjZTQ0MWEwNmEyYjg3
ZjlhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTUwNiw3ICs1MDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1c2hTY29wZShSZWdpc3RlcklEKiBzY29wZSk7CiAg
ICAgICAgIHZvaWQgZW1pdFBvcFNjb3BlKCk7CiAKLSAgICAgICAgdm9pZCBlbWl0RGVidWdIb29r
KERlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpOworICAgICAgICB2b2lk
IGVtaXREZWJ1Z0hvb2soRGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwg
aW50IGNvbHVtbik7CiAKICAgICAgICAgaW50IHNjb3BlRGVwdGgoKSB7IHJldHVybiBtX2R5bmFt
aWNTY29wZURlcHRoICsgbV9maW5hbGx5RGVwdGg7IH0KICAgICAgICAgYm9vbCBoYXNGaW5hbGlz
ZXIoKSB7IHJldHVybiBtX2ZpbmFsbHlEZXB0aCAhPSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZDI0M2U4Y2Uw
MDg0OWI1NTJkOThkYjA1MDFjMzY5YTQxNWQyZWQwYS4uMjQ5ZjgyMmUyOGE0YzhkZjIzZTBlODVh
MGIwZTJiNjVjMThhMWE4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjAyLDE4ICsyMDIsMjEgQEAgYm9vbCBBcnJh
eU5vZGU6OmlzU2ltcGxlQXJyYXkoKSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi1Bcmd1
bWVudExpc3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgaW50IGxpbmVOdW1iZXIpIGNvbnN0CitBcmd1bWVudExpc3ROb2RlKiBBcnJheU5v
ZGU6OnRvQXJndW1lbnRMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFtX2VsaXNpb24gJiYg
IW1fb3B0aW9uYWwpOwogICAgIEVsZW1lbnROb2RlKiBwdHIgPSBtX2VsZW1lbnQ7CiAgICAgaWYg
KCFwdHIpCiAgICAgICAgIHJldHVybiAwOwotICAgIEFyZ3VtZW50TGlzdE5vZGUqIGhlYWQgPSBu
ZXcgKGdsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgcHRyLT52YWx1ZSgp
KTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb247CisgICAgbG9jYXRpb24ubGluZSA9IGxp
bmVOdW1iZXI7CisgICAgbG9jYXRpb24uY29sdW1uID0gY29sdW1uTnVtYmVyOworICAgIEFyZ3Vt
ZW50TGlzdE5vZGUqIGhlYWQgPSBuZXcgKGdsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobG9j
YXRpb24sIHB0ci0+dmFsdWUoKSk7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogdGFpbCA9IGhlYWQ7
CiAgICAgcHRyID0gcHRyLT5uZXh0KCk7CiAgICAgZm9yICg7IHB0cjsgcHRyID0gcHRyLT5uZXh0
KCkpIHsKICAgICAgICAgQVNTRVJUKCFwdHItPmVsaXNpb24oKSk7Ci0gICAgICAgIHRhaWwgPSBu
ZXcgKGdsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgdGFpbCwgcHRyLT52
YWx1ZSgpKTsKKyAgICAgICAgdGFpbCA9IG5ldyAoZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9k
ZShsb2NhdGlvbiwgdGFpbCwgcHRyLT52YWx1ZSgpKTsKICAgICB9CiAgICAgcmV0dXJuIGhlYWQ7
CiB9CkBAIC01MzYsNyArNTM5LDcgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAg
ICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpIHsKICAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5tX2V4cHItPmlzU2ltcGxl
QXJyYXkoKSk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbV9hcmdzLT5tX2xpc3ROb2Rl
LT5tX25leHQtPm1fbmV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIG1fYXJncy0+bV9saXN0Tm9k
ZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9kZSo+KG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5t
X2V4cHIpLT50b0FyZ3VtZW50TGlzdChnZW5lcmF0b3IuZ2xvYmFsRGF0YSgpLCAwKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGljX2Nhc3Q8QXJyYXlOb2Rl
Kj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRvQXJndW1lbnRMaXN0KGdl
bmVyYXRvci5nbG9iYWxEYXRhKCksIDAsIDApOwogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRNb3ZlKGdlbmVyYXRvci50
ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgICAgIENh
bGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJncyk7CiAgICAgICAgICAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRzLnRoaXNSZWdpc3Rlcigp
LCBvbGRMaXN0LT5tX2V4cHIpOwpAQCAtMTM4NSw3ICsxMzg4LDcgQEAgUmVnaXN0ZXJJRCogQ29u
c3REZWNsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQKIAogUmVnaXN0ZXJJRCogQ29uc3RTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0
TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICByZXR1cm4gZ2VuZXJh
dG9yLmVtaXROb2RlKG1fbmV4dCk7CiB9CiAKQEAgLTE0MjgsNyArMTQzMSw3IEBAIFJlZ2lzdGVy
SUQqIEJsb2NrTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzCiAKIFJlZ2lzdGVySUQqIEVtcHR5U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsK
LSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVj
dXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJl
dHVybiBkc3Q7CiB9CiAKQEAgLTE0MzYsNyArMTQzOSw3IEBAIFJlZ2lzdGVySUQqIEVtcHR5U3Rh
dGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzCiAKIFJlZ2lzdGVySUQqIERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5l
cmF0b3IuZW1pdERlYnVnSG9vayhEaWRSZWFjaEJyZWFrcG9pbnQsIGZpcnN0TGluZSgpLCBsYXN0
TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRSZWFjaEJyZWFrcG9pbnQs
IGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgcmV0dXJuIGRzdDsKIH0K
IApAQCAtMTQ0NSw3ICsxNDQ4LDcgQEAgUmVnaXN0ZXJJRCogRGVidWdnZXJTdGF0ZW1lbnROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUKIFJlZ2lzdGVy
SUQqIEV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFTU0VSVChtX2V4cHIpOwotICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwg
bGFzdExpbmUoKSk7IAorICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2V4cHIpOwogfQogCkBAIC0xNDU0LDcgKzE0NTcsNyBA
QCBSZWdpc3RlcklEKiBFeHByU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogUmVnaXN0ZXJJRCogVmFyU3RhdGVtZW50Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQog
ewogICAgIEFTU0VSVChtX2V4cHIpOwotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxF
eGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGlu
ZSgpLCBjb2x1bW4oKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwog
fQogCkBAIC0xNDYyLDcgKzE0NjUsNyBAQCBSZWdpc3RlcklEKiBWYXJTdGF0ZW1lbnROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogCiBSZWdp
c3RlcklEKiBJZk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKICAgICAKICAgICBSZWZQdHI8TGFiZWw+IGFmdGVyVGhlbiA9IGdlbmVy
YXRvci5uZXdMYWJlbCgpOwogCkBAIC0xNDg2LDcgKzE0ODksNyBAQCBSZWdpc3RlcklEKiBJZk5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QpCiAKIFJlZ2lzdGVySUQqIElmRWxzZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVt
aXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgp
KTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmly
c3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICAKICAgICBSZWZQdHI8TGFiZWw+
IGJlZm9yZUVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBSZWZQdHI8TGFiZWw+IGFm
dGVyRWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwpAQCAtMTUyMiwxMiArMTUyNSwxMiBAQCBS
ZWdpc3RlcklEKiBEb1doaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAgICAgUmVmUHRyPExhYmVsPiB0b3BPZkxvb3AgPSBnZW5l
cmF0b3IubmV3TGFiZWwoKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHRvcE9mTG9vcC5nZXQo
KSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb29wSGludCgpOwotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Ci0g
ICAKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgbGFz
dExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOworCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKIAogICAgIGdl
bmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwotICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBt
X2V4cHItPmxpbmVObygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGlmICht
X2V4cHItPmhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCiAgICAgICAgIGdlbmVyYXRvci5l
bWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5nZXQoKSwgc2NvcGUt
PmJyZWFrVGFyZ2V0KCksIGZhbHNlKTsKICAgICBlbHNlIHsKQEAgLTE1NDYsNyArMTU0OSw3IEBA
IFJlZ2lzdGVySUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+IHNjb3BlID0g
Z2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CiAgICAgUmVmUHRyPExh
YmVsPiB0b3BPZkxvb3AgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAotICAgIGdlbmVyYXRvci5l
bWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHItPmxpbmVObygpLCBtX2V4
cHItPmxpbmVObygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5jb2x1
bW5ObygpKTsKICAgICBpZiAobV9leHByLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpKQog
ICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9leHByLCB0b3BP
Zkxvb3AuZ2V0KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCB0cnVlKTsKICAgICBlbHNlIHsKQEAg
LTE1NjAsNyArMTU2Myw3IEBAIFJlZ2lzdGVySUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgZ2VuZXJhdG9y
LmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChz
Y29wZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIG1fZXhwci0+bGluZU5vKCksIG1fZXhwci0+bGluZU5vKCkpOwor
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExp
bmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAgaWYgKG1fZXhwci0+aGFzQ29uZGl0
aW9uQ29udGV4dENvZGVnZW4oKSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRp
b25Db250ZXh0KG1fZXhwciwgdG9wT2ZMb29wLmdldCgpLCBzY29wZS0+YnJlYWtUYXJnZXQoKSwg
ZmFsc2UpOwpAQCAtMTU4MSw3ICsxNTg0LDcgQEAgUmVnaXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsK
ICAgICBSZWZQdHI8TGFiZWxTY29wZT4gc2NvcGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29wZShM
YWJlbFNjb3BlOjpMb29wKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVj
dXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVt
aXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgp
LCBjb2x1bW4oKSk7CiAKICAgICBpZiAobV9leHByMSkKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRO
b2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjEpOwpAQCAtMTYwMiw3ICsxNjA1
LDcgQEAgUmVnaXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVz
dWx0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJh
dG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVt
aXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgp
KTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmly
c3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICBpZiAobV9leHByMykKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjMp
OwogCkBAIC0xNjI5LDcgKzE2MzIsNyBAQCBSZWdpc3RlcklEKiBGb3JJbk5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogICAgIGlm
ICghbV9sZXhwci0+aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4gZW1pdFRocm93UmVmZXJl
bmNlRXJyb3IoZ2VuZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGZvci1pbiBzdGF0ZW1lbnQgaXMgbm90
IGEgcmVmZXJlbmNlLiIpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1
dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1p
dERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCks
IGNvbHVtbigpKTsKIAogICAgIGlmIChtX2luaXQpCiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9k
ZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBtX2luaXQpOwpAQCAtMTY5Miw3ICsxNjk1LDcg
QEAgUmVnaXN0ZXJJRCogRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2Nv
cGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0TmV4dFByb3BlcnR5TmFt
ZShwcm9wZXJ0eU5hbWUsIGJhc2UuZ2V0KCksIGkuZ2V0KCksIHNpemUuZ2V0KCksIGl0ZXIuZ2V0
KCksIGxvb3BTdGFydC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5l
KCksIGNvbHVtbigpKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1Rhcmdl
dCgpKTsKICAgICByZXR1cm4gZHN0OwogfQpAQCAtMTcwMiw3ICsxNzA1LDcgQEAgUmVnaXN0ZXJJ
RCogRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHMKIC8vIEVDTUEgMTIuNwogUmVnaXN0ZXJJRCogQ29udGludWVOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0
KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAg
ICAgCiAgICAgTGFiZWxTY29wZSogc2NvcGUgPSBnZW5lcmF0b3IuY29udGludWVUYXJnZXQobV9p
ZGVudCk7CiAgICAgQVNTRVJUKHNjb3BlKTsKQEAgLTE3MTYsNyArMTcxOSw3IEBAIFJlZ2lzdGVy
SUQqIENvbnRpbnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqCiAvLyBFQ01BIDEyLjgKIFJlZ2lzdGVySUQqIEJyZWFrTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
IHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmly
c3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxF
eGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAg
IAogICAgIExhYmVsU2NvcGUqIHNjb3BlID0gZ2VuZXJhdG9yLmJyZWFrVGFyZ2V0KG1faWRlbnQp
OwogICAgIEFTU0VSVChzY29wZSk7CkBAIC0xNzI5LDcgKzE3MzIsNyBAQCBSZWdpc3RlcklEKiBC
cmVha05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkcwogCiBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQs
IGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgQVNTRVJUKGdlbmVyYXRv
ci5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRv
ci5pZ25vcmVkUmVzdWx0KCkpCkBAIC0xNzQ1LDcgKzE3NDgsNyBAQCBSZWdpc3RlcklEKiBSZXR1
cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZAogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBTY29wZXMobDAuZ2V0KCksIDApOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGwwLmdldCgpKTsKICAgICB9Ci0gICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBm
aXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJldHVybiBnZW5lcmF0b3Iu
ZW1pdFJldHVybihyMCk7CiB9CiAKQEAgLTE3NTMsNyArMTc1Niw3IEBAIFJlZ2lzdGVySUQqIFJl
dHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkCiAKIFJlZ2lzdGVySUQqIFdpdGhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5l
bWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUo
KSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZp
cnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5l
bWl0Tm9kZShzY29wZS5nZXQoKSwgbV9leHByKTsgLy8gc2NvcGUgbXVzdCBiZSBwcm90ZWN0ZWQg
dW50aWwgcG9wcGVkCkBAIC0xOTE4LDcgKzE5MjEsNyBAQCBSZWdpc3RlcklEKiBDYXNlQmxvY2tO
b2RlOjplbWl0Qnl0ZWNvZGVGb3JCbG9jayhCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZQogCiBSZWdpc3RlcklEKiBTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVmUHRyPExhYmVsU2NvcGU+
IHNjb3BlID0gZ2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6U3dpdGNoKTsKIApA
QCAtMTkzMyw3ICsxOTM2LDcgQEAgUmVnaXN0ZXJJRCogU3dpdGNoTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAogUmVnaXN0ZXJJ
RCogTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVj
dXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVt
aXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgp
LCBjb2x1bW4oKSk7CiAKICAgICBBU1NFUlQoIWdlbmVyYXRvci5icmVha1RhcmdldChtX25hbWUp
KTsKIApAQCAtMTk0OCw3ICsxOTUxLDcgQEAgUmVnaXN0ZXJJRCogTGFiZWxOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogUmVn
aXN0ZXJJRCogVGhyb3dOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdp
bGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0
TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVz
dWx0KCkpCiAgICAgICAgIGRzdCA9IDA7CkBAIC0xOTY1LDcgKzE5NjgsNyBAQCBSZWdpc3RlcklE
KiBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQogICAgIC8vIE5PVEU6IFRoZSBjYXRjaCBhbmQgZmluYWxseSBibG9ja3Mg
bXVzdCBiZSBsYWJlbGVkIGV4cGxpY2l0bHksIHNvIHRoZQogICAgIC8vIG9wdGltaXplciBrbm93
cyB0aGV5IG1heSBiZSBqdW1wZWQgdG8gZnJvbSBhbnl3aGVyZS4KIAotICAgIGdlbmVyYXRvci5l
bWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUo
KSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZp
cnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBSZWZQdHI8TGFiZWw+IHRy
eVN0YXJ0TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBpZiAobV9maW5hbGx5Qmxv
Y2spCkBAIC0yMDIyLDEzICsyMDI1LDEzIEBAIGlubGluZSB2b2lkIFNjb3BlTm9kZTo6ZW1pdFN0
YXRlbWVudHNCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAKIFJl
Z2lzdGVySUQqIFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2ls
bEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUo
KSwgY29sdW1uKCkpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRzdFJlZ2lzdGVyID0gZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0TG9hZChkc3RSZWdpc3Rl
ci5nZXQoKSwganNVbmRlZmluZWQoKSk7CiAgICAgZW1pdFN0YXRlbWVudHNCeXRlY29kZShnZW5l
cmF0b3IsIGRzdFJlZ2lzdGVyLmdldCgpKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KERpZEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGZpcnN0TGluZSgpLCBsYXN0TGlu
ZSgpLCBjb2x1bW4oKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFbmQoZHN0UmVnaXN0ZXIuZ2V0KCkp
OwogICAgIHJldHVybiAwOwogfQpAQCAtMjAzNywxMyArMjA0MCwxMyBAQCBSZWdpc3RlcklEKiBQ
cm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqKQogCiBSZWdpc3RlcklEKiBFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOwor
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5l
KCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKIAogICAgIFJlZlB0cjxSZWdpc3RlcklEPiBkc3RS
ZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBnZW5lcmF0b3IuZW1pdExv
YWQoZHN0UmVnaXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwogICAgIGVtaXRTdGF0ZW1lbnRz
Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7CiAKLSAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkp
OworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExp
bmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGdlbmVyYXRvci5lbWl0RW5kKGRzdFJl
Z2lzdGVyLmdldCgpKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTIwNTIsNyArMjA1NSw3IEBAIFJl
Z2lzdGVySUQqIEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCopCiAKIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQm9keU5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKLSAg
ICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFtZSwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZy
YW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGVtaXRTdGF0ZW1l
bnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAogICAg
IFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNpbmdsZVN0YXRlbWVudCgp
OwpAQCAtMjA2OCw3ICsyMDcxLDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25Cb2R5Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAvLyBJ
ZiB0aGVyZSBpcyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5IGluc2VydCBvbmUuCiAg
ICAgaWYgKCFyZXR1cm5Ob2RlKSB7CiAgICAgICAgIFJlZ2lzdGVySUQqIHIwID0gZ2VuZXJhdG9y
LmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSA6IGdlbmVyYXRvci5l
bWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hv
b2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRSZXR1cm4ocjAp
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5oCmluZGV4IGEyMzczMjkxODc4MDNlZGE5NTdhMzdkM2EwYTkwN2FmZjBiODky
MzIuLmJjNzQzNjc3ZTIyNzQzNzZmOWRkMGQ4NWFhNWQ2ZDg3NTFiNTAxMDkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC00MiwxNCArNDIsMTYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3Qq
KTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEV4ZWNTdGF0ZSosIFNvdXJj
ZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZU51bWJlciwgY29uc3QgVVN0cmluZyYgZXJyb3JNZXNz
YWdlKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJD
YWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFu
ZGxlcikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgRGVidWdn
ZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgcmV0dXJuRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIpID0gMDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4ZWN1
dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGlu
dCBsaW5lTnVtYmVyKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3Jh
bShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51
bWJlcikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmLCBpbnRwdHJfdCwgaW50LCBpbnQsIGJvb2wpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGF0U3RhdGVtZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCwgaW50
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgRGVidWdnZXJDYWxs
RnJhbWUmLCBpbnRwdHJfdCwgaW50LCBpbnQpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHJl
dHVybkV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3QsIGludCwgaW50KSA9
IDA7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQsIGludCkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJf
dCwgaW50LCBpbnQpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2lu
dChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQsIGludCkgPSAwOworCiAK
ICAgICAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhKU0dsb2JhbERhdGEqKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
aW5kZXggM2VkYjg1ODllM2ExZTNjOWE2OWRhN2VjZWZjMzk0MDllYWJiNDEyNy4uNTFmMjJiZWRk
YTY0NmU1YTcyZDA2N2ViNWIwYmJmMWRjMTI5Y2JkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC03MzAsOSArNzMwLDkgQEAg
TkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZShDYWxsRnJhbWUq
JiBjYWxsRnJhbWUsIEpTVmFsdWUgZXgKICAgICBpZiAoRGVidWdnZXIqIGRlYnVnZ2VyID0gY2Fs
bEZyYW1lLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpIHsKICAgICAgICAgRGVi
dWdnZXJDYWxsRnJhbWUgZGVidWdnZXJDYWxsRnJhbWUoY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1
ZSk7CiAgICAgICAgIGlmIChjYWxsRnJhbWUtPmNhbGxlZSgpKQotICAgICAgICAgICAgZGVidWdn
ZXItPnJldHVybkV2ZW50KGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLT5zb3VyY2VJRCgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5sYXN0TGlu
ZSgpKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5yZXR1cm5FdmVudChkZWJ1Z2dlckNhbGxGcmFt
ZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKS0+bGFzdExpbmUoKSwgMCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGRlYnVnZ2VyLT5kaWRFeGVjdXRlUHJvZ3JhbShkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+bGFzdExpbmUoKSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+ZGlkRXhlY3V0ZVBy
b2dyYW0oZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNv
dXJjZUlEKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmxhc3RMaW5lKCksIDApOwog
ICAgIH0KIAogICAgIC8vIElmIHRoaXMgY2FsbCBmcmFtZSBjcmVhdGVkIGFuIGFjdGl2YXRpb24g
b3IgYW4gJ2FyZ3VtZW50cycgb2JqZWN0LCB0ZWFyIGl0IG9mZi4KQEAgLTEwNTUsNyArMTA1NSw3
IEBAIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6OnRocm93RXhjZXB0aW9u
KENhbGxGcmFtZSomIGNhbGxGcmFtZSwgSlNWCiAgICAgaWYgKERlYnVnZ2VyKiBkZWJ1Z2dlciA9
IGNhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKSB7CiAgICAgICAg
IERlYnVnZ2VyQ2FsbEZyYW1lIGRlYnVnZ2VyQ2FsbEZyYW1lKGNhbGxGcmFtZSwgZXhjZXB0aW9u
VmFsdWUpOwogICAgICAgICBib29sIGhhc0hhbmRsZXIgPSBjb2RlQmxvY2stPmhhbmRsZXJGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7Ci0gICAgICAgIGRlYnVnZ2VyLT5leGNlcHRp
b24oZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJj
ZUlEKCksIGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0KSwgaGFzSGFuZGxlcik7CisgICAgICAgIGRlYnVnZ2VyLT5leGNlcHRpb24oZGVidWdnZXJD
YWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVC
bG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KSwgMCwgaGFz
SGFuZGxlcik7CiAgICAgfQogCiAgICAgLy8gQ2FsY3VsYXRlIGFuIGV4Y2VwdGlvbiBoYW5kbGVy
IHZQQywgdW53aW5kaW5nIGNhbGwgZnJhbWVzIGFzIG5lY2Vzc2FyeS4KQEAgLTE2NDMsNyArMTY0
Myw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWws
IENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlCiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4o
cmVzdWx0KTsKIH0KIAotTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRlYnVnKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwg
aW50IGxhc3RMaW5lKQorTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OmRlYnVnKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwg
aW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKQogewogICAgIERlYnVnZ2VyKiBkZWJ1Z2dlciA9IGNh
bGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpOwogICAgIGlmICghZGVi
dWdnZXIpCkBAIC0xNjUxLDIyICsxNjUxLDIyIEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVycHJl
dGVyOjpkZWJ1ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29rSUQgZGVidWdIb29rCiAK
ICAgICBzd2l0Y2ggKGRlYnVnSG9va0lEKSB7CiAgICAgICAgIGNhc2UgRGlkRW50ZXJDYWxsRnJh
bWU6Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+Y2FsbEV2ZW50KGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGZpcnN0TGluZSk7
CisgICAgICAgICAgICBkZWJ1Z2dlci0+Y2FsbEV2ZW50KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGZpcnN0TGluZSwgY29s
dW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBXaWxsTGVhdmVDYWxsRnJh
bWU6Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+cmV0dXJuRXZlbnQoY2FsbEZyYW1lLCBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgbGFzdExpbmUp
OworICAgICAgICAgICAgZGVidWdnZXItPnJldHVybkV2ZW50KGNhbGxGcmFtZSwgY2FsbEZyYW1l
LT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5lLCBj
b2x1bW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFdpbGxFeGVjdXRlU3Rh
dGVtZW50OgotICAgICAgICAgICAgZGVidWdnZXItPmF0U3RhdGVtZW50KGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGZpcnN0
TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+YXRTdGF0ZW1lbnQoY2FsbEZyYW1lLCBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgZmlyc3RM
aW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIFdpbGxFeGVj
dXRlUHJvZ3JhbToKLSAgICAgICAgICAgIGRlYnVnZ2VyLT53aWxsRXhlY3V0ZVByb2dyYW0oY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNl
SUQoKSwgZmlyc3RMaW5lKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT53aWxsRXhlY3V0ZVByb2dy
YW0oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+
c291cmNlSUQoKSwgZmlyc3RMaW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjYXNlIERpZEV4ZWN1dGVQcm9ncmFtOgotICAgICAgICAgICAgZGVidWdnZXItPmRpZEV4
ZWN1dGVQcm9ncmFtKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVj
dXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5lKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5k
aWRFeGVjdXRlUHJvZ3JhbShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPm93bmVy
RXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSwgY29sdW1uKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgY2FzZSBEaWRSZWFjaEJyZWFrcG9pbnQ6Ci0gICAgICAgICAgICBk
ZWJ1Z2dlci0+ZGlkUmVhY2hCcmVha3BvaW50KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5lKTsKKyAgICAgICAg
ICAgIGRlYnVnZ2VyLT5kaWRSZWFjaEJyZWFrcG9pbnQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNv
ZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgbGFzdExpbmUsIGNvbHVt
bik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogfQpAQCAtNTI0NSw3ICs1MjQ1LDcgQEAg
c2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwogICAgIH0K
ICAgICBERUZJTkVfT1BDT0RFKG9wX2RlYnVnKSB7Ci0gICAgICAgIC8qIGRlYnVnIGRlYnVnSG9v
a0lEKG4pIGZpcnN0TGluZShuKSBsYXN0TGluZShuKQorICAgICAgICAvKiBkZWJ1ZyBkZWJ1Z0hv
b2tJRChuKSBmaXJzdExpbmUobikgbGFzdExpbmUobikgY29sdW1uKG4pCiAKICAgICAgICAgIE5v
dGlmaWVzIHRoZSBkZWJ1Z2dlciBvZiB0aGUgY3VycmVudCBzdGF0ZSBvZiBleGVjdXRpb24uIFRo
aXMgb3Bjb2RlCiAgICAgICAgICBpcyBvbmx5IGdlbmVyYXRlZCB3aGlsZSB0aGUgZGVidWdnZXIg
aXMgYXR0YWNoZWQuCkBAIC01MjUzLDggKzUyNTMsMTAgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoK
ICAgICAgICAgaW50IGRlYnVnSG9va0lEID0gdlBDWzFdLnUub3BlcmFuZDsKICAgICAgICAgaW50
IGZpcnN0TGluZSA9IHZQQ1syXS51Lm9wZXJhbmQ7CiAgICAgICAgIGludCBsYXN0TGluZSA9IHZQ
Q1szXS51Lm9wZXJhbmQ7CisgICAgICAgIGludCBjb2x1bW4gPSB2UENbNF0udS5vcGVyYW5kOwog
Ci0gICAgICAgIGRlYnVnKGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVn
SG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CisKKyAgICAgICAgZGVidWcoY2FsbEZyYW1l
LCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RM
aW5lLCBjb2x1bW4pOwogCiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX2RlYnVnKTsK
ICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCA4NjYzYmY4ZWMzODNmYzk2MDljZTRhNjA1
NWQ5NzUzZmZkMDZjYmJiLi5mNGNjZDk5NWM5NmJmMGM5ZDZkNmIzMGQyNTA2ZGY3YzBiY2NkMTM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aApAQCAtMjQwLDcgKzI0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTYW1wbGluZ1Rv
b2wqIHNhbXBsZXIoKSB7IHJldHVybiBtX3NhbXBsZXIuZ2V0KCk7IH0KIAogICAgICAgICBORVZF
Ul9JTkxJTkUgSGFuZGxlckluZm8qIHRocm93RXhjZXB0aW9uKENhbGxGcmFtZSomLCBKU1ZhbHVl
JiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICBORVZFUl9JTkxJTkUgdm9pZCBk
ZWJ1ZyhDYWxsRnJhbWUqLCBEZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5l
KTsKKyAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgZGVidWcoQ2FsbEZyYW1lKiwgRGVidWdIb29r
SUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVtbik7CiAgICAgICAgIHN0
YXRpYyBjb25zdCBVU3RyaW5nIGdldFRyYWNlTGluZShDYWxsRnJhbWUqLCBTdGFja0ZyYW1lQ29k
ZVR5cGUsIGNvbnN0IFVTdHJpbmcmLCBpbnQpOwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBz
dGF0aWMgdm9pZCBnZXRTdGFja1RyYWNlKEpTR2xvYmFsRGF0YSosIFZlY3RvcjxTdGFja0ZyYW1l
PiYgcmVzdWx0cyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGFkZFN0YWNrVHJhY2VJZk5lY2Vzc2Fy
eShDYWxsRnJhbWUqLCBKU09iamVjdCogZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3Bjb2Rlcy5jcHAKaW5kZXggYzBhZjZmOWU5YmJiNTkwYTM2NTIxNjA3Zjc3MjE5NTZlN2Vk
Njk1Ny4uNDIxY2Y1YmM2MWRjMDU3MWE5ZDRjZjc3MjY4NGVhMDU3Nzg0MWU0YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xMTU4LDYgKzExNTgsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQog
ICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZEltbTMyKGN1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVu
dChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOworICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0udS5v
cGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuY2FsbCgpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXggMDk1ZWE1N2QzNDlmYzI2
NTc0YTMyNzhlYzAwYzEyMGIwZGRiNzM0OS4uNzBhNjA4ZTNhZmQwNTAyYWZkZjdlZDcwNzc2ZTk3
ZTYxMjdjZGVlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNv
ZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcApAQCAtMTQ3OCw2ICsxNDc4LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfZGVidWcoSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJ
bW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuYWRk
QXJndW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQp
KTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bNF0u
dS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuY2FsbCgpOwogI2VuZGlmCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IDBmMDNhMGE0YTk0NmNjODBjNDE0M2M0ZmIy
OWE0NjIwYWUxYTcxNDAuLjcxMDBhMGMxOTRjZDQwZjRmNmQ5ZTkzODFmNzMyZWRjMTViNDY4Y2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC0zNDAzLDggKzM0MDMs
OSBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9kZWJ1ZykKICAgICBpbnQgZGVidWdI
b29rSUQgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKTsKICAgICBpbnQgZmlyc3RMaW5lID0g
c3RhY2tGcmFtZS5hcmdzWzFdLmludDMyKCk7CiAgICAgaW50IGxhc3RMaW5lID0gc3RhY2tGcmFt
ZS5hcmdzWzJdLmludDMyKCk7CisgICAgaW50IGNvbHVtbiA9IHN0YWNrRnJhbWUuYXJnc1szXS5p
bnQzMigpOwogCi0gICAgc3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+ZGVidWco
Y2FsbEZyYW1lLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExp
bmUsIGxhc3RMaW5lKTsKKyAgICBzdGFja0ZyYW1lLmdsb2JhbERhdGEtPmludGVycHJldGVyLT5k
ZWJ1ZyhjYWxsRnJhbWUsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZp
cnN0TGluZSwgbGFzdExpbmUsIGNvbHVtbik7CiB9CiAKIERFRklORV9TVFVCX0ZVTkNUSU9OKHZv
aWQqLCB2bV90aHJvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCmluZGV4IGQyZDc0M2UwYWM2MmZhMDZkM2EwMzc5M2NmZDJlYTk3Y2I0M2NkZDIu
LjU4YmYxYmRlYjQ3Y2UzYWVlNmNjY2FhODZhYTUxYTVkNDNkYWVhNTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTYwMSw4ICsxNjAx
LDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlYnVnKQogICAgIGludCBkZWJ1
Z0hvb2tJRCA9IHBjWzFdLnUub3BlcmFuZDsKICAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5v
cGVyYW5kOwogICAgIGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKLSAgICAKLSAgICBn
bG9iYWxEYXRhLmludGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJ
RD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICBpbnQgY29sdW1uID0g
cGNbNF0udS5vcGVyYW5kOworCisgICAgZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+ZGVidWcoZXhl
Yywgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0
TGluZSwgY29sdW1uKTsKICAgICAKICAgICBMTElOVF9FTkQoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQppbmRleCAyYWUz
ZTBjYjI0YjlmMmM0ZTVlMjg5NDgxMzRiMjFmNmU1NDEwNWQ2Li4xMGE1YWFlYWIxYWM5MGUwMjVh
OWEzZWI5NmYyY2EwMGZlMjU5ZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC03NjAsNyArNzYwLDcgQEAgX2xsaW50
X29wX3Byb2ZpbGVfZGlkX2NhbGw6CiBfbGxpbnRfb3BfZGVidWc6CiAgICAgdHJhY2VFeGVjdXRp
b24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2RlYnVnKQotICAgIGRpc3Bh
dGNoKDQpCisgICAgZGlzcGF0Y2goNSkKIAogCiBfbGxpbnRfbmF0aXZlX2NhbGxfdHJhbXBvbGlu
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggZDRjMTcw
NjE3MzliOTNmYzAxZmU0MjY1MzNhMWIzNjFmN2MzZGZlNS4uMGE3MWYxMjk0YWFhYzRlN2E2MWVi
MzEwODc0OWQ4YjAwNjkxYzc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmgKQEAgLTExMiw4ICsxMTIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGlu
dCAgRG9udEJ1aWxkS2V5d29yZHMgPSAwOwogICAgIHN0YXRpYyBjb25zdCBpbnQgIERvbnRCdWls
ZFN0cmluZ3MgPSAwOwogCi0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaW5hcnlOb2RlKGludCBs
aW5lTnVtYmVyLCBpbnQgdG9rZW4sIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9w
SW5mbz4sIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4pOwotICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGZ1bmMsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGludCBzdGFydCwgaW50IGRpdm90
LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpbmFyeU5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgaW50IHRva2VuLCBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5h
cnlPcEluZm8+LCBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+KTsKKyAg
ICBFeHByZXNzaW9uTm9kZSogbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGZ1bmMsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGludCBzdGFy
dCwgaW50IGRpdm90LCBpbnQgZW5kKTsKIAogICAgIEpTQzo6U291cmNlRWxlbWVudHMqIGNyZWF0
ZVNvdXJjZUVsZW1lbnRzKCkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEpTQzo6U291cmNl
RWxlbWVudHMoKTsgfQogCkBAIC0xMjQsMTY4ICsxMjQsMTY4IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYXBwZW5kVG9Db21tYShDb21tYU5vZGUqIGNvbW1hTm9kZSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIpIHsgY29tbWFOb2RlLT5hcHBlbmQoZXhwcik7IH0KIAotICAgIENvbW1hTm9kZSogY3JlYXRl
Q29tbWFFeHByKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9u
Tm9kZSogcmhzKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29tbWFOb2RlKGxpbmVOdW1i
ZXIsIGxocywgcmhzKTsgfQotCi0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VBc3NpZ25Ob2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25O
b2RlKiByaWdodCwgYm9vbCBsZWZ0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotICAgIEV4cHJlc3Npb25Ob2Rl
KiBtYWtlUHJlZml4Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRv
ciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBt
YWtlUG9zdGZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0b3Is
IGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFr
ZVR5cGVPZk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgRXhwcmVz
c2lvbk5vZGUqIG1ha2VEZWxldGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSos
IGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFr
ZU5lZ2F0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKik7Ci0gICAgRXhwcmVz
c2lvbk5vZGUqIG1ha2VCaXR3aXNlTm90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZU11bHROb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGl2Tm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZU1vZE5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VBZGRO
b2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUq
IHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBt
YWtlU3ViTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Np
b25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZUJpdFhPck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0
LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAg
RXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRBbmROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0T3JOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTGVmdFNoaWZ0Tm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZVJpZ2h0
U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25O
b2RlKiBtYWtlVVJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
bGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwot
Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUxvZ2ljYWxOb3QoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9naWNhbE5v
dE5vZGUobGluZU51bWJlciwgZXhwcik7IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlVW5h
cnlQbHVzKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobGluZU51bWJlciwgZXhwcik7IH0KLSAgICBF
eHByZXNzaW9uTm9kZSogY3JlYXRlVm9pZChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIpCisgICAgQ29tbWFOb2RlKiBjcmVhdGVDb21tYUV4cHIoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIHJocykg
eyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbW1hTm9kZShsb2NhdGlvbiwgbGhzLCByaHMp
OyB9CisKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUFzc2lnbk5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSog
cmlnaHQsIGJvb2wgbGVmdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMs
IGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFr
ZVByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBPcGVy
YXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOworICAgIEV4cHJlc3Npb25Ob2Rl
KiBtYWtlUG9zdGZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
LCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOworICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlVHlwZU9mTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSopOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGVsZXRlTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5k
KTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZU5lZ2F0ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdHdpc2VO
b3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgRXhw
cmVzc2lvbk5vZGUqIG1ha2VNdWx0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGl2Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTW9kTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2Rl
KiBtYWtlQWRkTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVm
dCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAg
IEV4cHJlc3Npb25Ob2RlKiBtYWtlU3ViTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0WE9yTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0
QW5kTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJl
c3Npb25Ob2RlKiBtYWtlQml0T3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VMZWZ0U2hpZnROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VSaWdo
dFNoaWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlVVJpZ2h0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CisKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTG9naWNhbE5vdChj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxOb3ROb2RlKGxvY2F0aW9uLCBleHByKTsg
fQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVVbmFyeVBsdXMoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBVbmFyeVBsdXNOb2RlKGxvY2F0aW9uLCBleHByKTsgfQorICAgIEV4cHJlc3Npb25O
b2RlKiBjcmVhdGVWb2lkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBleHByKQogICAgIHsKICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVm9pZE5vZGUobGluZU51bWJlciwgZXhwcik7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVm9pZE5vZGUobG9jYXRpb24sIGV4cHIpOwog
ICAgIH0KLSAgICBFeHByZXNzaW9uTm9kZSogdGhpc0V4cHIoaW50IGxpbmVOdW1iZXIpCisgICAg
RXhwcmVzc2lvbk5vZGUqIHRoaXNFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24p
CiAgICAgewogICAgICAgICB1c2VzVGhpcygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIFRoaXNOb2RlKGxpbmVOdW1iZXIpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIFRoaXNOb2RlKGxvY2F0aW9uKTsKICAgICB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNy
ZWF0ZVJlc29sdmUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQg
c3RhcnQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVJlc29sdmUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBzdGFydCkKICAg
ICB7CiAgICAgICAgIGlmIChtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cyA9
PSAqaWRlbnQpCiAgICAgICAgICAgICB1c2VzQXJndW1lbnRzKCk7Ci0gICAgICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgUmVzb2x2ZU5vZGUobGluZU51bWJlciwgKmlkZW50LCBzdGFydCk7
CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVzb2x2ZU5vZGUobG9jYXRpb24s
ICppZGVudCwgc3RhcnQpOwogICAgIH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlT2JqZWN0
TGl0ZXJhbChpbnQgbGluZU51bWJlcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIE9iamVj
dExpdGVyYWxOb2RlKGxpbmVOdW1iZXIpOyB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU9i
amVjdExpdGVyYWwoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5TGlzdE5vZGUqIHByb3BlcnRpZXMp
IHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBPYmplY3RMaXRlcmFsTm9kZShsaW5lTnVtYmVy
LCBwcm9wZXJ0aWVzKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVPYmplY3RMaXRlcmFs
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBPYmplY3RMaXRlcmFsTm9kZShsb2NhdGlvbik7IH0KKyAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlT2JqZWN0TGl0ZXJhbChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9w
ZXJ0eUxpc3ROb2RlKiBwcm9wZXJ0aWVzKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgT2Jq
ZWN0TGl0ZXJhbE5vZGUobG9jYXRpb24sIHByb3BlcnRpZXMpOyB9CiAKLSAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIGludCBlbGlzaW9ucykKKyAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
aW50IGVsaXNpb25zKQogICAgIHsKICAgICAgICAgaWYgKGVsaXNpb25zKQogICAgICAgICAgICAg
aW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJyYXlO
b2RlKGxpbmVOdW1iZXIsIGVsaXNpb25zKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBBcnJheU5vZGUobG9jYXRpb24sIGVsaXNpb25zKTsKICAgICB9CiAKLSAgICBFeHByZXNz
aW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIEVsZW1lbnROb2RlKiBlbGVtcykg
eyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5lTnVtYmVyLCBlbGVtcyk7
IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIGludCBl
bGlzaW9ucywgRWxlbWVudE5vZGUqIGVsZW1zKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVB
cnJheShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFbGVtZW50Tm9kZSogZWxlbXMp
IHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcnJheU5vZGUobG9jYXRpb24sIGVsZW1zKTsg
fQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJheShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBpbnQgZWxpc2lvbnMsIEVsZW1lbnROb2RlKiBlbGVtcykKICAgICB7CiAgICAg
ICAgIGlmIChlbGlzaW9ucykKICAgICAgICAgICAgIGluY0NvbnN0YW50cygpOwotICAgICAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5lTnVtYmVyLCBlbGlzaW9ucywg
ZWxlbXMpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsb2Nh
dGlvbiwgZWxpc2lvbnMsIGVsZW1zKTsKICAgICB9Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZU51bWJlckV4cHIoaW50IGxpbmVOdW1iZXIsIGRvdWJsZSBkKQorICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVOdW1iZXJFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGRvdWJs
ZSBkKQogICAgIHsKICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgTnVtYmVyTm9kZShsaW5lTnVtYmVyLCBkKTsKKyAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBOdW1iZXJOb2RlKGxvY2F0aW9uLCBkKTsKICAgICB9CiAKLSAg
ICBFeHByZXNzaW9uTm9kZSogY3JlYXRlU3RyaW5nKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVu
dGlmaWVyKiBzdHJpbmcpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVN0cmluZyhjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyKiBzdHJpbmcpCiAgICAg
ewogICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBTdHJpbmdOb2RlKGxpbmVOdW1iZXIsICpzdHJpbmcpOworICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIFN0cmluZ05vZGUobG9jYXRpb24sICpzdHJpbmcpOwogICAgIH0KIAot
ICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVCb29sZWFuKGludCBsaW5lTnVtYmVyLCBib29sIGIp
CisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJvb2xlYW4oY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgYm9vbCBiKQogICAgIHsKICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQm9vbGVhbk5vZGUobGluZU51bWJlciwgYik7
CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQm9vbGVhbk5vZGUobG9jYXRpb24s
IGIpOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdWxsKGludCBsaW5lTnVt
YmVyKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdWxsKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24pCiAgICAgewogICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdWxsTm9kZShsaW5lTnVtYmVyKTsKKyAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdWxsTm9kZShsb2NhdGlvbik7CiAgICAgfQogCi0gICAg
RXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHksIGJvb2wgcHJvcGVydHlI
YXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBwcm9wZXJ0eSwgYm9v
bCBwcm9wZXJ0eUhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkK
ICAgICB7Ci0gICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgQnJhY2tldEFjY2Vzc29yTm9kZShsaW5lTnVtYmVyLCBiYXNlLCBwcm9wZXJ0eSwgcHJv
cGVydHlIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIG5vZGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJhY2tldEFjY2Vzc29yTm9kZShsb2NhdGlvbiwgYmFzZSwg
cHJvcGVydHksIHByb3BlcnR5SGFzQXNzaWdubWVudHMpOwogICAgICAgICBzZXRFeGNlcHRpb25M
b2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2RlOwog
ICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nlc3MoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eSwgaW50
IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZURv
dEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
YmFzZSwgY29uc3QgSWRlbnRpZmllciogcHJvcGVydHksIGludCBzdGFydCwgaW50IGRpdm90LCBp
bnQgZW5kKQogICAgIHsKLSAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBub2RlID0gbmV3IChtX2ds
b2JhbERhdGEpIERvdEFjY2Vzc29yTm9kZShsaW5lTnVtYmVyLCBiYXNlLCAqcHJvcGVydHkpOwor
ICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRG90QWNj
ZXNzb3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHkpOwogICAgICAgICBzZXRFeGNlcHRp
b25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAgIHJldHVybiBub2Rl
OwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVSZWdFeHAoaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzLCBp
bnQgc3RhcnQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVu
dGlmaWVyJiBmbGFncywgaW50IHN0YXJ0KQogICAgIHsKICAgICAgICAgaWYgKFlhcnI6OmNoZWNr
U3ludGF4KHBhdHRlcm4udXN0cmluZygpKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAg
ICBSZWdFeHBOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFJlZ0V4cE5vZGUobGluZU51
bWJlciwgcGF0dGVybiwgZmxhZ3MpOworICAgICAgICBSZWdFeHBOb2RlKiBub2RlID0gbmV3ICht
X2dsb2JhbERhdGEpIFJlZ0V4cE5vZGUobG9jYXRpb24sIHBhdHRlcm4sIGZsYWdzKTsKICAgICAg
ICAgaW50IHNpemUgPSBwYXR0ZXJuLmxlbmd0aCgpICsgMjsgLy8gKyAyIGZvciB0aGUgdHdvIC8n
cwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgc3RhcnQgKyBzaXpl
LCBzdGFydCArIHNpemUpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHBy
ZXNzaW9uTm9kZSogY3JlYXRlTmV3RXhwcihpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3VtZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGlu
dCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU5ld0V4cHIoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFy
Z3VtZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiAgICAgewotICAgICAgICBO
ZXdFeHByTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBOZXdFeHByTm9kZShsaW5lTnVt
YmVyLCBleHByLCBhcmd1bWVudHMpOworICAgICAgICBOZXdFeHByTm9kZSogbm9kZSA9IG5ldyAo
bV9nbG9iYWxEYXRhKSBOZXdFeHByTm9kZShsb2NhdGlvbiwgZXhwciwgYXJndW1lbnRzKTsKICAg
ICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAg
ICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTmV3
RXhwcihpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50
IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTmV3RXhwcihjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5k
KQogICAgIHsKLSAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
TmV3RXhwck5vZGUobGluZU51bWJlciwgZXhwcik7CisgICAgICAgIE5ld0V4cHJOb2RlKiBub2Rl
ID0gbmV3IChtX2dsb2JhbERhdGEpIE5ld0V4cHJOb2RlKGxvY2F0aW9uLCBleHByKTsKICAgICAg
ICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGVuZCwgZW5kKTsKICAgICAgICAg
cmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUNvbmRpdGlv
bmFsRXhwcihpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIHJocykKKyAgICBFeHByZXNzaW9uTm9kZSog
Y3JlYXRlQ29uZGl0aW9uYWxFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25O
b2RlKiByaHMpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbmRp
dGlvbmFsTm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24sIGxocywgcmhzKTsKKyAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBDb25kaXRpb25hbE5vZGUobG9jYXRpb24sIGNvbmRpdGlv
biwgbGhzLCByaHMpOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBc3NpZ25S
ZXNvbHZlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVzc2lv
bk5vZGUqIHJocywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZUFzc2lnblJlc29sdmUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaHMsIGludCBzdGFy
dCwgaW50IGRpdm90LCBpbnQgZW5kKQogICAgIHsKICAgICAgICAgaWYgKHJocy0+aXNGdW5jRXhw
ck5vZGUoKSkKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KHJocyktPmJv
ZHkoKS0+c2V0SW5mZXJyZWROYW1lKGlkZW50KTsKLSAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUq
IG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwg
aWRlbnQsIHJocyk7CisgICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChtX2ds
b2JhbERhdGEpIEFzc2lnblJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVudCwgcmhzKTsKICAgICAg
ICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAg
ICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rp
b25FeHByKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBGdW5jdGlvbkJv
ZHlOb2RlKiBib2R5LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJzLCBpbnQgb3BlbkJyYWNlUG9z
LCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBib2R5RW5kTGluZSkK
KyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIEZ1bmN0aW9uQm9keU5vZGUq
IGJvZHksIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcnMsIGludCBvcGVuQnJhY2VQb3MsIGludCBj
bG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlFbmRMaW5lKQogICAgIHsK
LSAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4
cHJOb2RlKGxpbmVOdW1iZXIsICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Np
b24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVy
cyk7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSk7Cisg
ICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNFeHBy
Tm9kZShsb2NhdGlvbiwgKm5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihv
cGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbWV0ZXJzKTsK
KyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlv
bi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIEZ1bmN0aW9u
Qm9keU5vZGUqIGNyZWF0ZUZ1bmN0aW9uQm9keShpbnQgbGluZU51bWJlciwgYm9vbCBpblN0cmlj
dENvbnRleHQpCisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlRnVuY3Rpb25Cb2R5KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGJvb2wgaW5TdHJpY3RDb250ZXh0KQogICAgIHsK
LSAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShtX2dsb2JhbERhdGEsIGxp
bmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCk7CisgICAgICAgIHJldHVybiBGdW5jdGlvbkJvZHlO
b2RlOjpjcmVhdGUobV9nbG9iYWxEYXRhLCBsb2NhdGlvbiwgaW5TdHJpY3RDb250ZXh0KTsKICAg
ICB9CiAgICAgCi0gICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVy
T3JTZXR0ZXJQcm9wZXJ0eShpbnQgbGluZU51bWJlciwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUs
IGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25C
b2R5Tm9kZSogYm9keSwgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBi
b2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCisgICAgdGVtcGxhdGUgPGJvb2w+IFByb3Bl
cnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciog
bmFtZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1zLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBpbnQg
b3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGludCBi
b2R5RW5kTGluZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKLSAgICAgICAgYm9keS0+
c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lKTsKKyAgICAgICAgYm9keS0+c2V0TG9j
KGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICBi
b2R5LT5zZXRJbmZlcnJlZE5hbWUoKm5hbWUpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERhdGEsICpuYW1lLCBuZXcgKG1fZ2xvYmFsRGF0
YSkgRnVuY0V4cHJOb2RlKGxpbmVOdW1iZXIsIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+
bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhwcmVzc2lvbihvcGVuQnJh
Y2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJhbXMpLCB0eXBlKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRh
LCAqbmFtZSwgbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgbV9nbG9i
YWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2Rl
LT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGlu
ZSksIHBhcmFtcyksIHR5cGUpOwogICAgIH0KICAgICAKLSAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJv
cGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KEpTR2xvYmFsRGF0YSosIGlu
dCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUsIFBhcmFt
ZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgaW50IG9wZW5CcmFjZVBv
cywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUp
CisgICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQ
cm9wZXJ0eShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQ
cm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFt
cywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJh
Y2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCiAgICAgewotICAgICAg
ICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUpOwotICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERhdGEsIG5hbWUsIG5l
dyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobGluZU51bWJlciwgbV9nbG9iYWxEYXRhLT5w
cm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHBy
ZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFt
cyksIHR5cGUpOworICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExp
bmUsIGxvY2F0aW9uLmNvbHVtbik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
UHJvcGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwgbmFtZSwgbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNF
eHByTm9kZShsb2NhdGlvbiwgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRp
ZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xv
c2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtcyksIHR5cGUpOwogICAgIH0KIAogICAg
IEFyZ3VtZW50c05vZGUqIGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBBcmd1bWVudHNOb2RlKCk7IH0KICAgICBBcmd1bWVudHNOb2RlKiBjcmVhdGVBcmd1bWVu
dHMoQXJndW1lbnRMaXN0Tm9kZSogYXJncykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFy
Z3VtZW50c05vZGUoYXJncyk7IH0KLSAgICBBcmd1bWVudExpc3ROb2RlKiBjcmVhdGVBcmd1bWVu
dHNMaXN0KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYXJnKSB7IHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVtYmVyLCBhcmcpOyB9Ci0gICAg
QXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRzTGlzdChpbnQgbGluZU51bWJlciwgQXJn
dW1lbnRMaXN0Tm9kZSogYXJncywgRXhwcmVzc2lvbk5vZGUqIGFyZykgeyByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobGluZU51bWJlciwgYXJncywgYXJnKTsgfQor
ICAgIEFyZ3VtZW50TGlzdE5vZGUqIGNyZWF0ZUFyZ3VtZW50c0xpc3QoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGFyZykgeyByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobG9jYXRpb24sIGFyZyk7IH0KKyAgICBBcmd1bWVu
dExpc3ROb2RlKiBjcmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MsIEV4cHJlc3Npb25Ob2RlKiBhcmcpIHsgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxvY2F0aW9uLCBhcmdzLCBh
cmcpOyB9CiAKICAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0
eShjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Npb25Ob2RlKiBub2RlLCBQ
cm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSkKICAgICB7CkBAIC0yOTQsOCArMjk0LDggQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2Jh
bERhdGEsICpwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUpOwogICAgIH0KICAgICB0ZW1wbGF0ZSA8
Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShKU0dsb2JhbERhdGEqLCBkb3VibGUg
cHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVydHlOb2RlOjpUeXBlIHR5
cGUpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5vZGUobV9nbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUpOyB9Ci0gICAgUHJvcGVydHlMaXN0Tm9kZSogY3Jl
YXRlUHJvcGVydHlMaXN0KGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGUqIHByb3BlcnR5KSB7
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlMaXN0Tm9kZShsaW5lTnVtYmVyLCBw
cm9wZXJ0eSk7IH0KLSAgICBQcm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQcm9wZXJ0eUxpc3QoaW50
IGxpbmVOdW1iZXIsIFByb3BlcnR5Tm9kZSogcHJvcGVydHksIFByb3BlcnR5TGlzdE5vZGUqIHRh
aWwpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eUxpc3ROb2RlKGxpbmVOdW1i
ZXIsIHByb3BlcnR5LCB0YWlsKTsgfQorICAgIFByb3BlcnR5TGlzdE5vZGUqIGNyZWF0ZVByb3Bl
cnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIHBy
b3BlcnR5KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlMaXN0Tm9kZShsb2Nh
dGlvbiwgcHJvcGVydHkpOyB9CisgICAgUHJvcGVydHlMaXN0Tm9kZSogY3JlYXRlUHJvcGVydHlM
aXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3BlcnR5Tm9kZSogcHJvcGVy
dHksIFByb3BlcnR5TGlzdE5vZGUqIHRhaWwpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQ
cm9wZXJ0eUxpc3ROb2RlKGxvY2F0aW9uLCBwcm9wZXJ0eSwgdGFpbCk7IH0KIAogICAgIEVsZW1l
bnROb2RlKiBjcmVhdGVFbGVtZW50TGlzdChpbnQgZWxpc2lvbnMsIEV4cHJlc3Npb25Ob2RlKiBl
eHByKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRWxlbWVudE5vZGUoZWxpc2lvbnMsIGV4
cHIpOyB9CiAgICAgRWxlbWVudE5vZGUqIGNyZWF0ZUVsZW1lbnRMaXN0KEVsZW1lbnROb2RlKiBl
bGVtcywgaW50IGVsaXNpb25zLCBFeHByZXNzaW9uTm9kZSogZXhwcikgeyByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIEVsZW1lbnROb2RlKGVsZW1zLCBlbGlzaW9ucywgZXhwcik7IH0KQEAgLTMw
OSwxOTEgKzMwOSwxOTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRVc2VzQXJndW1lbnRzKEZ1
bmN0aW9uQm9keU5vZGUqIG5vZGUpIHsgbm9kZS0+c2V0VXNlc0FyZ3VtZW50cygpOyB9CiAKLSAg
ICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGdW5jRGVjbFN0YXRlbWVudChpbnQgbGluZU51bWJlciwg
Y29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVy
Tm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGlu
dCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3Jl
YXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29u
c3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgUGFyYW1ldGVyTm9k
ZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBi
b2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCiAgICAgewotICAgICAgICBGdW5jRGVjbE5v
ZGUqIGRlY2wgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0RlY2xOb2RlKGxpbmVOdW1iZXIsICpu
YW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9z
ZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7CisgICAgICAgIEZ1bmNEZWNs
Tm9kZSogZGVjbCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRGVjbE5vZGUobG9jYXRpb24sICpu
YW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9z
ZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7CiAgICAgICAgIGlmICgqbmFt
ZSA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50cykKICAgICAgICAgICAg
IHVzZXNBcmd1bWVudHMoKTsKICAgICAgICAgbV9zY29wZS5tX2Z1bmNEZWNsYXJhdGlvbnMtPmRh
dGEuYXBwZW5kKGRlY2wtPmJvZHkoKSk7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRM
aW5lLCBib2R5RW5kTGluZSk7CisgICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBi
b2R5RW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0dXJuIGRlY2w7CiAgICAg
fQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQmxvY2tTdGF0ZW1lbnQoaW50IGxpbmVOdW1i
ZXIsIEpTQzo6U291cmNlRWxlbWVudHMqIGVsZW1lbnRzLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5k
TGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCbG9ja1N0YXRlbWVudChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBKU0M6OlNvdXJjZUVsZW1lbnRzKiBlbGVtZW50cywgaW50
IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBCbG9ja05vZGUqIGJsb2Nr
ID0gbmV3IChtX2dsb2JhbERhdGEpIEJsb2NrTm9kZShsaW5lTnVtYmVyLCBlbGVtZW50cyk7Ci0g
ICAgICAgIGJsb2NrLT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgQmxvY2tO
b2RlKiBibG9jayA9IG5ldyAobV9nbG9iYWxEYXRhKSBCbG9ja05vZGUobG9jYXRpb24sIGVsZW1l
bnRzKTsKKyAgICAgICAgYmxvY2stPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9u
LmNvbHVtbik7CiAgICAgICAgIHJldHVybiBibG9jazsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnRO
b2RlKiBjcmVhdGVFeHByU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUV4cHJT
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIEV4cHJTdGF0ZW1lbnRO
b2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRXhwclN0YXRlbWVudE5vZGUobGluZU51
bWJlciwgZXhwcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQpOworICAgICAg
ICBFeHByU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEV4cHJTdGF0
ZW1lbnROb2RlKGxvY2F0aW9uLCBleHByKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQs
IGVuZCwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAK
LSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVJZlN0YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogdHJ1ZUJsb2NrLCBpbnQgc3Rh
cnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlSWZTdGF0ZW1lbnQoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3Rh
dGVtZW50Tm9kZSogdHJ1ZUJsb2NrLCBpbnQgc3RhcnQsIGludCBlbmQpCiAgICAgewotICAgICAg
ICBJZk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBJZk5vZGUobGluZU51bWJlciwg
Y29uZGl0aW9uLCB0cnVlQmxvY2spOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5k
KTsKKyAgICAgICAgSWZOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSWZOb2RlKGxv
Y2F0aW9uLCBjb25kaXRpb24sIHRydWVCbG9jayk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0
YXJ0LCBlbmQsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlSWZTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywgU3Rh
dGVtZW50Tm9kZSogZmFsc2VCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIHRydWVCbG9jaywgU3Rh
dGVtZW50Tm9kZSogZmFsc2VCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAg
ICAgSWZOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSWZFbHNlTm9kZShsaW5lTnVt
YmVyLCBjb25kaXRpb24sIHRydWVCbG9jaywgZmFsc2VCbG9jayk7Ci0gICAgICAgIHJlc3VsdC0+
c2V0TG9jKHN0YXJ0LCBlbmQpOworICAgICAgICBJZk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9i
YWxEYXRhKSBJZkVsc2VOb2RlKGxvY2F0aW9uLCBjb25kaXRpb24sIHRydWVCbG9jaywgZmFsc2VC
bG9jayk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGxvY2F0aW9uLmNvbHVt
bik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSog
Y3JlYXRlRm9yTG9vcChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVy
LCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5v
ZGUqIGNyZWF0ZUZvckxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGluaXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBFeHByZXNz
aW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQg
ZW5kKQogICAgIHsKLSAgICAgICAgRm9yTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEp
IEZvck5vZGUobGluZU51bWJlciwgaW5pdGlhbGl6ZXIsIGNvbmRpdGlvbiwgaXRlciwgc3RhdGVt
ZW50cyk7CisgICAgICAgIEZvck5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGb3JO
b2RlKGxvY2F0aW9uLCBpbml0aWFsaXplciwgY29uZGl0aW9uLCBpdGVyLCBzdGF0ZW1lbnRzKTsK
ICAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCk7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9ySW5Mb29wKGludCBsaW5l
TnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxp
emVyLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50
IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQsIGludCBpbml0U3RhcnQsIGludCBpbml0RW5kLCBp
bnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJ
bkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciog
aWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplciwgRXhwcmVzc2lvbk5vZGUqIGl0ZXIs
IFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5k
LCBpbnQgaW5pdFN0YXJ0LCBpbnQgaW5pdEVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUp
CiAgICAgewotICAgICAgICBGb3JJbk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBG
b3JJbk5vZGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCAqaWRlbnQsIGluaXRpYWxpemVyLCBp
dGVyLCBzdGF0ZW1lbnRzLCBpbml0U3RhcnQsIGluaXRTdGFydCAtIHN0YXJ0LCBpbml0RW5kIC0g
aW5pdFN0YXJ0KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsK
KyAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9ySW5Ob2Rl
KG1fZ2xvYmFsRGF0YSwgbG9jYXRpb24sICppZGVudCwgaW5pdGlhbGl6ZXIsIGl0ZXIsIHN0YXRl
bWVudHMsIGluaXRTdGFydCwgaW5pdFN0YXJ0IC0gc3RhcnQsIGluaXRFbmQgLSBpbml0U3RhcnQp
OworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNv
bHVtbik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGRpdm90
ICsgMSwgZW5kKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1l
bnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBs
aHMsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnRzLCBpbnQg
ZVN0YXJ0LCBpbnQgZURpdm90LCBpbnQgZUVuZCwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0
YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50
Tm9kZSogc3RhdGVtZW50cywgaW50IGVTdGFydCwgaW50IGVEaXZvdCwgaW50IGVFbmQsIGludCBz
dGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIEZvckluTm9kZSogcmVzdWx0ID0gbmV3ICht
X2dsb2JhbERhdGEpIEZvckluTm9kZShsaW5lTnVtYmVyLCBsaHMsIGl0ZXIsIHN0YXRlbWVudHMp
OwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAgICAgICAgRm9ySW5Ob2Rl
KiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9ySW5Ob2RlKGxvY2F0aW9uLCBsaHMsIGl0
ZXIsIHN0YXRlbWVudHMpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBsb2Nh
dGlvbi5jb2x1bW4pOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihyZXN1bHQsIGVTdGFy
dCwgZURpdm90LCBlRW5kKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBT
dGF0ZW1lbnROb2RlKiBjcmVhdGVFbXB0eVN0YXRlbWVudChpbnQgbGluZU51bWJlcikgeyByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIEVtcHR5U3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKTsgfQor
ICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUVtcHR5U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24pIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFbXB0eVN0YXRlbWVu
dE5vZGUobG9jYXRpb24pOyB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVWYXJTdGF0ZW1l
bnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBl
bmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlVmFyU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBl
bmQpCiAgICAgewogICAgICAgICBTdGF0ZW1lbnROb2RlKiByZXN1bHQ7CiAgICAgICAgIGlmICgh
ZXhwcikKLSAgICAgICAgICAgIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBFbXB0eVN0YXRl
bWVudE5vZGUobGluZU51bWJlcik7CisgICAgICAgICAgICByZXN1bHQgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgRW1wdHlTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKTsKICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFZhclN0YXRlbWVudE5vZGUobGluZU51
bWJlciwgZXhwcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQpOworICAgICAg
ICAgICAgcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFZhclN0YXRlbWVudE5vZGUobG9jYXRp
b24sIGV4cHIpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBsb2NhdGlvbi5j
b2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5v
ZGUqIGNyZWF0ZVJldHVyblN0YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHJlc3Npb24sIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5k
TGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHJlc3Npb24sIGludCBl
U3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAg
ICAgIFJldHVybk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZXR1cm5Ob2RlKGxp
bmVOdW1iZXIsIGV4cHJlc3Npb24pOworICAgICAgICBSZXR1cm5Ob2RlKiByZXN1bHQgPSBuZXcg
KG1fZ2xvYmFsRGF0YSkgUmV0dXJuTm9kZShsb2NhdGlvbiwgZXhwcmVzc2lvbik7CiAgICAgICAg
IHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAg
ICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5z
ZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUJyZWFrU3RhdGVt
ZW50KGludCBsaW5lTnVtYmVyLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwg
aW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQnJlYWtTdGF0ZW1lbnQoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBz
dGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQnJlYWtOb2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJlYWtOb2RlKG1fZ2xvYmFsRGF0YSwgbGluZU51bWJlcik7
CisgICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEJyZWFrTm9k
ZShtX2dsb2JhbERhdGEsIGxvY2F0aW9uKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24o
cmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFy
dExpbmUsIGVuZExpbmUpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExp
bmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0g
ICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGNv
bnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGlu
ZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQnJlYWtTdGF0ZW1lbnQo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogaWRlbnQs
IGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7
Ci0gICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEJyZWFrTm9k
ZShsaW5lTnVtYmVyLCAqaWRlbnQpOworICAgICAgICBCcmVha05vZGUqIHJlc3VsdCA9IG5ldyAo
bV9nbG9iYWxEYXRhKSBCcmVha05vZGUobG9jYXRpb24sICppZGVudCk7CiAgICAgICAgIHNldEV4
Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVz
dWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
c3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50
KGludCBsaW5lTnVtYmVyLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50
IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50IGVTdGFydCwgaW50IGVFbmQsIGludCBz
dGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQ29udGludWVOb2RlKiByZXN1
bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29udGludWVOb2RlKG1fZ2xvYmFsRGF0YSwgbGluZU51
bWJlcik7CisgICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEp
IENvbnRpbnVlTm9kZShtX2dsb2JhbERhdGEsIGxvY2F0aW9uKTsKICAgICAgICAgc2V0RXhjZXB0
aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQpOwotICAgICAgICByZXN1bHQt
PnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFy
dExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoaW50
IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgZVN0YXJ0LCBpbnQgZUVu
ZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRl
Q29udGludWVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBp
bnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0ID0gbmV3ICht
X2dsb2JhbERhdGEpIENvbnRpbnVlTm9kZShsaW5lTnVtYmVyLCAqaWRlbnQpOworICAgICAgICBD
b250aW51ZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBDb250aW51ZU5vZGUobG9j
YXRpb24sICppZGVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0
YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRM
aW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlv
bi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZVRyeVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgU3RhdGVtZW50Tm9kZSog
dHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJs
b2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2ssIGludCBzdGFydExpbmUsIGludCBlbmRM
aW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVRyeVN0YXRlbWVudChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29uc3QgSWRlbnRp
ZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZp
bmFsbHlCbG9jaywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBU
cnlOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgVHJ5Tm9kZShsaW5lTnVtYmVyLCB0
cnlCbG9jaywgKmlkZW50LCBjYXRjaEJsb2NrLCBmaW5hbGx5QmxvY2spOworICAgICAgICBUcnlO
b2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgVHJ5Tm9kZShsb2NhdGlvbiwgdHJ5Qmxv
Y2ssICppZGVudCwgY2F0Y2hCbG9jaywgZmluYWxseUJsb2NrKTsKICAgICAgICAgaWYgKGNhdGNo
QmxvY2spCiAgICAgICAgICAgICB1c2VzQ2F0Y2goKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
c3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBl
bmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVN3aXRjaFN0YXRlbWVudChpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIENsYXVzZUxpc3ROb2RlKiBmaXJzdENsYXVzZXMsIENh
c2VDbGF1c2VOb2RlKiBkZWZhdWx0Q2xhdXNlLCBDbGF1c2VMaXN0Tm9kZSogc2Vjb25kQ2xhdXNl
cywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRl
U3dpdGNoU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBleHByLCBDbGF1c2VMaXN0Tm9kZSogZmlyc3RDbGF1c2VzLCBDYXNlQ2xhdXNlTm9k
ZSogZGVmYXVsdENsYXVzZSwgQ2xhdXNlTGlzdE5vZGUqIHNlY29uZENsYXVzZXMsIGludCBzdGFy
dExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKICAgICAgICAgQ2FzZUJsb2NrTm9kZSogY2FzZXMg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ2FzZUJsb2NrTm9kZShmaXJzdENsYXVzZXMsIGRlZmF1bHRD
bGF1c2UsIHNlY29uZENsYXVzZXMpOwotICAgICAgICBTd2l0Y2hOb2RlKiByZXN1bHQgPSBuZXcg
KG1fZ2xvYmFsRGF0YSkgU3dpdGNoTm9kZShsaW5lTnVtYmVyLCBleHByLCBjYXNlcyk7Ci0gICAg
ICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIFN3aXRjaE5v
ZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBTd2l0Y2hOb2RlKGxvY2F0aW9uLCBleHBy
LCBjYXNlcyk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9j
YXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVXaGlsZVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0TGluZSwgaW50
IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlV2hpbGVTdGF0ZW1lbnQoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVu
dE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAg
ICAgICBXaGlsZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBXaGlsZU5vZGUobGlu
ZU51bWJlciwgZXhwciwgc3RhdGVtZW50KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lKTsKKyAgICAgICAgV2hpbGVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgV2hpbGVOb2RlKGxvY2F0aW9uLCBleHByLCBzdGF0ZW1lbnQpOworICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRG9XaGls
ZVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBFeHBy
ZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlRG9XaGlsZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBp
bnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIERvV2hpbGVOb2RlKiBy
ZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRG9XaGlsZU5vZGUobGluZU51bWJlciwgc3RhdGVt
ZW50LCBleHByKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsK
KyAgICAgICAgRG9XaGlsZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBEb1doaWxl
Tm9kZShsb2NhdGlvbiwgc3RhdGVtZW50LCBleHByKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
c3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUxhYmVsU3RhdGVtZW50KGlu
dCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgU3RhdGVtZW50Tm9kZSogc3Rh
dGVtZW50LCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlTGFi
ZWxTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRp
ZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0LCBpbnQgZW5k
KQogICAgIHsKLSAgICAgICAgTGFiZWxOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkg
TGFiZWxOb2RlKGxpbmVOdW1iZXIsICppZGVudCwgc3RhdGVtZW50KTsKKyAgICAgICAgTGFiZWxO
b2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTGFiZWxOb2RlKGxvY2F0aW9uLCAqaWRl
bnQsIHN0YXRlbWVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3Rh
cnQsIGVuZCwgZW5kKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVXaXRoU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnQsIGludCBlbmQs
IGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVdp
dGhTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0LCBpbnQgZW5kLCBp
bnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAgICAgICAgIHVzZXNXaXRoKCk7Ci0g
ICAgICAgIFdpdGhOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgV2l0aE5vZGUobGlu
ZU51bWJlciwgZXhwciwgc3RhdGVtZW50LCBlbmQsIGVuZCAtIHN0YXJ0KTsKLSAgICAgICAgcmVz
dWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgV2l0aE5vZGUqIHJlc3Vs
dCA9IG5ldyAobV9nbG9iYWxEYXRhKSBXaXRoTm9kZShsb2NhdGlvbiwgZXhwciwgc3RhdGVtZW50
LCBlbmQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBl
bmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0g
ICAgCiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlVGhyb3dTdGF0ZW1lbnQoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBz
dGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVRocm93U3Rh
dGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBl
eHByLCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAg
IHsKLSAgICAgICAgVGhyb3dOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgVGhyb3dO
b2RlKGxpbmVOdW1iZXIsIGV4cHIpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUs
IGVuZExpbmUpOworICAgICAgICBUaHJvd05vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRh
KSBUaHJvd05vZGUobG9jYXRpb24sIGV4cHIpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFy
dExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxv
Y2F0aW9uKHJlc3VsdCwgc3RhcnQsIGVuZCwgZW5kKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRGVidWdnZXIoaW50IGxpbmVO
dW1iZXIsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZURlYnVnZ2VyKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBzdGFydExp
bmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgRGVidWdnZXJTdGF0ZW1lbnROb2RlKiBy
ZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVidWdnZXJTdGF0ZW1lbnROb2RlKGxpbmVOdW1i
ZXIpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAg
ICBEZWJ1Z2dlclN0YXRlbWVudE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBEZWJ1
Z2dlclN0YXRlbWVudE5vZGUobG9jYXRpb24pOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFy
dExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7
CiAgICAgfQogICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNvbnN0U3RhdGVtZW50KGlu
dCBsaW5lTnVtYmVyLCBDb25zdERlY2xOb2RlKiBkZWNscywgaW50IHN0YXJ0TGluZSwgaW50IGVu
ZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29uc3RTdGF0ZW1lbnQoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQ29uc3REZWNsTm9kZSogZGVjbHMsIGludCBzdGFydExp
bmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQ29uc3RTdGF0ZW1lbnROb2RlKiByZXN1
bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3RTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIsIGRl
Y2xzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAg
ICAgQ29uc3RTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3RT
dGF0ZW1lbnROb2RlKGxvY2F0aW9uLCBkZWNscyk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0
YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKLSAgICBDb25zdERlY2xOb2RlKiBhcHBlbmRDb25zdERlY2woaW50IGxpbmVO
dW1iZXIsIENvbnN0RGVjbE5vZGUqIHRhaWwsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIEV4cHJl
c3Npb25Ob2RlKiBpbml0aWFsaXplcikKKyAgICBDb25zdERlY2xOb2RlKiBhcHBlbmRDb25zdERl
Y2woY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQ29uc3REZWNsTm9kZSogdGFpbCwg
Y29uc3QgSWRlbnRpZmllciogbmFtZSwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyKQogICAg
IHsKLSAgICAgICAgQ29uc3REZWNsTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENv
bnN0RGVjbE5vZGUobGluZU51bWJlciwgKm5hbWUsIGluaXRpYWxpemVyKTsKKyAgICAgICAgQ29u
c3REZWNsTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnN0RGVjbE5vZGUobG9j
YXRpb24sICpuYW1lLCBpbml0aWFsaXplcik7CiAgICAgICAgIGlmICh0YWlsKQogICAgICAgICAg
ICAgdGFpbC0+bV9uZXh0ID0gcmVzdWx0OwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTEx
LDcgKzUxMSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9zY29wZS5tX3ZhckRlY2xhcmF0aW9ucy0+
ZGF0YS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaWRlbnQsIGF0dHJzKSk7CiAgICAgfQogCi0gICAg
RXhwcmVzc2lvbk5vZGUqIGNvbWJpbmVDb21tYU5vZGVzKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogbGlzdCwgRXhwcmVzc2lvbk5vZGUqIGluaXQpCisgICAgRXhwcmVzc2lvbk5vZGUq
IGNvbWJpbmVDb21tYU5vZGVzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBsaXN0LCBFeHByZXNzaW9uTm9kZSogaW5pdCkKICAgICB7CiAgICAgICAgIGlm
ICghbGlzdCkKICAgICAgICAgICAgIHJldHVybiBpbml0OwpAQCAtNTE5LDcgKzUxOSw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIHN0YXRpY19jYXN0PENvbW1hTm9kZSo+KGxpc3QpLT5hcHBlbmQo
aW5pdCk7CiAgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAgfQotICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbW1hTm9kZShsaW5lTnVtYmVyLCBsaXN0LCBpbml0KTsK
KyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBDb21tYU5vZGUobG9jYXRpb24sIGxp
c3QsIGluaXQpOwogICAgIH0KIAogICAgIGludCBldmFsQ291bnQoKSBjb25zdCB7IHJldHVybiBt
X2V2YWxDb3VudDsgfQpAQCAtNTQ3LDEwICs1NDcsMTAgQEAgcHVibGljOgogICAgICAgICBBU1NF
UlQob3BlcmFuZFN0YWNrRGVwdGggPj0gMCk7CiAgICAgICAgIG1fYmluYXJ5T3BlcmFuZFN0YWNr
LnJlc2l6ZShtX2JpbmFyeU9wZXJhbmRTdGFjay5zaXplKCkgLSBhbW91bnQpOwogICAgIH0KLSAg
ICB2b2lkIGFwcGVuZEJpbmFyeU9wZXJhdGlvbihpbnQgbGluZU51bWJlciwgaW50JiBvcGVyYW5k
U3RhY2tEZXB0aCwgaW50JiwgY29uc3QgQmluYXJ5T3BlcmFuZCYgbGhzLCBjb25zdCBCaW5hcnlP
cGVyYW5kJiByaHMpCisgICAgdm9pZCBhcHBlbmRCaW5hcnlPcGVyYXRpb24oY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50JiwgY29uc3Qg
QmluYXJ5T3BlcmFuZCYgbGhzLCBjb25zdCBCaW5hcnlPcGVyYW5kJiByaHMpCiAgICAgewogICAg
ICAgICBvcGVyYW5kU3RhY2tEZXB0aCsrOwotICAgICAgICBtX2JpbmFyeU9wZXJhbmRTdGFjay5h
cHBlbmQoc3RkOjptYWtlX3BhaXIobWFrZUJpbmFyeU5vZGUobGluZU51bWJlciwgbV9iaW5hcnlP
cGVyYXRvclN0YWNrLmxhc3QoKS5maXJzdCwgbGhzLCByaHMpLCBCaW5hcnlPcEluZm8obGhzLnNl
Y29uZCwgcmhzLnNlY29uZCkpKTsKKyAgICAgICAgbV9iaW5hcnlPcGVyYW5kU3RhY2suYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKG1ha2VCaW5hcnlOb2RlKGxvY2F0aW9uLCBtX2JpbmFyeU9wZXJhdG9y
U3RhY2subGFzdCgpLmZpcnN0LCBsaHMsIHJocyksIEJpbmFyeU9wSW5mbyhsaHMuc2Vjb25kLCBy
aHMuc2Vjb25kKSkpOwogICAgIH0KICAgICB2b2lkIG9wZXJhdG9yU3RhY2tBcHBlbmQoaW50JiBv
cGVyYXRvclN0YWNrRGVwdGgsIGludCBvcCwgaW50IHByZWNlZGVuY2UpCiAgICAgewpAQCAtNTky
LDkgKzU5Miw5IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmFwcGVu
ZChBc3NpZ25tZW50SW5mbyhub2RlLCBzdGFydCwgZGl2b3QsIGFzc2lnbm1lbnRDb3VudCwgb3Ap
KTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXNzaWdubWVudChpbnQgbGlu
ZU51bWJlciwgaW50JiBhc3NpZ25tZW50U3RhY2tEZXB0aCwgRXhwcmVzc2lvbk5vZGUqIHJocywg
aW50IGluaXRpYWxBc3NpZ25tZW50Q291bnQsIGludCBjdXJyZW50QXNzaWdubWVudENvdW50LCBp
bnQgbGFzdFRva2VuRW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBc3NpZ25tZW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCYgYXNzaWdubWVudFN0YWNrRGVwdGgs
IEV4cHJlc3Npb25Ob2RlKiByaHMsIGludCBpbml0aWFsQXNzaWdubWVudENvdW50LCBpbnQgY3Vy
cmVudEFzc2lnbm1lbnRDb3VudCwgaW50IGxhc3RUb2tlbkVuZCkKICAgICB7Ci0gICAgICAgIEV4
cHJlc3Npb25Ob2RlKiByZXN1bHQgPSBtYWtlQXNzaWduTm9kZShsaW5lTnVtYmVyLCBtX2Fzc2ln
bm1lbnRJbmZvU3RhY2subGFzdCgpLm1fbm9kZSwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3Qo
KS5tX29wLCByaHMsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9pbml0QXNzaWdubWVu
dHMgIT0gaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3Qo
KS5tX2luaXRBc3NpZ25tZW50cyAhPSBjdXJyZW50QXNzaWdubWVudENvdW50LCBtX2Fzc2lnbm1l
bnRJbmZvU3RhY2subGFzdCgpLm1fc3RhcnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCku
bV9kaXZvdCArIDEsIGxhc3RUb2tlbkVuZCk7CisgICAgICAgIEV4cHJlc3Npb25Ob2RlKiByZXN1
bHQgPSBtYWtlQXNzaWduTm9kZShsb2NhdGlvbiwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3Qo
KS5tX25vZGUsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9vcCwgcmhzLCBtX2Fzc2ln
bm1lbnRJbmZvU3RhY2subGFzdCgpLm1faW5pdEFzc2lnbm1lbnRzICE9IGluaXRpYWxBc3NpZ25t
ZW50Q291bnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9pbml0QXNzaWdubWVudHMg
IT0gY3VycmVudEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50SW5mb1N0YWNrLmxhc3QoKS5t
X3N0YXJ0LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fZGl2b3QgKyAxLCBsYXN0VG9r
ZW5FbmQpOwogICAgICAgICBtX2Fzc2lnbm1lbnRJbmZvU3RhY2sucmVtb3ZlTGFzdCgpOwogICAg
ICAgICBhc3NpZ25tZW50U3RhY2tEZXB0aC0tOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAt
NjM1LDkgKzYzNSw5IEBAIHByaXZhdGU6CiAgICAgICAgIG1fZXZhbENvdW50Kys7CiAgICAgICAg
IG1fc2NvcGUubV9mZWF0dXJlcyB8PSBFdmFsRmVhdHVyZTsKICAgICB9Ci0gICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZU51bWJlcihpbnQgbGluZU51bWJlciwgZG91YmxlIGQpCisgICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZU51bWJlcihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBk
b3VibGUgZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTnVtYmVy
Tm9kZShsaW5lTnVtYmVyLCBkKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBO
dW1iZXJOb2RlKGxvY2F0aW9uLCBkKTsKICAgICB9CiAgICAgCiAgICAgSlNHbG9iYWxEYXRhKiBt
X2dsb2JhbERhdGE7CkBAIC02NTAsMzMgKzY1MCwzMyBAQCBwcml2YXRlOgogICAgIGludCBtX2V2
YWxDb3VudDsKIH07CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlVHlwZU9mTm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCitFeHByZXNzaW9uTm9kZSog
QVNUQnVpbGRlcjo6bWFrZVR5cGVPZk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCiB7CiAgICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUo
KSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVO
b2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVHlwZU9mUmVz
b2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpKTsKKyAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUeXBlT2ZSZXNvbHZlTm9kZShsb2NhdGlvbiwgcmVzb2x2
ZS0+aWRlbnRpZmllcigpKTsKICAgICB9Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBU
eXBlT2ZWYWx1ZU5vZGUobGluZU51bWJlciwgZXhwcik7CisgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBUeXBlT2ZWYWx1ZU5vZGUobG9jYXRpb24sIGV4cHIpOwogfQogCi1FeHByZXNzaW9u
Tm9kZSogQVNUQnVpbGRlcjo6bWFrZURlbGV0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25O
b2RlKiBBU1RCdWlsZGVyOjptYWtlRGVsZXRlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBl
bmQpCiB7CiAgICAgaWYgKCFleHByLT5pc0xvY2F0aW9uKCkpCi0gICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgRGVsZXRlVmFsdWVOb2RlKGxpbmVOdW1iZXIsIGV4cHIpOworICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZVZhbHVlTm9kZShsb2NhdGlvbiwgZXhw
cik7CiAgICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9k
ZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlUmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVz
b2x2ZS0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZVJlc29sdmVOb2RlKGxvY2F0
aW9uLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CiAgICAgfQogICAgIGlmIChleHByLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewog
ICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tl
dEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IERlbGV0ZUJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+
c3Vic2NyaXB0KCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlQnJhY2tldE5vZGUobG9jYXRpb24sIGJy
YWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0
LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIEFTU0VSVChleHByLT5pc0RvdEFjY2Vzc29yTm9k
ZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19jYXN0PERvdEFjY2Vzc29y
Tm9kZSo+KGV4cHIpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlRG90Tm9k
ZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRpdm90LCBkaXZv
dCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBE
ZWxldGVEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGRp
dm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBB
U1RCdWlsZGVyOjptYWtlTmVnYXRlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IG4pCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU5lZ2F0ZU5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIG4pCiB7CiAgICAgaWYgKG4t
PmlzTnVtYmVyKCkpIHsKICAgICAgICAgTnVtYmVyTm9kZSogbnVtYmVyTm9kZSA9IHN0YXRpY19j
YXN0PE51bWJlck5vZGUqPihuKTsKQEAgLTY4NCwxMjggKzY4NCwxMjggQEAgRXhwcmVzc2lvbk5v
ZGUqIEFTVEJ1aWxkZXI6Om1ha2VOZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogbikKICAgICAgICAgcmV0dXJuIG51bWJlck5vZGU7CiAgICAgfQogCi0gICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBOZWdhdGVOb2RlKGxpbmVOdW1iZXIsIG4pOworICAgIHJldHVy
biBuZXcgKG1fZ2xvYmFsRGF0YSkgTmVnYXRlTm9kZShsb2NhdGlvbiwgbik7CiB9CiAKLUV4cHJl
c3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0d2lzZU5vdE5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBleHByKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VC
aXR3aXNlTm90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogZXhwcikKIHsKICAgICBpZiAoZXhwci0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB+dG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2Rl
Kj4oZXhwciktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdHdp
c2VOb3ROb2RlKGxpbmVOdW1iZXIsIGV4cHIpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVy
KGxvY2F0aW9uLCB+dG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwciktPnZhbHVl
KCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdHdpc2VOb3ROb2RlKGxvY2F0
aW9uLCBleHByKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VNdWx0Tm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWls
ZGVyOjptYWtlTXVsdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cykKIHsKICAgICBleHByMSA9IGV4cHIxLT5zdHJpcFVuYXJ5UGx1cygpOwogICAgIGV4
cHIyID0gZXhwcjItPnN0cmlwVW5hcnlQbHVzKCk7CiAKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVy
KCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGlu
ZU51bWJlciwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAqIHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOworICAgICAgICByZXR1cm4gY3Jl
YXRlTnVtYmVyKGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1
ZSgpICogc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7CiAKICAgICBp
ZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+
dmFsdWUoKSA9PSAxKQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1
c05vZGUobGluZU51bWJlciwgZXhwcjIpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIFVuYXJ5UGx1c05vZGUobG9jYXRpb24sIGV4cHIyKTsKIAogICAgIGlmIChleHByMi0+aXNO
dW1iZXIoKSAmJiBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpID09IDEp
Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQbHVzTm9kZShsaW5lTnVt
YmVyLCBleHByMSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQbHVz
Tm9kZShsb2NhdGlvbiwgZXhwcjEpOwogCi0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBN
dWx0Tm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOwor
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTXVsdE5vZGUobG9jYXRpb24sIGV4cHIxLCBl
eHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWls
ZGVyOjptYWtlRGl2Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Np
b25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGl2Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0cmlwVW5hcnlQ
bHVzKCk7CiAgICAgZXhwcjIgPSBleHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKIAogICAgIGlmIChl
eHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52
YWx1ZSgpIC8gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSk7Ci0gICAg
cmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEaXZOb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHBy
MiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobG9j
YXRpb24sIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgLyBzdGF0aWNf
Y2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKKyAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIERpdk5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTW9kTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlTW9kTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAgZXhwcjIgPSBl
eHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKICAgICAKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkg
JiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51
bWJlciwgZm1vZChzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpLCBzdGF0
aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7Ci0gICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBNb2ROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobG9jYXRpb24sIGZtb2Qo
c3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSwgc3RhdGljX2Nhc3Q8TnVt
YmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgTW9kTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
IH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBZGROb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBZGRO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAg
ICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICBy
ZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihl
eHByMSktPnZhbHVlKCkgKyBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgp
KTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFkZE5vZGUobGluZU51bWJlciwgZXhw
cjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51
bWJlcihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAr
IHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOworICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgQWRkTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VTdWJO
b2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1
aWxkZXI6Om1ha2VTdWJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCiB7CiAgICAgZXhwcjEgPSBleHByMS0+c3RyaXBVbmFyeVBsdXMoKTsKICAgICBl
eHByMiA9IGV4cHIyLT5zdHJpcFVuYXJ5UGx1cygpOwogCiAgICAgaWYgKGV4cHIxLT5pc051bWJl
cigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxp
bmVOdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgLSBzdGF0
aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKLSAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIFN1Yk5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgc3RhdGlj
X2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAtIHN0YXRpY19jYXN0PE51bWJlck5v
ZGUqPihleHByMiktPnZhbHVlKCkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgU3Vi
Tm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAot
RXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VMZWZ0U2hpZnROb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VMZWZ0
U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
CiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAg
ICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8
TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPDwgKHRvVUludDMyKHN0YXRpY19jYXN0PE51
bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOwotICAgIHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgTGVmdFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0
SGFzQXNzaWdubWVudHMpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxvY2F0aW9uLCB0
b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpIDw8ICh0b1VJ
bnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSAmIDB4MWYpKTsK
KyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExlZnRTaGlmdE5vZGUobG9jYXRpb24sIGV4
cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBB
U1RCdWlsZGVyOjptYWtlUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVJpZ2h0U2hpZnROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4
cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3Jl
YXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4
cHIxKS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHBy
MiktPnZhbHVlKCkpICYgMHgxZikpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmln
aHRTaGlmdE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgdG9JbnQzMihzdGF0aWNf
Y2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA+PiAodG9VSW50MzIoc3RhdGljX2Nh
c3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7CisgICAgcmV0dXJuIG5l
dyAobV9nbG9iYWxEYXRhKSBSaWdodFNoaWZ0Tm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1h
a2VVUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNz
aW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVVSaWdodFNoaWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlmIChleHByMS0+aXNOdW1i
ZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihs
aW5lTnVtYmVyLCB0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1
ZSgpKSA+PiAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUo
KSkgJiAweDFmKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbnNpZ25lZFJpZ2h0
U2hpZnROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobG9jYXRpb24sIHRvVUludDMyKHN0YXRpY19j
YXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpID4+ICh0b1VJbnQzMihzdGF0aWNfY2Fz
dDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSAmIDB4MWYpKTsKKyAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGUobG9jYXRpb24sIGV4cHIxLCBl
eHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWls
ZGVyOjptYWtlQml0T3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRPck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkg
JiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobGluZU51
bWJlciwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSB8
IHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOwotICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0T3JOb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBl
eHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIo
bG9jYXRpb24sIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUo
KSkgfCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsK
KyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdE9yTm9kZShsb2NhdGlvbiwgZXhwcjEs
IGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1
aWxkZXI6Om1ha2VCaXRBbmROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRBbmROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJl
cigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxp
bmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUo
KSkgJiB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpKTsK
LSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdEFuZE5vZGUobGluZU51bWJlciwgZXhw
cjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51
bWJlcihsb2NhdGlvbiwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52
YWx1ZSgpKSAmIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUo
KSkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0QW5kTm9kZShsb2NhdGlvbiwg
ZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUq
IEFTVEJ1aWxkZXI6Om1ha2VCaXRYT3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRYT3JOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5p
c051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVt
YmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+
dmFsdWUoKSkgXiB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVl
KCkpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdFhPck5vZGUobGluZU51bWJl
ciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNy
ZWF0ZU51bWJlcihsb2NhdGlvbiwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhw
cjEpLT52YWx1ZSgpKSBeIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+
dmFsdWUoKSkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0WE9yTm9kZShsb2Nh
dGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lv
bk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZnVuYywgQXJndW1lbnRzTm9kZSogYXJncywgaW50IHN0YXJ0LCBpbnQg
ZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZUZ1bmN0aW9u
Q2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGZ1bmMsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5k
KQogewogICAgIGlmICghZnVuYy0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShsaW5lTnVtYmVyLCBmdW5jLCBhcmdz
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShsb2NhdGlvbiwgZnVuYywgYXJn
cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBpZiAoZnVuYy0+aXNS
ZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nh
c3Q8UmVzb2x2ZU5vZGUqPihmdW5jKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRp
ZmllciA9IHJlc29sdmUtPmlkZW50aWZpZXIoKTsKICAgICAgICAgaWYgKGlkZW50aWZpZXIgPT0g
bV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFsKSB7CiAgICAgICAgICAgICB1c2VzRXZh
bCgpOwotICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFdmFsRnVuY3Rpb25D
YWxsTm9kZShsaW5lTnVtYmVyLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2
b3QpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFdmFsRnVuY3Rpb25D
YWxsTm9kZShsb2NhdGlvbiwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9u
Q2FsbFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50aWZpZXIsIGFyZ3MsIGRpdm90LCBkaXZv
dCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUobG9jYXRpb24sIGlkZW50aWZpZXIsIGFyZ3MsIGRp
dm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIGlmIChmdW5jLT5p
c0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBi
cmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwotICAgICAg
ICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5j
dGlvbkNhbGxCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQt
PnN1YnNjcmlwdCgpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwor
ICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRh
KSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFj
a2V0LT5zdWJzY3JpcHQoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
KTsKICAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJhY2tldC0+ZGl2b3QoKSwg
YnJhY2tldC0+ZW5kT2Zmc2V0KCkpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CkBAIC04
MTMsMTE4ICs4MTMsMTE4IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRnVuY3Rp
b25DYWxsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqCiAgICAgRG90QWNjZXNz
b3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihmdW5jKTsKICAgICBG
dW5jdGlvbkNhbGxEb3ROb2RlKiBub2RlOwogICAgIGlmIChkb3QtPmlkZW50aWZpZXIoKSA9PSBt
X2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmNhbGwpCi0gICAgICAgIG5vZGUgPSBuZXcgKG1f
Z2xvYmFsRGF0YSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNl
KCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0g
ZGl2b3QpOworICAgICAgICBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIENhbGxGdW5jdGlvbkNh
bGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3Ms
IGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgZWxzZSBpZiAoZG90LT5p
ZGVudGlmaWVyKCkgPT0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5hcHBseSkKLSAgICAg
ICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUobGlu
ZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2
b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBub2RlID0gbmV3IChtX2dsb2JhbERh
dGEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+
aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwog
ICAgIGVsc2UKLSAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxE
b3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncywg
ZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgbm9kZSA9IG5ldyAo
bV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwg
ZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZv
dCk7CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5kaXZvdCgpLCBkb3QtPmVu
ZE9mZnNldCgpKTsKICAgICByZXR1cm4gbm9kZTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1
aWxkZXI6Om1ha2VCaW5hcnlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgdG9rZW4sIHBhaXI8RXhw
cmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+IGxocywgcGFpcjxFeHByZXNzaW9uTm9kZSosIEJp
bmFyeU9wSW5mbz4gcmhzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaW5hcnlO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCB0b2tlbiwgcGFpcjxFeHBy
ZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4gbGhzLCBwYWlyPEV4cHJlc3Npb25Ob2RlKiwgQmlu
YXJ5T3BJbmZvPiByaHMpCiB7CiAgICAgc3dpdGNoICh0b2tlbikgewogICAgIGNhc2UgT1I6Ci0g
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9naWNhbE9wTm9kZShsaW5lTnVtYmVy
LCBsaHMuZmlyc3QsIHJocy5maXJzdCwgT3BMb2dpY2FsT3IpOworICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIExvZ2ljYWxPcE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZp
cnN0LCBPcExvZ2ljYWxPcik7CiAKICAgICBjYXNlIEFORDoKLSAgICAgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBMb2dpY2FsT3BOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZp
cnN0LCBPcExvZ2ljYWxBbmQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExv
Z2ljYWxPcE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxBbmQp
OwogCiAgICAgY2FzZSBCSVRPUjoKLSAgICAgICAgcmV0dXJuIG1ha2VCaXRPck5vZGUobGluZU51
bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7Cisg
ICAgICAgIHJldHVybiBtYWtlQml0T3JOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJz
dCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgQklUWE9SOgotICAgICAg
ICByZXR1cm4gbWFrZUJpdFhPck5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3Qs
IHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlQml0WE9yTm9k
ZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVu
dCk7CiAKICAgICBjYXNlIEJJVEFORDoKLSAgICAgICAgcmV0dXJuIG1ha2VCaXRBbmROb2RlKGxp
bmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQp
OworICAgICAgICByZXR1cm4gbWFrZUJpdEFuZE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhz
LmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBFUUVROgotICAg
ICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVxdWFsTm9kZShsaW5lTnVtYmVyLCBsaHMu
Zmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFcXVhbE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhz
LmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBORToKLSAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOb3RFcXVhbE5vZGUobGluZU51bWJlciwgbGhz
LmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTm90RXF1YWxOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3Qs
IHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgU1RSRVE6
Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgU3RyaWN0RXF1YWxOb2RlKGxpbmVO
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN0cmljdEVxdWFsTm9kZShsb2NhdGlv
biwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAg
ICBjYXNlIFNUUk5FUToKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOb3RTdHJp
Y3RFcXVhbE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQu
aGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTm90U3Ry
aWN0RXF1YWxOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5o
YXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgTFQ6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgTGVzc05vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5z
ZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
TGVzc05vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fz
c2lnbm1lbnQpOwogCiAgICAgY2FzZSBHVDoKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBHcmVhdGVyTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNl
Y29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBH
cmVhdGVyTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFz
QXNzaWdubWVudCk7CiAKICAgICBjYXNlIExFOgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIExlc3NFcU5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5z
ZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
TGVzc0VxTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFz
QXNzaWdubWVudCk7CiAKICAgICBjYXNlIEdFOgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIEdyZWF0ZXJFcU5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJo
cy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgR3JlYXRlckVxTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNv
bmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIElOU1RBTkNFT0Y6IHsKLSAgICAgICAgSW5z
dGFuY2VPZk5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSW5zdGFuY2VPZk5vZGUobGlu
ZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7
CisgICAgICAgIEluc3RhbmNlT2ZOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEluc3Rh
bmNlT2ZOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgbGhzLnNlY29u
ZC5zdGFydCwgcmhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5lbmQpOwogICAgICAgICByZXR1
cm4gbm9kZTsKICAgICB9CiAKICAgICBjYXNlIElOVE9LRU46IHsKLSAgICAgICAgSW5Ob2RlKiBu
b2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEluTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJo
cy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgSW5Ob2RlKiBub2Rl
ID0gbmV3IChtX2dsb2JhbERhdGEpIEluTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmly
c3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0
aW9uKG5vZGUsIGxocy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQu
ZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCiAgICAgY2FzZSBMU0hJRlQ6Ci0g
ICAgICAgIHJldHVybiBtYWtlTGVmdFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJo
cy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VM
ZWZ0U2hpZnROb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5o
YXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgUlNISUZUOgotICAgICAgICByZXR1cm4gbWFrZVJp
Z2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25k
Lmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZVJpZ2h0U2hpZnROb2RlKGxvY2F0
aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAog
ICAgIGNhc2UgVVJTSElGVDoKLSAgICAgICAgcmV0dXJuIG1ha2VVUmlnaHRTaGlmdE5vZGUobGlu
ZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7
CisgICAgICAgIHJldHVybiBtYWtlVVJpZ2h0U2hpZnROb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3Qs
IHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgUExVUzoK
LSAgICAgICAgcmV0dXJuIG1ha2VBZGROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZp
cnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZUFkZE5v
ZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1l
bnQpOwogCiAgICAgY2FzZSBNSU5VUzoKLSAgICAgICAgcmV0dXJuIG1ha2VTdWJOb2RlKGxpbmVO
dW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwor
ICAgICAgICByZXR1cm4gbWFrZVN1Yk5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0
LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBUSU1FUzoKLSAgICAgICAg
cmV0dXJuIG1ha2VNdWx0Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhz
LnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VNdWx0Tm9kZShsb2Nh
dGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAK
ICAgICBjYXNlIERJVklERToKLSAgICAgICAgcmV0dXJuIG1ha2VEaXZOb2RlKGxpbmVOdW1iZXIs
IGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAg
ICByZXR1cm4gbWFrZURpdk5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMu
c2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBNT0Q6Ci0gICAgICAgIHJldHVybiBt
YWtlTW9kTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5o
YXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VNb2ROb2RlKGxvY2F0aW9uLCBsaHMu
Zmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKICAgICB9CiAgICAg
Q1JBU0goKTsKICAgICByZXR1cm4gMDsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6
Om1ha2VBc3NpZ25Ob2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbG9jLCBPcGVy
YXRvciBvcCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGJvb2wgbG9jSGFzQXNzaWdubWVudHMsIGJv
b2wgZXhwckhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4
cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogbG9jLCBPcGVyYXRvciBvcCwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIsIGJvb2wgbG9jSGFzQXNzaWdubWVudHMsIGJvb2wgZXhwckhhc0Fzc2ln
bm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKIHsKICAgICBpZiAoIWxvYy0+
aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnbkVy
cm9yTm9kZShsaW5lTnVtYmVyLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnbkVycm9yTm9kZShsb2NhdGlv
biwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKIAogICAgIGlmIChsb2MtPmlz
UmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19j
YXN0PFJlc29sdmVOb2RlKj4obG9jKTsKICAgICAgICAgaWYgKG9wID09IE9wRXF1YWwpIHsKICAg
ICAgICAgICAgIGlmIChleHByLT5pc0Z1bmNFeHByTm9kZSgpKQogICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGV4cHIpLT5ib2R5KCktPnNldEluZmVycmVkTmFtZShy
ZXNvbHZlLT5pZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5v
ZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVz
b2x2ZS0+aWRlbnRpZmllcigpLCBleHByKTsKKyAgICAgICAgICAgIEFzc2lnblJlc29sdmVOb2Rl
KiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnblJlc29sdmVOb2RlKGxvY2F0aW9uLCBy
ZXNvbHZlLT5pZGVudGlmaWVyKCksIGV4cHIpOwogICAgICAgICAgICAgc2V0RXhjZXB0aW9uTG9j
YXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICAgICAgcmV0dXJuIG5vZGU7
CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5
UmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwg
ZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlSZXNvbHZlTm9kZShs
b2NhdGlvbiwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1l
bnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBpZiAo
bG9jLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JO
b2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGxvYyk7CiAg
ICAgICAgIGlmIChvcCA9PSBPcEVxdWFsKQotICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBBc3NpZ25CcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJy
YWNrZXQtPnN1YnNjcmlwdCgpLCBleHByLCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhhc0Fzc2ln
bm1lbnRzLCBicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5kaXZvdCgpIC0gc3RhcnQsIGVuZCAt
IGJyYWNrZXQtPmRpdm90KCkpOwotICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUqIG5vZGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1vZGlmeUJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGJy
YWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBleHByLCBsb2NIYXNBc3Np
Z25tZW50cywgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0g
ZGl2b3QpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25CcmFj
a2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwg
ZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50cywgYnJhY2tldC0+ZGl2
b3QoKSwgYnJhY2tldC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBicmFja2V0LT5kaXZvdCgpKTsK
KyAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEp
IFJlYWRNb2RpZnlCcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0
LT5zdWJzY3JpcHQoKSwgb3AsIGV4cHIsIGxvY0hhc0Fzc2lnbm1lbnRzLCBleHBySGFzQXNzaWdu
bWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgICAgIG5vZGUt
PnNldFN1YmV4cHJlc3Npb25JbmZvKGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPmVuZE9mZnNl
dCgpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQpAQCAtOTMzLDU1ICs5MzMsNTUgQEAg
RXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogbG9jLAogICAgIGlmIChvcCA9PSBPcEVxdWFsKSB7CiAgICAgICAg
IGlmIChleHByLT5pc0Z1bmNFeHByTm9kZSgpKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RnVu
Y0V4cHJOb2RlKj4oZXhwciktPmJvZHkoKS0+c2V0SW5mZXJyZWROYW1lKGRvdC0+aWRlbnRpZmll
cigpKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25Eb3ROb2RlKGxp
bmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhhc0Fz
c2lnbm1lbnRzLCBkb3QtPmRpdm90KCksIGRvdC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBkb3Qt
PmRpdm90KCkpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnbkRvdE5v
ZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgZXhwciwgZXhwckhh
c0Fzc2lnbm1lbnRzLCBkb3QtPmRpdm90KCksIGRvdC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBk
b3QtPmRpdm90KCkpOwogICAgIH0KIAotICAgIFJlYWRNb2RpZnlEb3ROb2RlKiBub2RlID0gbmV3
IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgp
LCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3NpZ25tZW50cywgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICBSZWFkTW9kaWZ5RG90Tm9kZSogbm9k
ZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5RG90Tm9kZShsb2NhdGlvbiwgZG90LT5i
YXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBk
aXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1YmV4cHJl
c3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5lbmRPZmZzZXQoKSk7CiAgICAgcmV0dXJuIG5v
ZGU7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUHJlZml4Tm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQs
IGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUHJl
Zml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwciwgT3BlcmF0b3Igb3AsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogewogICAg
IGlmICghZXhwci0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIFByZWZpeEVycm9yTm9kZShsaW5lTnVtYmVyLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQs
IGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhF
cnJvck5vZGUobG9jYXRpb24sIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3Qp
OwogCiAgICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9k
ZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4UmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVz
b2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90
KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhSZXNvbHZlTm9kZShs
b2NhdGlvbiwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQs
IGVuZCAtIGRpdm90KTsKICAgICB9CiAgICAgaWYgKGV4cHItPmlzQnJhY2tldEFjY2Vzc29yTm9k
ZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNrZXQgPSBzdGF0aWNfY2Fz
dDxCcmFja2V0QWNjZXNzb3JOb2RlKj4oZXhwcik7Ci0gICAgICAgIFByZWZpeEJyYWNrZXROb2Rl
KiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeEJyYWNrZXROb2RlKGxpbmVOdW1iZXIs
IGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBkaXZvdCwgZGl2b3Qg
LSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBQcmVmaXhCcmFja2V0Tm9kZSogbm9kZSA9
IG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhCcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+
YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBl
bmQgLSBkaXZvdCk7CiAgICAgICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGJyYWNrZXQt
PmRpdm90KCksIGJyYWNrZXQtPnN0YXJ0T2Zmc2V0KCkpOwogICAgICAgICByZXR1cm4gbm9kZTsK
ICAgICB9CiAgICAgQVNTRVJUKGV4cHItPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFj
Y2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZXhwcik7Ci0g
ICAgUHJlZml4RG90Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhEb3ROb2Rl
KGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90LCBk
aXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgUHJlZml4RG90Tm9kZSogbm9kZSA9IG5l
dyAobV9nbG9iYWxEYXRhKSBQcmVmaXhEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90
LT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwog
ICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5zdGFydE9m
ZnNldCgpKTsKICAgICByZXR1cm4gbm9kZTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxk
ZXI6Om1ha2VQb3N0Zml4Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIs
IE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25O
b2RlKiBBU1RCdWlsZGVyOjptYWtlUG9zdGZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQsIGlu
dCBkaXZvdCwgaW50IGVuZCkKIHsKICAgICBpZiAoIWV4cHItPmlzTG9jYXRpb24oKSkKLSAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4RXJyb3JOb2RlKGxpbmVOdW1iZXIs
IG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhFcnJvck5vZGUobG9jYXRpb24sIG9wLCBkaXZvdCwg
ZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogCiAgICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5v
ZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29s
dmVOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZp
eFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3AsIGRpdm90
LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgUG9zdGZpeFJlc29sdmVOb2RlKGxvY2F0aW9uLCByZXNvbHZlLT5pZGVudGlmaWVy
KCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIH0KICAgICBp
ZiAoZXhwci0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAgICAgQnJhY2tldEFjY2Vz
c29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihleHBy
KTsKLSAgICAgICAgUG9zdGZpeEJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEp
IFBvc3RmaXhCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5iYXNlKCksIGJyYWNrZXQt
PnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAg
ICAgICAgUG9zdGZpeEJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFBvc3Rm
aXhCcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3Jp
cHQoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgICAgIG5v
ZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPmVuZE9m
ZnNldCgpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAKICAgICB9CiAgICAgQVNTRVJUKGV4cHIt
PmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGlj
X2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZXhwcik7Ci0gICAgUG9zdGZpeERvdE5vZGUqIG5vZGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeERvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNl
KCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRp
dm90KTsKKyAgICBQb3N0Zml4RG90Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0
Zml4RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwg
ZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBub2RlLT5zZXRTdWJleHBy
ZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZW5kT2Zmc2V0KCkpOwogICAgIHJldHVybiBu
b2RlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCAzYjAyMGY0
ZjJiMWIwOTZhNzBhOTVhOWI1ODg4MjdiZDkwYjk4NTljLi4yYThhOGRjOWUzNjNhZDNhMjI3MTU5
NmU3NWUxOWY1ZGNjMmIzMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNw
cApAQCAtNDE3LDYgKzQxNyw3IEBAIHZvaWQgTGV4ZXI8VD46OnNldENvZGUoY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBQYXJzZXJBcmVuYSogYXJlbmEpCiAgICAgbV9jb2RlRW5kID0gbV9jb2Rl
U3RhcnQgKyBzb3VyY2UuZW5kT2Zmc2V0KCk7CiAgICAgbV9lcnJvciA9IGZhbHNlOwogICAgIG1f
YXRMaW5lU3RhcnQgPSB0cnVlOworICAgIG1fY29sdW1uTnVtYmVyID0gMDsKICAgICBtX2xleEVy
cm9yTWVzc2FnZSA9IFVTdHJpbmcoKTsKICAgICAKICAgICBtX2J1ZmZlcjgucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShpbml0aWFsUmVhZEJ1ZmZlckNhcGFjaXR5KTsKQEAgLTQzMyw2ICs0MzQsNyBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHRlbXBsYXRlIDxpbnQgc2hpZnRBbW91bnQ+IEFMV0FZ
U19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6aW50ZXJuYWxTaGlmdCgpCiB7CiAgICAgbV9jb2RlICs9
IHNoaWZ0QW1vdW50OworICAgIG1fY29sdW1uTnVtYmVyICs9IHNoaWZ0QW1vdW50OwogICAgIG1f
Y3VycmVudCA9ICptX2NvZGU7CiB9CiAKQEAgLTQ0NCw2ICs0NDYsNyBAQCBBTFdBWVNfSU5MSU5F
IHZvaWQgTGV4ZXI8VD46OnNoaWZ0KCkKICAgICArK21fY29kZTsKICAgICBpZiAoTElLRUxZKG1f
Y29kZSA8IG1fY29kZUVuZCkpCiAgICAgICAgIG1fY3VycmVudCA9ICptX2NvZGU7CisgICAgKytt
X2NvbHVtbk51bWJlcjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkBAIC0xMTgzLDcgKzEx
ODYsNyBAQCBib29sIExleGVyPFQ+OjpuZXh0VG9rZW5Jc0NvbG9uKCkKIH0KIAogdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1KU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4KEpTVG9rZW5EYXRhKiB0b2tl
bkRhdGEsIEpTVG9rZW5JbmZvKiB0b2tlbkluZm8sIHVuc2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wg
c3RyaWN0TW9kZSkKK0pTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXgoSlNUb2tlbkRhdGEqIHRva2Vu
RGF0YSwgSlNUb2tlbkxvY2F0aW9uKiB0b2tlbkxvY2F0aW9uLCB1bnNpZ25lZCBsZXhlckZsYWdz
LCBib29sIHN0cmljdE1vZGUpCiB7CiAgICAgQVNTRVJUKCFtX2Vycm9yKTsKICAgICBBU1NFUlQo
bV9idWZmZXI4LmlzRW1wdHkoKSk7CkBAIC0xMTk5LDcgKzEyMDIsOCBAQCBzdGFydDoKICAgICBp
ZiAoYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIEVPRlRPSzsKICAgICAKLSAgICB0b2tlbkluZm8t
PnN0YXJ0T2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRva2VuTG9jYXRpb24tPnN0YXJ0
T2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRva2VuTG9jYXRpb24tPmNvbHVtbiA9IG1f
Y29sdW1uTnVtYmVyOwogCiAgICAgQ2hhcmFjdGVyVHlwZSB0eXBlOwogICAgIGlmIChMSUtFTFko
aXNMYXRpbjEobV9jdXJyZW50KSkpCkBAIC0xNTIyLDYgKzE1MjYsNyBAQCBpbk51bWJlckFmdGVy
RGVjaW1hbFBvaW50OgogICAgICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7CiAgICAgICAgIG1f
YXRMaW5lU3RhcnQgPSB0cnVlOwogICAgICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVlOworICAgICAg
ICBtX2NvbHVtbk51bWJlciA9IDA7CiAgICAgICAgIGdvdG8gc3RhcnQ7CiAgICAgY2FzZSBDaGFy
YWN0ZXJJbnZhbGlkOgogICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9IGludmFsaWRDaGFyYWN0
ZXJNZXNzYWdlKCk7CkBAIC0xNTQ0LDYgKzE1NDksNyBAQCBpblNpbmdsZUxpbmVDb21tZW50Ogog
ICAgIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKICAgICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsKICAg
ICBtX3Rlcm1pbmF0b3IgPSB0cnVlOworICAgIG1fY29sdW1uTnVtYmVyID0gMDsKICAgICBpZiAo
IWxhc3RUb2tlbldhc1Jlc3RyS2V5d29yZCgpKQogICAgICAgICBnb3RvIHN0YXJ0OwogCkBAIC0x
NTUxLDE1ICsxNTU3LDE1IEBAIGluU2luZ2xlTGluZUNvbW1lbnQ6CiAgICAgLy8gRmFsbCB0aHJv
dWdoIGludG8gcmV0dXJuVG9rZW4uCiAKIHJldHVyblRva2VuOgotICAgIHRva2VuSW5mby0+bGlu
ZSA9IG1fbGluZU51bWJlcjsKLSAgICB0b2tlbkluZm8tPmVuZE9mZnNldCA9IGN1cnJlbnRPZmZz
ZXQoKTsKKyAgICB0b2tlbkxvY2F0aW9uLT5saW5lID0gbV9saW5lTnVtYmVyOworICAgIHRva2Vu
TG9jYXRpb24tPmVuZE9mZnNldCA9IGN1cnJlbnRPZmZzZXQoKTsKICAgICBtX2xhc3RUb2tlbiA9
IHRva2VuOwogICAgIHJldHVybiB0b2tlbjsKIAogcmV0dXJuRXJyb3I6CiAgICAgbV9lcnJvciA9
IHRydWU7Ci0gICAgdG9rZW5JbmZvLT5saW5lID0gbV9saW5lTnVtYmVyOwotICAgIHRva2VuSW5m
by0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRva2VuTG9jYXRpb24tPmxpbmUg
PSBtX2xpbmVOdW1iZXI7CisgICAgdG9rZW5Mb2NhdGlvbi0+ZW5kT2Zmc2V0ID0gY3VycmVudE9m
ZnNldCgpOwogICAgIHJldHVybiBFUlJPUlRPSzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9MZXhlci5oCmluZGV4IDQxZjFmODU1M2UxZWIyNWY1NDRiZWUxOTM1YTJhZjRiYmQwNjllNjQu
LjFhYzgzMmEyYzdiNWYzODJiMzNiNzhhNWM4MzA0YjE3NTU0MGY0NzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTg3LDkgKzg3LDEwIEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldElzUmVwYXJzaW5nKCkgeyBtX2lzUmVwYXJzaW5nID0gdHJ1ZTsgfQogICAgIGJvb2wgaXNS
ZXBhcnNpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUmVwYXJzaW5nOyB9CiAKLSAgICBKU1Rva2Vu
VHlwZSBsZXgoSlNUb2tlbkRhdGEqLCBKU1Rva2VuSW5mbyosIHVuc2lnbmVkLCBib29sIHN0cmlj
dE1vZGUpOworICAgIEpTVG9rZW5UeXBlIGxleChKU1Rva2VuRGF0YSosIEpTVG9rZW5Mb2NhdGlv
biosIHVuc2lnbmVkLCBib29sIHN0cmljdE1vZGUpOwogICAgIGJvb2wgbmV4dFRva2VuSXNDb2xv
bigpOwogICAgIGludCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9
CisgICAgaW50IGN1cnJlbnRDb2x1bW5OdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbHVtbk51
bWJlcjsgfQogICAgIHZvaWQgc2V0TGFzdExpbmVOdW1iZXIoaW50IGxhc3RMaW5lTnVtYmVyKSB7
IG1fbGFzdExpbmVOdW1iZXIgPSBsYXN0TGluZU51bWJlcjsgfQogICAgIGludCBsYXN0TGluZU51
bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdExpbmVOdW1iZXI7IH0KICAgICBib29sIHByZXZU
ZXJtaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gbV90ZXJtaW5hdG9yOyB9CkBAIC0xMjAsNyArMTIx
LDcgQEAgcHVibGljOgogCiAgICAgU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2UtPnByb3ZpZGVyKCk7IH0KIAotICAgIEpTVG9rZW5UeXBlIGxl
eEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbkRhdGEqLCBKU1Rva2VuSW5mbyosIHVuc2lnbmVkLCBi
b29sIHN0cmljdE1vZGUpOworICAgIEpTVG9rZW5UeXBlIGxleEV4cGVjdElkZW50aWZpZXIoSlNU
b2tlbkRhdGEqLCBKU1Rva2VuTG9jYXRpb24qLCB1bnNpZ25lZCwgYm9vbCBzdHJpY3RNb2RlKTsK
IAogcHJpdmF0ZToKICAgICB2b2lkIHJlY29yZDgoaW50KTsKQEAgLTE2Niw2ICsxNjcsNyBAQCBw
cml2YXRlOgogCiAgICAgaW50IG1fbGluZU51bWJlcjsKICAgICBpbnQgbV9sYXN0TGluZU51bWJl
cjsKKyAgICBpbnQgbV9jb2x1bW5OdW1iZXI7CiAKICAgICBWZWN0b3I8TENoYXI+IG1fYnVmZmVy
ODsKICAgICBWZWN0b3I8VUNoYXI+IG1fYnVmZmVyMTY7CkBAIC0yNTcsNyArMjU5LDcgQEAgQUxX
QVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6bWFrZUlkZW50aWZpZXJMQ2hh
ckZyb21VQ2hhcihjb25zdCBVQ2gKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1BTFdBWVNf
SU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW5E
YXRhKiB0b2tlbkRhdGEsIEpTVG9rZW5JbmZvKiB0b2tlbkluZm8sIHVuc2lnbmVkIGxleGVyRmxh
Z3MsIGJvb2wgc3RyaWN0TW9kZSkKK0FMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46
OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSwgSlNUb2tlbkxvY2F0
aW9uKiB0b2tlbkxvY2F0aW9uLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUp
CiB7CiAgICAgQVNTRVJUKChsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29y
ZHMpKTsKICAgICBjb25zdCBUKiBzdGFydCA9IG1fY29kZTsKQEAgLTI4NSwyMCArMjg3LDIyIEBA
IEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIo
SlNUb2tlbkRhdGEqIHRva2VuRGF0YSwKICAgICAgICAgbV9jdXJyZW50ID0gMDsKIAogICAgIG1f
Y29kZSA9IHB0cjsKKyAgICBtX2NvbHVtbk51bWJlciA9IG1fY29sdW1uTnVtYmVyICsgKG1fY29k
ZSAtIHN0YXJ0KTsKIAogICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRpZmllciBpZiBuZWVkZWQKICAg
ICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3b3JkcykKICAgICAgICAg
dG9rZW5EYXRhLT5pZGVudCA9IDA7CiAgICAgZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50
ID0gbWFrZUlkZW50aWZpZXIoc3RhcnQsIHB0ciAtIHN0YXJ0KTsKLSAgICB0b2tlbkluZm8tPmxp
bmUgPSBtX2xpbmVOdW1iZXI7Ci0gICAgdG9rZW5JbmZvLT5zdGFydE9mZnNldCA9IHN0YXJ0IC0g
bV9jb2RlU3RhcnQ7Ci0gICAgdG9rZW5JbmZvLT5lbmRPZmZzZXQgPSBjdXJyZW50T2Zmc2V0KCk7
CisgICAgdG9rZW5Mb2NhdGlvbi0+bGluZSA9IG1fbGluZU51bWJlcjsKKyAgICB0b2tlbkxvY2F0
aW9uLT5zdGFydE9mZnNldCA9IHN0YXJ0IC0gbV9jb2RlU3RhcnQ7CisgICAgdG9rZW5Mb2NhdGlv
bi0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRva2VuTG9jYXRpb24tPmNvbHVt
biA9IG1fY29sdW1uTnVtYmVyOwogICAgIG1fbGFzdFRva2VuID0gSURFTlQ7CiAgICAgcmV0dXJu
IElERU5UOwogICAgIAogc2xvd0Nhc2U6Ci0gICAgcmV0dXJuIGxleCh0b2tlbkRhdGEsIHRva2Vu
SW5mbywgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CisgICAgcmV0dXJuIGxleCh0b2tlbkRhdGEs
IHRva2VuTG9jYXRpb24sIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNv
bnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0
b3JzLmgKaW5kZXggYmU1MGVlYWZlM2U0MGVhYzFkOTdiN2Q0ZDAyYjVhNGM2OTgyOTY4Ni4uNDNk
MWUxN2M2YTRjYzA3NWM2NjRlNjNlZDk0YmYxZDBlNmYxZjI4MCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKQEAgLTQyLDYwICs0Miw2MSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZ2xvYmFsRGF0YS0+cGFyc2VyQXJlbmEtPmRlcmVm
V2l0aEFyZW5hKGFkb3B0UmVmKHRoaXMpKTsKICAgICB9CiAKLSAgICBpbmxpbmUgTm9kZTo6Tm9k
ZShpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBtX2xpbmVOdW1iZXIobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgTm9kZTo6Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQorICAg
ICAgICA6IG1fbGluZU51bWJlcihsb2NhdGlvbi5saW5lKQorICAgICAgICAsIG1fY29sdW1uTnVt
YmVyKGxvY2F0aW9uLmNvbHVtbikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEV4cHJlc3Np
b25Ob2RlOjpFeHByZXNzaW9uTm9kZShpbnQgbGluZU51bWJlciwgUmVzdWx0VHlwZSByZXN1bHRU
eXBlKQotICAgICAgICA6IE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRXhwcmVzc2lvbk5v
ZGU6OkV4cHJlc3Npb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFJlc3Vs
dFR5cGUgcmVzdWx0VHlwZSkKKyAgICAgICAgOiBOb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1f
cmVzdWx0VHlwZShyZXN1bHRUeXBlKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3RhdGVt
ZW50Tm9kZTo6U3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBOb2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIFN0YXRlbWVudE5vZGU6OlN0YXRlbWVudE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKKyAgICAgICAgOiBOb2RlKGxvY2F0aW9uKQogICAg
ICAgICAsIG1fbGFzdExpbmUoLTEpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBOdWxsTm9k
ZTo6TnVsbE5vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGlu
ZU51bWJlciwgUmVzdWx0VHlwZTo6bnVsbFR5cGUoKSkKKyAgICBpbmxpbmUgTnVsbE5vZGU6Ok51
bGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCisgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6Om51bGxUeXBlKCkpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBCb29sZWFuTm9kZTo6Qm9vbGVhbk5vZGUoaW50IGxpbmVOdW1iZXIsIGJv
b2wgdmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlw
ZTo6Ym9vbGVhblR5cGUoKSkKKyAgICBpbmxpbmUgQm9vbGVhbk5vZGU6OkJvb2xlYW5Ob2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGJvb2wgdmFsdWUpCisgICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCkpCiAgICAgICAg
ICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE51bWJlck5vZGU6
Ok51bWJlck5vZGUoaW50IGxpbmVOdW1iZXIsIGRvdWJsZSB2YWx1ZSkKLSAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCkpCisgICAgaW5s
aW5lIE51bWJlck5vZGU6Ok51bWJlck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgZG91YmxlIHZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uLCBSZXN1
bHRUeXBlOjpudW1iZXJUeXBlKCkpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIFN0cmluZ05vZGU6OlN0cmluZ05vZGUoaW50IGxpbmVOdW1iZXIs
IGNvbnN0IElkZW50aWZpZXImIHZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIsIFJlc3VsdFR5cGU6OnN0cmluZ1R5cGUoKSkKKyAgICBpbmxpbmUgU3RyaW5nTm9kZTo6
U3RyaW5nTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlm
aWVyJiB2YWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlw
ZTo6c3RyaW5nVHlwZSgpKQogICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBSZWdFeHBOb2RlOjpSZWdFeHBOb2RlKGludCBsaW5lTnVtYmVyLCBjb25z
dCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncykKLSAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBSZWdFeHBOb2RlOjpSZWdF
eHBOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIm
IHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzKQorICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fcGF0dGVybihwYXR0ZXJuKQogICAgICAgICAsIG1f
ZmxhZ3MoZmxhZ3MpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBUaGlzTm9kZTo6VGhpc05v
ZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgVGhpc05vZGU6OlRoaXNOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBSZXNvbHZlTm9kZTo6UmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBpbnQgc3RhcnRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmVzb2x2ZU5vZGU6OlJlc29sdmVOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBpbnQgc3RhcnRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3N0YXJ0T2Zmc2V0KHN0YXJ0T2Zm
c2V0KQogICAgIHsKQEAgLTExNiwyNCArMTE3LDI0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBsLT5tX25leHQgPSB0aGlzOwogICAgIH0KIAotICAgIGlubGluZSBBcnJheU5vZGU6OkFycmF5
Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGVsaXNpb24pCi0gICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50IGVsaXNpb24pCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9lbGVtZW50KDApCiAgICAgICAgICwgbV9lbGlz
aW9uKGVsaXNpb24pCiAgICAgICAgICwgbV9vcHRpb25hbCh0cnVlKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5vZGUoaW50IGxpbmVOdW1iZXIsIEVsZW1lbnRO
b2RlKiBlbGVtZW50KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAg
aW5saW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEVsZW1lbnROb2RlKiBlbGVtZW50KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0
aW9uKQogICAgICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogICAgICAgICAsIG1fZWxpc2lvbigw
KQogICAgICAgICAsIG1fb3B0aW9uYWwoZmFsc2UpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBBcnJheU5vZGU6OkFycmF5Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGVsaXNpb24sIEVsZW1l
bnROb2RlKiBlbGVtZW50KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisg
ICAgaW5saW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIGludCBlbGlzaW9uLCBFbGVtZW50Tm9kZSogZWxlbWVudCkKKyAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2VsZW1lbnQoZWxlbWVudCkKICAgICAg
ICAgLCBtX2VsaXNpb24oZWxpc2lvbikKICAgICAgICAgLCBtX29wdGlvbmFsKHRydWUpCkBAIC0x
NTQsNTcgKzE1NSw1NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIFByb3BlcnR5TGlzdE5vZGU6OlByb3BlcnR5TGlzdE5vZGUoaW50IGxpbmVOdW1iZXIsIFBy
b3BlcnR5Tm9kZSogbm9kZSkKLSAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IFByb3BlcnR5TGlzdE5vZGU6OlByb3BlcnR5TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlKiBub2RlKQorICAgICAgICA6IE5vZGUobG9jYXRpb24p
CiAgICAgICAgICwgbV9ub2RlKG5vZGUpCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBQcm9wZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGludCBs
aW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGUqIG5vZGUsIFByb3BlcnR5TGlzdE5vZGUqIGxpc3QpCi0g
ICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcm9wZXJ0eUxpc3ROb2RlOjpQ
cm9wZXJ0eUxpc3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3BlcnR5
Tm9kZSogbm9kZSwgUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkKKyAgICAgICAgOiBOb2RlKGxvY2F0
aW9uKQogICAgICAgICAsIG1fbm9kZShub2RlKQogICAgICAgICAsIG1fbmV4dCgwKQogICAgIHsK
ICAgICAgICAgbGlzdC0+bV9uZXh0ID0gdGhpczsKICAgICB9CiAKLSAgICBpbmxpbmUgT2JqZWN0
TGl0ZXJhbE5vZGU6Ok9iamVjdExpdGVyYWxOb2RlKGludCBsaW5lTnVtYmVyKQotICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIE9iamVjdExpdGVyYWxOb2Rl
OjpPYmplY3RMaXRlcmFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQorICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbGlzdCgwKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgT2JqZWN0TGl0ZXJhbE5vZGU6Ok9iamVjdExpdGVyYWxO
b2RlKGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0KQotICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIE9iamVjdExpdGVyYWxOb2RlOjpP
YmplY3RMaXRlcmFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0
eUxpc3ROb2RlKiBsaXN0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAg
ICAgICAsIG1fbGlzdChsaXN0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQnJhY2tldEFj
Y2Vzc29yTm9kZTo6QnJhY2tldEFjY2Vzc29yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIGJvb2wgc3Vic2NyaXB0SGFz
QXNzaWdubWVudHMpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBp
bmxpbmUgQnJhY2tldEFjY2Vzc29yTm9kZTo6QnJhY2tldEFjY2Vzc29yTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YnNjcmlwdCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAg
LCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCiAgICAgICAgICwgbV9zdWJzY3JpcHRIYXNBc3NpZ25t
ZW50cyhzdWJzY3JpcHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IERvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCi0gICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRG90QWNjZXNzb3JOb2RlOjpEb3RBY2Nl
c3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxvY2F0aW9uKQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1faWRlbnQoaWRl
bnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcmd1bWVudExpc3ROb2RlOjpBcmd1bWVu
dExpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAg
OiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFyZ3VtZW50TGlzdE5vZGU6OkFyZ3VtZW50
TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIpCisgICAgICAgIDogTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX25leHQoMCkKICAg
ICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEFyZ3VtZW50
TGlzdE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUoaW50IGxpbmVOdW1iZXIsIEFyZ3VtZW50TGlzdE5v
ZGUqIGxpc3ROb2RlLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBOb2RlKGxpbmVO
dW1iZXIpCisgICAgaW5saW5lIEFyZ3VtZW50TGlzdE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQXJndW1lbnRMaXN0Tm9kZSogbGlzdE5vZGUs
IEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IE5vZGUobG9jYXRpb24pCiAgICAgICAg
ICwgbV9uZXh0KDApCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewpAQCAtMjIxLDQ1ICsy
MjIsNDUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBOZXdF
eHByTm9kZTo6TmV3RXhwck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIE5ld0V4
cHJOb2RlOjpOZXdFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAg
ICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX2FyZ3MoMCkKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIE5ld0V4cHJOb2RlOjpOZXdFeHByTm9kZShpbnQgbGluZU51bWJlciwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3MpCi0gICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgTmV3RXhwck5vZGU6Ok5ld0V4cHJOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBB
cmd1bWVudHNOb2RlKiBhcmdzKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQog
ICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fYXJncyhhcmdzKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgRXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OkV2YWxGdW5jdGlvbkNhbGxO
b2RlKGludCBsaW5lTnVtYmVyLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBFdmFsRnVuY3Rpb25DYWxsTm9kZTo6
RXZhbEZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQXJn
dW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpCiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OkZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbFZh
bHVlTm9kZTo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2V4cHIo
ZXhwcikKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShpbnQgbGlu
ZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQot
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZ1bmN0aW9u
Q2FsbFJlc29sdmVOb2RlOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSog
YXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAg
ICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFj
a2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25O
b2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpG
dW5jdGlvbkNhbGxCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgQXJndW1lbnRz
Tm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAg
ICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2Ny
aXB0KQpAQCAtMjY3LDggKzI2OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5jdGlvbkNhbGxEb3ROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lv
bkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJh
c2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKQEAgLTI3NiwzMSArMjc3LDMxIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQ2FsbEZ1bmN0aW9uQ2FsbERv
dE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50c05vZGUqIGFyZ3Ms
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KQotICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51bWJlciwgYmFzZSwgaWRlbnQs
IGFyZ3MsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAgIGlubGluZSBDYWxsRnVu
Y3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcHBseUZ1bmN0aW9uQ2FsbERvdE5v
ZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
LSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGJhc2UsIGlkZW50LCBh
cmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgQXBwbHlGdW5j
dGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3RO
b2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVQb3N0UmVzb2x2ZU5vZGU6OlBy
ZVBvc3RSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJl
clR5cGUoKSkgLy8gY291bGQgYmUgcmV1c2FibGUgZm9yIHByZT8KKyAgICBpbmxpbmUgUHJlUG9z
dFJlc29sdmVOb2RlOjpQcmVQb3N0UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCkpIC8vIGNvdWxkIGJlIHJldXNh
YmxlIGZvciBwcmU/CiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0
YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIFBvc3RmaXhSZXNvbHZlTm9kZTo6UG9zdGZpeFJlc29sdmVOb2Rl
KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3Blciwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
Ci0gICAgICAgIDogUHJlUG9zdFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50LCBkaXZvdCwg
c3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgUG9zdGZpeFJlc29sdmVOb2RlOjpQ
b3N0Zml4UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IFByZVBvc3RSZXNv
bHZlTm9kZShsb2NhdGlvbiwgaWRlbnQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQog
ICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFBv
c3RmaXhCcmFja2V0Tm9kZTo6UG9zdGZpeEJyYWNrZXROb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Igb3Bl
ciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUG9z
dGZpeEJyYWNrZXROb2RlOjpQb3N0Zml4QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3Jp
cHQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQog
ICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAgICAsIG1fc3Vic2NyaXB0
KHN1YnNjcmlwdCkKQEAgLTMwOCw4ICszMDksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIFBvc3RmaXhEb3ROb2RlOjpQb3N0Zml4RG90Tm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBP
cGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAg
IGlubGluZSBQb3N0Zml4RG90Tm9kZTo6UG9zdGZpeERvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikK
ICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQs
IGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50KGlk
ZW50KQpAQCAtMzE3LDY4ICszMTgsNjggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBQb3N0Zml4RXJyb3JOb2RlOjpQb3N0Zml4RXJyb3JOb2RlKGludCBsaW5l
TnVtYmVyLCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBQb3N0Zml4RXJyb3JOb2RlOjpQb3N0Zml4RXJyb3JOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25E
YXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fb3BlcmF0b3Io
b3BlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlbGV0ZVJlc29sdmVOb2RlOjpEZWxl
dGVSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQot
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIERlbGV0ZVJl
c29sdmVOb2RlOjpEZWxldGVSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIERlbGV0ZUJyYWNrZXROb2RlOjpEZWxldGVCcmFja2V0Tm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3Jp
cHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIERl
bGV0ZUJyYWNrZXROb2RlOjpEZWxldGVCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlw
dCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAg
ICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgRGVsZXRlRG90Tm9kZTo6RGVsZXRlRG90Tm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
LSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBEZWxldGVE
b3ROb2RlOjpEZWxldGVEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2Up
CiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERl
bGV0ZVZhbHVlTm9kZTo6RGVsZXRlVmFsdWVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlu
bGluZSBEZWxldGVWYWx1ZU5vZGU6OkRlbGV0ZVZhbHVlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIFZvaWROb2RlOjpWb2lkTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgVm9pZE5vZGU6OlZvaWROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQog
ICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVHlwZU9m
UmVzb2x2ZU5vZGU6OlR5cGVPZlJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1
bHRUeXBlOjpzdHJpbmdUeXBlKCkpCisgICAgaW5saW5lIFR5cGVPZlJlc29sdmVOb2RlOjpUeXBl
T2ZSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0
VHlwZTo6c3RyaW5nVHlwZSgpKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVlTm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bGluZU51bWJlciwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQorICAgIGlubGluZSBUeXBlT2ZW
YWx1ZU5vZGU6OlR5cGVPZlZhbHVlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlv
biwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJlZml4UmVzb2x2ZU5vZGU6OlByZWZpeFJlc29sdmVO
b2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3Bl
ciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCi0gICAgICAgIDogUHJlUG9zdFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50LCBkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgUHJlZml4UmVzb2x2ZU5vZGU6
OlByZWZpeFJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBQcmVQb3N0UmVz
b2x2ZU5vZGUobG9jYXRpb24sIGlkZW50LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkK
ICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQ
cmVmaXhCcmFja2V0Tm9kZTo6UHJlZml4QnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVy
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcmVm
aXhCcmFja2V0Tm9kZTo6UHJlZml4QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQs
IE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAg
ICAgICAsIFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zm
c2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJz
Y3JpcHQoc3Vic2NyaXB0KQpAQCAtMzg2LDggKzM4Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJlZml4RG90Tm9kZTo6UHJlZml4RG90Tm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBQcmVmaXhEb3ROb2RlOjpQcmVmaXhEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
CiAgICAgICAgICwgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3Rh
cnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBt
X2lkZW50KGlkZW50KQpAQCAtMzk1LDQzICszOTYsNDMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBQcmVmaXhFcnJvck5vZGU6OlByZWZpeEVycm9yTm9kZShp
bnQgbGluZU51bWJlciwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUo
bGluZU51bWJlcikKKyAgICBpbmxpbmUgUHJlZml4RXJyb3JOb2RlOjpQcmVmaXhFcnJvck5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9vcGVyYXRv
cihvcGVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVW5hcnlPcE5vZGU6OlVuYXJ5T3BO
b2RlKGludCBsaW5lTnVtYmVyLCBSZXN1bHRUeXBlIHR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHBy
LCBPcGNvZGVJRCBvcGNvZGVJRCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVy
LCB0eXBlKQorICAgIGlubGluZSBVbmFyeU9wTm9kZTo6VW5hcnlPcE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgUmVzdWx0VHlwZSB0eXBlLCBFeHByZXNzaW9uTm9kZSogZXhw
ciwgT3Bjb2RlSUQgb3Bjb2RlSUQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24s
IHR5cGUpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9vcGNvZGVJRChvcGNv
ZGVJRCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFVuYXJ5UGx1c05vZGU6OlVuYXJ5UGx1
c05vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFVu
YXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwciwgb3Bf
dG9fanNudW1iZXIpCisgICAgaW5saW5lIFVuYXJ5UGx1c05vZGU6OlVuYXJ5UGx1c05vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAg
ICAgIDogVW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhw
ciwgb3BfdG9fanNudW1iZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBOZWdhdGVOb2Rl
OjpOZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAg
ICAgOiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4
cHIsIG9wX25lZ2F0ZSkKKyAgICBpbmxpbmUgTmVnYXRlTm9kZTo6TmVnYXRlTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAg
OiBVbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByLCBv
cF9uZWdhdGUpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCaXR3aXNlTm90Tm9kZTo6Qml0
d2lzZU5vdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCkpCisg
ICAgaW5saW5lIEJpdHdpc2VOb3ROb2RlOjpCaXR3aXNlTm90Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSkKICAgICAgICAgLCBtX2V4
cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIExvZ2ljYWxOb3ROb2RlOjpMb2dp
Y2FsTm90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAg
IDogVW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhw
ciwgb3Bfbm90KQorICAgIGlubGluZSBMb2dpY2FsTm90Tm9kZTo6TG9naWNhbE5vdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAg
ICAgIDogVW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4
cHIsIG9wX25vdCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJpbmFyeU9wTm9kZTo6Qmlu
YXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cykKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBCaW5h
cnlPcE5vZGU6OkJpbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bj
b2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1fZXhwcjIo
ZXhwcjIpCiAgICAgICAgICwgbV9vcGNvZGVJRChvcGNvZGVJRCkKQEAgLTQzOSw4ICs0NDAsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJpbmFyeU9wTm9k
ZTo6QmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBSZXN1bHRUeXBlIHR5cGUsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVO
dW1iZXIsIHR5cGUpCisgICAgaW5saW5lIEJpbmFyeU9wTm9kZTo6QmluYXJ5T3BOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFJlc3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24s
IHR5cGUpCiAgICAgICAgICwgbV9leHByMShleHByMSkKICAgICAgICAgLCBtX2V4cHIyKGV4cHIy
KQogICAgICAgICAsIG1fb3Bjb2RlSUQob3Bjb2RlSUQpCkBAIC00NDgsMTQwICs0NDksMTQwIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTXVsdE5vZGU6Ok11
bHROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9w
Tm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwg
b3BfbXVsLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBNdWx0Tm9kZTo6TXVsdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAg
ICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhw
cjEsIGV4cHIyLCBvcF9tdWwsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBEaXZOb2RlOjpEaXZOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJU
eXBlKCksIGV4cHIxLCBleHByMiwgb3BfZGl2LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlu
bGluZSBEaXZOb2RlOjpEaXZOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBl
OjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZGl2LCByaWdodEhhc0Fzc2lnbm1lbnRz
KQogICAgIHsKICAgICB9CiAKIAotICAgIGlubGluZSBNb2ROb2RlOjpNb2ROb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVy
LCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbW9kLCByaWdodEhh
c0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBNb2ROb2RlOjpNb2ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2Rl
KGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbW9k
LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQWRkTm9k
ZTo6QWRkTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5h
cnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQWRkKGV4cHIxLT5yZXN1bHREZXNj
cmlwdG9yKCksIGV4cHIyLT5yZXN1bHREZXNjcmlwdG9yKCkpLCBleHByMSwgZXhwcjIsIG9wX2Fk
ZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgQWRkTm9kZTo6QWRkTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJp
bmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Zm9yQWRkKGV4cHIxLT5yZXN1bHREZXNj
cmlwdG9yKCksIGV4cHIyLT5yZXN1bHREZXNjcmlwdG9yKCkpLCBleHByMSwgZXhwcjIsIG9wX2Fk
ZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFN1Yk5v
ZGU6OlN1Yk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmlu
YXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4
cHIyLCBvcF9zdWIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIFN1Yk5vZGU6OlN1
Yk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAg
ICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6Om51bWJlclR5cGUoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9zdWIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBMZWZ0U2hpZnROb2RlOjpMZWZ0U2hpZnROb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1
bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2xzaGlmdCwgcmlnaHRIYXNBc3Np
Z25tZW50cykKKyAgICBpbmxpbmUgTGVmdFNoaWZ0Tm9kZTo6TGVmdFNoaWZ0Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Np
b25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFy
eU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBv
cF9sc2hpZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBSaWdodFNoaWZ0Tm9kZTo6UmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZv
ckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfcnNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQor
ICAgIGlubGluZSBSaWdodFNoaWZ0Tm9kZTo6UmlnaHRTaGlmdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUo
bG9jYXRpb24sIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfcnNoaWZ0
LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVW5zaWdu
ZWRSaWdodFNoaWZ0Tm9kZTo6VW5zaWduZWRSaWdodFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0
VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3Vyc2hpZnQsIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgaW5saW5lIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGU6OlVuc2lnbmVkUmln
aHRTaGlmdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6Om51bWJlclR5
cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF91cnNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgTGVzc05vZGU6Okxlc3NOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1
bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2xlc3MsIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgaW5saW5lIExlc3NOb2RlOjpMZXNzTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShs
b2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9sZXNz
LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgR3JlYXRl
ck5vZGU6OkdyZWF0ZXJOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAg
ICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBl
eHByMSwgZXhwcjIsIG9wX2dyZWF0ZXIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5l
IEdyZWF0ZXJOb2RlOjpHcmVhdGVyTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0
VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVyLCByaWdodEhhc0Fz
c2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTGVzc0VxTm9kZTo6TGVzc0Vx
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5v
ZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBv
cF9sZXNzZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIExlc3NFcU5vZGU6Okxl
c3NFcU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
KyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBl
KCksIGV4cHIxLCBleHByMiwgb3BfbGVzc2VxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgR3JlYXRlckVxTm9kZTo6R3JlYXRlckVxTm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJl
ciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9ncmVhdGVyZXEs
IHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEdyZWF0ZXJFcU5vZGU6OkdyZWF0ZXJF
cU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAg
ICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCks
IGV4cHIxLCBleHByMiwgb3BfZ3JlYXRlcmVxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgVGhyb3dhYmxlQmluYXJ5T3BOb2RlOjpUaHJvd2FibGVCaW5h
cnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIHR5
cGUsIGV4cHIxLCBleHByMiwgb3Bjb2RlSUQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5s
aW5lIFRocm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFJlc3VsdFR5cGUgdHlwZSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9wY29kZUlELCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCB0eXBl
LCBleHByMSwgZXhwcjIsIG9wY29kZUlELCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgVGhyb3dhYmxlQmluYXJ5T3BOb2RlOjpUaHJvd2FibGVCaW5hcnlP
cE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQot
ICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIG9wY29kZUlE
LCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBUaHJvd2FibGVCaW5hcnlPcE5vZGU6
OlRocm93YWJsZUJpbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bj
b2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUo
bG9jYXRpb24sIGV4cHIxLCBleHByMiwgb3Bjb2RlSUQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBJbnN0YW5jZU9mTm9kZTo6SW5zdGFuY2VPZk5vZGUo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogVGhyb3dhYmxlQmluYXJ5
T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHBy
Miwgb3BfaW5zdGFuY2VvZiwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgSW5zdGFu
Y2VPZk5vZGU6Okluc3RhbmNlT2ZOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxvY2F0aW9u
LCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2luc3RhbmNlb2Ys
IHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBJbk5vZGU6
OkluTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBUaHJvd2Fi
bGVCaW5hcnlPcE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCBvcF9pbiwgcmlnaHRIYXNB
c3NpZ25tZW50cykKKyAgICBpbmxpbmUgSW5Ob2RlOjpJbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBUaHJvd2FibGVCaW5hcnlP
cE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgb3BfaW4sIHJpZ2h0SGFzQXNzaWdubWVudHMp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBFcXVhbE5vZGU6OkVxdWFsTm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJl
ciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9lcSwgcmlnaHRI
YXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgRXF1YWxOb2RlOjpFcXVhbE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlP
cE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwg
b3BfZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBO
b3RFcXVhbE5vZGU6Ok5vdEVxdWFsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
LSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5
cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9uZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5s
aW5lIE5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBS
ZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX25lcSwgcmlnaHRIYXNB
c3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFN0cmljdEVxdWFsTm9kZTo6
U3RyaWN0RXF1YWxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6
IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHBy
MSwgZXhwcjIsIG9wX3N0cmljdGVxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBT
dHJpY3RFcXVhbE5vZGU6OlN0cmljdEVxdWFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwg
UmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9zdHJpY3RlcSwgcmln
aHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE5vdFN0cmljdEVx
dWFsTm9kZTo6Tm90U3RyaWN0RXF1YWxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFu
VHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX25zdHJpY3RlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykK
KyAgICBpbmxpbmUgTm90U3RyaWN0RXF1YWxOb2RlOjpOb3RTdHJpY3RFcXVhbE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5h
cnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHBy
Miwgb3BfbnN0cmljdGVxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgQml0QW5kTm9kZTo6Qml0QW5kTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9y
Qml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXRhbmQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisg
ICAgaW5saW5lIEJpdEFuZE5vZGU6OkJpdEFuZE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24s
IFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfYml0YW5kLCByaWdodEhh
c0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQml0T3JOb2RlOjpCaXRP
ck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BO
b2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3Bf
Yml0b3IsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEJpdE9yTm9kZTo6Qml0T3JO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAg
ICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHBy
MSwgZXhwcjIsIG9wX2JpdG9yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgQml0WE9yTm9kZTo6Qml0WE9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6
Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXR4b3IsIHJpZ2h0SGFzQXNzaWdubWVudHMp
CisgICAgaW5saW5lIEJpdFhPck5vZGU6OkJpdFhPck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRp
b24sIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfYml0eG9yLCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTG9naWNhbE9wTm9k
ZTo6TG9naWNhbE9wTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIExvZ2ljYWxPcGVyYXRvciBvcGVyKQotICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCkpCisgICAg
aW5saW5lIExvZ2ljYWxPcE5vZGU6OkxvZ2ljYWxPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IExvZ2ljYWxPcGVyYXRvciBvcGVyKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9u
LCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpKQogICAgICAgICAsIG1fZXhwcjEoZXhwcjEpCiAg
ICAgICAgICwgbV9leHByMihleHByMikKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBDb25kaXRpb25hbE5vZGU6OkNvbmRpdGlvbmFsTm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxvZ2ljYWwsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIENvbmRpdGlvbmFsTm9kZTo6Q29uZGl0aW9uYWxOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsb2dpY2FsLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMikKKyAgICAgICAgOiBF
eHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2xvZ2ljYWwobG9naWNhbCkKICAg
ICAgICAgLCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6OlJlYWRNb2RpZnlSZXNv
bHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9y
IG9wZXIsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
Ci0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmVhZE1v
ZGlmeVJlc29sdmVOb2RlOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4
cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9pZGVudChp
ZGVudCkKICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQpAQCAtNTkwLDE1ICs1OTEsMTUgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25SZXNvbHZlTm9k
ZTo6QXNzaWduUmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGlu
ZU51bWJlcikKKyAgICBpbmxpbmUgQXNzaWduUmVzb2x2ZU5vZGU6OkFzc2lnblJlc29sdmVOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50
LCBFeHByZXNzaW9uTm9kZSogcmlnaHQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRp
b24pCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9k
aWZ5QnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHBy
ZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmln
aHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmVh
ZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBz
dWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJz
Y3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNz
aW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2Uo
YmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCkBAIC02MDksOCArNjEwLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBc3NpZ25CcmFj
a2V0Tm9kZTo6QXNzaWduQnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
Ci0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXNzaWdu
QnJhY2tldE5vZGU6OkFzc2lnbkJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
CiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBl
bmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQo
c3Vic2NyaXB0KQpAQCAtNjIwLDggKzYyMSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHBy
ZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNz
aWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRP
ZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2Nh
dGlvbikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX2lkZW50
KGlkZW50KQpAQCAtNjMwLDggKzYzMSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGlu
ZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlk
ZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAg
ICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKQEAg
LTY0MSwyMSArNjQyLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBp
bmxpbmUgQXNzaWduRXJyb3JOb2RlOjpBc3NpZ25FcnJvck5vZGUoaW50IGxpbmVOdW1iZXIsIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQot
ICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFzc2lnbkVy
cm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgQ29tbWFOb2RlOjpDb21tYU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKQotICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIENvbW1hTm9kZTo6Q29tbWFOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9u
KQogICAgIHsKICAgICAgICAgbV9leHByZXNzaW9ucy5hcHBlbmQoZXhwcjEpOwogICAgICAgICBt
X2V4cHJlc3Npb25zLmFwcGVuZChleHByMik7CiAgICAgfQogCi0gICAgaW5saW5lIENvbnN0U3Rh
dGVtZW50Tm9kZTo6Q29uc3RTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyLCBDb25zdERlY2xO
b2RlKiBuZXh0KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgQ29uc3RTdGF0ZW1lbnROb2RlOjpDb25zdFN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgQ29uc3REZWNsTm9kZSogbmV4dCkKKyAgICAgICAgOiBTdGF0ZW1l
bnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbmV4dChuZXh0KQogICAgIHsKICAgICB9CkBA
IC02NjQsNTcgKzY2NSw1NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIEVtcHR5U3RhdGVtZW50Tm9kZTo6RW1wdHlTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVt
YmVyKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRW1w
dHlTdGF0ZW1lbnROb2RlOjpFbXB0eVN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgIHsKICAg
ICB9CiAKLSAgICBpbmxpbmUgRGVidWdnZXJTdGF0ZW1lbnROb2RlOjpEZWJ1Z2dlclN0YXRlbWVu
dE5vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBEZWJ1Z2dlclN0YXRlbWVudE5vZGU6OkRlYnVnZ2VyU3RhdGVtZW50Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQorICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobG9jYXRpb24pCiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgRXhwclN0YXRlbWVu
dE5vZGU6OkV4cHJTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEV4
cHJTdGF0ZW1lbnROb2RlOjpFeHByU3RhdGVtZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2Rl
KGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBp
bmxpbmUgVmFyU3RhdGVtZW50Tm9kZTo6VmFyU3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVy
KQorICAgIGlubGluZSBWYXJTdGF0ZW1lbnROb2RlOjpWYXJTdGF0ZW1lbnROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6
IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewog
ICAgIH0KICAgICAKLSAgICBpbmxpbmUgSWZOb2RlOjpJZk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2spCi0gICAgICAg
IDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBJZk5vZGU6OklmTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9u
LCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRp
b24pCiAgICAgICAgICwgbV9jb25kaXRpb24oY29uZGl0aW9uKQogICAgICAgICAsIG1faWZCbG9j
ayhpZkJsb2NrKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgSWZFbHNlTm9kZTo6SWZFbHNl
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50
Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2NrKQotICAgICAgICA6IElmTm9k
ZShsaW5lTnVtYmVyLCBjb25kaXRpb24sIGlmQmxvY2spCisgICAgaW5saW5lIElmRWxzZU5vZGU6
OklmRWxzZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxz
ZUJsb2NrKQorICAgICAgICA6IElmTm9kZShsb2NhdGlvbiwgY29uZGl0aW9uLCBpZkJsb2NrKQog
ICAgICAgICAsIG1fZWxzZUJsb2NrKGVsc2VCbG9jaykKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIERvV2hpbGVOb2RlOjpEb1doaWxlTm9kZShpbnQgbGluZU51bWJlciwgU3RhdGVtZW50Tm9k
ZSogc3RhdGVtZW50LCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBTdGF0ZW1lbnRO
b2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIERvV2hpbGVOb2RlOjpEb1doaWxlTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAgICAgICAsIG1fZXhwcihleHByKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgV2hpbGVOb2RlOjpXaGlsZU5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCi0g
ICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBXaGlsZU5vZGU6
OldoaWxlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQorICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9zdGF0ZW1l
bnQoc3RhdGVtZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRm9yTm9kZTo6Rm9yTm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjIsIEV4cHJlc3Npb25Ob2RlKiBleHByMywgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQot
ICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRm9yTm9kZTo6
Rm9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIzLCBTdGF0
ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikK
ICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1fZXhwcjIoZXhwcjIpCiAgICAg
ICAgICwgbV9leHByMyhleHByMykKQEAgLTcyMywzOCArNzI0LDM4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBBU1NFUlQoc3RhdGVtZW50KTsKICAgICB9CiAKLSAgICBpbmxpbmUgQ29udGlu
dWVOb2RlOjpDb250aW51ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51
bWJlcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIENv
bnRpbnVlTm9kZTo6Q29udGludWVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0
aW9uKQogICAgICAgICAsIG1faWRlbnQoZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElk
ZW50aWZpZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNvbnRp
bnVlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCi0gICAgICAg
IDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBDb250aW51ZU5vZGU6OkNv
bnRpbnVlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlm
aWVyJiBpZGVudCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAs
IG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgQnJlYWtOb2Rl
OjpCcmVha05vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlcikKLSAg
ICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEJyZWFrTm9kZTo6
QnJlYWtOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAs
IG1faWRlbnQoZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIpCiAgICAg
ewogICAgIH0KIAotICAgIGlubGluZSBCcmVha05vZGU6OkJyZWFrTm9kZShpbnQgbGluZU51bWJl
ciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBCcmVha05vZGU6OkJyZWFrTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICAgICAgOiBTdGF0
ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAg
IH0KICAgICAKLSAgICBpbmxpbmUgUmV0dXJuTm9kZTo6UmV0dXJuTm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIHZhbHVlKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51
bWJlcikKKyAgICBpbmxpbmUgUmV0dXJuTm9kZTo6UmV0dXJuTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogdmFsdWUpCisgICAgICAgIDogU3RhdGVt
ZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgV2l0aE5vZGU6OldpdGhOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCB1aW50MzJfdCBkaXZvdCwg
dWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCkKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVO
dW1iZXIpCisgICAgaW5saW5lIFdpdGhOb2RlOjpXaXRoTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVt
ZW50LCB1aW50MzJfdCBkaXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCkKKyAgICAgICAg
OiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAg
ICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkKICAgICAgICAgLCBtX2Rpdm90KGRpdm90KQpAQCAt
NzYyLDIxICs3NjMsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBMYWJlbE5vZGU6OkxhYmVsTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmll
ciYgbmFtZSwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQotICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgTGFiZWxOb2RlOjpMYWJlbE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgU3RhdGVtZW50
Tm9kZSogc3RhdGVtZW50KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAg
ICAgICwgbV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgVGhyb3dOb2RlOjpUaHJvd05vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51
bWJlcikKKyAgICBpbmxpbmUgVGhyb3dOb2RlOjpUaHJvd05vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogU3RhdGVtZW50
Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIFRyeU5vZGU6OlRyeU5vZGUoaW50IGxpbmVOdW1iZXIsIFN0YXRlbWVudE5vZGUq
IHRyeUJsb2NrLCBjb25zdCBJZGVudGlmaWVyJiBleGNlcHRpb25JZGVudCwgU3RhdGVtZW50Tm9k
ZSogY2F0Y2hCbG9jaywgU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrKQotICAgICAgICA6IFN0
YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgVHJ5Tm9kZTo6VHJ5Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9jaywgY29u
c3QgSWRlbnRpZmllciYgZXhjZXB0aW9uSWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ss
IFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jaykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxv
Y2F0aW9uKQogICAgICAgICAsIG1fdHJ5QmxvY2sodHJ5QmxvY2spCiAgICAgICAgICwgbV9leGNl
cHRpb25JZGVudChleGNlcHRpb25JZGVudCkKICAgICAgICAgLCBtX2NhdGNoQmxvY2soY2F0Y2hC
bG9jaykKQEAgLTc5NywxNSArNzk4LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBsLT5t
X25leHQgPSB0aGlzOwogICAgIH0KIAotICAgIGlubGluZSBGdW5jRXhwck5vZGU6OkZ1bmNFeHBy
Tm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9k
eU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFy
YW1ldGVyKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcikKKyAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2JvZHkoYm9keSkKICAgICB7
CiAgICAgICAgIG1fYm9keS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIHBhcmFtZXRlciwgaWRlbnQp
OwogICAgIH0KIAotICAgIGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNEZWNsTm9kZShpbnQgbGlu
ZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHks
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQotICAg
ICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRnVuY0RlY2xOb2Rl
OjpGdW5jRGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQorICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9ib2R5KGJvZHkpCiAgICAgewogICAgICAgICBtX2Jv
ZHktPmZpbmlzaFBhcnNpbmcoc291cmNlLCBwYXJhbWV0ZXIsIGlkZW50KTsKQEAgLTgzNywyOSAr
ODM4LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgU3dp
dGNoTm9kZTo6U3dpdGNoTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIs
IENhc2VCbG9ja05vZGUqIGJsb2NrKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJl
cikKKyAgICBpbmxpbmUgU3dpdGNoTm9kZTo6U3dpdGNoTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQ2FzZUJsb2NrTm9kZSogYmxvY2sp
CisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhw
cikKICAgICAgICAgLCBtX2Jsb2NrKGJsb2NrKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
Q29uc3REZWNsTm9kZTo6Q29uc3REZWNsTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBpbml0KQotICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIENvbnN0RGVjbE5vZGU6OkNvbnN0RGVjbE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQs
IEV4cHJlc3Npb25Ob2RlKiBpbml0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9u
KQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgICAg
ICwgbV9pbml0KGluaXQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCbG9ja05vZGU6OkJs
b2NrTm9kZShpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIHN0YXRlbWVudHMpCi0gICAg
ICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBCbG9ja05vZGU6OkJs
b2NrTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyog
c3RhdGVtZW50cykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAs
IG1fc3RhdGVtZW50cyhzdGF0ZW1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRm9y
SW5Ob2RlOjpGb3JJbk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsLCBFeHBy
ZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQotICAgICAgICA6IFN0
YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJbk5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGwsIEV4cHJl
c3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCisgICAgICAgIDogU3Rh
dGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2luaXQoMCkKICAgICAgICAgLCBtX2xl
eHByKGwpCiAgICAgICAgICwgbV9leHByKGV4cHIpCkBAIC04NjgsMTYgKzg2OSwxNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZvckluTm9kZTo6Rm9ySW5O
b2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW4sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBT
dGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0LCBpbnQg
ZW5kT2Zmc2V0KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgRm9ySW5Ob2RlOjpGb3JJbk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgRXhwcmVz
c2lvbk5vZGUqIGluLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVt
ZW50LCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCkKKyAgICAgICAg
OiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1faW5pdCgwKQotICAgICAgICAs
IG1fbGV4cHIobmV3IChnbG9iYWxEYXRhKSBSZXNvbHZlTm9kZShsaW5lTnVtYmVyLCBpZGVudCwg
ZGl2b3QgLSBzdGFydE9mZnNldCkpCisgICAgICAgICwgbV9sZXhwcihuZXcgKGdsb2JhbERhdGEp
IFJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVudCwgZGl2b3QgLSBzdGFydE9mZnNldCkpCiAgICAg
ICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAg
ICAgICAsIG1faWRlbnRJc1ZhckRlY2wodHJ1ZSkKICAgICB7CiAgICAgICAgIGlmIChpbikgewot
ICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKGdsb2JhbERhdGEpIEFz
c2lnblJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50LCBpbik7CisgICAgICAgICAgICBBc3Np
Z25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAoZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUo
bG9jYXRpb24sIGlkZW50LCBpbik7CiAgICAgICAgICAgICBub2RlLT5zZXRFeGNlcHRpb25Tb3Vy
Y2VDb2RlKGRpdm90LCBkaXZvdCAtIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgLSBkaXZvdCk7CiAg
ICAgICAgICAgICBtX2luaXQgPSBub2RlOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuY3BwCmluZGV4IGMzMmU0YzczYTI0ZWJlYjIzM2NkNWUwMWZmZmQ2M2E0ODY4
NWM4ODYuLjAxNzIzNTljNzAzZjJiOWZlMTJiYTViMDhmMjVkZmE0M2I0OTY3YjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC01MiwxMCArNTIsMTggQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTdGF0ZW1lbnRO
b2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK3ZvaWQgU3RhdGVtZW50Tm9k
ZTo6c2V0TG9jKGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVtbikKK3sKKyAg
ICBtX2xpbmVOdW1iZXIgPSBmaXJzdExpbmU7CisgICAgbV9sYXN0TGluZSA9IGxhc3RMaW5lOwor
ICAgIG1fY29sdW1uTnVtYmVyID0gY29sdW1uOworfQorCiB2b2lkIFN0YXRlbWVudE5vZGU6OnNl
dExvYyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCiB7CiAgICAgbV9saW5lTnVtYmVyID0g
Zmlyc3RMaW5lOwogICAgIG1fbGFzdExpbmUgPSBsYXN0TGluZTsKKyAgICBtX2NvbHVtbk51bWJl
ciA9IDA7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTb3VyY2VFbGVt
ZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzUsOCArODMsOCBAQCBT
dGF0ZW1lbnROb2RlKiBTb3VyY2VFbGVtZW50czo6c2luZ2xlU3RhdGVtZW50KCkgY29uc3QKIAog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNjb3BlTm9kZSAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCi1TY29wZU5vZGU6OlNjb3BlTm9kZShKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBib29sIGluU3RyaWN0Q29udGV4dCkKLSAgICA6IFN0
YXRlbWVudE5vZGUobGluZU51bWJlcikKK1Njb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgYm9vbCBpblN0
cmljdENvbnRleHQpCisgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICwgUGFyc2Vy
QXJlbmFSZWZDb3VudGVkKGdsb2JhbERhdGEpCiAgICAgLCBtX2ZlYXR1cmVzKGluU3RyaWN0Q29u
dGV4dCA/IFN0cmljdE1vZGVGZWF0dXJlIDogTm9GZWF0dXJlcykKICAgICAsIG1fbnVtQ29uc3Rh
bnRzKDApCkBAIC04NCw4ICs5Miw4IEBAIFNjb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250CiB7CiB9CiAK
LVNjb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVO
dW1iZXIsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVu
LCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmll
clNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNv
bnN0YW50cykKLSAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKK1Njb3BlTm9kZTo6U2Nv
cGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBTb3VyY2VFbGVtZW50cyogY2hpbGRy
ZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlm
aWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVt
Q29uc3RhbnRzKQorICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAsIFBhcnNlckFy
ZW5hUmVmQ291bnRlZChnbG9iYWxEYXRhKQogICAgICwgbV9mZWF0dXJlcyhmZWF0dXJlcykKICAg
ICAsIG1fc291cmNlKHNvdXJjZSkKQEAgLTEwNywxNCArMTE1LDE0IEBAIFN0YXRlbWVudE5vZGUq
IFNjb3BlTm9kZTo6c2luZ2xlU3RhdGVtZW50KCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIFByb2dyYW1Ob2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLWlubGluZSBQcm9ncmFtTm9kZTo6UHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayog
dmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVy
ZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1
cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQotICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxpbmVO
dW1iZXIsIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFy
aWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQoraW5saW5lIFByb2dyYW1Ob2RlOjpQcm9n
cmFtTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBG
dW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVz
LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsb2NhdGlvbiwgc291cmNl
LCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1
cmVzLCBudW1Db25zdGFudHMpCiB7CiB9CiAKLVBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IFByb2dy
YW1Ob2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwg
U291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3Rh
Y2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRz
KQorUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5vZGU6OmNyZWF0ZShKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFNvdXJjZUVs
ZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5j
U3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2Rl
JiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKIHsKLSAg
ICBSZWZQdHI8UHJvZ3JhbU5vZGU+IG5vZGUgPSBuZXcgUHJvZ3JhbU5vZGUoZ2xvYmFsRGF0YSwg
bGluZU51bWJlciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssICBjYXB0dXJlZFZhcmlh
Ymxlcywgc291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKKyAgICBSZWZQdHI8UHJvZ3Jh
bU5vZGU+IG5vZGUgPSBuZXcgUHJvZ3JhbU5vZGUoZ2xvYmFsRGF0YSwgbG9jYXRpb24sIGNoaWxk
cmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCAgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVh
dHVyZXMsIG51bUNvbnN0YW50cyk7CiAKICAgICBBU1NFUlQobm9kZS0+bV9hcmVuYS5sYXN0KCkg
PT0gbm9kZSk7CiAgICAgbm9kZS0+bV9hcmVuYS5yZW1vdmVMYXN0KCk7CkBAIC0xMjUsMTQgKzEz
MywxNCBAQCBQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9kZTo6Y3JlYXRlKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gRXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5s
aW5lIEV2YWxOb2RlOjpFdmFsTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5l
TnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVu
Y3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywg
Y29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1D
b25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgc291cmNl
LCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1
cmVzLCBudW1Db25zdGFudHMpCitpbmxpbmUgRXZhbE5vZGU6OkV2YWxOb2RlKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgU291cmNlRWxl
bWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNT
dGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUm
IHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorICAgIDog
U2NvcGVOb2RlKGdsb2JhbERhdGEsIGxvY2F0aW9uLCBzb3VyY2UsIGNoaWxkcmVuLCB2YXJTdGFj
aywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykK
IHsKIH0KIAotUGFzc1JlZlB0cjxFdmFsTm9kZT4gRXZhbE5vZGU6OmNyZWF0ZShKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4s
IFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVy
U2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVh
dHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitQYXNzUmVmUHRyPEV2YWxOb2RlPiBF
dmFsTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFy
U3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRW
YXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVz
LCBpbnQgbnVtQ29uc3RhbnRzKQogewotICAgIFJlZlB0cjxFdmFsTm9kZT4gbm9kZSA9IG5ldyBF
dmFsTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNT
dGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7
CisgICAgUmVmUHRyPEV2YWxOb2RlPiBub2RlID0gbmV3IEV2YWxOb2RlKGdsb2JhbERhdGEsIGxv
Y2F0aW9uLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMs
IHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAKICAgICBBU1NFUlQobm9kZS0+bV9h
cmVuYS5sYXN0KCkgPT0gbm9kZSk7CiAgICAgbm9kZS0+bV9hcmVuYS5yZW1vdmVMYXN0KCk7CkBA
IC0xNDksMTMgKzE1NywxMyBAQCBGdW5jdGlvblBhcmFtZXRlcnM6OkZ1bmN0aW9uUGFyYW1ldGVy
cyhQYXJhbWV0ZXJOb2RlKiBmaXJzdFBhcmFtZXRlcikKICAgICAgICAgYXBwZW5kKHBhcmFtZXRl
ci0+aWRlbnQoKSk7CiB9CiAKLWlubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlO
b2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5TdHJp
Y3RDb250ZXh0KQotICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGluU3Ry
aWN0Q29udGV4dCkKK2lubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
Ym9vbCBpblN0cmljdENvbnRleHQpCisgICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbG9jYXRp
b24sIGluU3RyaWN0Q29udGV4dCkKIHsKIH0KIAotaW5saW5lIEZ1bmN0aW9uQm9keU5vZGU6OkZ1
bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwg
U291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3Rh
Y2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNvbnN0
YW50cykKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBzb3VyY2VDb2Rl
LCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIGZlYXR1
cmVzLCBudW1Db25zdGFudHMpCitpbmxpbmUgRnVuY3Rpb25Cb2R5Tm9kZTo6RnVuY3Rpb25Cb2R5
Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5j
dGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBu
dW1Db25zdGFudHMpCisgICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbG9jYXRpb24sIHNvdXJj
ZUNvZGUsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywg
ZmVhdHVyZXMsIG51bUNvbnN0YW50cykKIHsKIH0KIApAQCAtMTcyLDE0ICsxODAsMTQgQEAgdm9p
ZCBGdW5jdGlvbkJvZHlOb2RlOjpmaW5pc2hQYXJzaW5nKFBhc3NSZWZQdHI8RnVuY3Rpb25QYXJh
bWV0ZXJzPiBwYXJhbWV0ZXJzLAogICAgIG1faWRlbnQgPSBpZGVudDsKIH0KIAotRnVuY3Rpb25C
b2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQorRnVuY3Rpb25Cb2R5Tm9k
ZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgYm9vbCBpblN0cmljdENvbnRleHQpCiB7Ci0g
ICAgcmV0dXJuIG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGlu
U3RyaWN0Q29udGV4dCk7CisgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERh
dGEsIGxvY2F0aW9uLCBpblN0cmljdENvbnRleHQpOwogfQogCi1QYXNzUmVmUHRyPEZ1bmN0aW9u
Qm9keU5vZGU+IEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2
YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJl
ZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1cmVzIGZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBG
dW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0
YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBj
YXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwgQ29kZUZlYXR1
cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogewotICAgIFJlZlB0cjxGdW5jdGlvbkJv
ZHlOb2RlPiBub2RlID0gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJl
ciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVkVmFyaWFibGVzLCBzb3Vy
Y2VDb2RlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKKyAgICBSZWZQdHI8RnVuY3Rpb25Cb2R5
Tm9kZT4gbm9kZSA9IG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEsIGxvY2F0aW9uLCBj
aGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZUNv
ZGUsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOwogCiAgICAgQVNTRVJUKG5vZGUtPm1fYXJlbmEu
bGFzdCgpID09IG5vZGUpOwogICAgIG5vZGUtPm1fYXJlbmEucmVtb3ZlTGFzdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDViMTViZTQ0Y2NlZTY4MDAwNjEyMWQ2ZWJk
ZmI1NmYwYjllNmQ0ZTAuLmVkMWE4NWFhZmJjODljZTE4ZjQ1MTIwMDk4NGRjYmExMmVkNzlhZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE5vZGUgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVl
YWJsZSB7CiAgICAgcHJvdGVjdGVkOgotICAgICAgICBOb2RlKGludCk7CisgICAgICAgIE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwg
fk5vZGUoKSB7IH0KQEAgLTEzOSwxMyArMTM5LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIGludCBsaW5lTm8oKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KIAorICAgICAg
ICBpbnQgY29sdW1uTm8oKSBjb25zdCB7IHJldHVybiBtX2NvbHVtbk51bWJlcjsgfQorCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICBpbnQgbV9saW5lTnVtYmVyOworICAgICAgICBpbnQgbV9jb2x1
bW5OdW1iZXI7CiAgICAgfTsKIAogICAgIGNsYXNzIEV4cHJlc3Npb25Ob2RlIDogcHVibGljIE5v
ZGUgewogICAgIHByb3RlY3RlZDoKLSAgICAgICAgRXhwcmVzc2lvbk5vZGUoaW50LCBSZXN1bHRU
eXBlID0gUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSk7CisgICAgICAgIEV4cHJlc3Npb25Ob2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFJlc3VsdFR5cGUgPSBSZXN1bHRUeXBlOjp1bmtub3du
VHlwZSgpKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBib29sIGlzTnVtYmVyKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE3NSwxMiArMTc4LDE0IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwcm90
ZWN0ZWQ6Ci0gICAgICAgIFN0YXRlbWVudE5vZGUoaW50KTsKKyAgICAgICAgU3RhdGVtZW50Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKTsKKyAg
ICAgICAgdm9pZCBzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1u
KTsKICAgICAgICAgaW50IGZpcnN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIGxpbmVObygpOyB9CiAg
ICAgICAgIGludCBsYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdExpbmU7IH0KKyAgICAg
ICAgaW50IGNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIGNvbHVtbk5vKCk7fQogCiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0VtcHR5U3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICAgICAgdmlydHVhbCBib29sIGlzUmV0dXJuTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CkBAIC0xOTQsNyArMTk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOdWxsTm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBOdWxsTm9k
ZShpbnQpOworICAgICAgICBOdWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTIwNCw3ICsyMDksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJvb2xlYW5Ob2RlIDogcHVibGljIEV4cHJlc3Npb25O
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJvb2xlYW5Ob2RlKGludCwgYm9vbCB2YWx1ZSk7
CisgICAgICAgIEJvb2xlYW5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wgdmFsdWUp
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMjE2LDcgKzIyMSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTnVtYmVyTm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBOdW1iZXJOb2RlKGludCwgZG91Ymxl
IHZhbHVlKTsKKyAgICAgICAgTnVtYmVyTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBkb3Vi
bGUgdmFsdWUpOwogCiAgICAgICAgIGRvdWJsZSB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFs
dWU7IH0KICAgICAgICAgdm9pZCBzZXRWYWx1ZShkb3VibGUgdmFsdWUpIHsgbV92YWx1ZSA9IHZh
bHVlOyB9CkBAIC0yMzIsNyArMjM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBT
dHJpbmdOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IFN0cmluZ05vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIFN0cmluZ05vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgICAgIGNv
bnN0IElkZW50aWZpZXImIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQogCkBAIC0zNDIsNyAr
MzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWdFeHBOb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1
YmxpYzoKLSAgICAgICAgUmVnRXhwTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4s
IGNvbnN0IElkZW50aWZpZXImIGZsYWdzKTsKKyAgICAgICAgUmVnRXhwTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVy
JiBmbGFncyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0zNTMs
NyArMzU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBUaGlzTm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBUaGlzTm9kZShpbnQpOwor
ICAgICAgICBUaGlzTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTM2MSw3ICszNjYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIFJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIFJlc29sdmVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIGlu
dCBzdGFydE9mZnNldCk7CisgICAgICAgIFJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImLCBpbnQgc3RhcnRPZmZzZXQpOwogCiAgICAgICAgIGNvbnN0
IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50OyB9CiAKQEAg
LTM5MywxMSArMzk4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJyYXlOb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFycmF5Tm9k
ZShpbnQsIGludCBlbGlzaW9uKTsKLSAgICAgICAgQXJyYXlOb2RlKGludCwgRWxlbWVudE5vZGUq
KTsKLSAgICAgICAgQXJyYXlOb2RlKGludCwgaW50IGVsaXNpb24sIEVsZW1lbnROb2RlKik7Cisg
ICAgICAgIEFycmF5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQgZWxpc2lvbik7Cisg
ICAgICAgIEFycmF5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFbGVtZW50Tm9kZSopOwor
ICAgICAgICBBcnJheU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50IGVsaXNpb24sIEVs
ZW1lbnROb2RlKik7CiAKLSAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogdG9Bcmd1bWVudExpc3Qo
SlNHbG9iYWxEYXRhKiwgaW50KSBjb25zdDsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSogdG9B
cmd1bWVudExpc3QoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQpIGNvbnN0OwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNDI4LDggKzQzMyw4IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgUHJvcGVydHlMaXN0Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFByb3BlcnR5TGlzdE5vZGUoaW50LCBQcm9wZXJ0eU5vZGUqKTsKLSAg
ICAgICAgUHJvcGVydHlMaXN0Tm9kZShpbnQsIFByb3BlcnR5Tm9kZSosIFByb3BlcnR5TGlzdE5v
ZGUqKTsKKyAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQ
cm9wZXJ0eU5vZGUqKTsKKyAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBQcm9wZXJ0eU5vZGUqLCBQcm9wZXJ0eUxpc3ROb2RlKik7CiAKICAgICAgICAgdmly
dHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApOwogCkBAIC00NDAsOCArNDQ1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBPYmplY3RMaXRlcmFsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBPYmplY3RMaXRlcmFsTm9kZShpbnQpOwotICAgICAgICBPYmplY3RMaXRl
cmFsTm9kZShpbnQsIFByb3BlcnR5TGlzdE5vZGUqKTsKKyAgICAgICAgT2JqZWN0TGl0ZXJhbE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CisgICAgICAgIE9iamVjdExpdGVyYWxOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5TGlzdE5vZGUqKTsKIAogICAgIHByaXZhdGU6
CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTQ1MSw3ICs0NTYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAKICAgICBjbGFzcyBCcmFja2V0QWNjZXNzb3JOb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHBy
ZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKTsKKyAg
ICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgYm9vbCBzdWJzY3JpcHRI
YXNBc3NpZ25tZW50cyk7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGJhc2UoKSBjb25zdCB7
IHJldHVybiBtX2Jhc2U7IH0KICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3Vic2NyaXB0OyB9CkBAIC00NjksNyArNDc0LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAg
ICBEb3RBY2Nlc3Nvck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYpOworICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTsgfQogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQpAQCAt
NDg2LDggKzQ5MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQXJndW1lbnRMaXN0
Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFyZ3VtZW50TGlzdE5v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOwotICAgICAgICBBcmd1bWVudExpc3ROb2RlKGludCwg
QXJndW1lbnRMaXN0Tm9kZSosIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIEFyZ3VtZW50TGlz
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAg
QXJndW1lbnRMaXN0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBBcmd1bWVudExpc3ROb2Rl
KiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgICAgICBBcmd1bWVudExpc3ROb2RlKiBtX25leHQ7
CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CkBAIC01MDYsOCArNTExLDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOZXdFeHByTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIE5ld0V4cHJOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKLSAgICAgICAgTmV3RXhwck5v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSosIEFyZ3VtZW50c05vZGUqKTsKKyAgICAgICAgTmV3RXhw
ck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAg
TmV3RXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBBcmd1
bWVudHNOb2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01
MTgsNyArNTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFdmFsRnVuY3Rpb25D
YWxsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGludCwg
QXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRXZhbEZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKQEAgLTUyOCw3ICs1MzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVi
bGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSosIHVu
c2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsK
KyAgICAgICAgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKQEAgLTUzOSw3ICs1NDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBw
dWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVu
Y3Rpb25DYWxsUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9k
ZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KTsKKyAgICAgICAgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01NTAsNyArNTU1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhw
cmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVi
bGljOgotICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVudHNOb2RlKiwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAg
ICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgQXJndW1lbnRzTm9k
ZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU2Miw3ICs1
NjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbERvdE5vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0
YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVudHNOb2RlKiwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAg
ICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU3NSw3ICs1ODAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlIDogcHVibGlj
IEZ1bmN0aW9uQ2FsbERvdE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ2FsbEZ1bmN0aW9u
Q2FsbERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYs
IEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KTsKQEAgLTU4Myw3ICs1ODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBB
cHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRnVuY3Rpb25DYWxsRG90Tm9kZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAg
ICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNp
Z25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01OTEsNyArNTk2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVQb3N0UmVzb2x2ZU5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVi
bGljOgotICAgICAgICBQcmVQb3N0UmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwg
dW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQp
OworICAgICAgICBQcmVQb3N0UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgY29uc3QgSWRlbnRp
ZmllciYgbV9pZGVudDsKQEAgLTU5OSw3ICs2MDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIFBvc3RmaXhSZXNvbHZlTm9kZSA6IHB1YmxpYyBQcmVQb3N0UmVzb2x2ZU5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgUG9zdGZpeFJlc29sdmVOb2RlKGludCwgY29uc3QgSWRlbnRp
ZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFBvc3RmaXhSZXNvbHZlTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTYwOSw3ICs2MTQsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIFBvc3RmaXhCcmFja2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIFBvc3RmaXhCcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHBy
ZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQb3N0Zml4QnJhY2tl
dE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJl
c3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CkBAIC02MjEsNyArNjI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBQb3N0Zml4RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRo
cm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFBvc3RmaXhE
b3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVy
YXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpOworICAgICAgICBQb3N0Zml4RG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02MzMsNyArNjM4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQb3N0Zml4RXJyb3JOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgUG9zdGZpeEVycm9yTm9kZShpbnQsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFBv
c3RmaXhFcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgT3BlcmF0b3IsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTY0Myw3ICs2NDgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERlbGV0ZVJlc29sdmVOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgRGVsZXRlUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWdu
ZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAg
ICAgICBEZWxldGVSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVu
dGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjUz
LDcgKzY1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVsZXRlQnJhY2tldE5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVCcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIERlbGV0
ZUJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CkBAIC02NjQsNyArNjY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBEZWxldGVEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVsZXRlRG90Tm9kZShp
bnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBE
ZWxldGVEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwpAQCAtNjc1LDcgKzY4MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRGVs
ZXRlVmFsdWVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAg
ICAgIERlbGV0ZVZhbHVlTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIERlbGV0
ZVZhbHVlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjg1LDcgKzY5MCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVm9pZE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVm9pZE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSop
OworICAgICAgICBWb2lkTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjk1LDcgKzcw
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVHlwZU9mUmVzb2x2ZU5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVHlwZU9mUmVzb2x2
ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIFR5cGVPZlJlc29sdmVOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgICAgICBj
b25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQog
CkBAIC03MDcsNyArNzEyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBUeXBlT2ZW
YWx1ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAg
VHlwZU9mVmFsdWVOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgVHlwZU9mVmFs
dWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC03MTcsNyArNzIyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVmaXhSZXNvbHZlTm9kZSA6IHB1YmxpYyBQcmVQb3N0
UmVzb2x2ZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlZml4UmVzb2x2ZU5vZGUoaW50
LCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlZml4UmVzb2x2ZU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC03MjcsNyArNzMyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVmaXhCcmFja2V0Tm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlZml4QnJhY2tldE5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAg
ICAgICAgUHJlZml4QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC03MzksNyArNzQ0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVmaXhEb3ROb2RlIDogcHVibGljIEV4cHJlc3Np
b25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgotICAgICAgICBQcmVmaXhEb3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQcmVmaXhEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
QEAgLTc1MSw3ICs3NTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFByZWZpeEVy
cm9yTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFByZWZpeEVycm9yTm9kZShpbnQsIE9wZXJh
dG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCk7CisgICAgICAgIFByZWZpeEVycm9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBP
cGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNzYx
LDcgKzc2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVW5hcnlPcE5vZGUgOiBw
dWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVW5hcnlPcE5vZGUo
aW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSosIE9wY29kZUlEKTsKKyAgICAgICAgVW5h
cnlPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUmVzdWx0VHlwZSwgRXhwcmVzc2lvbk5v
ZGUqLCBPcGNvZGVJRCk7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiBleHByKCkgeyByZXR1cm4gbV9leHByOyB9CkBAIC03NzgsNyArNzgzLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBVbmFyeVBsdXNOb2RlIDogcHVibGljIFVuYXJ5T3BOb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFVuYXJ5UGx1c05vZGUoaW50LCBFeHByZXNzaW9uTm9kZSop
OworICAgICAgICBVbmFyeVBsdXNOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIEV4cHJlc3Npb25Ob2Rl
KiBzdHJpcFVuYXJ5UGx1cygpIHsgcmV0dXJuIGV4cHIoKTsgfQpAQCAtNzg2LDEyICs3OTEsMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOZWdhdGVOb2RlIDogcHVibGljIFVuYXJ5
T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5lZ2F0ZU5vZGUoaW50LCBFeHByZXNzaW9u
Tm9kZSopOworICAgICAgICBOZWdhdGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKik7CiAgICAgfTsKIAogICAgIGNsYXNzIEJpdHdpc2VOb3ROb2RlIDogcHVibGlj
IEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdHdpc2VOb3ROb2RlKGlu
dCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgQml0d2lzZU5vdE5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAg
RXhwcmVzc2lvbk5vZGUqIGV4cHIoKSB7IHJldHVybiBtX2V4cHI7IH0KQEAgLTgwNSw3ICs4MTAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAKICAgICBjbGFzcyBMb2dpY2FsTm90Tm9kZSA6IHB1Ymxp
YyBVbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBMb2dpY2FsTm90Tm9kZShpbnQs
IEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIExvZ2ljYWxOb3ROb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBl
bWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBMYWJlbCog
dHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBib29sIGZhbGxUaHJvdWdoTWVhbnNUcnVl
KTsKICAgICAgICAgdmlydHVhbCBib29sIGhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkgY29u
c3QgeyByZXR1cm4gZXhwcigpLT5oYXNDb25kaXRpb25Db250ZXh0Q29kZWdlbigpOyB9CkBAIC04
MTMsOCArODE4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBCaW5hcnlPcE5vZGUg
OiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQmluYXJ5T3BO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9w
Y29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgICAgICBCaW5hcnlPcE5vZGUo
aW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJpbmFy
eU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CisgICAgICAgIEJpbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBSZXN1bHRUeXBl
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFN0
cmNhdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlv
biwgUmVnaXN0ZXJJRCogbGhzID0gMCwgUmVhZE1vZGlmeVJlc29sdmVOb2RlKiBlbWl0RXhwcmVz
c2lvbkluZm9Gb3JNZSA9IDApOwogCkBAIC04MzgsNzIgKzg0Myw3MiBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIE11bHROb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBNdWx0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBNdWx0
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAg
ICAgY2xhc3MgRGl2Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgRGl2Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBEaXZOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBN
b2ROb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBNb2RO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIE1vZE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEFkZE5vZGUgOiBw
dWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFkZE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQWRkTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNBZGQoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9CiAgICAgfTsKIAogICAgIGNsYXNzIFN1Yk5vZGUgOiBwdWJsaWMgQmluYXJ5
T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFN1Yk5vZGUoaW50LCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKKyAgICAgICAgU3ViTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJ0cmFjdCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KICAgICB9OwogCiAgICAgY2xhc3MgTGVmdFNoaWZ0Tm9kZSA6IHB1YmxpYyBCaW5hcnlP
cE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTGVmdFNoaWZ0Tm9kZShpbnQsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOworICAgICAgICBMZWZ0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBSaWdodFNoaWZ0Tm9kZSA6IHB1Ymxp
YyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmlnaHRTaGlmdE5vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgUmlnaHRTaGlmdE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIFVuc2lnbmVkUmln
aHRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IFVuc2lnbmVkUmlnaHRTaGlmdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJl
c3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgVW5z
aWduZWRSaWdodFNoaWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKICAgICB9OwogCiAgICAgY2xhc3MgTGVzc05vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIExlc3NOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAg
ICAgIExlc3NOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAg
IH07CiAKICAgICBjbGFzcyBHcmVhdGVyTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAg
IHB1YmxpYzoKLSAgICAgICAgR3JlYXRlck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAg
ICAgR3JlYXRlck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAg
ICAgfTsKIAogICAgIGNsYXNzIExlc3NFcU5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIExlc3NFcU5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAg
ICAgTGVzc0VxTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAg
ICB9OwogCiAgICAgY2xhc3MgR3JlYXRlckVxTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgR3JlYXRlckVxTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwor
ICAgICAgICBHcmVhdGVyRXFOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOwogICAgIH07CiAKICAgICBjbGFzcyBUaHJvd2FibGVCaW5hcnlPcE5vZGUgOiBwdWJsaWMg
QmluYXJ5T3BOb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGludCwgUmVzdWx0VHlwZSwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpOwotICAgICAgICBUaHJvd2FibGVCaW5hcnlPcE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cyk7CisgICAgICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CkBAIC05MTEsNyArOTE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAg
Y2xhc3MgSW5zdGFuY2VPZk5vZGUgOiBwdWJsaWMgVGhyb3dhYmxlQmluYXJ5T3BOb2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIEluc3RhbmNlT2ZOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Cisg
ICAgICAgIEluc3RhbmNlT2ZOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtOTE5LDEyICs5
MjQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJbk5vZGUgOiBwdWJsaWMgVGhy
b3dhYmxlQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEluTm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICBJbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5h
cnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXF1YWxOb2RlKGludCwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CisgICAgICAgIEVxdWFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTkzMiwx
MiArOTM3LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTm90RXF1YWxOb2RlIDog
cHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBOb3RFcXVhbE5vZGUo
aW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCBy
aWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTm90RXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBTdHJpY3RFcXVh
bE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFN0cmlj
dEVxdWFsTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBTdHJpY3RFcXVhbE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05NDUsMjggKzk1MCwyOCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIE5vdFN0cmljdEVxdWFsTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgTm90U3RyaWN0RXF1YWxOb2RlKGludCwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cyk7CisgICAgICAgIE5vdFN0cmljdEVxdWFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgQml0QW5kTm9kZSA6IHB1Ymxp
YyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQml0QW5kTm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICBCaXRBbmROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBCaXRPck5vZGUgOiBwdWJsaWMg
QmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdE9yTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOworICAgICAgICBCaXRPck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEJpdFhPck5vZGUgOiBwdWJsaWMgQmlu
YXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdFhPck5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKKyAgICAgICAgQml0WE9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgLy8gbV9leHByMSAmJiBtX2V4cHIyLCBtX2V4cHIx
IHx8IG1fZXhwcjIKICAgICBjbGFzcyBMb2dpY2FsT3BOb2RlIDogcHVibGljIEV4cHJlc3Npb25O
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExvZ2ljYWxPcE5vZGUoaW50LCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgTG9naWNhbE9wZXJhdG9yKTsKKyAg
ICAgICAgTG9naWNhbE9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgTG9naWNhbE9wZXJhdG9yKTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTk4MSw3ICs5ODYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAvLyBUaGUgdGVybmFyeSBvcGVyYXRvciwgIm1fbG9naWNhbCA/IG1f
ZXhwcjEgOiBtX2V4cHIyIgogICAgIGNsYXNzIENvbmRpdGlvbmFsTm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDb25kaXRpb25hbE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSogbG9naWNhbCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIpOworICAgICAgICBDb25kaXRpb25hbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxvZ2ljYWwsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KTsKQEAgLTk5Myw3ICs5OTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlYWRN
b2RpZnlSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJs
ZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlYWRNb2RpZnlSZXNvbHZl
Tm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqICBy
aWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFJlYWRNb2RpZnlSZXNv
bHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0
b3IsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5z
aWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTAwNiw3ICsxMDExLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25SZXNvbHZlTm9kZSA6IHB1Ymxp
YyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIEFzc2lnblJlc29sdmVOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYs
IEV4cHJlc3Npb25Ob2RlKiByaWdodCk7CisgICAgICAgIEFzc2lnblJlc29sdmVOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmln
aHQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtMTAxNyw3ICsx
MDIyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWFkTW9kaWZ5QnJhY2tldE5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5QnJhY2tldE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3Is
IEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJz
Y3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDMyLDcgKzEwMzcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFzc2lnbkJyYWNrZXROb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgQXNzaWduQnJhY2tldE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhw
cmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNj
cmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAg
QXNzaWduQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUq
IGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwg
Ym9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDQ2LDcgKzEwNTEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFzc2lnbkRvdE5vZGUgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVi
bGljOgotICAgICAgICBBc3NpZ25Eb3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpOworICAgICAgICBBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUq
IHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwNTksNyArMTA2NCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgUmVhZE1vZGlmeURvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1
YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBS
ZWFkTW9kaWZ5RG90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCk7CisgICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4
cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDczLDcgKzEwNzgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFzc2lnbkVycm9yTm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIEFzc2lnbkVycm9yTm9kZShpbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFy
dE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXNzaWduRXJyb3JOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNl
dCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTEwODMsNyArMTA4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
Q29tbWFOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgUGFyc2VyQXJlbmFEZWxl
dGFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29tbWFOb2RlKGludCwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpOworICAgICAgICBDb21tYU5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjIpOwogCiAgICAgICAgIHVzaW5nIFBhcnNlckFyZW5hRGVsZXRhYmxlOjpvcGVyYXRv
ciBuZXc7CiAKQEAgLTEwOTgsNyArMTEwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAg
IGNsYXNzIENvbnN0RGVjbE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgQ29uc3REZWNsTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNz
aW9uTm9kZSopOworICAgICAgICBDb25zdERlY2xOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgICAgIGJvb2wgaGFz
SW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBtX2luaXQ7IH0KICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQoKSB7IHJldHVybiBtX2lkZW50OyB9CkBAIC0xMTE4LDcgKzExMjMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnN0U3RhdGVtZW50Tm9kZSA6IHB1Ymxp
YyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENvbnN0U3RhdGVtZW50Tm9k
ZShpbnQsIENvbnN0RGVjbE5vZGUqIG5leHQpOworICAgICAgICBDb25zdFN0YXRlbWVudE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgQ29uc3REZWNsTm9kZSogbmV4dCk7CiAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMTQzLDcgKzExNDgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIEJsb2NrTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEJsb2NrTm9kZShpbnQsIFNvdXJjZUVsZW1lbnRzKiA9IDAp
OworICAgICAgICBCbG9ja05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU291cmNlRWxlbWVu
dHMqID0gMCk7CiAKICAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50KCkgY29u
c3Q7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnQoKSBjb25zdDsKQEAgLTEx
NTgsNyArMTE2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRW1wdHlTdGF0ZW1l
bnROb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRW1w
dHlTdGF0ZW1lbnROb2RlKGludCk7CisgICAgICAgIEVtcHR5U3RhdGVtZW50Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
QEAgLTExNjgsNyArMTE3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIAogICAgIGNsYXNzIERl
YnVnZ2VyU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIERlYnVnZ2VyU3RhdGVtZW50Tm9kZShpbnQpOworICAgICAgICBEZWJ1Z2dlclN0
YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTExNzYsNyArMTE4MSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgRXhwclN0YXRlbWVudE5vZGUgOiBwdWJsaWMgU3RhdGVtZW50
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBFeHByU3RhdGVtZW50Tm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKik7CisgICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIo
KSBjb25zdCB7IHJldHVybiBtX2V4cHI7IH0KIApAQCAtMTE5MCw4ICsxMTk1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBWYXJTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVu
dE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVmFyU3RhdGVtZW50Tm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKik7ICAgICAgICAKLQorICAgICAgICBWYXJTdGF0ZW1lbnROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAgICAgcHJpdmF0ZToKICAgICAgICAg
dmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApOwogCkBAIC0xMjAwLDcgKzEyMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIElmTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIElmTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5v
ZGUqIGlmQmxvY2spOworICAgICAgICBJZk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jayk7CiAKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyMTEsNyArMTIxNSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWZFbHNlTm9kZSA6IHB1YmxpYyBJZk5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgSWZFbHNlTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25k
aXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5vZGUqIGVsc2VCbG9jayk7
CisgICAgICAgIElmRWxzZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxz
ZUJsb2NrKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyMjEs
NyArMTIyNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRG9XaGlsZU5vZGUgOiBw
dWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBEb1doaWxlTm9kZShp
bnQsIFN0YXRlbWVudE5vZGUqLCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBEb1doaWxlTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTdGF0ZW1lbnROb2RlKiwgRXhwcmVzc2lvbk5vZGUq
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyMzIsNyArMTIz
Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgV2hpbGVOb2RlIDogcHVibGljIFN0
YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgV2hpbGVOb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7CisgICAgICAgIFdoaWxlTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqKTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyNDMsNyArMTI0Nyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgRm9yTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEZvck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIzLCBTdGF0ZW1lbnRO
b2RlKik7CisgICAgICAgIEZvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MywgU3RhdGVtZW50Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
OwpAQCAtMTI1Niw4ICsxMjYwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGb3JJ
bk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25E
YXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZvckluTm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
KiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7Ci0gICAgICAgIEZvckluTm9kZShK
U0dsb2JhbERhdGEqLCBpbnQsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSosIEV4
cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIGludCBkaXZvdCwgaW50IHN0YXJ0T2Zmc2V0
LCBpbnQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRm9ySW5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7Cisg
ICAgICAgIEZvckluTm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9kZSosIFN0YXRl
bWVudE5vZGUqLCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9mZnNldCk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjcxLDggKzEyNzUsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnRpbnVlTm9kZSA6IHB1YmxpYyBTdGF0
ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoK
LSAgICAgICAgQ29udGludWVOb2RlKEpTR2xvYmFsRGF0YSosIGludCk7Ci0gICAgICAgIENvbnRp
bnVlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgQ29udGludWVOb2RlKEpT
R2xvYmFsRGF0YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOworICAgICAgICBDb250aW51ZU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICAK
ICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjgyLDggKzEyODYsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJyZWFrTm9kZSA6IHB1YmxpYyBTdGF0ZW1l
bnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgQnJlYWtOb2RlKEpTR2xvYmFsRGF0YSosIGludCk7Ci0gICAgICAgIEJyZWFrTm9kZShp
bnQsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgQnJlYWtOb2RlKEpTR2xvYmFsRGF0YSos
IGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOworICAgICAgICBCcmVha05vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjkzLDcgKzEyOTcsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIFJldHVybk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGlj
IFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJldHVybk5v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSogdmFsdWUpOworICAgICAgICBSZXR1cm5Ob2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSk7CiAKICAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQogCkBAIC0xMzA3LDcgKzEz
MTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFdpdGhOb2RlIDogcHVibGljIFN0
YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgV2l0aE5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSosIFN0YXRlbWVudE5vZGUqLCB1aW50MzJfdCBkaXZvdCwgdWludDMyX3QgZXhwcmVz
c2lvbkxlbmd0aCk7CisgICAgICAgIFdpdGhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIHVpbnQzMl90IGRpdm90LCB1aW50MzJfdCBl
eHByZXNzaW9uTGVuZ3RoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
QEAgLTEzMjAsNyArMTMyNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTGFiZWxO
b2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0
YSB7CiAgICAgcHVibGljOgotICAgICAgICBMYWJlbE5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBTdGF0ZW1lbnROb2RlKik7CisgICAgICAgIExhYmVsTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBTdGF0ZW1lbnROb2RlKik7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMzMxLDcgKzEzMzUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFRocm93Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnRO
b2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgVGhyb3dOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgVGhyb3dOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgog
ICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMzQxLDcgKzEzNDUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIFRyeU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVi
bGljOgotICAgICAgICBUcnlOb2RlKGludCwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0
IElkZW50aWZpZXImIGV4Y2VwdGlvbklkZW50LCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2NrLCBT
dGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spOworICAgICAgICBUcnlOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBjb25zdCBJZGVudGlmaWVyJiBl
eGNlcHRpb25JZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywgU3RhdGVtZW50Tm9kZSog
ZmluYWxseUJsb2NrKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAg
LTEzNzAsOCArMTM3NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIERlY2xh
cmF0aW9uU3RhY2tzOjpWYXJTdGFjayBWYXJTdGFjazsKICAgICAgICAgdHlwZWRlZiBEZWNsYXJh
dGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwogCi0gICAgICAgIFNjb3Bl
Tm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGJvb2wgaW5TdHJpY3RDb250ZXh0KTsKLSAgICAgICAg
U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgY29uc3QgU291cmNlQ29kZSYsIFNvdXJjZUVs
ZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIENvZGVG
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIFNjb3BlTm9kZShKU0dsb2JhbERh
dGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sIGluU3RyaWN0Q29udGV4dCk7CisgICAg
ICAgIFNjb3BlTm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBTb3VyY2VDb2RlJiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sq
LCBJZGVudGlmaWVyU2V0JiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAg
ICAgICB1c2luZyBQYXJzZXJBcmVuYVJlZkNvdW50ZWQ6Om9wZXJhdG9yIG5ldzsKIApAQCAtMTQz
MywxMiArMTQzNywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBQcm9ncmFtTm9kZSA6
IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGJv
b2wgaXNGdW5jdGlvbk5vZGUgPSBmYWxzZTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJv
Z3JhbU5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFy
U3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUm
LCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxQcm9ncmFtTm9kZT4gY3JlYXRlKEpTR2xvYmFsRGF0YSosIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRp
ZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFu
dHMpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNGdW5jdGlvbiA9IGZhbHNl
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50
LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJT
ZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsK
KyAgICAgICAgUHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVy
U2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7
CiAKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogICAgIH07CkBAIC0xNDQ2LDEyICsxNDUwLDEyIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEV2YWxOb2RlIDogcHVibGljIFNjb3BlTm9kZSB7
CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBpc0Z1bmN0aW9uTm9kZSA9
IGZhbHNlOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmFsTm9kZT4gY3JlYXRlKEpTR2xv
YmFsRGF0YSosIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sq
LCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51
bUNvbnN0YW50cyk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2YWxOb2RlPiBjcmVhdGUo
SlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU291cmNlRWxlbWVudHMqLCBW
YXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29k
ZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgc3RhdGljIGNv
bnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICBFdmFsTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sq
LCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2Rl
RmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBFdmFsTm9kZShKU0dsb2JhbERh
dGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwg
RnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CiAgICAg
fTsKQEAgLTE0NjgsOCArMTQ3Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0
aW9uQm9keU5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0
YXRpYyBjb25zdCBib29sIGlzRnVuY3Rpb25Ob2RlID0gdHJ1ZTsKLSAgICAgICAgc3RhdGljIEZ1
bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIGJvb2wgaXNTdHJpY3RN
b2RlKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rpb25Cb2R5Tm9kZT4gY3JlYXRl
KEpTR2xvYmFsRGF0YSosIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9u
U3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywg
aW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIHN0YXRpYyBGdW5jdGlvbkJvZHlOb2RlKiBjcmVh
dGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCBpc1N0cmljdE1v
ZGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBjcmVhdGUo
SlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU291cmNlRWxlbWVudHMqLCBW
YXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29k
ZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgRnVuY3Rpb25Q
YXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgp
OyB9CiAgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
YW1ldGVycy0+c2l6ZSgpOyB9CkBAIC0xNDg2LDggKzE0OTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gdHJ1ZTsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBi
b29sIGluU3RyaWN0Q29udGV4dCk7Ci0gICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxE
YXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElk
ZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzKTsKKyAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBib29sIGluU3RyaWN0Q29udGV4dCk7CisgICAgICAgIEZ1bmN0aW9u
Qm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU291cmNlRWxl
bWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3Qg
U291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAg
SWRlbnRpZmllciBtX2lkZW50OwogICAgICAgICBJZGVudGlmaWVyIG1faW5mZXJyZWROYW1lOwpA
QCAtMTQ5Niw3ICsxNTAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jRXhw
ck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRnVu
Y0V4cHJOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uQm9keU5vZGUqLCBjb25z
dCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsKKyAgICAgICAgRnVuY0V4cHJOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbkJvZHlO
b2RlKiwgY29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRlck5vZGUqID0gMCk7CiAKICAgICAgICAg
RnVuY3Rpb25Cb2R5Tm9kZSogYm9keSgpIHsgcmV0dXJuIG1fYm9keTsgfQogCkBAIC0xNTEwLDcg
KzE1MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmNEZWNsTm9kZSA6IHB1
YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZ1bmNEZWNsTm9kZShp
bnQsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbkJvZHlOb2RlKiwgY29uc3QgU291cmNlQ29k
ZSYsIFBhcmFtZXRlck5vZGUqID0gMCk7CisgICAgICAgIEZ1bmNEZWNsTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Cb2R5Tm9kZSosIGNvbnN0
IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOwogCiAgICAgICAgIEZ1bmN0aW9uQm9k
eU5vZGUqIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KIApAQCAtMTU2MSw3ICsxNTY1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBTd2l0Y2hOb2RlIDogcHVibGljIFN0YXRlbWVu
dE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgU3dpdGNoTm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiwgQ2FzZUJsb2NrTm9kZSopOworICAgICAgICBTd2l0Y2hOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgQ2FzZUJsb2NrTm9kZSopOwogCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuY3BwCmluZGV4IDU1OGY1MGU1ZmIzMDUzNGM2NjI0ZTc3NDljYjA0ZTY5NTJiYzkyNjMuLjRm
ZDY3MWZiNzM1ZjFkZDIxNTExMTI5MzMwMzIxODRmMzhiYzc0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB0ZW1wbGF0ZSA8U291
cmNlRWxlbWVudHNNb2RlIG1vZGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVu
dHMgUGFyc2VyPAogICAgIGJvb2wgc2Vlbk5vbkRpcmVjdGl2ZSA9IGZhbHNlOwogICAgIGNvbnN0
IElkZW50aWZpZXIqIGRpcmVjdGl2ZSA9IDA7CiAgICAgdW5zaWduZWQgZGlyZWN0aXZlTGl0ZXJh
bExlbmd0aCA9IDA7Ci0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBtX3Rva2VuLm1faW5mby5z
dGFydE9mZnNldDsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IG1fdG9rZW4ubV9sb2NhdGlv
bi5zdGFydE9mZnNldDsKICAgICB1bnNpZ25lZCBvbGRMYXN0TGluZU51bWJlciA9IG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCk7CiAgICAgdW5zaWduZWQgb2xkTGluZU51bWJlciA9IG1fbGV4ZXIt
PmxpbmVOdW1iZXIoKTsKICAgICBib29sIGhhc1NldFN0cmljdCA9IGZhbHNlOwpAQCAtMTcyLDYg
KzE3Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyRGVj
bGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFZBUikp
OworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGlu
dCBzdGFydCA9IHRva2VuTGluZSgpOwogICAgIGludCBlbmQgPSAwOwogICAgIGludCBzY3JhdGNo
OwpAQCAtMTgyLDIwICsxODMsMjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xhcmF0aW8KICAgICBmYWls
SWZUcnVlKG1fZXJyb3IpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7CiAgICAg
Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVmFyU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIHZhckRlY2xzLCBzdGFydCwgZW5kKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVWYXJTdGF0ZW1lbnQobG9jYXRpb24sIHZhckRlY2xzLCBzdGFydCwgZW5kKTsKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb25zdERlY2xhcmF0aW9uKFRy
ZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChDT05TVFRPS0VOKSk7Cisg
ICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgaW50IHN0
YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVuZCA9IDA7CiAgICAgVHJlZUNvbnN0RGVjbExp
c3QgY29uc3REZWNscyA9IHBhcnNlQ29uc3REZWNsYXJhdGlvbkxpc3QoY29udGV4dCk7CiAgICAg
ZmFpbElmVHJ1ZShtX2Vycm9yKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwog
ICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnN0U3RhdGVtZW50KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGNvbnN0RGVjbHMsIHN0YXJ0LCBlbmQpOworICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUNvbnN0U3RhdGVtZW50KGxvY2F0aW9uLCBjb25zdERlY2xzLCBzdGFydCwgZW5k
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTIxMCw2ICsyMTIsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlRG9XaGlsZVN0YXRlbQogICAgIGVuZExvb3AoKTsKICAgICBmYWlsSWZGYWxz
ZShzdGF0ZW1lbnQpOwogICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CisgICAgSlNUb2tl
bkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgY29uc3VtZU9yRmFpbChX
SElMRSk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwogICAgIFRyZWVFeHByZXNzaW9u
IGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CkBAIC0yMTcsMTMgKzIyMCwxNCBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlRG9XaGlsZVN0YXRlbQogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAg
ICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIG5leHQoKTsgLy8gQWx3YXlzIHBlcmZv
cm1zIGF1dG9tYXRpYyBzZW1pY29sb24gaW5zZXJ0aW9uLgotICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZURvV2hpbGVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3RhdGVtZW50
LCBleHByLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZURv
V2hpbGVTdGF0ZW1lbnQobG9jYXRpb24sIHN0YXRlbWVudCwgZXhwciwgc3RhcnRMaW5lLCBlbmRM
aW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VXaGls
ZVN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goV0hJ
TEUpKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAg
ICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogICAgIGNvbnN1bWVP
ckZhaWwoT1BFTlBBUkVOKTsKQEAgLTIzNiw3ICsyNDAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlV2hpbGVTdGF0
ZW1lbgogICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4
dCwgdW51c2VkKTsKICAgICBlbmRMb29wKCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsK
LSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaGlsZVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBleHByLCBzdGF0ZW1lbnQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlV2hpbGVTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIHN0YXRlbWVu
dCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4KQEAgLTI0NSw2ICsyNDksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVF
eHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xhcmF0aQogICAgIFRyZWVF
eHByZXNzaW9uIHZhckRlY2xzID0gMDsKICAgICBkbyB7CiAgICAgICAgIGRlY2xhcmF0aW9ucysr
OworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAg
ICAgICAgbmV4dCgpOwogICAgICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAgICAgIApAQCAt
MjY1LDExICsyNzAsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJEZWNsYXJhdGkKICAgICAgICAgICAgIGxh
c3RJbml0aWFsaXplciA9IGluaXRpYWxpemVyOwogICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5p
dGlhbGl6ZXIpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2Rl
ID0gY29udGV4dC5jcmVhdGVBc3NpZ25SZXNvbHZlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
ICpuYW1lLCBpbml0aWFsaXplciwgdmFyU3RhcnQsIHZhckRpdm90LCBsYXN0VG9rZW5FbmQoKSk7
CisgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gY29udGV4dC5jcmVhdGVBc3NpZ25S
ZXNvbHZlKGxvY2F0aW9uLCAqbmFtZSwgaW5pdGlhbGl6ZXIsIHZhclN0YXJ0LCB2YXJEaXZvdCwg
bGFzdFRva2VuRW5kKCkpOwogICAgICAgICAgICAgaWYgKCF2YXJEZWNscykKICAgICAgICAgICAg
ICAgICB2YXJEZWNscyA9IG5vZGU7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
dmFyRGVjbHMgPSBjb250ZXh0LmNvbWJpbmVDb21tYU5vZGVzKG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIHZhckRlY2xzLCBub2RlKTsKKyAgICAgICAgICAgICAgICB2YXJEZWNscyA9IGNvbnRl
eHQuY29tYmluZUNvbW1hTm9kZXMobG9jYXRpb24sIHZhckRlY2xzLCBub2RlKTsKICAgICAgICAg
fQogICAgIH0gd2hpbGUgKG1hdGNoKENPTU1BKSk7CiAgICAgcmV0dXJuIHZhckRlY2xzOwpAQCAt
MjgyLDYgKzI4Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNvbnN0RGVj
bExpc3QgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29uc3REZWNsCiAgICAgVHJlZUNvbnN0RGVj
bExpc3QgY29uc3REZWNscyA9IDA7CiAgICAgVHJlZUNvbnN0RGVjbExpc3QgdGFpbCA9IDA7CiAg
ICAgZG8geworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigp
KTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXIqIG5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKQEAgLTI5NCw3
ICszMDAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVDb25zdERlY2xMaXN0
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnN0RGVjbAogICAgICAgICAgICAgbmV4dChUcmVl
QnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7IC8vIGNvbnN1bWUgJz0nCiAgICAgICAgICAgICBp
bml0aWFsaXplciA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAg
IH0KLSAgICAgICAgdGFpbCA9IGNvbnRleHQuYXBwZW5kQ29uc3REZWNsKG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIHRhaWwsIG5hbWUsIGluaXRpYWxpemVyKTsKKyAgICAgICAgdGFpbCA9IGNv
bnRleHQuYXBwZW5kQ29uc3REZWNsKGxvY2F0aW9uLCB0YWlsLCBuYW1lLCBpbml0aWFsaXplcik7
CiAgICAgICAgIGlmICghY29uc3REZWNscykKICAgICAgICAgICAgIGNvbnN0RGVjbHMgPSB0YWls
OwogICAgIH0gd2hpbGUgKG1hdGNoKENPTU1BKSk7CkBAIC0zMDUsNiArMzExLDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoVHJlZUJ1aWxk
ZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKEZPUikpOworICAgIEpTVG9rZW5Mb2Nh
dGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tl
bkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwpAQCAt
MzUyLDcgKzM1OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgICAgIGVuZExvb3Ao
KTsKICAgICAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICAgICAgCi0gICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBm
b3JJblRhcmdldCwgZm9ySW5Jbml0aWFsaXplciwgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0
LCBpbkxvY2F0aW9uLCBleHByRW5kLCBpbml0U3RhcnQsIGluaXRFbmQsIHN0YXJ0TGluZSwgZW5k
TGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChsb2NhdGlvbiwg
Zm9ySW5UYXJnZXQsIGZvckluSW5pdGlhbGl6ZXIsIGV4cHIsIHN0YXRlbWVudCwgZGVjbHNTdGFy
dCwgaW5Mb2NhdGlvbiwgZXhwckVuZCwgaW5pdFN0YXJ0LCBpbml0RW5kLCBzdGFydExpbmUsIGVu
ZExpbmUpOwogICAgIH0KICAgICAKICAgICBpZiAoIW1hdGNoKFNFTUlDT0xPTikpIHsKQEAgLTM4
OCw3ICszOTUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAgICAgICBUcmVlU3RhdGVt
ZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CiAgICAgICAg
IGVuZExvb3AoKTsKICAgICAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKLSAgICAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlRm9yTG9vcChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBkZWNs
cywgY29uZGl0aW9uLCBpbmNyZW1lbnQsIHN0YXRlbWVudCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsK
KyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9yTG9vcChsb2NhdGlvbiwgZGVjbHMsIGNv
bmRpdGlvbiwgaW5jcmVtZW50LCBzdGF0ZW1lbnQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiAgICAg
fQogICAgIAogICAgIC8vIEZvci1pbiBsb29wCkBAIC00MDUsMTMgKzQxMiwxNCBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRm9yU3RhdGVtZW50KAogICAgIGVuZExvb3AoKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1l
bnQpOwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCBkZWNscywgZXhwciwgc3RhdGVtZW50LCBkZWNsc1N0YXJ0LCBkZWNs
c0VuZCwgZXhwckVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVGb3JJbkxvb3AobG9jYXRpb24sIGRlY2xzLCBleHByLCBzdGF0ZW1lbnQsIGRlY2xzU3Rh
cnQsIGRlY2xzRW5kLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJyZWFrU3RhdGVtZW50KFRyZWVCdWls
ZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChCUkVBSykpOworICAgIEpTVG9rZW5M
b2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBzdGFydENvbCA9IHRv
a2VuU3RhcnQoKTsKICAgICBpbnQgZW5kQ29sID0gdG9rZW5FbmQoKTsKICAgICBpbnQgc3RhcnRM
aW5lID0gdG9rZW5MaW5lKCk7CkBAIC00MjAsNyArNDI4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJyZWFrU3Rh
dGVtZW4KICAgICAKICAgICBpZiAoYXV0b1NlbWlDb2xvbigpKSB7CiAgICAgICAgIGZhaWxJZkZh
bHNlV2l0aE1lc3NhZ2UoYnJlYWtJc1ZhbGlkKCksICInYnJlYWsnIGlzIG9ubHkgdmFsaWQgaW5z
aWRlIGEgc3dpdGNoIG9yIGxvb3Agc3RhdGVtZW50Iik7Ci0gICAgICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUJyZWFrU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHN0YXJ0Q29s
LCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNy
ZWF0ZUJyZWFrU3RhdGVtZW50KGxvY2F0aW9uLCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUs
IGVuZExpbmUpOwogICAgIH0KICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAgY29uc3QgSWRl
bnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKQEAgLTQyOSwxMyArNDM3LDE0
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VCcmVha1N0YXRlbWVuCiAgICAgZW5kTGluZSA9IHRva2VuTGluZSgpOwog
ICAgIG5leHQoKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwotICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCks
IGlkZW50LCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KGxvY2F0aW9uLCBpZGVudCwgc3RhcnRDb2ws
IGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb250aW51ZVN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4
dCkKIHsKICAgICBBU1NFUlQobWF0Y2goQ09OVElOVUUpKTsKKyAgICBKU1Rva2VuTG9jYXRpb24g
bG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgc3RhcnRDb2wgPSB0b2tlblN0YXJ0
KCk7CiAgICAgaW50IGVuZENvbCA9IHRva2VuRW5kKCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRv
a2VuTGluZSgpOwpAQCAtNDQ0LDcgKzQ1Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb250aW51ZVN0YXRlCiAg
ICAgCiAgICAgaWYgKGF1dG9TZW1pQ29sb24oKSkgewogICAgICAgICBmYWlsSWZGYWxzZVdpdGhN
ZXNzYWdlKGNvbnRpbnVlSXNWYWxpZCgpLCAiJ2NvbnRpbnVlJyBpcyBvbmx5IHZhbGlkIGluc2lk
ZSBhIGxvb3Agc3RhdGVtZW50Iik7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnRp
bnVlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHN0YXJ0Q29sLCBlbmRDb2ws
IHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnRp
bnVlU3RhdGVtZW50KGxvY2F0aW9uLCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExp
bmUpOwogICAgIH0KICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAgY29uc3QgSWRlbnRpZmll
ciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKQEAgLTQ1NSwxMyArNDY0LDE0IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VDb250aW51ZVN0YXRlCiAgICAgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgIG5l
eHQoKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwotICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGlk
ZW50LCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGxvY2F0aW9uLCBpZGVudCwgc3RhcnRDb2ws
IGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VSZXR1cm5TdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQp
CiB7CiAgICAgQVNTRVJUKG1hdGNoKFJFVFVSTikpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5p
c0Z1bmN0aW9uKCkpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBpbnQg
ZW5kTGluZSA9IHN0YXJ0TGluZTsKQEAgLTQ3NCwyMCArNDg0LDIxIEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VSZXR1
cm5TdGF0ZW1lCiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIGVuZExpbmUgID0g
dG9rZW5MaW5lKCk7CiAgICAgaWYgKGF1dG9TZW1pQ29sb24oKSkKLSAgICAgICAgcmV0dXJuIGNv
bnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIDAs
IHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZVJldHVyblN0YXRlbWVudChsb2NhdGlvbiwgMCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5l
LCBlbmRMaW5lKTsKICAgICBUcmVlRXhwcmVzc2lvbiBleHByID0gcGFyc2VFeHByZXNzaW9uKGNv
bnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGV4cHIpOwogICAgIGVuZCA9IGxhc3RUb2tlbkVuZCgp
OwogICAgIGlmIChtYXRjaChTRU1JQ09MT04pKQogICAgICAgICBlbmRMaW5lICA9IHRva2VuTGlu
ZSgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIs
IHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlUmV0dXJuU3RhdGVtZW50KGxvY2F0aW9uLCBleHByLCBzdGFydCwgZW5kLCBzdGFydExpbmUs
IGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZVRocm93U3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRj
aChUSFJPVykpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OwogICAgIGludCBlU3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRv
a2VuTGluZSgpOwogICAgIG5leHQoKTsKQEAgLTUwMCwxMyArNTExLDE0IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VU
aHJvd1N0YXRlbWVuCiAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBmYWlsSWZG
YWxzZShhdXRvU2VtaUNvbG9uKCkpOwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVRo
cm93U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIGVTdGFydCwgZUVu
ZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVUaHJvd1N0
YXRlbWVudChsb2NhdGlvbiwgZXhwciwgZVN0YXJ0LCBlRW5kLCBzdGFydExpbmUsIGVuZExpbmUp
OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVdpdGhTdGF0
ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFdJVEgpKTsK
KyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBmYWls
SWZUcnVlV2l0aE1lc3NhZ2Uoc3RyaWN0TW9kZSgpLCAiJ3dpdGgnIHN0YXRlbWVudHMgYXJlIG5v
dCB2YWxpZCBpbiBzdHJpY3QgbW9kZSIpOwogICAgIGN1cnJlbnRTY29wZSgpLT5zZXROZWVkc0Z1
bGxBY3RpdmF0aW9uKCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwpAQCAtNTIz
LDEzICs1MzUsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVdpdGhTdGF0ZW1lbnQKICAgICBUcmVlU3RhdGVtZW50
IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CiAgICAgZmFpbElm
RmFsc2Uoc3RhdGVtZW50KTsKICAgICAKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaXRoU3Rh
dGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIHN0YXRlbWVudCwgc3RhcnQs
IGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaXRo
U3RhdGVtZW50KGxvY2F0aW9uLCBleHByLCBzdGF0ZW1lbnQsIHN0YXJ0LCBlbmQsIHN0YXJ0TGlu
ZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlU3dpdGNoU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVCht
YXRjaChTV0lUQ0gpKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlv
bigpKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgpOwogICAg
IGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKQEAgLTU1MCw3ICs1NjMsNyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
U3dpdGNoU3RhdGVtZQogICAgIGVuZFN3aXRjaCgpOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VC
UkFDRSk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlU3dpdGNoU3RhdGVtZW50KG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIGZpcnN0Q2xhdXNlcywgZGVmYXVsdENsYXVz
ZSwgc2Vjb25kQ2xhdXNlcywgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIGZpcnN0Q2xhdXNlcywgZGVm
YXVsdENsYXVzZSwgc2Vjb25kQ2xhdXNlcywgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICAKIH0K
IApAQCAtNTk4LDYgKzYxMSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlVHJ5U3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVCht
YXRjaChUUlkpKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigp
KTsKICAgICBUcmVlU3RhdGVtZW50IHRyeUJsb2NrID0gMDsKICAgICBjb25zdCBJZGVudGlmaWVy
KiBpZGVudCA9ICZtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwog
ICAgIFRyZWVTdGF0ZW1lbnQgY2F0Y2hCbG9jayA9IDA7CkBAIC02MzQsMzcgKzY0OCwzOSBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlVHJ5U3RhdGVtZW50KAogICAgICAgICBmYWlsSWZGYWxzZShmaW5hbGx5QmxvY2sp
OwogICAgIH0KICAgICBmYWlsSWZGYWxzZShjYXRjaEJsb2NrIHx8IGZpbmFsbHlCbG9jayk7Ci0g
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVHJ5U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIHRyeUJsb2NrLCBpZGVudCwgY2F0Y2hCbG9jaywgZmluYWxseUJsb2NrLCBmaXJzdExp
bmUsIGxhc3RMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVUcnlTdGF0ZW1lbnQobG9j
YXRpb24sIHRyeUJsb2NrLCBpZGVudCwgY2F0Y2hCbG9jaywgZmluYWxseUJsb2NrLCBmaXJzdExp
bmUsIGxhc3RMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VEZWJ1Z2dlclN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NF
UlQobWF0Y2goREVCVUdHRVIpKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5M
b2NhdGlvbigpKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVu
ZExpbmUgPSBzdGFydExpbmU7CiAgICAgbmV4dCgpOwogICAgIGlmIChtYXRjaChTRU1JQ09MT04p
KQogICAgICAgICBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBmYWlsSWZGYWxzZShhdXRv
U2VtaUNvbG9uKCkpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZURlYnVnZ2VyKG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlRGVidWdnZXIobG9jYXRpb24sIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQmxvY2tTdGF0ZW1lbnQoVHJl
ZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKE9QRU5CUkFDRSkpOworICAg
IEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBzdGFy
dCA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkp
IHsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCbG9ja1N0
YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCAwLCBzdGFydCwgbV9sYXN0TGluZSk7
CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2NrU3RhdGVtZW50KGxvY2F0aW9uLCAw
LCBzdGFydCwgbV9sYXN0TGluZSk7CiAgICAgfQogICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdWJ0
cmVlID0gcGFyc2VTb3VyY2VFbGVtZW50czxEb250Q2hlY2tGb3JTdHJpY3RNb2RlPihjb250ZXh0
KTsKICAgICBmYWlsSWZGYWxzZShzdWJ0cmVlKTsKICAgICBtYXRjaE9yRmFpbChDTE9TRUJSQUNF
KTsKICAgICBuZXh0KCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3VidHJlZSwgc3RhcnQsIG1fbGFzdExpbmUpOwor
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2NrU3RhdGVtZW50KGxvY2F0aW9uLCBzdWJ0cmVl
LCBzdGFydCwgbV9sYXN0TGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+
CkBAIC02ODUsOSArNzAxLDExIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnQoVHJlCiAgICAgY2FzZSBG
VU5DVElPTjoKICAgICAgICAgZmFpbElmRmFsc2VJZlN0cmljdFdpdGhNZXNzYWdlKG1fc3RhdGVt
ZW50RGVwdGggPT0gMSwgIkZ1bmN0aW9ucyBjYW5ub3QgYmUgZGVjbGFyZWQgaW4gYSBuZXN0ZWQg
YmxvY2sgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25EZWNs
YXJhdGlvbihjb250ZXh0KTsKLSAgICBjYXNlIFNFTUlDT0xPTjoKKyAgICBjYXNlIFNFTUlDT0xP
TjogeworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsK
ICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFbXB0eVN0YXRl
bWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRW1wdHlTdGF0ZW1lbnQobG9jYXRpb24pOworICAgIH0KICAgICBjYXNlIElGOgogICAg
ICAgICByZXR1cm4gcGFyc2VJZlN0YXRlbWVudChjb250ZXh0KTsKICAgICBjYXNlIERPOgpAQCAt
NzIzLDcgKzc0MSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnQoVHJlCiAgICAgY2FzZSBTVFJJTkc6
CiAgICAgICAgIGRpcmVjdGl2ZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBpZiAo
ZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkKLSAgICAgICAgICAgICpkaXJlY3RpdmVMaXRlcmFsTGVu
Z3RoID0gbV90b2tlbi5tX2luZm8uZW5kT2Zmc2V0IC0gbV90b2tlbi5tX2luZm8uc3RhcnRPZmZz
ZXQ7CisgICAgICAgICAgICAqZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IG1fdG9rZW4ubV9sb2Nh
dGlvbi5lbmRPZmZzZXQgLSBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQ7CiAgICAgICAg
IG5vblRyaXZpYWxFeHByZXNzaW9uQ291bnQgPSBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQ7
CiAgICAgZGVmYXVsdDoKICAgICAgICAgVHJlZVN0YXRlbWVudCBleHByU3RhdGVtZW50ID0gcGFy
c2VFeHByZXNzaW9uU3RhdGVtZW50KGNvbnRleHQpOwpAQCAtNzU2LDEyICs3NzQsMTIgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkoVHJl
ZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKQotICAgICAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgc3RyaWN0TW9kZSgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rp
b25Cb2R5KHRva2VuTG9jYXRpb24oKSwgc3RyaWN0TW9kZSgpKTsKICAgICBEZXB0aE1hbmFnZXIg
c3RhdGVtZW50RGVwdGgoJm1fc3RhdGVtZW50RGVwdGgpOwogICAgIG1fc3RhdGVtZW50RGVwdGgg
PSAwOwogICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGdW5jdGlvbkJvZHlCdWlsZGVyIGJvZHlC
dWlsZGVyKGNvbnN0X2Nhc3Q8SlNHbG9iYWxEYXRhKj4obV9nbG9iYWxEYXRhKSwgbV9sZXhlci5n
ZXQoKSk7CiAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50czxDaGVja0ZvclN0cmlj
dE1vZGU+KGJvZHlCdWlsZGVyKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25C
b2R5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHN0cmljdE1vZGUoKSk7CisgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHRva2VuTG9jYXRpb24oKSwgc3RyaWN0TW9kZSgp
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTc4NiwyMCArODA0LDIx
IEBAIHRlbXBsYXRlIDxGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJlbWVudHMsIGJvb2wgbmFt
ZUlzSW5Db250YWluaW5nU2NvcGUsIGNsYXNzCiAgICAgCiAgICAgb3BlbkJyYWNlUG9zID0gbV90
b2tlbi5tX2RhdGEuaW50VmFsdWU7CiAgICAgYm9keVN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwor
ICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIAogICAg
IC8vIElmIHdlIGtub3cgYWJvdXQgdGhpcyBmdW5jdGlvbiBhbHJlYWR5LCB3ZSBjYW4gdXNlIHRo
ZSBjYWNoZWQgaW5mbyBhbmQgc2tpcCB0aGUgcGFyc2VyIHRvIHRoZSBlbmQgb2YgdGhlIGZ1bmN0
aW9uLgogICAgIGlmIChjb25zdCBTb3VyY2VQcm92aWRlckNhY2hlSXRlbSogY2FjaGVkSW5mbyA9
IFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5jdGlvbkNhY2hlID8gZmluZENhY2hlZEZ1bmN0aW9uSW5m
byhvcGVuQnJhY2VQb3MpIDogMCkgewogICAgICAgICAvLyBJZiB3ZSdyZSBpbiBhIHN0cmljdCBj
b250ZXh0LCB0aGUgY2FjaGVkIGZ1bmN0aW9uIGluZm8gbXVzdCBzYXkgaXQgd2FzIHN0cmljdCB0
b28uCiAgICAgICAgIEFTU0VSVCghc3RyaWN0TW9kZSgpIHx8IGNhY2hlZEluZm8tPnN0cmljdE1v
ZGUpOwotICAgICAgICBib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkobV9sZXhlci0+
bGFzdExpbmVOdW1iZXIoKSwgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7CisgICAgICAgIGJvZHkg
PSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShsb2NhdGlvbiwgY2FjaGVkSW5mby0+c3RyaWN0
TW9kZSk7CiAgICAgICAgIAogICAgICAgICBmdW5jdGlvblNjb3BlLT5yZXN0b3JlRnVuY3Rpb25J
bmZvKGNhY2hlZEluZm8pOwogICAgICAgICBmYWlsSWZGYWxzZShwb3BTY29wZShmdW5jdGlvblNj
b3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKSk7CiAgICAgICAgIAogICAg
ICAgICBjbG9zZUJyYWNlUG9zID0gY2FjaGVkSW5mby0+Y2xvc2VCcmFjZVBvczsKICAgICAgICAg
bV90b2tlbiA9IGNhY2hlZEluZm8tPmNsb3NlQnJhY2VUb2tlbigpOwotICAgICAgICBtX2xleGVy
LT5zZXRPZmZzZXQobV90b2tlbi5tX2luZm8uZW5kT2Zmc2V0KTsKLSAgICAgICAgbV9sZXhlci0+
c2V0TGluZU51bWJlcihtX3Rva2VuLm1faW5mby5saW5lKTsKKyAgICAgICAgbV9sZXhlci0+c2V0
T2Zmc2V0KG1fdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQpOworICAgICAgICBtX2xleGVyLT5z
ZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAgICAgICAgCiAgICAgICAg
IG5leHQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC04MjEsNyArODQwLDcgQEAgdGVtcGxh
dGUgPEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgYm9vbCBuYW1lSXNJbkNvbnRh
aW5pbmdTY29wZSwgY2xhc3MKICAgICBPd25QdHI8U291cmNlUHJvdmlkZXJDYWNoZUl0ZW0+IG5l
d0luZm87CiAgICAgaW50IGZ1bmN0aW9uTGVuZ3RoID0gY2xvc2VCcmFjZVBvcyAtIG9wZW5CcmFj
ZVBvczsKICAgICBpZiAoVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9uQ2FjaGUgJiYgbV9mdW5j
dGlvbkNhY2hlICYmIGZ1bmN0aW9uTGVuZ3RoID4gbWluaW11bUZ1bmN0aW9uTGVuZ3RoVG9DYWNo
ZSkgewotICAgICAgICBuZXdJbmZvID0gYWRvcHRQdHIobmV3IFNvdXJjZVByb3ZpZGVyQ2FjaGVJ
dGVtKG1fdG9rZW4ubV9pbmZvLmxpbmUsIGNsb3NlQnJhY2VQb3MpKTsKKyAgICAgICAgbmV3SW5m
byA9IGFkb3B0UHRyKG5ldyBTb3VyY2VQcm92aWRlckNhY2hlSXRlbShtX3Rva2VuLm1fbG9jYXRp
b24ubGluZSwgY2xvc2VCcmFjZVBvcykpOwogICAgICAgICBmdW5jdGlvblNjb3BlLT5zYXZlRnVu
Y3Rpb25JbmZvKG5ld0luZm8uZ2V0KCkpOwogICAgIH0KICAgICAKQEAgLTg0MSw2ICs4NjAsNyBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFy
YXRpb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKEZVTkNUSU9O
KSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAg
bmV4dCgpOwogICAgIGNvbnN0IElkZW50aWZpZXIqIG5hbWUgPSAwOwogICAgIFRyZWVGb3JtYWxQ
YXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSAwOwpAQCAtODUxLDcgKzg3MSw3IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkRlY2xhCiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvPEZ1bmN0
aW9uTmVlZHNOYW1lLCB0cnVlPihjb250ZXh0LCBuYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVu
QnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7CiAgICAgZmFpbElmRmFs
c2UobmFtZSk7CiAgICAgZmFpbElmRmFsc2VJZlN0cmljdChkZWNsYXJlVmFyaWFibGUobmFtZSkp
OwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIG5hbWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZVBvcywgY2xv
c2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQobG9jYXRpb24sIG5hbWUsIGJvZHksIHBhcmFtZXRl
cnMsIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGlu
ZSk7CiB9CiAKIHN0cnVjdCBMYWJlbEluZm8gewpAQCAtODc1LDEwICs4OTUsMTEgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUV4cHJlc3Npb25PckwKICAgICAgKiBzcGVjaWFsIGNhc2UgdGhhdCBsb29rcyBmb3IgYSBj
b2xvbiBhcyB0aGUgbmV4dCBjaGFyYWN0ZXIgaW4gdGhlIGlucHV0LgogICAgICAqLwogICAgIFZl
Y3RvcjxMYWJlbEluZm8+IGxhYmVsczsKLSAgICAKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRp
b247CiAgICAgZG8gewogICAgICAgICBpbnQgc3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgICAg
IGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICAgICAgbG9jYXRpb24gPSB0b2tlbkxv
Y2F0aW9uKCk7CiAgICAgICAgIGlmICghbmV4dFRva2VuSXNDb2xvbigpKSB7CiAgICAgICAgICAg
ICAvLyBJZiB3ZSBoaXQgdGhpcyBwYXRoIHdlJ3JlIG1ha2luZyBhIGV4cHJlc3Npb24gc3RhdGVt
ZW50LCB3aGljaAogICAgICAgICAgICAgLy8gYnkgZGVmaW5pdGlvbiBjYW4ndCBtYWtlIHVzZSBv
ZiBjb250aW51ZS9icmVhayBzbyB3ZSBjYW4ganVzdApAQCAtODg2LDcgKzkwNyw3IEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VFeHByZXNzaW9uT3JMCiAgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBleHByZXNzaW9u
ID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICAgICAgZmFpbElmRmFsc2UoZXhw
cmVzc2lvbik7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwotICAg
ICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBleHByZXNzaW9uLCBzdGFydExpbmUsIG1fbGFzdExpbmUpOworICAgICAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChsb2NhdGlvbiwgZXhwcmVz
c2lvbiwgc3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKICAgICAgICAgfQogICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBpbnQgZW5k
ID0gdG9rZW5FbmQoKTsKQEAgLTkyNSw3ICs5NDYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lvbk9y
TAogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsYWJlbHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgY29uc3QgTGFiZWxJbmZvJiBpbmZvID0g
bGFiZWxzW2xhYmVscy5zaXplKCkgLSBpIC0gMV07Ci0gICAgICAgIHN0YXRlbWVudCA9IGNvbnRl
eHQuY3JlYXRlTGFiZWxTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgaW5mby5t
X2lkZW50LCBzdGF0ZW1lbnQsIGluZm8ubV9zdGFydCwgaW5mby5tX2VuZCk7CisgICAgICAgIHN0
YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlTGFiZWxTdGF0ZW1lbnQobG9jYXRpb24sIGluZm8ubV9p
ZGVudCwgc3RhdGVtZW50LCBpbmZvLm1fc3RhcnQsIGluZm8ubV9lbmQpOwogICAgIH0KICAgICBy
ZXR1cm4gc3RhdGVtZW50OwogfQpAQCAtOTM0LDM5ICs5NTUsNDIgQEAgdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVu
dCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uU3RhdGVtZW50KFRyZWVCdWlsZGVy
JiBjb250ZXh0KQogewogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICBKU1Rv
a2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBUcmVlRXhwcmVzc2lv
biBleHByZXNzaW9uID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNl
KGV4cHJlc3Npb24pOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0gICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCBleHByZXNzaW9uLCBzdGFydExpbmUsIG1fbGFzdExpbmUpOworICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUV4cHJTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHJlc3Npb24sIHN0YXJ0TGluZSwgbV9s
YXN0TGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
SWZTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKElG
KSk7Ci0gICAgCisgICAgSlNUb2tlbkxvY2F0aW9uIGlmTG9jYXRpb24odG9rZW5Mb2NhdGlvbigp
KTsKICAgICBpbnQgc3RhcnQgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7Ci0gICAgCisKICAg
ICBjb25zdW1lT3JGYWlsKE9QRU5QQVJFTik7Ci0gICAgCisKICAgICBUcmVlRXhwcmVzc2lvbiBj
b25kaXRpb24gPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UoY29u
ZGl0aW9uKTsKICAgICBpbnQgZW5kID0gdG9rZW5MaW5lKCk7CiAgICAgY29uc3VtZU9yRmFpbChD
TE9TRVBBUkVOKTsKLSAgICAKKwogICAgIGNvbnN0IElkZW50aWZpZXIqIHVudXNlZCA9IDA7CiAg
ICAgVHJlZVN0YXRlbWVudCB0cnVlQmxvY2sgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVz
ZWQpOwogICAgIGZhaWxJZkZhbHNlKHRydWVCbG9jayk7Ci0gICAgCisKICAgICBpZiAoIW1hdGNo
KEVMU0UpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBjb25kaXRpb24sIHRydWVCbG9jaywgc3RhcnQsIGVuZCk7Ci0g
ICAgCisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KGlmTG9jYXRpb24s
IGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBzdGFydCwgZW5kKTsKKwogICAgIFZlY3RvcjxUcmVlRXhw
cmVzc2lvbj4gZXhwclN0YWNrOwogICAgIFZlY3RvcjxwYWlyPGludCwgaW50PiA+IHBvc1N0YWNr
OworICAgIFZlY3RvcjxKU1Rva2VuTG9jYXRpb24+IHRva2VuTG9jYXRpb25TdGFjazsKICAgICBW
ZWN0b3I8VHJlZVN0YXRlbWVudD4gc3RhdGVtZW50U3RhY2s7CiAgICAgYm9vbCB0cmFpbGluZ0Vs
c2UgPSBmYWxzZTsKICAgICBkbyB7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiB0ZW1wTG9jYXRp
b24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgaWYgKCFtYXRj
aChJRikpIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIHVudXNlZCA9IDA7CkBAIC05
NzgsMjEgKzEwMDIsMjIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlmU3RhdGVtZW50KFQKICAgICAgICAgfQogICAg
ICAgICBpbnQgaW5uZXJTdGFydCA9IHRva2VuTGluZSgpOwogICAgICAgICBuZXh0KCk7Ci0gICAg
ICAgIAorCiAgICAgICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKLSAgICAgICAgCisKICAg
ICAgICAgVHJlZUV4cHJlc3Npb24gaW5uZXJDb25kaXRpb24gPSBwYXJzZUV4cHJlc3Npb24oY29u
dGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGlubmVyQ29uZGl0aW9uKTsKICAgICAgICAgaW50
IGlubmVyRW5kID0gdG9rZW5MaW5lKCk7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJF
Tik7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIHVudXNlZCA9IDA7CiAgICAgICAgIFRyZWVT
dGF0ZW1lbnQgaW5uZXJUcnVlQmxvY2sgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQp
OwotICAgICAgICBmYWlsSWZGYWxzZShpbm5lclRydWVCbG9jayk7ICAgICAKKyAgICAgICAgZmFp
bElmRmFsc2UoaW5uZXJUcnVlQmxvY2spOworICAgICAgICB0b2tlbkxvY2F0aW9uU3RhY2suYXBw
ZW5kKHRlbXBMb2NhdGlvbik7CiAgICAgICAgIGV4cHJTdGFjay5hcHBlbmQoaW5uZXJDb25kaXRp
b24pOwogICAgICAgICBwb3NTdGFjay5hcHBlbmQobWFrZV9wYWlyKGlubmVyU3RhcnQsIGlubmVy
RW5kKSk7CiAgICAgICAgIHN0YXRlbWVudFN0YWNrLmFwcGVuZChpbm5lclRydWVCbG9jayk7CiAg
ICAgfSB3aGlsZSAobWF0Y2goRUxTRSkpOwotICAgIAorCiAgICAgaWYgKCF0cmFpbGluZ0Vsc2Up
IHsKICAgICAgICAgVHJlZUV4cHJlc3Npb24gY29uZGl0aW9uID0gZXhwclN0YWNrLmxhc3QoKTsK
ICAgICAgICAgZXhwclN0YWNrLnJlbW92ZUxhc3QoKTsKQEAgLTEwMDAsOSArMTAyNSwxMSBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlSWZTdGF0ZW1lbnQoVAogICAgICAgICBzdGF0ZW1lbnRTdGFjay5yZW1vdmVMYXN0
KCk7CiAgICAgICAgIHBhaXI8aW50LCBpbnQ+IHBvcyA9IHBvc1N0YWNrLmxhc3QoKTsKICAgICAg
ICAgcG9zU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICBzdGF0ZW1lbnRTdGFjay5hcHBlbmQo
Y29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjb25k
aXRpb24sIHRydWVCbG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vjb25kKSk7CisgICAgICAgIEpTVG9r
ZW5Mb2NhdGlvbiBlbHNlTG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uU3RhY2subGFzdCgpOworICAg
ICAgICB0b2tlbkxvY2F0aW9uU3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICBzdGF0ZW1lbnRT
dGFjay5hcHBlbmQoY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChlbHNlTG9jYXRpb24sIGNvbmRp
dGlvbiwgdHJ1ZUJsb2NrLCBwb3MuZmlyc3QsIHBvcy5zZWNvbmQpKTsKICAgICB9Ci0gICAgCisK
ICAgICB3aGlsZSAoIWV4cHJTdGFjay5pc0VtcHR5KCkpIHsKICAgICAgICAgVHJlZUV4cHJlc3Np
b24gY29uZGl0aW9uID0gZXhwclN0YWNrLmxhc3QoKTsKICAgICAgICAgZXhwclN0YWNrLnJlbW92
ZUxhc3QoKTsKQEAgLTEwMTIsMTYgKzEwMzksMTkgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlmU3RhdGVtZW50KFQK
ICAgICAgICAgc3RhdGVtZW50U3RhY2sucmVtb3ZlTGFzdCgpOwogICAgICAgICBwYWlyPGludCwg
aW50PiBwb3MgPSBwb3NTdGFjay5sYXN0KCk7CiAgICAgICAgIHBvc1N0YWNrLnJlbW92ZUxhc3Qo
KTsKLSAgICAgICAgc3RhdGVtZW50U3RhY2suYXBwZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1l
bnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIGZhbHNl
QmxvY2ssIHBvcy5maXJzdCwgcG9zLnNlY29uZCkpOworICAgICAgICBKU1Rva2VuTG9jYXRpb24g
ZWxzZUxvY2F0aW9uID0gdG9rZW5Mb2NhdGlvblN0YWNrLmxhc3QoKTsKKyAgICAgICAgdG9rZW5M
b2NhdGlvblN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgc3RhdGVtZW50U3RhY2suYXBwZW5k
KGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQoZWxzZUxvY2F0aW9uLCBjb25kaXRpb24sIHRydWVC
bG9jaywgZmFsc2VCbG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vjb25kKSk7CiAgICAgfQotICAgIAot
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBzdGF0ZW1lbnRTdGFjay5sYXN0KCksIHN0YXJ0
LCBlbmQpOworCisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQoaWZMb2NhdGlv
biwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXRlbWVudFN0YWNrLmxhc3QoKSwgc3RhcnQsIGVu
ZCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJl
c3Npb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgZmFpbElmU3RhY2tPdmVyZmxvdygp
OworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIFRy
ZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwog
ICAgIGZhaWxJZkZhbHNlKG5vZGUpOwogICAgIGlmICghbWF0Y2goQ09NTUEpKQpAQCAtMTAzMSw3
ICsxMDYxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uKFQKICAgICBtX25vbkxIU0NvdW50Kys7
CiAgICAgVHJlZUV4cHJlc3Npb24gcmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNv
bnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHJpZ2h0KTsKLSAgICB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6Q29tbWEgY29tbWFOb2RlID0gY29udGV4dC5jcmVhdGVDb21tYUV4cHIobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwgbm9kZSwgcmlnaHQpOworICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpD
b21tYSBjb21tYU5vZGUgPSBjb250ZXh0LmNyZWF0ZUNvbW1hRXhwcihsb2NhdGlvbiwgbm9kZSwg
cmlnaHQpOwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAgbmV4dChUcmVlQnVp
bGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAgICAgICAgIHJpZ2h0ID0gcGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTEwNDYsNiArMTA3Niw3IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
QXNzaWdubWVuCiB7CiAgICAgZmFpbElmU3RhY2tPdmVyZmxvdygpOwogICAgIGludCBzdGFydCA9
IHRva2VuU3RhcnQoKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlv
bigpKTsKICAgICBpbnQgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCA9IG1fYXNzaWdubWVudENvdW50
OwogICAgIGludCBpbml0aWFsTm9uTEhTQ291bnQgPSBtX25vbkxIU0NvdW50OwogICAgIFRyZWVF
eHByZXNzaW9uIGxocyA9IHBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKGNvbnRleHQpOwpAQCAt
MTA5OCw3ICsxMTI5LDcgQEAgZW5kOgogICAgICAgICByZXR1cm4gbGhzOwogICAgIAogICAgIHdo
aWxlIChhc3NpZ25tZW50U3RhY2spCi0gICAgICAgIGxocyA9IGNvbnRleHQuY3JlYXRlQXNzaWdu
bWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBhc3NpZ25tZW50U3RhY2ssIGxocywgaW5p
dGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50Q291bnQsIGxhc3RUb2tlbkVuZCgpKTsK
KyAgICAgICAgbGhzID0gY29udGV4dC5jcmVhdGVBc3NpZ25tZW50KGxvY2F0aW9uLCBhc3NpZ25t
ZW50U3RhY2ssIGxocywgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50Q291bnQs
IGxhc3RUb2tlbkVuZCgpKTsKICAgICAKICAgICByZXR1cm4gbGhzOwogfQpAQCAtMTEwNiw2ICsx
MTM3LDcgQEAgZW5kOgogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
Q29uZGl0aW9uYWxFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogeworICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIFRyZWVFeHByZXNzaW9u
IGNvbmQgPSBwYXJzZUJpbmFyeUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2Uo
Y29uZCk7CiAgICAgaWYgKCFtYXRjaChRVUVTVElPTikpCkBAIC0xMTE4LDcgKzExNTAsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUNvbmRpdGlvbmFsRQogICAgIAogICAgIFRyZWVFeHByZXNzaW9uIHJocyA9IHBh
cnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFpbElmRmFsc2UocmhzKTsK
LSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDb25kaXRpb25hbEV4cHIobV9sZXhlci0+bGFzdExp
bmVOdW1iZXIoKSwgY29uZCwgbGhzLCByaHMpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNv
bmRpdGlvbmFsRXhwcihsb2NhdGlvbiwgY29uZCwgbGhzLCByaHMpOwogfQogCiBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tlbikKQEAgLTExNDEsNiAr
MTE3Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlQmluYXJ5RXhwcmVzCiAgICAgaW50IG9wZXJhbmRTdGFja0Rl
cHRoID0gMDsKICAgICBpbnQgb3BlcmF0b3JTdGFja0RlcHRoID0gMDsKICAgICB0eXBlbmFtZSBU
cmVlQnVpbGRlcjo6QmluYXJ5RXhwckNvbnRleHQgYmluYXJ5RXhwckNvbnRleHQoY29udGV4dCk7
CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgd2hp
bGUgKHRydWUpIHsKICAgICAgICAgaW50IGV4cHJTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICAg
ICAgaW50IGluaXRpYWxBc3NpZ25tZW50cyA9IG1fYXNzaWdubWVudENvdW50OwpAQCAtMTE2Miw3
ICsxMTk1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VCaW5hcnlFeHByZXMKICAgICAgICAgICAgIHR5cGVuYW1l
IFRyZWVCdWlsZGVyOjpCaW5hcnlPcGVyYW5kIHJocyA9IGNvbnRleHQuZ2V0RnJvbU9wZXJhbmRT
dGFjaygtMSk7CiAgICAgICAgICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3BlcmFu
ZCBsaHMgPSBjb250ZXh0LmdldEZyb21PcGVyYW5kU3RhY2soLTIpOwogICAgICAgICAgICAgY29u
dGV4dC5zaHJpbmtPcGVyYW5kU3RhY2tCeShvcGVyYW5kU3RhY2tEZXB0aCwgMik7Ci0gICAgICAg
ICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9wZXJhdGlvbihtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBvcGVyYW5kU3RhY2tEZXB0aCwgb3BlcmF0b3JTdGFja0RlcHRoLCBsaHMsIHJocyk7Cisg
ICAgICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9wZXJhdGlvbihsb2NhdGlvbiwgb3BlcmFu
ZFN0YWNrRGVwdGgsIG9wZXJhdG9yU3RhY2tEZXB0aCwgbGhzLCByaHMpOwogICAgICAgICAgICAg
Y29udGV4dC5vcGVyYXRvclN0YWNrUG9wKG9wZXJhdG9yU3RhY2tEZXB0aCk7CiAgICAgICAgIH0K
ICAgICAgICAgY29udGV4dC5vcGVyYXRvclN0YWNrQXBwZW5kKG9wZXJhdG9yU3RhY2tEZXB0aCwg
b3BlcmF0b3JUb2tlbiwgcHJlY2VkZW5jZSk7CkBAIC0xMTczLDcgKzEyMDYsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUJpbmFyeUV4cHJlcwogICAgICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3Bl
cmFuZCByaHMgPSBjb250ZXh0LmdldEZyb21PcGVyYW5kU3RhY2soLTEpOwogICAgICAgICB0eXBl
bmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3BlcmFuZCBsaHMgPSBjb250ZXh0LmdldEZyb21PcGVy
YW5kU3RhY2soLTIpOwogICAgICAgICBjb250ZXh0LnNocmlua09wZXJhbmRTdGFja0J5KG9wZXJh
bmRTdGFja0RlcHRoLCAyKTsKLSAgICAgICAgY29udGV4dC5hcHBlbmRCaW5hcnlPcGVyYXRpb24o
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgb3BlcmFuZFN0YWNrRGVwdGgsIG9wZXJhdG9yU3Rh
Y2tEZXB0aCwgbGhzLCByaHMpOworICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9wZXJhdGlv
bihsb2NhdGlvbiwgb3BlcmFuZFN0YWNrRGVwdGgsIG9wZXJhdG9yU3RhY2tEZXB0aCwgbGhzLCBy
aHMpOwogICAgICAgICBjb250ZXh0Lm9wZXJhdG9yU3RhY2tQb3Aob3BlcmF0b3JTdGFja0RlcHRo
KTsKICAgICB9CiAgICAgcmV0dXJuIGNvbnRleHQucG9wT3BlcmFuZFN0YWNrKG9wZXJhbmRTdGFj
a0RlcHRoKTsKQEAgLTEyMjIsMTEgKzEyNTUsMTIgQEAgdGVtcGxhdGUgPGJvb2wgY29tcGxldGUs
IGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnMK
ICAgICAgICAgICAgIG51bWVyaWNQcm9wZXJ0eU5hbWUgPSBtX3Rva2VuLm1fZGF0YS5kb3VibGVW
YWx1ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZmFpbCgpOworICAgICAgICBKU1Rva2Vu
TG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwogICAg
ICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rpb25Ob1JlcXVpcmVtZW50
cywgZmFsc2U+KGNvbnRleHQsIGFjY2Vzc29yTmFtZSwgcGFyYW1ldGVycywgYm9keSwgb3BlbkJy
YWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSkpOwogICAgICAgICBpZiAoc3Ry
aW5nUHJvcGVydHlOYW1lKQotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQudGVtcGxhdGUgY3Jl
YXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eTxjb21wbGV0ZT4obV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgdHlwZSwgc3RyaW5nUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJh
Y2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOwotICAgICAg
ICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNv
bXBsZXRlPihjb25zdF9jYXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xvYmFsRGF0YSksIG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIHR5cGUsIG51bWVyaWNQcm9wZXJ0eU5hbWUsIHBhcmFtZXRlcnMs
IGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0
TGluZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJP
clNldHRlclByb3BlcnR5PGNvbXBsZXRlPihsb2NhdGlvbiwgdHlwZSwgc3RyaW5nUHJvcGVydHlO
YW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlT
dGFydExpbmUsIG1fbGFzdExpbmUpOworICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBj
cmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihjb25zdF9jYXN0PEpTR2xvYmFs
RGF0YSo+KG1fZ2xvYmFsRGF0YSksIGxvY2F0aW9uLCB0eXBlLCBudW1lcmljUHJvcGVydHlOYW1l
LCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFy
dExpbmUsIG1fbGFzdExpbmUpOwogICAgIH0KICAgICBjYXNlIE5VTUJFUjogewogICAgICAgICBk
b3VibGUgcHJvcGVydHlOYW1lID0gbV90b2tlbi5tX2RhdGEuZG91YmxlVmFsdWU7CkBAIC0xMjQ5
LDEyICsxMjgzLDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlT2JqZWN0TGl0ZXJhCiAgICAgdW5zaWduZWQgb2xk
TGFzdExpbmVOdW1iZXIgPSBtX2xleGVyLT5sYXN0TGluZU51bWJlcigpOwogICAgIHVuc2lnbmVk
IG9sZExpbmVOdW1iZXIgPSBtX2xleGVyLT5saW5lTnVtYmVyKCk7CiAgICAgY29uc3VtZU9yRmFp
bFdpdGhGbGFncyhPUEVOQlJBQ0UsIFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKLSAg
ICAKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKKwogICAg
IGludCBvbGROb25MSFNDb3VudCA9IG1fbm9uTEhTQ291bnQ7CiAgICAgCiAgICAgaWYgKG1hdGNo
KENMT1NFQlJBQ0UpKSB7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChsb2NhdGlvbik7CiAgICAgfQogICAg
IAogICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8ZmFsc2U+KGNvbnRl
eHQpOwpAQCAtMTI2NiwxMyArMTMwMSwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU9iamVjdExpdGVyYQogICAg
ICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG9sZExpbmVOdW1iZXIpOwogICAgICAgICByZXR1
cm4gcGFyc2VTdHJpY3RPYmplY3RMaXRlcmFsKGNvbnRleHQpOwogICAgIH0KLSAgICBUcmVlUHJv
cGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5KTsKKyAgICBUcmVlUHJvcGVydHlMaXN0IHBy
b3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KGxvY2F0aW9uLCBwcm9wZXJ0
eSk7CiAgICAgVHJlZVByb3BlcnR5TGlzdCB0YWlsID0gcHJvcGVydHlMaXN0OwogICAgIHdoaWxl
IChtYXRjaChDT01NQSkpIHsKICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3Ry
aW5ncyk7CiAgICAgICAgIC8vIGFsbG93IGV4dHJhIGNvbW1hLCBzZWUgaHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkzOQogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFD
RSkpCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIHByb3BlcnR5
TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgcHJvcGVydHkgPSBwYXJzZVByb3Bl
cnR5PGZhbHNlPihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHkpOwogICAg
ICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCAmJiBjb250ZXh0LmdldFR5cGUocHJv
cGVydHkpICE9IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpIHsKQEAgLTEyODIsMTQgKzEzMTgsMTUg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VPYmplY3RMaXRlcmEKICAgICAgICAgICAgIG1fbGV4ZXItPnNldExpbmVO
dW1iZXIob2xkTGluZU51bWJlcik7CiAgICAgICAgICAgICByZXR1cm4gcGFyc2VTdHJpY3RPYmpl
Y3RMaXRlcmFsKGNvbnRleHQpOwogICAgICAgICB9Ci0gICAgICAgIHRhaWwgPSBjb250ZXh0LmNy
ZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBwcm9wZXJ0eSwgdGFp
bCk7CisgICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChwcm9wZXJ0eUxv
Y2F0aW9uLCBwcm9wZXJ0eSwgdGFpbCk7CiAgICAgfQotICAgIAorCisgICAgbG9jYXRpb24gPSB0
b2tlbkxvY2F0aW9uKCk7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFKTsKICAgICAKICAg
ICBtX25vbkxIU0NvdW50ID0gb2xkTm9uTEhTQ291bnQ7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBwcm9wZXJ0
eUxpc3QpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExpdGVyYWwobG9jYXRpb24s
IHByb3BlcnR5TGlzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0x
Mjk5LDkgKzEzMzYsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdHJpY3RPYmplY3QKICAgICAKICAgICBpbnQg
b2xkTm9uTEhTQ291bnQgPSBtX25vbkxIU0NvdW50OwogCisgICAgSlNUb2tlbkxvY2F0aW9uIGxv
Y2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAg
ICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJh
bChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlT2JqZWN0TGl0ZXJhbChsb2NhdGlvbik7CiAgICAgfQogICAgIAogICAgIFRyZWVQcm9wZXJ0
eSBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8dHJ1ZT4oY29udGV4dCk7CkBAIC0xMzEzLDEzICsx
MzUxLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlU3RyaWN0T2JqZWN0CiAgICAgaWYgKCFtX3N5bnRheEFscmVh
ZHlWYWxpZGF0ZWQpCiAgICAgICAgIG9iamVjdFZhbGlkYXRvci5hZGQoY29udGV4dC5nZXROYW1l
KHByb3BlcnR5KS5pbXBsKCksIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSkpOwogICAgIAotICAg
IFRyZWVQcm9wZXJ0eUxpc3QgcHJvcGVydHlMaXN0ID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxp
c3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHkpOworICAgIFRyZWVQcm9wZXJ0
eUxpc3QgcHJvcGVydHlMaXN0ID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0eUxpc3QobG9jYXRpb24s
IHByb3BlcnR5KTsKICAgICBUcmVlUHJvcGVydHlMaXN0IHRhaWwgPSBwcm9wZXJ0eUxpc3Q7CiAg
ICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewogICAgICAgICBuZXh0KCk7CiAgICAgICAgIC8vIGFs
bG93IGV4dHJhIGNvbW1hLCBzZWUgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTkzOQogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpCiAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIHByb3BlcnR5TG9jYXRpb24odG9rZW5Mb2NhdGlv
bigpKTsKICAgICAgICAgcHJvcGVydHkgPSBwYXJzZVByb3BlcnR5PHRydWU+KGNvbnRleHQpOwog
ICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0eSk7CiAgICAgICAgIGlmICghbV9zeW50YXhBbHJl
YWR5VmFsaWRhdGVkKSB7CkBAIC0xMzMxLDE0ICsxMzcwLDE1IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RyaWN0
T2JqZWN0CiAgICAgICAgICAgICAgICAgcHJvcGVydHlFbnRyeS5pdGVyYXRvci0+c2Vjb25kIHw9
IGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAg
ICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIHByb3BlcnR5LCB0YWlsKTsKKyAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRl
UHJvcGVydHlMaXN0KHByb3BlcnR5TG9jYXRpb24sIHByb3BlcnR5LCB0YWlsKTsKICAgICB9Ci0g
ICAgCisKKyAgICBsb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKICAgICBjb25zdW1lT3JGYWls
KENMT1NFQlJBQ0UpOwogCiAgICAgbV9ub25MSFNDb3VudCA9IG9sZE5vbkxIU0NvdW50OwogCi0g
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBwcm9wZXJ0eUxpc3QpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExp
dGVyYWwobG9jYXRpb24sIHByb3BlcnR5TGlzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CkBAIC0xMzU0LDggKzEzOTQsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFycmF5TGl0ZXJhbAog
ICAgICAgICBlbGlzaW9ucysrOwogICAgIH0KICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDS0VUKSkg
eworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAg
ICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7Ci0gICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUFycmF5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGVsaXNpb25z
KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkobG9jYXRpb24sIGVsaXNpb25z
KTsKICAgICB9CiAgICAgCiAgICAgVHJlZUV4cHJlc3Npb24gZWxlbSA9IHBhcnNlQXNzaWdubWVu
dEV4cHJlc3Npb24oY29udGV4dCk7CkBAIC0xMzczLDE5ICsxNDE0LDIxIEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
QXJyYXlMaXRlcmFsCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChtYXRjaChDTE9T
RUJSQUNLRVQpKSB7CisgICAgICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5M
b2NhdGlvbigpKTsKICAgICAgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmlu
Z3MpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkobV9sZXhlci0+bGFz
dExpbmVOdW1iZXIoKSwgZWxpc2lvbnMsIGVsZW1lbnRMaXN0KTsKKyAgICAgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUFycmF5KGxvY2F0aW9uLCBlbGlzaW9ucywgZWxlbWVudExpc3QpOwog
ICAgICAgICB9CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGVsZW0gPSBwYXJzZUFzc2lnbm1lbnRF
eHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShlbGVtKTsKICAgICAgICAg
dGFpbCA9IGNvbnRleHQuY3JlYXRlRWxlbWVudExpc3QodGFpbCwgZWxpc2lvbnMsIGVsZW0pOwog
ICAgIH0KLSAgICAKKworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9u
KCkpOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDS0VUKTsKICAgICAKICAgICBtX25vbkxI
U0NvdW50ID0gb2xkTm9uTEhTQ291bnQ7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
QXJyYXkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZWxlbWVudExpc3QpOworICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUFycmF5KGxvY2F0aW9uLCBlbGVtZW50TGlzdCk7CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0xNDA5LDM4ICsxNDUyLDQ1IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlUHJpbWFyeUV4cHJlCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIGNhc2Ug
VEhJU1RPS0VOOiB7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0
aW9uKCkpOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LnRoaXNFeHBy
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCkpOworICAgICAgICByZXR1cm4gY29udGV4dC50aGlz
RXhwcihsb2NhdGlvbik7CiAgICAgfQogICAgIGNhc2UgSURFTlQ6IHsKICAgICAgICAgaW50IHN0
YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1f
dG9rZW4ubV9kYXRhLmlkZW50OworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9r
ZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBjdXJyZW50U2NvcGUoKS0+
dXNlVmFyaWFibGUoaWRlbnQsIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+ZXZhbCA9PSAq
aWRlbnQpOwogICAgICAgICBtX2xhc3RJZGVudGlmaWVyID0gaWRlbnQ7Ci0gICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZVJlc29sdmUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgaWRlbnQs
IHN0YXJ0KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmVzb2x2ZShsb2NhdGlvbiwg
aWRlbnQsIHN0YXJ0KTsKICAgICB9CiAgICAgY2FzZSBTVFJJTkc6IHsKICAgICAgICAgY29uc3Qg
SWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgSlNUb2tl
bkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKLSAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlU3RyaW5nKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGlkZW50KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlU3RyaW5nKGxvY2F0aW9u
LCBpZGVudCk7CiAgICAgfQogICAgIGNhc2UgTlVNQkVSOiB7CiAgICAgICAgIGRvdWJsZSBkID0g
bV90b2tlbi5tX2RhdGEuZG91YmxlVmFsdWU7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZU51bWJlckV4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZCk7Cisg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU51bWJlckV4cHIobG9jYXRpb24sIGQpOwogICAg
IH0KICAgICBjYXNlIE5VTExUT0tFTjogeworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVOdWxsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCkpOworICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVOdWxsKGxvY2F0aW9uKTsKICAgICB9CiAgICAgY2FzZSBUUlVFVE9L
RU46IHsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7
CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQm9vbGVhbiht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlQm9vbGVhbihsb2NhdGlvbiwgdHJ1ZSk7CiAgICAgfQogICAgIGNhc2UgRkFMU0VUT0tF
TjogeworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsK
ICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVCb29sZWFuKG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlQm9vbGVhbihsb2NhdGlvbiwgZmFsc2UpOwogICAgIH0KICAgICBjYXNlIERJVkVRVUFM
OgogICAgIGNhc2UgRElWSURFOiB7CkBAIC0xNDUzLDggKzE1MDMsOSBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVBy
aW1hcnlFeHByZQogICAgICAgICAgICAgZmFpbElmRmFsc2UobV9sZXhlci0+c2NhblJlZ0V4cChw
YXR0ZXJuLCBmbGFncykpOwogICAgICAgICAKICAgICAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFy
dCgpOworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsK
ICAgICAgICAgbmV4dCgpOwotICAgICAgICBUcmVlRXhwcmVzc2lvbiByZSA9IGNvbnRleHQuY3Jl
YXRlUmVnRXhwKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksICpwYXR0ZXJuLCAqZmxhZ3MsIHN0
YXJ0KTsKKyAgICAgICAgVHJlZUV4cHJlc3Npb24gcmUgPSBjb250ZXh0LmNyZWF0ZVJlZ0V4cChs
b2NhdGlvbiwgKnBhdHRlcm4sICpmbGFncywgc3RhcnQpOwogICAgICAgICBpZiAoIXJlKSB7CiAg
ICAgICAgICAgICBjb25zdCBjaGFyKiB5YXJyRXJyb3JNc2cgPSBZYXJyOjpjaGVja1N5bnRheChw
YXR0ZXJuLT51c3RyaW5nKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFtX2Vycm9yTWVzc2FnZS5p
c051bGwoKSk7CkBAIC0xNDcxLDYgKzE1MjIsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQXJndW1lbnRzIFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUFyZ3VtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBj
b25zdW1lT3JGYWlsV2l0aEZsYWdzKE9QRU5QQVJFTiwgVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0
cmluZ3MpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwog
ICAgIGlmIChtYXRjaChDTE9TRVBBUkVOKSkgewogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpE
b250QnVpbGRTdHJpbmdzKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJndW1lbnRz
KCk7CkBAIC0xNDc4LDEzICsxNTMwLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUFyZ3VtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcmd1bWVudHMoVHJlCiAgICAg
VHJlZUV4cHJlc3Npb24gZmlyc3RBcmcgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRl
eHQpOwogICAgIGZhaWxJZkZhbHNlKGZpcnN0QXJnKTsKICAgICAKLSAgICBUcmVlQXJndW1lbnRz
TGlzdCBhcmdMaXN0ID0gY29udGV4dC5jcmVhdGVBcmd1bWVudHNMaXN0KG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIGZpcnN0QXJnKTsKKyAgICBUcmVlQXJndW1lbnRzTGlzdCBhcmdMaXN0ID0g
Y29udGV4dC5jcmVhdGVBcmd1bWVudHNMaXN0KGxvY2F0aW9uLCBmaXJzdEFyZyk7CiAgICAgVHJl
ZUFyZ3VtZW50c0xpc3QgdGFpbCA9IGFyZ0xpc3Q7CiAgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkg
eworICAgICAgICBKU1Rva2VuTG9jYXRpb24gYXJndW1lbnRMb2NhdGlvbih0b2tlbkxvY2F0aW9u
KCkpOwogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKICAgICAg
ICAgVHJlZUV4cHJlc3Npb24gYXJnID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0
KTsKICAgICAgICAgZmFpbElmRmFsc2UoYXJnKTsKLSAgICAgICAgdGFpbCA9IGNvbnRleHQuY3Jl
YXRlQXJndW1lbnRzTGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0YWlsLCBhcmcpOwor
ICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVBcmd1bWVudHNMaXN0KGFyZ3VtZW50TG9jYXRp
b24sIHRhaWwsIGFyZyk7CiAgICAgfQogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VQQVJFTik7CiAg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJndW1lbnRzKGFyZ0xpc3QpOwpAQCAtMTQ5Nyw2ICsx
NTUwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICBpbnQgc3RhcnQgPSB0b2tlblN0
YXJ0KCk7CiAgICAgaW50IGV4cHJlc3Npb25TdGFydCA9IHN0YXJ0OwogICAgIGludCBuZXdDb3Vu
dCA9IDA7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uOwogICAgIHdoaWxlIChtYXRjaChO
RVcpKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbmV3Q291bnQrKzsKQEAgLTE1MDksMTQg
KzE1NjMsMTYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAgICAgaW50IG9wZW5CcmFj
ZVBvcyA9IDA7CiAgICAgICAgIGludCBjbG9zZUJyYWNlUG9zID0gMDsKICAgICAgICAgaW50IGJv
ZHlTdGFydExpbmUgPSAwOworICAgICAgICBsb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKICAg
ICAgICAgbmV4dCgpOwogICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVu
Y3Rpb25Ob1JlcXVpcmVtZW50cywgZmFsc2U+KGNvbnRleHQsIG5hbWUsIHBhcmFtZXRlcnMsIGJv
ZHksIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSkpKTsKLSAgICAg
ICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIG5hbWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBv
cywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgICAgIGJhc2UgPSBjb250ZXh0LmNy
ZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwgbmFtZSwgYm9keSwgcGFyYW1ldGVycywgb3BlbkJy
YWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKICAgICB9
IGVsc2UKICAgICAgICAgYmFzZSA9IHBhcnNlUHJpbWFyeUV4cHJlc3Npb24oY29udGV4dCk7CiAg
ICAgCiAgICAgZmFpbElmRmFsc2UoYmFzZSk7CiAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAg
bG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgICAgIHN3aXRjaCAobV90b2tlbi5tX3R5
cGUpIHsKICAgICAgICAgY2FzZSBPUEVOQlJBQ0tFVDogewogICAgICAgICAgICAgbV9ub25Ucml2
aWFsRXhwcmVzc2lvbkNvdW50Kys7CkBAIC0xNTI2LDcgKzE1ODIsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1l
bWJlckV4cHJlcwogICAgICAgICAgICAgaW50IGluaXRpYWxBc3NpZ25tZW50cyA9IG1fYXNzaWdu
bWVudENvdW50OwogICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gcHJvcGVydHkgPSBwYXJzZUV4
cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0eSk7Ci0g
ICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVCcmFja2V0QWNjZXNzKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGJhc2UsIHByb3BlcnR5LCBpbml0aWFsQXNzaWdubWVudHMgIT0gbV9h
c3NpZ25tZW50Q291bnQsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lvbkVuZCwgdG9rZW5FbmQo
KSk7CisgICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVCcmFja2V0QWNjZXNzKGxvY2F0
aW9uLCBiYXNlLCBwcm9wZXJ0eSwgaW5pdGlhbEFzc2lnbm1lbnRzICE9IG1fYXNzaWdubWVudENv
dW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kKCkpOwogICAgICAg
ICAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNLRVQpOwogICAgICAgICAgICAgbV9ub25MSFND
b3VudCA9IG5vbkxIU0NvdW50OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNTM5LDEyICsxNTk1
LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICAgICAgaW50IGV4cHJF
bmQgPSBsYXN0VG9rZW5FbmQoKTsKICAgICAgICAgICAgICAgICBUcmVlQXJndW1lbnRzIGFyZ3Vt
ZW50cyA9IHBhcnNlQXJndW1lbnRzKGNvbnRleHQpOwogICAgICAgICAgICAgICAgIGZhaWxJZkZh
bHNlKGFyZ3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3
RXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBhcmd1bWVudHMsIHN0YXJ0LCBl
eHByRW5kLCBsYXN0VG9rZW5FbmQoKSk7ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBiYXNl
ID0gY29udGV4dC5jcmVhdGVOZXdFeHByKGxvY2F0aW9uLCBiYXNlLCBhcmd1bWVudHMsIHN0YXJ0
LCBleHByRW5kLCBsYXN0VG9rZW5FbmQoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIGludCBleHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5kKCk7CiAgICAgICAgICAg
ICAgICAgVHJlZUFyZ3VtZW50cyBhcmd1bWVudHMgPSBwYXJzZUFyZ3VtZW50cyhjb250ZXh0KTsK
ICAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShhcmd1bWVudHMpOwotICAgICAgICAgICAgICAg
IGJhc2UgPSBjb250ZXh0Lm1ha2VGdW5jdGlvbkNhbGxOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIGJhc2UsIGFyZ3VtZW50cywgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCBs
YXN0VG9rZW5FbmQoKSk7CisgICAgICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQubWFrZUZ1bmN0
aW9uQ2FsbE5vZGUobG9jYXRpb24sIGJhc2UsIGFyZ3VtZW50cywgZXhwcmVzc2lvblN0YXJ0LCBl
eHByZXNzaW9uRW5kLCBsYXN0VG9rZW5FbmQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBtX25vbkxIU0NvdW50ID0gbm9uTEhTQ291bnQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTE1
NTQsNyArMTYxMCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Np
b24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAgICBpbnQg
ZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAgICAgbmV4dEV4cGVjdElk
ZW50aWZpZXIoTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMgfCBUcmVlQnVpbGRlcjo6RG9u
dEJ1aWxkS2V5d29yZHMpOwogICAgICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQpOwotICAgICAg
ICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRG90QWNjZXNzKG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlkZW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJl
c3Npb25FbmQsIHRva2VuRW5kKCkpOworICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRl
RG90QWNjZXNzKGxvY2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1fZGF0YS5pZGVudCwgZXhwcmVzc2lv
blN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZCgpKTsKICAgICAgICAgICAgIG5leHQoKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNTY0LDcgKzE2MjAsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZU1lbWJlckV4cHJlcwogICAgIH0KIGVuZE1lbWJlckV4cHJlc3Npb246CiAgICAgd2hp
bGUgKG5ld0NvdW50LS0pCi0gICAgICAgIGJhc2UgPSBjb250ZXh0LmNyZWF0ZU5ld0V4cHIobV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgYmFzZSwgc3RhcnQsIGxhc3RUb2tlbkVuZCgpKTsKKyAg
ICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3RXhwcihsb2NhdGlvbiwgYmFzZSwgc3RhcnQs
IGxhc3RUb2tlbkVuZCgpKTsKICAgICByZXR1cm4gYmFzZTsKIH0KIApAQCAtMTYwMiw2ICsxNjU4
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICAgICAgbV9ub25Ucml2aWFsRXhwcmVz
c2lvbkNvdW50Kys7CiAgICAgfQogICAgIGludCBzdWJFeHByU3RhcnQgPSB0b2tlblN0YXJ0KCk7
CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgVHJl
ZUV4cHJlc3Npb24gZXhwciA9IHBhcnNlTWVtYmVyRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICBm
YWlsSWZGYWxzZShleHByKTsKICAgICBib29sIGlzRXZhbE9yQXJndW1lbnRzID0gZmFsc2U7CkBA
IC0xNjE0LDcgKzE2NzEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgIGNhc2UgUExV
U1BMVVM6CiAgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3VudCsrOwogICAgICAgICBt
X25vbkxIU0NvdW50Kys7Ci0gICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQb3N0Zml4Tm9kZSht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBPcFBsdXNQbHVzLCBzdWJFeHByU3RhcnQs
IGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpKTsKKyAgICAgICAgZXhwciA9IGNvbnRleHQubWFr
ZVBvc3RmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcFBsdXNQbHVzLCBzdWJFeHByU3RhcnQsIGxh
c3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpKTsKICAgICAgICAgbV9hc3NpZ25tZW50Q291bnQrKzsK
ICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0V2l0aE5hbWVBbmRNZXNzYWdlKGlzRXZhbE9yQXJn
dW1lbnRzLCAiJyIsIG1fbGFzdElkZW50aWZpZXItPmltcGwoKSwgIicgY2Fubm90IGJlIG1vZGlm
aWVkIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChyZXF1aXJl
c0xFeHByKTsKQEAgLTE2MjMsNyArMTY4MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVW5hcnlFeHByZXNzCiAg
ICAgY2FzZSBNSU5VU01JTlVTOgogICAgICAgICBtX25vblRyaXZpYWxFeHByZXNzaW9uQ291bnQr
KzsKICAgICAgICAgbV9ub25MSFNDb3VudCsrOwotICAgICAgICBleHByID0gY29udGV4dC5tYWtl
UG9zdGZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgT3BNaW51c01pbnVz
LCBzdWJFeHByU3RhcnQsIGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpKTsKKyAgICAgICAgZXhw
ciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcE1pbnVzTWludXMs
IHN1YkV4cHJTdGFydCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkpOwogICAgICAgICBtX2Fz
c2lnbm1lbnRDb3VudCsrOwogICAgICAgICBmYWlsSWZUcnVlSWZTdHJpY3RXaXRoTmFtZUFuZE1l
c3NhZ2UoaXNFdmFsT3JBcmd1bWVudHMsICInIiwgbV9sYXN0SWRlbnRpZmllci0+aW1wbCgpLCAi
JyBjYW5ub3QgYmUgbW9kaWZpZWQgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgZmFpbElmVHJ1
ZUlmU3RyaWN0KHJlcXVpcmVzTEV4cHIpOwpAQCAtMTYzNyw0MCArMTY5NCw0MiBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVVuYXJ5RXhwcmVzcwogICAgIAogICAgIGlmICghVHJlZUJ1aWxkZXI6OkNyZWF0ZXNBU1Qg
JiYgKG1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCB8fCAhc3RyaWN0TW9kZSgpKSkKICAgICAgICAg
cmV0dXJuIGV4cHI7Ci0gICAgCisKKyAgICBsb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKKyAg
ICBsb2NhdGlvbi5saW5lID0gbV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKTsKICAgICB3aGlsZSAo
dG9rZW5TdGFja0RlcHRoKSB7CiAgICAgICAgIHN3aXRjaCAoY29udGV4dC51bmFyeVRva2VuU3Rh
Y2tMYXN0VHlwZSh0b2tlblN0YWNrRGVwdGgpKSB7CiAgICAgICAgIGNhc2UgRVhDTEFNQVRJT046
Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVMb2dpY2FsTm90KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGV4cHIpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRl
TG9naWNhbE5vdChsb2NhdGlvbiwgZXhwcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
Y2FzZSBUSUxERToKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VCaXR3aXNlTm90Tm9k
ZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByKTsKKyAgICAgICAgICAgIGV4cHIgPSBj
b250ZXh0Lm1ha2VCaXR3aXNlTm90Tm9kZShsb2NhdGlvbiwgZXhwcik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBNSU5VUzoKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1h
a2VOZWdhdGVOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIpOworICAgICAgICAg
ICAgZXhwciA9IGNvbnRleHQubWFrZU5lZ2F0ZU5vZGUobG9jYXRpb24sIGV4cHIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUExVUzoKLSAgICAgICAgICAgIGV4cHIgPSBjb250
ZXh0LmNyZWF0ZVVuYXJ5UGx1cyhtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByKTsKKyAg
ICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0ZVVuYXJ5UGx1cyhsb2NhdGlvbiwgZXhwcik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQTFVTUExVUzoKICAgICAgICAgY2Fz
ZSBBVVRPUExVU1BMVVM6Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlUHJlZml4Tm9k
ZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBPcFBsdXNQbHVzLCBjb250ZXh0LnVu
YXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBzdWJFeHByU3RhcnQgKyAx
LCBlbmQpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVByZWZpeE5vZGUobG9jYXRp
b24sIGV4cHIsIE9wUGx1c1BsdXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRv
a2VuU3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CiAgICAgICAgICAgICBtX2Fz
c2lnbm1lbnRDb3VudCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTUlOVVNN
SU5VUzoKICAgICAgICAgY2FzZSBBVVRPTUlOVVNNSU5VUzoKLSAgICAgICAgICAgIGV4cHIgPSBj
b250ZXh0Lm1ha2VQcmVmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIE9w
TWludXNNaW51cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0Rl
cHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0
Lm1ha2VQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcE1pbnVzTWludXMsIGNvbnRleHQudW5h
cnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEs
IGVuZCk7CiAgICAgICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgVFlQRU9GOgotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFr
ZVR5cGVPZk5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwcik7CisgICAgICAgICAg
ICBleHByID0gY29udGV4dC5tYWtlVHlwZU9mTm9kZShsb2NhdGlvbiwgZXhwcik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBWT0lEVE9LRU46Ci0gICAgICAgICAgICBleHByID0g
Y29udGV4dC5jcmVhdGVWb2lkKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIpOworICAg
ICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlVm9pZChsb2NhdGlvbiwgZXhwcik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBERUxFVEVUT0tFTjoKICAgICAgICAgICAgIGZh
aWxJZlRydWVJZlN0cmljdFdpdGhOYW1lQW5kTWVzc2FnZShjb250ZXh0LmlzUmVzb2x2ZShleHBy
KSwgIkNhbm5vdCBkZWxldGUgdW5xdWFsaWZpZWQgcHJvcGVydHkiLCBtX2xhc3RJZGVudGlmaWVy
LT5pbXBsKCksICJpbiBzdHJpY3QgbW9kZSIpOwotICAgICAgICAgICAgZXhwciA9IGNvbnRleHQu
bWFrZURlbGV0ZU5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhwciwgY29udGV4dC51
bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwgZW5kLCBlbmQpOworICAg
ICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZURlbGV0ZU5vZGUobG9jYXRpb24sIGV4cHIsIGNv
bnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIGVuZCwgZW5k
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgLy8g
SWYgd2UgZ2V0IGhlcmUgc29tZXRoaW5nIGhhcyBnb25lIGhvcnJpYmx5IGhvcnJpYmx5IHdyb25n
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBjMmExMWQ2NjViNzkxM2Vj
NWY2NDMxYzA2MzZjMWE4YTZkZDZhMDE2Li43OWE5NWI2OTYzYjQxMjkwYmNhM2I0ZmE5Yzg1ODBm
Y2I2MjM1NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTUwMiwx
OCArNTAyLDE4IEBAIHByaXZhdGU6CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgbmV4dCh1bnNp
Z25lZCBsZXhlckZsYWdzID0gMCkKICAgICB7Ci0gICAgICAgIG1fbGFzdExpbmUgPSBtX3Rva2Vu
Lm1faW5mby5saW5lOwotICAgICAgICBtX2xhc3RUb2tlbkVuZCA9IG1fdG9rZW4ubV9pbmZvLmVu
ZE9mZnNldDsKKyAgICAgICAgbV9sYXN0TGluZSA9IG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lOwor
ICAgICAgICBtX2xhc3RUb2tlbkVuZCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQ7CiAg
ICAgICAgIG1fbGV4ZXItPnNldExhc3RMaW5lTnVtYmVyKG1fbGFzdExpbmUpOwotICAgICAgICBt
X3Rva2VuLm1fdHlwZSA9IG1fbGV4ZXItPmxleCgmbV90b2tlbi5tX2RhdGEsICZtX3Rva2VuLm1f
aW5mbywgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSgpKTsKKyAgICAgICAgbV90b2tlbi5tX3R5cGUg
PSBtX2xleGVyLT5sZXgoJm1fdG9rZW4ubV9kYXRhLCAmbV90b2tlbi5tX2xvY2F0aW9uLCBsZXhl
ckZsYWdzLCBzdHJpY3RNb2RlKCkpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBu
ZXh0RXhwZWN0SWRlbnRpZmllcih1bnNpZ25lZCBsZXhlckZsYWdzID0gMCkKICAgICB7Ci0gICAg
ICAgIG1fbGFzdExpbmUgPSBtX3Rva2VuLm1faW5mby5saW5lOwotICAgICAgICBtX2xhc3RUb2tl
bkVuZCA9IG1fdG9rZW4ubV9pbmZvLmVuZE9mZnNldDsKKyAgICAgICAgbV9sYXN0TGluZSA9IG1f
dG9rZW4ubV9sb2NhdGlvbi5saW5lOworICAgICAgICBtX2xhc3RUb2tlbkVuZCA9IG1fdG9rZW4u
bV9sb2NhdGlvbi5lbmRPZmZzZXQ7CiAgICAgICAgIG1fbGV4ZXItPnNldExhc3RMaW5lTnVtYmVy
KG1fbGFzdExpbmUpOwotICAgICAgICBtX3Rva2VuLm1fdHlwZSA9IG1fbGV4ZXItPmxleEV4cGVj
dElkZW50aWZpZXIoJm1fdG9rZW4ubV9kYXRhLCAmbV90b2tlbi5tX2luZm8sIGxleGVyRmxhZ3Ms
IHN0cmljdE1vZGUoKSk7CisgICAgICAgIG1fdG9rZW4ubV90eXBlID0gbV9sZXhlci0+bGV4RXhw
ZWN0SWRlbnRpZmllcigmbV90b2tlbi5tX2RhdGEsICZtX3Rva2VuLm1fbG9jYXRpb24sIGxleGVy
RmxhZ3MsIHN0cmljdE1vZGUoKSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSBib29sIG5l
eHRUb2tlbklzQ29sb24oKQpAQCAtNTQxLDIwICs1NDEsMjUgQEAgcHJpdmF0ZToKICAgICAKICAg
ICBBTFdBWVNfSU5MSU5FIGludCB0b2tlblN0YXJ0KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBt
X3Rva2VuLm1faW5mby5zdGFydE9mZnNldDsKKyAgICAgICAgcmV0dXJuIG1fdG9rZW4ubV9sb2Nh
dGlvbi5zdGFydE9mZnNldDsKICAgICB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSBpbnQgdG9r
ZW5MaW5lKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3Rva2VuLm1faW5mby5saW5lOworICAg
ICAgICByZXR1cm4gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmU7CiAgICAgfQogICAgIAogICAgIEFM
V0FZU19JTkxJTkUgaW50IHRva2VuRW5kKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3Rva2Vu
Lm1faW5mby5lbmRPZmZzZXQ7CisgICAgICAgIHJldHVybiBtX3Rva2VuLm1fbG9jYXRpb24uZW5k
T2Zmc2V0OwogICAgIH0KICAgICAKLSAgICBjb25zdCBjaGFyKiBnZXRUb2tlbk5hbWUoSlNUb2tl
blR5cGUgdG9rKSAKKyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgdG9r
ZW5Mb2NhdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gbV90b2tlbi5tX2xvY2F0aW9uOwor
ICAgIH0KKworICAgIGNvbnN0IGNoYXIqIGdldFRva2VuTmFtZShKU1Rva2VuVHlwZSB0b2spCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKHRvaykgewogICAgICAgICBjYXNlIE5VTExUT0tFTjogCkBA
IC0xMDAzLDggKzEwMDgsMTEgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2UoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmoKIAogICAgIFJlZlB0
cjxQYXJzZWROb2RlPiByZXN1bHQ7CiAgICAgaWYgKG1fc291cmNlRWxlbWVudHMpIHsKKyAgICAg
ICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uOworICAgICAgICBsb2NhdGlvbi5saW5lID0gbV9s
ZXhlci0+bGFzdExpbmVOdW1iZXIoKTsKKyAgICAgICAgbG9jYXRpb24uY29sdW1uID0gbV9sZXhl
ci0+Y3VycmVudENvbHVtbk51bWJlcigpOwogICAgICAgICByZXN1bHQgPSBQYXJzZWROb2RlOjpj
cmVhdGUoJmxleGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fc291cmNlRWxlbWVudHMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3ZhckRlY2xhcmF0aW9ucyA/ICZtX3ZhckRlY2xhcmF0aW9ucy0+
ZGF0YSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2Z1bmNEZWNs
YXJhdGlvbnMgPyAmbV9mdW5jRGVjbGFyYXRpb25zLT5kYXRhIDogMCwKQEAgLTEwMTIsNyArMTAy
MCw3IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKEpT
R2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqbV9zb3VyY2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2ZlYXR1cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9udW1D
b25zdGFudHMpOwotICAgICAgICByZXN1bHQtPnNldExvYyhtX3NvdXJjZS0+Zmlyc3RMaW5lKCks
IG1fbGFzdExpbmUpOworICAgICAgICByZXN1bHQtPnNldExvYyhtX3NvdXJjZS0+Zmlyc3RMaW5l
KCksIG1fbGFzdExpbmUsIG1fbGV4ZXItPmN1cnJlbnRDb2x1bW5OdW1iZXIoKSk7CiAgICAgfSBl
bHNlIGlmIChsZXhpY2FsR2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIC8vIFdlIGNhbiBuZXZlciBz
ZWUgYSBzeW50YXggZXJyb3Igd2hlbiByZXBhcnNpbmcgYSBmdW5jdGlvbiwgc2luY2Ugd2Ugc2hv
dWxkIGhhdmUKICAgICAgICAgLy8gcmVwb3J0ZWQgdGhlIGVycm9yIHdoZW4gcGFyc2luZyB0aGUg
Y29udGFpbmluZyBwcm9ncmFtIG9yIGV2YWwgY29kZS4gU28gaWYgd2UncmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCmluZGV4IGExZWE3NTFhYzIwYTc5MmZm
NGM1ZTYyMWEwMWJjNzc0OWVhM2E5YmYuLjZlNmNlYzExNGQ0NDVlMzc4NjVmZWM4YzM5MWRmNWI1
MWRlYzUxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
VG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMu
aApAQCAtMTQwLDE3ICsxNDAsMjUgQEAgdW5pb24gSlNUb2tlbkRhdGEgewogICAgIGNvbnN0IElk
ZW50aWZpZXIqIGlkZW50OwogfTsKIAotc3RydWN0IEpTVG9rZW5JbmZvIHsKLSAgICBKU1Rva2Vu
SW5mbygpIDogbGluZSgwKSB7IH0KK3N0cnVjdCBKU1Rva2VuTG9jYXRpb24geworICAgIEpTVG9r
ZW5Mb2NhdGlvbigpIDogbGluZSgwKSwgY29sdW1uKDApIHsgfQorICAgIEpTVG9rZW5Mb2NhdGlv
bihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQorICAgIHsKKyAgICAgICAgbGluZSA9
IGxvY2F0aW9uLmxpbmU7CisgICAgICAgIHN0YXJ0T2Zmc2V0ID0gbG9jYXRpb24uc3RhcnRPZmZz
ZXQ7CisgICAgICAgIGVuZE9mZnNldCA9IGxvY2F0aW9uLmVuZE9mZnNldDsKKyAgICAgICAgY29s
dW1uID0gbG9jYXRpb24uY29sdW1uOworICAgIH0KICAgICBpbnQgbGluZTsKICAgICBpbnQgc3Rh
cnRPZmZzZXQ7CiAgICAgaW50IGVuZE9mZnNldDsKKyAgICBpbnQgY29sdW1uOwogfTsKIAogc3Ry
dWN0IEpTVG9rZW4gewogICAgIEpTVG9rZW5UeXBlIG1fdHlwZTsKICAgICBKU1Rva2VuRGF0YSBt
X2RhdGE7Ci0gICAgSlNUb2tlbkluZm8gbV9pbmZvOworICAgIEpTVG9rZW5Mb2NhdGlvbiBtX2xv
Y2F0aW9uOwogfTsKIAogZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBKU1BhcnNlTm9ybWFsLCBK
U1BhcnNlU3RyaWN0IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgKaW5kZXggMzY2MjM2N2EwMWI3MDlkOWNkNGVjM2Q0
N2QyZjNkYjkzZTVlMjRhNy4uYmZkMzU2NDhlZTg4MTM4YWM1MjFiODgyN2ZhODZiZDBjZWYxMjIw
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Tb3VyY2VQcm92aWRl
ckNhY2hlSXRlbS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU291cmNlUHJv
dmlkZXJDYWNoZUl0ZW0uaApAQCAtNTMsOSArNTMsOSBAQCBwdWJsaWM6CiAgICAgICAgIEpTVG9r
ZW4gdG9rZW47CiAgICAgICAgIHRva2VuLm1fdHlwZSA9IENMT1NFQlJBQ0U7CiAgICAgICAgIHRv
a2VuLm1fZGF0YS5pbnRWYWx1ZSA9IGNsb3NlQnJhY2VQb3M7Ci0gICAgICAgIHRva2VuLm1faW5m
by5zdGFydE9mZnNldCA9IGNsb3NlQnJhY2VQb3M7Ci0gICAgICAgIHRva2VuLm1faW5mby5lbmRP
ZmZzZXQgPSBjbG9zZUJyYWNlUG9zICsgMTsKLSAgICAgICAgdG9rZW4ubV9pbmZvLmxpbmUgPSBj
bG9zZUJyYWNlTGluZTsgCisgICAgICAgIHRva2VuLm1fbG9jYXRpb24uc3RhcnRPZmZzZXQgPSBj
bG9zZUJyYWNlUG9zOworICAgICAgICB0b2tlbi5tX2xvY2F0aW9uLmVuZE9mZnNldCA9IGNsb3Nl
QnJhY2VQb3MgKyAxOworICAgICAgICB0b2tlbi5tX2xvY2F0aW9uLmxpbmUgPSBjbG9zZUJyYWNl
TGluZTsKICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggZmUzY2U3MTRmMzBlNDkwMGNh
NTRiNTY1NWZkOGExMTkwNmM3ZmRkZS4uN2Q0NGVmM2M2NmVjY2U4ZWM2OGJhZmVhOTNkYmM5YWFj
NDBiOTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhD
aGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2Vy
LmgKQEAgLTExOSw0MiArMTE5LDQyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgRG9udEJ1aWxkU3RyaW5ncyA9IExleGVyRmxhZ3NEb250QnVpbGRTdHJpbmdzOwogCiAgICAg
aW50IGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkgeyByZXR1cm4gMTsgfQotICAgIEV4cHJlc3Npb25U
eXBlIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIENhbGxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZUZ1bmN0aW9uQ2FsbE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIENhbGxFeHByOyB9CiAgICAgdm9pZCBhcHBlbmRUb0NvbW1hKEV4cHJlc3Npb25UeXBlJiBi
YXNlLCBFeHByZXNzaW9uVHlwZSByaWdodCkgeyBiYXNlID0gcmlnaHQ7IH0KLSAgICBFeHByZXNz
aW9uVHlwZSBjcmVhdGVDb21tYUV4cHIoaW50LCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5
cGUgcmlnaHQpIHsgcmV0dXJuIHJpZ2h0OyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZUFzc2ln
bk5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIEV4cHJlc3Npb25UeXBlLCBib29s
LCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsgfQotICAgIEV4
cHJlc3Npb25UeXBlIG1ha2VQcmVmaXhOb2RlKGludCwgRXhwcmVzc2lvblR5cGUsIE9wZXJhdG9y
LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQcmVFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUg
bWFrZVBvc3RmaXhOb2RlKGludCwgRXhwcmVzc2lvblR5cGUsIE9wZXJhdG9yLCBpbnQsIGludCwg
aW50KSB7IHJldHVybiBQb3N0RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VUeXBlT2ZO
b2RlKGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFR5cGVvZkV4cHI7IH0KLSAgICBFeHBy
ZXNzaW9uVHlwZSBtYWtlRGVsZXRlTm9kZShpbnQsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwg
aW50KSB7IHJldHVybiBEZWxldGVFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZU5lZ2F0
ZU5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhw
cmVzc2lvblR5cGUgbWFrZUJpdHdpc2VOb3ROb2RlKGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0
dXJuIFVuYXJ5RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUxvZ2ljYWxOb3QoaW50
LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlVW5hcnlQbHVzKGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhw
cjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVZvaWQoaW50LCBFeHByZXNzaW9uVHlwZSkg
eyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgdGhpc0V4cHIoaW50KSB7
IHJldHVybiBUaGlzRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVJlc29sdmUoaW50
LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiBSZXNvbHZlRXhwcjsgfQotICAgIEV4
cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVjdExpdGVyYWwoaW50KSB7IHJldHVybiBPYmplY3RMaXRl
cmFsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVjdExpdGVyYWwoaW50LCBp
bnQpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlQXJyYXkoaW50LCBpbnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4cHI7IH0KLSAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVBcnJheShpbnQsIGludCwgaW50KSB7IHJldHVybiBBcnJheUxpdGVy
YWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVtYmVyRXhwcihpbnQsIGRvdWJs
ZSkgeyByZXR1cm4gTnVtYmVyRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVN0cmlu
ZyhpbnQsIGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVybiBTdHJpbmdFeHByOyB9Ci0gICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlQm9vbGVhbihpbnQsIGJvb2wpIHsgcmV0dXJuIEJvb2xFeHByOyB9
Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVsbChpbnQpIHsgcmV0dXJuIE51bGxFeHByOyB9
Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2VzcyhpbnQsIEV4cHJlc3Npb25U
eXBlLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQnJhY2tl
dEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nlc3MoaW50LCBFeHByZXNz
aW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIERvdEV4
cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZWdFeHAoaW50LCBjb25zdCBJZGVudGlm
aWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiwgaW50KSB7IHJldHVybiBZYXJyOjpjaGVj
a1N5bnRheChwYXR0ZXJuLnVzdHJpbmcoKSkgPyAwIDogUmVnRXhwRXhwcjsgfQotICAgIEV4cHJl
c3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoaW50LCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTmV3
RXhwcihpbnQsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3RXhwcjsgfQot
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihpbnQsIEV4cHJlc3Npb25U
eXBlLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIENvbmRpdGlvbmFs
RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFzc2lnblJlc29sdmUoaW50LCBjb25z
dCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEFz
c2lnbm1lbnRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGlu
dCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbkJvZHkoaW50LCBib29s
KSB7IHJldHVybiAxOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQ29tbWFFeHByKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSByaWdodCkg
eyByZXR1cm4gcmlnaHQ7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlQXNzaWduTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIEV4cHJlc3Npb25U
eXBlLCBib29sLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50RXhwcjsg
fQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQcmVmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gUHJl
RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQb3N0Zml4Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIFBvc3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVR5cGVPZk5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFR5cGVvZkV4cHI7IH0K
KyAgICBFeHByZXNzaW9uVHlwZSBtYWtlRGVsZXRlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gRGVsZXRlRXhwcjsgfQor
ICAgIEV4cHJlc3Npb25UeXBlIG1ha2VOZWdhdGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlw
ZSBtYWtlQml0d2lzZU5vdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5
cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUxvZ2lj
YWxOb3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVu
YXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVVuYXJ5UGx1cyhjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAg
RXhwcmVzc2lvblR5cGUgY3JlYXRlVm9pZChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgdGhpc0V4
cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gVGhpc0V4cHI7IH0KKyAgICBFeHBy
ZXNzaW9uVHlwZSBjcmVhdGVSZXNvbHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElk
ZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJuIFJlc29sdmVFeHByOyB9CisgICAgRXhwcmVzc2lvblR5
cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChjb25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBP
YmplY3RMaXRlcmFsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVjdExpdGVy
YWwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50KSB7IHJldHVybiBPYmplY3RMaXRlcmFsRXhw
cjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGludCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBl
IGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJldHVybiBB
cnJheUxpdGVyYWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVtYmVyRXhwcihj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBkb3VibGUpIHsgcmV0dXJuIE51bWJlckV4cHI7IH0KKyAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVTdHJpbmcoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgSWRlbnRpZmllciopIHsgcmV0dXJuIFN0cmluZ0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlw
ZSBjcmVhdGVCb29sZWFuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJvb2wpIHsgcmV0dXJuIEJv
b2xFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVsbChjb25zdCBKU1Rva2VuTG9j
YXRpb24mKSB7IHJldHVybiBOdWxsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUJy
YWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUsIEV4cHJl
c3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBCcmFja2V0RXhwcjsgfQor
ICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIERvdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZWdFeHAoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3QgSWRlbnRpZmll
ciYsIGludCkgeyByZXR1cm4gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVybi51c3RyaW5nKCkpID8g
MCA6IFJlZ0V4cEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIE5ld0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVOZXdFeHByKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1cm4gTmV3
RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUsIEV4cHJlc3Np
b25UeXBlKSB7IHJldHVybiBDb25kaXRpb25hbEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBj
cmVhdGVBc3NpZ25SZXNvbHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZp
ZXImLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gQXNzaWdubWVudEV4
cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4cHIoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQorICAgIGludCBjcmVhdGVGdW5jdGlvbkJvZHko
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVh
dGVBcmd1bWVudHMoKSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUFyZ3VtZW50cyhpbnQp
IHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQXJndW1lbnRzTGlzdChpbnQsIGludCkgeyBy
ZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQXJndW1lbnRzTGlzdChjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQXJndW1lbnRzTGlzdChj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIHRlbXBs
YXRlIDxib29sIGNvbXBsZXRlPiBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlm
aWVyKiBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlKQogICAgIHsKICAgICAgICAg
aWYgKCFjb21wbGV0ZSkKQEAgLTE2OCw4ICsxNjgsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBy
ZXR1cm4gUHJvcGVydHkodHlwZSk7CiAgICAgICAgIHJldHVybiBQcm9wZXJ0eSgmZ2xvYmFsRGF0
YS0+cGFyc2VyQXJlbmEtPmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1lcmljSWRlbnRpZmllcihn
bG9iYWxEYXRhLCBuYW1lKSwgdHlwZSk7CiAgICAgfQotICAgIGludCBjcmVhdGVQcm9wZXJ0eUxp
c3QoaW50LCBQcm9wZXJ0eSkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVQcm9wZXJ0eUxp
c3QoaW50LCBQcm9wZXJ0eSwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVByb3Bl
cnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eSkgeyByZXR1cm4gMTsgfQor
ICAgIGludCBjcmVhdGVQcm9wZXJ0eUxpc3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVy
dHksIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVFbGVtZW50TGlzdChpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVFbGVtZW50TGlzdChpbnQsIGludCwgaW50
KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoY29uc3Qg
SWRlbnRpZmllciYpIHsgcmV0dXJuIDE7IH0KQEAgLTE3OCwzOSArMTc4LDM5IEBAIHB1YmxpYzoK
ICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQpIHsgcmV0dXJuIDE7IH0KICAgICBpbnQgY3Jl
YXRlQ2xhdXNlTGlzdChpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIHZvaWQgc2V0VXNlc0Fy
Z3VtZW50cyhpbnQpIHsgfQotICAgIGludCBjcmVhdGVGdW5jRGVjbFN0YXRlbWVudChpbnQsIGNv
bnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAx
OyB9Ci0gICAgaW50IGNyZWF0ZUJsb2NrU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCkgeyBy
ZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVFeHByU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVJZlN0YXRlbWVudChpbnQsIGludCwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVJZlN0YXRlbWVudChpbnQs
IGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUZv
ckxvb3AoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0g
ICAgaW50IGNyZWF0ZUZvckluTG9vcChpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAg
ICBpbnQgY3JlYXRlRm9ySW5Mb29wKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRW1wdHlTdGF0ZW1lbnQoaW50
KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVZhclN0YXRlbWVudChpbnQsIGludCwgaW50
LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlUmV0dXJuU3RhdGVtZW50KGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQnJl
YWtTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBp
bnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50LCBpbnQs
IGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50
KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUNv
bnRpbnVlU3RhdGVtZW50KGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVUcnlTdGF0ZW1lbnQoaW50LCBpbnQsIGNv
bnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBp
bnQgY3JlYXRlU3dpdGNoU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVXaGlsZVN0YXRlbWVudChpbnQsIGludCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVXaXRoU3RhdGVtZW50
KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGlu
dCBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9Ci0gICAgaW50IGNyZWF0ZUxhYmVsU3RhdGVtZW50KGludCwgY29uc3QgSWRlbnRpZmll
ciosIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlVGhyb3dTdGF0
ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGlu
dCBjcmVhdGVEZWJ1Z2dlcihpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNy
ZWF0ZUNvbnN0U3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAg
IGludCBhcHBlbmRDb25zdERlY2woaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsg
cmV0dXJuIDE7IH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFByb3BlcnR5IGNyZWF0ZUdl
dHRlck9yU2V0dGVyUHJvcGVydHkoaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgY29uc3Qg
SWRlbnRpZmllciogbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkKKyAgICBpbnQg
Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRl
bnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAg
ICBpbnQgY3JlYXRlQmxvY2tTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBp
bnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVFeHByU3RhdGVtZW50KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQg
Y3JlYXRlSWZTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwg
aW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUlmU3RhdGVtZW50KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAg
aW50IGNyZWF0ZUZvckxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVGb3JJbkxvb3AoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBj
cmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlRW1wdHlT
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gMTsgfQorICAgIGludCBj
cmVhdGVWYXJTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBp
bnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQs
IGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUJyZWFrU3RhdGVtZW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAg
aW50IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0
IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQg
Y3JlYXRlVHJ5U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgY29uc3QgSWRl
bnRpZmllciosIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVh
dGVTd2l0Y2hTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVXaGlsZVN0YXRlbWVu
dChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7
IH0KKyAgICBpbnQgY3JlYXRlV2l0aFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0
ZURvV2hpbGVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwg
aW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUxhYmVsU3RhdGVtZW50KGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50KSB7IHJldHVy
biAxOyB9CisgICAgaW50IGNyZWF0ZVRocm93U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0
ZURlYnVnZ2VyKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJldHVybiAxOyB9
CisgICAgaW50IGNyZWF0ZUNvbnN0U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgYXBwZW5kQ29uc3REZWNsKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgY29uc3QgSWRlbnRpZmllciosIGludCkgeyByZXR1cm4g
MTsgfQorICAgIHRlbXBsYXRlIDxib29sIHN0cmljdD4gUHJvcGVydHkgY3JlYXRlR2V0dGVyT3JT
ZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGU6OlR5cGUg
dHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGlu
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKICAgICAgICAgaWYgKCFzdHJpY3QpCiAg
ICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CiAgICAgICAgIHJldHVybiBQcm9wZXJ0
eShuYW1lLCB0eXBlKTsKICAgICB9Ci0gICAgdGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQcm9wZXJ0
eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
aW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUsIGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQpCisgICAgdGVtcGxhdGUgPGJvb2wgc3RyaWN0PiBQcm9wZXJ0eSBjcmVh
dGVHZXR0ZXJPclNldHRlclByb3BlcnR5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUsIGRvdWJsZSBuYW1lLCBp
bnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KQogICAgIHsKICAgICAgICAgaWYgKCFzdHJpY3Qp
CiAgICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CkBAIC0yMTksNyArMjE5LDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBhcHBlbmRTdGF0ZW1lbnQoaW50LCBpbnQpIHsgfQogICAgIHZv
aWQgYWRkVmFyKGNvbnN0IElkZW50aWZpZXIqLCBib29sKSB7IH0KLSAgICBpbnQgY29tYmluZUNv
bW1hTm9kZXMoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjb21iaW5lQ29t
bWFOb2Rlcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQog
ICAgIGludCBldmFsQ291bnQoKSBjb25zdCB7IHJldHVybiAwOyB9CiAgICAgdm9pZCBhcHBlbmRC
aW5hcnlFeHByZXNzaW9uSW5mbyhpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQgZXhwciwgaW50
LCBpbnQsIGludCwgYm9vbCkKICAgICB7CkBAIC0yMzUsNyArMjM1LDcgQEAgcHVibGljOgogICAg
IGJvb2wgb3BlcmF0b3JTdGFja0hhc0hpZ2hlclByZWNlZGVuY2UoaW50JiwgaW50KSB7IHJldHVy
biB0cnVlOyB9CiAgICAgQmluYXJ5T3BlcmFuZCBnZXRGcm9tT3BlcmFuZFN0YWNrKGludCkgeyBy
ZXR1cm4gbV90b3BCaW5hcnlFeHByOyB9CiAgICAgdm9pZCBzaHJpbmtPcGVyYW5kU3RhY2tCeShp
bnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQgYW1vdW50KSB7IG9wZXJhbmRTdGFja0RlcHRoIC09
IGFtb3VudDsgfQotICAgIHZvaWQgYXBwZW5kQmluYXJ5T3BlcmF0aW9uKGludCwgaW50JiBvcGVy
YW5kU3RhY2tEZXB0aCwgaW50JiwgQmluYXJ5T3BlcmFuZCwgQmluYXJ5T3BlcmFuZCkgeyBvcGVy
YW5kU3RhY2tEZXB0aCsrOyB9CisgICAgdm9pZCBhcHBlbmRCaW5hcnlPcGVyYXRpb24oY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50JiwgQmluYXJ5T3Bl
cmFuZCwgQmluYXJ5T3BlcmFuZCkgeyBvcGVyYW5kU3RhY2tEZXB0aCsrOyB9CiAgICAgdm9pZCBv
cGVyYXRvclN0YWNrQXBwZW5kKGludCYgb3BlcmF0b3JTdGFja0RlcHRoLCBpbnQsIGludCkgeyBv
cGVyYXRvclN0YWNrRGVwdGgrKzsgfQogICAgIGludCBwb3BPcGVyYW5kU3RhY2soaW50JikgeyBp
bnQgcmVzID0gbV90b3BCaW5hcnlFeHByOyBtX3RvcEJpbmFyeUV4cHIgPSAwOyByZXR1cm4gcmVz
OyB9CiAgICAgCkBAIC0yNDUsNyArMjQ1LDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5hcnlUb2tl
blN0YWNrUmVtb3ZlTGFzdChpbnQmIHN0YWNrRGVwdGgpIHsgc3RhY2tEZXB0aCA9IDA7IH0KICAg
ICAKICAgICB2b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQsIGludCwgaW50LCBpbnQsIGlu
dCwgT3BlcmF0b3IpIHsgfQotICAgIGludCBjcmVhdGVBc3NpZ25tZW50KGludCwgaW50LCBpbnQs
IGludCwgaW50LCBpbnQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAxOyB9CisgICAg
aW50IGNyZWF0ZUFzc2lnbm1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAxOyB9CiAgICAgY29u
c3QgSWRlbnRpZmllciYgZ2V0TmFtZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsg
QVNTRVJUKHByb3BlcnR5Lm5hbWUpOyByZXR1cm4gKnByb3BlcnR5Lm5hbWU7IH0KICAgICBQcm9w
ZXJ0eU5vZGU6OlR5cGUgZ2V0VHlwZShjb25zdCBQcm9wZXJ0eSYgcHJvcGVydHkpIGNvbnN0IHsg
cmV0dXJuIHByb3BlcnR5LnR5cGU7IH0KICAgICBib29sIGlzUmVzb2x2ZShFeHByZXNzaW9uVHlw
ZSBleHByKSBjb25zdCB7IHJldHVybiBleHByID09IFJlc29sdmVFeHByIHx8IGV4cHIgPT0gUmVz
b2x2ZUV2YWxFeHByOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKaW5kZXggOWFjZTgyZDkzN2E5MTczOTkzNGJhNzNjMzdlZGNkOTA0Y2Iz
Zjc4OC4uNTExNTJmYTZjYjc4ZWI5M2VkYWNiN2M3Zjg3ZTk4NzcyZTgzYzFmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNzUs
MjAgKzc1LDI4IEBAIFN0cmluZyBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludChjb25z
dCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVhCiAgICAgU291cmNlSWRUb0JyZWFr
cG9pbnRzTWFwOjppdGVyYXRvciBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmZpbmQoc291
cmNlSURWYWx1ZSk7CiAgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgp
KQogICAgICAgICBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLnNldChzb3VyY2VJRFZhbHVl
LCBMaW5lVG9CcmVha3BvaW50TWFwKCkpLml0ZXJhdG9yOwotICAgIGlmIChpdC0+c2Vjb25kLmNv
bnRhaW5zKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEpKQotICAgICAgICByZXR1cm4g
IiI7Ci0gICAgaXQtPnNlY29uZC5zZXQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSwg
c2NyaXB0QnJlYWtwb2ludCk7CisgICAgTGluZVRvQnJlYWtwb2ludE1hcDo6aXRlcmF0b3IgYnJl
YWtzSXQgPSBpdC0+c2Vjb25kLmZpbmQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSk7
CisgICAgaWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisgICAgICAgIGJyZWFrc0l0
ID0gaXQtPnNlY29uZC5zZXQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyICsgMSwgQnJlYWtw
b2ludHNJbkxpbmUoKSkuaXRlcmF0b3I7CisKKyAgICBCcmVha3BvaW50c0luTGluZSYgYnJlYWtz
VmVjdG9yID0gYnJlYWtzSXQtPnNlY29uZDsKKyAgICB1bnNpZ25lZCBicmVha3NDb3VudCA9IGJy
ZWFrc1ZlY3Rvci5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGJyZWFrc0Nv
dW50OyBpKyspIHsKKyAgICAgICAgaWYgKGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5OdW1iZXIg
PT0gc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXIpCisgICAgICAgICAgICByZXR1cm4gIiI7
CisgICAgfQorICAgIGJyZWFrc1ZlY3Rvci5hcHBlbmQoc2NyaXB0QnJlYWtwb2ludCk7CisKICAg
ICAqYWN0dWFsTGluZU51bWJlciA9IHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcjsKLSAgICAv
LyBGSVhNRShXSzUzMDAzKTogaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2ludHMgYnkgbGluZTpj
b2x1bW4uCi0gICAgKmFjdHVhbENvbHVtbk51bWJlciA9IDA7Ci0gICAgcmV0dXJuIHNvdXJjZUlE
ICsgIjoiICsgU3RyaW5nOjpudW1iZXIoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyKTsKKyAg
ICAqYWN0dWFsQ29sdW1uTnVtYmVyID0gc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXI7Cisg
ICAgcmV0dXJuIHNvdXJjZUlEICsgIjoiICsgU3RyaW5nOjpudW1iZXIoc2NyaXB0QnJlYWtwb2lu
dC5saW5lTnVtYmVyKSArICI6IiArIFN0cmluZzo6bnVtYmVyKHNjcmlwdEJyZWFrcG9pbnQuY29s
dW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2lu
dChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiB0b2tl
bnM7CiAgICAgYnJlYWtwb2ludElkLnNwbGl0KCI6IiwgdG9rZW5zKTsKLSAgICBpZiAodG9rZW5z
LnNpemUoKSAhPSAyKQorICAgIGlmICh0b2tlbnMuc2l6ZSgpICE9IDMpCiAgICAgICAgIHJldHVy
bjsKICAgICBib29sIHN1Y2Nlc3M7CiAgICAgaW50cHRyX3Qgc291cmNlSURWYWx1ZSA9IHRva2Vu
c1swXS50b0ludFB0cigmc3VjY2Vzcyk7CkBAIC05Nyw5ICsxMDUsNjMgQEAgdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkK
ICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyID0gdG9rZW5zWzFdLnRvVUludCgmc3VjY2Vzcyk7CiAg
ICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm47CisgICAgdW5zaWduZWQgY29sdW1uTnVt
YmVyID0gdG9rZW5zWzJdLnRvVUludCgmc3VjY2Vzcyk7CisgICAgaWYgKCFzdWNjZXNzKQorICAg
ICAgICByZXR1cm47CisKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0
ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRFZhbHVlKTsKLSAgICBpZiAo
aXQgIT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIGl0LT5zZWNvbmQu
cmVtb3ZlKGxpbmVOdW1iZXIgKyAxKTsKKyAgICBpZiAoaXQgPT0gbV9zb3VyY2VJZFRvQnJlYWtw
b2ludHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBMaW5lVG9CcmVha3BvaW50TWFwOjpp
dGVyYXRvciBicmVha3NJdCA9IGl0LT5zZWNvbmQuZmluZChsaW5lTnVtYmVyICsgMSk7CisgICAg
aWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IEJyZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vjb25kOworICAg
IHVuc2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykgeworICAgICAgICBpZiAoYnJlYWtz
VmVjdG9yLmF0KGkpLmNvbHVtbk51bWJlciA9PSBzdGF0aWNfY2FzdDxpbnQ+KGNvbHVtbk51bWJl
cikpIHsKKyAgICAgICAgICAgIGJyZWFrc1ZlY3Rvci5yZW1vdmUoaSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6dXBk
YXRlQ3VycmVudFN0YXRlbWVudFBvc2l0aW9uKGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZSkK
K3sKKyAgICBpZiAobGluZSA8IDApCisgICAgICAgIHJldHVybjsKKworICAgIFNvdXJjZVByb3Zp
ZGVyKiBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PFNvdXJjZVByb3ZpZGVyKj4oc291cmNlSUQp
OworCisgICAgaWYgKG1fY3VycmVudFNvdXJjZUlEICE9IHNvdXJjZUlEKSB7CisgICAgICAgIFN0
cmluZyBzb3VyY2VDb2RlID0gdXN0cmluZ1RvU3RyaW5nKEpTQzo6VVN0cmluZyhjb25zdF9jYXN0
PFN0cmluZ0ltcGwqPihzb3VyY2UtPmRhdGEoKSkpKTsKKyAgICAgICAgbV9jdXJyZW50U291cmNl
Q29kZS5jbGVhcigpOworICAgICAgICBzb3VyY2VDb2RlLnNwbGl0KCJcbiIsIHRydWUsIG1fY3Vy
cmVudFNvdXJjZUNvZGUpOworICAgICAgICBtX2N1cnJlbnRTb3VyY2VJRCA9IHNvdXJjZUlEOwor
ICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyID0gMDsKKyAgICAg
ICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVyID0gMDsKKyAgICB9CisK
KyAgICBpZiAobGluZSAhPSBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVtYmVyKSB7
CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIgPSBsaW5lOwor
ICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIgPSAwOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IHN0YXJ0TGluZSA9IHNvdXJjZS0+c3RhcnRQ
b3NpdGlvbigpLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsKKyAgICBpZiAoKG1fY3VycmVudFN0YXRl
bWVudFBvc2l0aW9uLmxpbmVOdW1iZXIgLSBzdGFydExpbmUgLSAxKSA+PSBzdGF0aWNfY2FzdDxp
bnQ+KG1fY3VycmVudFNvdXJjZUNvZGUuc2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuOworICAgIGNv
bnN0IFN0cmluZyYgY29kZUluTGluZSA9IG1fY3VycmVudFNvdXJjZUNvZGVbbV9jdXJyZW50U3Rh
dGVtZW50UG9zaXRpb24ubGluZU51bWJlciAtIHN0YXJ0TGluZSAtIDFdOworICAgIGlmIChjb2Rl
SW5MaW5lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGludCBuZXh0Q29sdW1uID0g
Y29kZUluTGluZS5maW5kKCI7IiwgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVt
YmVyKTsKKyAgICBpZiAobmV4dENvbHVtbiAhPSAtMSkgeworICAgICAgICBVQ2hhciBjID0gY29k
ZUluTGluZVtuZXh0Q29sdW1uICsgMV07CisgICAgICAgIGlmIChjID09ICcgJyB8fCBjID09ICdc
dCcpCisgICAgICAgICAgICBuZXh0Q29sdW1uICs9IDE7CisgICAgICAgIG1fY3VycmVudFN0YXRl
bWVudFBvc2l0aW9uLmNvbHVtbk51bWJlciA9IG5leHRDb2x1bW4gKyAxOworICAgIH0gZWxzZQor
ICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5OdW1iZXIgPSAwOwogfQog
CiBib29sIFNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVha3BvaW50KGludHB0cl90IHNvdXJjZUlE
LCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdApAQCAtMTEwLDE5ICsxNzIsMzcg
QEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludChpbnRwdHJfdCBzb3VyY2VJ
RCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3MKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA6
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJ
RCk7CiAgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLmVuZCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaW50IGxpbmVOdW1iZXIgPSBwb3NpdGlvbi5tX2xpbmUub25l
QmFzZWRJbnQoKTsKLSAgICBpZiAobGluZU51bWJlciA8PSAwKQorCisgICAgaW50IGxpbmVOdW1i
ZXIgPSBwb3NpdGlvbi5tX2xpbmUuemVyb0Jhc2VkSW50KCk7CisgICAgaW50IGNvbHVtbk51bWJl
ciA9IHBvc2l0aW9uLm1fY29sdW1uLnplcm9CYXNlZEludCgpOworICAgIGlmIChsaW5lTnVtYmVy
IDwgMCB8fCBjb2x1bW5OdW1iZXIgPCAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBM
aW5lVG9CcmVha3BvaW50TWFwOjpjb25zdF9pdGVyYXRvciBicmVha3NJdCA9IGl0LT5zZWNvbmQu
ZmluZChsaW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5k
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBMaW5lVG9CcmVha3BvaW50TWFwOjpjb25z
dF9pdGVyYXRvciBicmVha0l0ID0gaXQtPnNlY29uZC5maW5kKGxpbmVOdW1iZXIpOwotICAgIGlm
IChicmVha0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisKKyAgICBib29sIGhpdCA9IGZhbHNlOwor
ICAgIGNvbnN0IEJyZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJdC0+c2Vj
b25kOworICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUoKTsKKyAg
ICB1bnNpZ25lZCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBicmVha3NDb3VudDsgaSsrKSB7Cisg
ICAgICAgIGludCBicmVha0NvbHVtbiA9IGJyZWFrc1ZlY3Rvci5hdChpKS5jb2x1bW5OdW1iZXI7
CisgICAgICAgIGludCBicmVha0xpbmUgPSBicmVha3NWZWN0b3IuYXQoaSkubGluZU51bWJlcjsK
KyAgICAgICAgaWYgKGxpbmVOdW1iZXIgPT0gYnJlYWtMaW5lICYmIGNvbHVtbk51bWJlciA9PSBi
cmVha0NvbHVtbikgeworICAgICAgICAgICAgaGl0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorICAgIGlmICghaGl0KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAvLyBBbiBlbXB0eSBjb25kaXRpb24gY291bnRzIGFzIG5vIGNvbmRpdGlvbiB3aGlj
aCBpcyBlcXVpdmFsZW50IHRvICJ0cnVlIi4KLSAgICBpZiAoYnJlYWtJdC0+c2Vjb25kLmNvbmRp
dGlvbi5pc0VtcHR5KCkpCisgICAgaWYgKGJyZWFrc1ZlY3Rvci5hdChpKS5jb25kaXRpb24uaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEpTVmFsdWUgZXhjZXB0aW9uOwot
ICAgIEpTVmFsdWUgcmVzdWx0ID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5ldmFsdWF0ZShzdHJpbmdU
b1VTdHJpbmcoYnJlYWtJdC0+c2Vjb25kLmNvbmRpdGlvbiksIGV4Y2VwdGlvbik7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmV2YWx1YXRlKHN0cmluZ1RvVVN0cmlu
ZyhicmVha3NWZWN0b3IuYXQoaSkuY29uZGl0aW9uKSwgZXhjZXB0aW9uKTsKICAgICBpZiAoZXhj
ZXB0aW9uKSB7CiAgICAgICAgIC8vIEFuIGVycm9uZW91cyBjb25kaXRpb24gY291bnRzIGFzICJm
YWxzZSIuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0NywyMCArNDI3LDIwIEBAIHZvaWQg
U2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhKYXZhU2NyaXB0
RXhlY3V0aW9uQ2FsbGJhY2sKICAgICBtX2NhbGxpbmdMaXN0ZW5lcnMgPSBmYWxzZTsKIH0KIAot
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChj
b25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZU51bWJlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNyZWF0ZUNhbGxG
cmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2Fs
bEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpCiB7Ci0gICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9t
T25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZpcnN0KCkpOworICAgIFRl
eHRQb3NpdGlvbiB0ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxp
bmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpmcm9tWmVyb0Jhc2VkSW50KGNvbHVtbk51bWJlcikp
OwogICAgIG1fY3VycmVudENhbGxGcmFtZSA9IEphdmFTY3JpcHRDYWxsRnJhbWU6OmNyZWF0ZShk
ZWJ1Z2dlckNhbGxGcmFtZSwgbV9jdXJyZW50Q2FsbEZyYW1lLCBzb3VyY2VJRCwgdGV4dFBvc2l0
aW9uKTsKICAgICBwYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLmR5bmFtaWNHbG9iYWxP
YmplY3QoKSk7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFu
ZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1l
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlwdERlYnVnU2Vy
dmVyOjp1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IERlYnVnZ2VyQ2FsbEZy
YW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIEFTU0VSVChtX2N1cnJlbnRDYWxsRnJhbWUpOwog
ICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBUZXh0
UG9zaXRpb24gdGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChsaW5l
TnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSk7CisgICAgVGV4dFBvc2l0aW9uIHRleHRQ
b3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGlu
YWxOdW1iZXI6OmZyb21aZXJvQmFzZWRJbnQoY29sdW1uTnVtYmVyKSk7CiAgICAgbV9jdXJyZW50
Q2FsbEZyYW1lLT51cGRhdGUoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCB0ZXh0UG9zaXRp
b24pOwogICAgIHBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUuZHluYW1pY0dsb2JhbE9i
amVjdCgpKTsKIH0KQEAgLTM5OSwyNCArNDc5LDI0IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6
OnBhdXNlSWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QpCiAgICAg
bV9wYXVzZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbEV2ZW50
KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291
cmNlSUQsIGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2FsbEV2ZW50
KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291
cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIGlmICghbV9w
YXVzZWQpCi0gICAgICAgIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJD
YWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICAgICAgY3JlYXRlQ2FsbEZyYW1l
QW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcik7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmF0U3RhdGVtZW50
KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291
cmNlSUQsIGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1l
bnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBz
b3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7CiAgICAgaWYgKCFt
X3BhdXNlZCkKLSAgICAgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dl
ckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAgICB1cGRhdGVDYWxsRnJh
bWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmV0dXJuRXZl
bnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBz
b3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZXR1cm5F
dmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90
IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAo
bV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNl
SWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1
cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJ
RCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIAogICAgIC8vIGRldGFjaCBtYXkgaGF2ZSBi
ZWVuIGNhbGxlZCBkdXJpbmcgcGF1c2VJZk5lZWRlZAogICAgIGlmICghbV9jdXJyZW50Q2FsbEZy
YW1lKQpAQCAtNDI4LDcgKzUwOCw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2
ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwKICAgICBtX2N1
cnJlbnRDYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlcigpOwogfQogCi12b2lk
IFNjcmlwdERlYnVnU2VydmVyOjpleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRl
YnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wg
aGFzSGFuZGxlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmV4Y2VwdGlvbihjb25zdCBEZWJ1
Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQg
bGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCBoYXNIYW5kbGVyKQogewogICAgIGlm
IChtX3BhdXNlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM2LDIxICs1MTYsMjEgQEAgdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6ZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1
Z2dlckNhbGxGcmFtZSwgaW4KICAgICBpZiAobV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlID09IFBh
dXNlT25BbGxFeGNlcHRpb25zIHx8IChtX3BhdXNlT25FeGNlcHRpb25zU3RhdGUgPT0gUGF1c2VP
blVuY2F1Z2h0RXhjZXB0aW9ucyAmJiAhaGFzSGFuZGxlcikpCiAgICAgICAgIG1fcGF1c2VPbk5l
eHRTdGF0ZW1lbnQgPSB0cnVlOwogCi0gICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRl
ZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgIHVwZGF0ZUNh
bGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogfQogCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjp3aWxs
RXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1l
LCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlwdERlYnVnU2Vy
dmVyOjp3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2Vy
Q2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIpCiB7CiAgICAgaWYgKCFtX3BhdXNlZCkKLSAgICAgICAgY3JlYXRlQ2FsbEZyYW1lQW5k
UGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOwor
ICAgICAgICBjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1l
LCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAotdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRl
YnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lk
IFNjcmlwdERlYnVnU2VydmVyOjpkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxG
cmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJh
bWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlm
TmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyKTsKIAogICAgIC8vIFRyZWF0IHN0ZXBwaW5nIG92ZXIgdGhlIGVuZCBvZiBhIHByb2dyYW0g
bGlrZSBzdGVwcGluZyBvdXQuCiAgICAgaWYgKG1fY3VycmVudENhbGxGcmFtZSA9PSBtX3BhdXNl
T25DYWxsRnJhbWUpCkBAIC00NTgsMTMgKzUzOCwxMyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVy
OjpkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxs
RgogICAgIG1fY3VycmVudENhbGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyKCk7
CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBE
ZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlYWNoQnJlYWtwb2lu
dChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAobV9w
YXVzZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGF1c2VPbk5leHRTdGF0ZW1lbnQgPSB0
cnVlOwotICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJh
bWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlm
TmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlv
bnNTb29uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERl
YnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZl
ci5oCmluZGV4IDg0ZmJhNWM2NzhmYzcyNWRmMjg2MmVlOWZmM2JlNjUxODQxMjFhYTYuLjkzNTkx
NGM2YjQxOGRjM2ZhMzYzMzc4NzQyNjI1NzVhNWFhZDg1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMTIzLDIyICsxMjMsMjYgQEAg
cHJvdGVjdGVkOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5l
clNldCYgbGlzdGVuZXJzLCBKU0M6OlNvdXJjZVByb3ZpZGVyKiwgYm9vbCBpc0NvbnRlbnRTY3Jp
cHQpOwogICAgIHZvaWQgZGlzcGF0Y2hGYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IExpc3RlbmVy
U2V0JiBsaXN0ZW5lcnMsIEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5lLCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAKLSAgICB2b2lkIGNyZWF0ZUNhbGxGcmFtZUFuZFBh
dXNlSWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZU51bWJlcik7Ci0gICAgdm9pZCB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlm
TmVlZGVkKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwg
aW50IGxpbmVOdW1iZXIpOworICAgIHZvaWQgY3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRl
ZChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2b2lkIHVwZGF0ZUNhbGxGcmFtZUFu
ZFBhdXNlSWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CiAgICAgdm9pZCBwYXVz
ZUlmTmVlZGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QpOwogCiAg
ICAgdmlydHVhbCB2b2lkIGRldGFjaChKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc291cmNlUGFyc2VkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpTb3VyY2VQcm92aWRl
ciosIGludCBlcnJvckxpbmUsIGNvbnN0IEpTQzo6VVN0cmluZyYgZXJyb3JNc2cpOwotICAgIHZp
cnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0
cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7Ci0gICAgdmlydHVhbCB2b2lkIGF0U3RhdGVt
ZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50
IGZpcnN0TGluZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0IEpTQzo6RGVi
dWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOwotICAg
IHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgYm9vbCBoYXNIYW5kbGVyKTsKLSAgICB2
aXJ0dWFsIHZvaWQgd2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJh
bWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubyk7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBz
b3VyY2VJRCwgaW50IGxpbmVubyk7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2lu
dChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBs
aW5lbm8pOwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPGxvbmcsIFNjcmlwdEJyZWFrcG9pbnQ+IExp
bmVUb0JyZWFrcG9pbnRNYXA7CisgICAgdmlydHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBKU0M6
OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1lbnQoY29uc3QgSlND
OjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgZmlyc3RMaW5lLCBp
bnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuRXZlbnQoY29uc3QgSlND
OjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihjb25zdCBKU0M6
OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpOworICAgIHZpcnR1YWwgdm9pZCB3aWxs
RXhlY3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90
IHNvdXJjZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubywgaW50IGNvbHVtbk51bWJlcik7CisKKworICAgIHZv
aWQgdXBkYXRlQ3VycmVudFN0YXRlbWVudFBvc2l0aW9uKGludHB0cl90LCBpbnQpOworCisgICAg
dHlwZWRlZiBWZWN0b3I8U2NyaXB0QnJlYWtwb2ludD4gQnJlYWtwb2ludHNJbkxpbmU7CisgICAg
dHlwZWRlZiBIYXNoTWFwPGxvbmcsIEJyZWFrcG9pbnRzSW5MaW5lPiBMaW5lVG9CcmVha3BvaW50
TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnRwdHJfdCwgTGluZVRvQnJlYWtwb2ludE1hcD4g
U291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOwogCiAgICAgYm9vbCBtX2NhbGxpbmdMaXN0ZW5lcnM7
CkBAIC0xNTEsNiArMTU1LDEwIEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8SmF2YVNjcmlwdENh
bGxGcmFtZT4gbV9jdXJyZW50Q2FsbEZyYW1lOwogICAgIFNvdXJjZUlkVG9CcmVha3BvaW50c01h
cCBtX3NvdXJjZUlkVG9CcmVha3BvaW50czsKICAgICBUaW1lcjxTY3JpcHREZWJ1Z1NlcnZlcj4g
bV9yZWNvbXBpbGVUaW1lcjsKKworICAgIFZlY3RvcjxTdHJpbmc+IG1fY3VycmVudFNvdXJjZUNv
ZGU7CisgICAgaW50cHRyX3QgbV9jdXJyZW50U291cmNlSUQ7CisgICAgU2NyaXB0QnJlYWtwb2lu
dCBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIuaAppbmRl
eCA3ODRhODAyOTRiNmM4Zjc2YzQ2OTQ4MmE0Njg4NDI5ZGMyZDhkYjBiLi5iNTUxZjdkYzg3NTg4
ZGU5YjQ1YzlmZDA0YzUyMDNjNjlhY2JmNDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCkBAIC01NCwxMyArNTQsMTMgQEAgcHVibGljOgogICAg
IHZvaWQgaW5pdEdsb2JhbENhbGxGcmFtZShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpT
b3VyY2VQcm92aWRlciosIGludCBlcnJvckxpbmUsIGNvbnN0IEpTQzo6VVN0cmluZyYgZXJyb3JN
c2cpOwotICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxG
cmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7Ci0gICAgdmlydHVhbCB2
b2lkIGF0U3RhdGVtZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBz
b3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOwotICAgIHZpcnR1YWwgdm9pZCByZXR1cm5FdmVudChj
b25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5l
TnVtYmVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhjZXB0aW9uKGNvbnN0IEpTQzo6RGVidWdnZXJD
YWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaGFzSGFu
ZGxlcik7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6OkRl
YnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1l
JiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pOwotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZWFjaEJyZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNv
dXJjZUlELCBpbnQgbGluZW5vKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsbEV2ZW50KGNvbnN0IEpT
Qzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIpOworICAgIHZpcnR1YWwgdm9pZCBhdFN0YXRlbWVudChjb25zdCBK
U0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuRXZlbnQoY29uc3Qg
SlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGV4Y2VwdGlvbihjb25zdCBK
U0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVy
LCBpbnQgY29sdW1uTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpOworICAgIHZpcnR1YWwgdm9pZCB3
aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90
IHNvdXJjZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1ubm8pOworICAgIHZpcnR1YWwgdm9pZCBk
aWRFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qg
c291cmNlSUQsIGludCBsaW5lbm8sIGludCBjb2x1bW5ubyk7CisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlYWNoQnJlYWtwb2ludChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qg
c291cmNlSUQsIGludCBsaW5lbm8sIGludCBjb2x1bW5ubyk7CiAKICAgICBKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2dsb2JhbE9iamVjdC5nZXQo
KTsgfQogICAgIFdlYlNjcmlwdENhbGxGcmFtZSAqZ2xvYmFsQ2FsbEZyYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9nbG9iYWxDYWxsRnJhbWUuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IDY1ZjQxYzg5YWEyZGQzM2NkMGNhZWEz
NjRlYzIyNWEyN2Y2OGQ4YjQuLjRmZmU3MjViOGFmYTMyOTYwZjRhYzg1ODQ5ZjQ3MTUwOTVjYjk0
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdn
ZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5t
bQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OnNvdXJjZVBhcnNl
ZChFeGVjU3RhdGUqIGV4ZWMsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92CiAgICAgbV9jYWxs
aW5nRGVsZWdhdGUgPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6Y2FsbEV2
ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qg
c291cmNlSUQsIGludCBsaW5lTnVtYmVyKQordm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6Y2FsbEV2
ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qg
c291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIGlmICht
X2NhbGxpbmdEZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTYxLDcgKzE2MSw3IEBAIHZv
aWQgV2ViU2NyaXB0RGVidWdnZXI6OmNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYg
ZGVidWdnZXJDYWxsRnJhbWUsIGluCiAgICAgbV9jYWxsaW5nRGVsZWdhdGUgPSBmYWxzZTsKIH0K
IAotdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6YXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxs
RnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIpCit2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjphdFN0YXRlbWVudChjb25zdCBEZWJ1Z2dlckNh
bGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAobV9jYWxsaW5nRGVsZWdhdGUpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIFdlYlNjcmlwdERlYnVnZ2Vy
OjphdFN0YXRlbWVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUs
CiAgICAgbV9jYWxsaW5nRGVsZWdhdGUgPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJTY3JpcHREZWJ1
Z2dlcjo6cmV0dXJuRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZy
YW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFdlYlNjcmlwdERl
YnVnZ2VyOjpyZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxs
RnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
cikKIHsKICAgICBpZiAobV9jYWxsaW5nRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKQEAgLTIw
Miw3ICsyMDIsNyBAQCB2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpyZXR1cm5FdmVudChjb25zdCBE
ZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsCiAgICAgbV9jYWxsaW5nRGVsZWdh
dGUgPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6ZXhjZXB0aW9uKGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpCit2b2lkIFdlYlNjcmlwdERlYnVnZ2Vy
OjpleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGJvb2wg
aGFzSGFuZGxlcikKIHsKICAgICBpZiAobV9jYWxsaW5nRGVsZWdhdGUpCiAgICAgICAgIHJldHVy
bjsKQEAgLTIyNCwxNyArMjI0LDE3IEBAIHZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OmV4Y2VwdGlv
bihjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGluCiAgICAgbV9j
YWxsaW5nRGVsZWdhdGUgPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6d2ls
bEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFt
ZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pCit2b2lkIFdlYlNjcmlwdERlYnVnZ2Vy
Ojp3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2Fs
bEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubywgaW50IGNvbHVtbm5vKQogewot
ICAgIGNhbGxFdmVudChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVubyk7CisgICAg
Y2FsbEV2ZW50KGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZW5vLCBjb2x1bW5ubyk7
CiB9CiAKLXZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OmRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERl
YnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGlu
dCBsaW5lbm8pCit2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpkaWRFeGVjdXRlUHJvZ3JhbShjb25z
dCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZW5vLCBpbnQgY29sdW1ubm8pCiB7Ci0gICAgcmV0dXJuRXZlbnQoZGVidWdnZXJD
YWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lbm8pOworICAgIHJldHVybkV2ZW50KGRlYnVnZ2VyQ2Fs
bEZyYW1lLCBzb3VyY2VJRCwgbGluZW5vLCBjb2x1bW5ubyk7CiB9CiAKLXZvaWQgV2ViU2NyaXB0
RGVidWdnZXI6OmRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGlu
dHB0cl90LCBpbnQpCit2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpkaWRSZWFjaEJyZWFrcG9pbnQo
Y29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50LCBpbnQpCiB7CiAgICAgcmV0
dXJuOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156577</attachid>
            <date>2012-08-05 17:42:57 -0700</date>
            <delta_ts>2012-08-05 20:17:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53003-20120806084227.patch</filename>
            <type>text/plain</type>
            <size>324581</size>
            <attacher name="Peter Wang">PeterHWang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
ZWM0MjBjMDVhMDNkMzgzYjMzYTNkZjkxYWRhMWEwNGEwMTBmZjgxLi40NTY3MGViNjk3ZDZmMzQx
MmZkMjlmM2E0NTE0YWJmZjI4MTk4YjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NzMgQEAKKzIwMTItMDgtMDMgIFBldGVyIFdhbmcgIDxwZXRlci53YW5nQHRvcmNobW9i
aWxlLmNvbS5jbj4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBbSlNDXSBpbXBsZW1lbnQgc2V0
dGluZyBicmVha3BvaW50cyBieSBsaW5lOmNvbHVtbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTMwMDMKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9m
ZnJleSBHYXJlbi4KKworICAgICAgICBBZGQgYSBjb3VudGVyIHRvIExleGVyIHRvIHJlY29yZCB0
aGUgY29sdW1uIGluZm8gb2YgZWFjaCBUb2tlbi4gQWRkIGEgY29sdW1uIHBhcmFtZXRlciB0bwor
ICAgICAgICBvcF9kZWJ1ZywgY3RpX29wX2RlYnVnLCBhbmQgX2xsaW50X29wX2RlYnVnIGJ5dGUt
Y29kZSBjb21tYW5kLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjpyZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXREZWJ1Z0hvb2spOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oOgorICAgICAgICAoQnl0ZWNvZGVHZW5lcmF0b3IpOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpBcnJheU5vZGU6OnRvQXJndW1lbnRM
aXN0KToKKyAgICAgICAgKEpTQzo6QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpDb25zdFN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgIChKU0M6OkVtcHR5U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6RGVidWdnZXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpFeHByU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VmFyU3Rh
dGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6SWZOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpJZkVsc2VOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpEb1doaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6V2hpbGVO
b2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkNvbnRpbnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QnJlYWtOb2RlOjpl
bWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpXaXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6U3dp
dGNoTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6TGFiZWxOb2RlOjplbWl0Qnl0
ZWNvZGUpOgorICAgICAgICAoSlNDOjpUaHJvd05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAg
IChKU0M6OlRyeU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZSk6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjp0aHJvd0V4Y2VwdGlvbik6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjpkZWJ1Zyk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcml2YXRlRXhl
Y3V0ZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKElu
dGVycHJldGVyKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6ZW1pdF9vcF9kZWJ1Zyk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9kZWJ1Zyk6CisgICAgICAgICogaml0L0pJVFN0
dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NM
T1dfUEFUSF9ERUNMKToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToK
KyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoQVNUQnVpbGRlcik6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUNvbW1hRXhwcik6CisgICAgICAgIChKU0M6
OkFTVEJ1aWxkZXI6OmNyZWF0ZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVy
OjpjcmVhdGVVbmFyeVBsdXMpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVWb2lk
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6dGhpc0V4cHIpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjpjcmVhdGVSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUFycmF5
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTnVtYmVyRXhwcik6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVN0cmluZyk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUJvb2xlYW4pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVOdWxs
KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQnJhY2tldEFjY2Vzcyk6CisgICAg
ICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6OmNyZWF0ZVJlZ0V4cCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZU5ld0V4cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVDb25kaXRpb25hbEV4
cHIpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVBc3NpZ25SZXNvbHZlKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpT
Qzo6QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6QVNUQnVp
bGRlcjo6Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZUFyZ3VtZW50c0xpc3QpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpj
cmVhdGVQcm9wZXJ0eUxpc3QpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5j
RGVjbFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUJsb2NrU3Rh
dGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRXhwclN0YXRlbWVudCk6
CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUlmU3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRm9yTG9vcCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmNyZWF0ZUZvckluTG9vcCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUVt
cHR5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlVmFyU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlUmV0dXJuU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQnJlYWtTdGF0ZW1lbnQpOgorICAgICAg
ICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVDb250aW51ZVN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVRyeVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6OmNyZWF0ZVN3aXRjaFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
OmNyZWF0ZVdoaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRl
RG9XaGlsZVN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUxhYmVs
U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlV2l0aFN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZVRocm93U3RhdGVtZW50KToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRGVidWdnZXIpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjpjcmVhdGVDb25zdFN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxk
ZXI6OmFwcGVuZENvbnN0RGVjbCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNvbWJpbmVD
b21tYU5vZGVzKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6YXBwZW5kQmluYXJ5T3BlcmF0
aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlQXNzaWdubWVudCk6CisgICAg
ICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZU51bWJlcik6CisgICAgICAgIChKU0M6OkFTVEJ1
aWxkZXI6Om1ha2VUeXBlT2ZOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZURl
bGV0ZU5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlTmVnYXRlTm9kZSk6Cisg
ICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VCaXR3aXNlTm90Tm9kZSk6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6Om1ha2VNdWx0Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6
Om1ha2VEaXZOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZU1vZE5vZGUpOgor
ICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlQWRkTm9kZSk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6Om1ha2VTdWJOb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUxl
ZnRTaGlmdE5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlUmlnaHRTaGlmdE5v
ZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlVVJpZ2h0U2hpZnROb2RlKToKKyAg
ICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUJpdE9yTm9kZSk6CisgICAgICAgIChKU0M6OkFT
VEJ1aWxkZXI6Om1ha2VCaXRBbmROb2RlKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFr
ZUJpdFhPck5vZGUpOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjptYWtlRnVuY3Rpb25DYWxs
Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VCaW5hcnlOb2RlKToKKyAgICAg
ICAgKEpTQzo6QVNUQnVpbGRlcjo6bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjptYWtlUHJlZml4Tm9kZSk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6Om1ha2VQ
b3N0Zml4Tm9kZSk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
OjpzZXRDb2RlKToKKyAgICAgICAgKEpTQzo6OjppbnRlcm5hbFNoaWZ0KToKKyAgICAgICAgKEpT
Qzo6OjpzaGlmdCk6CisgICAgICAgIChKU0M6Ojo6bGV4KToKKyAgICAgICAgKiBwYXJzZXIvTGV4
ZXIuaDoKKyAgICAgICAgKExleGVyKToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmN1cnJlbnRDb2x1
bW5OdW1iZXIpOgorICAgICAgICAoSlNDOjo6OmxleEV4cGVjdElkZW50aWZpZXIpOgorICAgICAg
ICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChKU0M6Ok5vZGU6Ok5vZGUp
OgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6RXhwcmVzc2lvbk5vZGUpOgorICAgICAg
ICAoSlNDOjpTdGF0ZW1lbnROb2RlOjpTdGF0ZW1lbnROb2RlKToKKyAgICAgICAgKEpTQzo6TnVs
bE5vZGU6Ok51bGxOb2RlKToKKyAgICAgICAgKEpTQzo6Qm9vbGVhbk5vZGU6OkJvb2xlYW5Ob2Rl
KToKKyAgICAgICAgKEpTQzo6TnVtYmVyTm9kZTo6TnVtYmVyTm9kZSk6CisgICAgICAgIChKU0M6
OlN0cmluZ05vZGU6OlN0cmluZ05vZGUpOgorICAgICAgICAoSlNDOjpSZWdFeHBOb2RlOjpSZWdF
eHBOb2RlKToKKyAgICAgICAgKEpTQzo6VGhpc05vZGU6OlRoaXNOb2RlKToKKyAgICAgICAgKEpT
Qzo6UmVzb2x2ZU5vZGU6OlJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6QXJyYXlOb2RlOjpB
cnJheU5vZGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3RO
b2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0TGl0ZXJhbE5vZGU6Ok9iamVjdExpdGVyYWxOb2Rl
KToKKyAgICAgICAgKEpTQzo6QnJhY2tldEFjY2Vzc29yTm9kZTo6QnJhY2tldEFjY2Vzc29yTm9k
ZSk6CisgICAgICAgIChKU0M6OkRvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKToKKyAg
ICAgICAgKEpTQzo6QXJndW1lbnRMaXN0Tm9kZTo6QXJndW1lbnRMaXN0Tm9kZSk6CisgICAgICAg
IChKU0M6Ok5ld0V4cHJOb2RlOjpOZXdFeHByTm9kZSk6CisgICAgICAgIChKU0M6OkV2YWxGdW5j
dGlvbkNhbGxOb2RlOjpFdmFsRnVuY3Rpb25DYWxsTm9kZSk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uQ2FsbFZhbHVlTm9kZTo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlKToKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OkZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OkZ1bmN0aW9uQ2FsbEJyYWNrZXROb2Rl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25DYWxsRG90Tm9k
ZSk6CisgICAgICAgIChKU0M6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjpDYWxsRnVuY3Rpb25D
YWxsRG90Tm9kZSk6CisgICAgICAgIChKU0M6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZTo6QXBw
bHlGdW5jdGlvbkNhbGxEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6UHJlUG9zdFJlc29sdmVOb2Rl
OjpQcmVQb3N0UmVzb2x2ZU5vZGUpOgorICAgICAgICAoSlNDOjpQb3N0Zml4UmVzb2x2ZU5vZGU6
OlBvc3RmaXhSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhCcmFja2V0Tm9kZTo6
UG9zdGZpeEJyYWNrZXROb2RlKToKKyAgICAgICAgKEpTQzo6UG9zdGZpeERvdE5vZGU6OlBvc3Rm
aXhEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6UG9zdGZpeEVycm9yTm9kZTo6UG9zdGZpeEVycm9y
Tm9kZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZVJlc29sdmVOb2RlOjpEZWxldGVSZXNvbHZlTm9k
ZSk6CisgICAgICAgIChKU0M6OkRlbGV0ZUJyYWNrZXROb2RlOjpEZWxldGVCcmFja2V0Tm9kZSk6
CisgICAgICAgIChKU0M6OkRlbGV0ZURvdE5vZGU6OkRlbGV0ZURvdE5vZGUpOgorICAgICAgICAo
SlNDOjpEZWxldGVWYWx1ZU5vZGU6OkRlbGV0ZVZhbHVlTm9kZSk6CisgICAgICAgIChKU0M6OlZv
aWROb2RlOjpWb2lkTm9kZSk6CisgICAgICAgIChKU0M6OlR5cGVPZlJlc29sdmVOb2RlOjpUeXBl
T2ZSZXNvbHZlTm9kZSk6CisgICAgICAgIChKU0M6OlR5cGVPZlZhbHVlTm9kZTo6VHlwZU9mVmFs
dWVOb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4UmVzb2x2ZU5vZGU6OlByZWZpeFJlc29sdmVO
b2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4QnJhY2tldE5vZGU6OlByZWZpeEJyYWNrZXROb2Rl
KToKKyAgICAgICAgKEpTQzo6UHJlZml4RG90Tm9kZTo6UHJlZml4RG90Tm9kZSk6CisgICAgICAg
IChKU0M6OlByZWZpeEVycm9yTm9kZTo6UHJlZml4RXJyb3JOb2RlKToKKyAgICAgICAgKEpTQzo6
VW5hcnlPcE5vZGU6OlVuYXJ5T3BOb2RlKToKKyAgICAgICAgKEpTQzo6VW5hcnlQbHVzTm9kZTo6
VW5hcnlQbHVzTm9kZSk6CisgICAgICAgIChKU0M6Ok5lZ2F0ZU5vZGU6Ok5lZ2F0ZU5vZGUpOgor
ICAgICAgICAoSlNDOjpCaXR3aXNlTm90Tm9kZTo6Qml0d2lzZU5vdE5vZGUpOgorICAgICAgICAo
SlNDOjpMb2dpY2FsTm90Tm9kZTo6TG9naWNhbE5vdE5vZGUpOgorICAgICAgICAoSlNDOjpCaW5h
cnlPcE5vZGU6OkJpbmFyeU9wTm9kZSk6CisgICAgICAgIChKU0M6Ok11bHROb2RlOjpNdWx0Tm9k
ZSk6CisgICAgICAgIChKU0M6OkRpdk5vZGU6OkRpdk5vZGUpOgorICAgICAgICAoSlNDOjpNb2RO
b2RlOjpNb2ROb2RlKToKKyAgICAgICAgKEpTQzo6QWRkTm9kZTo6QWRkTm9kZSk6CisgICAgICAg
IChKU0M6OlN1Yk5vZGU6OlN1Yk5vZGUpOgorICAgICAgICAoSlNDOjpMZWZ0U2hpZnROb2RlOjpM
ZWZ0U2hpZnROb2RlKToKKyAgICAgICAgKEpTQzo6UmlnaHRTaGlmdE5vZGU6OlJpZ2h0U2hpZnRO
b2RlKToKKyAgICAgICAgKEpTQzo6VW5zaWduZWRSaWdodFNoaWZ0Tm9kZTo6VW5zaWduZWRSaWdo
dFNoaWZ0Tm9kZSk6CisgICAgICAgIChKU0M6Okxlc3NOb2RlOjpMZXNzTm9kZSk6CisgICAgICAg
IChKU0M6OkdyZWF0ZXJOb2RlOjpHcmVhdGVyTm9kZSk6CisgICAgICAgIChKU0M6Okxlc3NFcU5v
ZGU6Okxlc3NFcU5vZGUpOgorICAgICAgICAoSlNDOjpHcmVhdGVyRXFOb2RlOjpHcmVhdGVyRXFO
b2RlKToKKyAgICAgICAgKEpTQzo6VGhyb3dhYmxlQmluYXJ5T3BOb2RlOjpUaHJvd2FibGVCaW5h
cnlPcE5vZGUpOgorICAgICAgICAoSlNDOjpJbnN0YW5jZU9mTm9kZTo6SW5zdGFuY2VPZk5vZGUp
OgorICAgICAgICAoSlNDOjpJbk5vZGU6OkluTm9kZSk6CisgICAgICAgIChKU0M6OkVxdWFsTm9k
ZTo6RXF1YWxOb2RlKToKKyAgICAgICAgKEpTQzo6Tm90RXF1YWxOb2RlOjpOb3RFcXVhbE5vZGUp
OgorICAgICAgICAoSlNDOjpTdHJpY3RFcXVhbE5vZGU6OlN0cmljdEVxdWFsTm9kZSk6CisgICAg
ICAgIChKU0M6Ok5vdFN0cmljdEVxdWFsTm9kZTo6Tm90U3RyaWN0RXF1YWxOb2RlKToKKyAgICAg
ICAgKEpTQzo6Qml0QW5kTm9kZTo6Qml0QW5kTm9kZSk6CisgICAgICAgIChKU0M6OkJpdE9yTm9k
ZTo6Qml0T3JOb2RlKToKKyAgICAgICAgKEpTQzo6Qml0WE9yTm9kZTo6Qml0WE9yTm9kZSk6Cisg
ICAgICAgIChKU0M6OkxvZ2ljYWxPcE5vZGU6OkxvZ2ljYWxPcE5vZGUpOgorICAgICAgICAoSlND
OjpDb25kaXRpb25hbE5vZGU6OkNvbmRpdGlvbmFsTm9kZSk6CisgICAgICAgIChKU0M6OlJlYWRN
b2RpZnlSZXNvbHZlTm9kZTo6UmVhZE1vZGlmeVJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6
QXNzaWduUmVzb2x2ZU5vZGU6OkFzc2lnblJlc29sdmVOb2RlKToKKyAgICAgICAgKEpTQzo6UmVh
ZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUpOgorICAgICAgICAoSlND
OjpBc3NpZ25CcmFja2V0Tm9kZTo6QXNzaWduQnJhY2tldE5vZGUpOgorICAgICAgICAoSlNDOjpB
c3NpZ25Eb3ROb2RlOjpBc3NpZ25Eb3ROb2RlKToKKyAgICAgICAgKEpTQzo6UmVhZE1vZGlmeURv
dE5vZGU6OlJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRXJyb3JOb2Rl
OjpBc3NpZ25FcnJvck5vZGUpOgorICAgICAgICAoSlNDOjpDb21tYU5vZGU6OkNvbW1hTm9kZSk6
CisgICAgICAgIChKU0M6OkNvbnN0U3RhdGVtZW50Tm9kZTo6Q29uc3RTdGF0ZW1lbnROb2RlKToK
KyAgICAgICAgKEpTQzo6RW1wdHlTdGF0ZW1lbnROb2RlOjpFbXB0eVN0YXRlbWVudE5vZGUpOgor
ICAgICAgICAoSlNDOjpEZWJ1Z2dlclN0YXRlbWVudE5vZGU6OkRlYnVnZ2VyU3RhdGVtZW50Tm9k
ZSk6CisgICAgICAgIChKU0M6OkV4cHJTdGF0ZW1lbnROb2RlOjpFeHByU3RhdGVtZW50Tm9kZSk6
CisgICAgICAgIChKU0M6OlZhclN0YXRlbWVudE5vZGU6OlZhclN0YXRlbWVudE5vZGUpOgorICAg
ICAgICAoSlNDOjpJZk5vZGU6OklmTm9kZSk6CisgICAgICAgIChKU0M6OklmRWxzZU5vZGU6Oklm
RWxzZU5vZGUpOgorICAgICAgICAoSlNDOjpEb1doaWxlTm9kZTo6RG9XaGlsZU5vZGUpOgorICAg
ICAgICAoSlNDOjpXaGlsZU5vZGU6OldoaWxlTm9kZSk6CisgICAgICAgIChKU0M6OkZvck5vZGU6
OkZvck5vZGUpOgorICAgICAgICAoSlNDOjpDb250aW51ZU5vZGU6OkNvbnRpbnVlTm9kZSk6Cisg
ICAgICAgIChKU0M6OkJyZWFrTm9kZTo6QnJlYWtOb2RlKToKKyAgICAgICAgKEpTQzo6UmV0dXJu
Tm9kZTo6UmV0dXJuTm9kZSk6CisgICAgICAgIChKU0M6OldpdGhOb2RlOjpXaXRoTm9kZSk6Cisg
ICAgICAgIChKU0M6OkxhYmVsTm9kZTo6TGFiZWxOb2RlKToKKyAgICAgICAgKEpTQzo6VGhyb3dO
b2RlOjpUaHJvd05vZGUpOgorICAgICAgICAoSlNDOjpUcnlOb2RlOjpUcnlOb2RlKToKKyAgICAg
ICAgKEpTQzo6RnVuY0V4cHJOb2RlOjpGdW5jRXhwck5vZGUpOgorICAgICAgICAoSlNDOjpGdW5j
RGVjbE5vZGU6OkZ1bmNEZWNsTm9kZSk6CisgICAgICAgIChKU0M6OlN3aXRjaE5vZGU6OlN3aXRj
aE5vZGUpOgorICAgICAgICAoSlNDOjpDb25zdERlY2xOb2RlOjpDb25zdERlY2xOb2RlKToKKyAg
ICAgICAgKEpTQzo6QmxvY2tOb2RlOjpCbG9ja05vZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5v
ZGU6OkZvckluTm9kZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6U3RhdGVtZW50Tm9kZTo6c2V0TG9jKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6
OlNjb3BlTm9kZTo6U2NvcGVOb2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OlByb2dy
YW1Ob2RlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbU5vZGU6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OkV2YWxOb2RlOjpFdmFsTm9kZSk6CisgICAgICAgIChKU0M6OkV2YWxOb2RlOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkJvZHlOb2RlOjpGdW5jdGlvbkJvZHlOb2RlKToKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlNDOjpOb2RlOjpjb2x1bW5Obyk6
CisgICAgICAgIChFeHByZXNzaW9uTm9kZSk6CisgICAgICAgIChTdGF0ZW1lbnROb2RlKToKKyAg
ICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6Y29sdW1uKToKKyAgICAgICAgKE51bGxOb2RlKToK
KyAgICAgICAgKEJvb2xlYW5Ob2RlKToKKyAgICAgICAgKE51bWJlck5vZGUpOgorICAgICAgICAo
U3RyaW5nTm9kZSk6CisgICAgICAgIChSZWdFeHBOb2RlKToKKyAgICAgICAgKFRoaXNOb2RlKToK
KyAgICAgICAgKFJlc29sdmVOb2RlKToKKyAgICAgICAgKEFycmF5Tm9kZSk6CisgICAgICAgIChQ
cm9wZXJ0eUxpc3ROb2RlKToKKyAgICAgICAgKE9iamVjdExpdGVyYWxOb2RlKToKKyAgICAgICAg
KEJyYWNrZXRBY2Nlc3Nvck5vZGUpOgorICAgICAgICAoRG90QWNjZXNzb3JOb2RlKToKKyAgICAg
ICAgKEFyZ3VtZW50TGlzdE5vZGUpOgorICAgICAgICAoTmV3RXhwck5vZGUpOgorICAgICAgICAo
RXZhbEZ1bmN0aW9uQ2FsbE5vZGUpOgorICAgICAgICAoRnVuY3Rpb25DYWxsVmFsdWVOb2RlKToK
KyAgICAgICAgKEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2Fs
bEJyYWNrZXROb2RlKToKKyAgICAgICAgKEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAo
Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUpOgorICAgICAgICAoQXBwbHlGdW5jdGlvbkNhbGxEb3RO
b2RlKToKKyAgICAgICAgKFByZVBvc3RSZXNvbHZlTm9kZSk6CisgICAgICAgIChQb3N0Zml4UmVz
b2x2ZU5vZGUpOgorICAgICAgICAoUG9zdGZpeEJyYWNrZXROb2RlKToKKyAgICAgICAgKFBvc3Rm
aXhEb3ROb2RlKToKKyAgICAgICAgKFBvc3RmaXhFcnJvck5vZGUpOgorICAgICAgICAoRGVsZXRl
UmVzb2x2ZU5vZGUpOgorICAgICAgICAoRGVsZXRlQnJhY2tldE5vZGUpOgorICAgICAgICAoRGVs
ZXRlRG90Tm9kZSk6CisgICAgICAgIChEZWxldGVWYWx1ZU5vZGUpOgorICAgICAgICAoVm9pZE5v
ZGUpOgorICAgICAgICAoVHlwZU9mUmVzb2x2ZU5vZGUpOgorICAgICAgICAoVHlwZU9mVmFsdWVO
b2RlKToKKyAgICAgICAgKFByZWZpeFJlc29sdmVOb2RlKToKKyAgICAgICAgKFByZWZpeEJyYWNr
ZXROb2RlKToKKyAgICAgICAgKFByZWZpeERvdE5vZGUpOgorICAgICAgICAoUHJlZml4RXJyb3JO
b2RlKToKKyAgICAgICAgKFVuYXJ5T3BOb2RlKToKKyAgICAgICAgKFVuYXJ5UGx1c05vZGUpOgor
ICAgICAgICAoTmVnYXRlTm9kZSk6CisgICAgICAgIChCaXR3aXNlTm90Tm9kZSk6CisgICAgICAg
IChMb2dpY2FsTm90Tm9kZSk6CisgICAgICAgIChCaW5hcnlPcE5vZGUpOgorICAgICAgICAoTXVs
dE5vZGUpOgorICAgICAgICAoRGl2Tm9kZSk6CisgICAgICAgIChNb2ROb2RlKToKKyAgICAgICAg
KEFkZE5vZGUpOgorICAgICAgICAoU3ViTm9kZSk6CisgICAgICAgIChMZWZ0U2hpZnROb2RlKToK
KyAgICAgICAgKFJpZ2h0U2hpZnROb2RlKToKKyAgICAgICAgKFVuc2lnbmVkUmlnaHRTaGlmdE5v
ZGUpOgorICAgICAgICAoTGVzc05vZGUpOgorICAgICAgICAoR3JlYXRlck5vZGUpOgorICAgICAg
ICAoTGVzc0VxTm9kZSk6CisgICAgICAgIChHcmVhdGVyRXFOb2RlKToKKyAgICAgICAgKFRocm93
YWJsZUJpbmFyeU9wTm9kZSk6CisgICAgICAgIChJbnN0YW5jZU9mTm9kZSk6CisgICAgICAgIChJ
bk5vZGUpOgorICAgICAgICAoRXF1YWxOb2RlKToKKyAgICAgICAgKE5vdEVxdWFsTm9kZSk6Cisg
ICAgICAgIChTdHJpY3RFcXVhbE5vZGUpOgorICAgICAgICAoTm90U3RyaWN0RXF1YWxOb2RlKToK
KyAgICAgICAgKEJpdEFuZE5vZGUpOgorICAgICAgICAoQml0T3JOb2RlKToKKyAgICAgICAgKEJp
dFhPck5vZGUpOgorICAgICAgICAoTG9naWNhbE9wTm9kZSk6CisgICAgICAgIChDb25kaXRpb25h
bE5vZGUpOgorICAgICAgICAoUmVhZE1vZGlmeVJlc29sdmVOb2RlKToKKyAgICAgICAgKEFzc2ln
blJlc29sdmVOb2RlKToKKyAgICAgICAgKFJlYWRNb2RpZnlCcmFja2V0Tm9kZSk6CisgICAgICAg
IChBc3NpZ25CcmFja2V0Tm9kZSk6CisgICAgICAgIChBc3NpZ25Eb3ROb2RlKToKKyAgICAgICAg
KFJlYWRNb2RpZnlEb3ROb2RlKToKKyAgICAgICAgKEFzc2lnbkVycm9yTm9kZSk6CisgICAgICAg
IChDb21tYU5vZGUpOgorICAgICAgICAoQ29uc3REZWNsTm9kZSk6CisgICAgICAgIChDb25zdFN0
YXRlbWVudE5vZGUpOgorICAgICAgICAoQmxvY2tOb2RlKToKKyAgICAgICAgKEVtcHR5U3RhdGVt
ZW50Tm9kZSk6CisgICAgICAgIChEZWJ1Z2dlclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoRXhw
clN0YXRlbWVudE5vZGUpOgorICAgICAgICAoVmFyU3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChJ
Zk5vZGUpOgorICAgICAgICAoSWZFbHNlTm9kZSk6CisgICAgICAgIChEb1doaWxlTm9kZSk6Cisg
ICAgICAgIChXaGlsZU5vZGUpOgorICAgICAgICAoRm9yTm9kZSk6CisgICAgICAgIChGb3JJbk5v
ZGUpOgorICAgICAgICAoQ29udGludWVOb2RlKToKKyAgICAgICAgKEJyZWFrTm9kZSk6CisgICAg
ICAgIChSZXR1cm5Ob2RlKToKKyAgICAgICAgKFdpdGhOb2RlKToKKyAgICAgICAgKExhYmVsTm9k
ZSk6CisgICAgICAgIChUaHJvd05vZGUpOgorICAgICAgICAoVHJ5Tm9kZSk6CisgICAgICAgIChT
Y29wZU5vZGUpOgorICAgICAgICAoUHJvZ3JhbU5vZGUpOgorICAgICAgICAoRXZhbE5vZGUpOgor
ICAgICAgICAoRnVuY3Rpb25Cb2R5Tm9kZSk6CisgICAgICAgIChGdW5jRXhwck5vZGUpOgorICAg
ICAgICAoRnVuY0RlY2xOb2RlKToKKyAgICAgICAgKFN3aXRjaE5vZGUpOgorICAgICAgICAqIHBh
cnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjo6OnBhcnNlU291cmNlRWxlbWVudHMpOgor
ICAgICAgICAoSlNDOjo6OnBhcnNlVmFyRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjo6OnBh
cnNlQ29uc3REZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VEb1doaWxlU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVdoaWxlU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZVZhckRlY2xhcmF0aW9uTGlzdCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VDb25z
dERlY2xhcmF0aW9uTGlzdCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VGb3JTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjo6OnBhcnNlQnJlYWtTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBh
cnNlQ29udGludWVTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlUmV0dXJuU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVRocm93U3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZVdpdGhTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlU3dpdGNoU3Rh
dGVtZW50KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVRyeVN0YXRlbWVudCk6CisgICAgICAgIChK
U0M6Ojo6cGFyc2VEZWJ1Z2dlclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VCbG9j
a1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VTdGF0ZW1lbnQpOgorICAgICAgICAo
SlNDOjo6OnBhcnNlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUZ1bmN0aW9u
SW5mbyk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAg
ICAgKEpTQzo6OjpwYXJzZUV4cHJlc3Npb25PckxhYmVsU3RhdGVtZW50KToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZUV4cHJlc3Npb25TdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlSWZT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjo6OnBhcnNlRXhwcmVzc2lvbik6CisgICAgICAgIChK
U0M6Ojo6cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VD
b25kaXRpb25hbEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjo6OnBhcnNlQmluYXJ5RXhwcmVz
c2lvbik6CisgICAgICAgIChKU0M6Ojo6cGFyc2VQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6Ojo6
cGFyc2VPYmplY3RMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVN0cmljdE9iamVjdExp
dGVyYWwpOgorICAgICAgICAoSlNDOjo6OnBhcnNlQXJyYXlMaXRlcmFsKToKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZVByaW1hcnlFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZUFyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6Ojo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKToKKyAgICAgICAg
KEpTQzo6OjpwYXJzZVVuYXJ5RXhwcmVzc2lvbik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5o
OgorICAgICAgICAoSlNDOjpQYXJzZXI6Om5leHQpOgorICAgICAgICAoSlNDOjpQYXJzZXI6Om5l
eHRFeHBlY3RJZGVudGlmaWVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjp0b2tlblN0YXJ0KToK
KyAgICAgICAgKEpTQzo6UGFyc2VyOjp0b2tlbkxpbmUpOgorICAgICAgICAoSlNDOjpQYXJzZXI6
OnRva2VuRW5kKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjp0b2tlbkxvY2F0aW9uKToKKyAgICAg
ICAgKFBhcnNlcik6CisgICAgICAgIChKU0M6OlBhcnNlcjo6Z2V0VG9rZW5OYW1lKToKKyAgICAg
ICAgKEpTQzo6OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlclRva2Vucy5oOgorICAg
ICAgICAoSlNDOjpKU1Rva2VuTG9jYXRpb246OkpTVG9rZW5Mb2NhdGlvbik6CisgICAgICAgIChK
U1Rva2VuTG9jYXRpb24pOgorICAgICAgICAoSlNUb2tlbik6CisgICAgICAgICogcGFyc2VyL1Nv
dXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmg6CisgICAgICAgIChKU0M6OlNvdXJjZVByb3ZpZGVyQ2Fj
aGVJdGVtOjpjbG9zZUJyYWNlVG9rZW4pOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2Vy
Lmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKToK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlQ29tbWFFeHByKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZUFzc2lnbk5vZGUpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjptYWtlUHJlZml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
Om1ha2VQb3N0Zml4Tm9kZSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6Om1ha2VUeXBl
T2ZOb2RlKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6bWFrZURlbGV0ZU5vZGUpOgor
ICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjptYWtlTmVnYXRlTm9kZSk6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6Om1ha2VCaXR3aXNlTm90Tm9kZSk6CisgICAgICAgIChKU0M6OlN5
bnRheENoZWNrZXI6OmNyZWF0ZUxvZ2ljYWxOb3QpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVVbmFyeVBsdXMpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVh
dGVWb2lkKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6dGhpc0V4cHIpOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6Y3JlYXRlT2JqZWN0TGl0ZXJhbCk6CisgICAgICAgIChKU0M6OlN5bnRheENo
ZWNrZXI6OmNyZWF0ZUFycmF5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRl
TnVtYmVyRXhwcik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVN0cmluZyk6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUJvb2xlYW4pOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVOdWxsKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlQnJhY2tldEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNyZWF0ZURvdEFjY2Vzcyk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZVJl
Z0V4cCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU5ld0V4cHIpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVDb25kaXRpb25hbEV4cHIpOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVBc3NpZ25SZXNvbHZlKToKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25FeHByKToKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rpb25Cb2R5KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hl
Y2tlcjo6Y3JlYXRlQXJndW1lbnRzTGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6
OmNyZWF0ZVByb3BlcnR5TGlzdCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZUZ1bmNEZWNsU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRl
QmxvY2tTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVFeHBy
U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlSWZTdGF0ZW1l
bnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGb3JMb29wKToKKyAgICAg
ICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRm9ySW5Mb29wKToKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRW1wdHlTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50
YXhDaGVja2VyOjpjcmVhdGVWYXJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVj
a2VyOjpjcmVhdGVSZXR1cm5TdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2Vy
OjpjcmVhdGVCcmVha1N0YXRlbWVudCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNy
ZWF0ZUNvbnRpbnVlU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3Jl
YXRlVHJ5U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlU3dp
dGNoU3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlV2hpbGVT
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVXaXRoU3RhdGVt
ZW50KToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRG9XaGlsZVN0YXRlbWVu
dCk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUxhYmVsU3RhdGVtZW50KToK
KyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlVGhyb3dTdGF0ZW1lbnQpOgorICAg
ICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVEZWJ1Z2dlcik6CisgICAgICAgIChKU0M6
OlN5bnRheENoZWNrZXI6OmNyZWF0ZUNvbnN0U3RhdGVtZW50KToKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6YXBwZW5kQ29uc3REZWNsKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tl
cjo6Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlN5bnRheENo
ZWNrZXI6OmNvbWJpbmVDb21tYU5vZGVzKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6
b3BlcmF0b3JTdGFja1BvcCk6CisKIDIwMTItMDgtMDIgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBtaXNzZWQgYSBzdHlsZSBnb29mIGluIHRo
ZSBwcmV2aW91cyBwYXRjaDogIk5vZGVJbmRleCBub2RlSW5kZXgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGMz
ODdkYWFjODYyY2FlNjYzODNmNTQwNDI1OWNmYmQxN2E4MjU2Zi4uZDQxMTcwMWFkOTRkMDE1Zjlj
MjRmNGQ5ZWJkMWIyYmI1NDRhMjVlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEy
LTA4LTAzICBQZXRlciBXYW5nICA8cGV0ZXIud2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogW0pTQ10gaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2ludHMg
YnkgbGluZTpjb2x1bW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUzMDAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAg
ICAgICAgU2luY2UgSlNDIGNhbiBwcm92aWRlIGNvbHVtbiBpbmZvIG5vdywgU2NyaXB0RGVidWdT
ZXJ2ZXIgY2FuIHVzZSBpdCB0byBzdXBwb3J0ICJQcmV0dHkgUHJpbnQiCisgICAgICAgIGRlYnVn
IG1vZGUuIFRoZSByZWxhdGVkIGludGVyZmFjZXMgZGVyaXZlZCBmcm9tIEpTQzo6RGVidWdnZXIg
d2FzIGFkZGVkIGEgcGFyYW1ldGVyLiAKKworICAgICAgICBObyBuZXcgdGVzdHMgZm9yIHRoaXMg
cGF0Y2guCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjp1cGRh
dGVDdXJyZW50U3RhdGVtZW50UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6Omhhc0JyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OmNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6YXRTdGF0ZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnJldHVybkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdERlYnVnU2VydmVyOjpleGNlcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OndpbGxFeGVjdXRlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHREZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RGVidWdTZXJ2ZXI6OmRpZFJlYWNoQnJlYWtwb2ludCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToKKwog
MjAxMi0wOC0wMiAgdWxhbkBjaHJvbWl1bS5vcmcgIDx1bGFuQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIEltcHJvdmUgZ2FyYmFnZSBjb2xsZWN0b3IgaGludCBpZiBwYWdlIHVz
ZXMgQ2FudmFzIGNvbnRleHRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYjU4ZDgyZTI1NjY2MWI5ZTNj
NDcyZGIxZmVjZGRjMTUwMzQ4NTBmYi4uMmExYjExZjY5Yjg2ZGIzMzIxMzk4NTc5NTQ4N2Q2NDgy
ZDA2MjllOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA4LTAzICBQ
ZXRlciBXYW5nICA8cGV0ZXIud2FuZ0B0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogW0pTQ10gaW1wbGVtZW50IHNldHRpbmcgYnJlYWtwb2ludHMgYnkgbGluZTpj
b2x1bW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUz
MDAzCisKKyAgICAgICAgVW5yZXZpZXdlZCwganVzdCBjaGFuZ2VkIHRoZSBpbnRlcmZhY2UgYWNj
b3JkaW5nIHRoZSBjaGFuZ2VzIG9mIGJhc2UgY2xhc3MgSlNDOjpEZWJ1Z2dlci4KKworICAgICAg
ICBObyBKU0MgY2FuIHByb3ZpZGUgdGhlIGNvbHVtbiBpbmZvIG9mIGN1cnJlbnQgSlMgc3RhdGVt
ZW50LCBtYWMgcG9ydGluZyBjYW4gdXNlIGl0IHRvIHN1cHBvcnQKKyAgICAgICAgIlByZXR0eSBQ
cmludCIgZGVidWcgbW9kZS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIu
aDoKKyAgICAgICAgKFdlYlNjcmlwdERlYnVnZ2VyKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlNj
cmlwdERlYnVnZ2VyLm1tOgorICAgICAgICAoV2ViU2NyaXB0RGVidWdnZXI6OmNhbGxFdmVudCk6
CisgICAgICAgIChXZWJTY3JpcHREZWJ1Z2dlcjo6YXRTdGF0ZW1lbnQpOgorICAgICAgICAoV2Vi
U2NyaXB0RGVidWdnZXI6OnJldHVybkV2ZW50KToKKyAgICAgICAgKFdlYlNjcmlwdERlYnVnZ2Vy
OjpleGNlcHRpb24pOgorICAgICAgICAoV2ViU2NyaXB0RGVidWdnZXI6OndpbGxFeGVjdXRlUHJv
Z3JhbSk6CisgICAgICAgIChXZWJTY3JpcHREZWJ1Z2dlcjo6ZGlkRXhlY3V0ZVByb2dyYW0pOgor
ICAgICAgICAoV2ViU2NyaXB0RGVidWdnZXI6OmRpZFJlYWNoQnJlYWtwb2ludCk6CisKIDIwMTIt
MDgtMDEgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFkZCBuZXcg
Q1NTIHByb3BlcnR5ICItd2Via2l0LXdpZGdldC1yZWdpb24iIHRvIGV4cG9zZSBkYXNoYm9hcmQg
cmVnaW9uIHN1cHBvcnQgZm9yIG90aGVyIHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAKaW5kZXggNTM3NGE1MzdhYjM5YmQ5MTY4MjZlMTk0ZGM4MzM2
NThiMmVkZDY0MC4uMGUyYTk4YmM1NTVlMDNhOTVjZDRmNTkwNWU4N2Y0OTkzNzA5MjFjNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTE1MjUs
NyArMTUyNSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
VmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImCiAgICAgICAgICAgICBpbnQgZGVi
dWdIb29rSUQgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBmaXJzdExpbmUg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCBsYXN0TGluZSA9ICgrK2l0KS0+
dS5vcGVyYW5kOwotICAgICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZGVidWdcdFx0ICVzLCAlZCwg
JWQiLCBsb2NhdGlvbiwgZGVidWdIb29rTmFtZShkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFz
dExpbmUpOworICAgICAgICAgICAgaW50IGNvbHVtbiA9ICgrK2l0KS0+dS5vcGVyYW5kOworICAg
ICAgICAgICAgZGF0YUxvZygiWyU0ZF0gZGVidWdcdFx0ICVzLCAlZCwgJWQsICVkIiwgbG9jYXRp
b24sIGRlYnVnSG9va05hbWUoZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lLCBjb2x1
bW4pOwogICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUobG9jYXRpb24p
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PcGNvZGUuaAppbmRleCAxNGNlZmI5ZDkwNWQ1ZDkxMjBkMGE1MTdmMDc4ZmZkNTA1MTQ2
NmExLi40MzA4ZTc5ZGY2YWEyM2Y1Y2Y1ZjI0NjI1Mzg4NDNiMjc0NGM5YTc4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCkBAIC0xOTQsNyArMTk0LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX3Rocm93LCAyKSBcCiAgICAgICAgIG1hY3JvKG9w
X3Rocm93X3JlZmVyZW5jZV9lcnJvciwgMikgXAogICAgICAgICBcCi0gICAgICAgIG1hY3JvKG9w
X2RlYnVnLCA0KSBcCisgICAgICAgIG1hY3JvKG9wX2RlYnVnLCA1KSBcCiAgICAgICAgIG1hY3Jv
KG9wX3Byb2ZpbGVfd2lsbF9jYWxsLCAyKSBcCiAgICAgICAgIG1hY3JvKG9wX3Byb2ZpbGVfZGlk
X2NhbGwsIDIpIFwKICAgICAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCAzM2YyODJjNjY0NjU2
MDk0MzM5YTRmNjY2MzU0YTExZDhiNjIyNzc2Li4xNGE2OWI1MzA5NTYxNGJkM2Y5MTM2YWE0YzVk
MzQzYzNmZGQ1YmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTI0OSw3ICsxMjQ5LDcgQEAgUmVz
b2x2ZVJlc3VsdCBCeXRlY29kZUdlbmVyYXRvcjo6cmVzb2x2ZShjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eSkKICAgICAgICAgaWYgKCFjdXJyZW50U2NvcGUtPmlzVmFyaWFibGVPYmplY3QoKSkg
ewogICAgICAgICAgICAgZmxhZ3MgfD0gUmVzb2x2ZVJlc3VsdDo6RHluYW1pY0ZsYWc7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfSAgICAgICAgCisgICAgICAgIH0KICAgICAgICAgSlNT
eW1ib2xUYWJsZU9iamVjdCogY3VycmVudFZhcmlhYmxlT2JqZWN0ID0ganNDYXN0PEpTU3ltYm9s
VGFibGVPYmplY3QqPihjdXJyZW50U2NvcGUpOwogICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVu
dHJ5ID0gY3VycmVudFZhcmlhYmxlT2JqZWN0LT5zeW1ib2xUYWJsZSgpLmdldChwcm9wZXJ0eS5p
bXBsKCkpOwogCkBAIC0yMDgzLDcgKzIwODMsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UG9wU2NvcGUoKQogICAgIG1fZHluYW1pY1Njb3BlRGVwdGgtLTsKIH0KIAotdm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdERlYnVnSG9vayhEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50
IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERl
YnVnSG9vayhEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGluZSwgaW50IGxhc3RM
aW5lLCBpbnQgY29sdW1uKQogewogI2lmIEVOQUJMRShERUJVR19XSVRIX0JSRUFLUE9JTlQpCiAg
ICAgaWYgKGRlYnVnSG9va0lEICE9IERpZFJlYWNoQnJlYWtwb2ludCkKQEAgLTIwOTYsNiArMjA5
Niw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWJ1Z0hvb2soRGVidWdIb29rSUQg
ZGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGluCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRlYnVnSG9va0lEKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmlyc3RMaW5lKTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobGFzdExpbmUpOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChjb2x1bW4pOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoRmluYWxseUNv
bnRleHQoU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IDUyZmQ3
ZTgzYzZjMzUwMzM1OTkxMzZjMmViNmQwOGYyZDE2MmI0OTUuLjQ5MDk5MWZhN2Y3MTI5NmEyZjk1
NGRjZTQ0MWEwNmEyYjg3ZjlhODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTUwNiw3ICs1MDYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1c2hTY29wZShSZWdpc3Rl
cklEKiBzY29wZSk7CiAgICAgICAgIHZvaWQgZW1pdFBvcFNjb3BlKCk7CiAKLSAgICAgICAgdm9p
ZCBlbWl0RGVidWdIb29rKERlYnVnSG9va0lELCBpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUp
OworICAgICAgICB2b2lkIGVtaXREZWJ1Z0hvb2soRGVidWdIb29rSUQsIGludCBmaXJzdExpbmUs
IGludCBsYXN0TGluZSwgaW50IGNvbHVtbik7CiAKICAgICAgICAgaW50IHNjb3BlRGVwdGgoKSB7
IHJldHVybiBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9maW5hbGx5RGVwdGg7IH0KICAgICAgICAg
Ym9vbCBoYXNGaW5hbGlzZXIoKSB7IHJldHVybiBtX2ZpbmFsbHlEZXB0aCAhPSAwOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAK
aW5kZXggZDI0M2U4Y2UwMDg0OWI1NTJkOThkYjA1MDFjMzY5YTQxNWQyZWQwYS4uMjQ5ZjgyMmUy
OGE0YzhkZjIzZTBlODVhMGIwZTJiNjVjMThhMWE4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjAyLDE4ICsyMDIs
MjEgQEAgYm9vbCBBcnJheU5vZGU6OmlzU2ltcGxlQXJyYXkoKSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi1Bcmd1bWVudExpc3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIpIGNvbnN0CitBcmd1bWVudExp
c3ROb2RlKiBBcnJheU5vZGU6OnRvQXJndW1lbnRMaXN0KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KCFtX2VsaXNpb24gJiYgIW1fb3B0aW9uYWwpOwogICAgIEVsZW1lbnROb2RlKiBwdHIgPSBtX2Vs
ZW1lbnQ7CiAgICAgaWYgKCFwdHIpCiAgICAgICAgIHJldHVybiAwOwotICAgIEFyZ3VtZW50TGlz
dE5vZGUqIGhlYWQgPSBuZXcgKGdsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobGluZU51bWJl
ciwgcHRyLT52YWx1ZSgpKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb247CisgICAgbG9j
YXRpb24ubGluZSA9IGxpbmVOdW1iZXI7CisgICAgbG9jYXRpb24uY29sdW1uID0gY29sdW1uTnVt
YmVyOworICAgIEFyZ3VtZW50TGlzdE5vZGUqIGhlYWQgPSBuZXcgKGdsb2JhbERhdGEpIEFyZ3Vt
ZW50TGlzdE5vZGUobG9jYXRpb24sIHB0ci0+dmFsdWUoKSk7CiAgICAgQXJndW1lbnRMaXN0Tm9k
ZSogdGFpbCA9IGhlYWQ7CiAgICAgcHRyID0gcHRyLT5uZXh0KCk7CiAgICAgZm9yICg7IHB0cjsg
cHRyID0gcHRyLT5uZXh0KCkpIHsKICAgICAgICAgQVNTRVJUKCFwdHItPmVsaXNpb24oKSk7Ci0g
ICAgICAgIHRhaWwgPSBuZXcgKGdsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobGluZU51bWJl
ciwgdGFpbCwgcHRyLT52YWx1ZSgpKTsKKyAgICAgICAgdGFpbCA9IG5ldyAoZ2xvYmFsRGF0YSkg
QXJndW1lbnRMaXN0Tm9kZShsb2NhdGlvbiwgdGFpbCwgcHRyLT52YWx1ZSgpKTsKICAgICB9CiAg
ICAgcmV0dXJuIGhlYWQ7CiB9CkBAIC01MzYsNyArNTM5LDcgQEAgUmVnaXN0ZXJJRCogQXBwbHlG
dW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwKICAgICAgICAgICAgICAgICBpZiAobV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQpIHsK
ICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fYXJncy0+bV9saXN0Tm9kZS0+bV9uZXh0LT5t
X2V4cHItPmlzU2ltcGxlQXJyYXkoKSk7CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbV9h
cmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fbmV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIG1f
YXJncy0+bV9saXN0Tm9kZSA9IHN0YXRpY19jYXN0PEFycmF5Tm9kZSo+KG1fYXJncy0+bV9saXN0
Tm9kZS0+bV9uZXh0LT5tX2V4cHIpLT50b0FyZ3VtZW50TGlzdChnZW5lcmF0b3IuZ2xvYmFsRGF0
YSgpLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hcmdzLT5tX2xpc3ROb2RlID0gc3RhdGlj
X2Nhc3Q8QXJyYXlOb2RlKj4obV9hcmdzLT5tX2xpc3ROb2RlLT5tX25leHQtPm1fZXhwciktPnRv
QXJndW1lbnRMaXN0KGdlbmVyYXRvci5nbG9iYWxEYXRhKCksIDAsIDApOwogICAgICAgICAgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcmVhbEZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXRN
b3ZlKGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgYmFzZS5nZXQoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIENhbGxBcmd1bWVudHMgY2FsbEFyZ3VtZW50cyhnZW5lcmF0b3IsIG1fYXJn
cyk7CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShjYWxsQXJndW1lbnRz
LnRoaXNSZWdpc3RlcigpLCBvbGRMaXN0LT5tX2V4cHIpOwpAQCAtMTM4NSw3ICsxMzg4LDcgQEAg
UmVnaXN0ZXJJRCogQ29uc3REZWNsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKIAogUmVnaXN0ZXJJRCogQ29uc3RTdGF0ZW1lbnROb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCop
CiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZp
cnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxs
RXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAg
ICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb2RlKG1fbmV4dCk7CiB9CiAKQEAgLTE0MjgsNyArMTQz
MSw3IEBAIFJlZ2lzdGVySUQqIEJsb2NrTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAKIFJlZ2lzdGVySUQqIEVtcHR5U3RhdGVt
ZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0
YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29s
dW1uKCkpOwogICAgIHJldHVybiBkc3Q7CiB9CiAKQEAgLTE0MzYsNyArMTQzOSw3IEBAIFJlZ2lz
dGVySUQqIEVtcHR5U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzCiAKIFJlZ2lzdGVySUQqIERlYnVnZ2VyU3RhdGVtZW50Tm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRSZWFjaEJyZWFrcG9pbnQsIGZp
cnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRS
ZWFjaEJyZWFrcG9pbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAg
cmV0dXJuIGRzdDsKIH0KIApAQCAtMTQ0NSw3ICsxNDQ4LDcgQEAgUmVnaXN0ZXJJRCogRGVidWdn
ZXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmUKIFJlZ2lzdGVySUQqIEV4cHJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIEFTU0VSVCht
X2V4cHIpOwotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50
LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7IAorICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkp
OwogICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2V4cHIpOwogfQogCkBAIC0x
NDU0LDcgKzE0NTcsNyBAQCBSZWdpc3RlcklEKiBFeHByU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogUmVnaXN0ZXJJRCogVmFy
U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqKQogewogICAgIEFTU0VSVChtX2V4cHIpOwotICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7
CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0
TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0
Tm9kZShtX2V4cHIpOwogfQogCkBAIC0xNDYyLDcgKzE0NjUsNyBAQCBSZWdpc3RlcklEKiBWYXJT
dGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZQogCiBSZWdpc3RlcklEKiBJZk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsK
KyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICAKICAgICBSZWZQdHI8TGFiZWw+IGFm
dGVyVGhlbiA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogCkBAIC0xNDg2LDcgKzE0ODksNyBAQCBS
ZWdpc3RlcklEKiBJZk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKIFJlZ2lzdGVySUQqIElmRWxzZU5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0g
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICAKICAg
ICBSZWZQdHI8TGFiZWw+IGJlZm9yZUVsc2UgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBS
ZWZQdHI8TGFiZWw+IGFmdGVyRWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwpAQCAtMTUyMiwx
MiArMTUyNSwxMiBAQCBSZWdpc3RlcklEKiBEb1doaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAgICAgUmVmUHRyPExhYmVsPiB0
b3BPZkxvb3AgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVs
KHRvcE9mTG9vcC5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb29wSGludCgpOwotICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwg
bGFzdExpbmUoKSk7Ci0gICAKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOworCiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVt
ZW50KTsKIAogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkp
OwotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4
cHItPmxpbmVObygpLCBtX2V4cHItPmxpbmVObygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVn
SG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1u
KCkpOwogICAgIGlmIChtX2V4cHItPmhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2VuKCkpCiAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9v
cC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFyZ2V0KCksIGZhbHNlKTsKICAgICBlbHNlIHsKQEAgLTE1
NDYsNyArMTU0OSw3IEBAIFJlZ2lzdGVySUQqIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzCiAgICAgUmVmUHRyPExhYmVs
U2NvcGU+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7
CiAgICAgUmVmUHRyPExhYmVsPiB0b3BPZkxvb3AgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKIAot
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBtX2V4cHIt
PmxpbmVObygpLCBtX2V4cHItPmxpbmVObygpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9v
ayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgbV9leHByLT5saW5lTm8oKSwgbV9leHByLT5saW5lTm8o
KSwgbV9leHByLT5jb2x1bW5ObygpKTsKICAgICBpZiAobV9leHByLT5oYXNDb25kaXRpb25Db250
ZXh0Q29kZWdlbigpKQogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRl
eHQobV9leHByLCB0b3BPZkxvb3AuZ2V0KCksIHNjb3BlLT5icmVha1RhcmdldCgpLCB0cnVlKTsK
ICAgICBlbHNlIHsKQEAgLTE1NjAsNyArMTU2Myw3IEBAIFJlZ2lzdGVySUQqIFdoaWxlTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
CiAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOwogCiAgICAgZ2VuZXJh
dG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVt
aXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIG1fZXhwci0+bGluZU5vKCksIG1fZXhw
ci0+bGluZU5vKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAgaWYgKG1f
ZXhwci0+aGFzQ29uZGl0aW9uQ29udGV4dENvZGVnZW4oKSkKICAgICAgICAgZ2VuZXJhdG9yLmVt
aXROb2RlSW5Db25kaXRpb25Db250ZXh0KG1fZXhwciwgdG9wT2ZMb29wLmdldCgpLCBzY29wZS0+
YnJlYWtUYXJnZXQoKSwgZmFsc2UpOwpAQCAtMTU4MSw3ICsxNTg0LDcgQEAgUmVnaXN0ZXJJRCog
Rm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKIHsKICAgICBSZWZQdHI8TGFiZWxTY29wZT4gc2NvcGUgPSBnZW5lcmF0b3Iu
bmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29wKTsKIAotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBpZiAobV9leHByMSkKICAgICAgICAg
Z2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCksIG1fZXhwcjEpOwpA
QCAtMTYwMiw3ICsxNjA1LDcgQEAgUmVnaXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gcmVzdWx0ID0gZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQp
OwogCiAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChzY29wZS0+Y29udGludWVUYXJnZXQoKSk7Ci0g
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpKTsKKyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICBpZiAo
bV9leHByMykKICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGdlbmVyYXRvci5pZ25vcmVkUmVz
dWx0KCksIG1fZXhwcjMpOwogCkBAIC0xNjI5LDcgKzE2MzIsNyBAQCBSZWdpc3RlcklEKiBGb3JJ
bk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkcwogICAgIGlmICghbV9sZXhwci0+aXNMb2NhdGlvbigpKQogICAgICAgICByZXR1cm4g
ZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGZvci1pbiBz
dGF0ZW1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLiIpOwogCi0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsKKyAg
ICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5l
KCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKIAogICAgIGlmIChtX2luaXQpCiAgICAgICAgIGdl
bmVyYXRvci5lbWl0Tm9kZShnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpLCBtX2luaXQpOwpAQCAt
MTY5Miw3ICsxNjk1LDcgQEAgUmVnaXN0ZXJJRCogRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIAogICAgIGdlbmVyYXRv
ci5lbWl0TGFiZWwoc2NvcGUtPmNvbnRpbnVlVGFyZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0
TmV4dFByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUsIGJhc2UuZ2V0KCksIGkuZ2V0KCksIHNpemUu
Z2V0KCksIGl0ZXIuZ2V0KCksIGxvb3BTdGFydC5nZXQoKSk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRE
ZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpKTsK
KyAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RM
aW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNj
b3BlLT5icmVha1RhcmdldCgpKTsKICAgICByZXR1cm4gZHN0OwogfQpAQCAtMTcwMiw3ICsxNzA1
LDcgQEAgUmVnaXN0ZXJJRCogRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHMKIC8vIEVDTUEgMTIuNwogUmVnaXN0ZXJJRCog
Q29udGludWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVj
dXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVt
aXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgp
LCBjb2x1bW4oKSk7CiAgICAgCiAgICAgTGFiZWxTY29wZSogc2NvcGUgPSBnZW5lcmF0b3IuY29u
dGludWVUYXJnZXQobV9pZGVudCk7CiAgICAgQVNTRVJUKHNjb3BlKTsKQEAgLTE3MTYsNyArMTcx
OSw3IEBAIFJlZ2lzdGVySUQqIENvbnRpbnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqCiAvLyBFQ01BIDEyLjgKIFJlZ2lzdGVySUQq
IEJyZWFrTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwg
Y29sdW1uKCkpOwogICAgIAogICAgIExhYmVsU2NvcGUqIHNjb3BlID0gZ2VuZXJhdG9yLmJyZWFr
VGFyZ2V0KG1faWRlbnQpOwogICAgIEFTU0VSVChzY29wZSk7CkBAIC0xNzI5LDcgKzE3MzIsNyBA
QCBSZWdpc3RlcklEKiBCcmVha05vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkcwogCiBSZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQog
ewotICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJz
dExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAg
QVNTRVJUKGdlbmVyYXRvci5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7CiAKICAgICBpZiAo
ZHN0ID09IGdlbmVyYXRvci5pZ25vcmVkUmVzdWx0KCkpCkBAIC0xNzQ1LDcgKzE3NDgsNyBAQCBS
ZWdpc3RlcklEKiBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZAogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBTY29wZXMo
bDAuZ2V0KCksIDApOwogICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGwwLmdldCgpKTsKICAg
ICB9Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJz
dExpbmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExl
YXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIHJl
dHVybiBnZW5lcmF0b3IuZW1pdFJldHVybihyMCk7CiB9CiAKQEAgLTE3NTMsNyArMTc1Niw3IEBA
IFJlZ2lzdGVySUQqIFJldHVybk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAKIFJlZ2lzdGVySUQqIFdpdGhOb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewot
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExp
bmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1
dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwog
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZShzY29wZS5nZXQoKSwgbV9leHByKTsgLy8gc2NvcGUgbXVz
dCBiZSBwcm90ZWN0ZWQgdW50aWwgcG9wcGVkCkBAIC0xOTE4LDcgKzE5MjEsNyBAQCBSZWdpc3Rl
cklEKiBDYXNlQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGVGb3JCbG9jayhCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLCBSZQogCiBSZWdpc3RlcklEKiBTd2l0Y2hOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwg
bGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0
ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgCiAgICAgUmVm
UHRyPExhYmVsU2NvcGU+IHNjb3BlID0gZ2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29w
ZTo6U3dpdGNoKTsKIApAQCAtMTkzMyw3ICsxOTM2LDcgQEAgUmVnaXN0ZXJJRCogU3dpdGNoTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGQKIAogUmVnaXN0ZXJJRCogTGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7Cisg
ICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGlu
ZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBBU1NFUlQoIWdlbmVyYXRvci5icmVh
a1RhcmdldChtX25hbWUpKTsKIApAQCAtMTk0OCw3ICsxOTUxLDcgQEAgUmVnaXN0ZXJJRCogTGFi
ZWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHMKIAogUmVnaXN0ZXJJRCogVGhyb3dOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGdlbmVyYXRvci5l
bWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUo
KSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZp
cnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBpZiAoZHN0ID09IGdlbmVy
YXRvci5pZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgIGRzdCA9IDA7CkBAIC0xOTY1LDcgKzE5Njgs
NyBAQCBSZWdpc3RlcklEKiBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIC8vIE5PVEU6IFRoZSBjYXRjaCBhbmQg
ZmluYWxseSBibG9ja3MgbXVzdCBiZSBsYWJlbGVkIGV4cGxpY2l0bHksIHNvIHRoZQogICAgIC8v
IG9wdGltaXplciBrbm93cyB0aGV5IG1heSBiZSBqdW1wZWQgdG8gZnJvbSBhbnl3aGVyZS4KIAot
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExp
bmUoKSwgbGFzdExpbmUoKSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1
dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAKICAgICBS
ZWZQdHI8TGFiZWw+IHRyeVN0YXJ0TGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICBp
ZiAobV9maW5hbGx5QmxvY2spCkBAIC0yMDIyLDEzICsyMDI1LDEzIEBAIGlubGluZSB2b2lkIFNj
b3BlTm9kZTo6ZW1pdFN0YXRlbWVudHNCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpCiAKIFJlZ2lzdGVySUQqIFByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7Ci0gICAgZ2VuZXJhdG9yLmVt
aXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSk7
CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExp
bmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGRz
dFJlZ2lzdGVyID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogICAgIGdlbmVyYXRvci5lbWl0
TG9hZChkc3RSZWdpc3Rlci5nZXQoKSwganNVbmRlZmluZWQoKSk7CiAgICAgZW1pdFN0YXRlbWVu
dHNCeXRlY29kZShnZW5lcmF0b3IsIGRzdFJlZ2lzdGVyLmdldCgpKTsKIAotICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQcm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUo
KSk7CisgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soRGlkRXhlY3V0ZVByb2dyYW0sIGZpcnN0
TGluZSgpLCBsYXN0TGluZSgpLCBjb2x1bW4oKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRFbmQoZHN0
UmVnaXN0ZXIuZ2V0KCkpOwogICAgIHJldHVybiAwOwogfQpAQCAtMjAzNywxMyArMjA0MCwxMyBA
QCBSZWdpc3RlcklEKiBQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogCiBSZWdpc3RlcklEKiBFdmFsTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewotICAg
IGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5lKCks
IGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJv
Z3JhbSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKIAogICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBkc3RSZWdpc3RlciA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKICAgICBn
ZW5lcmF0b3IuZW1pdExvYWQoZHN0UmVnaXN0ZXIuZ2V0KCksIGpzVW5kZWZpbmVkKCkpOwogICAg
IGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBkc3RSZWdpc3Rlci5nZXQoKSk7CiAK
LSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgZmlyc3RMaW5l
KCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEV4ZWN1dGVQ
cm9ncmFtLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwogICAgIGdlbmVyYXRv
ci5lbWl0RW5kKGRzdFJlZ2lzdGVyLmdldCgpKTsKICAgICByZXR1cm4gMDsKIH0KQEAgLTIwNTIs
NyArMjA1NSw3IEBAIFJlZ2lzdGVySUQqIEV2YWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAKIFJlZ2lzdGVySUQqIEZ1bmN0aW9u
Qm9keU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKikKIHsKLSAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFbnRlckNhbGxGcmFt
ZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCkpOworICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29r
KERpZEVudGVyQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY29sdW1uKCkpOwog
ICAgIGVtaXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJl
c3VsdCgpKTsKIAogICAgIFN0YXRlbWVudE5vZGUqIHNpbmdsZVN0YXRlbWVudCA9IHRoaXMtPnNp
bmdsZVN0YXRlbWVudCgpOwpAQCAtMjA2OCw3ICsyMDcxLDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rp
b25Cb2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGUKICAgICAvLyBJZiB0aGVyZSBpcyBubyByZXR1cm4gd2UgbXVzdCBhdXRvbWF0aWNhbGx5
IGluc2VydCBvbmUuCiAgICAgaWYgKCFyZXR1cm5Ob2RlKSB7CiAgICAgICAgIFJlZ2lzdGVySUQq
IHIwID0gZ2VuZXJhdG9yLmlzQ29uc3RydWN0b3IoKSA/IGdlbmVyYXRvci50aGlzUmVnaXN0ZXIo
KSA6IGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgZ2VuZXJh
dG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFt
ZSwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNvbHVtbigpKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRSZXR1cm4ocjApOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCmluZGV4IGEyMzczMjkxODc4MDNlZGE5NTdhMzdk
M2EwYTkwN2FmZjBiODkyMzIuLmJjNzQzNjc3ZTIyNzQzNzZmOWRkMGQ4NWFhNWQ2ZDg3NTFiNTAx
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC00Miwx
NCArNDIsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXRhY2go
SlNHbG9iYWxPYmplY3QqKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEV4
ZWNTdGF0ZSosIFNvdXJjZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZU51bWJlciwgY29uc3QgVVN0
cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24o
Y29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIsIGJvb2wgaGFzSGFuZGxlcikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0ZW1l
bnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVO
dW1iZXIpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNhbGxFdmVudChjb25zdCBEZWJ1Z2dl
ckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikgPSAwOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpID0gMDsKIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgd2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBk
aWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZU51bWJlcikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hC
cmVha3BvaW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGlu
dCBsaW5lTnVtYmVyKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3Qg
RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50LCBpbnQsIGJvb2wpID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50
cHRyX3QsIGludCwgaW50KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29u
c3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50LCBpbnQpID0gMDsKKyAgICAgICAg
dmlydHVhbCB2b2lkIHJldHVybkV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRy
X3QsIGludCwgaW50KSA9IDA7CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxFeGVjdXRlUHJv
Z3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQsIGludCkgPSAwOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxs
RnJhbWUmLCBpbnRwdHJfdCwgaW50LCBpbnQpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQs
IGludCkgPSAwOworCiAKICAgICAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyhKU0ds
b2JhbERhdGEqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggM2VkYjg1ODllM2ExZTNjOWE2OWRhN2VjZWZjMzk0MDllYWJi
NDEyNy4uNTFmMjJiZWRkYTY0NmU1YTcyZDA2N2ViNWIwYmJmMWRjMTI5Y2JkMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC03
MzAsOSArNzMwLDkgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbGxG
cmFtZShDYWxsRnJhbWUqJiBjYWxsRnJhbWUsIEpTVmFsdWUgZXgKICAgICBpZiAoRGVidWdnZXIq
IGRlYnVnZ2VyID0gY2FsbEZyYW1lLT5keW5hbWljR2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkp
IHsKICAgICAgICAgRGVidWdnZXJDYWxsRnJhbWUgZGVidWdnZXJDYWxsRnJhbWUoY2FsbEZyYW1l
LCBleGNlcHRpb25WYWx1ZSk7CiAgICAgICAgIGlmIChjYWxsRnJhbWUtPmNhbGxlZSgpKQotICAg
ICAgICAgICAgZGVidWdnZXItPnJldHVybkV2ZW50KGRlYnVnZ2VyQ2FsbEZyYW1lLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLT5sYXN0TGluZSgpKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5yZXR1cm5FdmVudChk
ZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQo
KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bGFzdExpbmUoKSwgMCk7CiAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRFeGVjdXRlUHJvZ3JhbShkZWJ1Z2dlckNh
bGxGcmFtZSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKS0+bGFzdExpbmUoKSk7CisgICAgICAgICAgICBkZWJ1Z2dl
ci0+ZGlkRXhlY3V0ZVByb2dyYW0oZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmxh
c3RMaW5lKCksIDApOwogICAgIH0KIAogICAgIC8vIElmIHRoaXMgY2FsbCBmcmFtZSBjcmVhdGVk
IGFuIGFjdGl2YXRpb24gb3IgYW4gJ2FyZ3VtZW50cycgb2JqZWN0LCB0ZWFyIGl0IG9mZi4KQEAg
LTEwNTUsNyArMTA1NSw3IEBAIE5FVkVSX0lOTElORSBIYW5kbGVySW5mbyogSW50ZXJwcmV0ZXI6
OnRocm93RXhjZXB0aW9uKENhbGxGcmFtZSomIGNhbGxGcmFtZSwgSlNWCiAgICAgaWYgKERlYnVn
Z2VyKiBkZWJ1Z2dlciA9IGNhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dl
cigpKSB7CiAgICAgICAgIERlYnVnZ2VyQ2FsbEZyYW1lIGRlYnVnZ2VyQ2FsbEZyYW1lKGNhbGxG
cmFtZSwgZXhjZXB0aW9uVmFsdWUpOwogICAgICAgICBib29sIGhhc0hhbmRsZXIgPSBjb2RlQmxv
Y2stPmhhbmRsZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7Ci0gICAgICAgIGRl
YnVnZ2VyLT5leGNlcHRpb24oZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCktPnNvdXJjZUlEKCksIGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0KSwgaGFzSGFuZGxlcik7CisgICAgICAgIGRlYnVnZ2VyLT5leGNl
cHRpb24oZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNv
dXJjZUlEKCksIGNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KSwgMCwgaGFzSGFuZGxlcik7CiAgICAgfQogCiAgICAgLy8gQ2FsY3VsYXRlIGFuIGV4
Y2VwdGlvbiBoYW5kbGVyIHZQQywgdW53aW5kaW5nIGNhbGwgZnJhbWVzIGFzIG5lY2Vzc2FyeS4K
QEAgLTE2NDMsNyArMTY0Myw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4
ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlCiAgICAgcmV0dXJu
IGNoZWNrZWRSZXR1cm4ocmVzdWx0KTsKIH0KIAotTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0
ZXI6OmRlYnVnKENhbGxGcmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwg
aW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lKQorTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0
ZXI6OmRlYnVnKENhbGxGcmFtZSogY2FsbEZyYW1lLCBEZWJ1Z0hvb2tJRCBkZWJ1Z0hvb2tJRCwg
aW50IGZpcnN0TGluZSwgaW50IGxhc3RMaW5lLCBpbnQgY29sdW1uKQogewogICAgIERlYnVnZ2Vy
KiBkZWJ1Z2dlciA9IGNhbGxGcmFtZS0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigp
OwogICAgIGlmICghZGVidWdnZXIpCkBAIC0xNjUxLDIyICsxNjUxLDIyIEBAIE5FVkVSX0lOTElO
RSB2b2lkIEludGVycHJldGVyOjpkZWJ1ZyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwgRGVidWdIb29r
SUQgZGVidWdIb29rCiAKICAgICBzd2l0Y2ggKGRlYnVnSG9va0lEKSB7CiAgICAgICAgIGNhc2Ug
RGlkRW50ZXJDYWxsRnJhbWU6Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+Y2FsbEV2ZW50KGNhbGxG
cmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlE
KCksIGZpcnN0TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+Y2FsbEV2ZW50KGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCks
IGZpcnN0TGluZSwgY29sdW1uKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBX
aWxsTGVhdmVDYWxsRnJhbWU6Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+cmV0dXJuRXZlbnQoY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNl
SUQoKSwgbGFzdExpbmUpOworICAgICAgICAgICAgZGVidWdnZXItPnJldHVybkV2ZW50KGNhbGxG
cmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlE
KCksIGxhc3RMaW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNl
IFdpbGxFeGVjdXRlU3RhdGVtZW50OgotICAgICAgICAgICAgZGVidWdnZXItPmF0U3RhdGVtZW50
KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNv
dXJjZUlEKCksIGZpcnN0TGluZSk7CisgICAgICAgICAgICBkZWJ1Z2dlci0+YXRTdGF0ZW1lbnQo
Y2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291
cmNlSUQoKSwgZmlyc3RMaW5lLCBjb2x1bW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBjYXNlIFdpbGxFeGVjdXRlUHJvZ3JhbToKLSAgICAgICAgICAgIGRlYnVnZ2VyLT53aWxsRXhl
Y3V0ZVByb2dyYW0oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1
dGFibGUoKS0+c291cmNlSUQoKSwgZmlyc3RMaW5lKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT53
aWxsRXhlY3V0ZVByb2dyYW0oY2FsbEZyYW1lLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25l
ckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwgZmlyc3RMaW5lLCBjb2x1bW4pOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBjYXNlIERpZEV4ZWN1dGVQcm9ncmFtOgotICAgICAgICAgICAg
ZGVidWdnZXItPmRpZEV4ZWN1dGVQcm9ncmFtKGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RMaW5lKTsKKyAgICAgICAg
ICAgIGRlYnVnZ2VyLT5kaWRFeGVjdXRlUHJvZ3JhbShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpLCBsYXN0TGluZSwgY29sdW1u
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2FzZSBEaWRSZWFjaEJyZWFrcG9pbnQ6
Ci0gICAgICAgICAgICBkZWJ1Z2dlci0+ZGlkUmVhY2hCcmVha3BvaW50KGNhbGxGcmFtZSwgY2Fs
bEZyYW1lLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCksIGxhc3RM
aW5lKTsKKyAgICAgICAgICAgIGRlYnVnZ2VyLT5kaWRSZWFjaEJyZWFrcG9pbnQoY2FsbEZyYW1l
LCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKSwg
bGFzdExpbmUsIGNvbHVtbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogfQpAQCAtNTI0
NSw3ICs1MjQ1LDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICAgICAgTkVYVF9JTlNUUlVD
VElPTigpOwogICAgIH0KICAgICBERUZJTkVfT1BDT0RFKG9wX2RlYnVnKSB7Ci0gICAgICAgIC8q
IGRlYnVnIGRlYnVnSG9va0lEKG4pIGZpcnN0TGluZShuKSBsYXN0TGluZShuKQorICAgICAgICAv
KiBkZWJ1ZyBkZWJ1Z0hvb2tJRChuKSBmaXJzdExpbmUobikgbGFzdExpbmUobikgY29sdW1uKG4p
CiAKICAgICAgICAgIE5vdGlmaWVzIHRoZSBkZWJ1Z2dlciBvZiB0aGUgY3VycmVudCBzdGF0ZSBv
ZiBleGVjdXRpb24uIFRoaXMgb3Bjb2RlCiAgICAgICAgICBpcyBvbmx5IGdlbmVyYXRlZCB3aGls
ZSB0aGUgZGVidWdnZXIgaXMgYXR0YWNoZWQuCkBAIC01MjUzLDggKzUyNTMsMTAgQEAgc2tpcF9p
ZF9jdXN0b21fc2VsZjoKICAgICAgICAgaW50IGRlYnVnSG9va0lEID0gdlBDWzFdLnUub3BlcmFu
ZDsKICAgICAgICAgaW50IGZpcnN0TGluZSA9IHZQQ1syXS51Lm9wZXJhbmQ7CiAgICAgICAgIGlu
dCBsYXN0TGluZSA9IHZQQ1szXS51Lm9wZXJhbmQ7CisgICAgICAgIGludCBjb2x1bW4gPSB2UENb
NF0udS5vcGVyYW5kOwogCi0gICAgICAgIGRlYnVnKGNhbGxGcmFtZSwgc3RhdGljX2Nhc3Q8RGVi
dWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CisKKyAgICAgICAg
ZGVidWcoY2FsbEZyYW1lLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBm
aXJzdExpbmUsIGxhc3RMaW5lLCBjb2x1bW4pOwogCiAgICAgICAgIHZQQyArPSBPUENPREVfTEVO
R1RIKG9wX2RlYnVnKTsKICAgICAgICAgTkVYVF9JTlNUUlVDVElPTigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAppbmRleCA4NjYzYmY4ZWMz
ODNmYzk2MDljZTRhNjA1NWQ5NzUzZmZkMDZjYmJiLi5mNGNjZDk5NWM5NmJmMGM5ZDZkNmIzMGQy
NTA2ZGY3YzBiY2NkMTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaApAQCAtMjQwLDcgKzI0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBTYW1wbGluZ1Rvb2wqIHNhbXBsZXIoKSB7IHJldHVybiBtX3NhbXBsZXIuZ2V0KCk7IH0K
IAogICAgICAgICBORVZFUl9JTkxJTkUgSGFuZGxlckluZm8qIHRocm93RXhjZXB0aW9uKENhbGxG
cmFtZSomLCBKU1ZhbHVlJiwgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwotICAgICAgICBORVZF
Ul9JTkxJTkUgdm9pZCBkZWJ1ZyhDYWxsRnJhbWUqLCBEZWJ1Z0hvb2tJRCwgaW50IGZpcnN0TGlu
ZSwgaW50IGxhc3RMaW5lKTsKKyAgICAgICAgTkVWRVJfSU5MSU5FIHZvaWQgZGVidWcoQ2FsbEZy
YW1lKiwgRGVidWdIb29rSUQsIGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNvbHVt
bik7CiAgICAgICAgIHN0YXRpYyBjb25zdCBVU3RyaW5nIGdldFRyYWNlTGluZShDYWxsRnJhbWUq
LCBTdGFja0ZyYW1lQ29kZVR5cGUsIGNvbnN0IFVTdHJpbmcmLCBpbnQpOwogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBzdGF0aWMgdm9pZCBnZXRTdGFja1RyYWNlKEpTR2xvYmFsRGF0YSosIFZl
Y3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cyk7CiAgICAgICAgIHN0YXRpYyB2b2lkIGFkZFN0YWNr
VHJhY2VJZk5lY2Vzc2FyeShDYWxsRnJhbWUqLCBKU09iamVjdCogZXJyb3IpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggYzBhZjZmOWU5YmJiNTkwYTM2NTIx
NjA3Zjc3MjE5NTZlN2VkNjk1Ny4uNDIxY2Y1YmM2MWRjMDU3MWE5ZDRjZjc3MjY4NGVhMDU3Nzg0
MWU0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xMTU4
LDYgKzExNTgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9kZWJ1ZyhJbnN0cnVjdGlvbiogY3VycmVu
dEluc3RydWN0aW9uKQogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
VHJ1c3RlZEltbTMyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKICAgICBzdHVi
Q2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZCkpOworICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihjdXJyZW50SW5z
dHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuY2FsbCgpOwogI2VuZGlmCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKaW5kZXgg
MDk1ZWE1N2QzNDlmYzI2NTc0YTMyNzhlYzAwYzEyMGIwZGRiNzM0OS4uNzBhNjA4ZTNhZmQwNTAy
YWZkZjdlZDcwNzc2ZTk3ZTYxMjdjZGVlNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMTQ3OCw2ICsxNDc4LDcgQEAgdm9pZCBKSVQ6OmVt
aXRfb3BfZGVidWcoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBzdHViQ2Fs
bC5hZGRBcmd1bWVudChJbW0zMihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSk7CiAg
ICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoSW1tMzIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCkpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KEltbTMyKGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQpKTsKKyAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChJbW0zMihjdXJyZW50
SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kKSk7CiAgICAgc3R1YkNhbGwuY2FsbCgpOwogI2VuZGlm
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCmluZGV4IDBmMDNhMGE0YTk0
NmNjODBjNDE0M2M0ZmIyOWE0NjIwYWUxYTcxNDAuLjcxMDBhMGMxOTRjZDQwZjRmNmQ5ZTkzODFm
NzMyZWRjMTViNDY4Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBA
IC0zNDAzLDggKzM0MDMsOSBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9kZWJ1ZykK
ICAgICBpbnQgZGVidWdIb29rSUQgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKTsKICAgICBp
bnQgZmlyc3RMaW5lID0gc3RhY2tGcmFtZS5hcmdzWzFdLmludDMyKCk7CiAgICAgaW50IGxhc3RM
aW5lID0gc3RhY2tGcmFtZS5hcmdzWzJdLmludDMyKCk7CisgICAgaW50IGNvbHVtbiA9IHN0YWNr
RnJhbWUuYXJnc1szXS5pbnQzMigpOwogCi0gICAgc3RhY2tGcmFtZS5nbG9iYWxEYXRhLT5pbnRl
cnByZXRlci0+ZGVidWcoY2FsbEZyYW1lLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdI
b29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICBzdGFja0ZyYW1lLmdsb2JhbERhdGEt
PmludGVycHJldGVyLT5kZWJ1ZyhjYWxsRnJhbWUsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihk
ZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUsIGNvbHVtbik7CiB9CiAKIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQqLCB2bV90aHJvdykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGQyZDc0M2UwYWM2MmZhMDZkM2EwMzc5M2Nm
ZDJlYTk3Y2I0M2NkZDIuLjU4YmYxYmRlYjQ3Y2UzYWVlNmNjY2FhODZhYTUxYTVkNDNkYWVhNTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApA
QCAtMTYwMSw4ICsxNjAxLDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlYnVn
KQogICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFdLnUub3BlcmFuZDsKICAgICBpbnQgZmlyc3RM
aW5lID0gcGNbMl0udS5vcGVyYW5kOwogICAgIGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFu
ZDsKLSAgICAKLSAgICBnbG9iYWxEYXRhLmludGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0aWNf
Y2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAg
ICBpbnQgY29sdW1uID0gcGNbNF0udS5vcGVyYW5kOworCisgICAgZ2xvYmFsRGF0YS5pbnRlcnBy
ZXRlci0+ZGVidWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwg
Zmlyc3RMaW5lLCBsYXN0TGluZSwgY29sdW1uKTsKICAgICAKICAgICBMTElOVF9FTkQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQppbmRleCAyYWUzZTBjYjI0YjlmMmM0ZTVlMjg5NDgxMzRiMjFmNmU1NDEwNWQ2Li4xMGE1
YWFlYWIxYWM5MGUwMjVhOWEzZWI5NmYyY2EwMGZlMjU5ZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC03NjAsNyAr
NzYwLDcgQEAgX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6CiBfbGxpbnRfb3BfZGVidWc6CiAg
ICAgdHJhY2VFeGVjdXRpb24oKQogICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2Rl
YnVnKQotICAgIGRpc3BhdGNoKDQpCisgICAgZGlzcGF0Y2goNSkKIAogCiBfbGxpbnRfbmF0aXZl
X2NhbGxfdHJhbXBvbGluZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmgKaW5kZXggZDRjMTcwNjE3MzliOTNmYzAxZmU0MjY1MzNhMWIzNjFmN2MzZGZlNS4uMGE3MWYx
Mjk0YWFhYzRlN2E2MWViMzEwODc0OWQ4YjAwNjkxYzc4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTExMiw4ICsxMTIsOCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IGludCAgRG9udEJ1aWxkS2V5d29yZHMgPSAwOwogICAgIHN0YXRpYyBjb25z
dCBpbnQgIERvbnRCdWlsZFN0cmluZ3MgPSAwOwogCi0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VC
aW5hcnlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQgdG9rZW4sIHN0ZDo6cGFpcjxFeHByZXNzaW9u
Tm9kZSosIEJpbmFyeU9wSW5mbz4sIHN0ZDo6cGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9w
SW5mbz4pOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGZ1bmMsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGludCBz
dGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpbmFy
eU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50IHRva2VuLCBzdGQ6OnBhaXI8RXhwcmVz
c2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+LCBzdGQ6OnBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5h
cnlPcEluZm8+KTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGZ1bmMsIEFyZ3VtZW50c05vZGUq
IGFyZ3MsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKIAogICAgIEpTQzo6U291cmNl
RWxlbWVudHMqIGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkgeyByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEpTQzo6U291cmNlRWxlbWVudHMoKTsgfQogCkBAIC0xMjQsMTY4ICsxMjQsMTY4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgYXBwZW5kVG9Db21tYShDb21tYU5vZGUqIGNvbW1hTm9kZSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIpIHsgY29tbWFOb2RlLT5hcHBlbmQoZXhwcik7IH0KIAotICAgIENv
bW1hTm9kZSogY3JlYXRlQ29tbWFFeHByKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
bGhzLCBFeHByZXNzaW9uTm9kZSogcmhzKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29t
bWFOb2RlKGxpbmVOdW1iZXIsIGxocywgcmhzKTsgfQotCi0gICAgRXhwcmVzc2lvbk5vZGUqIG1h
a2VBc3NpZ25Ob2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgT3BlcmF0
b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBsZWZ0SGFzQXNzaWdubWVudHMsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotICAg
IEV4cHJlc3Npb25Ob2RlKiBtYWtlUHJlZml4Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOwotICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlUG9zdGZpeE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiwgT3BlcmF0b3IsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKLSAgICBFeHBy
ZXNzaW9uTm9kZSogbWFrZVR5cGVPZk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
Kik7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VEZWxldGVOb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSosIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKLSAgICBFeHBy
ZXNzaW9uTm9kZSogbWFrZU5lZ2F0ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
Kik7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXR3aXNlTm90Tm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqKTsKLSAgICBFeHByZXNzaW9uTm9kZSogbWFrZU11bHROb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGl2
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Npb25Ob2Rl
KiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9uTm9kZSog
bWFrZU1vZE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7Ci0gICAgRXhwcmVzc2lv
bk5vZGUqIG1ha2VBZGROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4
cHJlc3Npb25Ob2RlKiBtYWtlU3ViTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGxlZnQsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
LSAgICBFeHByZXNzaW9uTm9kZSogbWFrZUJpdFhPck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cyk7Ci0gICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VCaXRBbmROb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0T3JOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlTGVm
dFNoaWZ0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIEV4cHJlc3Np
b25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKLSAgICBFeHByZXNzaW9u
Tm9kZSogbWFrZVJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
bGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwot
ICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlVVJpZ2h0U2hpZnROb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOwotCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUxvZ2ljYWxOb3QoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgTG9naWNhbE5vdE5vZGUobGluZU51bWJlciwgZXhwcik7IH0KLSAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlVW5hcnlQbHVzKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobGluZU51bWJlciwg
ZXhwcik7IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlVm9pZChpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgQ29tbWFOb2RlKiBjcmVhdGVDb21tYUV4cHIoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVz
c2lvbk5vZGUqIHJocykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbW1hTm9kZShsb2Nh
dGlvbiwgbGhzLCByaHMpOyB9CisKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZUFzc2lnbk5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxlZnQsIE9wZXJhdG9yLCBF
eHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgbGVmdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHBy
ZXNzaW9uTm9kZSogbWFrZVByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpOworICAg
IEV4cHJlc3Npb25Ob2RlKiBtYWtlUG9zdGZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQp
OworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlVHlwZU9mTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSopOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGVsZXRlTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIGludCBzdGFydCwgaW50
IGRpdm90LCBpbnQgZW5kKTsKKyAgICBFeHByZXNzaW9uTm9kZSogbWFrZU5lZ2F0ZU5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICBFeHByZXNzaW9uTm9k
ZSogbWFrZUJpdHdpc2VOb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKik7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VNdWx0Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlRGl2Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5v
ZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2Rl
KiBtYWtlTW9kTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVm
dCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAg
IEV4cHJlc3Npb25Ob2RlKiBtYWtlQWRkTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlU3ViTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0WE9y
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogbGVmdCwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgIEV4cHJlc3Np
b25Ob2RlKiBtYWtlQml0QW5kTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlQml0T3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lvbk5vZGUqIG1ha2VMZWZ0U2hpZnRO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgRXhwcmVzc2lv
bk5vZGUqIG1ha2VSaWdodFNoaWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSogbGVmdCwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOworICAgIEV4cHJlc3Npb25Ob2RlKiBtYWtlVVJpZ2h0U2hpZnROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBsZWZ0LCBFeHByZXNzaW9uTm9kZSogcmln
aHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisKKyAgICBFeHByZXNzaW9uTm9kZSogY3Jl
YXRlTG9naWNhbE5vdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogZXhwcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxOb3ROb2RlKGxv
Y2F0aW9uLCBleHByKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVVbmFyeVBsdXMoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpIHsgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBVbmFyeVBsdXNOb2RlKGxvY2F0aW9uLCBleHByKTsgfQor
ICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVWb2lkKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQogICAgIHsKICAgICAgICAgaW5jQ29uc3RhbnRz
KCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVm9pZE5vZGUobGluZU51bWJl
ciwgZXhwcik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVm9pZE5vZGUobG9j
YXRpb24sIGV4cHIpOwogICAgIH0KLSAgICBFeHByZXNzaW9uTm9kZSogdGhpc0V4cHIoaW50IGxp
bmVOdW1iZXIpCisgICAgRXhwcmVzc2lvbk5vZGUqIHRoaXNFeHByKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24pCiAgICAgewogICAgICAgICB1c2VzVGhpcygpOwotICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIFRoaXNOb2RlKGxpbmVOdW1iZXIpOworICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIFRoaXNOb2RlKGxvY2F0aW9uKTsKICAgICB9Ci0gICAgRXhw
cmVzc2lvbk5vZGUqIGNyZWF0ZVJlc29sdmUoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZp
ZXIqIGlkZW50LCBpbnQgc3RhcnQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVJlc29sdmUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogaWRlbnQs
IGludCBzdGFydCkKICAgICB7CiAgICAgICAgIGlmIChtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFt
ZXMtPmFyZ3VtZW50cyA9PSAqaWRlbnQpCiAgICAgICAgICAgICB1c2VzQXJndW1lbnRzKCk7Ci0g
ICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVzb2x2ZU5vZGUobGluZU51bWJlciwg
KmlkZW50LCBzdGFydCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVzb2x2
ZU5vZGUobG9jYXRpb24sICppZGVudCwgc3RhcnQpOwogICAgIH0KLSAgICBFeHByZXNzaW9uTm9k
ZSogY3JlYXRlT2JqZWN0TGl0ZXJhbChpbnQgbGluZU51bWJlcikgeyByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIE9iamVjdExpdGVyYWxOb2RlKGxpbmVOdW1iZXIpOyB9Ci0gICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZU9iamVjdExpdGVyYWwoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5TGlzdE5v
ZGUqIHByb3BlcnRpZXMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBPYmplY3RMaXRlcmFs
Tm9kZShsaW5lTnVtYmVyLCBwcm9wZXJ0aWVzKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVPYmplY3RMaXRlcmFsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pIHsgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBPYmplY3RMaXRlcmFsTm9kZShsb2NhdGlvbik7IH0KKyAgICBF
eHByZXNzaW9uTm9kZSogY3JlYXRlT2JqZWN0TGl0ZXJhbChjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBQcm9wZXJ0eUxpc3ROb2RlKiBwcm9wZXJ0aWVzKSB7IHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgT2JqZWN0TGl0ZXJhbE5vZGUobG9jYXRpb24sIHByb3BlcnRpZXMpOyB9CiAK
LSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIGludCBlbGlz
aW9ucykKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgaW50IGVsaXNpb25zKQogICAgIHsKICAgICAgICAgaWYgKGVsaXNpb25z
KQogICAgICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgQXJyYXlOb2RlKGxpbmVOdW1iZXIsIGVsaXNpb25zKTsKKyAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBBcnJheU5vZGUobG9jYXRpb24sIGVsaXNpb25zKTsKICAgICB9
CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxpbmVOdW1iZXIsIEVsZW1l
bnROb2RlKiBlbGVtcykgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5l
TnVtYmVyLCBlbGVtcyk7IH0KLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXJyYXkoaW50IGxp
bmVOdW1iZXIsIGludCBlbGlzaW9ucywgRWxlbWVudE5vZGUqIGVsZW1zKQorICAgIEV4cHJlc3Np
b25Ob2RlKiBjcmVhdGVBcnJheShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFbGVt
ZW50Tm9kZSogZWxlbXMpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcnJheU5vZGUobG9j
YXRpb24sIGVsZW1zKTsgfQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVBcnJheShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBpbnQgZWxpc2lvbnMsIEVsZW1lbnROb2RlKiBlbGVt
cykKICAgICB7CiAgICAgICAgIGlmIChlbGlzaW9ucykKICAgICAgICAgICAgIGluY0NvbnN0YW50
cygpOwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFycmF5Tm9kZShsaW5lTnVt
YmVyLCBlbGlzaW9ucywgZWxlbXMpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEp
IEFycmF5Tm9kZShsb2NhdGlvbiwgZWxpc2lvbnMsIGVsZW1zKTsKICAgICB9Ci0gICAgRXhwcmVz
c2lvbk5vZGUqIGNyZWF0ZU51bWJlckV4cHIoaW50IGxpbmVOdW1iZXIsIGRvdWJsZSBkKQorICAg
IEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdW1iZXJFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGRvdWJsZSBkKQogICAgIHsKICAgICAgICAgaW5jQ29uc3RhbnRzKCk7Ci0gICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTnVtYmVyTm9kZShsaW5lTnVtYmVyLCBkKTsK
KyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdW1iZXJOb2RlKGxvY2F0aW9uLCBk
KTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlU3RyaW5nKGludCBsaW5lTnVt
YmVyLCBjb25zdCBJZGVudGlmaWVyKiBzdHJpbmcpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0
ZVN0cmluZyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVy
KiBzdHJpbmcpCiAgICAgewogICAgICAgICBpbmNDb25zdGFudHMoKTsKLSAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBTdHJpbmdOb2RlKGxpbmVOdW1iZXIsICpzdHJpbmcpOworICAg
ICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN0cmluZ05vZGUobG9jYXRpb24sICpzdHJp
bmcpOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVCb29sZWFuKGludCBsaW5l
TnVtYmVyLCBib29sIGIpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJvb2xlYW4oY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgYm9vbCBiKQogICAgIHsKICAgICAgICAgaW5jQ29u
c3RhbnRzKCk7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQm9vbGVhbk5vZGUo
bGluZU51bWJlciwgYik7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQm9vbGVh
bk5vZGUobG9jYXRpb24sIGIpOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVO
dWxsKGludCBsaW5lTnVtYmVyKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVOdWxsKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCiAgICAgewogICAgICAgICBpbmNDb25zdGFudHMo
KTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdWxsTm9kZShsaW5lTnVtYmVy
KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOdWxsTm9kZShsb2NhdGlvbik7
CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogcHJvcGVydHks
IGJvb2wgcHJvcGVydHlIYXNBc3NpZ25tZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBl
bmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2Rl
KiBwcm9wZXJ0eSwgYm9vbCBwcm9wZXJ0eUhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBk
aXZvdCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIG5vZGUg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJhY2tldEFjY2Vzc29yTm9kZShsaW5lTnVtYmVyLCBiYXNl
LCBwcm9wZXJ0eSwgcHJvcGVydHlIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJyYWNrZXRBY2Nl
c3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJhY2tldEFjY2Vzc29yTm9kZShs
b2NhdGlvbiwgYmFzZSwgcHJvcGVydHksIHByb3BlcnR5SGFzQXNzaWdubWVudHMpOwogICAgICAg
ICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAgICAg
IHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVEb3RBY2Nl
c3MoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
KiBwcm9wZXJ0eSwgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciogcHJvcGVydHksIGludCBzdGFy
dCwgaW50IGRpdm90LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRG90QWNjZXNzb3JOb2RlKiBu
b2RlID0gbmV3IChtX2dsb2JhbERhdGEpIERvdEFjY2Vzc29yTm9kZShsaW5lTnVtYmVyLCBiYXNl
LCAqcHJvcGVydHkpOworICAgICAgICBEb3RBY2Nlc3Nvck5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgRG90QWNjZXNzb3JOb2RlKGxvY2F0aW9uLCBiYXNlLCAqcHJvcGVydHkpOwogICAg
ICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFydCwgZGl2b3QsIGVuZCk7CiAgICAg
ICAgIHJldHVybiBub2RlOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVhdGVSZWdF
eHAoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50
aWZpZXImIGZsYWdzLCBpbnQgc3RhcnQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZVJlZ0V4
cChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0
ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgaW50IHN0YXJ0KQogICAgIHsKICAgICAgICAg
aWYgKFlhcnI6OmNoZWNrU3ludGF4KHBhdHRlcm4udXN0cmluZygpKSkKICAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICBSZWdFeHBOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFJl
Z0V4cE5vZGUobGluZU51bWJlciwgcGF0dGVybiwgZmxhZ3MpOworICAgICAgICBSZWdFeHBOb2Rl
KiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFJlZ0V4cE5vZGUobG9jYXRpb24sIHBhdHRlcm4s
IGZsYWdzKTsKICAgICAgICAgaW50IHNpemUgPSBwYXR0ZXJuLmxlbmd0aCgpICsgMjsgLy8gKyAy
IGZvciB0aGUgdHdvIC8ncwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlvbihub2RlLCBzdGFy
dCwgc3RhcnQgKyBzaXplLCBzdGFydCArIHNpemUpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAg
ICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTmV3RXhwcihpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3VtZW50cywgaW50IHN0YXJ0
LCBpbnQgZGl2b3QsIGludCBlbmQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU5ld0V4cHIo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFy
Z3VtZW50c05vZGUqIGFyZ3VtZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCiAg
ICAgewotICAgICAgICBOZXdFeHByTm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBOZXdF
eHByTm9kZShsaW5lTnVtYmVyLCBleHByLCBhcmd1bWVudHMpOworICAgICAgICBOZXdFeHByTm9k
ZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBOZXdFeHByTm9kZShsb2NhdGlvbiwgZXhwciwg
YXJndW1lbnRzKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRp
dm90LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9u
Tm9kZSogY3JlYXRlTmV3RXhwcihpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIs
IGludCBzdGFydCwgaW50IGVuZCkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlTmV3RXhwcihj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50
IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgTmV3RXhwck5vZGUqIG5vZGUgPSBuZXcg
KG1fZ2xvYmFsRGF0YSkgTmV3RXhwck5vZGUobGluZU51bWJlciwgZXhwcik7CisgICAgICAgIE5l
d0V4cHJOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIE5ld0V4cHJOb2RlKGxvY2F0aW9u
LCBleHByKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGVuZCwg
ZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUq
IGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNv
bmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGxocywgRXhwcmVzc2lvbk5vZGUqIHJocykKKyAgICBF
eHByZXNzaW9uTm9kZSogY3JlYXRlQ29uZGl0aW9uYWxFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIEV4cHJlc3Npb25Ob2RlKiBs
aHMsIEV4cHJlc3Npb25Ob2RlKiByaHMpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIENvbmRpdGlvbmFsTm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24sIGxocywgcmhz
KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBDb25kaXRpb25hbE5vZGUobG9j
YXRpb24sIGNvbmRpdGlvbiwgbGhzLCByaHMpOwogICAgIH0KIAotICAgIEV4cHJlc3Npb25Ob2Rl
KiBjcmVhdGVBc3NpZ25SZXNvbHZlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgRXhwcmVzc2lvbk5vZGUqIHJocywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQp
CisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZUFzc2lnblJlc29sdmUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2Rl
KiByaHMsIGludCBzdGFydCwgaW50IGRpdm90LCBpbnQgZW5kKQogICAgIHsKICAgICAgICAgaWYg
KHJocy0+aXNGdW5jRXhwck5vZGUoKSkKICAgICAgICAgICAgIHN0YXRpY19jYXN0PEZ1bmNFeHBy
Tm9kZSo+KHJocyktPmJvZHkoKS0+c2V0SW5mZXJyZWROYW1lKGlkZW50KTsKLSAgICAgICAgQXNz
aWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5v
ZGUobGluZU51bWJlciwgaWRlbnQsIHJocyk7CisgICAgICAgIEFzc2lnblJlc29sdmVOb2RlKiBu
b2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnblJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVu
dCwgcmhzKTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90
LCBlbmQpOwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9k
ZSogY3JlYXRlRnVuY3Rpb25FeHByKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBu
YW1lLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5LCBQYXJhbWV0ZXJOb2RlKiBwYXJhbWV0ZXJzLCBp
bnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlTdGFydExpbmUsIGlu
dCBib2R5RW5kTGluZSkKKyAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlRnVuY3Rpb25FeHByKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIEZ1
bmN0aW9uQm9keU5vZGUqIGJvZHksIFBhcmFtZXRlck5vZGUqIHBhcmFtZXRlcnMsIGludCBvcGVu
QnJhY2VQb3MsIGludCBjbG9zZUJyYWNlUG9zLCBpbnQgYm9keVN0YXJ0TGluZSwgaW50IGJvZHlF
bmRMaW5lKQogICAgIHsKLSAgICAgICAgRnVuY0V4cHJOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgRnVuY0V4cHJOb2RlKGxpbmVOdW1iZXIsICpuYW1lLCBib2R5LCBtX3NvdXJjZUNv
ZGUtPnN1YkV4cHJlc3Npb24ob3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRM
aW5lKSwgcGFyYW1ldGVycyk7Ci0gICAgICAgIGJvZHktPnNldExvYyhib2R5U3RhcnRMaW5lLCBi
b2R5RW5kTGluZSk7CisgICAgICAgIEZ1bmNFeHByTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2Jh
bERhdGEpIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgKm5hbWUsIGJvZHksIG1fc291cmNlQ29kZS0+
c3ViRXhwcmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUp
LCBwYXJhbWV0ZXJzKTsKKyAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlF
bmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IAotICAgIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZUZ1bmN0aW9uQm9keShpbnQgbGluZU51bWJl
ciwgYm9vbCBpblN0cmljdENvbnRleHQpCisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogY3JlYXRlRnVu
Y3Rpb25Cb2R5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGJvb2wgaW5TdHJpY3RD
b250ZXh0KQogICAgIHsKLSAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZSht
X2dsb2JhbERhdGEsIGxpbmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCk7CisgICAgICAgIHJldHVy
biBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUobV9nbG9iYWxEYXRhLCBsb2NhdGlvbiwgaW5TdHJp
Y3RDb250ZXh0KTsKICAgICB9CiAgICAgCi0gICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9k
ZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShpbnQgbGluZU51bWJlciwgUHJvcGVydHlO
b2RlOjpUeXBlIHR5cGUsIGNvbnN0IElkZW50aWZpZXIqIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBh
cmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3Nl
QnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCisgICAgdGVtcGxh
dGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgY29u
c3QgSWRlbnRpZmllciogbmFtZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1zLCBGdW5jdGlvbkJvZHlO
b2RlKiBib2R5LCBpbnQgb3BlbkJyYWNlUG9zLCBpbnQgY2xvc2VCcmFjZVBvcywgaW50IGJvZHlT
dGFydExpbmUsIGludCBib2R5RW5kTGluZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsK
LSAgICAgICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lKTsKKyAgICAg
ICAgYm9keS0+c2V0TG9jKGJvZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5jb2x1
bW4pOwogICAgICAgICBib2R5LT5zZXRJbmZlcnJlZE5hbWUoKm5hbWUpOwotICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2JhbERhdGEsICpuYW1lLCBu
ZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0V4cHJOb2RlKGxpbmVOdW1iZXIsIG1fZ2xvYmFsRGF0YS0+
cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXIsIGJvZHksIG1fc291cmNlQ29kZS0+c3ViRXhw
cmVzc2lvbihvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpLCBwYXJh
bXMpLCB0eXBlKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5v
ZGUobV9nbG9iYWxEYXRhLCAqbmFtZSwgbmV3IChtX2dsb2JhbERhdGEpIEZ1bmNFeHByTm9kZShs
b2NhdGlvbiwgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgYm9k
eSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBv
cywgYm9keVN0YXJ0TGluZSksIHBhcmFtcyksIHR5cGUpOwogICAgIH0KICAgICAKLSAgICB0ZW1w
bGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KEpT
R2xvYmFsRGF0YSosIGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91
YmxlIG5hbWUsIFBhcmFtZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwg
aW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBp
bnQgYm9keUVuZExpbmUpCisgICAgdGVtcGxhdGUgPGJvb2w+IFByb3BlcnR5Tm9kZSogY3JlYXRl
R2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUsIFBhcmFt
ZXRlck5vZGUqIHBhcmFtcywgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSwgaW50IG9wZW5CcmFjZVBv
cywgaW50IGNsb3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUp
CiAgICAgewotICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0TGluZSwgYm9keUVuZExpbmUp
OwotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3BlcnR5Tm9kZShtX2dsb2Jh
bERhdGEsIG5hbWUsIG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRXhwck5vZGUobGluZU51bWJlciwg
bV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5udWxsSWRlbnRpZmllciwgYm9keSwgbV9zb3Vy
Y2VDb2RlLT5zdWJFeHByZXNzaW9uKG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0
YXJ0TGluZSksIHBhcmFtcyksIHR5cGUpOworICAgICAgICBib2R5LT5zZXRMb2MoYm9keVN0YXJ0
TGluZSwgYm9keUVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CisgICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlOb2RlKG1fZ2xvYmFsRGF0YSwgbmFtZSwgbmV3IChtX2ds
b2JhbERhdGEpIEZ1bmNFeHByTm9kZShsb2NhdGlvbiwgbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5h
bWVzLT5udWxsSWRlbnRpZmllciwgYm9keSwgbV9zb3VyY2VDb2RlLT5zdWJFeHByZXNzaW9uKG9w
ZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSksIHBhcmFtcyksIHR5cGUp
OwogICAgIH0KIAogICAgIEFyZ3VtZW50c05vZGUqIGNyZWF0ZUFyZ3VtZW50cygpIHsgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudHNOb2RlKCk7IH0KICAgICBBcmd1bWVudHNOb2Rl
KiBjcmVhdGVBcmd1bWVudHMoQXJndW1lbnRMaXN0Tm9kZSogYXJncykgeyByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIEFyZ3VtZW50c05vZGUoYXJncyk7IH0KLSAgICBBcmd1bWVudExpc3ROb2Rl
KiBjcmVhdGVBcmd1bWVudHNMaXN0KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYXJn
KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQXJndW1lbnRMaXN0Tm9kZShsaW5lTnVtYmVy
LCBhcmcpOyB9Ci0gICAgQXJndW1lbnRMaXN0Tm9kZSogY3JlYXRlQXJndW1lbnRzTGlzdChpbnQg
bGluZU51bWJlciwgQXJndW1lbnRMaXN0Tm9kZSogYXJncywgRXhwcmVzc2lvbk5vZGUqIGFyZykg
eyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobGluZU51bWJlciwg
YXJncywgYXJnKTsgfQorICAgIEFyZ3VtZW50TGlzdE5vZGUqIGNyZWF0ZUFyZ3VtZW50c0xpc3Qo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGFyZykgeyBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFyZ3VtZW50TGlzdE5vZGUobG9jYXRpb24sIGFyZyk7
IH0KKyAgICBBcmd1bWVudExpc3ROb2RlKiBjcmVhdGVBcmd1bWVudHNMaXN0KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEFyZ3VtZW50TGlzdE5vZGUqIGFyZ3MsIEV4cHJlc3Npb25O
b2RlKiBhcmcpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBcmd1bWVudExpc3ROb2RlKGxv
Y2F0aW9uLCBhcmdzLCBhcmcpOyB9CiAKICAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2Rl
KiBjcmVhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUsIEV4cHJlc3Np
b25Ob2RlKiBub2RlLCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSkKICAgICB7CkBAIC0yOTQsOCAr
Mjk0LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFByb3Bl
cnR5Tm9kZShtX2dsb2JhbERhdGEsICpwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUpOwogICAgIH0K
ICAgICB0ZW1wbGF0ZSA8Ym9vbD4gUHJvcGVydHlOb2RlKiBjcmVhdGVQcm9wZXJ0eShKU0dsb2Jh
bERhdGEqLCBkb3VibGUgcHJvcGVydHlOYW1lLCBFeHByZXNzaW9uTm9kZSogbm9kZSwgUHJvcGVy
dHlOb2RlOjpUeXBlIHR5cGUpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eU5v
ZGUobV9nbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIG5vZGUsIHR5cGUpOyB9Ci0gICAgUHJvcGVy
dHlMaXN0Tm9kZSogY3JlYXRlUHJvcGVydHlMaXN0KGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5v
ZGUqIHByb3BlcnR5KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVydHlMaXN0Tm9k
ZShsaW5lTnVtYmVyLCBwcm9wZXJ0eSk7IH0KLSAgICBQcm9wZXJ0eUxpc3ROb2RlKiBjcmVhdGVQ
cm9wZXJ0eUxpc3QoaW50IGxpbmVOdW1iZXIsIFByb3BlcnR5Tm9kZSogcHJvcGVydHksIFByb3Bl
cnR5TGlzdE5vZGUqIHRhaWwpIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcm9wZXJ0eUxp
c3ROb2RlKGxpbmVOdW1iZXIsIHByb3BlcnR5LCB0YWlsKTsgfQorICAgIFByb3BlcnR5TGlzdE5v
ZGUqIGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBQ
cm9wZXJ0eU5vZGUqIHByb3BlcnR5KSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJvcGVy
dHlMaXN0Tm9kZShsb2NhdGlvbiwgcHJvcGVydHkpOyB9CisgICAgUHJvcGVydHlMaXN0Tm9kZSog
Y3JlYXRlUHJvcGVydHlMaXN0KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFByb3Bl
cnR5Tm9kZSogcHJvcGVydHksIFByb3BlcnR5TGlzdE5vZGUqIHRhaWwpIHsgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBQcm9wZXJ0eUxpc3ROb2RlKGxvY2F0aW9uLCBwcm9wZXJ0eSwgdGFpbCk7
IH0KIAogICAgIEVsZW1lbnROb2RlKiBjcmVhdGVFbGVtZW50TGlzdChpbnQgZWxpc2lvbnMsIEV4
cHJlc3Npb25Ob2RlKiBleHByKSB7IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRWxlbWVudE5v
ZGUoZWxpc2lvbnMsIGV4cHIpOyB9CiAgICAgRWxlbWVudE5vZGUqIGNyZWF0ZUVsZW1lbnRMaXN0
KEVsZW1lbnROb2RlKiBlbGVtcywgaW50IGVsaXNpb25zLCBFeHByZXNzaW9uTm9kZSogZXhwcikg
eyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVsZW1lbnROb2RlKGVsZW1zLCBlbGlzaW9ucywg
ZXhwcik7IH0KQEAgLTMwOSwxOTEgKzMwOSwxOTEgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRV
c2VzQXJndW1lbnRzKEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUpIHsgbm9kZS0+c2V0VXNlc0FyZ3Vt
ZW50cygpOyB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGdW5jRGVjbFN0YXRlbWVudChp
bnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSog
Ym9keSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFjZVBvcywgaW50IGNs
b3NlQnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCisgICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRnVuY3Rpb25Cb2R5Tm9kZSogYm9k
eSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVycywgaW50IG9wZW5CcmFjZVBvcywgaW50IGNsb3Nl
QnJhY2VQb3MsIGludCBib2R5U3RhcnRMaW5lLCBpbnQgYm9keUVuZExpbmUpCiAgICAgewotICAg
ICAgICBGdW5jRGVjbE5vZGUqIGRlY2wgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY0RlY2xOb2Rl
KGxpbmVOdW1iZXIsICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3Bl
bkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7Cisg
ICAgICAgIEZ1bmNEZWNsTm9kZSogZGVjbCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRGVjbE5v
ZGUobG9jYXRpb24sICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24ob3Bl
bkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7CiAg
ICAgICAgIGlmICgqbmFtZSA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3VtZW50
cykKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKICAgICAgICAgbV9zY29wZS5tX2Z1bmNE
ZWNsYXJhdGlvbnMtPmRhdGEuYXBwZW5kKGRlY2wtPmJvZHkoKSk7Ci0gICAgICAgIGJvZHktPnNl
dExvYyhib2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSk7CisgICAgICAgIGJvZHktPnNldExvYyhi
b2R5U3RhcnRMaW5lLCBib2R5RW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0
dXJuIGRlY2w7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQmxvY2tTdGF0ZW1l
bnQoaW50IGxpbmVOdW1iZXIsIEpTQzo6U291cmNlRWxlbWVudHMqIGVsZW1lbnRzLCBpbnQgc3Rh
cnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVCbG9ja1N0YXRl
bWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBKU0M6OlNvdXJjZUVsZW1lbnRz
KiBlbGVtZW50cywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBC
bG9ja05vZGUqIGJsb2NrID0gbmV3IChtX2dsb2JhbERhdGEpIEJsb2NrTm9kZShsaW5lTnVtYmVy
LCBlbGVtZW50cyk7Ci0gICAgICAgIGJsb2NrLT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsK
KyAgICAgICAgQmxvY2tOb2RlKiBibG9jayA9IG5ldyAobV9nbG9iYWxEYXRhKSBCbG9ja05vZGUo
bG9jYXRpb24sIGVsZW1lbnRzKTsKKyAgICAgICAgYmxvY2stPnNldExvYyhzdGFydExpbmUsIGVu
ZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiBibG9jazsKICAgICB9CiAK
LSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVFeHByU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBpbnQgZW5kKQorICAgIFN0YXRlbWVudE5v
ZGUqIGNyZWF0ZUV4cHJTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAg
IEV4cHJTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRXhwclN0YXRl
bWVudE5vZGUobGluZU51bWJlciwgZXhwcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0
LCBlbmQpOworICAgICAgICBFeHByU3RhdGVtZW50Tm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2Jh
bERhdGEpIEV4cHJTdGF0ZW1lbnROb2RlKGxvY2F0aW9uLCBleHByKTsKKyAgICAgICAgcmVzdWx0
LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVJZlN0YXRlbWVudChpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogdHJ1
ZUJsb2NrLCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlSWZT
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogdHJ1ZUJsb2NrLCBpbnQgc3RhcnQsIGludCBlbmQp
CiAgICAgewotICAgICAgICBJZk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBJZk5v
ZGUobGluZU51bWJlciwgY29uZGl0aW9uLCB0cnVlQmxvY2spOwotICAgICAgICByZXN1bHQtPnNl
dExvYyhzdGFydCwgZW5kKTsKKyAgICAgICAgSWZOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgSWZOb2RlKGxvY2F0aW9uLCBjb25kaXRpb24sIHRydWVCbG9jayk7CisgICAgICAgIHJl
c3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlSWZTdGF0ZW1lbnQo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUq
IHRydWVCbG9jaywgU3RhdGVtZW50Tm9kZSogZmFsc2VCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5k
KQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUlmU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUq
IHRydWVCbG9jaywgU3RhdGVtZW50Tm9kZSogZmFsc2VCbG9jaywgaW50IHN0YXJ0LCBpbnQgZW5k
KQogICAgIHsKLSAgICAgICAgSWZOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSWZF
bHNlTm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24sIHRydWVCbG9jaywgZmFsc2VCbG9jayk7Ci0g
ICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQpOworICAgICAgICBJZk5vZGUqIHJlc3Vs
dCA9IG5ldyAobV9nbG9iYWxEYXRhKSBJZkVsc2VOb2RlKGxvY2F0aW9uLCBjb25kaXRpb24sIHRy
dWVCbG9jaywgZmFsc2VCbG9jayk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0LCBlbmQs
IGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAg
U3RhdGVtZW50Tm9kZSogY3JlYXRlRm9yTG9vcChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5v
ZGUqIGluaXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBFeHByZXNzaW9uTm9k
ZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZW5kKQor
ICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGluaXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogY29u
ZGl0aW9uLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywg
aW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgRm9yTm9kZSogcmVzdWx0ID0gbmV3
IChtX2dsb2JhbERhdGEpIEZvck5vZGUobGluZU51bWJlciwgaW5pdGlhbGl6ZXIsIGNvbmRpdGlv
biwgaXRlciwgc3RhdGVtZW50cyk7CisgICAgICAgIEZvck5vZGUqIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBGb3JOb2RlKGxvY2F0aW9uLCBpbml0aWFsaXplciwgY29uZGl0aW9uLCBpdGVy
LCBzdGF0ZW1lbnRzKTsKICAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnQsIGVuZCk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRm9y
SW5Mb29wKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgRXhwcmVzc2lv
bk5vZGUqIGluaXRpYWxpemVyLCBFeHByZXNzaW9uTm9kZSogaXRlciwgU3RhdGVtZW50Tm9kZSog
c3RhdGVtZW50cywgaW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQsIGludCBpbml0U3RhcnQs
IGludCBpbml0RW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnRO
b2RlKiBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29u
c3QgSWRlbnRpZmllciogaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplciwgRXhwcmVz
c2lvbk5vZGUqIGl0ZXIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudHMsIGludCBzdGFydCwgaW50
IGRpdm90LCBpbnQgZW5kLCBpbnQgaW5pdFN0YXJ0LCBpbnQgaW5pdEVuZCwgaW50IHN0YXJ0TGlu
ZSwgaW50IGVuZExpbmUpCiAgICAgewotICAgICAgICBGb3JJbk5vZGUqIHJlc3VsdCA9IG5ldyAo
bV9nbG9iYWxEYXRhKSBGb3JJbk5vZGUobV9nbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCAqaWRlbnQs
IGluaXRpYWxpemVyLCBpdGVyLCBzdGF0ZW1lbnRzLCBpbml0U3RhcnQsIGluaXRTdGFydCAtIHN0
YXJ0LCBpbml0RW5kIC0gaW5pdFN0YXJ0KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lKTsKKyAgICAgICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFs
RGF0YSkgRm9ySW5Ob2RlKG1fZ2xvYmFsRGF0YSwgbG9jYXRpb24sICppZGVudCwgaW5pdGlhbGl6
ZXIsIGl0ZXIsIHN0YXRlbWVudHMsIGluaXRTdGFydCwgaW5pdFN0YXJ0IC0gc3RhcnQsIGluaXRF
bmQgLSBpbml0U3RhcnQpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExp
bmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3Vs
dCwgc3RhcnQsIGRpdm90ICsgMSwgZW5kKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVGb3JJbkxvb3AoaW50IGxpbmVOdW1iZXIsIEV4
cHJlc3Npb25Ob2RlKiBsaHMsIEV4cHJlc3Npb25Ob2RlKiBpdGVyLCBTdGF0ZW1lbnROb2RlKiBz
dGF0ZW1lbnRzLCBpbnQgZVN0YXJ0LCBpbnQgZURpdm90LCBpbnQgZUVuZCwgaW50IHN0YXJ0LCBp
bnQgZW5kKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUZvckluTG9vcChjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogbGhzLCBFeHByZXNzaW9uTm9kZSog
aXRlciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50cywgaW50IGVTdGFydCwgaW50IGVEaXZvdCwg
aW50IGVFbmQsIGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIEZvckluTm9kZSog
cmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIEZvckluTm9kZShsaW5lTnVtYmVyLCBsaHMsIGl0
ZXIsIHN0YXRlbWVudHMpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwgZW5kKTsKKyAg
ICAgICAgRm9ySW5Ob2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRm9ySW5Ob2RlKGxv
Y2F0aW9uLCBsaHMsIGl0ZXIsIHN0YXRlbWVudHMpOworICAgICAgICByZXN1bHQtPnNldExvYyhz
dGFydCwgZW5kLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICBzZXRFeGNlcHRpb25Mb2NhdGlv
bihyZXN1bHQsIGVTdGFydCwgZURpdm90LCBlRW5kKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVFbXB0eVN0YXRlbWVudChpbnQgbGlu
ZU51bWJlcikgeyByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVtcHR5U3RhdGVtZW50Tm9kZShs
aW5lTnVtYmVyKTsgfQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUVtcHR5U3RhdGVtZW50KGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pIHsgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBFbXB0eVN0YXRlbWVudE5vZGUobG9jYXRpb24pOyB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBj
cmVhdGVWYXJTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBp
bnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlVmFyU3RhdGVtZW50
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBp
bnQgc3RhcnQsIGludCBlbmQpCiAgICAgewogICAgICAgICBTdGF0ZW1lbnROb2RlKiByZXN1bHQ7
CiAgICAgICAgIGlmICghZXhwcikKLSAgICAgICAgICAgIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxE
YXRhKSBFbXB0eVN0YXRlbWVudE5vZGUobGluZU51bWJlcik7CisgICAgICAgICAgICByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgRW1wdHlTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFZhclN0YXRl
bWVudE5vZGUobGluZU51bWJlciwgZXhwcik7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0
LCBlbmQpOworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIFZhclN0YXRl
bWVudE5vZGUobG9jYXRpb24sIGV4cHIpOworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydCwg
ZW5kLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAot
ICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVJldHVyblN0YXRlbWVudChpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHJlc3Npb24sIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3Rh
cnRMaW5lLCBpbnQgZW5kTGluZSkKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVSZXR1cm5TdGF0
ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHJlc3Npb24sIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGlu
ZSkKICAgICB7Ci0gICAgICAgIFJldHVybk5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRh
KSBSZXR1cm5Ob2RlKGxpbmVOdW1iZXIsIGV4cHJlc3Npb24pOworICAgICAgICBSZXR1cm5Ob2Rl
KiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmV0dXJuTm9kZShsb2NhdGlvbiwgZXhwcmVz
c2lvbik7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5k
LCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAg
ICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4p
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNy
ZWF0ZUJyZWFrU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwg
aW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQnJl
YWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50IGVTdGFydCwg
aW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQnJl
YWtOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQnJlYWtOb2RlKG1fZ2xvYmFsRGF0
YSwgbGluZU51bWJlcik7CisgICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2Jh
bERhdGEpIEJyZWFrTm9kZShtX2dsb2JhbERhdGEsIGxvY2F0aW9uKTsKICAgICAgICAgc2V0RXhj
ZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQpOwotICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXN1bHQtPnNldExvYyhz
dGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50
IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQgZVN0YXJ0LCBpbnQgZUVu
ZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRl
QnJlYWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRl
bnRpZmllciogaWRlbnQsIGludCBlU3RhcnQsIGludCBlRW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQg
ZW5kTGluZSkKICAgICB7Ci0gICAgICAgIEJyZWFrTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2Jh
bERhdGEpIEJyZWFrTm9kZShsaW5lTnVtYmVyLCAqaWRlbnQpOworICAgICAgICBCcmVha05vZGUq
IHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBCcmVha05vZGUobG9jYXRpb24sICppZGVudCk7
CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5k
KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAg
cmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNv
bnRpbnVlU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBpbnQgZVN0YXJ0LCBpbnQgZUVuZCwgaW50
IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGlu
dWVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50IGVTdGFydCwg
aW50IGVFbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQ29u
dGludWVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29udGludWVOb2RlKG1fZ2xv
YmFsRGF0YSwgbGluZU51bWJlcik7CisgICAgICAgIENvbnRpbnVlTm9kZSogcmVzdWx0ID0gbmV3
IChtX2dsb2JhbERhdGEpIENvbnRpbnVlTm9kZShtX2dsb2JhbERhdGEsIGxvY2F0aW9uKTsKICAg
ICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24ocmVzdWx0LCBlU3RhcnQsIGVFbmQsIGVFbmQpOwot
ICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29udGlu
dWVTdGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBpbnQg
ZVN0YXJ0LCBpbnQgZUVuZCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlQ29udGludWVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIGludCBlU3RhcnQsIGludCBlRW5kLCBp
bnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAgIENvbnRpbnVlTm9kZSog
cmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENvbnRpbnVlTm9kZShsaW5lTnVtYmVyLCAqaWRl
bnQpOworICAgICAgICBDb250aW51ZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBD
b250aW51ZU5vZGUobG9jYXRpb24sICppZGVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0
aW9uKHJlc3VsdCwgZVN0YXJ0LCBlRW5kLCBlRW5kKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Mo
c3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBl
bmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
IAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVRyeVN0YXRlbWVudChpbnQgbGluZU51bWJlciwg
U3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBTdGF0ZW1l
bnROb2RlKiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2ssIGludCBzdGFy
dExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVRyeVN0YXRlbWVu
dChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnlCbG9j
aywgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUqIGNhdGNoQmxvY2ssIFN0
YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jaywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCiAg
ICAgewotICAgICAgICBUcnlOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgVHJ5Tm9k
ZShsaW5lTnVtYmVyLCB0cnlCbG9jaywgKmlkZW50LCBjYXRjaEJsb2NrLCBmaW5hbGx5QmxvY2sp
OworICAgICAgICBUcnlOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgVHJ5Tm9kZShs
b2NhdGlvbiwgdHJ5QmxvY2ssICppZGVudCwgY2F0Y2hCbG9jaywgZmluYWxseUJsb2NrKTsKICAg
ICAgICAgaWYgKGNhdGNoQmxvY2spCiAgICAgICAgICAgICB1c2VzQ2F0Y2goKTsKLSAgICAgICAg
cmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZVN3aXRjaFN0YXRlbWVu
dChpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIENsYXVzZUxpc3ROb2RlKiBm
aXJzdENsYXVzZXMsIENhc2VDbGF1c2VOb2RlKiBkZWZhdWx0Q2xhdXNlLCBDbGF1c2VMaXN0Tm9k
ZSogc2Vjb25kQ2xhdXNlcywgaW50IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVt
ZW50Tm9kZSogY3JlYXRlU3dpdGNoU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBDbGF1c2VMaXN0Tm9kZSogZmlyc3RDbGF1c2Vz
LCBDYXNlQ2xhdXNlTm9kZSogZGVmYXVsdENsYXVzZSwgQ2xhdXNlTGlzdE5vZGUqIHNlY29uZENs
YXVzZXMsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKICAgICAgICAgQ2FzZUJs
b2NrTm9kZSogY2FzZXMgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ2FzZUJsb2NrTm9kZShmaXJzdENs
YXVzZXMsIGRlZmF1bHRDbGF1c2UsIHNlY29uZENsYXVzZXMpOwotICAgICAgICBTd2l0Y2hOb2Rl
KiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgU3dpdGNoTm9kZShsaW5lTnVtYmVyLCBleHBy
LCBjYXNlcyk7Ci0gICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSk7Cisg
ICAgICAgIFN3aXRjaE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBTd2l0Y2hOb2Rl
KGxvY2F0aW9uLCBleHByLCBjYXNlcyk7CisgICAgICAgIHJlc3VsdC0+c2V0TG9jKHN0YXJ0TGlu
ZSwgZW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaGlsZVN0YXRlbWVudChpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50
IHN0YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlV2hpbGVT
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExp
bmUpCiAgICAgewotICAgICAgICBXaGlsZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRh
KSBXaGlsZU5vZGUobGluZU51bWJlciwgZXhwciwgc3RhdGVtZW50KTsKLSAgICAgICAgcmVzdWx0
LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAgV2hpbGVOb2RlKiByZXN1bHQg
PSBuZXcgKG1fZ2xvYmFsRGF0YSkgV2hpbGVOb2RlKGxvY2F0aW9uLCBleHByLCBzdGF0ZW1lbnQp
OworICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNv
bHVtbik7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9k
ZSogY3JlYXRlRG9XaGlsZVN0YXRlbWVudChpbnQgbGluZU51bWJlciwgU3RhdGVtZW50Tm9kZSog
c3RhdGVtZW50LCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0TGluZSwgaW50IGVuZExp
bmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRG9XaGlsZVN0YXRlbWVudChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIEV4cHJlc3Np
b25Ob2RlKiBleHByLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7Ci0gICAgICAg
IERvV2hpbGVOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRG9XaGlsZU5vZGUobGlu
ZU51bWJlciwgc3RhdGVtZW50LCBleHByKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRM
aW5lLCBlbmRMaW5lKTsKKyAgICAgICAgRG9XaGlsZU5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9i
YWxEYXRhKSBEb1doaWxlTm9kZShsb2NhdGlvbiwgc3RhdGVtZW50LCBleHByKTsKKyAgICAgICAg
cmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUxh
YmVsU3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgU3Rh
dGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgc3RhcnQsIGludCBlbmQpCisgICAgU3RhdGVtZW50
Tm9kZSogY3JlYXRlTGFiZWxTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgY29uc3QgSWRlbnRpZmllciogaWRlbnQsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50
IHN0YXJ0LCBpbnQgZW5kKQogICAgIHsKLSAgICAgICAgTGFiZWxOb2RlKiByZXN1bHQgPSBuZXcg
KG1fZ2xvYmFsRGF0YSkgTGFiZWxOb2RlKGxpbmVOdW1iZXIsICppZGVudCwgc3RhdGVtZW50KTsK
KyAgICAgICAgTGFiZWxOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgTGFiZWxOb2Rl
KGxvY2F0aW9uLCAqaWRlbnQsIHN0YXRlbWVudCk7CiAgICAgICAgIHNldEV4Y2VwdGlvbkxvY2F0
aW9uKHJlc3VsdCwgc3RhcnQsIGVuZCwgZW5kKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKLSAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVXaXRoU3RhdGVtZW50KGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBpbnQg
c3RhcnQsIGludCBlbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZVdpdGhTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCwgaW50IHN0
YXJ0LCBpbnQgZW5kLCBpbnQgc3RhcnRMaW5lLCBpbnQgZW5kTGluZSkKICAgICB7CiAgICAgICAg
IHVzZXNXaXRoKCk7Ci0gICAgICAgIFdpdGhOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0
YSkgV2l0aE5vZGUobGluZU51bWJlciwgZXhwciwgc3RhdGVtZW50LCBlbmQsIGVuZCAtIHN0YXJ0
KTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICAgICAg
V2l0aE5vZGUqIHJlc3VsdCA9IG5ldyAobV9nbG9iYWxEYXRhKSBXaXRoTm9kZShsb2NhdGlvbiwg
ZXhwciwgc3RhdGVtZW50LCBlbmQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgcmVzdWx0LT5zZXRM
b2Moc3RhcnRMaW5lLCBlbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0gICAgCiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlVGhyb3dT
dGF0ZW1lbnQoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQs
IGludCBlbmQsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0YXRlbWVudE5vZGUq
IGNyZWF0ZVRocm93U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4
cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBlbmQsIGludCBzdGFydExpbmUsIGlu
dCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgVGhyb3dOb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgVGhyb3dOb2RlKGxpbmVOdW1iZXIsIGV4cHIpOwotICAgICAgICByZXN1bHQtPnNl
dExvYyhzdGFydExpbmUsIGVuZExpbmUpOworICAgICAgICBUaHJvd05vZGUqIHJlc3VsdCA9IG5l
dyAobV9nbG9iYWxEYXRhKSBUaHJvd05vZGUobG9jYXRpb24sIGV4cHIpOworICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAg
IHNldEV4Y2VwdGlvbkxvY2F0aW9uKHJlc3VsdCwgc3RhcnQsIGVuZCwgZW5kKTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRGVi
dWdnZXIoaW50IGxpbmVOdW1iZXIsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQorICAgIFN0
YXRlbWVudE5vZGUqIGNyZWF0ZURlYnVnZ2VyKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgRGVidWdnZXJT
dGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVidWdnZXJTdGF0ZW1l
bnROb2RlKGxpbmVOdW1iZXIpOwotICAgICAgICByZXN1bHQtPnNldExvYyhzdGFydExpbmUsIGVu
ZExpbmUpOworICAgICAgICBEZWJ1Z2dlclN0YXRlbWVudE5vZGUqIHJlc3VsdCA9IG5ldyAobV9n
bG9iYWxEYXRhKSBEZWJ1Z2dlclN0YXRlbWVudE5vZGUobG9jYXRpb24pOworICAgICAgICByZXN1
bHQtPnNldExvYyhzdGFydExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLmNvbHVtbik7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUNv
bnN0U3RhdGVtZW50KGludCBsaW5lTnVtYmVyLCBDb25zdERlY2xOb2RlKiBkZWNscywgaW50IHN0
YXJ0TGluZSwgaW50IGVuZExpbmUpCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlQ29uc3RTdGF0
ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQ29uc3REZWNsTm9kZSogZGVj
bHMsIGludCBzdGFydExpbmUsIGludCBlbmRMaW5lKQogICAgIHsKLSAgICAgICAgQ29uc3RTdGF0
ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ29uc3RTdGF0ZW1lbnROb2Rl
KGxpbmVOdW1iZXIsIGRlY2xzKTsKLSAgICAgICAgcmVzdWx0LT5zZXRMb2Moc3RhcnRMaW5lLCBl
bmRMaW5lKTsKKyAgICAgICAgQ29uc3RTdGF0ZW1lbnROb2RlKiByZXN1bHQgPSBuZXcgKG1fZ2xv
YmFsRGF0YSkgQ29uc3RTdGF0ZW1lbnROb2RlKGxvY2F0aW9uLCBkZWNscyk7CisgICAgICAgIHJl
c3VsdC0+c2V0TG9jKHN0YXJ0TGluZSwgZW5kTGluZSwgbG9jYXRpb24uY29sdW1uKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBDb25zdERlY2xOb2RlKiBhcHBlbmRDb25z
dERlY2woaW50IGxpbmVOdW1iZXIsIENvbnN0RGVjbE5vZGUqIHRhaWwsIGNvbnN0IElkZW50aWZp
ZXIqIG5hbWUsIEV4cHJlc3Npb25Ob2RlKiBpbml0aWFsaXplcikKKyAgICBDb25zdERlY2xOb2Rl
KiBhcHBlbmRDb25zdERlY2woY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQ29uc3RE
ZWNsTm9kZSogdGFpbCwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgRXhwcmVzc2lvbk5vZGUqIGlu
aXRpYWxpemVyKQogICAgIHsKLSAgICAgICAgQ29uc3REZWNsTm9kZSogcmVzdWx0ID0gbmV3ICht
X2dsb2JhbERhdGEpIENvbnN0RGVjbE5vZGUobGluZU51bWJlciwgKm5hbWUsIGluaXRpYWxpemVy
KTsKKyAgICAgICAgQ29uc3REZWNsTm9kZSogcmVzdWx0ID0gbmV3IChtX2dsb2JhbERhdGEpIENv
bnN0RGVjbE5vZGUobG9jYXRpb24sICpuYW1lLCBpbml0aWFsaXplcik7CiAgICAgICAgIGlmICh0
YWlsKQogICAgICAgICAgICAgdGFpbC0+bV9uZXh0ID0gcmVzdWx0OwogICAgICAgICByZXR1cm4g
cmVzdWx0OwpAQCAtNTExLDcgKzUxMSw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9zY29wZS5tX3Zh
ckRlY2xhcmF0aW9ucy0+ZGF0YS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaWRlbnQsIGF0dHJzKSk7
CiAgICAgfQogCi0gICAgRXhwcmVzc2lvbk5vZGUqIGNvbWJpbmVDb21tYU5vZGVzKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbGlzdCwgRXhwcmVzc2lvbk5vZGUqIGluaXQpCisgICAg
RXhwcmVzc2lvbk5vZGUqIGNvbWJpbmVDb21tYU5vZGVzKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsaXN0LCBFeHByZXNzaW9uTm9kZSogaW5pdCkKICAg
ICB7CiAgICAgICAgIGlmICghbGlzdCkKICAgICAgICAgICAgIHJldHVybiBpbml0OwpAQCAtNTE5
LDcgKzUxOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHN0YXRpY19jYXN0PENvbW1hTm9kZSo+
KGxpc3QpLT5hcHBlbmQoaW5pdCk7CiAgICAgICAgICAgICByZXR1cm4gbGlzdDsKICAgICAgICAg
fQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIENvbW1hTm9kZShsaW5lTnVtYmVy
LCBsaXN0LCBpbml0KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBDb21tYU5v
ZGUobG9jYXRpb24sIGxpc3QsIGluaXQpOwogICAgIH0KIAogICAgIGludCBldmFsQ291bnQoKSBj
b25zdCB7IHJldHVybiBtX2V2YWxDb3VudDsgfQpAQCAtNTQ3LDEwICs1NDcsMTAgQEAgcHVibGlj
OgogICAgICAgICBBU1NFUlQob3BlcmFuZFN0YWNrRGVwdGggPj0gMCk7CiAgICAgICAgIG1fYmlu
YXJ5T3BlcmFuZFN0YWNrLnJlc2l6ZShtX2JpbmFyeU9wZXJhbmRTdGFjay5zaXplKCkgLSBhbW91
bnQpOwogICAgIH0KLSAgICB2b2lkIGFwcGVuZEJpbmFyeU9wZXJhdGlvbihpbnQgbGluZU51bWJl
ciwgaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50JiwgY29uc3QgQmluYXJ5T3BlcmFuZCYgbGhz
LCBjb25zdCBCaW5hcnlPcGVyYW5kJiByaHMpCisgICAgdm9pZCBhcHBlbmRCaW5hcnlPcGVyYXRp
b24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50JiBvcGVyYW5kU3RhY2tEZXB0
aCwgaW50JiwgY29uc3QgQmluYXJ5T3BlcmFuZCYgbGhzLCBjb25zdCBCaW5hcnlPcGVyYW5kJiBy
aHMpCiAgICAgewogICAgICAgICBvcGVyYW5kU3RhY2tEZXB0aCsrOwotICAgICAgICBtX2JpbmFy
eU9wZXJhbmRTdGFjay5hcHBlbmQoc3RkOjptYWtlX3BhaXIobWFrZUJpbmFyeU5vZGUobGluZU51
bWJlciwgbV9iaW5hcnlPcGVyYXRvclN0YWNrLmxhc3QoKS5maXJzdCwgbGhzLCByaHMpLCBCaW5h
cnlPcEluZm8obGhzLnNlY29uZCwgcmhzLnNlY29uZCkpKTsKKyAgICAgICAgbV9iaW5hcnlPcGVy
YW5kU3RhY2suYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG1ha2VCaW5hcnlOb2RlKGxvY2F0aW9uLCBt
X2JpbmFyeU9wZXJhdG9yU3RhY2subGFzdCgpLmZpcnN0LCBsaHMsIHJocyksIEJpbmFyeU9wSW5m
byhsaHMuc2Vjb25kLCByaHMuc2Vjb25kKSkpOwogICAgIH0KICAgICB2b2lkIG9wZXJhdG9yU3Rh
Y2tBcHBlbmQoaW50JiBvcGVyYXRvclN0YWNrRGVwdGgsIGludCBvcCwgaW50IHByZWNlZGVuY2Up
CiAgICAgewpAQCAtNTkyLDkgKzU5Miw5IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NpZ25tZW50
SW5mb1N0YWNrLmFwcGVuZChBc3NpZ25tZW50SW5mbyhub2RlLCBzdGFydCwgZGl2b3QsIGFzc2ln
bm1lbnRDb3VudCwgb3ApKTsKICAgICB9CiAKLSAgICBFeHByZXNzaW9uTm9kZSogY3JlYXRlQXNz
aWdubWVudChpbnQgbGluZU51bWJlciwgaW50JiBhc3NpZ25tZW50U3RhY2tEZXB0aCwgRXhwcmVz
c2lvbk5vZGUqIHJocywgaW50IGluaXRpYWxBc3NpZ25tZW50Q291bnQsIGludCBjdXJyZW50QXNz
aWdubWVudENvdW50LCBpbnQgbGFzdFRva2VuRW5kKQorICAgIEV4cHJlc3Npb25Ob2RlKiBjcmVh
dGVBc3NpZ25tZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCYgYXNzaWdu
bWVudFN0YWNrRGVwdGgsIEV4cHJlc3Npb25Ob2RlKiByaHMsIGludCBpbml0aWFsQXNzaWdubWVu
dENvdW50LCBpbnQgY3VycmVudEFzc2lnbm1lbnRDb3VudCwgaW50IGxhc3RUb2tlbkVuZCkKICAg
ICB7Ci0gICAgICAgIEV4cHJlc3Npb25Ob2RlKiByZXN1bHQgPSBtYWtlQXNzaWduTm9kZShsaW5l
TnVtYmVyLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fbm9kZSwgbV9hc3NpZ25tZW50
SW5mb1N0YWNrLmxhc3QoKS5tX29wLCByaHMsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCku
bV9pbml0QXNzaWdubWVudHMgIT0gaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50
SW5mb1N0YWNrLmxhc3QoKS5tX2luaXRBc3NpZ25tZW50cyAhPSBjdXJyZW50QXNzaWdubWVudENv
dW50LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fc3RhcnQsIG1fYXNzaWdubWVudElu
Zm9TdGFjay5sYXN0KCkubV9kaXZvdCArIDEsIGxhc3RUb2tlbkVuZCk7CisgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiByZXN1bHQgPSBtYWtlQXNzaWduTm9kZShsb2NhdGlvbiwgbV9hc3NpZ25tZW50
SW5mb1N0YWNrLmxhc3QoKS5tX25vZGUsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9v
cCwgcmhzLCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1faW5pdEFzc2lnbm1lbnRzICE9
IGluaXRpYWxBc3NpZ25tZW50Q291bnQsIG1fYXNzaWdubWVudEluZm9TdGFjay5sYXN0KCkubV9p
bml0QXNzaWdubWVudHMgIT0gY3VycmVudEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50SW5m
b1N0YWNrLmxhc3QoKS5tX3N0YXJ0LCBtX2Fzc2lnbm1lbnRJbmZvU3RhY2subGFzdCgpLm1fZGl2
b3QgKyAxLCBsYXN0VG9rZW5FbmQpOwogICAgICAgICBtX2Fzc2lnbm1lbnRJbmZvU3RhY2sucmVt
b3ZlTGFzdCgpOwogICAgICAgICBhc3NpZ25tZW50U3RhY2tEZXB0aC0tOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwpAQCAtNjM1LDkgKzYzNSw5IEBAIHByaXZhdGU6CiAgICAgICAgIG1fZXZhbENv
dW50Kys7CiAgICAgICAgIG1fc2NvcGUubV9mZWF0dXJlcyB8PSBFdmFsRmVhdHVyZTsKICAgICB9
Ci0gICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bWJlcihpbnQgbGluZU51bWJlciwgZG91Ymxl
IGQpCisgICAgRXhwcmVzc2lvbk5vZGUqIGNyZWF0ZU51bWJlcihjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBkb3VibGUgZCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgTnVtYmVyTm9kZShsaW5lTnVtYmVyLCBkKTsKKyAgICAgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBOdW1iZXJOb2RlKGxvY2F0aW9uLCBkKTsKICAgICB9CiAgICAgCiAgICAg
SlNHbG9iYWxEYXRhKiBtX2dsb2JhbERhdGE7CkBAIC02NTAsMzMgKzY1MCwzMyBAQCBwcml2YXRl
OgogICAgIGludCBtX2V2YWxDb3VudDsKIH07CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVy
OjptYWtlVHlwZU9mTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCitF
eHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVR5cGVPZk5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCiB7CiAgICAgaWYgKGV4cHIt
PmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRp
Y19jYXN0PFJlc29sdmVOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgVHlwZU9mUmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigp
KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUeXBlT2ZSZXNvbHZlTm9kZShs
b2NhdGlvbiwgcmVzb2x2ZS0+aWRlbnRpZmllcigpKTsKICAgICB9Ci0gICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBUeXBlT2ZWYWx1ZU5vZGUobGluZU51bWJlciwgZXhwcik7CisgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBUeXBlT2ZWYWx1ZU5vZGUobG9jYXRpb24sIGV4cHIpOwog
fQogCi1FeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZURlbGV0ZU5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVu
ZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGVsZXRlTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgaW50IHN0YXJ0LCBp
bnQgZGl2b3QsIGludCBlbmQpCiB7CiAgICAgaWYgKCFleHByLT5pc0xvY2F0aW9uKCkpCi0gICAg
ICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlVmFsdWVOb2RlKGxpbmVOdW1iZXIs
IGV4cHIpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZVZhbHVlTm9k
ZShsb2NhdGlvbiwgZXhwcik7CiAgICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkgewogICAg
ICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZXhw
cik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlUmVzb2x2ZU5vZGUo
bGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERlbGV0ZVJl
c29sdmVOb2RlKGxvY2F0aW9uLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAt
IHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIGlmIChleHByLT5pc0JyYWNrZXRBY2Nl
c3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3Rh
dGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgICAgICByZXR1cm4gbmV3
IChtX2dsb2JhbERhdGEpIERlbGV0ZUJyYWNrZXROb2RlKGxpbmVOdW1iZXIsIGJyYWNrZXQtPmJh
c2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBk
aXZvdCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgRGVsZXRlQnJhY2tldE5v
ZGUobG9jYXRpb24sIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGRpdm90
LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQogICAgIEFTU0VSVChleHByLT5p
c0RvdEFjY2Vzc29yTm9kZSgpKTsKICAgICBEb3RBY2Nlc3Nvck5vZGUqIGRvdCA9IHN0YXRpY19j
YXN0PERvdEFjY2Vzc29yTm9kZSo+KGV4cHIpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0
YSkgRGVsZXRlRG90Tm9kZShsaW5lTnVtYmVyLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVy
KCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBEZWxldGVEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5p
ZGVudGlmaWVyKCksIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiB9CiAKLUV4
cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTmVnYXRlTm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIG4pCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZU5lZ2F0
ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIG4p
CiB7CiAgICAgaWYgKG4tPmlzTnVtYmVyKCkpIHsKICAgICAgICAgTnVtYmVyTm9kZSogbnVtYmVy
Tm9kZSA9IHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihuKTsKQEAgLTY4NCwxMjggKzY4NCwxMjgg
QEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VOZWdhdGVOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogbikKICAgICAgICAgcmV0dXJuIG51bWJlck5vZGU7CiAgICAg
fQogCi0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOZWdhdGVOb2RlKGxpbmVOdW1iZXIs
IG4pOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTmVnYXRlTm9kZShsb2NhdGlvbiwg
bik7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0d2lzZU5vdE5vZGUo
aW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorRXhwcmVzc2lvbk5vZGUqIEFT
VEJ1aWxkZXI6Om1ha2VCaXR3aXNlTm90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKIHsKICAgICBpZiAoZXhwci0+aXNOdW1iZXIoKSkK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB+dG9JbnQzMihzdGF0aWNf
Y2FzdDxOdW1iZXJOb2RlKj4oZXhwciktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3IChtX2ds
b2JhbERhdGEpIEJpdHdpc2VOb3ROb2RlKGxpbmVOdW1iZXIsIGV4cHIpOworICAgICAgICByZXR1
cm4gY3JlYXRlTnVtYmVyKGxvY2F0aW9uLCB+dG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2Rl
Kj4oZXhwciktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdHdp
c2VOb3ROb2RlKGxvY2F0aW9uLCBleHByKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxk
ZXI6Om1ha2VNdWx0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Np
b25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlTXVsdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBleHByMSA9IGV4cHIxLT5zdHJpcFVuYXJ5
UGx1cygpOwogICAgIGV4cHIyID0gZXhwcjItPnN0cmlwVW5hcnlQbHVzKCk7CiAKICAgICBpZiAo
ZXhwcjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBj
cmVhdGVOdW1iZXIobGluZU51bWJlciwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+
dmFsdWUoKSAqIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOworICAg
ICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxvY2F0aW9uLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2Rl
Kj4oZXhwcjEpLT52YWx1ZSgpICogc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFs
dWUoKSk7CiAKICAgICBpZiAoZXhwcjEtPmlzTnVtYmVyKCkgJiYgc3RhdGljX2Nhc3Q8TnVtYmVy
Tm9kZSo+KGV4cHIxKS0+dmFsdWUoKSA9PSAxKQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIFVuYXJ5UGx1c05vZGUobGluZU51bWJlciwgZXhwcjIpOworICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIFVuYXJ5UGx1c05vZGUobG9jYXRpb24sIGV4cHIyKTsKIAogICAg
IGlmIChleHByMi0+aXNOdW1iZXIoKSAmJiBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIp
LT52YWx1ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgVW5hcnlQ
bHVzTm9kZShsaW5lTnVtYmVyLCBleHByMSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFs
RGF0YSkgVW5hcnlQbHVzTm9kZShsb2NhdGlvbiwgZXhwcjEpOwogCi0gICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBNdWx0Tm9kZShsaW5lTnVtYmVyLCBleHByMSwgZXhwcjIsIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTXVsdE5vZGUobG9j
YXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Np
b25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGl2Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cykKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlRGl2Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGV4cHIxID0gZXhw
cjEtPnN0cmlwVW5hcnlQbHVzKCk7CiAgICAgZXhwcjIgPSBleHByMi0+c3RyaXBVbmFyeVBsdXMo
KTsKIAogICAgIGlmIChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAg
ICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCBzdGF0aWNfY2FzdDxOdW1iZXJO
b2RlKj4oZXhwcjEpLT52YWx1ZSgpIC8gc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+
dmFsdWUoKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBEaXZOb2RlKGxpbmVOdW1i
ZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBj
cmVhdGVOdW1iZXIobG9jYXRpb24sIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZh
bHVlKCkgLyBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKKyAgICBy
ZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIERpdk5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjpt
YWtlTW9kTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKK0V4cHJlc3Npb25Ob2Rl
KiBBU1RCdWlsZGVyOjptYWtlTW9kTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGV4cHIxID0gZXhwcjEtPnN0cmlwVW5hcnlQbHVzKCk7
CiAgICAgZXhwcjIgPSBleHByMi0+c3RyaXBVbmFyeVBsdXMoKTsKICAgICAKICAgICBpZiAoZXhw
cjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVh
dGVOdW1iZXIobGluZU51bWJlciwgZm1vZChzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEp
LT52YWx1ZSgpLCBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSk7Ci0g
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBNb2ROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBl
eHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIo
bG9jYXRpb24sIGZtb2Qoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSwg
c3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOworICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgTW9kTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhh
c0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBZGRO
b2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1
aWxkZXI6Om1ha2VBZGROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJl
cigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRpY19jYXN0
PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkgKyBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4o
ZXhwcjIpLT52YWx1ZSgpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFkZE5vZGUo
bGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4
cHIxKS0+dmFsdWUoKSArIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkp
OworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQWRkTm9kZShsb2NhdGlvbiwgZXhwcjEs
IGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1
aWxkZXI6Om1ha2VTdWJOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEs
IEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VTdWJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgZXhwcjEgPSBleHByMS0+c3RyaXBVbmFy
eVBsdXMoKTsKICAgICBleHByMiA9IGV4cHIyLT5zdHJpcFVuYXJ5UGx1cygpOwogCiAgICAgaWYg
KGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4g
Y3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSkt
PnZhbHVlKCkgLSBzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKTsKLSAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN1Yk5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4
cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihs
b2NhdGlvbiwgc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSAtIHN0YXRp
Y19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpOworICAgIHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgU3ViTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VMZWZ0U2hpZnRO
b2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1
aWxkZXI6Om1ha2VMZWZ0U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5p
c051bWJlcigpKQotICAgICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50
MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPDwgKHRvVUludDMy
KHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOwotICAg
IHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVmdFNoaWZ0Tm9kZShsaW5lTnVtYmVyLCBleHBy
MSwgZXhwcjIsIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICByZXR1cm4gY3JlYXRlTnVt
YmVyKGxvY2F0aW9uLCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZh
bHVlKCkpIDw8ICh0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1
ZSgpKSAmIDB4MWYpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExlZnRTaGlmdE5v
ZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4
cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1i
ZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVJpZ2h0
U2hpZnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
CiB7CiAgICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAg
ICAgICByZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8
TnVtYmVyTm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgPj4gKHRvVUludDMyKHN0YXRpY19jYXN0PE51
bWJlck5vZGUqPihleHByMiktPnZhbHVlKCkpICYgMHgxZikpOwotICAgIHJldHVybiBuZXcgKG1f
Z2xvYmFsRGF0YSkgUmlnaHRTaGlmdE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwg
dG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSA+PiAodG9V
SW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7
CisgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBSaWdodFNoaWZ0Tm9kZShsb2NhdGlvbiwg
ZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVzc2lvbk5vZGUq
IEFTVEJ1aWxkZXI6Om1ha2VVUmlnaHRTaGlmdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRlcjo6bWFrZVVSaWdodFNoaWZ0Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQogewogICAgIGlm
IChleHByMS0+aXNOdW1iZXIoKSAmJiBleHByMi0+aXNOdW1iZXIoKSkKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZU51bWJlcihsaW5lTnVtYmVyLCB0b1VJbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2Rl
Kj4oZXhwcjEpLT52YWx1ZSgpKSA+PiAodG9VSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIyKS0+dmFsdWUoKSkgJiAweDFmKSk7Ci0gICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBVbnNpZ25lZFJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVybiBjcmVhdGVOdW1iZXIobG9jYXRpb24sIHRv
VUludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHByMSktPnZhbHVlKCkpID4+ICh0b1VJ
bnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhwcjIpLT52YWx1ZSgpKSAmIDB4MWYpKTsK
KyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGUobG9j
YXRpb24sIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiB9CiAKLUV4cHJlc3Np
b25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQml0T3JOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRPck5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKIHsKICAgICBpZiAoZXhw
cjEtPmlzTnVtYmVyKCkgJiYgZXhwcjItPmlzTnVtYmVyKCkpCi0gICAgICAgIHJldHVybiBjcmVh
dGVOdW1iZXIobGluZU51bWJlciwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJOb2RlKj4oZXhw
cjEpLT52YWx1ZSgpKSB8IHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+KGV4cHIyKS0+
dmFsdWUoKSkpOwotICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0T3JOb2RlKGxpbmVO
dW1iZXIsIGV4cHIxLCBleHByMiwgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIHJldHVy
biBjcmVhdGVOdW1iZXIobG9jYXRpb24sIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIxKS0+dmFsdWUoKSkgfCB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHBy
MiktPnZhbHVlKCkpKTsKKyAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdE9yTm9kZShs
b2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAotRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRBbmROb2RlKGludCBsaW5lTnVtYmVyLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRBbmROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAgICAgaWYg
KGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICByZXR1cm4g
Y3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIxKS0+dmFsdWUoKSkgJiB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUqPihleHBy
MiktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdEFuZE5vZGUo
bGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAg
cmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgdG9JbnQzMihzdGF0aWNfY2FzdDxOdW1iZXJO
b2RlKj4oZXhwcjEpLT52YWx1ZSgpKSAmIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVyTm9kZSo+
KGV4cHIyKS0+dmFsdWUoKSkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgQml0QW5k
Tm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIH0KIAot
RXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRYT3JOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaXRYT3JO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCiB7CiAg
ICAgaWYgKGV4cHIxLT5pc051bWJlcigpICYmIGV4cHIyLT5pc051bWJlcigpKQotICAgICAgICBy
ZXR1cm4gY3JlYXRlTnVtYmVyKGxpbmVOdW1iZXIsIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVy
Tm9kZSo+KGV4cHIxKS0+dmFsdWUoKSkgXiB0b0ludDMyKHN0YXRpY19jYXN0PE51bWJlck5vZGUq
PihleHByMiktPnZhbHVlKCkpKTsKLSAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEJpdFhP
ck5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAg
ICAgICAgcmV0dXJuIGNyZWF0ZU51bWJlcihsb2NhdGlvbiwgdG9JbnQzMihzdGF0aWNfY2FzdDxO
dW1iZXJOb2RlKj4oZXhwcjEpLT52YWx1ZSgpKSBeIHRvSW50MzIoc3RhdGljX2Nhc3Q8TnVtYmVy
Tm9kZSo+KGV4cHIyKS0+dmFsdWUoKSkpOworICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkg
Qml0WE9yTm9kZShsb2NhdGlvbiwgZXhwcjEsIGV4cHIyLCByaWdodEhhc0Fzc2lnbm1lbnRzKTsK
IH0KIAotRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VGdW5jdGlvbkNhbGxOb2RlKGlu
dCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZnVuYywgQXJndW1lbnRzTm9kZSogYXJncywg
aW50IHN0YXJ0LCBpbnQgZGl2b3QsIGludCBlbmQpCitFeHByZXNzaW9uTm9kZSogQVNUQnVpbGRl
cjo6bWFrZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGZ1bmMsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIGludCBzdGFydCwgaW50
IGRpdm90LCBpbnQgZW5kKQogewogICAgIGlmICghZnVuYy0+aXNMb2NhdGlvbigpKQotICAgICAg
ICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShsaW5lTnVt
YmVyLCBmdW5jLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAg
ICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShsb2Nh
dGlvbiwgZnVuYywgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAg
ICBpZiAoZnVuYy0+aXNSZXNvbHZlTm9kZSgpKSB7CiAgICAgICAgIFJlc29sdmVOb2RlKiByZXNv
bHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUqPihmdW5jKTsKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgaWRlbnRpZmllciA9IHJlc29sdmUtPmlkZW50aWZpZXIoKTsKICAgICAgICAgaWYg
KGlkZW50aWZpZXIgPT0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5ldmFsKSB7CiAgICAg
ICAgICAgICB1c2VzRXZhbCgpOwotICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBFdmFsRnVuY3Rpb25DYWxsTm9kZShsaW5lTnVtYmVyLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBz
dGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRh
KSBFdmFsRnVuY3Rpb25DYWxsTm9kZShsb2NhdGlvbiwgYXJncywgZGl2b3QsIGRpdm90IC0gc3Rh
cnQsIGVuZCAtIGRpdm90KTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50aWZpZXIsIGFy
Z3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUobG9jYXRpb24sIGlkZW50
aWZpZXIsIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgfQog
ICAgIGlmIChmdW5jLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBCcmFja2V0
QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+
KGZ1bmMpOwotICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSogbm9kZSA9IG5ldyAobV9n
bG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5i
YXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOworICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZSogbm9kZSA9IG5l
dyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tl
dC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3Rh
cnQsIGVuZCAtIGRpdm90KTsKICAgICAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oYnJh
Y2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZW5kT2Zmc2V0KCkpOwogICAgICAgICByZXR1cm4gbm9k
ZTsKICAgICB9CkBAIC04MTMsMTE4ICs4MTMsMTE4IEBAIEV4cHJlc3Npb25Ob2RlKiBBU1RCdWls
ZGVyOjptYWtlRnVuY3Rpb25DYWxsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
CiAgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nvck5vZGUq
PihmdW5jKTsKICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKiBub2RlOwogICAgIGlmIChkb3QtPmlk
ZW50aWZpZXIoKSA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmNhbGwpCi0gICAgICAg
IG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51
bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3Qg
LSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBub2RlID0gbmV3IChtX2dsb2JhbERhdGEp
IENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBkb3QtPmJhc2UoKSwgZG90LT5pZGVu
dGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAg
ZWxzZSBpZiAoZG90LT5pZGVudGlmaWVyKCkgPT0gbV9nbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVz
LT5hcHBseSkKLSAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBBcHBseUZ1bmN0aW9u
Q2FsbERvdE5vZGUobGluZU51bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBh
cmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBub2RlID0g
bmV3IChtX2dsb2JhbERhdGEpIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShsb2NhdGlvbiwgZG90
LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOwogICAgIGVsc2UKLSAgICAgICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRh
KSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50
aWZpZXIoKSwgYXJncywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAg
ICAgbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9u
LCBkb3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIGFyZ3MsIGRpdm90LCBkaXZvdCAtIHN0
YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgbm9kZS0+c2V0U3ViZXhwcmVzc2lvbkluZm8oZG90LT5k
aXZvdCgpLCBkb3QtPmVuZE9mZnNldCgpKTsKICAgICByZXR1cm4gbm9kZTsKIH0KIAotRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VCaW5hcnlOb2RlKGludCBsaW5lTnVtYmVyLCBpbnQg
dG9rZW4sIHBhaXI8RXhwcmVzc2lvbk5vZGUqLCBCaW5hcnlPcEluZm8+IGxocywgcGFpcjxFeHBy
ZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4gcmhzKQorRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxk
ZXI6Om1ha2VCaW5hcnlOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCB0
b2tlbiwgcGFpcjxFeHByZXNzaW9uTm9kZSosIEJpbmFyeU9wSW5mbz4gbGhzLCBwYWlyPEV4cHJl
c3Npb25Ob2RlKiwgQmluYXJ5T3BJbmZvPiByaHMpCiB7CiAgICAgc3dpdGNoICh0b2tlbikgewog
ICAgIGNhc2UgT1I6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTG9naWNhbE9w
Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgT3BMb2dpY2FsT3IpOworICAg
ICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIExvZ2ljYWxPcE5vZGUobG9jYXRpb24sIGxo
cy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxPcik7CiAKICAgICBjYXNlIEFORDoKLSAgICAg
ICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBMb2dpY2FsT3BOb2RlKGxpbmVOdW1iZXIsIGxo
cy5maXJzdCwgcmhzLmZpcnN0LCBPcExvZ2ljYWxBbmQpOworICAgICAgICByZXR1cm4gbmV3ICht
X2dsb2JhbERhdGEpIExvZ2ljYWxPcE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0
LCBPcExvZ2ljYWxBbmQpOwogCiAgICAgY2FzZSBCSVRPUjoKLSAgICAgICAgcmV0dXJuIG1ha2VC
aXRPck5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFz
QXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlQml0T3JOb2RlKGxvY2F0aW9uLCBsaHMu
Zmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2Ug
QklUWE9SOgotICAgICAgICByZXR1cm4gbWFrZUJpdFhPck5vZGUobGluZU51bWJlciwgbGhzLmZp
cnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVy
biBtYWtlQml0WE9yTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNv
bmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIEJJVEFORDoKLSAgICAgICAgcmV0dXJuIG1h
a2VCaXRBbmROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25k
Lmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZUJpdEFuZE5vZGUobG9jYXRpb24s
IGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAg
Y2FzZSBFUUVROgotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEVxdWFsTm9kZShs
aW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50
KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBFcXVhbE5vZGUobG9jYXRpb24s
IGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAg
Y2FzZSBORToKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBOb3RFcXVhbE5vZGUo
bGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVu
dCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTm90RXF1YWxOb2RlKGxvY2F0
aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAog
ICAgIGNhc2UgU1RSRVE6Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgU3RyaWN0
RXF1YWxOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhh
c0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFN0cmljdEVx
dWFsTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNz
aWdubWVudCk7CiAKICAgICBjYXNlIFNUUk5FUToKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBOb3RTdHJpY3RFcXVhbE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmly
c3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgTm90U3RyaWN0RXF1YWxOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJz
dCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgTFQ6Ci0gICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgTGVzc05vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCBy
aHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgTGVzc05vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCBy
aHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBHVDoKLSAgICAgICAgcmV0dXJu
IG5ldyAobV9nbG9iYWxEYXRhKSBHcmVhdGVyTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJo
cy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyAo
bV9nbG9iYWxEYXRhKSBHcmVhdGVyTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3Qs
IHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIExFOgotICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIExlc3NFcU5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCBy
aHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBuZXcg
KG1fZ2xvYmFsRGF0YSkgTGVzc0VxTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3Qs
IHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIEdFOgotICAgICAgICByZXR1
cm4gbmV3IChtX2dsb2JhbERhdGEpIEdyZWF0ZXJFcU5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0
LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBu
ZXcgKG1fZ2xvYmFsRGF0YSkgR3JlYXRlckVxTm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMu
Zmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAKICAgICBjYXNlIElOU1RBTkNFT0Y6
IHsKLSAgICAgICAgSW5zdGFuY2VPZk5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgSW5z
dGFuY2VPZk5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQu
aGFzQXNzaWdubWVudCk7CisgICAgICAgIEluc3RhbmNlT2ZOb2RlKiBub2RlID0gbmV3IChtX2ds
b2JhbERhdGEpIEluc3RhbmNlT2ZOb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwg
cmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKICAgICAgICAgc2V0RXhjZXB0aW9uTG9jYXRpb24o
bm9kZSwgbGhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5zdGFydCwgcmhzLnNlY29uZC5lbmQp
OwogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAKICAgICBjYXNlIElOVE9LRU46IHsKLSAg
ICAgICAgSW5Ob2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEluTm9kZShsaW5lTnVtYmVy
LCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAg
ICAgSW5Ob2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEluTm9kZShsb2NhdGlvbiwgbGhz
LmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFzQXNzaWdubWVudCk7CiAgICAgICAgIHNl
dEV4Y2VwdGlvbkxvY2F0aW9uKG5vZGUsIGxocy5zZWNvbmQuc3RhcnQsIHJocy5zZWNvbmQuc3Rh
cnQsIHJocy5zZWNvbmQuZW5kKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQogCiAgICAg
Y2FzZSBMU0hJRlQ6Ci0gICAgICAgIHJldHVybiBtYWtlTGVmdFNoaWZ0Tm9kZShsaW5lTnVtYmVy
LCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAg
ICAgcmV0dXJuIG1ha2VMZWZ0U2hpZnROb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJz
dCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAogICAgIGNhc2UgUlNISUZUOgotICAgICAg
ICByZXR1cm4gbWFrZVJpZ2h0U2hpZnROb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZp
cnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZVJpZ2h0
U2hpZnROb2RlKGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNB
c3NpZ25tZW50KTsKIAogICAgIGNhc2UgVVJTSElGVDoKLSAgICAgICAgcmV0dXJuIG1ha2VVUmln
aHRTaGlmdE5vZGUobGluZU51bWJlciwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQu
aGFzQXNzaWdubWVudCk7CisgICAgICAgIHJldHVybiBtYWtlVVJpZ2h0U2hpZnROb2RlKGxvY2F0
aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKIAog
ICAgIGNhc2UgUExVUzoKLSAgICAgICAgcmV0dXJuIG1ha2VBZGROb2RlKGxpbmVOdW1iZXIsIGxo
cy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOworICAgICAgICBy
ZXR1cm4gbWFrZUFkZE5vZGUobG9jYXRpb24sIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vj
b25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBNSU5VUzoKLSAgICAgICAgcmV0dXJuIG1h
a2VTdWJOb2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhh
c0Fzc2lnbm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZVN1Yk5vZGUobG9jYXRpb24sIGxocy5m
aXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBU
SU1FUzoKLSAgICAgICAgcmV0dXJuIG1ha2VNdWx0Tm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3Qs
IHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1h
a2VNdWx0Tm9kZShsb2NhdGlvbiwgbGhzLmZpcnN0LCByaHMuZmlyc3QsIHJocy5zZWNvbmQuaGFz
QXNzaWdubWVudCk7CiAKICAgICBjYXNlIERJVklERToKLSAgICAgICAgcmV0dXJuIG1ha2VEaXZO
b2RlKGxpbmVOdW1iZXIsIGxocy5maXJzdCwgcmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2ln
bm1lbnQpOworICAgICAgICByZXR1cm4gbWFrZURpdk5vZGUobG9jYXRpb24sIGxocy5maXJzdCwg
cmhzLmZpcnN0LCByaHMuc2Vjb25kLmhhc0Fzc2lnbm1lbnQpOwogCiAgICAgY2FzZSBNT0Q6Ci0g
ICAgICAgIHJldHVybiBtYWtlTW9kTm9kZShsaW5lTnVtYmVyLCBsaHMuZmlyc3QsIHJocy5maXJz
dCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKKyAgICAgICAgcmV0dXJuIG1ha2VNb2ROb2Rl
KGxvY2F0aW9uLCBsaHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50
KTsKICAgICB9CiAgICAgQ1JBU0goKTsKICAgICByZXR1cm4gMDsKIH0KIAotRXhwcmVzc2lvbk5v
ZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogbG9jLCBPcGVyYXRvciBvcCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGJvb2wgbG9jSGFz
QXNzaWdubWVudHMsIGJvb2wgZXhwckhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZv
dCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQXNzaWduTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogbG9jLCBPcGVy
YXRvciBvcCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIGJvb2wgbG9jSGFzQXNzaWdubWVudHMsIGJv
b2wgZXhwckhhc0Fzc2lnbm1lbnRzLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKIHsK
ICAgICBpZiAoIWxvYy0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gbmV3IChtX2dsb2Jh
bERhdGEpIEFzc2lnbkVycm9yTm9kZShsaW5lTnVtYmVyLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnbkVy
cm9yTm9kZShsb2NhdGlvbiwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKIAog
ICAgIGlmIChsb2MtPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVz
b2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4obG9jKTsKICAgICAgICAgaWYgKG9wID09
IE9wRXF1YWwpIHsKICAgICAgICAgICAgIGlmIChleHByLT5pc0Z1bmNFeHByTm9kZSgpKQogICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PEZ1bmNFeHByTm9kZSo+KGV4cHIpLT5ib2R5KCktPnNl
dEluZmVycmVkTmFtZShyZXNvbHZlLT5pZGVudGlmaWVyKCkpOwotICAgICAgICAgICAgQXNzaWdu
UmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgQXNzaWduUmVzb2x2ZU5vZGUo
bGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBleHByKTsKKyAgICAgICAgICAgIEFz
c2lnblJlc29sdmVOb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIEFzc2lnblJlc29sdmVO
b2RlKGxvY2F0aW9uLCByZXNvbHZlLT5pZGVudGlmaWVyKCksIGV4cHIpOwogICAgICAgICAgICAg
c2V0RXhjZXB0aW9uTG9jYXRpb24obm9kZSwgc3RhcnQsIGRpdm90LCBlbmQpOwogICAgICAgICAg
ICAgcmV0dXJuIG5vZGU7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUobGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmll
cigpLCBvcCwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2Rp
ZnlSZXNvbHZlTm9kZShsb2NhdGlvbiwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwg
ZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwog
ICAgIH0KICAgICBpZiAobG9jLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewogICAgICAgICBC
cmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29y
Tm9kZSo+KGxvYyk7CiAgICAgICAgIGlmIChvcCA9PSBPcEVxdWFsKQotICAgICAgICAgICAgcmV0
dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBBc3NpZ25CcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFj
a2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBleHByLCBsb2NIYXNBc3NpZ25tZW50
cywgZXhwckhhc0Fzc2lnbm1lbnRzLCBicmFja2V0LT5kaXZvdCgpLCBicmFja2V0LT5kaXZvdCgp
IC0gc3RhcnQsIGVuZCAtIGJyYWNrZXQtPmRpdm90KCkpOwotICAgICAgICBSZWFkTW9kaWZ5QnJh
Y2tldE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUmVhZE1vZGlmeUJyYWNrZXROb2Rl
KGxpbmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9wLCBl
eHByLCBsb2NIYXNBc3NpZ25tZW50cywgZXhwckhhc0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3Qg
LSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxE
YXRhKSBBc3NpZ25CcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0
LT5zdWJzY3JpcHQoKSwgZXhwciwgbG9jSGFzQXNzaWdubWVudHMsIGV4cHJIYXNBc3NpZ25tZW50
cywgYnJhY2tldC0+ZGl2b3QoKSwgYnJhY2tldC0+ZGl2b3QoKSAtIHN0YXJ0LCBlbmQgLSBicmFj
a2V0LT5kaXZvdCgpKTsKKyAgICAgICAgUmVhZE1vZGlmeUJyYWNrZXROb2RlKiBub2RlID0gbmV3
IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlCcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+
YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgb3AsIGV4cHIsIGxvY0hhc0Fzc2lnbm1lbnRz
LCBleHBySGFzQXNzaWdubWVudHMsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7
CiAgICAgICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGJyYWNrZXQtPmRpdm90KCksIGJy
YWNrZXQtPmVuZE9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfQpAQCAtOTMz
LDU1ICs5MzMsNTUgQEAgRXhwcmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogbG9jLAogICAgIGlmIChvcCA9PSBPcEVx
dWFsKSB7CiAgICAgICAgIGlmIChleHByLT5pc0Z1bmNFeHByTm9kZSgpKQogICAgICAgICAgICAg
c3RhdGljX2Nhc3Q8RnVuY0V4cHJOb2RlKj4oZXhwciktPmJvZHkoKS0+c2V0SW5mZXJyZWROYW1l
KGRvdC0+aWRlbnRpZmllcigpKTsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBB
c3NpZ25Eb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwg
ZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkb3QtPmRpdm90KCksIGRvdC0+ZGl2b3QoKSAtIHN0
YXJ0LCBlbmQgLSBkb3QtPmRpdm90KCkpOworICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERh
dGEpIEFzc2lnbkRvdE5vZGUobG9jYXRpb24sIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIo
KSwgZXhwciwgZXhwckhhc0Fzc2lnbm1lbnRzLCBkb3QtPmRpdm90KCksIGRvdC0+ZGl2b3QoKSAt
IHN0YXJ0LCBlbmQgLSBkb3QtPmRpdm90KCkpOwogICAgIH0KIAotICAgIFJlYWRNb2RpZnlEb3RO
b2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFJlYWRNb2RpZnlEb3ROb2RlKGxpbmVOdW1i
ZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIsIGV4cHJIYXNBc3Np
Z25tZW50cywgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICBSZWFkTW9k
aWZ5RG90Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBSZWFkTW9kaWZ5RG90Tm9kZShs
b2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZXhwciwgZXhwckhh
c0Fzc2lnbm1lbnRzLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogICAgIG5v
ZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3QoKSwgZG90LT5lbmRPZmZzZXQoKSk7
CiAgICAgcmV0dXJuIG5vZGU7CiB9CiAKLUV4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtl
UHJlZml4Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9y
IG9wLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RC
dWlsZGVyOjptYWtlUHJlZml4Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogZXhwciwgT3BlcmF0b3Igb3AsIGludCBzdGFydCwgaW50IGRpdm90LCBp
bnQgZW5kKQogewogICAgIGlmICghZXhwci0+aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4g
bmV3IChtX2dsb2JhbERhdGEpIFByZWZpeEVycm9yTm9kZShsaW5lTnVtYmVyLCBvcCwgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9i
YWxEYXRhKSBQcmVmaXhFcnJvck5vZGUobG9jYXRpb24sIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFy
dCwgZW5kIC0gZGl2b3QpOwogCiAgICAgaWYgKGV4cHItPmlzUmVzb2x2ZU5vZGUoKSkgewogICAg
ICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZXhw
cik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUHJlZml4UmVzb2x2ZU5vZGUo
bGluZU51bWJlciwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3Rh
cnQsIGVuZCAtIGRpdm90KTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQcmVm
aXhSZXNvbHZlTm9kZShsb2NhdGlvbiwgcmVzb2x2ZS0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3Qs
IGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICB9CiAgICAgaWYgKGV4cHItPmlzQnJh
Y2tldEFjY2Vzc29yTm9kZSgpKSB7CiAgICAgICAgIEJyYWNrZXRBY2Nlc3Nvck5vZGUqIGJyYWNr
ZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4oZXhwcik7Ci0gICAgICAgIFBy
ZWZpeEJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2dsb2JhbERhdGEpIFByZWZpeEJyYWNrZXRO
b2RlKGxpbmVOdW1iZXIsIGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIG9w
LCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOworICAgICAgICBQcmVmaXhCcmFj
a2V0Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhCcmFja2V0Tm9kZShsb2Nh
dGlvbiwgYnJhY2tldC0+YmFzZSgpLCBicmFja2V0LT5zdWJzY3JpcHQoKSwgb3AsIGRpdm90LCBk
aXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CiAgICAgICAgIG5vZGUtPnNldFN1YmV4cHJlc3Np
b25JbmZvKGJyYWNrZXQtPmRpdm90KCksIGJyYWNrZXQtPnN0YXJ0T2Zmc2V0KCkpOwogICAgICAg
ICByZXR1cm4gbm9kZTsKICAgICB9CiAgICAgQVNTRVJUKGV4cHItPmlzRG90QWNjZXNzb3JOb2Rl
KCkpOwogICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JO
b2RlKj4oZXhwcik7Ci0gICAgUHJlZml4RG90Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRh
KSBQcmVmaXhEb3ROb2RlKGxpbmVOdW1iZXIsIGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIo
KSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgUHJlZml4RG90
Tm9kZSogbm9kZSA9IG5ldyAobV9nbG9iYWxEYXRhKSBQcmVmaXhEb3ROb2RlKGxvY2F0aW9uLCBk
b3QtPmJhc2UoKSwgZG90LT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwg
ZW5kIC0gZGl2b3QpOwogICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGRvdC0+ZGl2b3Qo
KSwgZG90LT5zdGFydE9mZnNldCgpKTsKICAgICByZXR1cm4gbm9kZTsKIH0KIAotRXhwcmVzc2lv
bk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VQb3N0Zml4Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9wLCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVu
ZCkKK0V4cHJlc3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlUG9zdGZpeE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIE9wZXJhdG9yIG9w
LCBpbnQgc3RhcnQsIGludCBkaXZvdCwgaW50IGVuZCkKIHsKICAgICBpZiAoIWV4cHItPmlzTG9j
YXRpb24oKSkKLSAgICAgICAgcmV0dXJuIG5ldyAobV9nbG9iYWxEYXRhKSBQb3N0Zml4RXJyb3JO
b2RlKGxpbmVOdW1iZXIsIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwor
ICAgICAgICByZXR1cm4gbmV3IChtX2dsb2JhbERhdGEpIFBvc3RmaXhFcnJvck5vZGUobG9jYXRp
b24sIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3QpOwogCiAgICAgaWYgKGV4
cHItPmlzUmVzb2x2ZU5vZGUoKSkgewogICAgICAgICBSZXNvbHZlTm9kZSogcmVzb2x2ZSA9IHN0
YXRpY19jYXN0PFJlc29sdmVOb2RlKj4oZXhwcik7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fZ2xv
YmFsRGF0YSkgUG9zdGZpeFJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIHJlc29sdmUtPmlkZW50aWZp
ZXIoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZvdCk7CisgICAgICAgIHJl
dHVybiBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeFJlc29sdmVOb2RlKGxvY2F0aW9uLCByZXNv
bHZlLT5pZGVudGlmaWVyKCksIG9wLCBkaXZvdCwgZGl2b3QgLSBzdGFydCwgZW5kIC0gZGl2b3Qp
OwogICAgIH0KICAgICBpZiAoZXhwci0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKICAgICAg
ICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nl
c3Nvck5vZGUqPihleHByKTsKLSAgICAgICAgUG9zdGZpeEJyYWNrZXROb2RlKiBub2RlID0gbmV3
IChtX2dsb2JhbERhdGEpIFBvc3RmaXhCcmFja2V0Tm9kZShsaW5lTnVtYmVyLCBicmFja2V0LT5i
YXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVu
ZCAtIGRpdm90KTsKKyAgICAgICAgUG9zdGZpeEJyYWNrZXROb2RlKiBub2RlID0gbmV3IChtX2ds
b2JhbERhdGEpIFBvc3RmaXhCcmFja2V0Tm9kZShsb2NhdGlvbiwgYnJhY2tldC0+YmFzZSgpLCBi
cmFja2V0LT5zdWJzY3JpcHQoKSwgb3AsIGRpdm90LCBkaXZvdCAtIHN0YXJ0LCBlbmQgLSBkaXZv
dCk7CiAgICAgICAgIG5vZGUtPnNldFN1YmV4cHJlc3Npb25JbmZvKGJyYWNrZXQtPmRpdm90KCks
IGJyYWNrZXQtPmVuZE9mZnNldCgpKTsKICAgICAgICAgcmV0dXJuIG5vZGU7CiAKICAgICB9CiAg
ICAgQVNTRVJUKGV4cHItPmlzRG90QWNjZXNzb3JOb2RlKCkpOwogICAgIERvdEFjY2Vzc29yTm9k
ZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4oZXhwcik7Ci0gICAgUG9zdGZp
eERvdE5vZGUqIG5vZGUgPSBuZXcgKG1fZ2xvYmFsRGF0YSkgUG9zdGZpeERvdE5vZGUobGluZU51
bWJlciwgZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0g
c3RhcnQsIGVuZCAtIGRpdm90KTsKKyAgICBQb3N0Zml4RG90Tm9kZSogbm9kZSA9IG5ldyAobV9n
bG9iYWxEYXRhKSBQb3N0Zml4RG90Tm9kZShsb2NhdGlvbiwgZG90LT5iYXNlKCksIGRvdC0+aWRl
bnRpZmllcigpLCBvcCwgZGl2b3QsIGRpdm90IC0gc3RhcnQsIGVuZCAtIGRpdm90KTsKICAgICBu
b2RlLT5zZXRTdWJleHByZXNzaW9uSW5mbyhkb3QtPmRpdm90KCksIGRvdC0+ZW5kT2Zmc2V0KCkp
OwogICAgIHJldHVybiBub2RlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNw
cAppbmRleCAzYjAyMGY0ZjJiMWIwOTZhNzBhOTVhOWI1ODg4MjdiZDkwYjk4NTljLi4yYThhOGRj
OWUzNjNhZDNhMjI3MTU5NmU3NWUxOWY1ZGNjMmIzMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmNwcApAQCAtNDE3LDYgKzQxNyw3IEBAIHZvaWQgTGV4ZXI8VD46OnNldENv
ZGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJBcmVuYSogYXJlbmEpCiAgICAgbV9j
b2RlRW5kID0gbV9jb2RlU3RhcnQgKyBzb3VyY2UuZW5kT2Zmc2V0KCk7CiAgICAgbV9lcnJvciA9
IGZhbHNlOwogICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOworICAgIG1fY29sdW1uTnVtYmVyID0g
MDsKICAgICBtX2xleEVycm9yTWVzc2FnZSA9IFVTdHJpbmcoKTsKICAgICAKICAgICBtX2J1ZmZl
cjgucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpbml0aWFsUmVhZEJ1ZmZlckNhcGFjaXR5KTsKQEAg
LTQzMyw2ICs0MzQsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHRlbXBsYXRlIDxpbnQgc2hp
ZnRBbW91bnQ+IEFMV0FZU19JTkxJTkUgdm9pZCBMZXhlcjxUPjo6aW50ZXJuYWxTaGlmdCgpCiB7
CiAgICAgbV9jb2RlICs9IHNoaWZ0QW1vdW50OworICAgIG1fY29sdW1uTnVtYmVyICs9IHNoaWZ0
QW1vdW50OwogICAgIG1fY3VycmVudCA9ICptX2NvZGU7CiB9CiAKQEAgLTQ0NCw2ICs0NDYsNyBA
QCBBTFdBWVNfSU5MSU5FIHZvaWQgTGV4ZXI8VD46OnNoaWZ0KCkKICAgICArK21fY29kZTsKICAg
ICBpZiAoTElLRUxZKG1fY29kZSA8IG1fY29kZUVuZCkpCiAgICAgICAgIG1fY3VycmVudCA9ICpt
X2NvZGU7CisgICAgKyttX2NvbHVtbk51bWJlcjsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CkBAIC0xMTgzLDcgKzExODYsNyBAQCBib29sIExleGVyPFQ+OjpuZXh0VG9rZW5Jc0NvbG9uKCkK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1KU1Rva2VuVHlwZSBMZXhlcjxUPjo6bGV4KEpT
VG9rZW5EYXRhKiB0b2tlbkRhdGEsIEpTVG9rZW5JbmZvKiB0b2tlbkluZm8sIHVuc2lnbmVkIGxl
eGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKK0pTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXgoSlNU
b2tlbkRhdGEqIHRva2VuRGF0YSwgSlNUb2tlbkxvY2F0aW9uKiB0b2tlbkxvY2F0aW9uLCB1bnNp
Z25lZCBsZXhlckZsYWdzLCBib29sIHN0cmljdE1vZGUpCiB7CiAgICAgQVNTRVJUKCFtX2Vycm9y
KTsKICAgICBBU1NFUlQobV9idWZmZXI4LmlzRW1wdHkoKSk7CkBAIC0xMTk5LDcgKzEyMDIsOCBA
QCBzdGFydDoKICAgICBpZiAoYXRFbmQoKSkKICAgICAgICAgcmV0dXJuIEVPRlRPSzsKICAgICAK
LSAgICB0b2tlbkluZm8tPnN0YXJ0T2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRva2Vu
TG9jYXRpb24tPnN0YXJ0T2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRva2VuTG9jYXRp
b24tPmNvbHVtbiA9IG1fY29sdW1uTnVtYmVyOwogCiAgICAgQ2hhcmFjdGVyVHlwZSB0eXBlOwog
ICAgIGlmIChMSUtFTFkoaXNMYXRpbjEobV9jdXJyZW50KSkpCkBAIC0xNTIyLDYgKzE1MjYsNyBA
QCBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50OgogICAgICAgICBzaGlmdExpbmVUZXJtaW5hdG9y
KCk7CiAgICAgICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOwogICAgICAgICBtX3Rlcm1pbmF0b3Ig
PSB0cnVlOworICAgICAgICBtX2NvbHVtbk51bWJlciA9IDA7CiAgICAgICAgIGdvdG8gc3RhcnQ7
CiAgICAgY2FzZSBDaGFyYWN0ZXJJbnZhbGlkOgogICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
IGludmFsaWRDaGFyYWN0ZXJNZXNzYWdlKCk7CkBAIC0xNTQ0LDYgKzE1NDksNyBAQCBpblNpbmds
ZUxpbmVDb21tZW50OgogICAgIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKICAgICBtX2F0TGluZVN0
YXJ0ID0gdHJ1ZTsKICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVlOworICAgIG1fY29sdW1uTnVtYmVy
ID0gMDsKICAgICBpZiAoIWxhc3RUb2tlbldhc1Jlc3RyS2V5d29yZCgpKQogICAgICAgICBnb3Rv
IHN0YXJ0OwogCkBAIC0xNTUxLDE1ICsxNTU3LDE1IEBAIGluU2luZ2xlTGluZUNvbW1lbnQ6CiAg
ICAgLy8gRmFsbCB0aHJvdWdoIGludG8gcmV0dXJuVG9rZW4uCiAKIHJldHVyblRva2VuOgotICAg
IHRva2VuSW5mby0+bGluZSA9IG1fbGluZU51bWJlcjsKLSAgICB0b2tlbkluZm8tPmVuZE9mZnNl
dCA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICB0b2tlbkxvY2F0aW9uLT5saW5lID0gbV9saW5lTnVt
YmVyOworICAgIHRva2VuTG9jYXRpb24tPmVuZE9mZnNldCA9IGN1cnJlbnRPZmZzZXQoKTsKICAg
ICBtX2xhc3RUb2tlbiA9IHRva2VuOwogICAgIHJldHVybiB0b2tlbjsKIAogcmV0dXJuRXJyb3I6
CiAgICAgbV9lcnJvciA9IHRydWU7Ci0gICAgdG9rZW5JbmZvLT5saW5lID0gbV9saW5lTnVtYmVy
OwotICAgIHRva2VuSW5mby0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRva2Vu
TG9jYXRpb24tPmxpbmUgPSBtX2xpbmVOdW1iZXI7CisgICAgdG9rZW5Mb2NhdGlvbi0+ZW5kT2Zm
c2V0ID0gY3VycmVudE9mZnNldCgpOwogICAgIHJldHVybiBFUlJPUlRPSzsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDQxZjFmODU1M2UxZWIyNWY1NDRiZWUxOTM1
YTJhZjRiYmQwNjllNjQuLjFhYzgzMmEyYzdiNWYzODJiMzNiNzhhNWM4MzA0YjE3NTU0MGY0NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgKQEAgLTg3LDkgKzg3LDEwIEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldElzUmVwYXJzaW5nKCkgeyBtX2lzUmVwYXJzaW5nID0gdHJ1ZTsg
fQogICAgIGJvb2wgaXNSZXBhcnNpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUmVwYXJzaW5nOyB9
CiAKLSAgICBKU1Rva2VuVHlwZSBsZXgoSlNUb2tlbkRhdGEqLCBKU1Rva2VuSW5mbyosIHVuc2ln
bmVkLCBib29sIHN0cmljdE1vZGUpOworICAgIEpTVG9rZW5UeXBlIGxleChKU1Rva2VuRGF0YSos
IEpTVG9rZW5Mb2NhdGlvbiosIHVuc2lnbmVkLCBib29sIHN0cmljdE1vZGUpOwogICAgIGJvb2wg
bmV4dFRva2VuSXNDb2xvbigpOwogICAgIGludCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
bV9saW5lTnVtYmVyOyB9CisgICAgaW50IGN1cnJlbnRDb2x1bW5OdW1iZXIoKSBjb25zdCB7IHJl
dHVybiBtX2NvbHVtbk51bWJlcjsgfQogICAgIHZvaWQgc2V0TGFzdExpbmVOdW1iZXIoaW50IGxh
c3RMaW5lTnVtYmVyKSB7IG1fbGFzdExpbmVOdW1iZXIgPSBsYXN0TGluZU51bWJlcjsgfQogICAg
IGludCBsYXN0TGluZU51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdExpbmVOdW1iZXI7IH0K
ICAgICBib29sIHByZXZUZXJtaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gbV90ZXJtaW5hdG9yOyB9
CkBAIC0xMjAsNyArMTIxLDcgQEAgcHVibGljOgogCiAgICAgU291cmNlUHJvdmlkZXIqIHNvdXJj
ZVByb3ZpZGVyKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2UtPnByb3ZpZGVyKCk7IH0KIAotICAg
IEpTVG9rZW5UeXBlIGxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbkRhdGEqLCBKU1Rva2VuSW5m
byosIHVuc2lnbmVkLCBib29sIHN0cmljdE1vZGUpOworICAgIEpTVG9rZW5UeXBlIGxleEV4cGVj
dElkZW50aWZpZXIoSlNUb2tlbkRhdGEqLCBKU1Rva2VuTG9jYXRpb24qLCB1bnNpZ25lZCwgYm9v
bCBzdHJpY3RNb2RlKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHJlY29yZDgoaW50KTsKQEAgLTE2
Niw2ICsxNjcsNyBAQCBwcml2YXRlOgogCiAgICAgaW50IG1fbGluZU51bWJlcjsKICAgICBpbnQg
bV9sYXN0TGluZU51bWJlcjsKKyAgICBpbnQgbV9jb2x1bW5OdW1iZXI7CiAKICAgICBWZWN0b3I8
TENoYXI+IG1fYnVmZmVyODsKICAgICBWZWN0b3I8VUNoYXI+IG1fYnVmZmVyMTY7CkBAIC0yNTcs
NyArMjU5LDcgQEAgQUxXQVlTX0lOTElORSBjb25zdCBJZGVudGlmaWVyKiBMZXhlcjxUPjo6bWFr
ZUlkZW50aWZpZXJMQ2hhckZyb21VQ2hhcihjb25zdCBVQ2gKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+Ci1BTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVu
dGlmaWVyKEpTVG9rZW5EYXRhKiB0b2tlbkRhdGEsIEpTVG9rZW5JbmZvKiB0b2tlbkluZm8sIHVu
c2lnbmVkIGxleGVyRmxhZ3MsIGJvb2wgc3RyaWN0TW9kZSkKK0FMV0FZU19JTkxJTkUgSlNUb2tl
blR5cGUgTGV4ZXI8VD46OmxleEV4cGVjdElkZW50aWZpZXIoSlNUb2tlbkRhdGEqIHRva2VuRGF0
YSwgSlNUb2tlbkxvY2F0aW9uKiB0b2tlbkxvY2F0aW9uLCB1bnNpZ25lZCBsZXhlckZsYWdzLCBi
b29sIHN0cmljdE1vZGUpCiB7CiAgICAgQVNTRVJUKChsZXhlckZsYWdzICYgTGV4ZXJGbGFnc0ln
bm9yZVJlc2VydmVkV29yZHMpKTsKICAgICBjb25zdCBUKiBzdGFydCA9IG1fY29kZTsKQEAgLTI4
NSwyMCArMjg3LDIyIEBAIEFMV0FZU19JTkxJTkUgSlNUb2tlblR5cGUgTGV4ZXI8VD46OmxleEV4
cGVjdElkZW50aWZpZXIoSlNUb2tlbkRhdGEqIHRva2VuRGF0YSwKICAgICAgICAgbV9jdXJyZW50
ID0gMDsKIAogICAgIG1fY29kZSA9IHB0cjsKKyAgICBtX2NvbHVtbk51bWJlciA9IG1fY29sdW1u
TnVtYmVyICsgKG1fY29kZSAtIHN0YXJ0KTsKIAogICAgIC8vIENyZWF0ZSB0aGUgaWRlbnRpZmll
ciBpZiBuZWVkZWQKICAgICBpZiAobGV4ZXJGbGFncyAmIExleGV4RmxhZ3NEb250QnVpbGRLZXl3
b3JkcykKICAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IDA7CiAgICAgZWxzZQogICAgICAgICB0
b2tlbkRhdGEtPmlkZW50ID0gbWFrZUlkZW50aWZpZXIoc3RhcnQsIHB0ciAtIHN0YXJ0KTsKLSAg
ICB0b2tlbkluZm8tPmxpbmUgPSBtX2xpbmVOdW1iZXI7Ci0gICAgdG9rZW5JbmZvLT5zdGFydE9m
ZnNldCA9IHN0YXJ0IC0gbV9jb2RlU3RhcnQ7Ci0gICAgdG9rZW5JbmZvLT5lbmRPZmZzZXQgPSBj
dXJyZW50T2Zmc2V0KCk7CisgICAgdG9rZW5Mb2NhdGlvbi0+bGluZSA9IG1fbGluZU51bWJlcjsK
KyAgICB0b2tlbkxvY2F0aW9uLT5zdGFydE9mZnNldCA9IHN0YXJ0IC0gbV9jb2RlU3RhcnQ7Cisg
ICAgdG9rZW5Mb2NhdGlvbi0+ZW5kT2Zmc2V0ID0gY3VycmVudE9mZnNldCgpOworICAgIHRva2Vu
TG9jYXRpb24tPmNvbHVtbiA9IG1fY29sdW1uTnVtYmVyOwogICAgIG1fbGFzdFRva2VuID0gSURF
TlQ7CiAgICAgcmV0dXJuIElERU5UOwogICAgIAogc2xvd0Nhc2U6Ci0gICAgcmV0dXJuIGxleCh0
b2tlbkRhdGEsIHRva2VuSW5mbywgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSk7CisgICAgcmV0dXJu
IGxleCh0b2tlbkRhdGEsIHRva2VuTG9jYXRpb24sIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2RlQ29uc3RydWN0b3JzLmgKaW5kZXggYmU1MGVlYWZlM2U0MGVhYzFkOTdiN2Q0ZDAyYjVh
NGM2OTgyOTY4Ni4uNDNkMWUxN2M2YTRjYzA3NWM2NjRlNjNlZDk0YmYxZDBlNmYxZjI4MCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKQEAg
LTQyLDYwICs0Miw2MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZ2xvYmFsRGF0YS0+cGFy
c2VyQXJlbmEtPmRlcmVmV2l0aEFyZW5hKGFkb3B0UmVmKHRoaXMpKTsKICAgICB9CiAKLSAgICBp
bmxpbmUgTm9kZTo6Tm9kZShpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBtX2xpbmVOdW1iZXIo
bGluZU51bWJlcikKKyAgICBpbmxpbmUgTm9kZTo6Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uKQorICAgICAgICA6IG1fbGluZU51bWJlcihsb2NhdGlvbi5saW5lKQorICAgICAg
ICAsIG1fY29sdW1uTnVtYmVyKGxvY2F0aW9uLmNvbHVtbikKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIEV4cHJlc3Npb25Ob2RlOjpFeHByZXNzaW9uTm9kZShpbnQgbGluZU51bWJlciwgUmVz
dWx0VHlwZSByZXN1bHRUeXBlKQotICAgICAgICA6IE5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgRXhwcmVzc2lvbk5vZGU6OkV4cHJlc3Npb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIFJlc3VsdFR5cGUgcmVzdWx0VHlwZSkKKyAgICAgICAgOiBOb2RlKGxvY2F0aW9u
KQogICAgICAgICAsIG1fcmVzdWx0VHlwZShyZXN1bHRUeXBlKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgU3RhdGVtZW50Tm9kZTo6U3RhdGVtZW50Tm9kZShpbnQgbGluZU51bWJlcikKLSAg
ICAgICAgOiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFN0YXRlbWVudE5vZGU6OlN0YXRl
bWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKKyAgICAgICAgOiBOb2Rl
KGxvY2F0aW9uKQogICAgICAgICAsIG1fbGFzdExpbmUoLTEpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBOdWxsTm9kZTo6TnVsbE5vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6bnVsbFR5cGUoKSkKKyAgICBpbmxp
bmUgTnVsbE5vZGU6Ok51bGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCisg
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6Om51bGxUeXBlKCkp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCb29sZWFuTm9kZTo6Qm9vbGVhbk5vZGUoaW50
IGxpbmVOdW1iZXIsIGJvb2wgdmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51
bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSkKKyAgICBpbmxpbmUgQm9vbGVhbk5vZGU6
OkJvb2xlYW5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGJvb2wgdmFsdWUp
CisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJvb2xlYW5U
eXBlKCkpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIE51bWJlck5vZGU6Ok51bWJlck5vZGUoaW50IGxpbmVOdW1iZXIsIGRvdWJsZSB2YWx1ZSkK
LSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJU
eXBlKCkpCisgICAgaW5saW5lIE51bWJlck5vZGU6Ok51bWJlck5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgZG91YmxlIHZhbHVlKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCkpCiAgICAgICAgICwgbV92YWx1ZSh2
YWx1ZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFN0cmluZ05vZGU6OlN0cmluZ05vZGUo
aW50IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIHZhbHVlKQotICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OnN0cmluZ1R5cGUoKSkKKyAgICBpbmxp
bmUgU3RyaW5nTm9kZTo6U3RyaW5nTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBjb25zdCBJZGVudGlmaWVyJiB2YWx1ZSkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2Nh
dGlvbiwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQogICAgICAgICAsIG1fdmFsdWUodmFsdWUp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZWdFeHBOb2RlOjpSZWdFeHBOb2RlKGludCBs
aW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBm
bGFncykKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBS
ZWdFeHBOb2RlOjpSZWdFeHBOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNv
bnN0IElkZW50aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzKQorICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fcGF0dGVybihwYXR0ZXJu
KQogICAgICAgICAsIG1fZmxhZ3MoZmxhZ3MpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBU
aGlzTm9kZTo6VGhpc05vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgVGhpc05vZGU6OlRoaXNOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZXNvbHZlTm9kZTo6UmVzb2x2ZU5vZGUoaW50
IGxpbmVOdW1iZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBpbnQgc3RhcnRPZmZzZXQpCi0g
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmVzb2x2ZU5v
ZGU6OlJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBpbnQgc3RhcnRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3N0YXJ0
T2Zmc2V0KHN0YXJ0T2Zmc2V0KQogICAgIHsKQEAgLTExNiwyNCArMTE3LDI0IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBsLT5tX25leHQgPSB0aGlzOwogICAgIH0KIAotICAgIGlubGluZSBB
cnJheU5vZGU6OkFycmF5Tm9kZShpbnQgbGluZU51bWJlciwgaW50IGVsaXNpb24pCi0gICAgICAg
IDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJh
eU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgaW50IGVsaXNpb24pCisgICAg
ICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9lbGVtZW50KDApCiAg
ICAgICAgICwgbV9lbGlzaW9uKGVsaXNpb24pCiAgICAgICAgICwgbV9vcHRpb25hbCh0cnVlKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXJyYXlOb2RlOjpBcnJheU5vZGUoaW50IGxpbmVO
dW1iZXIsIEVsZW1lbnROb2RlKiBlbGVtZW50KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxp
bmVOdW1iZXIpCisgICAgaW5saW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEVsZW1lbnROb2RlKiBlbGVtZW50KQorICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZWxlbWVudChlbGVtZW50KQogICAgICAg
ICAsIG1fZWxpc2lvbigwKQogICAgICAgICAsIG1fb3B0aW9uYWwoZmFsc2UpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBBcnJheU5vZGU6OkFycmF5Tm9kZShpbnQgbGluZU51bWJlciwgaW50
IGVsaXNpb24sIEVsZW1lbnROb2RlKiBlbGVtZW50KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFycmF5Tm9kZTo6QXJyYXlOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGludCBlbGlzaW9uLCBFbGVtZW50Tm9kZSogZWxlbWVudCkK
KyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2VsZW1lbnQo
ZWxlbWVudCkKICAgICAgICAgLCBtX2VsaXNpb24oZWxpc2lvbikKICAgICAgICAgLCBtX29wdGlv
bmFsKHRydWUpCkBAIC0xNTQsNTcgKzE1NSw1NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIFByb3BlcnR5TGlzdE5vZGU6OlByb3BlcnR5TGlzdE5vZGUoaW50
IGxpbmVOdW1iZXIsIFByb3BlcnR5Tm9kZSogbm9kZSkKLSAgICAgICAgOiBOb2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIFByb3BlcnR5TGlzdE5vZGU6OlByb3BlcnR5TGlzdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUHJvcGVydHlOb2RlKiBub2RlKQorICAgICAgICA6
IE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9ub2RlKG5vZGUpCiAgICAgICAgICwgbV9uZXh0
KDApCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcm9wZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0
eUxpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eU5vZGUqIG5vZGUsIFByb3BlcnR5TGlz
dE5vZGUqIGxpc3QpCi0gICAgICAgIDogTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcm9w
ZXJ0eUxpc3ROb2RlOjpQcm9wZXJ0eUxpc3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIFByb3BlcnR5Tm9kZSogbm9kZSwgUHJvcGVydHlMaXN0Tm9kZSogbGlzdCkKKyAgICAg
ICAgOiBOb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbm9kZShub2RlKQogICAgICAgICAsIG1f
bmV4dCgwKQogICAgIHsKICAgICAgICAgbGlzdC0+bV9uZXh0ID0gdGhpczsKICAgICB9CiAKLSAg
ICBpbmxpbmUgT2JqZWN0TGl0ZXJhbE5vZGU6Ok9iamVjdExpdGVyYWxOb2RlKGludCBsaW5lTnVt
YmVyKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIE9i
amVjdExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAs
IG1fbGlzdCgwKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgT2JqZWN0TGl0ZXJhbE5vZGU6
Ok9iamVjdExpdGVyYWxOb2RlKGludCBsaW5lTnVtYmVyLCBQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0
KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIE9iamVj
dExpdGVyYWxOb2RlOjpPYmplY3RMaXRlcmFsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxvY2F0aW9uKQogICAgICAgICAsIG1fbGlzdChsaXN0KQogICAgIHsKICAgICB9CiAKLSAgICBp
bmxpbmUgQnJhY2tldEFjY2Vzc29yTm9kZTo6QnJhY2tldEFjY2Vzc29yTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIGJv
b2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGlu
ZU51bWJlcikKKyAgICBpbmxpbmUgQnJhY2tldEFjY2Vzc29yTm9kZTo6QnJhY2tldEFjY2Vzc29y
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50
cykKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2Jhc2Uo
YmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCiAgICAgICAgICwgbV9zdWJz
Y3JpcHRIYXNBc3NpZ25tZW50cyhzdWJzY3JpcHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIERvdEFjY2Vzc29yTm9kZTo6RG90QWNjZXNzb3JOb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCi0g
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRG90QWNjZXNz
b3JOb2RlOjpEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgICAgICA6
IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAg
ICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcmd1bWVudExp
c3ROb2RlOjpBcmd1bWVudExpc3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikKLSAgICAgICAgOiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFyZ3VtZW50TGlz
dE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAgICAgIDogTm9kZShsb2NhdGlvbikKICAgICAgICAg
LCBtX25leHQoMCkKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAg
aW5saW5lIEFyZ3VtZW50TGlzdE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUoaW50IGxpbmVOdW1iZXIs
IEFyZ3VtZW50TGlzdE5vZGUqIGxpc3ROb2RlLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAg
ICAgOiBOb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEFyZ3VtZW50TGlzdE5vZGU6OkFyZ3Vt
ZW50TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQXJndW1lbnRMaXN0
Tm9kZSogbGlzdE5vZGUsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IE5vZGUobG9j
YXRpb24pCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAg
ewpAQCAtMjIxLDQ1ICsyMjIsNDUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAot
ICAgIGlubGluZSBOZXdFeHByTm9kZTo6TmV3RXhwck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJl
c3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisg
ICAgaW5saW5lIE5ld0V4cHJOb2RlOjpOZXdFeHByTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX2FyZ3MoMCkK
ICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIE5ld0V4cHJOb2RlOjpOZXdFeHByTm9kZShpbnQg
bGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUqIGFyZ3MpCi0g
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgTmV3RXhwck5v
ZGU6Ok5ld0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2RlKiBhcmdzKQorICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgICAgICAsIG1fYXJncyhh
cmdzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRXZhbEZ1bmN0aW9uQ2FsbE5vZGU6OkV2
YWxGdW5jdGlvbkNhbGxOb2RlKGludCBsaW5lTnVtYmVyLCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkK
LSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBFdmFsRnVu
Y3Rpb25DYWxsTm9kZTo6RXZhbEZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0
YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9hcmdzKGFyZ3MpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OkZ1bmN0aW9uQ2FsbFZhbHVl
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIsIEFyZ3VtZW50c05vZGUq
IGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5l
IEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByLCBBcmd1bWVudHNOb2Rl
KiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBU
aHJvd2FibGVFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAg
ICAgICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX2FyZ3MoYXJncykKICAgICB7CiAgICAg
fQogCi0gICAgaW5saW5lIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjpGdW5jdGlvbkNhbGxSZXNv
bHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3VtZW50
c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAg
aW5saW5lIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlOjpGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
QXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
CiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBl
bmRPZmZzZXQpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX2FyZ3MoYXJn
cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpG
dW5jdGlvbkNhbGxCcmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJh
c2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEFyZ3VtZW50c05vZGUqIGFyZ3MsIHVuc2ln
bmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQotICAg
ICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIEZ1bmN0aW9uQ2Fs
bEJyYWNrZXROb2RlOjpGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNj
cmlwdCwgQXJndW1lbnRzTm9kZSogYXJncywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9j
YXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9z
dWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtMjY3LDggKzI2OCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRnVuY3Rpb25DYWxsRG90Tm9kZTo6RnVuY3Rpb25D
YWxsRG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBGdW5jdGlvbkNhbGxEb3ROb2RlOjpGdW5j
dGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgQXJndW1lbnRzTm9kZSogYXJn
cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dh
YmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAg
ICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKQEAgLTI3NiwzMSAr
Mjc3LDMxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQ2Fs
bEZ1bmN0aW9uQ2FsbERvdE5vZGU6OkNhbGxGdW5jdGlvbkNhbGxEb3ROb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEFyZ3Vt
ZW50c05vZGUqIGFyZ3MsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEZ1bmN0aW9uQ2FsbERvdE5vZGUobGluZU51bWJl
ciwgYmFzZSwgaWRlbnQsIGFyZ3MsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQorICAg
IGlubGluZSBDYWxsRnVuY3Rpb25DYWxsRG90Tm9kZTo6Q2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBG
dW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIHN0
YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBBcHBseUZ1
bmN0aW9uQ2FsbERvdE5vZGU6OkFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVu
dHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBGdW5jdGlvbkNhbGxEb3ROb2RlKGxpbmVOdW1iZXIs
IGJhc2UsIGlkZW50LCBhcmdzLCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICBp
bmxpbmUgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIGlkZW50LCBBcmd1bWVudHNOb2RlKiBhcmdzLCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBG
dW5jdGlvbkNhbGxEb3ROb2RlKGxvY2F0aW9uLCBiYXNlLCBpZGVudCwgYXJncywgZGl2b3QsIHN0
YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVQb3N0
UmVzb2x2ZU5vZGU6OlByZVBvc3RSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJl
c3VsdFR5cGU6Om51bWJlclR5cGUoKSkgLy8gY291bGQgYmUgcmV1c2FibGUgZm9yIHByZT8KKyAg
ICBpbmxpbmUgUHJlUG9zdFJlc29sdmVOb2RlOjpQcmVQb3N0UmVzb2x2ZU5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCkpIC8v
IGNvdWxkIGJlIHJldXNhYmxlIGZvciBwcmU/CiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9pZGVudChp
ZGVudCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFBvc3RmaXhSZXNvbHZlTm9kZTo6UG9z
dGZpeFJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwg
T3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogUHJlUG9zdFJlc29sdmVOb2RlKGxpbmVOdW1iZXIs
IGlkZW50LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgUG9zdGZp
eFJlc29sdmVOb2RlOjpQb3N0Zml4UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAg
ICA6IFByZVBvc3RSZXNvbHZlTm9kZShsb2NhdGlvbiwgaWRlbnQsIGRpdm90LCBzdGFydE9mZnNl
dCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIFBvc3RmaXhCcmFja2V0Tm9kZTo6UG9zdGZpeEJyYWNrZXROb2RlKGludCBs
aW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlw
dCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgUG9zdGZpeEJyYWNrZXROb2RlOjpQb3N0Zml4QnJhY2tldE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Np
b25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90
LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAgICAsIG1fYmFzZShiYXNlKQogICAgICAg
ICAsIG1fc3Vic2NyaXB0KHN1YnNjcmlwdCkKQEAgLTMwOCw4ICszMDksOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFBvc3RmaXhEb3ROb2RlOjpQb3N0Zml4
RG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyKQorICAgIGlubGluZSBQb3N0Zml4RG90Tm9kZTo6UG9zdGZpeERvdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZv
dCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAg
ICAgLCBtX2lkZW50KGlkZW50KQpAQCAtMzE3LDY4ICszMTgsNjggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQb3N0Zml4RXJyb3JOb2RlOjpQb3N0Zml4RXJy
b3JOb2RlKGludCBsaW5lTnVtYmVyLCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQb3N0Zml4RXJyb3JOb2RlOjpQb3N0Zml4
RXJyb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIE9wZXJhdG9yIG9wZXIs
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJs
ZVN1YkV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KQogICAgICAg
ICAsIG1fb3BlcmF0b3Iob3BlcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlbGV0ZVJl
c29sdmVOb2RlOjpEZWxldGVSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAg
aW5saW5lIERlbGV0ZVJlc29sdmVOb2RlOjpEZWxldGVSZXNvbHZlTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9pZGVudChpZGVu
dCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIERlbGV0ZUJyYWNrZXROb2RlOjpEZWxldGVC
cmFja2V0Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Np
b25Ob2RlKiBzdWJzY3JpcHQsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIp
CisgICAgaW5saW5lIERlbGV0ZUJyYWNrZXROb2RlOjpEZWxldGVCcmFja2V0Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YnNjcmlwdCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRP
ZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9zdWJzY3JpcHQoc3Vi
c2NyaXB0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVsZXRlRG90Tm9kZTo6RGVsZXRl
RG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIGlkZW50LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQorICAg
IGlubGluZSBEZWxldGVEb3ROb2RlOjpEZWxldGVEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dh
YmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAg
ICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICB7CiAgICAgfQog
Ci0gICAgaW5saW5lIERlbGV0ZVZhbHVlTm9kZTo6RGVsZXRlVmFsdWVOb2RlKGludCBsaW5lTnVt
YmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5l
TnVtYmVyKQorICAgIGlubGluZSBEZWxldGVWYWx1ZU5vZGU6OkRlbGV0ZVZhbHVlTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAg
ICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIFZvaWROb2RlOjpWb2lkTm9kZShpbnQgbGluZU51bWJl
ciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51
bWJlcikKKyAgICBpbmxpbmUgVm9pZE5vZGU6OlZvaWROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IEV4cHJlc3Npb25O
b2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgVHlwZU9mUmVzb2x2ZU5vZGU6OlR5cGVPZlJlc29sdmVOb2RlKGludCBsaW5lTnVt
YmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCisgICAgaW5saW5lIFR5cGVPZlJl
c29sdmVOb2RlOjpUeXBlT2ZSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShs
b2NhdGlvbiwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQogICAgICAgICAsIG1faWRlbnQoaWRl
bnQpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZh
bHVlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQorICAg
IGlubGluZSBUeXBlT2ZWYWx1ZU5vZGU6OlR5cGVPZlZhbHVlTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAgOiBFeHByZXNz
aW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6c3RyaW5nVHlwZSgpKQogICAgICAgICAsIG1f
ZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJlZml4UmVzb2x2ZU5vZGU6
OlByZWZpeFJlc29sdmVOb2RlKGludCBsaW5lTnVtYmVyLCBjb25zdCBJZGVudGlmaWVyJiBpZGVu
dCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogUHJlUG9zdFJlc29sdmVOb2RlKGxpbmVOdW1i
ZXIsIGlkZW50LCBkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKKyAgICBpbmxpbmUgUHJl
Zml4UmVzb2x2ZU5vZGU6OlByZWZpeFJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25l
ZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAg
ICAgOiBQcmVQb3N0UmVzb2x2ZU5vZGUobG9jYXRpb24sIGlkZW50LCBkaXZvdCwgc3RhcnRPZmZz
ZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX29wZXJhdG9yKG9wZXIpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBQcmVmaXhCcmFja2V0Tm9kZTo6UHJlZml4QnJhY2tldE5vZGUoaW50IGxp
bmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0
LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVu
c2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBQcmVmaXhCcmFja2V0Tm9kZTo6UHJlZml4QnJhY2tldE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25O
b2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxvY2F0aW9uKQogICAgICAgICAsIFRocm93YWJsZVByZWZpeGVkU3ViRXhwcmVzc2lvbkRhdGEo
ZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAg
ICAgICAgICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtMzg2LDggKzM4Nyw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUHJlZml4RG90Tm9kZTo6UHJl
Zml4RG90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9k
ZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBQcmVmaXhEb3ROb2RlOjpQcmVmaXhEb3ROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNzaW9u
RGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFz
ZSkKICAgICAgICAgLCBtX2lkZW50KGlkZW50KQpAQCAtMzk1LDQzICszOTYsNDMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBQcmVmaXhFcnJvck5vZGU6OlBy
ZWZpeEVycm9yTm9kZShpbnQgbGluZU51bWJlciwgT3BlcmF0b3Igb3BlciwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUHJlZml4RXJyb3JOb2RlOjpQ
cmVmaXhFcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgT3BlcmF0b3Ig
b3BlciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAg
ICAgICwgbV9vcGVyYXRvcihvcGVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVW5hcnlP
cE5vZGU6OlVuYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBSZXN1bHRUeXBlIHR5cGUsIEV4cHJl
c3Npb25Ob2RlKiBleHByLCBPcGNvZGVJRCBvcGNvZGVJRCkKLSAgICAgICAgOiBFeHByZXNzaW9u
Tm9kZShsaW5lTnVtYmVyLCB0eXBlKQorICAgIGlubGluZSBVbmFyeU9wTm9kZTo6VW5hcnlPcE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgUmVzdWx0VHlwZSB0eXBlLCBFeHBy
ZXNzaW9uTm9kZSogZXhwciwgT3Bjb2RlSUQgb3Bjb2RlSUQpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobG9jYXRpb24sIHR5cGUpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwg
bV9vcGNvZGVJRChvcGNvZGVJRCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFVuYXJ5UGx1
c05vZGU6OlVuYXJ5UGx1c05vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
KQotICAgICAgICA6IFVuYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5
cGUoKSwgZXhwciwgb3BfdG9fanNudW1iZXIpCisgICAgaW5saW5lIFVuYXJ5UGx1c05vZGU6OlVu
YXJ5UGx1c05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIpCisgICAgICAgIDogVW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6Om51
bWJlclR5cGUoKSwgZXhwciwgb3BfdG9fanNudW1iZXIpCiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBOZWdhdGVOb2RlOjpOZWdhdGVOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9k
ZSogZXhwcikKLSAgICAgICAgOiBVbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpu
dW1iZXJUeXBlKCksIGV4cHIsIG9wX25lZ2F0ZSkKKyAgICBpbmxpbmUgTmVnYXRlTm9kZTo6TmVn
YXRlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwcikKKyAgICAgICAgOiBVbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6bnVtYmVy
VHlwZSgpLCBleHByLCBvcF9uZWdhdGUpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCaXR3
aXNlTm90Tm9kZTo6Qml0d2lzZU5vdE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6
OmZvckJpdE9wKCkpCisgICAgaW5saW5lIEJpdHdpc2VOb3ROb2RlOjpCaXR3aXNlTm90Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSkK
ICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIExvZ2lj
YWxOb3ROb2RlOjpMb2dpY2FsTm90Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIpCi0gICAgICAgIDogVW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9v
bGVhblR5cGUoKSwgZXhwciwgb3Bfbm90KQorICAgIGlubGluZSBMb2dpY2FsTm90Tm9kZTo6TG9n
aWNhbE5vdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIpCisgICAgICAgIDogVW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJv
b2xlYW5UeXBlKCksIGV4cHIsIG9wX25vdCkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEJp
bmFyeU9wTm9kZTo6QmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVtYmVyKQor
ICAgIGlubGluZSBCaW5hcnlPcE5vZGU6OkJpbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAg
OiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQogICAg
ICAgICAsIG1fZXhwcjIoZXhwcjIpCiAgICAgICAgICwgbV9vcGNvZGVJRChvcGNvZGVJRCkKQEAg
LTQzOSw4ICs0NDAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIEJpbmFyeU9wTm9kZTo6QmluYXJ5T3BOb2RlKGludCBsaW5lTnVtYmVyLCBSZXN1bHRUeXBl
IHR5cGUsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNv
ZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEV4cHJl
c3Npb25Ob2RlKGxpbmVOdW1iZXIsIHR5cGUpCisgICAgaW5saW5lIEJpbmFyeU9wTm9kZTo6Qmlu
YXJ5T3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFJlc3VsdFR5cGUgdHlw
ZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlE
IG9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobG9jYXRpb24sIHR5cGUpCiAgICAgICAgICwgbV9leHByMShleHByMSkKICAgICAgICAg
LCBtX2V4cHIyKGV4cHIyKQogICAgICAgICAsIG1fb3Bjb2RlSUQob3Bjb2RlSUQpCkBAIC00NDgs
MTQwICs0NDksMTQwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgTXVsdE5vZGU6Ok11bHROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhw
cjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAg
ICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCks
IGV4cHIxLCBleHByMiwgb3BfbXVsLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBN
dWx0Tm9kZTo6TXVsdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6Om51
bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9tdWwsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAg
ICAgewogICAgIH0KIAotICAgIGlubGluZSBEaXZOb2RlOjpEaXZOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1
bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZGl2LCByaWdodEhhc0Fzc2ln
bm1lbnRzKQorICAgIGlubGluZSBEaXZOb2RlOjpEaXZOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0
aW9uLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZGl2LCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKIAotICAgIGlubGluZSBNb2ROb2RlOjpN
b2ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9w
Tm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIxLCBleHByMiwg
b3BfbW9kLCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBNb2ROb2RlOjpNb2ROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAg
IDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlKCksIGV4cHIx
LCBleHByMiwgb3BfbW9kLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgQWRkTm9kZTo6QWRkTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
LSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Zm9yQWRkKGV4
cHIxLT5yZXN1bHREZXNjcmlwdG9yKCksIGV4cHIyLT5yZXN1bHREZXNjcmlwdG9yKCkpLCBleHBy
MSwgZXhwcjIsIG9wX2FkZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgQWRkTm9k
ZTo6QWRkTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Zm9yQWRkKGV4
cHIxLT5yZXN1bHREZXNjcmlwdG9yKCksIGV4cHIyLT5yZXN1bHREZXNjcmlwdG9yKCkpLCBleHBy
MSwgZXhwcjIsIG9wX2FkZCwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0g
ICAgaW5saW5lIFN1Yk5vZGU6OlN1Yk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
Ci0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6Om51bWJlclR5
cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9zdWIsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5s
aW5lIFN1Yk5vZGU6OlN1Yk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6
Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9zdWIsIHJpZ2h0SGFzQXNzaWdubWVudHMp
CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBMZWZ0U2hpZnROb2RlOjpMZWZ0U2hpZnROb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpmb3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2xzaGlm
dCwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTGVmdFNoaWZ0Tm9kZTo6TGVmdFNo
aWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSog
ZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQor
ICAgICAgICA6IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9sc2hpZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBSaWdodFNoaWZ0Tm9kZTo6UmlnaHRTaGlmdE5vZGUoaW50IGxpbmVO
dW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIs
IFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3BfcnNoaWZ0LCByaWdodEhh
c0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBSaWdodFNoaWZ0Tm9kZTo6UmlnaHRTaGlmdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAg
OiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBl
eHByMiwgb3BfcnNoaWZ0LCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZTo6VW5zaWduZWRSaWdodFNoaWZ0Tm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGlu
ZU51bWJlciwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3Vyc2hp
ZnQsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIFVuc2lnbmVkUmlnaHRTaGlmdE5v
ZGU6OlVuc2lnbmVkUmlnaHRTaGlmdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3Vs
dFR5cGU6Om51bWJlclR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF91cnNoaWZ0LCByaWdodEhhc0Fz
c2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTGVzc05vZGU6Okxlc3NOb2Rl
KGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShs
aW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2xl
c3MsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIExlc3NOb2RlOjpMZXNzTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6
IEJpbmFyeU9wTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEs
IGV4cHIyLCBvcF9sZXNzLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAg
ICBpbmxpbmUgR3JlYXRlck5vZGU6OkdyZWF0ZXJOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpi
b29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX2dyZWF0ZXIsIHJpZ2h0SGFzQXNzaWdubWVu
dHMpCisgICAgaW5saW5lIEdyZWF0ZXJOb2RlOjpHcmVhdGVyTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9wTm9kZShs
b2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9ncmVh
dGVyLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgTGVz
c0VxTm9kZTo6TGVzc0VxTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAg
ICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwg
ZXhwcjEsIGV4cHIyLCBvcF9sZXNzZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5l
IExlc3NFcU5vZGU6Okxlc3NFcU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5
cGU6OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfbGVzc2VxLCByaWdodEhhc0Fzc2ln
bm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgR3JlYXRlckVxTm9kZTo6R3JlYXRl
ckVxTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlP
cE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIy
LCBvcF9ncmVhdGVyZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEdyZWF0ZXJF
cU5vZGU6OkdyZWF0ZXJFcU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6
OmJvb2xlYW5UeXBlKCksIGV4cHIxLCBleHByMiwgb3BfZ3JlYXRlcmVxLCByaWdodEhhc0Fzc2ln
bm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVGhyb3dhYmxlQmluYXJ5T3BOb2Rl
OjpUaHJvd2FibGVCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIFJlc3VsdFR5cGUgdHlwZSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9w
Y29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDogQmluYXJ5T3BOb2Rl
KGxpbmVOdW1iZXIsIHR5cGUsIGV4cHIxLCBleHByMiwgb3Bjb2RlSUQsIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCisgICAgaW5saW5lIFRocm93YWJsZUJpbmFyeU9wTm9kZTo6VGhyb3dhYmxlQmluYXJ5
T3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFJlc3VsdFR5cGUgdHlwZSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlEIG9w
Y29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2Rl
KGxvY2F0aW9uLCB0eXBlLCBleHByMSwgZXhwcjIsIG9wY29kZUlELCByaWdodEhhc0Fzc2lnbm1l
bnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVGhyb3dhYmxlQmluYXJ5T3BOb2RlOjpU
aHJvd2FibGVCaW5hcnlPcE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCBvcGNvZGVJRCwgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBleHByMSwg
ZXhwcjIsIG9wY29kZUlELCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgIGlubGluZSBUaHJvd2Fi
bGVCaW5hcnlPcE5vZGU6OlRocm93YWJsZUJpbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgT3Bjb2RlSUQgb3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAg
OiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgb3Bjb2RlSUQsIHJpZ2h0SGFz
QXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBJbnN0YW5jZU9mTm9kZTo6
SW5zdGFuY2VPZk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAgICAgIDog
VGhyb3dhYmxlQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBl
KCksIGV4cHIxLCBleHByMiwgb3BfaW5zdGFuY2VvZiwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAg
ICBpbmxpbmUgSW5zdGFuY2VPZk5vZGU6Okluc3RhbmNlT2ZOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogVGhyb3dhYmxlQmluYXJ5
T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIs
IG9wX2luc3RhbmNlb2YsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAg
IGlubGluZSBJbk5vZGU6OkluTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAg
ICAgICAgOiBUaHJvd2FibGVCaW5hcnlPcE5vZGUobGluZU51bWJlciwgZXhwcjEsIGV4cHIyLCBv
cF9pbiwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgSW5Ob2RlOjpJbk5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBU
aHJvd2FibGVCaW5hcnlPcE5vZGUobG9jYXRpb24sIGV4cHIxLCBleHByMiwgb3BfaW4sIHJpZ2h0
SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBFcXVhbE5vZGU6OkVx
dWFsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlP
cE5vZGUobGluZU51bWJlciwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIy
LCBvcF9lcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgRXF1YWxOb2RlOjpFcXVh
bE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAg
ICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCks
IGV4cHIxLCBleHByMiwgb3BfZXEsIHJpZ2h0SGFzQXNzaWdubWVudHMpCiAgICAgewogICAgIH0K
IAotICAgIGlubGluZSBOb3RFcXVhbE5vZGU6Ok5vdEVxdWFsTm9kZShpbnQgbGluZU51bWJlciwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwgUmVzdWx0
VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBvcF9uZXEsIHJpZ2h0SGFzQXNzaWdu
bWVudHMpCisgICAgaW5saW5lIE5vdEVxdWFsTm9kZTo6Tm90RXF1YWxOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BO
b2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9w
X25lcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIFN0
cmljdEVxdWFsTm9kZTo6U3RyaWN0RXF1YWxOb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1bHRUeXBlOjpib29s
ZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX3N0cmljdGVxLCByaWdodEhhc0Fzc2lnbm1lbnRz
KQorICAgIGlubGluZSBTdHJpY3RFcXVhbE5vZGU6OlN0cmljdEVxdWFsTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25O
b2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKQorICAgICAgICA6IEJpbmFyeU9w
Tm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6Ym9vbGVhblR5cGUoKSwgZXhwcjEsIGV4cHIyLCBv
cF9zdHJpY3RlcSwgcmlnaHRIYXNBc3NpZ25tZW50cykKICAgICB7CiAgICAgfQogCi0gICAgaW5s
aW5lIE5vdFN0cmljdEVxdWFsTm9kZTo6Tm90U3RyaWN0RXF1YWxOb2RlKGludCBsaW5lTnVtYmVy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKQotICAgICAgICA6IEJpbmFyeU9wTm9kZShsaW5lTnVtYmVyLCBSZXN1
bHRUeXBlOjpib29sZWFuVHlwZSgpLCBleHByMSwgZXhwcjIsIG9wX25zdHJpY3RlcSwgcmlnaHRI
YXNBc3NpZ25tZW50cykKKyAgICBpbmxpbmUgTm90U3RyaWN0RXF1YWxOb2RlOjpOb3RTdHJpY3RF
cXVhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUq
IGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykK
KyAgICAgICAgOiBCaW5hcnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBl
KCksIGV4cHIxLCBleHByMiwgb3BfbnN0cmljdGVxLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgQml0QW5kTm9kZTo6Qml0QW5kTm9kZShpbnQgbGluZU51
bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJlciwg
UmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXRhbmQsIHJpZ2h0SGFz
QXNzaWdubWVudHMpCisgICAgaW5saW5lIEJpdEFuZE5vZGU6OkJpdEFuZE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5hcnlP
cE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwgb3Bf
Yml0YW5kLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
Qml0T3JOb2RlOjpCaXRPck5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpCi0gICAg
ICAgIDogQmluYXJ5T3BOb2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4
cHIxLCBleHByMiwgb3BfYml0b3IsIHJpZ2h0SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEJp
dE9yTm9kZTo6Qml0T3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpCisgICAgICAgIDogQmluYXJ5T3BOb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpm
b3JCaXRPcCgpLCBleHByMSwgZXhwcjIsIG9wX2JpdG9yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQog
ICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQml0WE9yTm9kZTo6Qml0WE9yTm9kZShpbnQgbGlu
ZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cykKLSAgICAgICAgOiBCaW5hcnlPcE5vZGUobGluZU51bWJl
ciwgUmVzdWx0VHlwZTo6Zm9yQml0T3AoKSwgZXhwcjEsIGV4cHIyLCBvcF9iaXR4b3IsIHJpZ2h0
SGFzQXNzaWdubWVudHMpCisgICAgaW5saW5lIEJpdFhPck5vZGU6OkJpdFhPck5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cykKKyAgICAgICAgOiBCaW5h
cnlPcE5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmZvckJpdE9wKCksIGV4cHIxLCBleHByMiwg
b3BfYml0eG9yLCByaWdodEhhc0Fzc2lnbm1lbnRzKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxp
bmUgTG9naWNhbE9wTm9kZTo6TG9naWNhbE9wTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIExvZ2ljYWxPcGVyYXRvciBvcGVy
KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIsIFJlc3VsdFR5cGU6OmJvb2xl
YW5UeXBlKCkpCisgICAgaW5saW5lIExvZ2ljYWxPcE5vZGU6OkxvZ2ljYWxPcE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNz
aW9uTm9kZSogZXhwcjIsIExvZ2ljYWxPcGVyYXRvciBvcGVyKQorICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpKQogICAgICAgICAsIG1f
ZXhwcjEoZXhwcjEpCiAgICAgICAgICwgbV9leHByMihleHByMikKICAgICAgICAgLCBtX29wZXJh
dG9yKG9wZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDb25kaXRpb25hbE5vZGU6OkNv
bmRpdGlvbmFsTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGxvZ2ljYWwsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKQotICAgICAgICA6IEV4
cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIENvbmRpdGlvbmFsTm9kZTo6Q29u
ZGl0aW9uYWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25O
b2RlKiBsb2dpY2FsLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2xvZ2lj
YWwobG9naWNhbCkKICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1fZXhwcjIo
ZXhwcjIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGU6
OlJlYWRNb2RpZnlSZXNvbHZlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgUmVhZE1vZGlmeVJlc29sdmVOb2RlOjpSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIE9w
ZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25t
ZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRP
ZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhy
b3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAg
ICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBtX3JpZ2h0KHJpZ2h0KQpAQCAtNTkwLDE1
ICs1OTEsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBB
c3NpZ25SZXNvbHZlTm9kZTo6QXNzaWduUmVzb2x2ZU5vZGUoaW50IGxpbmVOdW1iZXIsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQpCi0gICAgICAgIDogRXhw
cmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXNzaWduUmVzb2x2ZU5vZGU6OkFz
c2lnblJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElk
ZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQpCisgICAgICAgIDogRXhwcmVz
c2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9pZGVudChpZGVudCkKICAgICAgICAgLCBt
X3JpZ2h0KHJpZ2h0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeUJyYWNr
ZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciBvcGVyLCBFeHBy
ZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1
bnNpZ25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgUmVhZE1vZGlmeUJyYWNrZXROb2RlOjpSZWFkTW9kaWZ5QnJhY2tldE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4
cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCkKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJv
d2FibGVTdWJFeHByZXNzaW9uRGF0YShkaXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAg
ICAgICAgLCBtX2Jhc2UoYmFzZSkKICAgICAgICAgLCBtX3N1YnNjcmlwdChzdWJzY3JpcHQpCkBA
IC02MDksOCArNjEwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlu
bGluZSBBc3NpZ25CcmFja2V0Tm9kZTo6QXNzaWduQnJhY2tldE5vZGUoaW50IGxpbmVOdW1iZXIs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBFeHByZXNz
aW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNzaWdubWVudHMsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAg
ICBpbmxpbmUgQXNzaWduQnJhY2tldE5vZGU6OkFzc2lnbkJyYWNrZXROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9k
ZSogc3Vic2NyaXB0LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgc3Vic2NyaXB0SGFzQXNz
aWdubWVudHMsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lv
bk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEoZGl2b3Qs
IHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAg
ICwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KQpAQCAtNjIwLDggKzYyMSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQXNzaWduRG90Tm9kZTo6QXNzaWduRG90
Tm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50
cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpCi0gICAgICAgIDogRXhwcmVzc2lvbk5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgQXNz
aWduRG90Tm9kZTo6QXNzaWduRG90Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Np
b25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwg
dW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKKyAgICAgICAgOiBFeHBy
ZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBUaHJvd2FibGVFeHByZXNzaW9uRGF0YShk
aXZvdCwgc3RhcnRPZmZzZXQsIGVuZE9mZnNldCkKICAgICAgICAgLCBtX2Jhc2UoYmFzZSkKICAg
ICAgICAgLCBtX2lkZW50KGlkZW50KQpAQCAtNjMwLDggKzYzMSw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgUmVhZE1vZGlmeURvdE5vZGU6OlJlYWRNb2Rp
ZnlEb3ROb2RlKGludCBsaW5lTnVtYmVyLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIE9wZXJhdG9yIG9wZXIsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKLSAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsaW5lTnVt
YmVyKQorICAgIGlubGluZSBSZWFkTW9kaWZ5RG90Tm9kZTo6UmVhZE1vZGlmeURvdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIGlkZW50LCBPcGVyYXRvciBvcGVyLCBFeHByZXNzaW9uTm9kZSogcmlnaHQs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0
T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9j
YXRpb24pCiAgICAgICAgICwgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRhdGEoZGl2b3QsIHN0YXJ0
T2Zmc2V0LCBlbmRPZmZzZXQpCiAgICAgICAgICwgbV9iYXNlKGJhc2UpCiAgICAgICAgICwgbV9p
ZGVudChpZGVudCkKQEAgLTY0MSwyMSArNjQyLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgQXNzaWduRXJyb3JOb2RlOjpBc3NpZ25FcnJvck5vZGUoaW50
IGxpbmVOdW1iZXIsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAg
aW5saW5lIEFzc2lnbkVycm9yTm9kZTo6QXNzaWduRXJyb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5z
aWduZWQgZW5kT2Zmc2V0KQorICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0aW9uKQogICAg
ICAgICAsIFRocm93YWJsZUV4cHJlc3Npb25EYXRhKGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zm
c2V0KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgQ29tbWFOb2RlOjpDb21tYU5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
KQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIENvbW1h
Tm9kZTo6Q29tbWFOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKQorICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxvY2F0aW9uKQogICAgIHsKICAgICAgICAgbV9leHByZXNzaW9ucy5hcHBlbmQoZXhw
cjEpOwogICAgICAgICBtX2V4cHJlc3Npb25zLmFwcGVuZChleHByMik7CiAgICAgfQogCi0gICAg
aW5saW5lIENvbnN0U3RhdGVtZW50Tm9kZTo6Q29uc3RTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVt
YmVyLCBDb25zdERlY2xOb2RlKiBuZXh0KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51
bWJlcikKKyAgICBpbmxpbmUgQ29uc3RTdGF0ZW1lbnROb2RlOjpDb25zdFN0YXRlbWVudE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgQ29uc3REZWNsTm9kZSogbmV4dCkKKyAg
ICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbmV4dChuZXh0KQog
ICAgIHsKICAgICB9CkBAIC02NjQsNTcgKzY2NSw1NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7
CiAgICAgfQogCi0gICAgaW5saW5lIEVtcHR5U3RhdGVtZW50Tm9kZTo6RW1wdHlTdGF0ZW1lbnRO
b2RlKGludCBsaW5lTnVtYmVyKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikK
KyAgICBpbmxpbmUgRW1wdHlTdGF0ZW1lbnROb2RlOjpFbXB0eVN0YXRlbWVudE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0
aW9uKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRGVidWdnZXJTdGF0ZW1lbnROb2RlOjpE
ZWJ1Z2dlclN0YXRlbWVudE5vZGUoaW50IGxpbmVOdW1iZXIpCi0gICAgICAgIDogU3RhdGVtZW50
Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBEZWJ1Z2dlclN0YXRlbWVudE5vZGU6OkRlYnVn
Z2VyU3RhdGVtZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQorICAgICAg
ICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxp
bmUgRXhwclN0YXRlbWVudE5vZGU6OkV4cHJTdGF0ZW1lbnROb2RlKGludCBsaW5lTnVtYmVyLCBF
eHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIp
CisgICAgaW5saW5lIEV4cHJTdGF0ZW1lbnROb2RlOjpFeHByU3RhdGVtZW50Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwcikKKyAgICAgICAg
OiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhwcihleHByKQogICAgIHsK
ICAgICB9CiAKLSAgICBpbmxpbmUgVmFyU3RhdGVtZW50Tm9kZTo6VmFyU3RhdGVtZW50Tm9kZShp
bnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogU3RhdGVtZW50
Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBWYXJTdGF0ZW1lbnROb2RlOjpWYXJTdGF0ZW1l
bnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBl
eHByKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9leHBy
KGV4cHIpCiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgSWZOb2RlOjpJZk5vZGUoaW50
IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlm
QmxvY2spCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBJ
Zk5vZGU6OklmTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9u
Tm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrKQorICAgICAgICA6IFN0YXRl
bWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9jb25kaXRpb24oY29uZGl0aW9uKQogICAg
ICAgICAsIG1faWZCbG9jayhpZkJsb2NrKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgSWZF
bHNlTm9kZTo6SWZFbHNlTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGNvbmRp
dGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2NrKQot
ICAgICAgICA6IElmTm9kZShsaW5lTnVtYmVyLCBjb25kaXRpb24sIGlmQmxvY2spCisgICAgaW5s
aW5lIElmRWxzZU5vZGU6OklmRWxzZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3Rh
dGVtZW50Tm9kZSogZWxzZUJsb2NrKQorICAgICAgICA6IElmTm9kZShsb2NhdGlvbiwgY29uZGl0
aW9uLCBpZkJsb2NrKQogICAgICAgICAsIG1fZWxzZUJsb2NrKGVsc2VCbG9jaykKICAgICB7CiAg
ICAgfQogCi0gICAgaW5saW5lIERvV2hpbGVOb2RlOjpEb1doaWxlTm9kZShpbnQgbGluZU51bWJl
ciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCBFeHByZXNzaW9uTm9kZSogZXhwcikKLSAgICAg
ICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIERvV2hpbGVOb2RlOjpE
b1doaWxlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2Rl
KiBzdGF0ZW1lbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByKQorICAgICAgICA6IFN0YXRlbWVudE5v
ZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAgICAgICAs
IG1fZXhwcihleHByKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgV2hpbGVOb2RlOjpXaGls
ZU5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2Rl
KiBzdGF0ZW1lbnQpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlu
bGluZSBXaGlsZU5vZGU6OldoaWxlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQorICAgICAg
ICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAg
ICAgICwgbV9zdGF0ZW1lbnQoc3RhdGVtZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUg
Rm9yTm9kZTo6Rm9yTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIEV4cHJlc3Npb25Ob2RlKiBleHByMywgU3RhdGVtZW50Tm9k
ZSogc3RhdGVtZW50KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBp
bmxpbmUgRm9yTm9kZTo6Rm9yTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgRXhwcmVzc2lvbk5v
ZGUqIGV4cHIzLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQpCisgICAgICAgIDogU3RhdGVtZW50
Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIxKGV4cHIxKQogICAgICAgICAsIG1fZXhw
cjIoZXhwcjIpCiAgICAgICAgICwgbV9leHByMyhleHByMykKQEAgLTcyMywzOCArNzI0LDM4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBU1NFUlQoc3RhdGVtZW50KTsKICAgICB9CiAKLSAg
ICBpbmxpbmUgQ29udGludWVOb2RlOjpDb250aW51ZU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBpbnQgbGluZU51bWJlcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIp
CisgICAgaW5saW5lIENvbnRpbnVlTm9kZTo6Q29udGludWVOb2RlKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0
ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1faWRlbnQoZ2xvYmFsRGF0YS0+cHJvcGVy
dHlOYW1lcy0+bnVsbElkZW50aWZpZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBDb250
aW51ZU5vZGU6OkNvbnRpbnVlTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYg
aWRlbnQpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBD
b250aW51ZU5vZGU6OkNvbnRpbnVlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0
aW9uKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgewogICAgIH0KICAgICAKLSAgICBp
bmxpbmUgQnJlYWtOb2RlOjpCcmVha05vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQg
bGluZU51bWJlcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5s
aW5lIEJyZWFrTm9kZTo6QnJlYWtOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0
aW9uKQogICAgICAgICAsIG1faWRlbnQoZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bnVsbElk
ZW50aWZpZXIpCiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBCcmVha05vZGU6OkJyZWFrTm9k
ZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCi0gICAgICAgIDogU3Rh
dGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGluZSBCcmVha05vZGU6OkJyZWFrTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkK
KyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1faWRlbnQoaWRl
bnQpCiAgICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgUmV0dXJuTm9kZTo6UmV0dXJuTm9k
ZShpbnQgbGluZU51bWJlciwgRXhwcmVzc2lvbk5vZGUqIHZhbHVlKQotICAgICAgICA6IFN0YXRl
bWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgUmV0dXJuTm9kZTo6UmV0dXJuTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogdmFsdWUpCisg
ICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX3ZhbHVlKHZhbHVl
KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgV2l0aE5vZGU6OldpdGhOb2RlKGludCBsaW5l
TnVtYmVyLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50LCB1
aW50MzJfdCBkaXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCkKLSAgICAgICAgOiBTdGF0
ZW1lbnROb2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIFdpdGhOb2RlOjpXaXRoTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50LCB1aW50MzJfdCBkaXZvdCwgdWludDMyX3QgZXhwcmVzc2lvbkxl
bmd0aCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZXhw
cihleHByKQogICAgICAgICAsIG1fc3RhdGVtZW50KHN0YXRlbWVudCkKICAgICAgICAgLCBtX2Rp
dm90KGRpdm90KQpAQCAtNzYyLDIxICs3NjMsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBMYWJlbE5vZGU6OkxhYmVsTm9kZShpbnQgbGluZU51bWJlciwg
Y29uc3QgSWRlbnRpZmllciYgbmFtZSwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQotICAgICAg
ICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgTGFiZWxOb2RlOjpMYWJl
bE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYg
bmFtZSwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50KQorICAgICAgICA6IFN0YXRlbWVudE5vZGUo
bG9jYXRpb24pCiAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgICAgICwgbV9zdGF0ZW1lbnQo
c3RhdGVtZW50KQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgVGhyb3dOb2RlOjpUaHJvd05v
ZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAgICAgICA6IFN0YXRl
bWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgVGhyb3dOb2RlOjpUaHJvd05vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCisgICAg
ICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2V4cHIoZXhwcikKICAg
ICB7CiAgICAgfQogCi0gICAgaW5saW5lIFRyeU5vZGU6OlRyeU5vZGUoaW50IGxpbmVOdW1iZXIs
IFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBjb25zdCBJZGVudGlmaWVyJiBleGNlcHRpb25JZGVu
dCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywgU3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2Nr
KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgVHJ5Tm9k
ZTo6VHJ5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2Rl
KiB0cnlCbG9jaywgY29uc3QgSWRlbnRpZmllciYgZXhjZXB0aW9uSWRlbnQsIFN0YXRlbWVudE5v
ZGUqIGNhdGNoQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZpbmFsbHlCbG9jaykKKyAgICAgICAgOiBT
dGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fdHJ5QmxvY2sodHJ5QmxvY2spCiAg
ICAgICAgICwgbV9leGNlcHRpb25JZGVudChleGNlcHRpb25JZGVudCkKICAgICAgICAgLCBtX2Nh
dGNoQmxvY2soY2F0Y2hCbG9jaykKQEAgLTc5NywxNSArNzk4LDE1IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBsLT5tX25leHQgPSB0aGlzOwogICAgIH0KIAotICAgIGlubGluZSBGdW5jRXhw
ck5vZGU6OkZ1bmNFeHByTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRl
bnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFy
YW1ldGVyTm9kZSogcGFyYW1ldGVyKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1i
ZXIpCisgICAgaW5saW5lIEZ1bmNFeHByTm9kZTo6RnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBGdW5jdGlvbkJvZHlO
b2RlKiBib2R5LCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcmFtZXRlck5vZGUqIHBhcmFt
ZXRlcikKKyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2Jv
ZHkoYm9keSkKICAgICB7CiAgICAgICAgIG1fYm9keS0+ZmluaXNoUGFyc2luZyhzb3VyY2UsIHBh
cmFtZXRlciwgaWRlbnQpOwogICAgIH0KIAotICAgIGlubGluZSBGdW5jRGVjbE5vZGU6OkZ1bmNE
ZWNsTm9kZShpbnQgbGluZU51bWJlciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9u
Qm9keU5vZGUqIGJvZHksIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSog
cGFyYW1ldGVyKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxp
bmUgRnVuY0RlY2xOb2RlOjpGdW5jRGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHksIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1ldGVyKQorICAgICAg
ICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9ib2R5KGJvZHkpCiAgICAg
ewogICAgICAgICBtX2JvZHktPmZpbmlzaFBhcnNpbmcoc291cmNlLCBwYXJhbWV0ZXIsIGlkZW50
KTsKQEAgLTgzNywyOSArODM4LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgU3dpdGNoTm9kZTo6U3dpdGNoTm9kZShpbnQgbGluZU51bWJlciwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIsIENhc2VCbG9ja05vZGUqIGJsb2NrKQotICAgICAgICA6IFN0YXRlbWVu
dE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgU3dpdGNoTm9kZTo6U3dpdGNoTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogZXhwciwgQ2FzZUJs
b2NrTm9kZSogYmxvY2spCisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAg
ICAgLCBtX2V4cHIoZXhwcikKICAgICAgICAgLCBtX2Jsb2NrKGJsb2NrKQogICAgIHsKICAgICB9
CiAKLSAgICBpbmxpbmUgQ29uc3REZWNsTm9kZTo6Q29uc3REZWNsTm9kZShpbnQgbGluZU51bWJl
ciwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBpbml0KQotICAgICAg
ICA6IEV4cHJlc3Npb25Ob2RlKGxpbmVOdW1iZXIpCisgICAgaW5saW5lIENvbnN0RGVjbE5vZGU6
OkNvbnN0RGVjbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRl
bnRpZmllciYgaWRlbnQsIEV4cHJlc3Npb25Ob2RlKiBpbml0KQorICAgICAgICA6IEV4cHJlc3Np
b25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1faWRlbnQoaWRlbnQpCiAgICAgICAgICwgbV9u
ZXh0KDApCiAgICAgICAgICwgbV9pbml0KGluaXQpCiAgICAgewogICAgIH0KIAotICAgIGlubGlu
ZSBCbG9ja05vZGU6OkJsb2NrTm9kZShpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIHN0
YXRlbWVudHMpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsaW5lTnVtYmVyKQorICAgIGlubGlu
ZSBCbG9ja05vZGU6OkJsb2NrTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBT
b3VyY2VFbGVtZW50cyogc3RhdGVtZW50cykKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0
aW9uKQogICAgICAgICAsIG1fc3RhdGVtZW50cyhzdGF0ZW1lbnRzKQogICAgIHsKICAgICB9CiAK
LSAgICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJbk5vZGUoaW50IGxpbmVOdW1iZXIsIEV4cHJlc3Np
b25Ob2RlKiBsLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50
KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKKyAgICBpbmxpbmUgRm9ySW5O
b2RlOjpGb3JJbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lv
bk5vZGUqIGwsIEV4cHJlc3Npb25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQp
CisgICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2luaXQoMCkK
ICAgICAgICAgLCBtX2xleHByKGwpCiAgICAgICAgICwgbV9leHByKGV4cHIpCkBAIC04NjgsMTYg
Kzg2OSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEZv
ckluTm9kZTo6Rm9ySW5Ob2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1i
ZXIsIGNvbnN0IElkZW50aWZpZXImIGlkZW50LCBFeHByZXNzaW9uTm9kZSogaW4sIEV4cHJlc3Np
b25Ob2RlKiBleHByLCBTdGF0ZW1lbnROb2RlKiBzdGF0ZW1lbnQsIGludCBkaXZvdCwgaW50IHN0
YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobGluZU51
bWJlcikKKyAgICBpbmxpbmUgRm9ySW5Ob2RlOjpGb3JJbk5vZGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCwgRXhwcmVzc2lvbk5vZGUqIGluLCBFeHByZXNzaW9uTm9kZSogZXhwciwgU3RhdGVt
ZW50Tm9kZSogc3RhdGVtZW50LCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9m
ZnNldCkKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1faW5p
dCgwKQotICAgICAgICAsIG1fbGV4cHIobmV3IChnbG9iYWxEYXRhKSBSZXNvbHZlTm9kZShsaW5l
TnVtYmVyLCBpZGVudCwgZGl2b3QgLSBzdGFydE9mZnNldCkpCisgICAgICAgICwgbV9sZXhwcihu
ZXcgKGdsb2JhbERhdGEpIFJlc29sdmVOb2RlKGxvY2F0aW9uLCBpZGVudCwgZGl2b3QgLSBzdGFy
dE9mZnNldCkpCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgICAgICwgbV9zdGF0ZW1lbnQo
c3RhdGVtZW50KQogICAgICAgICAsIG1faWRlbnRJc1ZhckRlY2wodHJ1ZSkKICAgICB7CiAgICAg
ICAgIGlmIChpbikgewotICAgICAgICAgICAgQXNzaWduUmVzb2x2ZU5vZGUqIG5vZGUgPSBuZXcg
KGdsb2JhbERhdGEpIEFzc2lnblJlc29sdmVOb2RlKGxpbmVOdW1iZXIsIGlkZW50LCBpbik7Cisg
ICAgICAgICAgICBBc3NpZ25SZXNvbHZlTm9kZSogbm9kZSA9IG5ldyAoZ2xvYmFsRGF0YSkgQXNz
aWduUmVzb2x2ZU5vZGUobG9jYXRpb24sIGlkZW50LCBpbik7CiAgICAgICAgICAgICBub2RlLT5z
ZXRFeGNlcHRpb25Tb3VyY2VDb2RlKGRpdm90LCBkaXZvdCAtIHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQgLSBkaXZvdCk7CiAgICAgICAgICAgICBtX2luaXQgPSBub2RlOwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCmluZGV4IGMzMmU0YzczYTI0ZWJlYjIzM2Nk
NWUwMWZmZmQ2M2E0ODY4NWM4ODYuLjAxNzIzNTljNzAzZjJiOWZlMTJiYTViMDhmMjVkZmE0M2I0
OTY3YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC01MiwxMCAr
NTIsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBTdGF0ZW1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK3Zv
aWQgU3RhdGVtZW50Tm9kZTo6c2V0TG9jKGludCBmaXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50
IGNvbHVtbikKK3sKKyAgICBtX2xpbmVOdW1iZXIgPSBmaXJzdExpbmU7CisgICAgbV9sYXN0TGlu
ZSA9IGxhc3RMaW5lOworICAgIG1fY29sdW1uTnVtYmVyID0gY29sdW1uOworfQorCiB2b2lkIFN0
YXRlbWVudE5vZGU6OnNldExvYyhpbnQgZmlyc3RMaW5lLCBpbnQgbGFzdExpbmUpCiB7CiAgICAg
bV9saW5lTnVtYmVyID0gZmlyc3RMaW5lOwogICAgIG1fbGFzdExpbmUgPSBsYXN0TGluZTsKKyAg
ICBtX2NvbHVtbk51bWJlciA9IDA7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBTb3VyY2VFbGVtZW50cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAt
NzUsOCArODMsOCBAQCBTdGF0ZW1lbnROb2RlKiBTb3VyY2VFbGVtZW50czo6c2luZ2xlU3RhdGVt
ZW50KCkgY29uc3QKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNjb3BlTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1TY29wZU5vZGU6OlNjb3BlTm9kZShK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBib29sIGluU3RyaWN0Q29u
dGV4dCkKLSAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikKK1Njb3BlTm9kZTo6U2NvcGVO
b2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgYm9vbCBpblN0cmljdENvbnRleHQpCisgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9u
KQogICAgICwgUGFyc2VyQXJlbmFSZWZDb3VudGVkKGdsb2JhbERhdGEpCiAgICAgLCBtX2ZlYXR1
cmVzKGluU3RyaWN0Q29udGV4dCA/IFN0cmljdE1vZGVGZWF0dXJlIDogTm9GZWF0dXJlcykKICAg
ICAsIG1fbnVtQ29uc3RhbnRzKDApCkBAIC04NCw4ICs5Miw4IEBAIFNjb3BlTm9kZTo6U2NvcGVO
b2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5TdHJp
Y3RDb250CiB7CiB9CiAKLVNjb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgU291cmNlRWxl
bWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNT
dGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIENvZGVGZWF0dXJlcyBmZWF0
dXJlcywgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFN0YXRlbWVudE5vZGUobGluZU51bWJlcikK
K1Njb3BlTm9kZTo6U2NvcGVOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBTb3VyY2VF
bGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVu
Y1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgQ29kZUZlYXR1cmVzIGZl
YXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikK
ICAgICAsIFBhcnNlckFyZW5hUmVmQ291bnRlZChnbG9iYWxEYXRhKQogICAgICwgbV9mZWF0dXJl
cyhmZWF0dXJlcykKICAgICAsIG1fc291cmNlKHNvdXJjZSkKQEAgLTEwNywxNCArMTE1LDE0IEBA
IFN0YXRlbWVudE5vZGUqIFNjb3BlTm9kZTo6c2luZ2xlU3RhdGVtZW50KCkgY29uc3QKIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFByb2dyYW1Ob2RlIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAKLWlubGluZSBQcm9ncmFtTm9kZTo6UHJvZ3JhbU5vZGUoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBpbnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxk
cmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRp
ZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29k
ZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQotICAgIDogU2NvcGVOb2RlKGds
b2JhbERhdGEsIGxpbmVOdW1iZXIsIHNvdXJjZSwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3Rh
Y2ssIGNhcHR1cmVkVmFyaWFibGVzLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKQoraW5saW5lIFBy
b2dyYW1Ob2RlOjpQcm9ncmFtTm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3Rh
Y2sqIHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNh
cHR1cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBm
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cykKKyAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBs
b2NhdGlvbiwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRW
YXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCiB7CiB9CiAKLVBhc3NSZWZQdHI8UHJv
Z3JhbU5vZGU+IFByb2dyYW1Ob2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBp
bnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3Rh
Y2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJp
YWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBp
bnQgbnVtQ29uc3RhbnRzKQorUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gUHJvZ3JhbU5vZGU6OmNy
ZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9j
YXRpb24sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sqIHZhclN0YWNrLCBGdW5j
dGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1cmVkVmFyaWFibGVzLCBj
b25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIENvZGVGZWF0dXJlcyBmZWF0dXJlcywgaW50IG51bUNv
bnN0YW50cykKIHsKLSAgICBSZWZQdHI8UHJvZ3JhbU5vZGU+IG5vZGUgPSBuZXcgUHJvZ3JhbU5v
ZGUoZ2xvYmFsRGF0YSwgbGluZU51bWJlciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ss
ICBjYXB0dXJlZFZhcmlhYmxlcywgc291cmNlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKKyAg
ICBSZWZQdHI8UHJvZ3JhbU5vZGU+IG5vZGUgPSBuZXcgUHJvZ3JhbU5vZGUoZ2xvYmFsRGF0YSwg
bG9jYXRpb24sIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCAgY2FwdHVyZWRWYXJpYWJs
ZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAKICAgICBBU1NFUlQobm9kZS0+
bV9hcmVuYS5sYXN0KCkgPT0gbm9kZSk7CiAgICAgbm9kZS0+bV9hcmVuYS5yZW1vdmVMYXN0KCk7
CkBAIC0xMjUsMTQgKzEzMywxNCBAQCBQYXNzUmVmUHRyPFByb2dyYW1Ob2RlPiBQcm9ncmFtTm9k
ZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdQogCiAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXZhbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KIAotaW5saW5lIEV2YWxOb2RlOjpFdmFsTm9kZShKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRyZW4sIFZhclN0YWNr
KiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0
dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlRmVhdHVyZXMgZmVh
dHVyZXMsIGludCBudW1Db25zdGFudHMpCi0gICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwgbGlu
ZU51bWJlciwgc291cmNlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRW
YXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCitpbmxpbmUgRXZhbE5vZGU6OkV2YWxO
b2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0
aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzKQorICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxvY2F0aW9uLCBzb3VyY2UsIGNo
aWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMs
IG51bUNvbnN0YW50cykKIHsKIH0KIAotUGFzc1JlZlB0cjxFdmFsTm9kZT4gRXZhbE5vZGU6OmNy
ZWF0ZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVt
ZW50cyogY2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0
YWNrLCBJZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBDb2RlRmVhdHVyZXMgZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCitQYXNzUmVm
UHRyPEV2YWxOb2RlPiBFdmFsTm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVu
LCBWYXJTdGFjayogdmFyU3RhY2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmll
clNldCYgY2FwdHVyZWRWYXJpYWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZUZl
YXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogewotICAgIFJlZlB0cjxFdmFsTm9k
ZT4gbm9kZSA9IG5ldyBFdmFsTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVtYmVyLCBjaGlsZHJlbiwg
dmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMs
IG51bUNvbnN0YW50cyk7CisgICAgUmVmUHRyPEV2YWxOb2RlPiBub2RlID0gbmV3IEV2YWxOb2Rl
KGdsb2JhbERhdGEsIGxvY2F0aW9uLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2Fw
dHVyZWRWYXJpYWJsZXMsIHNvdXJjZSwgZmVhdHVyZXMsIG51bUNvbnN0YW50cyk7CiAKICAgICBB
U1NFUlQobm9kZS0+bV9hcmVuYS5sYXN0KCkgPT0gbm9kZSk7CiAgICAgbm9kZS0+bV9hcmVuYS5y
ZW1vdmVMYXN0KCk7CkBAIC0xNDksMTMgKzE1NywxMyBAQCBGdW5jdGlvblBhcmFtZXRlcnM6OkZ1
bmN0aW9uUGFyYW1ldGVycyhQYXJhbWV0ZXJOb2RlKiBmaXJzdFBhcmFtZXRlcikKICAgICAgICAg
YXBwZW5kKHBhcmFtZXRlci0+aWRlbnQoKSk7CiB9CiAKLWlubGluZSBGdW5jdGlvbkJvZHlOb2Rl
OjpGdW5jdGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1i
ZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQotICAgIDogU2NvcGVOb2RlKGdsb2JhbERhdGEsIGxp
bmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCkKK2lubGluZSBGdW5jdGlvbkJvZHlOb2RlOjpGdW5j
dGlvbkJvZHlOb2RlKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgYm9vbCBpblN0cmljdENvbnRleHQpCisgICAgOiBTY29wZU5vZGUoZ2xv
YmFsRGF0YSwgbG9jYXRpb24sIGluU3RyaWN0Q29udGV4dCkKIHsKIH0KIAotaW5saW5lIEZ1bmN0
aW9uQm9keU5vZGU6OkZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBp
bnQgbGluZU51bWJlciwgU291cmNlRWxlbWVudHMqIGNoaWxkcmVuLCBWYXJTdGFjayogdmFyU3Rh
Y2ssIEZ1bmN0aW9uU3RhY2sqIGZ1bmNTdGFjaywgSWRlbnRpZmllclNldCYgY2FwdHVyZWRWYXJp
YWJsZXMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIENvZGVGZWF0dXJlcyBmZWF0dXJl
cywgaW50IG51bUNvbnN0YW50cykKLSAgICA6IFNjb3BlTm9kZShnbG9iYWxEYXRhLCBsaW5lTnVt
YmVyLCBzb3VyY2VDb2RlLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRW
YXJpYWJsZXMsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpCitpbmxpbmUgRnVuY3Rpb25Cb2R5Tm9k
ZTo6RnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFNvdXJjZUVsZW1lbnRzKiBjaGlsZHJlbiwgVmFyU3RhY2sq
IHZhclN0YWNrLCBGdW5jdGlvblN0YWNrKiBmdW5jU3RhY2ssIElkZW50aWZpZXJTZXQmIGNhcHR1
cmVkVmFyaWFibGVzLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBDb2RlRmVhdHVyZXMg
ZmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpCisgICAgOiBTY29wZU5vZGUoZ2xvYmFsRGF0YSwg
bG9jYXRpb24sIHNvdXJjZUNvZGUsIGNoaWxkcmVuLCB2YXJTdGFjaywgZnVuY1N0YWNrLCBjYXB0
dXJlZFZhcmlhYmxlcywgZmVhdHVyZXMsIG51bUNvbnN0YW50cykKIHsKIH0KIApAQCAtMTcyLDE0
ICsxODAsMTQgQEAgdm9pZCBGdW5jdGlvbkJvZHlOb2RlOjpmaW5pc2hQYXJzaW5nKFBhc3NSZWZQ
dHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzLAogICAgIG1faWRlbnQgPSBpZGVudDsK
IH0KIAotRnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgaW50IGxpbmVOdW1iZXIsIGJvb2wgaW5TdHJpY3RDb250ZXh0KQor
RnVuY3Rpb25Cb2R5Tm9kZSogRnVuY3Rpb25Cb2R5Tm9kZTo6Y3JlYXRlKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgYm9vbCBpblN0cmlj
dENvbnRleHQpCiB7Ci0gICAgcmV0dXJuIG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERhdGEs
IGxpbmVOdW1iZXIsIGluU3RyaWN0Q29udGV4dCk7CisgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkJv
ZHlOb2RlKGdsb2JhbERhdGEsIGxvY2F0aW9uLCBpblN0cmljdENvbnRleHQpOwogfQogCi1QYXNz
UmVmUHRyPEZ1bmN0aW9uQm9keU5vZGU+IEZ1bmN0aW9uQm9keU5vZGU6OmNyZWF0ZShKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIGludCBsaW5lTnVtYmVyLCBTb3VyY2VFbGVtZW50cyogY2hpbGRy
ZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJZGVudGlm
aWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNlQ29kZSwg
Q29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQorUGFzc1JlZlB0cjxGdW5j
dGlvbkJvZHlOb2RlPiBGdW5jdGlvbkJvZHlOb2RlOjpjcmVhdGUoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTb3VyY2VFbGVtZW50cyog
Y2hpbGRyZW4sIFZhclN0YWNrKiB2YXJTdGFjaywgRnVuY3Rpb25TdGFjayogZnVuY1N0YWNrLCBJ
ZGVudGlmaWVyU2V0JiBjYXB0dXJlZFZhcmlhYmxlcywgY29uc3QgU291cmNlQ29kZSYgc291cmNl
Q29kZSwgQ29kZUZlYXR1cmVzIGZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKQogewotICAgIFJl
ZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBub2RlID0gbmV3IEZ1bmN0aW9uQm9keU5vZGUoZ2xvYmFs
RGF0YSwgbGluZU51bWJlciwgY2hpbGRyZW4sIHZhclN0YWNrLCBmdW5jU3RhY2ssIGNhcHR1cmVk
VmFyaWFibGVzLCBzb3VyY2VDb2RlLCBmZWF0dXJlcywgbnVtQ29uc3RhbnRzKTsKKyAgICBSZWZQ
dHI8RnVuY3Rpb25Cb2R5Tm9kZT4gbm9kZSA9IG5ldyBGdW5jdGlvbkJvZHlOb2RlKGdsb2JhbERh
dGEsIGxvY2F0aW9uLCBjaGlsZHJlbiwgdmFyU3RhY2ssIGZ1bmNTdGFjaywgY2FwdHVyZWRWYXJp
YWJsZXMsIHNvdXJjZUNvZGUsIGZlYXR1cmVzLCBudW1Db25zdGFudHMpOwogCiAgICAgQVNTRVJU
KG5vZGUtPm1fYXJlbmEubGFzdCgpID09IG5vZGUpOwogICAgIG5vZGUtPm1fYXJlbmEucmVtb3Zl
TGFzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDViMTViZTQ0Y2Nl
ZTY4MDAwNjEyMWQ2ZWJkZmI1NmYwYjllNmQ0ZTAuLmVkMWE4NWFhZmJjODljZTE4ZjQ1MTIwMDk4
NGRjYmExMmVkNzlhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTEz
MCw3ICsxMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE5vZGUgOiBwdWJsaWMg
UGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAgICAgcHJvdGVjdGVkOgotICAgICAgICBOb2RlKGludCk7
CisgICAgICAgIE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAKICAgICBwdWJsaWM6CiAg
ICAgICAgIHZpcnR1YWwgfk5vZGUoKSB7IH0KQEAgLTEzOSwxMyArMTM5LDE2IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIGludCBsaW5lTm8oKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1i
ZXI7IH0KIAorICAgICAgICBpbnQgY29sdW1uTm8oKSBjb25zdCB7IHJldHVybiBtX2NvbHVtbk51
bWJlcjsgfQorCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBpbnQgbV9saW5lTnVtYmVyOworICAg
ICAgICBpbnQgbV9jb2x1bW5OdW1iZXI7CiAgICAgfTsKIAogICAgIGNsYXNzIEV4cHJlc3Npb25O
b2RlIDogcHVibGljIE5vZGUgewogICAgIHByb3RlY3RlZDoKLSAgICAgICAgRXhwcmVzc2lvbk5v
ZGUoaW50LCBSZXN1bHRUeXBlID0gUmVzdWx0VHlwZTo6dW5rbm93blR5cGUoKSk7CisgICAgICAg
IEV4cHJlc3Npb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFJlc3VsdFR5cGUgPSBSZXN1
bHRUeXBlOjp1bmtub3duVHlwZSgpKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBi
b29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE3NSwxMiArMTc4LDE0
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBO
b2RlIHsKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFN0YXRlbWVudE5vZGUoaW50KTsKKyAgICAg
ICAgU3RhdGVtZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAogICAgIHB1YmxpYzoK
ICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50
IGxhc3RMaW5lKTsKKyAgICAgICAgdm9pZCBzZXRMb2MoaW50IGZpcnN0TGluZSwgaW50IGxhc3RM
aW5lLCBpbnQgY29sdW1uKTsKICAgICAgICAgaW50IGZpcnN0TGluZSgpIGNvbnN0IHsgcmV0dXJu
IGxpbmVObygpOyB9CiAgICAgICAgIGludCBsYXN0TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGFz
dExpbmU7IH0KKyAgICAgICAgaW50IGNvbHVtbigpIGNvbnN0IHsgcmV0dXJuIGNvbHVtbk5vKCk7
fQogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0VtcHR5U3RhdGVtZW50KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzUmV0dXJuTm9kZSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CkBAIC0xOTQsNyArMTk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBOdWxsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgot
ICAgICAgICBOdWxsTm9kZShpbnQpOworICAgICAgICBOdWxsTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTIwNCw3
ICsyMDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJvb2xlYW5Ob2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJvb2xlYW5Ob2RlKGlu
dCwgYm9vbCB2YWx1ZSk7CisgICAgICAgIEJvb2xlYW5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGJvb2wgdmFsdWUpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpA
QCAtMjE2LDcgKzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgTnVtYmVyTm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBOdW1iZXJO
b2RlKGludCwgZG91YmxlIHZhbHVlKTsKKyAgICAgICAgTnVtYmVyTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBkb3VibGUgdmFsdWUpOwogCiAgICAgICAgIGRvdWJsZSB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICAgICAgdm9pZCBzZXRWYWx1ZShkb3VibGUgdmFsdWUp
IHsgbV92YWx1ZSA9IHZhbHVlOyB9CkBAIC0yMzIsNyArMjM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBTdHJpbmdOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFN0cmluZ05vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAg
ICAgIFN0cmluZ05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYp
OwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsg
fQogCkBAIC0zNDIsNyArMzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWdF
eHBOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lv
bkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmVnRXhwTm9kZShpbnQsIGNvbnN0IElkZW50
aWZpZXImIHBhdHRlcm4sIGNvbnN0IElkZW50aWZpZXImIGZsYWdzKTsKKyAgICAgICAgUmVnRXhw
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBj
b25zdCBJZGVudGlmaWVyJiBmbGFncyk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CkBAIC0zNTMsNyArMzU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBU
aGlzTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBU
aGlzTm9kZShpbnQpOworICAgICAgICBUaGlzTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTM2MSw3ICszNjYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJlc29sdmVOb2RlIDogcHVibGljIEV4cHJl
c3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJlc29sdmVOb2RlKGludCwgY29uc3Qg
SWRlbnRpZmllciYsIGludCBzdGFydE9mZnNldCk7CisgICAgICAgIFJlc29sdmVOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBpbnQgc3RhcnRPZmZzZXQpOwog
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBt
X2lkZW50OyB9CiAKQEAgLTM5MywxMSArMzk4LDExIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgQXJyYXlOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIEFycmF5Tm9kZShpbnQsIGludCBlbGlzaW9uKTsKLSAgICAgICAgQXJyYXlOb2RlKGlu
dCwgRWxlbWVudE5vZGUqKTsKLSAgICAgICAgQXJyYXlOb2RlKGludCwgaW50IGVsaXNpb24sIEVs
ZW1lbnROb2RlKik7CisgICAgICAgIEFycmF5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBp
bnQgZWxpc2lvbik7CisgICAgICAgIEFycmF5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
bGVtZW50Tm9kZSopOworICAgICAgICBBcnJheU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50IGVsaXNpb24sIEVsZW1lbnROb2RlKik7CiAKLSAgICAgICAgQXJndW1lbnRMaXN0Tm9kZSog
dG9Bcmd1bWVudExpc3QoSlNHbG9iYWxEYXRhKiwgaW50KSBjb25zdDsKKyAgICAgICAgQXJndW1l
bnRMaXN0Tm9kZSogdG9Bcmd1bWVudExpc3QoSlNHbG9iYWxEYXRhKiwgaW50LCBpbnQpIGNvbnN0
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNDI4LDggKzQzMyw4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUHJvcGVydHlMaXN0Tm9kZSA6IHB1Ymxp
YyBOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFByb3BlcnR5TGlzdE5vZGUoaW50LCBQcm9w
ZXJ0eU5vZGUqKTsKLSAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShpbnQsIFByb3BlcnR5Tm9kZSos
IFByb3BlcnR5TGlzdE5vZGUqKTsKKyAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGUqKTsKKyAgICAgICAgUHJvcGVydHlMaXN0Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGUqLCBQcm9wZXJ0eUxpc3ROb2RlKik7
CiAKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogCkBAIC00NDAsOCArNDQ1LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBPYmplY3RMaXRlcmFsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBPYmplY3RMaXRlcmFsTm9kZShpbnQpOwotICAg
ICAgICBPYmplY3RMaXRlcmFsTm9kZShpbnQsIFByb3BlcnR5TGlzdE5vZGUqKTsKKyAgICAgICAg
T2JqZWN0TGl0ZXJhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CisgICAgICAgIE9iamVj
dExpdGVyYWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5TGlzdE5vZGUqKTsK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTQ1MSw3ICs0NTYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAKICAgICBjbGFzcyBCcmFja2V0QWNjZXNzb3JOb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBib29sIHN1YnNjcmlwdEhhc0Fz
c2lnbm1lbnRzKTsKKyAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwg
Ym9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IGJhc2UoKSBjb25zdCB7IHJldHVybiBtX2Jhc2U7IH0KICAgICAgICAgRXhwcmVzc2lvbk5vZGUq
IHN1YnNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vic2NyaXB0OyB9CkBAIC00NjksNyArNDc0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBEb3RBY2Nlc3Nvck5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9uRGF0YSB7CiAgICAg
cHVibGljOgotICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBEb3RBY2Nlc3Nvck5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImKTsK
IAogICAgICAgICBFeHByZXNzaW9uTm9kZSogYmFzZSgpIGNvbnN0IHsgcmV0dXJuIG1fYmFzZTsg
fQogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9pZGVudDsgfQpAQCAtNDg2LDggKzQ5MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgQXJndW1lbnRMaXN0Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IEFyZ3VtZW50TGlzdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSopOwotICAgICAgICBBcmd1bWVu
dExpc3ROb2RlKGludCwgQXJndW1lbnRMaXN0Tm9kZSosIEV4cHJlc3Npb25Ob2RlKik7CisgICAg
ICAgIEFyZ3VtZW50TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqKTsKKyAgICAgICAgQXJndW1lbnRMaXN0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBB
cmd1bWVudExpc3ROb2RlKiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgICAgICBBcmd1bWVudExp
c3ROb2RlKiBtX25leHQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CkBAIC01MDYs
OCArNTExLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOZXdFeHByTm9kZSA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIE5ld0V4cHJOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKLSAg
ICAgICAgTmV3RXhwck5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSosIEFyZ3VtZW50c05vZGUqKTsK
KyAgICAgICAgTmV3RXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqKTsKKyAgICAgICAgTmV3RXhwck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvbk5vZGUqLCBBcmd1bWVudHNOb2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CkBAIC01MTgsNyArNTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBFdmFsRnVuY3Rpb25DYWxsTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV2YWxGdW5jdGlv
bkNhbGxOb2RlKGludCwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRXZhbEZ1bmN0aW9uQ2Fs
bE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTUyOCw3ICs1MzMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZSA6IHB1YmxpYyBFeHBy
ZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiwgQXJn
dW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWdu
ZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTUzOSw3ICs1NDQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uQ2FsbFJlc29sdmVOb2RlIDogcHVibGljIEV4
cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVy
JiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01NTAsNyArNTU1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgCiAgICAgY2xhc3MgRnVuY3Rpb25DYWxsQnJhY2tldE5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShpbnQs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBBcmd1bWVu
dHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlw
dCwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwg
dW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KTsKQEAgLTU2Miw3ICs1NjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0
aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVT
dWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBGdW5jdGlvbkNhbGxEb3RO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1bWVu
dHNOb2RlKiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpOworICAgICAgICBGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRz
Tm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU3NSw3
ICs1ODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENhbGxGdW5jdGlvbkNhbGxE
b3ROb2RlIDogcHVibGljIEZ1bmN0aW9uQ2FsbERvdE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgQ2FsbEZ1bmN0aW9uQ2FsbERvdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIENhbGxGdW5jdGlvbkNh
bGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25l
ZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTU4Myw3ICs1ODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAKICAgICBjbGFzcyBBcHBseUZ1bmN0aW9uQ2FsbERvdE5vZGUgOiBwdWJsaWMgRnVuY3Rpb25D
YWxsRG90Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBBcHBseUZ1bmN0aW9uQ2FsbERvdE5v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3VtZW50
c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCk7CisgICAgICAgIEFwcGx5RnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFyZ3Vt
ZW50c05vZGUqLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVk
IGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC01
OTEsNyArNTk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVQb3N0UmVzb2x2
ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQcmVQb3N0UmVzb2x2ZU5vZGUoaW50LCBjb25z
dCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpOworICAgICAgICBQcmVQb3N0UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByb3RlY3RlZDoKICAgICAg
ICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKQEAgLTU5OSw3ICs2MDQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIFBvc3RmaXhSZXNvbHZlTm9kZSA6IHB1YmxpYyBQcmVQb3N0
UmVzb2x2ZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUG9zdGZpeFJlc29sdmVOb2RlKGlu
dCwgY29uc3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQg
c3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFBvc3RmaXhSZXNvbHZl
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3Is
IHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0
KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTYwOSw3ICs2MTQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFBvc3RmaXhCcmFja2V0Tm9kZSA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIFBvc3RmaXhCcmFja2V0Tm9kZShpbnQsIEV4cHJlc3Npb25O
b2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgdW5zaWduZWQg
ZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAg
ICBQb3N0Zml4QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5v
ZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9wZXJhdG9yLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBw
cml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02MjEsNyArNjI2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBQb3N0Zml4RG90Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9u
Tm9kZSwgcHVibGljIFRocm93YWJsZVN1YkV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIFBvc3RmaXhEb3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0
LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQb3N0Zml4RG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIE9w
ZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02MzMs
NyArNjM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQb3N0Zml4RXJyb3JOb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlU3ViRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUG9zdGZpeEVycm9yTm9kZShpbnQsIE9wZXJhdG9y
LCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNl
dCk7CisgICAgICAgIFBvc3RmaXhFcnJvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgT3Bl
cmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5k
T2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTY0Myw3
ICs2NDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIERlbGV0ZVJlc29sdmVOb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgRGVsZXRlUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVu
dGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBl
bmRPZmZzZXQpOworICAgICAgICBEZWxldGVSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOwpAQCAtNjUzLDcgKzY1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
RGVsZXRlQnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBEZWxldGVCcmFja2V0Tm9k
ZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1
bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7
CisgICAgICAgIERlbGV0ZUJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCB1bnNpZ25lZCBkaXZv
dCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC02NjQsNyArNjY5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBEZWxldGVEb3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2Rl
LCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAg
RGVsZXRlRG90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZz
ZXQpOworICAgICAgICBEZWxldGVEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgdW5zaWduZWQgZGl2b3QsIHVuc2ln
bmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjc1LDcgKzY4MCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgRGVsZXRlVmFsdWVOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAg
ICBwdWJsaWM6Ci0gICAgICAgIERlbGV0ZVZhbHVlTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7
CisgICAgICAgIERlbGV0ZVZhbHVlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNz
aW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAtNjg1
LDcgKzY5MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVm9pZE5vZGUgOiBwdWJs
aWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVm9pZE5vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSopOworICAgICAgICBWb2lkTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
OwpAQCAtNjk1LDcgKzcwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgVHlwZU9m
UmVzb2x2ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgVHlwZU9mUmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIFR5
cGVPZlJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIm
KTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9pZGVudDsgfQogCkBAIC03MDcsNyArNzEyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBUeXBlT2ZWYWx1ZU5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1
YmxpYzoKLSAgICAgICAgVHlwZU9mVmFsdWVOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAg
ICAgICAgVHlwZU9mVmFsdWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC03MTcsNyAr
NzIyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVmaXhSZXNvbHZlTm9kZSA6
IHB1YmxpYyBQcmVQb3N0UmVzb2x2ZU5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlZml4
UmVzb2x2ZU5vZGUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRp
dm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAg
UHJlZml4UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmll
ciYsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBA
IC03MjcsNyArNzMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVmaXhCcmFj
a2V0Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZVByZWZpeGVk
U3ViRXhwcmVzc2lvbkRhdGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgUHJlZml4QnJhY2tldE5v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwg
T3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQg
ZW5kT2Zmc2V0KTsKKyAgICAgICAgUHJlZml4QnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIE9w
ZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVu
ZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC03Mzks
NyArNzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcmVmaXhEb3ROb2RlIDog
cHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlUHJlZml4ZWRTdWJFeHByZXNz
aW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBQcmVmaXhEb3ROb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2
b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBQ
cmVmaXhEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBz
dGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKQEAgLTc1MSw3ICs3NTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIFByZWZpeEVycm9yTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRo
cm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFByZWZpeEVycm9y
Tm9kZShpbnQsIE9wZXJhdG9yLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQs
IHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFByZWZpeEVycm9yTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBPcGVyYXRvciwgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOwpAQCAtNzYxLDcgKzc2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
VW5hcnlPcE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgVW5hcnlPcE5vZGUoaW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSosIE9wY29kZUlE
KTsKKyAgICAgICAgVW5hcnlPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUmVzdWx0VHlw
ZSwgRXhwcmVzc2lvbk5vZGUqLCBPcGNvZGVJRCk7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBleHByKCkgeyByZXR1cm4gbV9leHByOyB9CkBAIC03NzgsNyArNzgz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBVbmFyeVBsdXNOb2RlIDogcHVibGlj
IFVuYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFVuYXJ5UGx1c05vZGUoaW50LCBF
eHByZXNzaW9uTm9kZSopOworICAgICAgICBVbmFyeVBsdXNOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFs
IEV4cHJlc3Npb25Ob2RlKiBzdHJpcFVuYXJ5UGx1cygpIHsgcmV0dXJuIGV4cHIoKTsgfQpAQCAt
Nzg2LDEyICs3OTEsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBOZWdhdGVOb2Rl
IDogcHVibGljIFVuYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE5lZ2F0ZU5vZGUo
aW50LCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBOZWdhdGVOb2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAgICAgfTsKIAogICAgIGNsYXNzIEJpdHdpc2VO
b3ROb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJp
dHdpc2VOb3ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAgICAgQml0d2lzZU5vdE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHIoKSB7IHJldHVybiBtX2V4cHI7IH0K
QEAgLTgwNSw3ICs4MTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAKICAgICBjbGFzcyBMb2dpY2Fs
Tm90Tm9kZSA6IHB1YmxpYyBVbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBMb2dp
Y2FsTm90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIExvZ2ljYWxOb3ROb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBMYWJlbCogdHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFyZ2V0LCBib29sIGZhbGxU
aHJvdWdoTWVhbnNUcnVlKTsKICAgICAgICAgdmlydHVhbCBib29sIGhhc0NvbmRpdGlvbkNvbnRl
eHRDb2RlZ2VuKCkgY29uc3QgeyByZXR1cm4gZXhwcigpLT5oYXNDb25kaXRpb25Db250ZXh0Q29k
ZWdlbigpOyB9CkBAIC04MTMsOCArODE4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBCaW5hcnlPcE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgQmluYXJ5T3BOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgICAg
ICBCaW5hcnlPcE5vZGUoaW50LCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4
cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7
CisgICAgICAgIEJpbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRI
YXNBc3NpZ25tZW50cyk7CisgICAgICAgIEJpbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBSZXN1bHRUeXBlLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdFN0cmNhdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkZXN0aW5hdGlvbiwgUmVnaXN0ZXJJRCogbGhzID0gMCwgUmVhZE1vZGlmeVJlc29sdmVO
b2RlKiBlbWl0RXhwcmVzc2lvbkluZm9Gb3JNZSA9IDApOwogCkBAIC04MzgsNzIgKzg0Myw3MiBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE11bHROb2RlIDogcHVibGljIEJpbmFyeU9w
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBNdWx0Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
OworICAgICAgICBNdWx0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKICAgICB9OwogCiAgICAgY2xhc3MgRGl2Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgRGl2Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAg
ICBEaXZOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07
CiAKICAgICBjbGFzcyBNb2ROb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGlj
OgotICAgICAgICBNb2ROb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIE1vZE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNs
YXNzIEFkZE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IEFkZE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQWRkTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNB
ZGQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgfTsKIAogICAgIGNsYXNzIFN1Yk5vZGUg
OiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFN1Yk5vZGUoaW50
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgU3ViTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdWJ0cmFjdCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwogCiAgICAgY2xhc3MgTGVmdFNoaWZ0Tm9kZSA6
IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTGVmdFNoaWZ0Tm9k
ZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29s
IHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBMZWZ0U2hpZnROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBSaWdodFNo
aWZ0Tm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgUmln
aHRTaGlmdE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgUmlnaHRTaGlmdE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9u
Tm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNs
YXNzIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIFVuc2lnbmVkUmlnaHRTaGlmdE5vZGUoaW50LCBFeHByZXNzaW9uTm9k
ZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRz
KTsKKyAgICAgICAgVW5zaWduZWRSaWdodFNoaWZ0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdo
dEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgTGVzc05vZGUgOiBwdWJsaWMg
QmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExlc3NOb2RlKGludCwgRXhwcmVz
c2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3Np
Z25tZW50cyk7CisgICAgICAgIExlc3NOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBHcmVhdGVyTm9kZSA6IHB1YmxpYyBCaW5h
cnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgR3JlYXRlck5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKKyAgICAgICAgR3JlYXRlck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIExlc3NFcU5vZGUgOiBwdWJsaWMgQmlu
YXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExlc3NFcU5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2ln
bm1lbnRzKTsKKyAgICAgICAgTGVzc0VxTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9vbCByaWdodEhhc0Fz
c2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgR3JlYXRlckVxTm9kZSA6IHB1YmxpYyBC
aW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgR3JlYXRlckVxTm9kZShpbnQsIEV4
cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFz
QXNzaWdubWVudHMpOworICAgICAgICBHcmVhdGVyRXFOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBUaHJvd2FibGVCaW5hcnlP
cE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgewogICAgIHB1YmxpYzoKLSAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGludCwgUmVz
dWx0VHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9w
Y29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwotICAgICAgICBUaHJvd2FibGVCaW5h
cnlPcE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIFRocm93YWJs
ZUJpbmFyeU9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBSZXN1bHRUeXBlLCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgT3Bjb2RlSUQsIGJvb2wgcmln
aHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIFRocm93YWJsZUJpbmFyeU9wTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgT3Bjb2RlSUQsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAKICAgICBwcml2YXRl
OgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05MTEsNyArOTE2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgCiAgICAgY2xhc3MgSW5zdGFuY2VPZk5vZGUgOiBwdWJsaWMgVGhyb3dhYmxlQmlu
YXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEluc3RhbmNlT2ZOb2RlKGludCwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cyk7CisgICAgICAgIEluc3RhbmNlT2ZOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
OwpAQCAtOTE5LDEyICs5MjQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJbk5v
ZGUgOiBwdWJsaWMgVGhyb3dhYmxlQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IEluTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBJbk5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEVxdWFsTm9k
ZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXF1YWxOb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIEVxdWFsTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTkzMiwxMiArOTM3LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
Tm90RXF1YWxOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBOb3RFcXVhbE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgTm90RXF1YWxOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lv
bk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBj
bGFzcyBTdHJpY3RFcXVhbE5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIFN0cmljdEVxdWFsTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBT
dHJpY3RFcXVhbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC05NDUsMjggKzk1MCwyOCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIE5vdFN0cmljdEVxdWFsTm9kZSA6IHB1Ymxp
YyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgTm90U3RyaWN0RXF1YWxOb2Rl
KGludCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIGJvb2wg
cmlnaHRIYXNBc3NpZ25tZW50cyk7CisgICAgICAgIE5vdFN0cmljdEVxdWFsTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgY2xhc3MgQml0
QW5kTm9kZSA6IHB1YmxpYyBCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQml0
QW5kTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBCaXRBbmROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogICAgIH07CiAKICAgICBjbGFzcyBCaXRP
ck5vZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdE9y
Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBi
b29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOworICAgICAgICBCaXRPck5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIs
IGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CiAgICAgfTsKIAogICAgIGNsYXNzIEJpdFhPck5v
ZGUgOiBwdWJsaWMgQmluYXJ5T3BOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJpdFhPck5v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKKyAgICAgICAgQml0WE9yTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKICAgICB9OwogCiAgICAgLy8gbV9leHByMSAmJiBt
X2V4cHIyLCBtX2V4cHIxIHx8IG1fZXhwcjIKICAgICBjbGFzcyBMb2dpY2FsT3BOb2RlIDogcHVi
bGljIEV4cHJlc3Npb25Ob2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIExvZ2ljYWxPcE5vZGUo
aW50LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgTG9naWNh
bE9wZXJhdG9yKTsKKyAgICAgICAgTG9naWNhbE9wTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgTG9naWNhbE9w
ZXJhdG9yKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTk4MSw3
ICs5ODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBUaGUgdGVybmFyeSBvcGVyYXRvciwg
Im1fbG9naWNhbCA/IG1fZXhwcjEgOiBtX2V4cHIyIgogICAgIGNsYXNzIENvbmRpdGlvbmFsTm9k
ZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBDb25kaXRp
b25hbE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogbG9naWNhbCwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpOworICAgICAgICBDb25kaXRpb25hbE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxvZ2ljYWwsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyKTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKQEAgLTk5Myw3ICs5OTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIFJlYWRNb2RpZnlSZXNvbHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwg
cHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFJl
YWRNb2RpZnlSZXNvbHZlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhw
cmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBk
aXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAg
IFJlYWRNb2RpZnlSZXNvbHZlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVu
dGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiAgcmlnaHQsIGJvb2wgcmlnaHRIYXNB
c3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNpZ25l
ZCBlbmRPZmZzZXQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpAQCAt
MTAwNiw3ICsxMDExLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBBc3NpZ25SZXNv
bHZlTm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Np
b25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEFzc2lnblJlc29sdmVOb2RlKGludCwgY29u
c3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiByaWdodCk7CisgICAgICAgIEFzc2lnblJl
c29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBFeHBy
ZXNzaW9uTm9kZSogcmlnaHQpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
OwpAQCAtMTAxNyw3ICsxMDIyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBSZWFk
TW9kaWZ5QnJhY2tldE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2Fi
bGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBSZWFkTW9kaWZ5QnJh
Y2tldE5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNj
cmlwdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNB
c3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5z
aWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFJlYWRNb2Rp
ZnlCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFz
ZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiBy
aWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDMyLDcg
KzEwMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFzc2lnbkJyYWNrZXROb2Rl
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgQXNzaWduQnJhY2tldE5vZGUoaW50LCBFeHByZXNzaW9u
Tm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhwcmVzc2lvbk5vZGUqIHJp
Z2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMsIHVuc2lnbmVkIGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zm
c2V0KTsKKyAgICAgICAgQXNzaWduQnJhY2tldE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIEV4cHJlc3Npb25Ob2RlKiBzdWJzY3JpcHQsIEV4cHJlc3Np
b25Ob2RlKiByaWdodCwgYm9vbCBzdWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhh
c0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2ln
bmVkIGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBA
IC0xMDQ2LDcgKzEwNTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFzc2lnbkRv
dE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHByZXNzaW9u
RGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBBc3NpZ25Eb3ROb2RlKGludCwgRXhwcmVzc2lv
bk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSogcmlnaHQsIGJv
b2wgcmlnaHRIYXNBc3NpZ25tZW50cywgdW5zaWduZWQgZGl2b3QsIHVuc2lnbmVkIHN0YXJ0T2Zm
c2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpOworICAgICAgICBBc3NpZ25Eb3ROb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwg
RXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIHVuc2lnbmVk
IGRpdm90LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwNTksNyArMTA2NCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgUmVhZE1vZGlmeURvdE5vZGUgOiBwdWJsaWMgRXhw
cmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVTdWJFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVi
bGljOgotICAgICAgICBSZWFkTW9kaWZ5RG90Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9v
bCByaWdodEhhc0Fzc2lnbm1lbnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZz
ZXQsIHVuc2lnbmVkIGVuZE9mZnNldCk7CisgICAgICAgIFJlYWRNb2RpZnlEb3ROb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1l
bnRzLCB1bnNpZ25lZCBkaXZvdCwgdW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMDczLDcg
KzEwNzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEFzc2lnbkVycm9yTm9kZSA6
IHB1YmxpYyBFeHByZXNzaW9uTm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIEFzc2lnbkVycm9yTm9kZShpbnQsIHVuc2lnbmVkIGRpdm90
LCB1bnNpZ25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKKyAgICAgICAgQXNz
aWduRXJyb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIHVuc2lnbmVkIGRpdm90LCB1bnNp
Z25lZCBzdGFydE9mZnNldCwgdW5zaWduZWQgZW5kT2Zmc2V0KTsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEwODMsNyArMTA4OCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgQ29tbWFOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMg
UGFyc2VyQXJlbmFEZWxldGFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29tbWFOb2RlKGlu
dCwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIpOworICAgICAg
ICBDb21tYU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIpOwogCiAgICAgICAgIHVzaW5nIFBhcnNlckFyZW5hRGVs
ZXRhYmxlOjpvcGVyYXRvciBuZXc7CiAKQEAgLTEwOTgsNyArMTEwMyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIAogICAgIGNsYXNzIENvbnN0RGVjbE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5v
ZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29uc3REZWNsTm9kZShpbnQsIGNvbnN0IElkZW50
aWZpZXImLCBFeHByZXNzaW9uTm9kZSopOworICAgICAgICBDb25zdERlY2xOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uTm9kZSopOwogCiAg
ICAgICAgIGJvb2wgaGFzSW5pdGlhbGl6ZXIoKSBjb25zdCB7IHJldHVybiBtX2luaXQ7IH0KICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQoKSB7IHJldHVybiBtX2lkZW50OyB9CkBAIC0x
MTE4LDcgKzExMjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnN0U3RhdGVt
ZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIENv
bnN0U3RhdGVtZW50Tm9kZShpbnQsIENvbnN0RGVjbE5vZGUqIG5leHQpOworICAgICAgICBDb25z
dFN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgQ29uc3REZWNsTm9kZSogbmV4
dCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMTQzLDcgKzEx
NDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJsb2NrTm9kZSA6IHB1YmxpYyBT
dGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEJsb2NrTm9kZShpbnQsIFNvdXJj
ZUVsZW1lbnRzKiA9IDApOworICAgICAgICBCbG9ja05vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgU291cmNlRWxlbWVudHMqID0gMCk7CiAKICAgICAgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xl
U3RhdGVtZW50KCkgY29uc3Q7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnQo
KSBjb25zdDsKQEAgLTExNTgsNyArMTE2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgRW1wdHlTdGF0ZW1lbnROb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgRW1wdHlTdGF0ZW1lbnROb2RlKGludCk7CisgICAgICAgIEVtcHR5U3RhdGVt
ZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKQEAgLTExNjgsNyArMTE3Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IAogICAgIGNsYXNzIERlYnVnZ2VyU3RhdGVtZW50Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2Rl
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIERlYnVnZ2VyU3RhdGVtZW50Tm9kZShpbnQpOworICAg
ICAgICBEZWJ1Z2dlclN0YXRlbWVudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAgICAg
ICAgIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTExNzYsNyArMTE4
MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRXhwclN0YXRlbWVudE5vZGUgOiBw
dWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBFeHByU3RhdGVtZW50
Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7CisgICAgICAgIEV4cHJTdGF0ZW1lbnROb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIGV4cHIoKSBjb25zdCB7IHJldHVybiBtX2V4cHI7IH0KIApAQCAtMTE5MCw4ICsx
MTk1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBWYXJTdGF0ZW1lbnROb2RlIDog
cHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgVmFyU3RhdGVtZW50
Tm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKik7ICAgICAgICAKLQorICAgICAgICBWYXJTdGF0ZW1l
bnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAgICAgcHJp
dmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogCkBAIC0xMjAwLDcgKzEyMDQsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElmTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIElmTm9kZShpbnQsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRp
b24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2spOworICAgICAgICBJZk5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZC
bG9jayk7CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyMTEs
NyArMTIxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWZFbHNlTm9kZSA6IHB1
YmxpYyBJZk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSWZFbHNlTm9kZShpbnQsIEV4cHJl
c3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5v
ZGUqIGVsc2VCbG9jayk7CisgICAgICAgIElmRWxzZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3Rh
dGVtZW50Tm9kZSogZWxzZUJsb2NrKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKQEAgLTEyMjEsNyArMTIyNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
RG9XaGlsZU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAg
ICBEb1doaWxlTm9kZShpbnQsIFN0YXRlbWVudE5vZGUqLCBFeHByZXNzaW9uTm9kZSopOworICAg
ICAgICBEb1doaWxlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTdGF0ZW1lbnROb2RlKiwg
RXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
QEAgLTEyMzIsNyArMTIzNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgV2hpbGVO
b2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgV2hpbGVO
b2RlKGludCwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7CisgICAgICAgIFdoaWxl
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5v
ZGUqKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKQEAgLTEyNDMsNyAr
MTI0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRm9yTm9kZSA6IHB1YmxpYyBT
dGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZvck5vZGUoaW50LCBFeHByZXNz
aW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHByMiwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIzLCBTdGF0ZW1lbnROb2RlKik7CisgICAgICAgIEZvck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIEV4cHJl
c3Npb25Ob2RlKiBleHByMywgU3RhdGVtZW50Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApOwpAQCAtMTI1Niw4ICsxMjYwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBGb3JJbk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSwgcHVibGljIFRocm93
YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEZvckluTm9kZShpbnQs
IEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7Ci0gICAg
ICAgIEZvckluTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGNvbnN0IElkZW50aWZpZXImLCBFeHBy
ZXNzaW9uTm9kZSosIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIGludCBkaXZvdCwg
aW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0KTsKKyAgICAgICAgRm9ySW5Ob2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0
ZW1lbnROb2RlKik7CisgICAgICAgIEZvckluTm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNz
aW9uTm9kZSosIFN0YXRlbWVudE5vZGUqLCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50
IGVuZE9mZnNldCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0x
MjcxLDggKzEyNzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnRpbnVlTm9k
ZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgQ29udGludWVOb2RlKEpTR2xvYmFsRGF0YSosIGludCk7
Ci0gICAgICAgIENvbnRpbnVlTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAg
Q29udGludWVOb2RlKEpTR2xvYmFsRGF0YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOworICAg
ICAgICBDb250aW51ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmll
ciYpOwogICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0x
MjgyLDggKzEyODYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEJyZWFrTm9kZSA6
IHB1YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgQnJlYWtOb2RlKEpTR2xvYmFsRGF0YSosIGludCk7Ci0gICAg
ICAgIEJyZWFrTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgQnJlYWtOb2Rl
KEpTR2xvYmFsRGF0YSosIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOworICAgICAgICBCcmVha05v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYpOwogICAgICAgICAK
ICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMjkzLDcgKzEyOTcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFJldHVybk5vZGUgOiBwdWJsaWMgU3RhdGVt
ZW50Tm9kZSwgcHVibGljIFRocm93YWJsZUV4cHJlc3Npb25EYXRhIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIFJldHVybk5vZGUoaW50LCBFeHByZXNzaW9uTm9kZSogdmFsdWUpOworICAgICAgICBS
ZXR1cm5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSk7
CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHZhbHVlKCkgeyByZXR1cm4gbV92YWx1ZTsgfQog
CkBAIC0xMzA3LDcgKzEzMTEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFdpdGhO
b2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgV2l0aE5v
ZGUoaW50LCBFeHByZXNzaW9uTm9kZSosIFN0YXRlbWVudE5vZGUqLCB1aW50MzJfdCBkaXZvdCwg
dWludDMyX3QgZXhwcmVzc2lvbkxlbmd0aCk7CisgICAgICAgIFdpdGhOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50Tm9kZSosIHVpbnQzMl90IGRp
dm90LCB1aW50MzJfdCBleHByZXNzaW9uTGVuZ3RoKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKQEAgLTEzMjAsNyArMTMyNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgTGFiZWxOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUsIHB1YmxpYyBUaHJvd2Fi
bGVFeHByZXNzaW9uRGF0YSB7CiAgICAgcHVibGljOgotICAgICAgICBMYWJlbE5vZGUoaW50LCBj
b25zdCBJZGVudGlmaWVyJiBuYW1lLCBTdGF0ZW1lbnROb2RlKik7CisgICAgICAgIExhYmVsTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBTdGF0ZW1l
bnROb2RlKik7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMzMx
LDcgKzEzMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFRocm93Tm9kZSA6IHB1
YmxpYyBTdGF0ZW1lbnROb2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEgewogICAg
IHB1YmxpYzoKLSAgICAgICAgVGhyb3dOb2RlKGludCwgRXhwcmVzc2lvbk5vZGUqKTsKKyAgICAg
ICAgVGhyb3dOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAK
ICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CkBAIC0xMzQxLDcgKzEzNDUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIFRyeU5vZGUgOiBwdWJsaWMgU3RhdGVtZW50
Tm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBUcnlOb2RlKGludCwgU3RhdGVtZW50Tm9kZSog
dHJ5QmxvY2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2VwdGlvbklkZW50LCBTdGF0ZW1lbnROb2Rl
KiBjYXRjaEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spOworICAgICAgICBUcnlO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFN0YXRlbWVudE5vZGUqIHRyeUJsb2NrLCBjb25z
dCBJZGVudGlmaWVyJiBleGNlcHRpb25JZGVudCwgU3RhdGVtZW50Tm9kZSogY2F0Y2hCbG9jaywg
U3RhdGVtZW50Tm9kZSogZmluYWxseUJsb2NrKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKQEAgLTEzNzAsOCArMTM3NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB0eXBlZGVmIERlY2xhcmF0aW9uU3RhY2tzOjpWYXJTdGFjayBWYXJTdGFjazsKICAgICAgICAg
dHlwZWRlZiBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayBGdW5jdGlvblN0YWNrOwog
Ci0gICAgICAgIFNjb3BlTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIGJvb2wgaW5TdHJpY3RDb250
ZXh0KTsKLSAgICAgICAgU2NvcGVOb2RlKEpTR2xvYmFsRGF0YSosIGludCwgY29uc3QgU291cmNl
Q29kZSYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRp
ZmllclNldCYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIFNjb3Bl
Tm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sIGluU3RyaWN0
Q29udGV4dCk7CisgICAgICAgIFNjb3BlTm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBTb3VyY2VDb2RlJiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayos
IEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29u
c3RhbnRzKTsKIAogICAgICAgICB1c2luZyBQYXJzZXJBcmVuYVJlZkNvdW50ZWQ6Om9wZXJhdG9y
IG5ldzsKIApAQCAtMTQzMywxMiArMTQzNywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFz
cyBQcm9ncmFtTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaXNGdW5jdGlvbk5vZGUgPSBmYWxzZTsKLSAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UHJvZ3JhbU5vZGU+IGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJj
ZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNv
bnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxQcm9ncmFtTm9kZT4gY3JlYXRlKEpTR2xvYmFsRGF0YSosIGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFNvdXJjZUVsZW1lbnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlv
blN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMs
IGludCBudW1Db25zdGFudHMpOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3BlSXNG
dW5jdGlvbiA9IGZhbHNlOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUHJvZ3JhbU5vZGUoSlNH
bG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFj
ayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQg
bnVtQ29uc3RhbnRzKTsKKyAgICAgICAgUHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3Rh
Y2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50
IG51bUNvbnN0YW50cyk7CiAKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogICAgIH07CkBAIC0xNDQ2
LDEyICsxNDUwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEV2YWxOb2RlIDogcHVi
bGljIFNjb3BlTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgYm9vbCBp
c0Z1bmN0aW9uTm9kZSA9IGZhbHNlOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxFdmFsTm9k
ZT4gY3JlYXRlKEpTR2xvYmFsRGF0YSosIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayos
IEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVG
ZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2
YWxOb2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU291
cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0Jiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAg
ICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBw
cml2YXRlOgotICAgICAgICBFdmFsTm9kZShKU0dsb2JhbERhdGEqLCBpbnQsIFNvdXJjZUVsZW1l
bnRzKiwgVmFyU3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNv
dXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOworICAgICAgICBFdmFs
Tm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTb3VyY2VFbGVtZW50
cyosIFZhclN0YWNrKiwgRnVuY3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3Vy
Y2VDb2RlJiwgQ29kZUZlYXR1cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKIAogICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCk7CiAgICAgfTsKQEAgLTE0NjgsOCArMTQ3Miw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGNsYXNzIEZ1bmN0aW9uQm9keU5vZGUgOiBwdWJsaWMgU2NvcGVOb2RlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBib29sIGlzRnVuY3Rpb25Ob2RlID0gdHJ1ZTsKLSAg
ICAgICAgc3RhdGljIEZ1bmN0aW9uQm9keU5vZGUqIGNyZWF0ZShKU0dsb2JhbERhdGEqLCBpbnQs
IGJvb2wgaXNTdHJpY3RNb2RlKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RnVuY3Rpb25C
b2R5Tm9kZT4gY3JlYXRlKEpTR2xvYmFsRGF0YSosIGludCwgU291cmNlRWxlbWVudHMqLCBWYXJT
dGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYs
IENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CisgICAgICAgIHN0YXRpYyBGdW5jdGlv
bkJvZHlOb2RlKiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
Ym9vbCBpc1N0cmljdE1vZGUpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxGdW5jdGlvbkJv
ZHlOb2RlPiBjcmVhdGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU291
cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0Jiwg
Y29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKICAg
ICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzLmdldCgpOyB9CiAgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyYW1ldGVycy0+c2l6ZSgpOyB9CkBAIC0xNDg2LDggKzE0OTAsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2NvcGVJc0Z1bmN0aW9u
ID0gdHJ1ZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9i
YWxEYXRhKiwgaW50LCBib29sIGluU3RyaWN0Q29udGV4dCk7Ci0gICAgICAgIEZ1bmN0aW9uQm9k
eU5vZGUoSlNHbG9iYWxEYXRhKiwgaW50LCBTb3VyY2VFbGVtZW50cyosIFZhclN0YWNrKiwgRnVu
Y3Rpb25TdGFjayosIElkZW50aWZpZXJTZXQmLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZUZlYXR1
cmVzLCBpbnQgbnVtQ29uc3RhbnRzKTsKKyAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZShKU0dsb2Jh
bERhdGEqLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sIGluU3RyaWN0Q29udGV4dCk7Cisg
ICAgICAgIEZ1bmN0aW9uQm9keU5vZGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgU291cmNlRWxlbWVudHMqLCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlm
aWVyU2V0JiwgY29uc3QgU291cmNlQ29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50
cyk7CiAKICAgICAgICAgSWRlbnRpZmllciBtX2lkZW50OwogICAgICAgICBJZGVudGlmaWVyIG1f
aW5mZXJyZWROYW1lOwpAQCAtMTQ5Niw3ICsxNTAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBGdW5jRXhwck5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgRnVuY0V4cHJOb2RlKGludCwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9u
Qm9keU5vZGUqLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyYW1ldGVyTm9kZSogPSAwKTsKKyAgICAg
ICAgRnVuY0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIm
LCBGdW5jdGlvbkJvZHlOb2RlKiwgY29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRlck5vZGUqID0g
MCk7CiAKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9keSgpIHsgcmV0dXJuIG1fYm9keTsg
fQogCkBAIC0xNTEwLDcgKzE1MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1
bmNEZWNsTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IEZ1bmNEZWNsTm9kZShpbnQsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvbkJvZHlOb2RlKiwg
Y29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRlck5vZGUqID0gMCk7CisgICAgICAgIEZ1bmNEZWNs
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25C
b2R5Tm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJhbWV0ZXJOb2RlKiA9IDApOwogCiAgICAg
ICAgIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHkoKSB7IHJldHVybiBtX2JvZHk7IH0KIApAQCAtMTU2
MSw3ICsxNTY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBTd2l0Y2hOb2RlIDog
cHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgU3dpdGNoTm9kZShp
bnQsIEV4cHJlc3Npb25Ob2RlKiwgQ2FzZUJsb2NrTm9kZSopOworICAgICAgICBTd2l0Y2hOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgQ2FzZUJsb2NrTm9kZSop
OwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDU1OGY1MGU1ZmIzMDUzNGM2NjI0ZTc3NDljYjA0
ZTY5NTJiYzkyNjMuLjRmZDY3MWZiNzM1ZjFkZDIxNTExMTI5MzMwMzIxODRmMzhiYzc0MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBA
QCB0ZW1wbGF0ZSA8U291cmNlRWxlbWVudHNNb2RlIG1vZGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlU291cmNlRWxlbWVudHMgUGFyc2VyPAogICAgIGJvb2wgc2Vlbk5vbkRpcmVjdGl2ZSA9IGZh
bHNlOwogICAgIGNvbnN0IElkZW50aWZpZXIqIGRpcmVjdGl2ZSA9IDA7CiAgICAgdW5zaWduZWQg
ZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDA7Ci0gICAgdW5zaWduZWQgc3RhcnRPZmZzZXQgPSBt
X3Rva2VuLm1faW5mby5zdGFydE9mZnNldDsKKyAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IG1f
dG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKICAgICB1bnNpZ25lZCBvbGRMYXN0TGluZU51
bWJlciA9IG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCk7CiAgICAgdW5zaWduZWQgb2xkTGluZU51
bWJlciA9IG1fbGV4ZXItPmxpbmVOdW1iZXIoKTsKICAgICBib29sIGhhc1NldFN0cmljdCA9IGZh
bHNlOwpAQCAtMTcyLDYgKzE3Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlVmFyRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNT
RVJUKG1hdGNoKFZBUikpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0
aW9uKCkpOwogICAgIGludCBzdGFydCA9IHRva2VuTGluZSgpOwogICAgIGludCBlbmQgPSAwOwog
ICAgIGludCBzY3JhdGNoOwpAQCAtMTgyLDIwICsxODMsMjEgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xh
cmF0aW8KICAgICBmYWlsSWZUcnVlKG1fZXJyb3IpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1p
Q29sb24oKSk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVmFyU3RhdGVtZW50KG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHZhckRlY2xzLCBzdGFydCwgZW5kKTsKKyAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVWYXJTdGF0ZW1lbnQobG9jYXRpb24sIHZhckRlY2xzLCBzdGFydCwg
ZW5kKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb25z
dERlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChD
T05TVFRPS0VOKSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24o
KSk7CiAgICAgaW50IHN0YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVuZCA9IDA7CiAgICAg
VHJlZUNvbnN0RGVjbExpc3QgY29uc3REZWNscyA9IHBhcnNlQ29uc3REZWNsYXJhdGlvbkxpc3Qo
Y29udGV4dCk7CiAgICAgZmFpbElmVHJ1ZShtX2Vycm9yKTsKICAgICBmYWlsSWZGYWxzZShhdXRv
U2VtaUNvbG9uKCkpOwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnN0U3RhdGVt
ZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGNvbnN0RGVjbHMsIHN0YXJ0LCBlbmQpOwor
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnN0U3RhdGVtZW50KGxvY2F0aW9uLCBjb25zdERl
Y2xzLCBzdGFydCwgZW5kKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAg
LTIxMCw2ICsyMTIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRG9XaGlsZVN0YXRlbQogICAgIGVuZExvb3AoKTsK
ICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5l
KCk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAg
Y29uc3VtZU9yRmFpbChXSElMRSk7CiAgICAgY29uc3VtZU9yRmFpbChPUEVOUEFSRU4pOwogICAg
IFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CkBAIC0yMTcs
MTMgKzIyMCwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRG9XaGlsZVN0YXRlbQogICAgIGNvbnN1bWVPckZhaWwo
Q0xPU0VQQVJFTik7CiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAgICAgIG5leHQoKTsg
Ly8gQWx3YXlzIHBlcmZvcm1zIGF1dG9tYXRpYyBzZW1pY29sb24gaW5zZXJ0aW9uLgotICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1i
ZXIoKSwgc3RhdGVtZW50LCBleHByLCBzdGFydExpbmUsIGVuZExpbmUpOworICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQobG9jYXRpb24sIHN0YXRlbWVudCwgZXhwciwg
c3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VXaGlsZVN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBB
U1NFUlQobWF0Y2goV0hJTEUpKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5M
b2NhdGlvbigpKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgbmV4dCgp
OwogICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKQEAgLTIzNiw3ICsyNDAsNyBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlV2hpbGVTdGF0ZW1lbgogICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VT
dGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICBlbmRMb29wKCk7CiAgICAgZmFpbElmRmFs
c2Uoc3RhdGVtZW50KTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVXaGlsZVN0YXRlbWVudCht
X2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBzdGF0ZW1lbnQsIHN0YXJ0TGluZSwgZW5k
TGluZSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlV2hpbGVTdGF0ZW1lbnQobG9jYXRpb24s
IGV4cHIsIHN0YXRlbWVudCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIExleGVyVHlwZT4KQEAgLTI0NSw2ICsyNDksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhckRlY2xh
cmF0aQogICAgIFRyZWVFeHByZXNzaW9uIHZhckRlY2xzID0gMDsKICAgICBkbyB7CiAgICAgICAg
IGRlY2xhcmF0aW9ucysrOworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5M
b2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBtYXRjaE9yRmFpbChJREVOVCk7
CiAgICAgICAgIApAQCAtMjY1LDExICsyNzAsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJEZWNsYXJhdGkK
ICAgICAgICAgICAgIGxhc3RJbml0aWFsaXplciA9IGluaXRpYWxpemVyOwogICAgICAgICAgICAg
ZmFpbElmRmFsc2UoaW5pdGlhbGl6ZXIpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBUcmVl
RXhwcmVzc2lvbiBub2RlID0gY29udGV4dC5jcmVhdGVBc3NpZ25SZXNvbHZlKG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksICpuYW1lLCBpbml0aWFsaXplciwgdmFyU3RhcnQsIHZhckRpdm90LCBs
YXN0VG9rZW5FbmQoKSk7CisgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBub2RlID0gY29udGV4
dC5jcmVhdGVBc3NpZ25SZXNvbHZlKGxvY2F0aW9uLCAqbmFtZSwgaW5pdGlhbGl6ZXIsIHZhclN0
YXJ0LCB2YXJEaXZvdCwgbGFzdFRva2VuRW5kKCkpOwogICAgICAgICAgICAgaWYgKCF2YXJEZWNs
cykKICAgICAgICAgICAgICAgICB2YXJEZWNscyA9IG5vZGU7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgdmFyRGVjbHMgPSBjb250ZXh0LmNvbWJpbmVDb21tYU5vZGVzKG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIHZhckRlY2xzLCBub2RlKTsKKyAgICAgICAgICAgICAgICB2
YXJEZWNscyA9IGNvbnRleHQuY29tYmluZUNvbW1hTm9kZXMobG9jYXRpb24sIHZhckRlY2xzLCBu
b2RlKTsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKG1hdGNoKENPTU1BKSk7CiAgICAgcmV0dXJu
IHZhckRlY2xzOwpAQCAtMjgyLDYgKzI4Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUNvbnN0RGVjbExpc3QgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ29uc3REZWNsCiAg
ICAgVHJlZUNvbnN0RGVjbExpc3QgY29uc3REZWNscyA9IDA7CiAgICAgVHJlZUNvbnN0RGVjbExp
c3QgdGFpbCA9IDA7CiAgICAgZG8geworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24o
dG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBtYXRjaE9yRmFpbChJ
REVOVCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG5hbWUgPSBtX3Rva2VuLm1fZGF0YS5p
ZGVudDsKQEAgLTI5NCw3ICszMDAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVDb25zdERlY2xMaXN0IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbnN0RGVjbAogICAgICAg
ICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7IC8vIGNvbnN1bWUgJz0n
CiAgICAgICAgICAgICBpbml0aWFsaXplciA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29u
dGV4dCk7CiAgICAgICAgIH0KLSAgICAgICAgdGFpbCA9IGNvbnRleHQuYXBwZW5kQ29uc3REZWNs
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRhaWwsIG5hbWUsIGluaXRpYWxpemVyKTsKKyAg
ICAgICAgdGFpbCA9IGNvbnRleHQuYXBwZW5kQ29uc3REZWNsKGxvY2F0aW9uLCB0YWlsLCBuYW1l
LCBpbml0aWFsaXplcik7CiAgICAgICAgIGlmICghY29uc3REZWNscykKICAgICAgICAgICAgIGNv
bnN0RGVjbHMgPSB0YWlsOwogICAgIH0gd2hpbGUgKG1hdGNoKENPTU1BKSk7CkBAIC0zMDUsNiAr
MzExLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0
ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKEZPUikpOwor
ICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBz
dGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0KCk7CiAgICAgY29uc3VtZU9yRmFpbChP
UEVOUEFSRU4pOwpAQCAtMzUyLDcgKzM1OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAg
ICAgICAgIGVuZExvb3AoKTsKICAgICAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICAg
ICAgCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvckluTG9vcChtX2xleGVyLT5sYXN0
TGluZU51bWJlcigpLCBmb3JJblRhcmdldCwgZm9ySW5Jbml0aWFsaXplciwgZXhwciwgc3RhdGVt
ZW50LCBkZWNsc1N0YXJ0LCBpbkxvY2F0aW9uLCBleHByRW5kLCBpbml0U3RhcnQsIGluaXRFbmQs
IHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvcklu
TG9vcChsb2NhdGlvbiwgZm9ySW5UYXJnZXQsIGZvckluSW5pdGlhbGl6ZXIsIGV4cHIsIHN0YXRl
bWVudCwgZGVjbHNTdGFydCwgaW5Mb2NhdGlvbiwgZXhwckVuZCwgaW5pdFN0YXJ0LCBpbml0RW5k
LCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIH0KICAgICAKICAgICBpZiAoIW1hdGNoKFNFTUlD
T0xPTikpIHsKQEAgLTM4OCw3ICszOTUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAg
ICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVu
dXNlZCk7CiAgICAgICAgIGVuZExvb3AoKTsKICAgICAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50
KTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9yTG9vcChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBkZWNscywgY29uZGl0aW9uLCBpbmNyZW1lbnQsIHN0YXRlbWVudCwgc3RhcnRM
aW5lLCBlbmRMaW5lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRm9yTG9vcChsb2Nh
dGlvbiwgZGVjbHMsIGNvbmRpdGlvbiwgaW5jcmVtZW50LCBzdGF0ZW1lbnQsIHN0YXJ0TGluZSwg
ZW5kTGluZSk7CiAgICAgfQogICAgIAogICAgIC8vIEZvci1pbiBsb29wCkBAIC00MDUsMTMgKzQx
MiwxNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRm9yU3RhdGVtZW50KAogICAgIGVuZExvb3AoKTsKICAgICBmYWls
SWZGYWxzZShzdGF0ZW1lbnQpOwogICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZvcklu
TG9vcChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBkZWNscywgZXhwciwgc3RhdGVtZW50LCBk
ZWNsc1N0YXJ0LCBkZWNsc0VuZCwgZXhwckVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVGb3JJbkxvb3AobG9jYXRpb24sIGRlY2xzLCBleHByLCBzdGF0
ZW1lbnQsIGRlY2xzU3RhcnQsIGRlY2xzRW5kLCBleHByRW5kLCBzdGFydExpbmUsIGVuZExpbmUp
OwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJyZWFrU3Rh
dGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIEFTU0VSVChtYXRjaChCUkVBSykp
OworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGlu
dCBzdGFydENvbCA9IHRva2VuU3RhcnQoKTsKICAgICBpbnQgZW5kQ29sID0gdG9rZW5FbmQoKTsK
ICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CkBAIC00MjAsNyArNDI4LDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUJyZWFrU3RhdGVtZW4KICAgICAKICAgICBpZiAoYXV0b1NlbWlDb2xvbigpKSB7CiAg
ICAgICAgIGZhaWxJZkZhbHNlV2l0aE1lc3NhZ2UoYnJlYWtJc1ZhbGlkKCksICInYnJlYWsnIGlz
IG9ubHkgdmFsaWQgaW5zaWRlIGEgc3dpdGNoIG9yIGxvb3Agc3RhdGVtZW50Iik7Ci0gICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIHN0YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KGxvY2F0aW9uLCBzdGFydENvbCwgZW5k
Q29sLCBzdGFydExpbmUsIGVuZExpbmUpOwogICAgIH0KICAgICBtYXRjaE9yRmFpbChJREVOVCk7
CiAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKQEAg
LTQyOSwxMyArNDM3LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRl
bWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VCcmVha1N0YXRlbWVuCiAgICAgZW5kTGluZSA9
IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9u
KCkpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KG1fbGV4ZXItPmxh
c3RMaW5lTnVtYmVyKCksIGlkZW50LCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExp
bmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJyZWFrU3RhdGVtZW50KGxvY2F0aW9uLCBp
ZGVudCwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb250aW51ZVN0YXRlbWVudChUcmVl
QnVpbGRlciYgY29udGV4dCkKIHsKICAgICBBU1NFUlQobWF0Y2goQ09OVElOVUUpKTsKKyAgICBK
U1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgc3RhcnRD
b2wgPSB0b2tlblN0YXJ0KCk7CiAgICAgaW50IGVuZENvbCA9IHRva2VuRW5kKCk7CiAgICAgaW50
IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwpAQCAtNDQ0LDcgKzQ1Myw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VD
b250aW51ZVN0YXRlCiAgICAgCiAgICAgaWYgKGF1dG9TZW1pQ29sb24oKSkgewogICAgICAgICBm
YWlsSWZGYWxzZVdpdGhNZXNzYWdlKGNvbnRpbnVlSXNWYWxpZCgpLCAiJ2NvbnRpbnVlJyBpcyBv
bmx5IHZhbGlkIGluc2lkZSBhIGxvb3Agc3RhdGVtZW50Iik7Ci0gICAgICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHN0
YXJ0Q29sLCBlbmRDb2wsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGxvY2F0aW9uLCBzdGFydENvbCwgZW5kQ29sLCBz
dGFydExpbmUsIGVuZExpbmUpOwogICAgIH0KICAgICBtYXRjaE9yRmFpbChJREVOVCk7CiAgICAg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKQEAgLTQ1NSwx
MyArNDY0LDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDb250aW51ZVN0YXRlCiAgICAgZW5kTGluZSA9IHRva2Vu
TGluZSgpOwogICAgIG5leHQoKTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwot
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIGlkZW50LCBzdGFydENvbCwgZW5kQ29sLCBzdGFydExpbmUsIGVuZExpbmUp
OworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGxvY2F0aW9uLCBp
ZGVudCwgc3RhcnRDb2wsIGVuZENvbCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VSZXR1cm5TdGF0ZW1lbnQoVHJlZUJ1
aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKFJFVFVSTikpOworICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGZhaWxJZkZhbHNlKGN1
cnJlbnRTY29wZSgpLT5pc0Z1bmN0aW9uKCkpOwogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxp
bmUoKTsKICAgICBpbnQgZW5kTGluZSA9IHN0YXJ0TGluZTsKQEAgLTQ3NCwyMCArNDg0LDIxIEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VSZXR1cm5TdGF0ZW1lCiAgICAgaWYgKG1hdGNoKFNFTUlDT0xPTikpCiAgICAg
ICAgIGVuZExpbmUgID0gdG9rZW5MaW5lKCk7CiAgICAgaWYgKGF1dG9TZW1pQ29sb24oKSkKLSAg
ICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RM
aW5lTnVtYmVyKCksIDAsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZVJldHVyblN0YXRlbWVudChsb2NhdGlvbiwgMCwgc3RhcnQs
IGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKICAgICBUcmVlRXhwcmVzc2lvbiBleHByID0gcGFy
c2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGV4cHIpOwogICAgIGVuZCA9
IGxhc3RUb2tlbkVuZCgpOwogICAgIGlmIChtYXRjaChTRU1JQ09MT04pKQogICAgICAgICBlbmRM
aW5lICA9IHRva2VuTGluZSgpOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSk7Ci0g
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5l
TnVtYmVyKCksIGV4cHIsIHN0YXJ0LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CisgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlUmV0dXJuU3RhdGVtZW50KGxvY2F0aW9uLCBleHByLCBzdGFydCwg
ZW5kLCBzdGFydExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJU
eXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZVRocm93U3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewog
ICAgIEFTU0VSVChtYXRjaChUSFJPVykpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0
b2tlbkxvY2F0aW9uKCkpOwogICAgIGludCBlU3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgaW50
IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKQEAgLTUwMCwxMyArNTExLDE0
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VUaHJvd1N0YXRlbWVuCiAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUo
KTsKICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwogICAgIAotICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZVRocm93U3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4
cHIsIGVTdGFydCwgZUVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVUaHJvd1N0YXRlbWVudChsb2NhdGlvbiwgZXhwciwgZVN0YXJ0LCBlRW5kLCBzdGFy
dExpbmUsIGVuZExpbmUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVdpdGhTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJU
KG1hdGNoKFdJVEgpKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlv
bigpKTsKICAgICBmYWlsSWZUcnVlV2l0aE1lc3NhZ2Uoc3RyaWN0TW9kZSgpLCAiJ3dpdGgnIHN0
YXRlbWVudHMgYXJlIG5vdCB2YWxpZCBpbiBzdHJpY3QgbW9kZSIpOwogICAgIGN1cnJlbnRTY29w
ZSgpLT5zZXROZWVkc0Z1bGxBY3RpdmF0aW9uKCk7CiAgICAgaW50IHN0YXJ0TGluZSA9IHRva2Vu
TGluZSgpOwpAQCAtNTIzLDEzICs1MzUsMTQgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVdpdGhTdGF0ZW1lbnQKICAg
ICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNl
ZCk7CiAgICAgZmFpbElmRmFsc2Uoc3RhdGVtZW50KTsKICAgICAKLSAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVXaXRoU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIHN0
YXRlbWVudCwgc3RhcnQsIGVuZCwgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVXaXRoU3RhdGVtZW50KGxvY2F0aW9uLCBleHByLCBzdGF0ZW1lbnQsIHN0YXJ0
LCBlbmQsIHN0YXJ0TGluZSwgZW5kTGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlU3dpdGNoU3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQog
ewogICAgIEFTU0VSVChtYXRjaChTV0lUQ0gpKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5lKCk7CiAg
ICAgbmV4dCgpOwogICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsKQEAgLTU1MCw3ICs1NjMs
NyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlU3dpdGNoU3RhdGVtZQogICAgIGVuZFN3aXRjaCgpOwogICAgIGNvbnN1
bWVPckZhaWwoQ0xPU0VCUkFDRSk7CiAgICAgCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlU3dp
dGNoU3RhdGVtZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIsIGZpcnN0Q2xhdXNl
cywgZGVmYXVsdENsYXVzZSwgc2Vjb25kQ2xhdXNlcywgc3RhcnRMaW5lLCBlbmRMaW5lKTsKKyAg
ICByZXR1cm4gY29udGV4dC5jcmVhdGVTd2l0Y2hTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHIsIGZp
cnN0Q2xhdXNlcywgZGVmYXVsdENsYXVzZSwgc2Vjb25kQ2xhdXNlcywgc3RhcnRMaW5lLCBlbmRM
aW5lKTsKICAgICAKIH0KIApAQCAtNTk4LDYgKzYxMSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlVHJ5U3RhdGVtZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQog
ewogICAgIEFTU0VSVChtYXRjaChUUlkpKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24o
dG9rZW5Mb2NhdGlvbigpKTsKICAgICBUcmVlU3RhdGVtZW50IHRyeUJsb2NrID0gMDsKICAgICBj
b25zdCBJZGVudGlmaWVyKiBpZGVudCA9ICZtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm51
bGxJZGVudGlmaWVyOwogICAgIFRyZWVTdGF0ZW1lbnQgY2F0Y2hCbG9jayA9IDA7CkBAIC02MzQs
MzcgKzY0OCwzOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVHJ5U3RhdGVtZW50KAogICAgICAgICBmYWlsSWZGYWxz
ZShmaW5hbGx5QmxvY2spOwogICAgIH0KICAgICBmYWlsSWZGYWxzZShjYXRjaEJsb2NrIHx8IGZp
bmFsbHlCbG9jayk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlVHJ5U3RhdGVtZW50KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIHRyeUJsb2NrLCBpZGVudCwgY2F0Y2hCbG9jaywgZmluYWxs
eUJsb2NrLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVU
cnlTdGF0ZW1lbnQobG9jYXRpb24sIHRyeUJsb2NrLCBpZGVudCwgY2F0Y2hCbG9jaywgZmluYWxs
eUJsb2NrLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZWJ1Z2dlclN0YXRlbWVudChUcmVlQnVpbGRlciYgY29udGV4
dCkKIHsKICAgICBBU1NFUlQobWF0Y2goREVCVUdHRVIpKTsKKyAgICBKU1Rva2VuTG9jYXRpb24g
bG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9rZW5MaW5l
KCk7CiAgICAgaW50IGVuZExpbmUgPSBzdGFydExpbmU7CiAgICAgbmV4dCgpOwogICAgIGlmICht
YXRjaChTRU1JQ09MT04pKQogICAgICAgICBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBm
YWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCkpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZURl
YnVnZ2VyKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHN0YXJ0TGluZSwgZW5kTGluZSk7Cisg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRGVidWdnZXIobG9jYXRpb24sIHN0YXJ0TGluZSwgZW5k
TGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQmxv
Y2tTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG1hdGNoKE9Q
RU5CUkFDRSkpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OwogICAgIGludCBzdGFydCA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICBpZiAobWF0
Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVCbG9ja1N0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCAwLCBzdGFy
dCwgbV9sYXN0TGluZSk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2NrU3RhdGVt
ZW50KGxvY2F0aW9uLCAwLCBzdGFydCwgbV9sYXN0TGluZSk7CiAgICAgfQogICAgIFRyZWVTb3Vy
Y2VFbGVtZW50cyBzdWJ0cmVlID0gcGFyc2VTb3VyY2VFbGVtZW50czxEb250Q2hlY2tGb3JTdHJp
Y3RNb2RlPihjb250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShzdWJ0cmVlKTsKICAgICBtYXRjaE9y
RmFpbChDTE9TRUJSQUNFKTsKICAgICBuZXh0KCk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
QmxvY2tTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgc3VidHJlZSwgc3RhcnQs
IG1fbGFzdExpbmUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUJsb2NrU3RhdGVtZW50KGxv
Y2F0aW9uLCBzdWJ0cmVlLCBzdGFydCwgbV9sYXN0TGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBl
bmFtZSBMZXhlclR5cGU+CkBAIC02ODUsOSArNzAxLDExIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnQo
VHJlCiAgICAgY2FzZSBGVU5DVElPTjoKICAgICAgICAgZmFpbElmRmFsc2VJZlN0cmljdFdpdGhN
ZXNzYWdlKG1fc3RhdGVtZW50RGVwdGggPT0gMSwgIkZ1bmN0aW9ucyBjYW5ub3QgYmUgZGVjbGFy
ZWQgaW4gYSBuZXN0ZWQgYmxvY2sgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgcmV0dXJuIHBh
cnNlRnVuY3Rpb25EZWNsYXJhdGlvbihjb250ZXh0KTsKLSAgICBjYXNlIFNFTUlDT0xPTjoKKyAg
ICBjYXNlIFNFTUlDT0xPTjogeworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9r
ZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVFbXB0eVN0YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlRW1wdHlTdGF0ZW1lbnQobG9jYXRpb24pOworICAgIH0KICAg
ICBjYXNlIElGOgogICAgICAgICByZXR1cm4gcGFyc2VJZlN0YXRlbWVudChjb250ZXh0KTsKICAg
ICBjYXNlIERPOgpAQCAtNzIzLDcgKzc0MSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdGF0ZW1lbnQoVHJlCiAg
ICAgY2FzZSBTVFJJTkc6CiAgICAgICAgIGRpcmVjdGl2ZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50
OwogICAgICAgICBpZiAoZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkKLSAgICAgICAgICAgICpkaXJl
Y3RpdmVMaXRlcmFsTGVuZ3RoID0gbV90b2tlbi5tX2luZm8uZW5kT2Zmc2V0IC0gbV90b2tlbi5t
X2luZm8uc3RhcnRPZmZzZXQ7CisgICAgICAgICAgICAqZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9
IG1fdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQgLSBtX3Rva2VuLm1fbG9jYXRpb24uc3RhcnRP
ZmZzZXQ7CiAgICAgICAgIG5vblRyaXZpYWxFeHByZXNzaW9uQ291bnQgPSBtX25vblRyaXZpYWxF
eHByZXNzaW9uQ291bnQ7CiAgICAgZGVmYXVsdDoKICAgICAgICAgVHJlZVN0YXRlbWVudCBleHBy
U3RhdGVtZW50ID0gcGFyc2VFeHByZXNzaW9uU3RhdGVtZW50KGNvbnRleHQpOwpAQCAtNzU2LDEy
ICs3NzQsMTIgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUZ1bmN0aW9uQm9keSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
dW5jdGlvbkJvZHkoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgaWYgKG1hdGNoKENMT1NF
QlJBQ0UpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jdGlvbkJvZHkobV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgc3RyaWN0TW9kZSgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHRva2VuTG9jYXRpb24oKSwgc3RyaWN0TW9kZSgpKTsKICAg
ICBEZXB0aE1hbmFnZXIgc3RhdGVtZW50RGVwdGgoJm1fc3RhdGVtZW50RGVwdGgpOwogICAgIG1f
c3RhdGVtZW50RGVwdGggPSAwOwogICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpGdW5jdGlvbkJv
ZHlCdWlsZGVyIGJvZHlCdWlsZGVyKGNvbnN0X2Nhc3Q8SlNHbG9iYWxEYXRhKj4obV9nbG9iYWxE
YXRhKSwgbV9sZXhlci5nZXQoKSk7CiAgICAgZmFpbElmRmFsc2UocGFyc2VTb3VyY2VFbGVtZW50
czxDaGVja0ZvclN0cmljdE1vZGU+KGJvZHlCdWlsZGVyKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRnVuY3Rpb25Cb2R5KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHN0cmljdE1vZGUo
KSk7CisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY3Rpb25Cb2R5KHRva2VuTG9jYXRpb24o
KSwgc3RyaWN0TW9kZSgpKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAg
LTc4NiwyMCArODA0LDIxIEBAIHRlbXBsYXRlIDxGdW5jdGlvblJlcXVpcmVtZW50cyByZXF1aXJl
bWVudHMsIGJvb2wgbmFtZUlzSW5Db250YWluaW5nU2NvcGUsIGNsYXNzCiAgICAgCiAgICAgb3Bl
bkJyYWNlUG9zID0gbV90b2tlbi5tX2RhdGEuaW50VmFsdWU7CiAgICAgYm9keVN0YXJ0TGluZSA9
IHRva2VuTGluZSgpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9u
KCkpOwogICAgIAogICAgIC8vIElmIHdlIGtub3cgYWJvdXQgdGhpcyBmdW5jdGlvbiBhbHJlYWR5
LCB3ZSBjYW4gdXNlIHRoZSBjYWNoZWQgaW5mbyBhbmQgc2tpcCB0aGUgcGFyc2VyIHRvIHRoZSBl
bmQgb2YgdGhlIGZ1bmN0aW9uLgogICAgIGlmIChjb25zdCBTb3VyY2VQcm92aWRlckNhY2hlSXRl
bSogY2FjaGVkSW5mbyA9IFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5jdGlvbkNhY2hlID8gZmluZENh
Y2hlZEZ1bmN0aW9uSW5mbyhvcGVuQnJhY2VQb3MpIDogMCkgewogICAgICAgICAvLyBJZiB3ZSdy
ZSBpbiBhIHN0cmljdCBjb250ZXh0LCB0aGUgY2FjaGVkIGZ1bmN0aW9uIGluZm8gbXVzdCBzYXkg
aXQgd2FzIHN0cmljdCB0b28uCiAgICAgICAgIEFTU0VSVCghc3RyaWN0TW9kZSgpIHx8IGNhY2hl
ZEluZm8tPnN0cmljdE1vZGUpOwotICAgICAgICBib2R5ID0gY29udGV4dC5jcmVhdGVGdW5jdGlv
bkJvZHkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7
CisgICAgICAgIGJvZHkgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uQm9keShsb2NhdGlvbiwgY2Fj
aGVkSW5mby0+c3RyaWN0TW9kZSk7CiAgICAgICAgIAogICAgICAgICBmdW5jdGlvblNjb3BlLT5y
ZXN0b3JlRnVuY3Rpb25JbmZvKGNhY2hlZEluZm8pOwogICAgICAgICBmYWlsSWZGYWxzZShwb3BT
Y29wZShmdW5jdGlvblNjb3BlLCBUcmVlQnVpbGRlcjo6TmVlZHNGcmVlVmFyaWFibGVJbmZvKSk7
CiAgICAgICAgIAogICAgICAgICBjbG9zZUJyYWNlUG9zID0gY2FjaGVkSW5mby0+Y2xvc2VCcmFj
ZVBvczsKICAgICAgICAgbV90b2tlbiA9IGNhY2hlZEluZm8tPmNsb3NlQnJhY2VUb2tlbigpOwot
ICAgICAgICBtX2xleGVyLT5zZXRPZmZzZXQobV90b2tlbi5tX2luZm8uZW5kT2Zmc2V0KTsKLSAg
ICAgICAgbV9sZXhlci0+c2V0TGluZU51bWJlcihtX3Rva2VuLm1faW5mby5saW5lKTsKKyAgICAg
ICAgbV9sZXhlci0+c2V0T2Zmc2V0KG1fdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQpOworICAg
ICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lKTsKICAg
ICAgICAgCiAgICAgICAgIG5leHQoKTsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC04MjEsNyAr
ODQwLDcgQEAgdGVtcGxhdGUgPEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgYm9v
bCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgY2xhc3MKICAgICBPd25QdHI8U291cmNlUHJvdmlk
ZXJDYWNoZUl0ZW0+IG5ld0luZm87CiAgICAgaW50IGZ1bmN0aW9uTGVuZ3RoID0gY2xvc2VCcmFj
ZVBvcyAtIG9wZW5CcmFjZVBvczsKICAgICBpZiAoVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9u
Q2FjaGUgJiYgbV9mdW5jdGlvbkNhY2hlICYmIGZ1bmN0aW9uTGVuZ3RoID4gbWluaW11bUZ1bmN0
aW9uTGVuZ3RoVG9DYWNoZSkgewotICAgICAgICBuZXdJbmZvID0gYWRvcHRQdHIobmV3IFNvdXJj
ZVByb3ZpZGVyQ2FjaGVJdGVtKG1fdG9rZW4ubV9pbmZvLmxpbmUsIGNsb3NlQnJhY2VQb3MpKTsK
KyAgICAgICAgbmV3SW5mbyA9IGFkb3B0UHRyKG5ldyBTb3VyY2VQcm92aWRlckNhY2hlSXRlbSht
X3Rva2VuLm1fbG9jYXRpb24ubGluZSwgY2xvc2VCcmFjZVBvcykpOwogICAgICAgICBmdW5jdGlv
blNjb3BlLT5zYXZlRnVuY3Rpb25JbmZvKG5ld0luZm8uZ2V0KCkpOwogICAgIH0KICAgICAKQEAg
LTg0MSw2ICs4NjAsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUZ1bmN0aW9uRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgQVNTRVJU
KG1hdGNoKEZVTkNUSU9OKSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9j
YXRpb24oKSk7CiAgICAgbmV4dCgpOwogICAgIGNvbnN0IElkZW50aWZpZXIqIG5hbWUgPSAwOwog
ICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSAwOwpAQCAtODUxLDcgKzg3
MSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhCiAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVu
Y3Rpb25JbmZvPEZ1bmN0aW9uTmVlZHNOYW1lLCB0cnVlPihjb250ZXh0LCBuYW1lLCBwYXJhbWV0
ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUpKSk7
CiAgICAgZmFpbElmRmFsc2UobmFtZSk7CiAgICAgZmFpbElmRmFsc2VJZlN0cmljdChkZWNsYXJl
VmFyaWFibGUobmFtZSkpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmNEZWNsU3RhdGVt
ZW50KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIG5hbWUsIGJvZHksIHBhcmFtZXRlcnMsIG9w
ZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7Cisg
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQobG9jYXRpb24sIG5hbWUs
IGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0
TGluZSwgbV9sYXN0TGluZSk7CiB9CiAKIHN0cnVjdCBMYWJlbEluZm8gewpAQCAtODc1LDEwICs4
OTUsMTEgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb25PckwKICAgICAgKiBzcGVjaWFsIGNhc2UgdGhh
dCBsb29rcyBmb3IgYSBjb2xvbiBhcyB0aGUgbmV4dCBjaGFyYWN0ZXIgaW4gdGhlIGlucHV0Lgog
ICAgICAqLwogICAgIFZlY3RvcjxMYWJlbEluZm8+IGxhYmVsczsKLSAgICAKKyAgICBKU1Rva2Vu
TG9jYXRpb24gbG9jYXRpb247CiAgICAgZG8gewogICAgICAgICBpbnQgc3RhcnQgPSB0b2tlblN0
YXJ0KCk7CiAgICAgICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKKyAgICAgICAgbG9j
YXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgICAgIGlmICghbmV4dFRva2VuSXNDb2xvbigp
KSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBoaXQgdGhpcyBwYXRoIHdlJ3JlIG1ha2luZyBhIGV4
cHJlc3Npb24gc3RhdGVtZW50LCB3aGljaAogICAgICAgICAgICAgLy8gYnkgZGVmaW5pdGlvbiBj
YW4ndCBtYWtlIHVzZSBvZiBjb250aW51ZS9icmVhayBzbyB3ZSBjYW4ganVzdApAQCAtODg2LDcg
KzkwNyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uT3JMCiAgICAgICAgICAgICBUcmVlRXhwcmVz
c2lvbiBleHByZXNzaW9uID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICAgICAg
ZmFpbElmRmFsc2UoZXhwcmVzc2lvbik7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShhdXRvU2Vt
aUNvbG9uKCkpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVu
dChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByZXNzaW9uLCBzdGFydExpbmUsIG1fbGFz
dExpbmUpOworICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChs
b2NhdGlvbiwgZXhwcmVzc2lvbiwgc3RhcnRMaW5lLCBtX2xhc3RMaW5lKTsKICAgICAgICAgfQog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50Owog
ICAgICAgICBpbnQgZW5kID0gdG9rZW5FbmQoKTsKQEAgLTkyNSw3ICs5NDYsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRXhwcmVzc2lvbk9yTAogICAgIGZhaWxJZkZhbHNlKHN0YXRlbWVudCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBsYWJlbHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgY29uc3QgTGFi
ZWxJbmZvJiBpbmZvID0gbGFiZWxzW2xhYmVscy5zaXplKCkgLSBpIC0gMV07Ci0gICAgICAgIHN0
YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlTGFiZWxTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgaW5mby5tX2lkZW50LCBzdGF0ZW1lbnQsIGluZm8ubV9zdGFydCwgaW5mby5tX2Vu
ZCk7CisgICAgICAgIHN0YXRlbWVudCA9IGNvbnRleHQuY3JlYXRlTGFiZWxTdGF0ZW1lbnQobG9j
YXRpb24sIGluZm8ubV9pZGVudCwgc3RhdGVtZW50LCBpbmZvLm1fc3RhcnQsIGluZm8ubV9lbmQp
OwogICAgIH0KICAgICByZXR1cm4gc3RhdGVtZW50OwogfQpAQCAtOTM0LDM5ICs5NTUsNDIgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uU3RhdGVt
ZW50KFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIGludCBzdGFydExpbmUgPSB0b2tlbkxp
bmUoKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAg
ICBUcmVlRXhwcmVzc2lvbiBleHByZXNzaW9uID0gcGFyc2VFeHByZXNzaW9uKGNvbnRleHQpOwog
ICAgIGZhaWxJZkZhbHNlKGV4cHJlc3Npb24pOwogICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29s
b24oKSk7Ci0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChtX2xleGVyLT5s
YXN0TGluZU51bWJlcigpLCBleHByZXNzaW9uLCBzdGFydExpbmUsIG1fbGFzdExpbmUpOworICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1lbnQobG9jYXRpb24sIGV4cHJlc3Npb24s
IHN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAg
QVNTRVJUKG1hdGNoKElGKSk7Ci0gICAgCisgICAgSlNUb2tlbkxvY2F0aW9uIGlmTG9jYXRpb24o
dG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgc3RhcnQgPSB0b2tlbkxpbmUoKTsKICAgICBuZXh0
KCk7Ci0gICAgCisKICAgICBjb25zdW1lT3JGYWlsKE9QRU5QQVJFTik7Ci0gICAgCisKICAgICBU
cmVlRXhwcmVzc2lvbiBjb25kaXRpb24gPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAg
ZmFpbElmRmFsc2UoY29uZGl0aW9uKTsKICAgICBpbnQgZW5kID0gdG9rZW5MaW5lKCk7CiAgICAg
Y29uc3VtZU9yRmFpbChDTE9TRVBBUkVOKTsKLSAgICAKKwogICAgIGNvbnN0IElkZW50aWZpZXIq
IHVudXNlZCA9IDA7CiAgICAgVHJlZVN0YXRlbWVudCB0cnVlQmxvY2sgPSBwYXJzZVN0YXRlbWVu
dChjb250ZXh0LCB1bnVzZWQpOwogICAgIGZhaWxJZkZhbHNlKHRydWVCbG9jayk7Ci0gICAgCisK
ICAgICBpZiAoIW1hdGNoKEVMU0UpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJZlN0
YXRlbWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBjb25kaXRpb24sIHRydWVCbG9jaywg
c3RhcnQsIGVuZCk7Ci0gICAgCisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUlmU3RhdGVt
ZW50KGlmTG9jYXRpb24sIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBzdGFydCwgZW5kKTsKKwogICAg
IFZlY3RvcjxUcmVlRXhwcmVzc2lvbj4gZXhwclN0YWNrOwogICAgIFZlY3RvcjxwYWlyPGludCwg
aW50PiA+IHBvc1N0YWNrOworICAgIFZlY3RvcjxKU1Rva2VuTG9jYXRpb24+IHRva2VuTG9jYXRp
b25TdGFjazsKICAgICBWZWN0b3I8VHJlZVN0YXRlbWVudD4gc3RhdGVtZW50U3RhY2s7CiAgICAg
Ym9vbCB0cmFpbGluZ0Vsc2UgPSBmYWxzZTsKICAgICBkbyB7CisgICAgICAgIEpTVG9rZW5Mb2Nh
dGlvbiB0ZW1wTG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgICAgIG5leHQoKTsKICAg
ICAgICAgaWYgKCFtYXRjaChJRikpIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIHVu
dXNlZCA9IDA7CkBAIC05NzgsMjEgKzEwMDIsMjIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlmU3RhdGVtZW50KFQK
ICAgICAgICAgfQogICAgICAgICBpbnQgaW5uZXJTdGFydCA9IHRva2VuTGluZSgpOwogICAgICAg
ICBuZXh0KCk7Ci0gICAgICAgIAorCiAgICAgICAgIGNvbnN1bWVPckZhaWwoT1BFTlBBUkVOKTsK
LSAgICAgICAgCisKICAgICAgICAgVHJlZUV4cHJlc3Npb24gaW5uZXJDb25kaXRpb24gPSBwYXJz
ZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKGlubmVyQ29uZGl0aW9u
KTsKICAgICAgICAgaW50IGlubmVyRW5kID0gdG9rZW5MaW5lKCk7CiAgICAgICAgIGNvbnN1bWVP
ckZhaWwoQ0xPU0VQQVJFTik7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIHVudXNlZCA9IDA7
CiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgaW5uZXJUcnVlQmxvY2sgPSBwYXJzZVN0YXRlbWVudChj
b250ZXh0LCB1bnVzZWQpOwotICAgICAgICBmYWlsSWZGYWxzZShpbm5lclRydWVCbG9jayk7ICAg
ICAKKyAgICAgICAgZmFpbElmRmFsc2UoaW5uZXJUcnVlQmxvY2spOworICAgICAgICB0b2tlbkxv
Y2F0aW9uU3RhY2suYXBwZW5kKHRlbXBMb2NhdGlvbik7CiAgICAgICAgIGV4cHJTdGFjay5hcHBl
bmQoaW5uZXJDb25kaXRpb24pOwogICAgICAgICBwb3NTdGFjay5hcHBlbmQobWFrZV9wYWlyKGlu
bmVyU3RhcnQsIGlubmVyRW5kKSk7CiAgICAgICAgIHN0YXRlbWVudFN0YWNrLmFwcGVuZChpbm5l
clRydWVCbG9jayk7CiAgICAgfSB3aGlsZSAobWF0Y2goRUxTRSkpOwotICAgIAorCiAgICAgaWYg
KCF0cmFpbGluZ0Vsc2UpIHsKICAgICAgICAgVHJlZUV4cHJlc3Npb24gY29uZGl0aW9uID0gZXhw
clN0YWNrLmxhc3QoKTsKICAgICAgICAgZXhwclN0YWNrLnJlbW92ZUxhc3QoKTsKQEAgLTEwMDAs
OSArMTAyNSwxMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVAogICAgICAgICBzdGF0ZW1lbnRT
dGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgIHBhaXI8aW50LCBpbnQ+IHBvcyA9IHBvc1N0YWNr
Lmxhc3QoKTsKICAgICAgICAgcG9zU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICBzdGF0ZW1l
bnRTdGFjay5hcHBlbmQoY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChtX2xleGVyLT5sYXN0TGlu
ZU51bWJlcigpLCBjb25kaXRpb24sIHRydWVCbG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vjb25kKSk7
CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBlbHNlTG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uU3Rh
Y2subGFzdCgpOworICAgICAgICB0b2tlbkxvY2F0aW9uU3RhY2sucmVtb3ZlTGFzdCgpOworICAg
ICAgICBzdGF0ZW1lbnRTdGFjay5hcHBlbmQoY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChlbHNl
TG9jYXRpb24sIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBwb3MuZmlyc3QsIHBvcy5zZWNvbmQpKTsK
ICAgICB9Ci0gICAgCisKICAgICB3aGlsZSAoIWV4cHJTdGFjay5pc0VtcHR5KCkpIHsKICAgICAg
ICAgVHJlZUV4cHJlc3Npb24gY29uZGl0aW9uID0gZXhwclN0YWNrLmxhc3QoKTsKICAgICAgICAg
ZXhwclN0YWNrLnJlbW92ZUxhc3QoKTsKQEAgLTEwMTIsMTYgKzEwMzksMTkgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUlmU3RhdGVtZW50KFQKICAgICAgICAgc3RhdGVtZW50U3RhY2sucmVtb3ZlTGFzdCgpOwogICAg
ICAgICBwYWlyPGludCwgaW50PiBwb3MgPSBwb3NTdGFjay5sYXN0KCk7CiAgICAgICAgIHBvc1N0
YWNrLnJlbW92ZUxhc3QoKTsKLSAgICAgICAgc3RhdGVtZW50U3RhY2suYXBwZW5kKGNvbnRleHQu
Y3JlYXRlSWZTdGF0ZW1lbnQobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZGl0aW9uLCB0
cnVlQmxvY2ssIGZhbHNlQmxvY2ssIHBvcy5maXJzdCwgcG9zLnNlY29uZCkpOworICAgICAgICBK
U1Rva2VuTG9jYXRpb24gZWxzZUxvY2F0aW9uID0gdG9rZW5Mb2NhdGlvblN0YWNrLmxhc3QoKTsK
KyAgICAgICAgdG9rZW5Mb2NhdGlvblN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgc3RhdGVt
ZW50U3RhY2suYXBwZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQoZWxzZUxvY2F0aW9uLCBj
b25kaXRpb24sIHRydWVCbG9jaywgZmFsc2VCbG9jaywgcG9zLmZpcnN0LCBwb3Muc2Vjb25kKSk7
CiAgICAgfQotICAgIAotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCBzdGF0ZW1lbnRTdGFj
ay5sYXN0KCksIHN0YXJ0LCBlbmQpOworCisgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlSWZTdGF0
ZW1lbnQoaWZMb2NhdGlvbiwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIHN0YXRlbWVudFN0YWNrLmxh
c3QoKSwgc3RhcnQsIGVuZCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUV4cHJlc3Npb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCiB7CiAgICAgZmFpbElm
U3RhY2tPdmVyZmxvdygpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0
aW9uKCkpOwogICAgIFRyZWVFeHByZXNzaW9uIG5vZGUgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNz
aW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKG5vZGUpOwogICAgIGlmICghbWF0Y2goQ09N
TUEpKQpAQCAtMTAzMSw3ICsxMDYxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uKFQKICAgICBt
X25vbkxIU0NvdW50Kys7CiAgICAgVHJlZUV4cHJlc3Npb24gcmlnaHQgPSBwYXJzZUFzc2lnbm1l
bnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKHJpZ2h0KTsKLSAgICB0eXBl
bmFtZSBUcmVlQnVpbGRlcjo6Q29tbWEgY29tbWFOb2RlID0gY29udGV4dC5jcmVhdGVDb21tYUV4
cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgbm9kZSwgcmlnaHQpOworICAgIHR5cGVuYW1l
IFRyZWVCdWlsZGVyOjpDb21tYSBjb21tYU5vZGUgPSBjb250ZXh0LmNyZWF0ZUNvbW1hRXhwcihs
b2NhdGlvbiwgbm9kZSwgcmlnaHQpOwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAgICAg
ICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAgICAgICAgIHJpZ2h0ID0g
cGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTEwNDYsNiArMTA3Niw3IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlQXNzaWdubWVuCiB7CiAgICAgZmFpbElmU3RhY2tPdmVyZmxvdygpOwog
ICAgIGludCBzdGFydCA9IHRva2VuU3RhcnQoKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKICAgICBpbnQgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCA9IG1f
YXNzaWdubWVudENvdW50OwogICAgIGludCBpbml0aWFsTm9uTEhTQ291bnQgPSBtX25vbkxIU0Nv
dW50OwogICAgIFRyZWVFeHByZXNzaW9uIGxocyA9IHBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9u
KGNvbnRleHQpOwpAQCAtMTA5OCw3ICsxMTI5LDcgQEAgZW5kOgogICAgICAgICByZXR1cm4gbGhz
OwogICAgIAogICAgIHdoaWxlIChhc3NpZ25tZW50U3RhY2spCi0gICAgICAgIGxocyA9IGNvbnRl
eHQuY3JlYXRlQXNzaWdubWVudChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBhc3NpZ25tZW50
U3RhY2ssIGxocywgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9hc3NpZ25tZW50Q291bnQsIGxh
c3RUb2tlbkVuZCgpKTsKKyAgICAgICAgbGhzID0gY29udGV4dC5jcmVhdGVBc3NpZ25tZW50KGxv
Y2F0aW9uLCBhc3NpZ25tZW50U3RhY2ssIGxocywgaW5pdGlhbEFzc2lnbm1lbnRDb3VudCwgbV9h
c3NpZ25tZW50Q291bnQsIGxhc3RUb2tlbkVuZCgpKTsKICAgICAKICAgICByZXR1cm4gbGhzOwog
fQpAQCAtMTEwNiw2ICsxMTM3LDcgQEAgZW5kOgogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4KIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0
KQogeworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAg
IFRyZWVFeHByZXNzaW9uIGNvbmQgPSBwYXJzZUJpbmFyeUV4cHJlc3Npb24oY29udGV4dCk7CiAg
ICAgZmFpbElmRmFsc2UoY29uZCk7CiAgICAgaWYgKCFtYXRjaChRVUVTVElPTikpCkBAIC0xMTE4
LDcgKzExNTAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9u
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNvbmRpdGlvbmFsRQogICAgIAogICAgIFRyZWVFeHBy
ZXNzaW9uIHJocyA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgZmFp
bElmRmFsc2UocmhzKTsKLSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVDb25kaXRpb25hbEV4cHIo
bV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgY29uZCwgbGhzLCByaHMpOworICAgIHJldHVybiBj
b250ZXh0LmNyZWF0ZUNvbmRpdGlvbmFsRXhwcihsb2NhdGlvbiwgY29uZCwgbGhzLCByaHMpOwog
fQogCiBBTFdBWVNfSU5MSU5FIHN0YXRpYyBib29sIGlzVW5hcnlPcChKU1Rva2VuVHlwZSB0b2tl
bikKQEAgLTExNDEsNiArMTE3Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQmluYXJ5RXhwcmVzCiAgICAgaW50
IG9wZXJhbmRTdGFja0RlcHRoID0gMDsKICAgICBpbnQgb3BlcmF0b3JTdGFja0RlcHRoID0gMDsK
ICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5RXhwckNvbnRleHQgYmluYXJ5RXhwckNv
bnRleHQoY29udGV4dCk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRp
b24oKSk7CiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgaW50IGV4cHJTdGFydCA9IHRva2Vu
U3RhcnQoKTsKICAgICAgICAgaW50IGluaXRpYWxBc3NpZ25tZW50cyA9IG1fYXNzaWdubWVudENv
dW50OwpAQCAtMTE2Miw3ICsxMTk1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VCaW5hcnlFeHByZXMKICAgICAg
ICAgICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpCaW5hcnlPcGVyYW5kIHJocyA9IGNvbnRleHQu
Z2V0RnJvbU9wZXJhbmRTdGFjaygtMSk7CiAgICAgICAgICAgICB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6QmluYXJ5T3BlcmFuZCBsaHMgPSBjb250ZXh0LmdldEZyb21PcGVyYW5kU3RhY2soLTIpOwog
ICAgICAgICAgICAgY29udGV4dC5zaHJpbmtPcGVyYW5kU3RhY2tCeShvcGVyYW5kU3RhY2tEZXB0
aCwgMik7Ci0gICAgICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9wZXJhdGlvbihtX2xleGVy
LT5sYXN0TGluZU51bWJlcigpLCBvcGVyYW5kU3RhY2tEZXB0aCwgb3BlcmF0b3JTdGFja0RlcHRo
LCBsaHMsIHJocyk7CisgICAgICAgICAgICBjb250ZXh0LmFwcGVuZEJpbmFyeU9wZXJhdGlvbihs
b2NhdGlvbiwgb3BlcmFuZFN0YWNrRGVwdGgsIG9wZXJhdG9yU3RhY2tEZXB0aCwgbGhzLCByaHMp
OwogICAgICAgICAgICAgY29udGV4dC5vcGVyYXRvclN0YWNrUG9wKG9wZXJhdG9yU3RhY2tEZXB0
aCk7CiAgICAgICAgIH0KICAgICAgICAgY29udGV4dC5vcGVyYXRvclN0YWNrQXBwZW5kKG9wZXJh
dG9yU3RhY2tEZXB0aCwgb3BlcmF0b3JUb2tlbiwgcHJlY2VkZW5jZSk7CkBAIC0xMTczLDcgKzEy
MDYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUJpbmFyeUV4cHJlcwogICAgICAgICB0eXBlbmFtZSBUcmVlQnVp
bGRlcjo6QmluYXJ5T3BlcmFuZCByaHMgPSBjb250ZXh0LmdldEZyb21PcGVyYW5kU3RhY2soLTEp
OwogICAgICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6QmluYXJ5T3BlcmFuZCBsaHMgPSBjb250
ZXh0LmdldEZyb21PcGVyYW5kU3RhY2soLTIpOwogICAgICAgICBjb250ZXh0LnNocmlua09wZXJh
bmRTdGFja0J5KG9wZXJhbmRTdGFja0RlcHRoLCAyKTsKLSAgICAgICAgY29udGV4dC5hcHBlbmRC
aW5hcnlPcGVyYXRpb24obV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgb3BlcmFuZFN0YWNrRGVw
dGgsIG9wZXJhdG9yU3RhY2tEZXB0aCwgbGhzLCByaHMpOworICAgICAgICBjb250ZXh0LmFwcGVu
ZEJpbmFyeU9wZXJhdGlvbihsb2NhdGlvbiwgb3BlcmFuZFN0YWNrRGVwdGgsIG9wZXJhdG9yU3Rh
Y2tEZXB0aCwgbGhzLCByaHMpOwogICAgICAgICBjb250ZXh0Lm9wZXJhdG9yU3RhY2tQb3Aob3Bl
cmF0b3JTdGFja0RlcHRoKTsKICAgICB9CiAgICAgcmV0dXJuIGNvbnRleHQucG9wT3BlcmFuZFN0
YWNrKG9wZXJhbmRTdGFja0RlcHRoKTsKQEAgLTEyMjIsMTEgKzEyNTUsMTIgQEAgdGVtcGxhdGUg
PGJvb2wgY29tcGxldGUsIGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnMKICAgICAgICAgICAgIG51bWVyaWNQcm9wZXJ0eU5hbWUgPSBtX3Rva2Vu
Lm1fZGF0YS5kb3VibGVWYWx1ZTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZmFpbCgpOwor
ICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAg
ICAgbmV4dCgpOwogICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm88RnVuY3Rp
b25Ob1JlcXVpcmVtZW50cywgZmFsc2U+KGNvbnRleHQsIGFjY2Vzc29yTmFtZSwgcGFyYW1ldGVy
cywgYm9keSwgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSkpOwog
ICAgICAgICBpZiAoc3RyaW5nUHJvcGVydHlOYW1lKQotICAgICAgICAgICAgcmV0dXJuIGNvbnRl
eHQudGVtcGxhdGUgY3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eTxjb21wbGV0ZT4obV9sZXhl
ci0+bGFzdExpbmVOdW1iZXIoKSwgdHlwZSwgc3RyaW5nUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJz
LCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFz
dExpbmUpOwotICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNl
dHRlclByb3BlcnR5PGNvbXBsZXRlPihjb25zdF9jYXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xvYmFs
RGF0YSksIG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHR5cGUsIG51bWVyaWNQcm9wZXJ0eU5h
bWUsIHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0
YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgICAgICAgICByZXR1cm4gY29udGV4dC50ZW1wbGF0
ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihsb2NhdGlvbiwgdHlwZSwg
c3RyaW5nUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3Nl
QnJhY2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOworICAgICAgICByZXR1cm4gY29u
dGV4dC50ZW1wbGF0ZSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5PGNvbXBsZXRlPihjb25z
dF9jYXN0PEpTR2xvYmFsRGF0YSo+KG1fZ2xvYmFsRGF0YSksIGxvY2F0aW9uLCB0eXBlLCBudW1l
cmljUHJvcGVydHlOYW1lLCBwYXJhbWV0ZXJzLCBib2R5LCBvcGVuQnJhY2VQb3MsIGNsb3NlQnJh
Y2VQb3MsIGJvZHlTdGFydExpbmUsIG1fbGFzdExpbmUpOwogICAgIH0KICAgICBjYXNlIE5VTUJF
UjogewogICAgICAgICBkb3VibGUgcHJvcGVydHlOYW1lID0gbV90b2tlbi5tX2RhdGEuZG91Ymxl
VmFsdWU7CkBAIC0xMjQ5LDEyICsxMjgzLDEzIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlT2JqZWN0TGl0ZXJhCiAg
ICAgdW5zaWduZWQgb2xkTGFzdExpbmVOdW1iZXIgPSBtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
OwogICAgIHVuc2lnbmVkIG9sZExpbmVOdW1iZXIgPSBtX2xleGVyLT5saW5lTnVtYmVyKCk7CiAg
ICAgY29uc3VtZU9yRmFpbFdpdGhGbGFncyhPUEVOQlJBQ0UsIFRyZWVCdWlsZGVyOjpEb250QnVp
bGRTdHJpbmdzKTsKLSAgICAKKyAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2Nh
dGlvbigpKTsKKwogICAgIGludCBvbGROb25MSFNDb3VudCA9IG1fbm9uTEhTQ291bnQ7CiAgICAg
CiAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChsb2NhdGlv
bik7CiAgICAgfQogICAgIAogICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVy
dHk8ZmFsc2U+KGNvbnRleHQpOwpAQCAtMTI2NiwxMyArMTMwMSwxNCBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU9i
amVjdExpdGVyYQogICAgICAgICBtX2xleGVyLT5zZXRMaW5lTnVtYmVyKG9sZExpbmVOdW1iZXIp
OwogICAgICAgICByZXR1cm4gcGFyc2VTdHJpY3RPYmplY3RMaXRlcmFsKGNvbnRleHQpOwogICAg
IH0KLSAgICBUcmVlUHJvcGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJv
cGVydHlMaXN0KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5KTsKKyAgICBUcmVl
UHJvcGVydHlMaXN0IHByb3BlcnR5TGlzdCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KGxv
Y2F0aW9uLCBwcm9wZXJ0eSk7CiAgICAgVHJlZVByb3BlcnR5TGlzdCB0YWlsID0gcHJvcGVydHlM
aXN0OwogICAgIHdoaWxlIChtYXRjaChDT01NQSkpIHsKICAgICAgICAgbmV4dChUcmVlQnVpbGRl
cjo6RG9udEJ1aWxkU3RyaW5ncyk7CiAgICAgICAgIC8vIGFsbG93IGV4dHJhIGNvbW1hLCBzZWUg
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTkzOQogICAgICAgICBpZiAo
bWF0Y2goQ0xPU0VCUkFDRSkpCiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgSlNUb2tlbkxv
Y2F0aW9uIHByb3BlcnR5TG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgcHJvcGVy
dHkgPSBwYXJzZVByb3BlcnR5PGZhbHNlPihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2Uo
cHJvcGVydHkpOwogICAgICAgICBpZiAoIW1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCAmJiBjb250
ZXh0LmdldFR5cGUocHJvcGVydHkpICE9IFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpIHsKQEAgLTEy
ODIsMTQgKzEzMTgsMTUgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VPYmplY3RMaXRlcmEKICAgICAgICAgICAgIG1f
bGV4ZXItPnNldExpbmVOdW1iZXIob2xkTGluZU51bWJlcik7CiAgICAgICAgICAgICByZXR1cm4g
cGFyc2VTdHJpY3RPYmplY3RMaXRlcmFsKGNvbnRleHQpOwogICAgICAgICB9Ci0gICAgICAgIHRh
aWwgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5TGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCBwcm9wZXJ0eSwgdGFpbCk7CisgICAgICAgIHRhaWwgPSBjb250ZXh0LmNyZWF0ZVByb3BlcnR5
TGlzdChwcm9wZXJ0eUxvY2F0aW9uLCBwcm9wZXJ0eSwgdGFpbCk7CiAgICAgfQotICAgIAorCisg
ICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJS
QUNFKTsKICAgICAKICAgICBtX25vbkxIU0NvdW50ID0gb2xkTm9uTEhTQ291bnQ7CiAgICAgCi0g
ICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51
bWJlcigpLCBwcm9wZXJ0eUxpc3QpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU9iamVjdExp
dGVyYWwobG9jYXRpb24sIHByb3BlcnR5TGlzdCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBM
ZXhlclR5cGU+CkBAIC0xMjk5LDkgKzEzMzYsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTdHJpY3RPYmplY3QK
ICAgICAKICAgICBpbnQgb2xkTm9uTEhTQ291bnQgPSBtX25vbkxIU0NvdW50OwogCisgICAgSlNU
b2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgaWYgKG1hdGNoKENM
T1NFQlJBQ0UpKSB7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlT2JqZWN0TGl0ZXJhbChtX2xleGVyLT5sYXN0TGluZU51bWJlcigpKTsKKyAgICAgICAgcmV0
dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChsb2NhdGlvbik7CiAgICAgfQogICAgIAog
ICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0eSA9IHBhcnNlUHJvcGVydHk8dHJ1ZT4oY29udGV4dCk7
CkBAIC0xMzEzLDEzICsxMzUxLDE0IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3RyaWN0T2JqZWN0CiAgICAgaWYg
KCFtX3N5bnRheEFscmVhZHlWYWxpZGF0ZWQpCiAgICAgICAgIG9iamVjdFZhbGlkYXRvci5hZGQo
Y29udGV4dC5nZXROYW1lKHByb3BlcnR5KS5pbXBsKCksIGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0
eSkpOwogICAgIAotICAgIFRyZWVQcm9wZXJ0eUxpc3QgcHJvcGVydHlMaXN0ID0gY29udGV4dC5j
cmVhdGVQcm9wZXJ0eUxpc3QobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgcHJvcGVydHkpOwor
ICAgIFRyZWVQcm9wZXJ0eUxpc3QgcHJvcGVydHlMaXN0ID0gY29udGV4dC5jcmVhdGVQcm9wZXJ0
eUxpc3QobG9jYXRpb24sIHByb3BlcnR5KTsKICAgICBUcmVlUHJvcGVydHlMaXN0IHRhaWwgPSBw
cm9wZXJ0eUxpc3Q7CiAgICAgd2hpbGUgKG1hdGNoKENPTU1BKSkgewogICAgICAgICBuZXh0KCk7
CiAgICAgICAgIC8vIGFsbG93IGV4dHJhIGNvbW1hLCBzZWUgaHR0cDovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTkzOQogICAgICAgICBpZiAobWF0Y2goQ0xPU0VCUkFDRSkpCiAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIHByb3BlcnR5TG9jYXRp
b24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgcHJvcGVydHkgPSBwYXJzZVByb3BlcnR5PHRy
dWU+KGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0eSk7CiAgICAgICAgIGlm
ICghbV9zeW50YXhBbHJlYWR5VmFsaWRhdGVkKSB7CkBAIC0xMzMxLDE0ICsxMzcwLDE1IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlU3RyaWN0T2JqZWN0CiAgICAgICAgICAgICAgICAgcHJvcGVydHlFbnRyeS5pdGVy
YXRvci0+c2Vjb25kIHw9IGNvbnRleHQuZ2V0VHlwZShwcm9wZXJ0eSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KLSAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KG1f
bGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIHByb3BlcnR5LCB0YWlsKTsKKyAgICAgICAgdGFpbCA9
IGNvbnRleHQuY3JlYXRlUHJvcGVydHlMaXN0KHByb3BlcnR5TG9jYXRpb24sIHByb3BlcnR5LCB0
YWlsKTsKICAgICB9Ci0gICAgCisKKyAgICBsb2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKICAg
ICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0UpOwogCiAgICAgbV9ub25MSFNDb3VudCA9IG9sZE5v
bkxIU0NvdW50OwogCi0gICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlT2JqZWN0TGl0ZXJhbChtX2xl
eGVyLT5sYXN0TGluZU51bWJlcigpLCBwcm9wZXJ0eUxpc3QpOworICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZU9iamVjdExpdGVyYWwobG9jYXRpb24sIHByb3BlcnR5TGlzdCk7CiB9CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0xMzU0LDggKzEzOTQsOSBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUFycmF5TGl0ZXJhbAogICAgICAgICBlbGlzaW9ucysrOwogICAgIH0KICAgICBpZiAobWF0Y2go
Q0xPU0VCUkFDS0VUKSkgeworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5M
b2NhdGlvbigpKTsKICAgICAgICAgbmV4dChUcmVlQnVpbGRlcjo6RG9udEJ1aWxkU3RyaW5ncyk7
Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFycmF5KG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIGVsaXNpb25zKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyYXkobG9j
YXRpb24sIGVsaXNpb25zKTsKICAgICB9CiAgICAgCiAgICAgVHJlZUV4cHJlc3Npb24gZWxlbSA9
IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oY29udGV4dCk7CkBAIC0xMzczLDE5ICsxNDE0LDIx
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlQXJyYXlMaXRlcmFsCiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IGlmIChtYXRjaChDTE9TRUJSQUNLRVQpKSB7CisgICAgICAgICAgICBKU1Rva2VuTG9jYXRpb24g
bG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgICAgIG5leHQoVHJlZUJ1aWxkZXI6
OkRvbnRCdWlsZFN0cmluZ3MpOwotICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJy
YXkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZWxpc2lvbnMsIGVsZW1lbnRMaXN0KTsKKyAg
ICAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFycmF5KGxvY2F0aW9uLCBlbGlzaW9ucywg
ZWxlbWVudExpc3QpOwogICAgICAgICB9CiAgICAgICAgIFRyZWVFeHByZXNzaW9uIGVsZW0gPSBw
YXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShl
bGVtKTsKICAgICAgICAgdGFpbCA9IGNvbnRleHQuY3JlYXRlRWxlbWVudExpc3QodGFpbCwgZWxp
c2lvbnMsIGVsZW0pOwogICAgIH0KLSAgICAKKworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlv
bih0b2tlbkxvY2F0aW9uKCkpOwogICAgIGNvbnN1bWVPckZhaWwoQ0xPU0VCUkFDS0VUKTsKICAg
ICAKICAgICBtX25vbkxIU0NvdW50ID0gb2xkTm9uTEhTQ291bnQ7CiAgICAgCi0gICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlQXJyYXkobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZWxlbWVudExp
c3QpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUFycmF5KGxvY2F0aW9uLCBlbGVtZW50TGlz
dCk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0xNDA5LDM4ICsxNDUy
LDQ1IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogICAgIGNhc2UgVEhJU1RPS0VOOiB7CisgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2Nh
dGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7Ci0gICAgICAgIHJldHVybiBj
b250ZXh0LnRoaXNFeHByKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCkpOworICAgICAgICByZXR1
cm4gY29udGV4dC50aGlzRXhwcihsb2NhdGlvbik7CiAgICAgfQogICAgIGNhc2UgSURFTlQ6IHsK
ICAgICAgICAgaW50IHN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgICAgICBjb25zdCBJZGVudGlm
aWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgICAgICBKU1Rva2VuTG9jYXRp
b24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBj
dXJyZW50U2NvcGUoKS0+dXNlVmFyaWFibGUoaWRlbnQsIG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlO
YW1lcy0+ZXZhbCA9PSAqaWRlbnQpOwogICAgICAgICBtX2xhc3RJZGVudGlmaWVyID0gaWRlbnQ7
Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZVJlc29sdmUobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgaWRlbnQsIHN0YXJ0KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlUmVz
b2x2ZShsb2NhdGlvbiwgaWRlbnQsIHN0YXJ0KTsKICAgICB9CiAgICAgY2FzZSBTVFJJTkc6IHsK
ICAgICAgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsK
KyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAg
ICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlU3RyaW5nKG1fbGV4ZXIt
Pmxhc3RMaW5lTnVtYmVyKCksIGlkZW50KTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRl
U3RyaW5nKGxvY2F0aW9uLCBpZGVudCk7CiAgICAgfQogICAgIGNhc2UgTlVNQkVSOiB7CiAgICAg
ICAgIGRvdWJsZSBkID0gbV90b2tlbi5tX2RhdGEuZG91YmxlVmFsdWU7CisgICAgICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7Ci0g
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU51bWJlckV4cHIobV9sZXhlci0+bGFzdExpbmVO
dW1iZXIoKSwgZCk7CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU51bWJlckV4cHIobG9j
YXRpb24sIGQpOwogICAgIH0KICAgICBjYXNlIE5VTExUT0tFTjogeworICAgICAgICBKU1Rva2Vu
TG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwotICAg
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVOdWxsKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCkp
OworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVOdWxsKGxvY2F0aW9uKTsKICAgICB9CiAg
ICAgY2FzZSBUUlVFVE9LRU46IHsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRv
a2VuTG9jYXRpb24oKSk7CiAgICAgICAgIG5leHQoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlQm9vbGVhbihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCB0cnVlKTsKKyAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQm9vbGVhbihsb2NhdGlvbiwgdHJ1ZSk7CiAgICAgfQogICAg
IGNhc2UgRkFMU0VUT0tFTjogeworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9r
ZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwotICAgICAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVCb29sZWFuKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGZhbHNlKTsKKyAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQm9vbGVhbihsb2NhdGlvbiwgZmFsc2UpOwogICAgIH0KICAg
ICBjYXNlIERJVkVRVUFMOgogICAgIGNhc2UgRElWSURFOiB7CkBAIC0xNDUzLDggKzE1MDMsOSBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZVByaW1hcnlFeHByZQogICAgICAgICAgICAgZmFpbElmRmFsc2UobV9sZXhl
ci0+c2NhblJlZ0V4cChwYXR0ZXJuLCBmbGFncykpOwogICAgICAgICAKICAgICAgICAgaW50IHN0
YXJ0ID0gdG9rZW5TdGFydCgpOworICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9r
ZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwotICAgICAgICBUcmVlRXhwcmVzc2lvbiBy
ZSA9IGNvbnRleHQuY3JlYXRlUmVnRXhwKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksICpwYXR0
ZXJuLCAqZmxhZ3MsIHN0YXJ0KTsKKyAgICAgICAgVHJlZUV4cHJlc3Npb24gcmUgPSBjb250ZXh0
LmNyZWF0ZVJlZ0V4cChsb2NhdGlvbiwgKnBhdHRlcm4sICpmbGFncywgc3RhcnQpOwogICAgICAg
ICBpZiAoIXJlKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyKiB5YXJyRXJyb3JNc2cgPSBZYXJy
OjpjaGVja1N5bnRheChwYXR0ZXJuLT51c3RyaW5nKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFt
X2Vycm9yTWVzc2FnZS5pc051bGwoKSk7CkBAIC0xNDcxLDYgKzE1MjIsNyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQXJn
dW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFyZ3VtZW50cyhUcmVlQnVpbGRlciYgY29u
dGV4dCkKIHsKICAgICBjb25zdW1lT3JGYWlsV2l0aEZsYWdzKE9QRU5QQVJFTiwgVHJlZUJ1aWxk
ZXI6OkRvbnRCdWlsZFN0cmluZ3MpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tl
bkxvY2F0aW9uKCkpOwogICAgIGlmIChtYXRjaChDTE9TRVBBUkVOKSkgewogICAgICAgICBuZXh0
KFRyZWVCdWlsZGVyOjpEb250QnVpbGRTdHJpbmdzKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlQXJndW1lbnRzKCk7CkBAIC0xNDc4LDEzICsxNTMwLDE0IEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUFyZ3VtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcmd1
bWVudHMoVHJlCiAgICAgVHJlZUV4cHJlc3Npb24gZmlyc3RBcmcgPSBwYXJzZUFzc2lnbm1lbnRF
eHByZXNzaW9uKGNvbnRleHQpOwogICAgIGZhaWxJZkZhbHNlKGZpcnN0QXJnKTsKICAgICAKLSAg
ICBUcmVlQXJndW1lbnRzTGlzdCBhcmdMaXN0ID0gY29udGV4dC5jcmVhdGVBcmd1bWVudHNMaXN0
KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGZpcnN0QXJnKTsKKyAgICBUcmVlQXJndW1lbnRz
TGlzdCBhcmdMaXN0ID0gY29udGV4dC5jcmVhdGVBcmd1bWVudHNMaXN0KGxvY2F0aW9uLCBmaXJz
dEFyZyk7CiAgICAgVHJlZUFyZ3VtZW50c0xpc3QgdGFpbCA9IGFyZ0xpc3Q7CiAgICAgd2hpbGUg
KG1hdGNoKENPTU1BKSkgeworICAgICAgICBKU1Rva2VuTG9jYXRpb24gYXJndW1lbnRMb2NhdGlv
bih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KFRyZWVCdWlsZGVyOjpEb250QnVpbGRT
dHJpbmdzKTsKICAgICAgICAgVHJlZUV4cHJlc3Npb24gYXJnID0gcGFyc2VBc3NpZ25tZW50RXhw
cmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgZmFpbElmRmFsc2UoYXJnKTsKLSAgICAgICAgdGFp
bCA9IGNvbnRleHQuY3JlYXRlQXJndW1lbnRzTGlzdChtX2xleGVyLT5sYXN0TGluZU51bWJlcigp
LCB0YWlsLCBhcmcpOworICAgICAgICB0YWlsID0gY29udGV4dC5jcmVhdGVBcmd1bWVudHNMaXN0
KGFyZ3VtZW50TG9jYXRpb24sIHRhaWwsIGFyZyk7CiAgICAgfQogICAgIGNvbnN1bWVPckZhaWwo
Q0xPU0VQQVJFTik7CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJndW1lbnRzKGFyZ0xpc3Qp
OwpAQCAtMTQ5Nyw2ICsxNTUwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICBpbnQg
c3RhcnQgPSB0b2tlblN0YXJ0KCk7CiAgICAgaW50IGV4cHJlc3Npb25TdGFydCA9IHN0YXJ0Owog
ICAgIGludCBuZXdDb3VudCA9IDA7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uOwogICAg
IHdoaWxlIChtYXRjaChORVcpKSB7CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgbmV3Q291bnQr
KzsKQEAgLTE1MDksMTQgKzE1NjMsMTYgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAgICAg
ICAgaW50IG9wZW5CcmFjZVBvcyA9IDA7CiAgICAgICAgIGludCBjbG9zZUJyYWNlUG9zID0gMDsK
ICAgICAgICAgaW50IGJvZHlTdGFydExpbmUgPSAwOworICAgICAgICBsb2NhdGlvbiA9IHRva2Vu
TG9jYXRpb24oKTsKICAgICAgICAgbmV4dCgpOwogICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VG
dW5jdGlvbkluZm88RnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgZmFsc2U+KGNvbnRleHQsIG5hbWUs
IHBhcmFtZXRlcnMsIGJvZHksIG9wZW5CcmFjZVBvcywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0
TGluZSkpKTsKLSAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRnVuY3Rpb25FeHByKG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIG5hbWUsIGJvZHksIHBhcmFtZXRlcnMsIG9wZW5CcmFjZVBv
cywgY2xvc2VCcmFjZVBvcywgYm9keVN0YXJ0TGluZSwgbV9sYXN0TGluZSk7CisgICAgICAgIGJh
c2UgPSBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwgbmFtZSwgYm9keSwgcGFy
YW1ldGVycywgb3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lLCBtX2xh
c3RMaW5lKTsKICAgICB9IGVsc2UKICAgICAgICAgYmFzZSA9IHBhcnNlUHJpbWFyeUV4cHJlc3Np
b24oY29udGV4dCk7CiAgICAgCiAgICAgZmFpbElmRmFsc2UoYmFzZSk7CiAgICAgd2hpbGUgKHRy
dWUpIHsKKyAgICAgICAgbG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgICAgIHN3aXRj
aCAobV90b2tlbi5tX3R5cGUpIHsKICAgICAgICAgY2FzZSBPUEVOQlJBQ0tFVDogewogICAgICAg
ICAgICAgbV9ub25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CkBAIC0xNTI2LDcgKzE1ODIsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgaW50IGluaXRpYWxBc3NpZ25t
ZW50cyA9IG1fYXNzaWdubWVudENvdW50OwogICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gcHJv
cGVydHkgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4dCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxz
ZShwcm9wZXJ0eSk7Ci0gICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVCcmFja2V0QWNj
ZXNzKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGJhc2UsIHByb3BlcnR5LCBpbml0aWFsQXNz
aWdubWVudHMgIT0gbV9hc3NpZ25tZW50Q291bnQsIGV4cHJlc3Npb25TdGFydCwgZXhwcmVzc2lv
bkVuZCwgdG9rZW5FbmQoKSk7CisgICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVCcmFj
a2V0QWNjZXNzKGxvY2F0aW9uLCBiYXNlLCBwcm9wZXJ0eSwgaW5pdGlhbEFzc2lnbm1lbnRzICE9
IG1fYXNzaWdubWVudENvdW50LCBleHByZXNzaW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2Vu
RW5kKCkpOwogICAgICAgICAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNLRVQpOwogICAgICAg
ICAgICAgbV9ub25MSFNDb3VudCA9IG5vbkxIU0NvdW50OwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0xNTM5LDEyICsxNTk1LDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4
cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAgICAgICAgICAg
ICAgICAgaW50IGV4cHJFbmQgPSBsYXN0VG9rZW5FbmQoKTsKICAgICAgICAgICAgICAgICBUcmVl
QXJndW1lbnRzIGFyZ3VtZW50cyA9IHBhcnNlQXJndW1lbnRzKGNvbnRleHQpOwogICAgICAgICAg
ICAgICAgIGZhaWxJZkZhbHNlKGFyZ3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgYmFzZSA9IGNv
bnRleHQuY3JlYXRlTmV3RXhwcihtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBiYXNlLCBhcmd1
bWVudHMsIHN0YXJ0LCBleHByRW5kLCBsYXN0VG9rZW5FbmQoKSk7ICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBiYXNlID0gY29udGV4dC5jcmVhdGVOZXdFeHByKGxvY2F0aW9uLCBiYXNlLCBh
cmd1bWVudHMsIHN0YXJ0LCBleHByRW5kLCBsYXN0VG9rZW5FbmQoKSk7CiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIGludCBleHByZXNzaW9uRW5kID0gbGFzdFRva2VuRW5k
KCk7CiAgICAgICAgICAgICAgICAgVHJlZUFyZ3VtZW50cyBhcmd1bWVudHMgPSBwYXJzZUFyZ3Vt
ZW50cyhjb250ZXh0KTsKICAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShhcmd1bWVudHMpOwot
ICAgICAgICAgICAgICAgIGJhc2UgPSBjb250ZXh0Lm1ha2VGdW5jdGlvbkNhbGxOb2RlKG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIGJhc2UsIGFyZ3VtZW50cywgZXhwcmVzc2lvblN0YXJ0LCBl
eHByZXNzaW9uRW5kLCBsYXN0VG9rZW5FbmQoKSk7CisgICAgICAgICAgICAgICAgYmFzZSA9IGNv
bnRleHQubWFrZUZ1bmN0aW9uQ2FsbE5vZGUobG9jYXRpb24sIGJhc2UsIGFyZ3VtZW50cywgZXhw
cmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCBsYXN0VG9rZW5FbmQoKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBtX25vbkxIU0NvdW50ID0gbm9uTEhTQ291bnQ7CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTE1NTQsNyArMTYxMCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTWVtYmVyRXhwcmVzCiAg
ICAgICAgICAgICBpbnQgZXhwcmVzc2lvbkVuZCA9IGxhc3RUb2tlbkVuZCgpOwogICAgICAgICAg
ICAgbmV4dEV4cGVjdElkZW50aWZpZXIoTGV4ZXJGbGFnc0lnbm9yZVJlc2VydmVkV29yZHMgfCBU
cmVlQnVpbGRlcjo6RG9udEJ1aWxkS2V5d29yZHMpOwogICAgICAgICAgICAgbWF0Y2hPckZhaWwo
SURFTlQpOwotICAgICAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlRG90QWNjZXNzKG1fbGV4
ZXItPmxhc3RMaW5lTnVtYmVyKCksIGJhc2UsIG1fdG9rZW4ubV9kYXRhLmlkZW50LCBleHByZXNz
aW9uU3RhcnQsIGV4cHJlc3Npb25FbmQsIHRva2VuRW5kKCkpOworICAgICAgICAgICAgYmFzZSA9
IGNvbnRleHQuY3JlYXRlRG90QWNjZXNzKGxvY2F0aW9uLCBiYXNlLCBtX3Rva2VuLm1fZGF0YS5p
ZGVudCwgZXhwcmVzc2lvblN0YXJ0LCBleHByZXNzaW9uRW5kLCB0b2tlbkVuZCgpKTsKICAgICAg
ICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNTY0LDcg
KzE2MjAsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZU1lbWJlckV4cHJlcwogICAgIH0KIGVuZE1lbWJlckV4cHJl
c3Npb246CiAgICAgd2hpbGUgKG5ld0NvdW50LS0pCi0gICAgICAgIGJhc2UgPSBjb250ZXh0LmNy
ZWF0ZU5ld0V4cHIobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgYmFzZSwgc3RhcnQsIGxhc3RU
b2tlbkVuZCgpKTsKKyAgICAgICAgYmFzZSA9IGNvbnRleHQuY3JlYXRlTmV3RXhwcihsb2NhdGlv
biwgYmFzZSwgc3RhcnQsIGxhc3RUb2tlbkVuZCgpKTsKICAgICByZXR1cm4gYmFzZTsKIH0KIApA
QCAtMTYwMiw2ICsxNjU4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VVbmFyeUV4cHJlc3MKICAgICAgICAgbV9u
b25Ucml2aWFsRXhwcmVzc2lvbkNvdW50Kys7CiAgICAgfQogICAgIGludCBzdWJFeHByU3RhcnQg
PSB0b2tlblN0YXJ0KCk7CisgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRp
b24oKSk7CiAgICAgVHJlZUV4cHJlc3Npb24gZXhwciA9IHBhcnNlTWVtYmVyRXhwcmVzc2lvbihj
b250ZXh0KTsKICAgICBmYWlsSWZGYWxzZShleHByKTsKICAgICBib29sIGlzRXZhbE9yQXJndW1l
bnRzID0gZmFsc2U7CkBAIC0xNjE0LDcgKzE2NzEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVz
cwogICAgIGNhc2UgUExVU1BMVVM6CiAgICAgICAgIG1fbm9uVHJpdmlhbEV4cHJlc3Npb25Db3Vu
dCsrOwogICAgICAgICBtX25vbkxIU0NvdW50Kys7Ci0gICAgICAgIGV4cHIgPSBjb250ZXh0Lm1h
a2VQb3N0Zml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBPcFBsdXNQbHVz
LCBzdWJFeHByU3RhcnQsIGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpKTsKKyAgICAgICAgZXhw
ciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcFBsdXNQbHVzLCBz
dWJFeHByU3RhcnQsIGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgpKTsKICAgICAgICAgbV9hc3Np
Z25tZW50Q291bnQrKzsKICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0V2l0aE5hbWVBbmRNZXNz
YWdlKGlzRXZhbE9yQXJndW1lbnRzLCAiJyIsIG1fbGFzdElkZW50aWZpZXItPmltcGwoKSwgIicg
Y2Fubm90IGJlIG1vZGlmaWVkIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIGZhaWxJZlRydWVJ
ZlN0cmljdChyZXF1aXJlc0xFeHByKTsKQEAgLTE2MjMsNyArMTY4MCw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
VW5hcnlFeHByZXNzCiAgICAgY2FzZSBNSU5VU01JTlVTOgogICAgICAgICBtX25vblRyaXZpYWxF
eHByZXNzaW9uQ291bnQrKzsKICAgICAgICAgbV9ub25MSFNDb3VudCsrOwotICAgICAgICBleHBy
ID0gY29udGV4dC5tYWtlUG9zdGZpeE5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhw
ciwgT3BNaW51c01pbnVzLCBzdWJFeHByU3RhcnQsIGxhc3RUb2tlbkVuZCgpLCB0b2tlbkVuZCgp
KTsKKyAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVBvc3RmaXhOb2RlKGxvY2F0aW9uLCBleHBy
LCBPcE1pbnVzTWludXMsIHN1YkV4cHJTdGFydCwgbGFzdFRva2VuRW5kKCksIHRva2VuRW5kKCkp
OwogICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICBmYWlsSWZUcnVlSWZTdHJp
Y3RXaXRoTmFtZUFuZE1lc3NhZ2UoaXNFdmFsT3JBcmd1bWVudHMsICInIiwgbV9sYXN0SWRlbnRp
Zmllci0+aW1wbCgpLCAiJyBjYW5ub3QgYmUgbW9kaWZpZWQgaW4gc3RyaWN0IG1vZGUiKTsKICAg
ICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KHJlcXVpcmVzTEV4cHIpOwpAQCAtMTYzNyw0MCArMTY5
NCw0MiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVVuYXJ5RXhwcmVzcwogICAgIAogICAgIGlmICghVHJlZUJ1aWxk
ZXI6OkNyZWF0ZXNBU1QgJiYgKG1fc3ludGF4QWxyZWFkeVZhbGlkYXRlZCB8fCAhc3RyaWN0TW9k
ZSgpKSkKICAgICAgICAgcmV0dXJuIGV4cHI7Ci0gICAgCisKKyAgICBsb2NhdGlvbiA9IHRva2Vu
TG9jYXRpb24oKTsKKyAgICBsb2NhdGlvbi5saW5lID0gbV9sZXhlci0+bGFzdExpbmVOdW1iZXIo
KTsKICAgICB3aGlsZSAodG9rZW5TdGFja0RlcHRoKSB7CiAgICAgICAgIHN3aXRjaCAoY29udGV4
dC51bmFyeVRva2VuU3RhY2tMYXN0VHlwZSh0b2tlblN0YWNrRGVwdGgpKSB7CiAgICAgICAgIGNh
c2UgRVhDTEFNQVRJT046Ci0gICAgICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVMb2dpY2Fs
Tm90KG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4cHIpOworICAgICAgICAgICAgZXhwciA9
IGNvbnRleHQuY3JlYXRlTG9naWNhbE5vdChsb2NhdGlvbiwgZXhwcik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBUSUxERToKLSAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0Lm1h
a2VCaXR3aXNlTm90Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByKTsKKyAgICAg
ICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VCaXR3aXNlTm90Tm9kZShsb2NhdGlvbiwgZXhwcik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBNSU5VUzoKLSAgICAgICAgICAgIGV4
cHIgPSBjb250ZXh0Lm1ha2VOZWdhdGVOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVyKCksIGV4
cHIpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZU5lZ2F0ZU5vZGUobG9jYXRpb24s
IGV4cHIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUExVUzoKLSAgICAgICAg
ICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0ZVVuYXJ5UGx1cyhtX2xleGVyLT5sYXN0TGluZU51bWJl
cigpLCBleHByKTsKKyAgICAgICAgICAgIGV4cHIgPSBjb250ZXh0LmNyZWF0ZVVuYXJ5UGx1cyhs
b2NhdGlvbiwgZXhwcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBQTFVTUExV
UzoKICAgICAgICAgY2FzZSBBVVRPUExVU1BMVVM6Ci0gICAgICAgICAgICBleHByID0gY29udGV4
dC5tYWtlUHJlZml4Tm9kZShtX2xleGVyLT5sYXN0TGluZU51bWJlcigpLCBleHByLCBPcFBsdXNQ
bHVzLCBjb250ZXh0LnVuYXJ5VG9rZW5TdGFja0xhc3RTdGFydCh0b2tlblN0YWNrRGVwdGgpLCBz
dWJFeHByU3RhcnQgKyAxLCBlbmQpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZVBy
ZWZpeE5vZGUobG9jYXRpb24sIGV4cHIsIE9wUGx1c1BsdXMsIGNvbnRleHQudW5hcnlUb2tlblN0
YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIHN1YkV4cHJTdGFydCArIDEsIGVuZCk7CiAg
ICAgICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgTUlOVVNNSU5VUzoKICAgICAgICAgY2FzZSBBVVRPTUlOVVNNSU5VUzoKLSAgICAg
ICAgICAgIGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksIGV4cHIsIE9wTWludXNNaW51cywgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3Rh
cnQodG9rZW5TdGFja0RlcHRoKSwgc3ViRXhwclN0YXJ0ICsgMSwgZW5kKTsKKyAgICAgICAgICAg
IGV4cHIgPSBjb250ZXh0Lm1ha2VQcmVmaXhOb2RlKGxvY2F0aW9uLCBleHByLCBPcE1pbnVzTWlu
dXMsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tEZXB0aCksIHN1
YkV4cHJTdGFydCArIDEsIGVuZCk7CiAgICAgICAgICAgICBtX2Fzc2lnbm1lbnRDb3VudCsrOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVFlQRU9GOgotICAgICAgICAgICAgZXhw
ciA9IGNvbnRleHQubWFrZVR5cGVPZk5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwgZXhw
cik7CisgICAgICAgICAgICBleHByID0gY29udGV4dC5tYWtlVHlwZU9mTm9kZShsb2NhdGlvbiwg
ZXhwcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBWT0lEVE9LRU46Ci0gICAg
ICAgICAgICBleHByID0gY29udGV4dC5jcmVhdGVWb2lkKG1fbGV4ZXItPmxhc3RMaW5lTnVtYmVy
KCksIGV4cHIpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQuY3JlYXRlVm9pZChsb2NhdGlv
biwgZXhwcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBERUxFVEVUT0tFTjoK
ICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdFdpdGhOYW1lQW5kTWVzc2FnZShjb250ZXh0
LmlzUmVzb2x2ZShleHByKSwgIkNhbm5vdCBkZWxldGUgdW5xdWFsaWZpZWQgcHJvcGVydHkiLCBt
X2xhc3RJZGVudGlmaWVyLT5pbXBsKCksICJpbiBzdHJpY3QgbW9kZSIpOwotICAgICAgICAgICAg
ZXhwciA9IGNvbnRleHQubWFrZURlbGV0ZU5vZGUobV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKSwg
ZXhwciwgY29udGV4dC51bmFyeVRva2VuU3RhY2tMYXN0U3RhcnQodG9rZW5TdGFja0RlcHRoKSwg
ZW5kLCBlbmQpOworICAgICAgICAgICAgZXhwciA9IGNvbnRleHQubWFrZURlbGV0ZU5vZGUobG9j
YXRpb24sIGV4cHIsIGNvbnRleHQudW5hcnlUb2tlblN0YWNrTGFzdFN0YXJ0KHRva2VuU3RhY2tE
ZXB0aCksIGVuZCwgZW5kKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0Ogog
ICAgICAgICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgc29tZXRoaW5nIGhhcyBnb25lIGhvcnJpYmx5
IGhvcnJpYmx5IHdyb25nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBj
MmExMWQ2NjViNzkxM2VjNWY2NDMxYzA2MzZjMWE4YTZkZDZhMDE2Li43OWE5NWI2OTYzYjQxMjkw
YmNhM2I0ZmE5Yzg1ODBmY2I2MjM1NTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgKQEAgLTUwMiwxOCArNTAyLDE4IEBAIHByaXZhdGU6CiAKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgbmV4dCh1bnNpZ25lZCBsZXhlckZsYWdzID0gMCkKICAgICB7Ci0gICAgICAgIG1fbGFz
dExpbmUgPSBtX3Rva2VuLm1faW5mby5saW5lOwotICAgICAgICBtX2xhc3RUb2tlbkVuZCA9IG1f
dG9rZW4ubV9pbmZvLmVuZE9mZnNldDsKKyAgICAgICAgbV9sYXN0TGluZSA9IG1fdG9rZW4ubV9s
b2NhdGlvbi5saW5lOworICAgICAgICBtX2xhc3RUb2tlbkVuZCA9IG1fdG9rZW4ubV9sb2NhdGlv
bi5lbmRPZmZzZXQ7CiAgICAgICAgIG1fbGV4ZXItPnNldExhc3RMaW5lTnVtYmVyKG1fbGFzdExp
bmUpOwotICAgICAgICBtX3Rva2VuLm1fdHlwZSA9IG1fbGV4ZXItPmxleCgmbV90b2tlbi5tX2Rh
dGEsICZtX3Rva2VuLm1faW5mbywgbGV4ZXJGbGFncywgc3RyaWN0TW9kZSgpKTsKKyAgICAgICAg
bV90b2tlbi5tX3R5cGUgPSBtX2xleGVyLT5sZXgoJm1fdG9rZW4ubV9kYXRhLCAmbV90b2tlbi5t
X2xvY2F0aW9uLCBsZXhlckZsYWdzLCBzdHJpY3RNb2RlKCkpOwogICAgIH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBuZXh0RXhwZWN0SWRlbnRpZmllcih1bnNpZ25lZCBsZXhlckZsYWdzID0g
MCkKICAgICB7Ci0gICAgICAgIG1fbGFzdExpbmUgPSBtX3Rva2VuLm1faW5mby5saW5lOwotICAg
ICAgICBtX2xhc3RUb2tlbkVuZCA9IG1fdG9rZW4ubV9pbmZvLmVuZE9mZnNldDsKKyAgICAgICAg
bV9sYXN0TGluZSA9IG1fdG9rZW4ubV9sb2NhdGlvbi5saW5lOworICAgICAgICBtX2xhc3RUb2tl
bkVuZCA9IG1fdG9rZW4ubV9sb2NhdGlvbi5lbmRPZmZzZXQ7CiAgICAgICAgIG1fbGV4ZXItPnNl
dExhc3RMaW5lTnVtYmVyKG1fbGFzdExpbmUpOwotICAgICAgICBtX3Rva2VuLm1fdHlwZSA9IG1f
bGV4ZXItPmxleEV4cGVjdElkZW50aWZpZXIoJm1fdG9rZW4ubV9kYXRhLCAmbV90b2tlbi5tX2lu
Zm8sIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUoKSk7CisgICAgICAgIG1fdG9rZW4ubV90eXBlID0g
bV9sZXhlci0+bGV4RXhwZWN0SWRlbnRpZmllcigmbV90b2tlbi5tX2RhdGEsICZtX3Rva2VuLm1f
bG9jYXRpb24sIGxleGVyRmxhZ3MsIHN0cmljdE1vZGUoKSk7CiAgICAgfQogCiAgICAgQUxXQVlT
X0lOTElORSBib29sIG5leHRUb2tlbklzQ29sb24oKQpAQCAtNTQxLDIwICs1NDEsMjUgQEAgcHJp
dmF0ZToKICAgICAKICAgICBBTFdBWVNfSU5MSU5FIGludCB0b2tlblN0YXJ0KCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBtX3Rva2VuLm1faW5mby5zdGFydE9mZnNldDsKKyAgICAgICAgcmV0dXJu
IG1fdG9rZW4ubV9sb2NhdGlvbi5zdGFydE9mZnNldDsKICAgICB9CiAgICAgCiAgICAgQUxXQVlT
X0lOTElORSBpbnQgdG9rZW5MaW5lKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3Rva2VuLm1f
aW5mby5saW5lOworICAgICAgICByZXR1cm4gbV90b2tlbi5tX2xvY2F0aW9uLmxpbmU7CiAgICAg
fQogICAgIAogICAgIEFMV0FZU19JTkxJTkUgaW50IHRva2VuRW5kKCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBtX3Rva2VuLm1faW5mby5lbmRPZmZzZXQ7CisgICAgICAgIHJldHVybiBtX3Rva2Vu
Lm1fbG9jYXRpb24uZW5kT2Zmc2V0OwogICAgIH0KICAgICAKLSAgICBjb25zdCBjaGFyKiBnZXRU
b2tlbk5hbWUoSlNUb2tlblR5cGUgdG9rKSAKKyAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgdG9rZW5Mb2NhdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gbV90b2tl
bi5tX2xvY2F0aW9uOworICAgIH0KKworICAgIGNvbnN0IGNoYXIqIGdldFRva2VuTmFtZShKU1Rv
a2VuVHlwZSB0b2spCiAgICAgewogICAgICAgICBzd2l0Y2ggKHRvaykgewogICAgICAgICBjYXNl
IE5VTExUT0tFTjogCkBAIC0xMDAzLDggKzEwMDgsMTEgQEAgUGFzc1JlZlB0cjxQYXJzZWROb2Rl
PiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmoKIAogICAgIFJlZlB0cjxQYXJzZWROb2RlPiByZXN1bHQ7CiAgICAgaWYgKG1fc291cmNlRWxl
bWVudHMpIHsKKyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uOworICAgICAgICBsb2Nh
dGlvbi5saW5lID0gbV9sZXhlci0+bGFzdExpbmVOdW1iZXIoKTsKKyAgICAgICAgbG9jYXRpb24u
Y29sdW1uID0gbV9sZXhlci0+Y3VycmVudENvbHVtbk51bWJlcigpOwogICAgICAgICByZXN1bHQg
PSBQYXJzZWROb2RlOjpjcmVhdGUoJmxleGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4ZXItPmxhc3RMaW5lTnVt
YmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fc291cmNlRWxlbWVudHMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhckRlY2xhcmF0aW9ucyA/ICZtX3Zh
ckRlY2xhcmF0aW9ucy0+ZGF0YSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2Z1bmNEZWNsYXJhdGlvbnMgPyAmbV9mdW5jRGVjbGFyYXRpb25zLT5kYXRhIDogMCwK
QEAgLTEwMTIsNyArMTAyMCw3IEBAIFBhc3NSZWZQdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqbV9zb3VyY2UsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2ZlYXR1cmVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9udW1Db25zdGFudHMpOwotICAgICAgICByZXN1bHQtPnNldExvYyhtX3NvdXJj
ZS0+Zmlyc3RMaW5lKCksIG1fbGFzdExpbmUpOworICAgICAgICByZXN1bHQtPnNldExvYyhtX3Nv
dXJjZS0+Zmlyc3RMaW5lKCksIG1fbGFzdExpbmUsIG1fbGV4ZXItPmN1cnJlbnRDb2x1bW5OdW1i
ZXIoKSk7CiAgICAgfSBlbHNlIGlmIChsZXhpY2FsR2xvYmFsT2JqZWN0KSB7CiAgICAgICAgIC8v
IFdlIGNhbiBuZXZlciBzZWUgYSBzeW50YXggZXJyb3Igd2hlbiByZXBhcnNpbmcgYSBmdW5jdGlv
biwgc2luY2Ugd2Ugc2hvdWxkIGhhdmUKICAgICAgICAgLy8gcmVwb3J0ZWQgdGhlIGVycm9yIHdo
ZW4gcGFyc2luZyB0aGUgY29udGFpbmluZyBwcm9ncmFtIG9yIGV2YWwgY29kZS4gU28gaWYgd2Un
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyVG9rZW5z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5oCmluZGV4IGEx
ZWE3NTFhYzIwYTc5MmZmNGM1ZTYyMWEwMWJjNzc0OWVhM2E5YmYuLjZlNmNlYzExNGQ0NDVlMzc4
NjVmZWM4YzM5MWRmNWI1MWRlYzUxN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyVG9rZW5zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJUb2tlbnMuaApAQCAtMTQwLDE3ICsxNDAsMjUgQEAgdW5pb24gSlNUb2tlbkRhdGEg
ewogICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50OwogfTsKIAotc3RydWN0IEpTVG9rZW5JbmZv
IHsKLSAgICBKU1Rva2VuSW5mbygpIDogbGluZSgwKSB7IH0KK3N0cnVjdCBKU1Rva2VuTG9jYXRp
b24geworICAgIEpTVG9rZW5Mb2NhdGlvbigpIDogbGluZSgwKSwgY29sdW1uKDApIHsgfQorICAg
IEpTVG9rZW5Mb2NhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uKQorICAgIHsK
KyAgICAgICAgbGluZSA9IGxvY2F0aW9uLmxpbmU7CisgICAgICAgIHN0YXJ0T2Zmc2V0ID0gbG9j
YXRpb24uc3RhcnRPZmZzZXQ7CisgICAgICAgIGVuZE9mZnNldCA9IGxvY2F0aW9uLmVuZE9mZnNl
dDsKKyAgICAgICAgY29sdW1uID0gbG9jYXRpb24uY29sdW1uOworICAgIH0KICAgICBpbnQgbGlu
ZTsKICAgICBpbnQgc3RhcnRPZmZzZXQ7CiAgICAgaW50IGVuZE9mZnNldDsKKyAgICBpbnQgY29s
dW1uOwogfTsKIAogc3RydWN0IEpTVG9rZW4gewogICAgIEpTVG9rZW5UeXBlIG1fdHlwZTsKICAg
ICBKU1Rva2VuRGF0YSBtX2RhdGE7Ci0gICAgSlNUb2tlbkluZm8gbV9pbmZvOworICAgIEpTVG9r
ZW5Mb2NhdGlvbiBtX2xvY2F0aW9uOwogfTsKIAogZW51bSBKU1BhcnNlclN0cmljdG5lc3MgeyBK
U1BhcnNlTm9ybWFsLCBKU1BhcnNlU3RyaWN0IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmgKaW5kZXggMzY2MjM2N2Ew
MWI3MDlkOWNkNGVjM2Q0N2QyZjNkYjkzZTVlMjRhNy4uYmZkMzU2NDhlZTg4MTM4YWM1MjFiODgy
N2ZhODZiZDBjZWYxMjIwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Tb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0uaApAQCAtNTMsOSArNTMsOSBAQCBwdWJsaWM6
CiAgICAgICAgIEpTVG9rZW4gdG9rZW47CiAgICAgICAgIHRva2VuLm1fdHlwZSA9IENMT1NFQlJB
Q0U7CiAgICAgICAgIHRva2VuLm1fZGF0YS5pbnRWYWx1ZSA9IGNsb3NlQnJhY2VQb3M7Ci0gICAg
ICAgIHRva2VuLm1faW5mby5zdGFydE9mZnNldCA9IGNsb3NlQnJhY2VQb3M7Ci0gICAgICAgIHRv
a2VuLm1faW5mby5lbmRPZmZzZXQgPSBjbG9zZUJyYWNlUG9zICsgMTsKLSAgICAgICAgdG9rZW4u
bV9pbmZvLmxpbmUgPSBjbG9zZUJyYWNlTGluZTsgCisgICAgICAgIHRva2VuLm1fbG9jYXRpb24u
c3RhcnRPZmZzZXQgPSBjbG9zZUJyYWNlUG9zOworICAgICAgICB0b2tlbi5tX2xvY2F0aW9uLmVu
ZE9mZnNldCA9IGNsb3NlQnJhY2VQb3MgKyAxOworICAgICAgICB0b2tlbi5tX2xvY2F0aW9uLmxp
bmUgPSBjbG9zZUJyYWNlTGluZTsKICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgIH0KICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggZmUz
Y2U3MTRmMzBlNDkwMGNhNTRiNTY1NWZkOGExMTkwNmM3ZmRkZS4uN2Q0NGVmM2M2NmVjY2U4ZWM2
OGJhZmVhOTNkYmM5YWFjNDBiOTQxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9TeW50YXhDaGVja2VyLmgKQEAgLTExOSw0MiArMTE5LDQyIEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgRG9udEJ1aWxkU3RyaW5ncyA9IExleGVyRmxhZ3NEb250QnVpbGRT
dHJpbmdzOwogCiAgICAgaW50IGNyZWF0ZVNvdXJjZUVsZW1lbnRzKCkgeyByZXR1cm4gMTsgfQot
ICAgIEV4cHJlc3Npb25UeXBlIG1ha2VGdW5jdGlvbkNhbGxOb2RlKGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIENhbGxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFr
ZUZ1bmN0aW9uQ2FsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIENhbGxFeHByOyB9CiAgICAgdm9pZCBhcHBlbmRUb0NvbW1hKEV4
cHJlc3Npb25UeXBlJiBiYXNlLCBFeHByZXNzaW9uVHlwZSByaWdodCkgeyBiYXNlID0gcmlnaHQ7
IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVDb21tYUV4cHIoaW50LCBFeHByZXNzaW9uVHlw
ZSwgRXhwcmVzc2lvblR5cGUgcmlnaHQpIHsgcmV0dXJuIHJpZ2h0OyB9Ci0gICAgRXhwcmVzc2lv
blR5cGUgbWFrZUFzc2lnbk5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIEV4cHJl
c3Npb25UeXBlLCBib29sLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBBc3NpZ25tZW50
RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQcmVmaXhOb2RlKGludCwgRXhwcmVzc2lv
blR5cGUsIE9wZXJhdG9yLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQcmVFeHByOyB9Ci0gICAg
RXhwcmVzc2lvblR5cGUgbWFrZVBvc3RmaXhOb2RlKGludCwgRXhwcmVzc2lvblR5cGUsIE9wZXJh
dG9yLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBQb3N0RXhwcjsgfQotICAgIEV4cHJlc3Npb25U
eXBlIG1ha2VUeXBlT2ZOb2RlKGludCwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFR5cGVvZkV4
cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBtYWtlRGVsZXRlTm9kZShpbnQsIEV4cHJlc3Npb25U
eXBlLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBEZWxldGVFeHByOyB9Ci0gICAgRXhwcmVzc2lv
blR5cGUgbWFrZU5lZ2F0ZU5vZGUoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlF
eHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgbWFrZUJpdHdpc2VOb3ROb2RlKGludCwgRXhwcmVz
c2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0
ZUxvZ2ljYWxOb3QoaW50LCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0g
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlVW5hcnlQbHVzKGludCwgRXhwcmVzc2lvblR5cGUpIHsg
cmV0dXJuIFVuYXJ5RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVZvaWQoaW50LCBF
eHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUg
dGhpc0V4cHIoaW50KSB7IHJldHVybiBUaGlzRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZVJlc29sdmUoaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJldHVybiBSZXNvbHZl
RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVjdExpdGVyYWwoaW50KSB7IHJl
dHVybiBPYmplY3RMaXRlcmFsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU9iamVj
dExpdGVyYWwoaW50LCBpbnQpIHsgcmV0dXJuIE9iamVjdExpdGVyYWxFeHByOyB9Ci0gICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlQXJyYXkoaW50LCBpbnQpIHsgcmV0dXJuIEFycmF5TGl0ZXJhbEV4
cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVBcnJheShpbnQsIGludCwgaW50KSB7IHJl
dHVybiBBcnJheUxpdGVyYWxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVtYmVy
RXhwcihpbnQsIGRvdWJsZSkgeyByZXR1cm4gTnVtYmVyRXhwcjsgfQotICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZVN0cmluZyhpbnQsIGNvbnN0IElkZW50aWZpZXIqKSB7IHJldHVybiBTdHJpbmdF
eHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQm9vbGVhbihpbnQsIGJvb2wpIHsgcmV0
dXJuIEJvb2xFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVsbChpbnQpIHsgcmV0
dXJuIE51bGxFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlQnJhY2tldEFjY2Vzcyhp
bnQsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgYm9vbCwgaW50LCBpbnQsIGludCkg
eyByZXR1cm4gQnJhY2tldEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVEb3RBY2Nl
c3MoaW50LCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQp
IHsgcmV0dXJuIERvdEV4cHI7IH0KLSAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZWdFeHAoaW50
LCBjb25zdCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiwgaW50KSB7IHJl
dHVybiBZYXJyOjpjaGVja1N5bnRheChwYXR0ZXJuLnVzdHJpbmcoKSkgPyAwIDogUmVnRXhwRXhw
cjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZU5ld0V4cHIoaW50LCBFeHByZXNzaW9uVHlw
ZSwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiBOZXdFeHByOyB9Ci0gICAgRXhwcmVzc2lv
blR5cGUgY3JlYXRlTmV3RXhwcihpbnQsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGludCkgeyByZXR1
cm4gTmV3RXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbmRpdGlvbmFsRXhwcihp
bnQsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lvblR5cGUpIHsgcmV0
dXJuIENvbmRpdGlvbmFsRXhwcjsgfQotICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFzc2lnblJl
c29sdmUoaW50LCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvblR5cGUsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIEFzc2lnbm1lbnRFeHByOyB9Ci0gICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
RnVuY3Rpb25FeHByKGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlv
bkJvZHkoaW50LCBib29sKSB7IHJldHVybiAxOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRl
Q29tbWFFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNz
aW9uVHlwZSByaWdodCkgeyByZXR1cm4gcmlnaHQ7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtl
QXNzaWduTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0
b3IsIEV4cHJlc3Npb25UeXBlLCBib29sLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBB
c3NpZ25tZW50RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQcmVmaXhOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBPcGVyYXRvciwgaW50LCBpbnQsIGlu
dCkgeyByZXR1cm4gUHJlRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VQb3N0Zml4Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgT3BlcmF0b3IsIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIFBvc3RFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgbWFrZVR5
cGVPZk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJu
IFR5cGVvZkV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBtYWtlRGVsZXRlTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
RGVsZXRlRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIG1ha2VOZWdhdGVOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBVbmFyeUV4cHI7IH0KKyAg
ICBFeHByZXNzaW9uVHlwZSBtYWtlQml0d2lzZU5vdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvblR5cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25U
eXBlIGNyZWF0ZUxvZ2ljYWxOb3QoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvblR5
cGUpIHsgcmV0dXJuIFVuYXJ5RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZVVuYXJ5
UGx1cyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5h
cnlFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlVm9pZChjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBFeHByZXNzaW9uVHlwZSkgeyByZXR1cm4gVW5hcnlFeHByOyB9CisgICAgRXhwcmVz
c2lvblR5cGUgdGhpc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4gVGhpc0V4
cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVSZXNvbHZlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQpIHsgcmV0dXJuIFJlc29sdmVFeHByOyB9Cisg
ICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlT2JqZWN0TGl0ZXJhbChjb25zdCBKU1Rva2VuTG9jYXRp
b24mKSB7IHJldHVybiBPYmplY3RMaXRlcmFsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNy
ZWF0ZU9iamVjdExpdGVyYWwoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50KSB7IHJldHVybiBP
YmplY3RMaXRlcmFsRXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCkgeyByZXR1cm4gQXJyYXlMaXRlcmFsRXhwcjsgfQorICAg
IEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycmF5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwg
aW50KSB7IHJldHVybiBBcnJheUxpdGVyYWxFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3Jl
YXRlTnVtYmVyRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBkb3VibGUpIHsgcmV0dXJuIE51
bWJlckV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVTdHJpbmcoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciopIHsgcmV0dXJuIFN0cmluZ0V4cHI7IH0KKyAg
ICBFeHByZXNzaW9uVHlwZSBjcmVhdGVCb29sZWFuKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGJv
b2wpIHsgcmV0dXJuIEJvb2xFeHByOyB9CisgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlTnVsbChj
b25zdCBKU1Rva2VuTG9jYXRpb24mKSB7IHJldHVybiBOdWxsRXhwcjsgfQorICAgIEV4cHJlc3Np
b25UeXBlIGNyZWF0ZUJyYWNrZXRBY2Nlc3MoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVz
c2lvblR5cGUsIEV4cHJlc3Npb25UeXBlLCBib29sLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBC
cmFja2V0RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZURvdEFjY2Vzcyhjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgY29uc3QgSWRlbnRpZmllciosIGludCwg
aW50LCBpbnQpIHsgcmV0dXJuIERvdEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVS
ZWdFeHAoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwg
Y29uc3QgSWRlbnRpZmllciYsIGludCkgeyByZXR1cm4gWWFycjo6Y2hlY2tTeW50YXgocGF0dGVy
bi51c3RyaW5nKCkpID8gMCA6IFJlZ0V4cEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIE5ld0V4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVh
dGVOZXdFeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25UeXBlLCBpbnQsIGlu
dCkgeyByZXR1cm4gTmV3RXhwcjsgfQorICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUNvbmRpdGlv
bmFsRXhwcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uVHlwZSwgRXhwcmVzc2lv
blR5cGUsIEV4cHJlc3Npb25UeXBlKSB7IHJldHVybiBDb25kaXRpb25hbEV4cHI7IH0KKyAgICBF
eHByZXNzaW9uVHlwZSBjcmVhdGVBc3NpZ25SZXNvbHZlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGNvbnN0IElkZW50aWZpZXImLCBFeHByZXNzaW9uVHlwZSwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gQXNzaWdubWVudEV4cHI7IH0KKyAgICBFeHByZXNzaW9uVHlwZSBjcmVhdGVGdW5jdGlvbkV4
cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQorICAgIGludCBjcmVh
dGVGdW5jdGlvbkJvZHkoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgYm9vbCkgeyByZXR1cm4gMTsg
fQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0
ZUFyZ3VtZW50cyhpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQXJndW1lbnRzTGlz
dChpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVBcmd1bWVudHNMaXN0KGlu
dCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQXJndW1lbnRzTGlzdChj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRl
QXJndW1lbnRzTGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQogICAgIHRlbXBsYXRlIDxib29sIGNvbXBsZXRlPiBQcm9wZXJ0eSBjcmVhdGVQcm9wZXJ0
eShjb25zdCBJZGVudGlmaWVyKiBuYW1lLCBpbnQsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlKQog
ICAgIHsKICAgICAgICAgaWYgKCFjb21wbGV0ZSkKQEAgLTE2OCw4ICsxNjgsOCBAQCBwdWJsaWM6
CiAgICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CiAgICAgICAgIHJldHVybiBQcm9w
ZXJ0eSgmZ2xvYmFsRGF0YS0+cGFyc2VyQXJlbmEtPmlkZW50aWZpZXJBcmVuYSgpLm1ha2VOdW1l
cmljSWRlbnRpZmllcihnbG9iYWxEYXRhLCBuYW1lKSwgdHlwZSk7CiAgICAgfQotICAgIGludCBj
cmVhdGVQcm9wZXJ0eUxpc3QoaW50LCBQcm9wZXJ0eSkgeyByZXR1cm4gMTsgfQotICAgIGludCBj
cmVhdGVQcm9wZXJ0eUxpc3QoaW50LCBQcm9wZXJ0eSwgaW50KSB7IHJldHVybiAxOyB9CisgICAg
aW50IGNyZWF0ZVByb3BlcnR5TGlzdChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eSkg
eyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVQcm9wZXJ0eUxpc3QoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgUHJvcGVydHksIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVFbGVt
ZW50TGlzdChpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAgIGludCBjcmVhdGVFbGVtZW50TGlz
dChpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CiAgICAgaW50IGNyZWF0ZUZvcm1hbFBhcmFt
ZXRlckxpc3QoY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIDE7IH0KQEAgLTE3OCwzOSArMTc4
LDM5IEBAIHB1YmxpYzoKICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQpIHsgcmV0dXJuIDE7
IH0KICAgICBpbnQgY3JlYXRlQ2xhdXNlTGlzdChpbnQsIGludCkgeyByZXR1cm4gMTsgfQogICAg
IHZvaWQgc2V0VXNlc0FyZ3VtZW50cyhpbnQpIHsgfQotICAgIGludCBjcmVhdGVGdW5jRGVjbFN0
YXRlbWVudChpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwg
aW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUJsb2NrU3RhdGVtZW50KGludCwgaW50
LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVFeHByU3RhdGVtZW50KGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVJZlN0YXRlbWVu
dChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVJ
ZlN0YXRlbWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0g
ICAgaW50IGNyZWF0ZUZvckxvb3AoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7
IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUZvckluTG9vcChpbnQsIGNvbnN0IElkZW50aWZp
ZXIqLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRm9ySW5Mb29wKGludCwgaW50LCBpbnQsIGludCwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlRW1w
dHlTdGF0ZW1lbnQoaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZVZhclN0YXRlbWVu
dChpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlUmV0dXJu
U3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAg
ICBpbnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoaW50LCBjb25zdCBJZGVudGlm
aWVyKiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUNv
bnRpbnVlU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9Ci0g
ICAgaW50IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGludCwgY29uc3QgSWRlbnRpZmllciosIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVUcnlTdGF0ZW1l
bnQoaW50LCBpbnQsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KLSAgICBpbnQgY3JlYXRlU3dpdGNoU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVhdGVXaGlsZVN0YXRl
bWVudChpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQotICAgIGludCBjcmVh
dGVXaXRoU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gMTsgfQotICAgIGludCBjcmVhdGVEb1doaWxlU3RhdGVtZW50KGludCwgaW50LCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9Ci0gICAgaW50IGNyZWF0ZUxhYmVsU3RhdGVtZW50KGludCwg
Y29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICBpbnQg
Y3JlYXRlVGhyb3dTdGF0ZW1lbnQoaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1
cm4gMTsgfQotICAgIGludCBjcmVhdGVEZWJ1Z2dlcihpbnQsIGludCwgaW50KSB7IHJldHVybiAx
OyB9Ci0gICAgaW50IGNyZWF0ZUNvbnN0U3RhdGVtZW50KGludCwgaW50LCBpbnQsIGludCkgeyBy
ZXR1cm4gMTsgfQotICAgIGludCBhcHBlbmRDb25zdERlY2woaW50LCBpbnQsIGNvbnN0IElkZW50
aWZpZXIqLCBpbnQpIHsgcmV0dXJuIDE7IH0KLSAgICB0ZW1wbGF0ZSA8Ym9vbCBzdHJpY3Q+IFBy
b3BlcnR5IGNyZWF0ZUdldHRlck9yU2V0dGVyUHJvcGVydHkoaW50LCBQcm9wZXJ0eU5vZGU6OlR5
cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQs
IGludCkKKyAgICBpbnQgY3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsg
cmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQmxvY2tTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVFeHBy
U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KKyAgICBpbnQgY3JlYXRlSWZTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUlmU3RhdGVt
ZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUZvckxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVh
dGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciosIGlu
dCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4g
MTsgfQorICAgIGludCBjcmVhdGVGb3JJbkxvb3AoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50
LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBp
bnQgY3JlYXRlRW1wdHlTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJikgeyByZXR1cm4g
MTsgfQorICAgIGludCBjcmVhdGVWYXJTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVhdGVSZXR1cm5TdGF0ZW1l
bnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0
dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQnJlYWtTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUJy
ZWFrU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBp
bnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlQ29udGludWVT
dGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCwgaW50KSB7IHJl
dHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGludCwgaW50LCBpbnQpIHsgcmV0dXJu
IDE7IH0KKyAgICBpbnQgY3JlYXRlVHJ5U3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IGludCwgY29uc3QgSWRlbnRpZmllciosIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsg
fQorICAgIGludCBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAgIGludCBjcmVh
dGVXaGlsZVN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBp
bnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgY3JlYXRlV2l0aFN0YXRlbWVudChjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9
CisgICAgaW50IGNyZWF0ZURvV2hpbGVTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUxhYmVsU3Rh
dGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIqLCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZVRocm93U3RhdGVtZW50KGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQsIGludCwgaW50KSB7IHJldHVybiAxOyB9
CisgICAgaW50IGNyZWF0ZURlYnVnZ2VyKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50
KSB7IHJldHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUNvbnN0U3RhdGVtZW50KGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGludCwgaW50LCBpbnQpIHsgcmV0dXJuIDE7IH0KKyAgICBpbnQgYXBwZW5k
Q29uc3REZWNsKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgY29uc3QgSWRlbnRpZmllcios
IGludCkgeyByZXR1cm4gMTsgfQorICAgIHRlbXBsYXRlIDxib29sIHN0cmljdD4gUHJvcGVydHkg
Y3JlYXRlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0eShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9w
ZXJ0eU5vZGU6OlR5cGUgdHlwZSwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgaW50LCBpbnQsIGlu
dCwgaW50LCBpbnQsIGludCkKICAgICB7CiAgICAgICAgIEFTU0VSVChuYW1lKTsKICAgICAgICAg
aWYgKCFzdHJpY3QpCiAgICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CiAgICAgICAg
IHJldHVybiBQcm9wZXJ0eShuYW1lLCB0eXBlKTsKICAgICB9Ci0gICAgdGVtcGxhdGUgPGJvb2wg
c3RyaWN0PiBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgaW50LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgZG91YmxlIG5hbWUs
IGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpCisgICAgdGVtcGxhdGUgPGJvb2wgc3RyaWN0
PiBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRlclByb3BlcnR5KEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUHJvcGVydHlOb2RlOjpUeXBlIHR5cGUs
IGRvdWJsZSBuYW1lLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KQogICAgIHsKICAgICAg
ICAgaWYgKCFzdHJpY3QpCiAgICAgICAgICAgICByZXR1cm4gUHJvcGVydHkodHlwZSk7CkBAIC0y
MTksNyArMjE5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBlbmRTdGF0ZW1lbnQoaW50LCBp
bnQpIHsgfQogICAgIHZvaWQgYWRkVmFyKGNvbnN0IElkZW50aWZpZXIqLCBib29sKSB7IH0KLSAg
ICBpbnQgY29tYmluZUNvbW1hTm9kZXMoaW50LCBpbnQsIGludCkgeyByZXR1cm4gMTsgfQorICAg
IGludCBjb21iaW5lQ29tbWFOb2Rlcyhjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCkg
eyByZXR1cm4gMTsgfQogICAgIGludCBldmFsQ291bnQoKSBjb25zdCB7IHJldHVybiAwOyB9CiAg
ICAgdm9pZCBhcHBlbmRCaW5hcnlFeHByZXNzaW9uSW5mbyhpbnQmIG9wZXJhbmRTdGFja0RlcHRo
LCBpbnQgZXhwciwgaW50LCBpbnQsIGludCwgYm9vbCkKICAgICB7CkBAIC0yMzUsNyArMjM1LDcg
QEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3JTdGFja0hhc0hpZ2hlclByZWNlZGVuY2UoaW50
JiwgaW50KSB7IHJldHVybiB0cnVlOyB9CiAgICAgQmluYXJ5T3BlcmFuZCBnZXRGcm9tT3BlcmFu
ZFN0YWNrKGludCkgeyByZXR1cm4gbV90b3BCaW5hcnlFeHByOyB9CiAgICAgdm9pZCBzaHJpbmtP
cGVyYW5kU3RhY2tCeShpbnQmIG9wZXJhbmRTdGFja0RlcHRoLCBpbnQgYW1vdW50KSB7IG9wZXJh
bmRTdGFja0RlcHRoIC09IGFtb3VudDsgfQotICAgIHZvaWQgYXBwZW5kQmluYXJ5T3BlcmF0aW9u
KGludCwgaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwgaW50JiwgQmluYXJ5T3BlcmFuZCwgQmluYXJ5
T3BlcmFuZCkgeyBvcGVyYW5kU3RhY2tEZXB0aCsrOyB9CisgICAgdm9pZCBhcHBlbmRCaW5hcnlP
cGVyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50JiBvcGVyYW5kU3RhY2tEZXB0aCwg
aW50JiwgQmluYXJ5T3BlcmFuZCwgQmluYXJ5T3BlcmFuZCkgeyBvcGVyYW5kU3RhY2tEZXB0aCsr
OyB9CiAgICAgdm9pZCBvcGVyYXRvclN0YWNrQXBwZW5kKGludCYgb3BlcmF0b3JTdGFja0RlcHRo
LCBpbnQsIGludCkgeyBvcGVyYXRvclN0YWNrRGVwdGgrKzsgfQogICAgIGludCBwb3BPcGVyYW5k
U3RhY2soaW50JikgeyBpbnQgcmVzID0gbV90b3BCaW5hcnlFeHByOyBtX3RvcEJpbmFyeUV4cHIg
PSAwOyByZXR1cm4gcmVzOyB9CiAgICAgCkBAIC0yNDUsNyArMjQ1LDcgQEAgcHVibGljOgogICAg
IHZvaWQgdW5hcnlUb2tlblN0YWNrUmVtb3ZlTGFzdChpbnQmIHN0YWNrRGVwdGgpIHsgc3RhY2tE
ZXB0aCA9IDA7IH0KICAgICAKICAgICB2b2lkIGFzc2lnbm1lbnRTdGFja0FwcGVuZChpbnQsIGlu
dCwgaW50LCBpbnQsIGludCwgT3BlcmF0b3IpIHsgfQotICAgIGludCBjcmVhdGVBc3NpZ25tZW50
KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJl
dHVybiAxOyB9CisgICAgaW50IGNyZWF0ZUFzc2lnbm1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVy
biAxOyB9CiAgICAgY29uc3QgSWRlbnRpZmllciYgZ2V0TmFtZShjb25zdCBQcm9wZXJ0eSYgcHJv
cGVydHkpIGNvbnN0IHsgQVNTRVJUKHByb3BlcnR5Lm5hbWUpOyByZXR1cm4gKnByb3BlcnR5Lm5h
bWU7IH0KICAgICBQcm9wZXJ0eU5vZGU6OlR5cGUgZ2V0VHlwZShjb25zdCBQcm9wZXJ0eSYgcHJv
cGVydHkpIGNvbnN0IHsgcmV0dXJuIHByb3BlcnR5LnR5cGU7IH0KICAgICBib29sIGlzUmVzb2x2
ZShFeHByZXNzaW9uVHlwZSBleHByKSBjb25zdCB7IHJldHVybiBleHByID09IFJlc29sdmVFeHBy
IHx8IGV4cHIgPT0gUmVzb2x2ZUV2YWxFeHByOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggOWFjZTgyZDkzN2E5MTczOTkzNGJh
NzNjMzdlZGNkOTA0Y2IzZjc4OC4uNTExNTJmYTZjYjc4ZWI5M2VkYWNiN2M3Zjg3ZTk4NzcyZTgz
YzFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2Vy
dmVyLmNwcApAQCAtNzUsMjAgKzc1LDI4IEBAIFN0cmluZyBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0
QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVhCiAgICAg
U291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBpdCA9IG1fc291cmNlSWRUb0JyZWFr
cG9pbnRzLmZpbmQoc291cmNlSURWYWx1ZSk7CiAgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0Jy
ZWFrcG9pbnRzLmVuZCgpKQogICAgICAgICBpdCA9IG1fc291cmNlSWRUb0JyZWFrcG9pbnRzLnNl
dChzb3VyY2VJRFZhbHVlLCBMaW5lVG9CcmVha3BvaW50TWFwKCkpLml0ZXJhdG9yOwotICAgIGlm
IChpdC0+c2Vjb25kLmNvbnRhaW5zKHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciArIDEpKQot
ICAgICAgICByZXR1cm4gIiI7Ci0gICAgaXQtPnNlY29uZC5zZXQoc2NyaXB0QnJlYWtwb2ludC5s
aW5lTnVtYmVyICsgMSwgc2NyaXB0QnJlYWtwb2ludCk7CisgICAgTGluZVRvQnJlYWtwb2ludE1h
cDo6aXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+c2Vjb25kLmZpbmQoc2NyaXB0QnJlYWtwb2ludC5s
aW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisg
ICAgICAgIGJyZWFrc0l0ID0gaXQtPnNlY29uZC5zZXQoc2NyaXB0QnJlYWtwb2ludC5saW5lTnVt
YmVyICsgMSwgQnJlYWtwb2ludHNJbkxpbmUoKSkuaXRlcmF0b3I7CisKKyAgICBCcmVha3BvaW50
c0luTGluZSYgYnJlYWtzVmVjdG9yID0gYnJlYWtzSXQtPnNlY29uZDsKKyAgICB1bnNpZ25lZCBi
cmVha3NDb3VudCA9IGJyZWFrc1ZlY3Rvci5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGJyZWFrc0NvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKGJyZWFrc1ZlY3Rvci5hdChp
KS5jb2x1bW5OdW1iZXIgPT0gc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXIpCisgICAgICAg
ICAgICByZXR1cm4gIiI7CisgICAgfQorICAgIGJyZWFrc1ZlY3Rvci5hcHBlbmQoc2NyaXB0QnJl
YWtwb2ludCk7CisKICAgICAqYWN0dWFsTGluZU51bWJlciA9IHNjcmlwdEJyZWFrcG9pbnQubGlu
ZU51bWJlcjsKLSAgICAvLyBGSVhNRShXSzUzMDAzKTogaW1wbGVtZW50IHNldHRpbmcgYnJlYWtw
b2ludHMgYnkgbGluZTpjb2x1bW4uCi0gICAgKmFjdHVhbENvbHVtbk51bWJlciA9IDA7Ci0gICAg
cmV0dXJuIHNvdXJjZUlEICsgIjoiICsgU3RyaW5nOjpudW1iZXIoc2NyaXB0QnJlYWtwb2ludC5s
aW5lTnVtYmVyKTsKKyAgICAqYWN0dWFsQ29sdW1uTnVtYmVyID0gc2NyaXB0QnJlYWtwb2ludC5j
b2x1bW5OdW1iZXI7CisgICAgcmV0dXJuIHNvdXJjZUlEICsgIjoiICsgU3RyaW5nOjpudW1iZXIo
c2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyKSArICI6IiArIFN0cmluZzo6bnVtYmVyKHNjcmlw
dEJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
cmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCkKIHsKICAgICBWZWN0
b3I8U3RyaW5nPiB0b2tlbnM7CiAgICAgYnJlYWtwb2ludElkLnNwbGl0KCI6IiwgdG9rZW5zKTsK
LSAgICBpZiAodG9rZW5zLnNpemUoKSAhPSAyKQorICAgIGlmICh0b2tlbnMuc2l6ZSgpICE9IDMp
CiAgICAgICAgIHJldHVybjsKICAgICBib29sIHN1Y2Nlc3M7CiAgICAgaW50cHRyX3Qgc291cmNl
SURWYWx1ZSA9IHRva2Vuc1swXS50b0ludFB0cigmc3VjY2Vzcyk7CkBAIC05Nyw5ICsxMDUsNjMg
QEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcm
IGJyZWFrcG9pbnRJZCkKICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyID0gdG9rZW5zWzFdLnRvVUlu
dCgmc3VjY2Vzcyk7CiAgICAgaWYgKCFzdWNjZXNzKQogICAgICAgICByZXR1cm47CisgICAgdW5z
aWduZWQgY29sdW1uTnVtYmVyID0gdG9rZW5zWzJdLnRvVUludCgmc3VjY2Vzcyk7CisgICAgaWYg
KCFzdWNjZXNzKQorICAgICAgICByZXR1cm47CisKICAgICBTb3VyY2VJZFRvQnJlYWtwb2ludHNN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRFZh
bHVlKTsKLSAgICBpZiAoaXQgIT0gbV9zb3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCi0gICAg
ICAgIGl0LT5zZWNvbmQucmVtb3ZlKGxpbmVOdW1iZXIgKyAxKTsKKyAgICBpZiAoaXQgPT0gbV9z
b3VyY2VJZFRvQnJlYWtwb2ludHMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBMaW5lVG9C
cmVha3BvaW50TWFwOjppdGVyYXRvciBicmVha3NJdCA9IGl0LT5zZWNvbmQuZmluZChsaW5lTnVt
YmVyICsgMSk7CisgICAgaWYgKGJyZWFrc0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIEJyZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3IgPSBicmVha3NJ
dC0+c2Vjb25kOworICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVjdG9yLnNpemUo
KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnJlYWtzQ291bnQ7IGkrKykgeworICAg
ICAgICBpZiAoYnJlYWtzVmVjdG9yLmF0KGkpLmNvbHVtbk51bWJlciA9PSBzdGF0aWNfY2FzdDxp
bnQ+KGNvbHVtbk51bWJlcikpIHsKKyAgICAgICAgICAgIGJyZWFrc1ZlY3Rvci5yZW1vdmUoaSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6dXBkYXRlQ3VycmVudFN0YXRlbWVudFBvc2l0aW9uKGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZSkKK3sKKyAgICBpZiAobGluZSA8IDApCisgICAgICAgIHJldHVybjsKKwor
ICAgIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2UgPSByZWludGVycHJldF9jYXN0PFNvdXJjZVByb3Zp
ZGVyKj4oc291cmNlSUQpOworCisgICAgaWYgKG1fY3VycmVudFNvdXJjZUlEICE9IHNvdXJjZUlE
KSB7CisgICAgICAgIFN0cmluZyBzb3VyY2VDb2RlID0gdXN0cmluZ1RvU3RyaW5nKEpTQzo6VVN0
cmluZyhjb25zdF9jYXN0PFN0cmluZ0ltcGwqPihzb3VyY2UtPmRhdGEoKSkpKTsKKyAgICAgICAg
bV9jdXJyZW50U291cmNlQ29kZS5jbGVhcigpOworICAgICAgICBzb3VyY2VDb2RlLnNwbGl0KCJc
biIsIHRydWUsIG1fY3VycmVudFNvdXJjZUNvZGUpOworICAgICAgICBtX2N1cnJlbnRTb3VyY2VJ
RCA9IHNvdXJjZUlEOworICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5saW5lTnVt
YmVyID0gMDsKKyAgICAgICAgbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24uY29sdW1uTnVtYmVy
ID0gMDsKKyAgICB9CisKKyAgICBpZiAobGluZSAhPSBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlv
bi5saW5lTnVtYmVyKSB7CisgICAgICAgIG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVO
dW1iZXIgPSBsaW5lOworICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5O
dW1iZXIgPSAwOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IHN0YXJ0TGluZSA9
IHNvdXJjZS0+c3RhcnRQb3NpdGlvbigpLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsKKyAgICBpZiAo
KG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmxpbmVOdW1iZXIgLSBzdGFydExpbmUgLSAxKSA+
PSBzdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudFNvdXJjZUNvZGUuc2l6ZSgpKSkKKyAgICAgICAg
cmV0dXJuOworICAgIGNvbnN0IFN0cmluZyYgY29kZUluTGluZSA9IG1fY3VycmVudFNvdXJjZUNv
ZGVbbV9jdXJyZW50U3RhdGVtZW50UG9zaXRpb24ubGluZU51bWJlciAtIHN0YXJ0TGluZSAtIDFd
OworICAgIGlmIChjb2RlSW5MaW5lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlu
dCBuZXh0Q29sdW1uID0gY29kZUluTGluZS5maW5kKCI7IiwgbV9jdXJyZW50U3RhdGVtZW50UG9z
aXRpb24uY29sdW1uTnVtYmVyKTsKKyAgICBpZiAobmV4dENvbHVtbiAhPSAtMSkgeworICAgICAg
ICBVQ2hhciBjID0gY29kZUluTGluZVtuZXh0Q29sdW1uICsgMV07CisgICAgICAgIGlmIChjID09
ICcgJyB8fCBjID09ICdcdCcpCisgICAgICAgICAgICBuZXh0Q29sdW1uICs9IDE7CisgICAgICAg
IG1fY3VycmVudFN0YXRlbWVudFBvc2l0aW9uLmNvbHVtbk51bWJlciA9IG5leHRDb2x1bW4gKyAx
OworICAgIH0gZWxzZQorICAgICAgICBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbi5jb2x1bW5O
dW1iZXIgPSAwOwogfQogCiBib29sIFNjcmlwdERlYnVnU2VydmVyOjpoYXNCcmVha3BvaW50KGlu
dHB0cl90IHNvdXJjZUlELCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKSBjb25zdApAQCAt
MTEwLDE5ICsxNzIsMzcgQEAgYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFzQnJlYWtwb2ludChp
bnRwdHJfdCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3MKICAgICBTb3VyY2VJZFRv
QnJlYWtwb2ludHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJZFRvQnJlYWtwb2lu
dHMuZmluZChzb3VyY2VJRCk7CiAgICAgaWYgKGl0ID09IG1fc291cmNlSWRUb0JyZWFrcG9pbnRz
LmVuZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaW50IGxpbmVOdW1iZXIgPSBwb3Np
dGlvbi5tX2xpbmUub25lQmFzZWRJbnQoKTsKLSAgICBpZiAobGluZU51bWJlciA8PSAwKQorCisg
ICAgaW50IGxpbmVOdW1iZXIgPSBwb3NpdGlvbi5tX2xpbmUuemVyb0Jhc2VkSW50KCk7CisgICAg
aW50IGNvbHVtbk51bWJlciA9IHBvc2l0aW9uLm1fY29sdW1uLnplcm9CYXNlZEludCgpOworICAg
IGlmIChsaW5lTnVtYmVyIDwgMCB8fCBjb2x1bW5OdW1iZXIgPCAwKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBMaW5lVG9CcmVha3BvaW50TWFwOjpjb25zdF9pdGVyYXRvciBicmVha3NJ
dCA9IGl0LT5zZWNvbmQuZmluZChsaW5lTnVtYmVyICsgMSk7CisgICAgaWYgKGJyZWFrc0l0ID09
IGl0LT5zZWNvbmQuZW5kKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBMaW5lVG9CcmVh
a3BvaW50TWFwOjpjb25zdF9pdGVyYXRvciBicmVha0l0ID0gaXQtPnNlY29uZC5maW5kKGxpbmVO
dW1iZXIpOwotICAgIGlmIChicmVha0l0ID09IGl0LT5zZWNvbmQuZW5kKCkpCisKKyAgICBib29s
IGhpdCA9IGZhbHNlOworICAgIGNvbnN0IEJyZWFrcG9pbnRzSW5MaW5lJiBicmVha3NWZWN0b3Ig
PSBicmVha3NJdC0+c2Vjb25kOworICAgIHVuc2lnbmVkIGJyZWFrc0NvdW50ID0gYnJlYWtzVmVj
dG9yLnNpemUoKTsKKyAgICB1bnNpZ25lZCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBicmVha3ND
b3VudDsgaSsrKSB7CisgICAgICAgIGludCBicmVha0NvbHVtbiA9IGJyZWFrc1ZlY3Rvci5hdChp
KS5jb2x1bW5OdW1iZXI7CisgICAgICAgIGludCBicmVha0xpbmUgPSBicmVha3NWZWN0b3IuYXQo
aSkubGluZU51bWJlcjsKKyAgICAgICAgaWYgKGxpbmVOdW1iZXIgPT0gYnJlYWtMaW5lICYmIGNv
bHVtbk51bWJlciA9PSBicmVha0NvbHVtbikgeworICAgICAgICAgICAgaGl0ID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmICghaGl0KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBBbiBlbXB0eSBjb25kaXRpb24gY291bnRzIGFzIG5v
IGNvbmRpdGlvbiB3aGljaCBpcyBlcXVpdmFsZW50IHRvICJ0cnVlIi4KLSAgICBpZiAoYnJlYWtJ
dC0+c2Vjb25kLmNvbmRpdGlvbi5pc0VtcHR5KCkpCisgICAgaWYgKGJyZWFrc1ZlY3Rvci5hdChp
KS5jb25kaXRpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIEpTVmFs
dWUgZXhjZXB0aW9uOwotICAgIEpTVmFsdWUgcmVzdWx0ID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5l
dmFsdWF0ZShzdHJpbmdUb1VTdHJpbmcoYnJlYWtJdC0+c2Vjb25kLmNvbmRpdGlvbiksIGV4Y2Vw
dGlvbik7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmV2YWx1YXRl
KHN0cmluZ1RvVVN0cmluZyhicmVha3NWZWN0b3IuYXQoaSkuY29uZGl0aW9uKSwgZXhjZXB0aW9u
KTsKICAgICBpZiAoZXhjZXB0aW9uKSB7CiAgICAgICAgIC8vIEFuIGVycm9uZW91cyBjb25kaXRp
b24gY291bnRzIGFzICJmYWxzZSIuCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0NywyMCAr
NDI3LDIwIEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRnVuY3Rpb25Ub0xpc3Rl
bmVycyhKYXZhU2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2sKICAgICBtX2NhbGxpbmdMaXN0ZW5lcnMg
PSBmYWxzZTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y3JlYXRlQ2FsbEZyYW1lQW5k
UGF1c2VJZk5lZWRlZChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUs
IGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OmNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIs
IGludCBjb2x1bW5OdW1iZXIpCiB7Ci0gICAgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbihPcmRp
bmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZp
cnN0KCkpOworICAgIFRleHRQb3NpdGlvbiB0ZXh0UG9zaXRpb24oT3JkaW5hbE51bWJlcjo6ZnJv
bU9uZUJhc2VkSW50KGxpbmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyOjpmcm9tWmVyb0Jhc2VkSW50
KGNvbHVtbk51bWJlcikpOwogICAgIG1fY3VycmVudENhbGxGcmFtZSA9IEphdmFTY3JpcHRDYWxs
RnJhbWU6OmNyZWF0ZShkZWJ1Z2dlckNhbGxGcmFtZSwgbV9jdXJyZW50Q2FsbEZyYW1lLCBzb3Vy
Y2VJRCwgdGV4dFBvc2l0aW9uKTsKICAgICBwYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1l
LmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVw
ZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRl
YnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lk
IFNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0
IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIEFTU0VSVChtX2N1cnJl
bnRDYWxsRnJhbWUpOwogICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQogICAgICAgICByZXR1
cm47CiAKLSAgICBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21P
bmVCYXNlZEludChsaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcjo6Zmlyc3QoKSk7CisgICAgVGV4
dFBvc2l0aW9uIHRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGlu
ZU51bWJlciksIE9yZGluYWxOdW1iZXI6OmZyb21aZXJvQmFzZWRJbnQoY29sdW1uTnVtYmVyKSk7
CiAgICAgbV9jdXJyZW50Q2FsbEZyYW1lLT51cGRhdGUoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJj
ZUlELCB0ZXh0UG9zaXRpb24pOwogICAgIHBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUu
ZHluYW1pY0dsb2JhbE9iamVjdCgpKTsKIH0KQEAgLTM5OSwyNCArNDc5LDI0IEBAIHZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnBhdXNlSWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9i
YWxPYmplY3QpCiAgICAgbV9wYXVzZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6Y2FsbEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFt
ZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6Y2FsbEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFt
ZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQog
ewogICAgIGlmICghbV9wYXVzZWQpCi0gICAgICAgIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZO
ZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICAgICAg
Y3JlYXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNl
SUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OmF0U3RhdGVtZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFt
ZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQordm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6YXRTdGF0ZW1lbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZy
YW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIp
CiB7CiAgICAgaWYgKCFtX3BhdXNlZCkKLSAgICAgICAgdXBkYXRlQ2FsbEZyYW1lQW5kUGF1c2VJ
Zk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIpOworICAgICAg
ICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3Vy
Y2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6cmV0dXJuRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZy
YW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpyZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxs
RnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
cikKIHsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUNh
bGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5l
TnVtYmVyKTsKKyAgICB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2Fs
bEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIAogICAgIC8vIGRl
dGFjaCBtYXkgaGF2ZSBiZWVuIGNhbGxlZCBkdXJpbmcgcGF1c2VJZk5lZWRlZAogICAgIGlmICgh
bV9jdXJyZW50Q2FsbEZyYW1lKQpAQCAtNDI4LDcgKzUwOCw3IEBAIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnJldHVybkV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxG
cmFtZSwKICAgICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxl
cigpOwogfQogCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpleGNlcHRpb24oY29uc3QgRGVidWdn
ZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIsIGJvb2wgaGFzSGFuZGxlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmV4Y2Vw
dGlvbihjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90
IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgYm9vbCBoYXNIYW5k
bGVyKQogewogICAgIGlmIChtX3BhdXNlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDM2LDIxICs1
MTYsMjEgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2Vy
Q2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW4KICAgICBpZiAobV9wYXVzZU9uRXhjZXB0
aW9uc1N0YXRlID09IFBhdXNlT25BbGxFeGNlcHRpb25zIHx8IChtX3BhdXNlT25FeGNlcHRpb25z
U3RhdGUgPT0gUGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9ucyAmJiAhaGFzSGFuZGxlcikpCiAgICAg
ICAgIG1fcGF1c2VPbk5leHRTdGF0ZW1lbnQgPSB0cnVlOwogCi0gICAgdXBkYXRlQ2FsbEZyYW1l
QW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQsIGxpbmVOdW1iZXIp
OworICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoZGVidWdnZXJDYWxsRnJhbWUs
IHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogfQogCi12b2lkIFNjcmlwdERl
YnVnU2VydmVyOjp3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRl
YnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2b2lk
IFNjcmlwdERlYnVnU2VydmVyOjp3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxs
RnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7CiAgICAgaWYgKCFtX3BhdXNlZCkKLSAgICAgICAgY3Jl
YXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQs
IGxpbmVOdW1iZXIpOworICAgICAgICBjcmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRl
YnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKIH0K
IAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdn
ZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpCit2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaWRFeGVjdXRlUHJvZ3JhbShjb25z
dCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAobV9wYXVzZWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQo
ZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVDYWxs
RnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyKTsKIAogICAgIC8vIFRyZWF0IHN0ZXBwaW5nIG92ZXIgdGhlIGVu
ZCBvZiBhIHByb2dyYW0gbGlrZSBzdGVwcGluZyBvdXQuCiAgICAgaWYgKG1fY3VycmVudENhbGxG
cmFtZSA9PSBtX3BhdXNlT25DYWxsRnJhbWUpCkBAIC00NTgsMTMgKzUzOCwxMyBAQCB2b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFt
ZSYgZGVidWdnZXJDYWxsRgogICAgIG1fY3VycmVudENhbGxGcmFtZSA9IG1fY3VycmVudENhbGxG
cmFtZS0+Y2FsbGVyKCk7CiB9CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlYWNoQnJl
YWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0
cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKK3ZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRp
ZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJh
bWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikK
IHsKICAgICBpZiAobV9wYXVzZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGF1c2VPbk5l
eHRTdGF0ZW1lbnQgPSB0cnVlOwotICAgIHVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQo
ZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lTnVtYmVyKTsKKyAgICB1cGRhdGVDYWxs
RnJhbWVBbmRQYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21w
aWxlQWxsSlNGdW5jdGlvbnNTb29uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IDg0ZmJhNWM2NzhmYzcyNWRmMjg2MmVlOWZmM2JlNjUx
ODQxMjFhYTYuLjkzNTkxNGM2YjQxOGRjM2ZhMzYzMzc4NzQyNjI1NzVhNWFhZDg1ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMTIz
LDIyICsxMjMsMjYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZGlzcGF0Y2hEaWRQYXJzZVNvdXJj
ZShjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzLCBKU0M6OlNvdXJjZVByb3ZpZGVyKiwgYm9v
bCBpc0NvbnRlbnRTY3JpcHQpOwogICAgIHZvaWQgZGlzcGF0Y2hGYWlsZWRUb1BhcnNlU291cmNl
KGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQg
ZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAKLSAgICB2b2lkIGNyZWF0
ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYs
IGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7Ci0gICAgdm9pZCB1cGRhdGVDYWxs
RnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRw
dHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOworICAgIHZvaWQgY3JlYXRlQ2FsbEZyYW1l
QW5kUGF1c2VJZk5lZWRlZChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qg
c291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2b2lkIHVw
ZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFt
ZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7
CiAgICAgdm9pZCBwYXVzZUlmTmVlZGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9i
YWxPYmplY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaChKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpTb3VyY2VQcm92aWRlciosIGludCBlcnJvckxpbmUsIGNvbnN0IEpTQzo6VVN0cmluZyYgZXJy
b3JNc2cpOwotICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNh
bGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7Ci0gICAgdmlydHVh
bCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJf
dCBzb3VyY2VJRCwgaW50IGZpcnN0TGluZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJldHVybkV2ZW50
KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpOwotICAgIHZpcnR1YWwgdm9pZCBleGNlcHRpb24oY29uc3QgSlNDOjpEZWJ1Z2dl
ckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwgYm9vbCBoYXNI
YW5kbGVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6
RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubyk7Ci0gICAg
dmlydHVhbCB2b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJh
bWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubyk7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZFJlYWNoQnJlYWtwb2ludChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qg
c291cmNlSUQsIGludCBsaW5lbm8pOwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPGxvbmcsIFNjcmlw
dEJyZWFrcG9pbnQ+IExpbmVUb0JyZWFrcG9pbnRNYXA7CisgICAgdmlydHVhbCB2b2lkIGNhbGxF
dmVudChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgYXRTdGF0
ZW1lbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgZmlyc3RMaW5lLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmV0dXJu
RXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGV4Y2Vw
dGlvbihjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpOworICAgIHZp
cnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFt
ZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRXhlY3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxG
cmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1uTnVtYmVyKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhY2hCcmVha3BvaW50KGNvbnN0IEpTQzo6RGVidWdnZXJD
YWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubywgaW50IGNvbHVtbk51bWJl
cik7CisKKworICAgIHZvaWQgdXBkYXRlQ3VycmVudFN0YXRlbWVudFBvc2l0aW9uKGludHB0cl90
LCBpbnQpOworCisgICAgdHlwZWRlZiBWZWN0b3I8U2NyaXB0QnJlYWtwb2ludD4gQnJlYWtwb2lu
dHNJbkxpbmU7CisgICAgdHlwZWRlZiBIYXNoTWFwPGxvbmcsIEJyZWFrcG9pbnRzSW5MaW5lPiBM
aW5lVG9CcmVha3BvaW50TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnRwdHJfdCwgTGluZVRv
QnJlYWtwb2ludE1hcD4gU291cmNlSWRUb0JyZWFrcG9pbnRzTWFwOwogCiAgICAgYm9vbCBtX2Nh
bGxpbmdMaXN0ZW5lcnM7CkBAIC0xNTEsNiArMTU1LDEwIEBAIHByb3RlY3RlZDoKICAgICBSZWZQ
dHI8SmF2YVNjcmlwdENhbGxGcmFtZT4gbV9jdXJyZW50Q2FsbEZyYW1lOwogICAgIFNvdXJjZUlk
VG9CcmVha3BvaW50c01hcCBtX3NvdXJjZUlkVG9CcmVha3BvaW50czsKICAgICBUaW1lcjxTY3Jp
cHREZWJ1Z1NlcnZlcj4gbV9yZWNvbXBpbGVUaW1lcjsKKworICAgIFZlY3RvcjxTdHJpbmc+IG1f
Y3VycmVudFNvdXJjZUNvZGU7CisgICAgaW50cHRyX3QgbV9jdXJyZW50U291cmNlSUQ7CisgICAg
U2NyaXB0QnJlYWtwb2ludCBtX2N1cnJlbnRTdGF0ZW1lbnRQb3NpdGlvbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViU2NyaXB0RGVidWdnZXIuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0
RGVidWdnZXIuaAppbmRleCA3ODRhODAyOTRiNmM4Zjc2YzQ2OTQ4MmE0Njg4NDI5ZGMyZDhkYjBi
Li5iNTUxZjdkYzg3NTg4ZGU5YjQ1YzlmZDA0YzUyMDNjNjlhY2JmNDNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLmgKKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJTY3JpcHREZWJ1Z2dlci5oCkBAIC01NCwxMyArNTQsMTMg
QEAgcHVibGljOgogICAgIHZvaWQgaW5pdEdsb2JhbENhbGxGcmFtZShjb25zdCBKU0M6OkRlYnVn
Z2VyQ2FsbEZyYW1lJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpTb3VyY2VQcm92aWRlciosIGludCBlcnJvckxpbmUsIGNvbnN0IEpTQzo6
VVN0cmluZyYgZXJyb3JNc2cpOwotICAgIHZpcnR1YWwgdm9pZCBjYWxsRXZlbnQoY29uc3QgSlND
OjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7
Ci0gICAgdmlydHVhbCB2b2lkIGF0U3RhdGVtZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJh
bWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOwotICAgIHZpcnR1YWwgdm9p
ZCByZXR1cm5FdmVudChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291
cmNlSUQsIGludCBsaW5lTnVtYmVyKTsKLSAgICB2aXJ0dWFsIHZvaWQgZXhjZXB0aW9uKGNvbnN0
IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1i
ZXIsIGJvb2wgaGFzSGFuZGxlcik7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxFeGVjdXRlUHJvZ3Jh
bShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBs
aW5lbm8pOwotICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6OkRl
YnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pOwotICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFt
ZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2Fs
bEV2ZW50KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwg
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOworICAgIHZpcnR1YWwgdm9pZCBhdFN0
YXRlbWVudChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmV0
dXJuRXZlbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CisgICAgdmlydHVhbCB2b2lkIGV4
Y2VwdGlvbihjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQs
IGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpOworICAg
IHZpcnR1YWwgdm9pZCB3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxG
cmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1ubm8pOworICAg
IHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZy
YW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8sIGludCBjb2x1bW5ubyk7CisgICAg
dmlydHVhbCB2b2lkIGRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZy
YW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8sIGludCBjb2x1bW5ubyk7CiAKICAg
ICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSBjb25zdCB7IHJldHVybiBtX2ds
b2JhbE9iamVjdC5nZXQoKTsgfQogICAgIFdlYlNjcmlwdENhbGxGcmFtZSAqZ2xvYmFsQ2FsbEZy
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9nbG9iYWxDYWxsRnJhbWUuZ2V0KCk7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdnZXIubW0gYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnZ2VyLm1tCmluZGV4IDY1ZjQxYzg5
YWEyZGQzM2NkMGNhZWEzNjRlYzIyNWEyN2Y2OGQ4YjQuLjRmZmU3MjViOGFmYTMyOTYwZjRhYzg1
ODQ5ZjQ3MTUwOTVjYjk0ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViU2NyaXB0RGVidWdnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJT
Y3JpcHREZWJ1Z2dlci5tbQpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgV2ViU2NyaXB0RGVidWdn
ZXI6OnNvdXJjZVBhcnNlZChFeGVjU3RhdGUqIGV4ZWMsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQ
cm92CiAgICAgbV9jYWxsaW5nRGVsZWdhdGUgPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJTY3JpcHRE
ZWJ1Z2dlcjo6Y2FsbEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxG
cmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyKQordm9pZCBXZWJTY3JpcHRE
ZWJ1Z2dlcjo6Y2FsbEV2ZW50KGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxG
cmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
KQogewogICAgIGlmIChtX2NhbGxpbmdEZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTYx
LDcgKzE2MSw3IEBAIHZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OmNhbGxFdmVudChjb25zdCBEZWJ1
Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGluCiAgICAgbV9jYWxsaW5nRGVsZWdh
dGUgPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6YXRTdGF0ZW1lbnQoY29u
c3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJ
RCwgaW50IGxpbmVOdW1iZXIpCit2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjphdFN0YXRlbWVudChj
b25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJj
ZUlELCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAobV9jYWxs
aW5nRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lkIFdl
YlNjcmlwdERlYnVnZ2VyOjphdFN0YXRlbWVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVi
dWdnZXJDYWxsRnJhbWUsCiAgICAgbV9jYWxsaW5nRGVsZWdhdGUgPSBmYWxzZTsKIH0KIAotdm9p
ZCBXZWJTY3JpcHREZWJ1Z2dlcjo6cmV0dXJuRXZlbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUm
IGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCit2
b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpyZXR1cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFt
ZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlcikKIHsKICAgICBpZiAobV9jYWxsaW5nRGVsZWdhdGUpCiAgICAgICAg
IHJldHVybjsKQEAgLTIwMiw3ICsyMDIsNyBAQCB2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpyZXR1
cm5FdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsCiAgICAg
bV9jYWxsaW5nRGVsZWdhdGUgPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJTY3JpcHREZWJ1Z2dlcjo6
ZXhjZXB0aW9uKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50
cHRyX3Qgc291cmNlSUQsIGludCBsaW5lTnVtYmVyLCBib29sIGhhc0hhbmRsZXIpCit2b2lkIFdl
YlNjcmlwdERlYnVnZ2VyOjpleGNlcHRpb24oY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVn
Z2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1
bW5OdW1iZXIsIGJvb2wgaGFzSGFuZGxlcikKIHsKICAgICBpZiAobV9jYWxsaW5nRGVsZWdhdGUp
CiAgICAgICAgIHJldHVybjsKQEAgLTIyNCwxNyArMjI0LDE3IEBAIHZvaWQgV2ViU2NyaXB0RGVi
dWdnZXI6OmV4Y2VwdGlvbihjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJh
bWUsIGluCiAgICAgbV9jYWxsaW5nRGVsZWdhdGUgPSBmYWxzZTsKIH0KIAotdm9pZCBXZWJTY3Jp
cHREZWJ1Z2dlcjo6d2lsbEV4ZWN1dGVQcm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBk
ZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pCit2b2lkIFdl
YlNjcmlwdERlYnVnZ2VyOjp3aWxsRXhlY3V0ZVByb2dyYW0oY29uc3QgRGVidWdnZXJDYWxsRnJh
bWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVubywgaW50
IGNvbHVtbm5vKQogewotICAgIGNhbGxFdmVudChkZWJ1Z2dlckNhbGxGcmFtZSwgc291cmNlSUQs
IGxpbmVubyk7CisgICAgY2FsbEV2ZW50KGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGlu
ZW5vLCBjb2x1bW5ubyk7CiB9CiAKLXZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OmRpZEV4ZWN1dGVQ
cm9ncmFtKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgaW50cHRy
X3Qgc291cmNlSUQsIGludCBsaW5lbm8pCit2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpkaWRFeGVj
dXRlUHJvZ3JhbShjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGlu
dHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vLCBpbnQgY29sdW1ubm8pCiB7Ci0gICAgcmV0dXJu
RXZlbnQoZGVidWdnZXJDYWxsRnJhbWUsIHNvdXJjZUlELCBsaW5lbm8pOworICAgIHJldHVybkV2
ZW50KGRlYnVnZ2VyQ2FsbEZyYW1lLCBzb3VyY2VJRCwgbGluZW5vLCBjb2x1bW5ubyk7CiB9CiAK
LXZvaWQgV2ViU2NyaXB0RGVidWdnZXI6OmRpZFJlYWNoQnJlYWtwb2ludChjb25zdCBEZWJ1Z2dl
ckNhbGxGcmFtZSYsIGludHB0cl90LCBpbnQpCit2b2lkIFdlYlNjcmlwdERlYnVnZ2VyOjpkaWRS
ZWFjaEJyZWFrcG9pbnQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCwgaW50LCBp
bnQpCiB7CiAgICAgcmV0dXJuOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>