<?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>78028</bug_id>
          
          <creation_ts>2012-02-07 13:27:49 -0800</creation_ts>
          <short_desc>Decouple scrollbar painting from Scrollbar object</short_desc>
          <delta_ts>2012-03-01 15:36:39 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>78872</blocked>
    
    <blocked>79137</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Peter Kotwicz">pkotwicz</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>gustavo</cc>
    
    <cc>jamesr</cc>
    
    <cc>pkotwicz</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>trchen</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>551304</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-07 13:27:49 -0800</bug_when>
    <thetext>Decouple scrollbar painting from Scrollbar object</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551310</commentid>
    <comment_count>1</comment_count>
      <attachid>125913</attachid>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-07 13:29:31 -0800</bug_when>
    <thetext>Created attachment 125913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551316</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-07 13:31:51 -0800</bug_when>
    <thetext>Attachment 125913 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1

Source/WebCore/platform/chromium/ScrollbarThemePainterChromiumLinux.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/platform/chromium/ScrollbarThemePainterChromiumLinux.h:50:  One space before end of line comments  [whitespace/comments] [5]
Source/WebCore/WebCore.gypi:2950:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/WebCore.gypi:2951:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/WebCore.gypi:2952:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/WebCore.gypi:2953:  Line contains tab character.  [whitespace/tab] [5]
Source/WebCore/platform/chromium/ScrollbarThemePainterChromium.h:37:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/chromium/ScrollbarThemePainterChromium.h:45:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/platform/chromium/ScrollbarThemePainterChromium.h:46:  More than one command on the same line  [whitespace/newline] [4]
Source/WebCore/platform/chromium/ScrollbarThemePainterChromium.h:53:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/chromium/ScrollbarThemePainterChromium.h:68:  The parameter name &quot;scrollbar&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/chromium/ScrollbarThemePainterChromium.h:69:  The parameter name &quot;scrollbar&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/chromium/ScrollbarThemePainterChromiumLinux.cpp:35:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/chromium/ScrollbarPaintData.cpp:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebCore/platform/chromium/ScrollbarPaintData.cpp:41:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WebCore/platform/chromium/ScrollbarThemeChromium.h:44:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/chromium/ScrollbarPaintData.h:29:  Header file should not contain WebCore config.h. Should be: alphabetically sorted.  [build/include_order] [4]
Source/WebCore/platform/chromium/ScrollbarPaintData.h:42:  The parameter name &quot;orientation&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/chromium/ScrollbarPaintData.h:42:  The parameter name &quot;controlSize&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 19 in 12 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>551481</commentid>
    <comment_count>3</comment_count>
      <attachid>125913</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-07 15:42:05 -0800</bug_when>
    <thetext>Comment on attachment 125913
Patch

Title says &quot;not for review&quot;, so I guess it&apos;s not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552294</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-08 10:58:04 -0800</bug_when>
    <thetext>This comes with a test case. What is the bug that&apos;s being fixed? The title sounds like refactoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554523</commentid>
    <comment_count>5</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-10 17:48:13 -0800</bug_when>
    <thetext>(CCing andersca, as I&apos;m not sure how this intersects with the ScrollTree work and also wonder if &quot;drawing scrollbars from another thread&quot; is a concern for Safari too.)

Peter, sorry for not giving you feedback on this sooner.

Separating out painting code at the ScrollbarThemeChromium level doesn&apos;t feel like the right place to put this abstraction.  It&apos;s right in the middle of a virtual inheritance hierarchy, so it&apos;s awkward to have some functions branch off into the *Painter class that takes ScrollbarData, but still have a whole bunch of virtual functions in base classes that take Scrollbar*.

Talking out loud, the goal here is to be able to draw scrollbars (with adjustable scroll positions) from a separate thread, sharing as much painting logic from ScrollbarTheme as possible.

Just holding a reference back to an existing ScrollBar isn&apos;t quite right, because we want to be able to have that other thread 
manipulate the scroll position independently and draw it, without messing with the actual Scrollbar.  Duplicating the Scrollbar itself seems like too much to reconstruct.  Scrollbar itself has-a ScrollableArea and is-a Widget which has-a ScrollView.  That&apos;d be a lot to try to duplicate.

I wonder if a better approach would be to go a little bit deeper than you&apos;re going and get all ScrollbarTheme-derived classes to operate on some other abstraction than Scrollbar.  The theme classes are already functional classes, so they just need something that conforms to a Scrollbar-like interface rather than directly using Scrollbar.  In other words, create some interface that both Scrollbar and ScrollbarData could implement and have all the Scrollbar theme code operate on that instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556577</commentid>
    <comment_count>6</comment_count>
      <attachid>127039</attachid>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-14 14:02:58 -0800</bug_when>
    <thetext>Created attachment 127039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556583</commentid>
    <comment_count>7</comment_count>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-14 14:08:42 -0800</bug_when>
    <thetext>I decided to split this up into the create of the ScrollbarThemeClient interfaces and their use.
The ScrollbarThemeClient class should have all the member functions required for using the interface in the ScrollbarTheme class on all platforms.

I added m_client as a member variable of ScrollbarPainter because mac registers the ScrollbarThemeClient* during ScrollbarTheme::register() and keeps a pointer inside the ScrollbarTheme class.

I know that ScrollbarThemeClientImpl is a terrible name, do you have any suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556635</commentid>
    <comment_count>8</comment_count>
      <attachid>127039</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-14 14:50:26 -0800</bug_when>
    <thetext>Comment on attachment 127039
Patch

Attachment 127039 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11521415</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556664</commentid>
    <comment_count>9</comment_count>
      <attachid>127039</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-14 15:16:21 -0800</bug_when>
    <thetext>Comment on attachment 127039
Patch

Attachment 127039 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11514460</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556788</commentid>
    <comment_count>10</comment_count>
      <attachid>127039</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-14 17:09:54 -0800</bug_when>
    <thetext>Comment on attachment 127039
Patch

Attachment 127039 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11522465</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557311</commentid>
    <comment_count>11</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-15 09:02:03 -0800</bug_when>
    <thetext>(In reply to comment #7)

&gt; I know that ScrollbarThemeClientImpl is a terrible name, do you have any suggestions?

Is it possible to drop the class entirely and have Scrollbar implement the ScrollbarThemeClient interface? I think this would also eliminate the need for m_client and a number of other code changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557558</commentid>
    <comment_count>12</comment_count>
      <attachid>127239</attachid>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-15 14:37:00 -0800</bug_when>
    <thetext>Created attachment 127239
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557684</commentid>
    <comment_count>13</comment_count>
      <attachid>127239</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-15 16:00:57 -0800</bug_when>
    <thetext>Comment on attachment 127239
Patch

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

&gt; Source/WebCore/platform/Scrollbar.cpp:556
&gt; +PassOwnPtr&lt;Vector&lt;IntRect&gt; &gt; Scrollbar::getTickmarks() const

Can you keep the same signature as ScrollableArea::getTickmarks? There&apos;s no need to wrap a Vector in an OwnPtr here.

&gt; Source/WebCore/platform/Widget.h:131
&gt; +    virtual int x() const { return frameRect().x(); }
&gt; +    virtual int y() const { return frameRect().y(); }
&gt; +    virtual int width() const { return frameRect().width(); }
&gt; +    virtual int height() const { return frameRect().height(); }
&gt; +    virtual IntSize size() const { return frameRect().size(); }
&gt; +    virtual IntPoint location() const { return frameRect().location(); }

I think you should revert these and other virtual modifications you made to Widget.h.  They&apos;re not necessary if you&apos;re going to explicitly thunk back to them in Scrollbar.

&gt; Source/WebCore/rendering/RenderScrollbar.h:42
&gt; +class RenderScrollbar : public Scrollbar,
&gt; +                        public RenderScrollbarThemeClient {

This is an awkward inheritance hierarchy that forces you to redeclare virtuals from Scrollbar because it includes ScrollbarThemeClient from two different ancestors.

Honestly, I would prefer to punt on RenderScrollbar.  ScrollbarThemeClient is a small bag of data and ScrollbarTheme is a set of functions to to process that.  To serialize Scrollbar into a new ScrollbarData class (that implements ScrollbarThemeClient) is trivial, as you had done in your previous patch.  Doing something like that for RenderScrollbar, which is made up of RenderScrollbarPart (which is-a RenderBlock) is much less so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557763</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-02-15 17:25:06 -0800</bug_when>
    <thetext>What does [Not For Review] in the title of the bug mean at this point? In fact, I&apos;m never sure what it means when in bug title, not in patch name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557796</commentid>
    <comment_count>15</comment_count>
      <attachid>127239</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-15 18:19:35 -0800</bug_when>
    <thetext>Comment on attachment 127239
Patch

Attachment 127239 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11528866</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557816</commentid>
    <comment_count>16</comment_count>
      <attachid>127239</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-15 18:52:12 -0800</bug_when>
    <thetext>Comment on attachment 127239
Patch

Attachment 127239 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11530855</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557829</commentid>
    <comment_count>17</comment_count>
      <attachid>127239</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-15 19:13:19 -0800</bug_when>
    <thetext>Comment on attachment 127239
Patch

Attachment 127239 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11528880</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558086</commentid>
    <comment_count>18</comment_count>
      <attachid>127239</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-16 04:55:45 -0800</bug_when>
    <thetext>Comment on attachment 127239
Patch

Attachment 127239 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11536169</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558410</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-16 11:53:41 -0800</bug_when>
    <thetext>Attachment 127239 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: dataTransfer.types (HTML5 drag &amp; drop) should return DOMStringList
Using index info to reconstruct a base tree...
&lt;stdin&gt;:84: trailing whitespace.
        
&lt;stdin&gt;:333: trailing whitespace.
&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;
&lt;stdin&gt;:334: trailing whitespace.
 width=&quot;300&quot; height=&quot;300&quot; onload=&quot;runRepaintTest()&quot;&gt;
&lt;stdin&gt;:335: trailing whitespace.
&lt;script xlink:href=&quot;../../fast/repaint/resources/repaint.js&quot; /&gt;
&lt;stdin&gt;:336: trailing whitespace.
&lt;script&gt;&lt;![CDATA[
warning: squelched 16 whitespace errors
warning: 21 lines add whitespace errors.
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/chromium/test_expectations.txt
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 dataTransfer.types (HTML5 drag &amp; drop) should return DOMStringList

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559322</commentid>
    <comment_count>20</comment_count>
      <attachid>127611</attachid>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-17 10:45:31 -0800</bug_when>
    <thetext>Created attachment 127611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559455</commentid>
    <comment_count>21</comment_count>
      <attachid>127611</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-17 13:03:07 -0800</bug_when>
    <thetext>Comment on attachment 127611
Patch

Awesome.  Can you also then change all the ScrollbarTheme classes to use this interface instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559506</commentid>
    <comment_count>22</comment_count>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-17 13:52:36 -0800</bug_when>
    <thetext>Definitely, however, I would rather change all the ScrollbarThemes to use the interface in a separate patch. (To make the addition of new methods and a simple rename really clear)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559534</commentid>
    <comment_count>23</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-17 14:15:54 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; Definitely, however, I would rather change all the ScrollbarThemes to use the interface in a separate patch. (To make the addition of new methods and a simple rename really clear)

If you don&apos;t mind, I&apos;d prefer it to be the same patch, so you could be sure that everything you needed to wrap in ScrollbarThemeClient was actually there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561159</commentid>
    <comment_count>24</comment_count>
      <attachid>128027</attachid>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-21 12:59:17 -0800</bug_when>
    <thetext>Created attachment 128027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561165</commentid>
    <comment_count>25</comment_count>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-21 13:07:34 -0800</bug_when>
    <thetext>Changes to ScrollbarTheme*.h / ScrollbarTheme*.cpp

Replaced Scrollbar* with ScrollbarThemeClient*
Replaced -&gt;scrollableArea()-&gt;getTickmarks( with -&gt;getTickmarks(
Replaced -&gt;scrollableArea()-&gt;isActive() with -&gt;isScrollableAreaActive()
Replaced -&gt;scrollableArea()-&gt;scrollbarOverlayStyle() with 
                                -&gt;scrollbarOverlayStyle()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561192</commentid>
    <comment_count>26</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-21 13:53:11 -0800</bug_when>
    <thetext>pkotwicz: Can you fix the mac build errors?

cc1plus: warnings being treated as errors
In file included from /Volumes/Data/WebKit/Source/WebCore/platform/Scrollbar.h:29,
                 from /Volumes/Data/WebKit/Source/WebCore/platform/ScrollView.h:31,
                 from /Volumes/Data/WebKit/Source/WebCore/page/FrameView.h:32,
                 from /Volumes/Data/WebKit/Source/WebCore/dom/MouseEvent.cpp:29:
/Volumes/Data/WebKit/Source/WebCore/platform/ScrollbarThemeClient.h:40: warning: &apos;class WebCore::ScrollbarThemeClient&apos; has virtual functions but non-virtual destructor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561328</commentid>
    <comment_count>27</comment_count>
      <attachid>128027</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-21 16:09:16 -0800</bug_when>
    <thetext>Comment on attachment 128027
Patch

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

&gt; Source/WebCore/platform/Scrollbar.h:64
&gt; +    virtual ScrollbarOrientation orientation() const { return m_orientation; }

please group the virtual overrides for ScrollbarThemeClient together and document what interface they are implementing (this file is not a great example of this pattern, but other files have a comment saying something like &quot;// ScrollbarThemeClient implementation.&quot; at the top of a block of virtuals).

&gt; Source/WebCore/platform/ScrollbarThemeClient.h:2
&gt; + * Copyright (C) 2011 Google Inc. All rights reserved.

it&apos;s 2012 now

&gt; Source/WebCore/platform/mac/ScrollbarThemeMac.h:29
&gt; +#include &quot;Scrollbar.h&quot;

is this #include needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561990</commentid>
    <comment_count>28</comment_count>
      <attachid>128216</attachid>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-22 08:02:44 -0800</bug_when>
    <thetext>Created attachment 128216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562134</commentid>
    <comment_count>29</comment_count>
      <attachid>128245</attachid>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-22 10:45:07 -0800</bug_when>
    <thetext>Created attachment 128245
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563174</commentid>
    <comment_count>30</comment_count>
      <attachid>128488</attachid>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-23 09:48:21 -0800</bug_when>
    <thetext>Created attachment 128488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563208</commentid>
    <comment_count>31</comment_count>
      <attachid>128488</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-23 10:25:33 -0800</bug_when>
    <thetext>Comment on attachment 128488
Patch

Attachment 128488 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11603336</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563217</commentid>
    <comment_count>32</comment_count>
      <attachid>128488</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-02-23 10:29:09 -0800</bug_when>
    <thetext>Comment on attachment 128488
Patch

Attachment 128488 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11574350</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563245</commentid>
    <comment_count>33</comment_count>
      <attachid>128502</attachid>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-23 10:46:45 -0800</bug_when>
    <thetext>Created attachment 128502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563448</commentid>
    <comment_count>34</comment_count>
      <attachid>128552</attachid>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-23 13:59:11 -0800</bug_when>
    <thetext>Created attachment 128552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563699</commentid>
    <comment_count>35</comment_count>
      <attachid>128605</attachid>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-23 16:54:58 -0800</bug_when>
    <thetext>Created attachment 128605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563706</commentid>
    <comment_count>36</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-23 16:57:13 -0800</bug_when>
    <thetext>(In reply to comment #35)
&gt; Created an attachment (id=128605) [details]
&gt; Patch

If you&apos;re going to upload a series of patches in a row, can you leave a comment as to why you&apos;re doing it or pass -m to webkit-patch upload with a patchset message to differentiate them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564119</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2012-02-24 02:12:31 -0800</bug_when>
    <thetext>Attachment 128605 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/platform/chromium/ScrollbarThemeChromiumMac.h:39:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/rendering/RenderScrollbarTheme.h:59:  The parameter name &quot;scrollbar&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/efl/ScrollbarThemeEfl.h:42:  The parameter name &quot;scrollbar&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/efl/ScrollbarThemeEfl.h:43:  The parameter name &quot;scrollbar&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/mac/ScrollbarThemeMac.h:45:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/ScrollbarThemeComposite.h:35:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/ScrollbarThemeComposite.h:61:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/ScrollbarThemeComposite.h:62:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/ScrollbarThemeComposite.h:63:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/ScrollbarThemeComposite.h:64:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/ScrollbarThemeComposite.h:65:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/ScrollbarThemeComposite.h:66:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/Scrollbar.h:96:  The parameter name &quot;e&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/ScrollbarTheme.h:84:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/ScrollbarTheme.h:109:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/ScrollbarTheme.h:110:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/Scrollbar.cpp:117:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 17 in 40 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>564718</commentid>
    <comment_count>38</comment_count>
      <attachid>128821</attachid>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-24 15:51:41 -0800</bug_when>
    <thetext>Created attachment 128821
Should make patch build with Safari</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564721</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-24 15:55:33 -0800</bug_when>
    <thetext>Attachment 128821 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/platform/chromium/ScrollbarThemeChromiumMac.h:39:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/rendering/RenderScrollbarTheme.h:59:  The parameter name &quot;scrollbar&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/efl/ScrollbarThemeEfl.h:42:  The parameter name &quot;scrollbar&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/efl/ScrollbarThemeEfl.h:43:  The parameter name &quot;scrollbar&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/mac/ScrollbarThemeMac.h:45:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/ScrollbarThemeComposite.h:35:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/ScrollbarThemeComposite.h:61:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/ScrollbarThemeComposite.h:62:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/ScrollbarThemeComposite.h:63:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/ScrollbarThemeComposite.h:64:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/ScrollbarThemeComposite.h:65:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/ScrollbarThemeComposite.h:66:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/Scrollbar.h:96:  The parameter name &quot;e&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/platform/ScrollbarTheme.h:84:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/ScrollbarTheme.h:109:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/ScrollbarTheme.h:110:  Missing space inside { }.  [whitespace/braces] [5]
Source/WebCore/platform/Scrollbar.cpp:117:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 17 in 40 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>565012</commentid>
    <comment_count>40</comment_count>
      <attachid>128880</attachid>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-25 13:29:25 -0800</bug_when>
    <thetext>Created attachment 128880
Fixes style bugs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565957</commentid>
    <comment_count>41</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-27 14:02:25 -0800</bug_when>
    <thetext>This unofficially looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566972</commentid>
    <comment_count>42</comment_count>
      <attachid>128880</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-28 12:31:27 -0800</bug_when>
    <thetext>Comment on attachment 128880
Fixes style bugs

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

I think this looks pretty good.  Two comments below that will make this easier to understand fully.

&gt; Source/WebCore/platform/Scrollbar.cpp:115
&gt; +void Scrollbar::setFrameRect(const IntRect&amp; rect)

nit: would you mind not moving the defintions of this functions around in this .cpp in this patch? it makes it very hard to tell what code is actually changing and what is not

&gt; Source/WebCore/platform/ScrollbarThemeClient.h:42
&gt; +    virtual ~ScrollbarThemeClient() { }

Is it possible to make this d&apos;tor protected?  In other words, are there bits of code in the ScrollbarTheme classes relying on ScrollbarThemeClient pointers for lifetime management / ownership or do they simply need a view into the Scrollbar&apos;s state?  I think if we can make this d&apos;tor protected it would be a big improvement to the general readability of the Scrollbar code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567105</commentid>
    <comment_count>43</comment_count>
      <attachid>129332</attachid>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-28 14:32:50 -0800</bug_when>
    <thetext>Created attachment 129332
Changes as per jamesr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567135</commentid>
    <comment_count>44</comment_count>
      <attachid>129332</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-02-28 15:05:00 -0800</bug_when>
    <thetext>Comment on attachment 129332
Changes as per jamesr

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

Awesome! This looks great, R=me.  There are two more issues to address before landing and I also think it&apos;s prudent to let the EWS bots go green just to be safe.

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

this will trigger an SVN presubmit check and barf. since this is a refactor and not a change of behavior you aren&apos;t required to add new tests, but you do have to delete this line. it would be great if you could instead provide a brief summary of the changes

&gt; Source/WebCore/ChangeLog:11
&gt; +        * WebCore.gypi:
&gt; +        * WebCore.xcodeproj/project.pbxproj:

can you also add this new header file to the other build systems we have? not all build systems list headers, but looking at references to ScrollbarTheme.h i think you will want to modify:

Source/WebCore/GNUmakefile.list.am
Source/WebCore/Target.pri
Source/WebCore/WebCore.vcproj/WebCore.vcproj</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568929</commentid>
    <comment_count>45</comment_count>
      <attachid>129747</attachid>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-03-01 14:32:33 -0800</bug_when>
    <thetext>Created attachment 129747
Build files for Win, GTK, and QT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568964</commentid>
    <comment_count>46</comment_count>
      <attachid>129747</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-01 15:16:34 -0800</bug_when>
    <thetext>Comment on attachment 129747
Build files for Win, GTK, and QT

Looks great, R=me! I&apos;ll do some sanity checks locally and land by hand since EWS is pretty janked up right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568986</commentid>
    <comment_count>47</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-01 15:36:39 -0800</bug_when>
    <thetext>Committed r109451: &lt;http://trac.webkit.org/changeset/109451&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125913</attachid>
            <date>2012-02-07 13:29:31 -0800</date>
            <delta_ts>2012-02-14 14:02:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78028-20120207162930.patch</filename>
            <type>text/plain</type>
            <size>49120</size>
            <attacher name="Peter Kotwicz">pkotwicz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjQ2MzllMmYxNzU1Mzc1
YzU3M2NkMmJhZGU4YjA4MDBjMjg2ZGUzNi4uZjQwNGYwMWVhM2FkMGEyMjc5ZTBmOWExYjM4NmJl
NjVmYmRhYzRkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDEyLTAyLTA3ICBQZXRl
ciBLb3R3aWN6ICA8cGtvdHdpY3pAZ29vZ2xlLmNvbT4KKworICAgICAgICBEZWNvdXBsZSBzY3Jv
bGxiYXIgcGFpbnRpbmcgZnJvbSBTY3JvbGxiYXIgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODAyOAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clBhaW50RGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJQYWludERhdGE6OlNjcm9sbGJhclBhaW50RGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyUGFpbnREYXRhLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChTY3JvbGxiYXJQYWludERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyUGFpbnREYXRhOjp4KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclBh
aW50RGF0YTo6eSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJQYWludERhdGE6OndpZHRo
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclBhaW50RGF0YTo6aGVpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclBhaW50RGF0YTo6c2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJQYWludERhdGE6OmxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclBhaW50RGF0YTo6b3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
UGFpbnREYXRhOjpjdXJyZW50UG9zKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclBhaW50
RGF0YTo6dmlzaWJsZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyUGFpbnREYXRh
Ojp0b3RhbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyUGFpbnREYXRhOjptYXhp
bXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclBhaW50RGF0YTo6Y29udHJvbFNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyUGFpbnREYXRhOjpwcmVzc2VkUGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJQYWludERhdGE6OmhvdmVyZWRQYXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclBhaW50RGF0YTo6ZW5hYmxlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJQYWludERhdGE6OnRpY2ttYXJrcyk6CisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUNocm9taXVtOjpwYWludCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmg6CisgICAgICAg
IChTY3JvbGxiYXJUaGVtZUNocm9taXVtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRyYWNrUGllY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VGh1bWIpOgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lUGFpbnRlckNocm9taXVtLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lUGFpbnRlckNocm9taXVtOjp1c2VkVG90YWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lUGFpbnRlckNocm9taXVtOjpzcGxpdFRyYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lUGFpbnRlckNocm9taXVtOjp0aHVtYlBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUGFpbnRlckNocm9taXVtOjp0aHVtYkxlbmd0aCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVBhaW50ZXJDaHJvbWl1bTo6bWluaW11
bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUGFpbnRlckNo
cm9taXVtOjp0cmFja0xlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVBh
aW50ZXJDaHJvbWl1bTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVQ
YWludGVyQ2hyb21pdW06Omhhc1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lUGFpbnRlckNocm9taXVtOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZVBhaW50ZXJDaHJvbWl1bTo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW06OnRyYWNrUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVBhaW50ZXJDaHJvbWl1bTo6cGFpbnRUcmFj
a0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hy
b21pdW06OnBhaW50VGlja21hcmtzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZVBhaW50ZXJDaHJvbWl1bS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoU2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW06OlNjcm9sbGJhclRoZW1lUGFpbnRlckNo
cm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUGFpbnRlckNocm9taXVt
Ojp+U2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW06OnNjcm9sbGJhclRoaWNrbmVzcyk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVBhaW50ZXJDaHJvbWl1bTo6aGFzQnV0dG9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVBhaW50ZXJDaHJvbWl1bTo6cGFpbnRTY3Jv
bGxiYXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUGFpbnRl
ckNocm9taXVtOjpwYWludFRyYWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVQYWludGVyQ2hyb21pdW06OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lUGFpbnRlckNocm9taXVtOjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lUGFpbnRlckNocm9taXVtOjpjb25zdHJhaW5UcmFja1JlY3RUb1Ry
YWNrUGllY2VzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZVBh
aW50ZXJDaHJvbWl1bUxpbnV4LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW06
OnBhaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21p
dW1MaW51eDo6c2Nyb2xsYmFyVGhpY2tuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lUGFpbnRlckNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVBhaW50ZXJDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVBhaW50ZXJDaHJvbWl1bUxpbnV4Ojpw
YWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUGFpbnRlckNocm9t
aXVtTGludXg6OmJ1dHRvblNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVQ
YWludGVyQ2hyb21pdW1MaW51eDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZVBhaW50ZXJDaHJvbWl1bUxpbnV4Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW0uaC4KKyAgICAgICAgKFNjcm9sbGJhclRoZW1lUGFpbnRlckNocm9taXVtTGludXgpOgor
CiAyMDEyLTAyLTAzICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBTcGVjdWxhdGl2ZSB1bnJldmlld2VkIGJ1aWxkIGZpeCBmb3IgUXQtV2luZG93cwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDFjZDU2YmE4YjhkZThlNzYwYzA5NjhmODNmMTFiZDQwNGQ1NjM2YTQu
LjUxOTE0NzlkODNhZGIwOWFlNjM3ZmE4NDMxOGJmY2IxN2ZlOGIyMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTI5MzQsNiArMjkzNCw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
UG9wdXBMaXN0Qm94LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BvcHVwTWVu
dVByaXZhdGUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU1NMS2V5R2VuZXJh
dG9yQ2hyb21pdW0uY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxi
YXJQYWludERhdGEuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxi
YXJQYWludERhdGEuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwJywKQEAgLTI5NDQsNiArMjk0NiwxMCBAQAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMu
bW0nLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW1XaW4uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtV2luLmgnLAorCSAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVQ
YWludGVyQ2hyb21pdW0uY3BwJywKKwkgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lUGFpbnRlckNocm9taXVtLmgnLAorCSAgICAncGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVQYWludGVyQ2hyb21pdW1MaW51eC5jcHAnLAorCSAgICAncGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW1MaW51eC5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9jaHJvbWl1bS9TZWFyY2hQb3B1cE1lbnVDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2Nocm9taXVtL1NlYXJjaFBvcHVwTWVudUNocm9taXVtLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2Nocm9taXVtL1NoYXJlZFRpbWVyQ2hyb21pdW0uY3BwJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclBhaW50RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJQYWludERhdGEu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjFhN2YxMzQ3YjZkYjYzMTMzZDA4Y2U5MjI2Y2E4OTY1N2RhYWU0NTIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJQYWludERhdGEuY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiU2Ny
b2xsYmFyUGFpbnREYXRhLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2Nyb2xsYmFyUGFp
bnREYXRhOjpTY3JvbGxiYXJQYWludERhdGEoY29uc3QgSW50UmVjdCYgZnJhbWVSZWN0LCBTY3Jv
bGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgZmxvYXQgY3VycmVudFBvcywgaW50IHZpc2li
bGVTaXplLCBpbnQgdG90YWxTaXplLCBpbnQgbWF4aW11bSwgU2Nyb2xsYmFyQ29udHJvbFNpemUg
Y29udHJvbFNpemUsIFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQsIFNjcm9sbGJhclBhcnQgaG92
ZXJlZFBhcnQsIGJvb2wgZW5hYmxlZCwgUGFzc093blB0cjxWZWN0b3I8SW50UmVjdD4gPiB0aWNr
bWFya3MpCisgICAgOiBtX2ZyYW1lUmVjdChmcmFtZVJlY3QueCgpLCBmcmFtZVJlY3QueSgpLCBm
cmFtZVJlY3Qud2lkdGgoKSwgZnJhbWVSZWN0LmhlaWdodCgpKSwKKyAgICAgIG1fb3JpZW50YXRp
b24ob3JpZW50YXRpb24pLAorICAgICAgbV9jdXJyZW50UG9zKGN1cnJlbnRQb3MpLAorICAgICAg
bV92aXNpYmxlU2l6ZSh2aXNpYmxlU2l6ZSksCisgICAgICBtX3RvdGFsU2l6ZSh0b3RhbFNpemUp
LAorICAgICAgbV9tYXhpbXVtKG1heGltdW0pLAorICAgICAgbV9jb250cm9sU2l6ZShjb250cm9s
U2l6ZSksCisgICAgICBtX3ByZXNzZWRQYXJ0KHByZXNzZWRQYXJ0KSwKKyAgICAgIG1faG92ZXJl
ZFBhcnQoaG92ZXJlZFBhcnQpLAorICAgICAgbV9lbmFibGVkKGVuYWJsZWQpLAorICAgICAgbV90
aWNrbWFya3ModGlja21hcmtzKSB7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclBhaW50RGF0
YS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyUGFpbnREYXRh
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTJhOTU3ZjM1MGIzZWNiNzNlY2YyZDc5MWU4ZGE5NTM2MjIwNDVhYQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclBhaW50RGF0YS5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNjcm9sbGJh
clBhaW50RGF0YV9oCisjZGVmaW5lIFNjcm9sbGJhclBhaW50RGF0YV9oCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNp
bmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsYmFyUGFpbnRE
YXRhIHsKK3B1YmxpYzoKKyAgICBTY3JvbGxiYXJQYWludERhdGEoY29uc3QgSW50UmVjdCYgZnJh
bWVSZWN0LCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgZmxvYXQgY3VycmVudFBv
cywgaW50IHZpc2libGVTaXplLCBpbnQgdG90YWxTaXplLCBpbnQgbWF4aW11bSwgU2Nyb2xsYmFy
Q29udHJvbFNpemUgY29udHJvbFNpemUsIFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQsIFNjcm9s
bGJhclBhcnQgaG92ZXJlZFBhcnQsIGJvb2wgZW5hYmxlZCwgUGFzc093blB0cjxWZWN0b3I8SW50
UmVjdD4gPiB0aWNrbWFya3MpOworCisgICAgaW50IHgoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1l
UmVjdC54KCk7IH0KKyAgICBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZWN0LnkoKTsg
fQorICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZWN0LndpZHRoKCk7IH0K
KyAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZVJlY3QuaGVpZ2h0KCk7IH0K
KyAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lUmVjdC5zaXplKCk7IH0K
KyAgICBJbnRQb2ludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVSZWN0LmxvY2F0
aW9uKCk7IH0KKworICAgIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorCisgICAgZmxvYXQgY3VycmVudFBvcygpIGNvbnN0
IHsgcmV0dXJuIG1fY3VycmVudFBvczsgfQorICAgIGludCB2aXNpYmxlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmlzaWJsZVNpemU7IH0gCisgICAgaW50IHRvdGFsU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdG90YWxTaXplOyB9CisgICAgaW50IG1heGltdW0oKSBjb25zdCB7IHJldHVybiBtX21h
eGltdW07IH0gLy8gZG8gd2UgbmVlZCB0aGlzIHBhcmFtZXRlcj8KKyAgICBTY3JvbGxiYXJDb250
cm9sU2l6ZSBjb250cm9sU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbFNpemU7IH0KKwor
ICAgIFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXNzZWRQ
YXJ0OyB9CisgICAgU2Nyb2xsYmFyUGFydCBob3ZlcmVkUGFydCgpIGNvbnN0IHsgcmV0dXJuIG1f
aG92ZXJlZFBhcnQ7IH0KKworICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5h
YmxlZDsgfQorCisgICAgVmVjdG9yPEludFJlY3Q+KiB0aWNrbWFya3MoKSBjb25zdCB7IHJldHVy
biBtX3RpY2ttYXJrcy5nZXQoKTsgfSAKKworcHJpdmF0ZToKKyAgICBJbnRSZWN0IG1fZnJhbWVS
ZWN0OworICAgIFNjcm9sbGJhck9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247CisgICAgZmxvYXQg
bV9jdXJyZW50UG9zOworICAgIGludCBtX3Zpc2libGVTaXplOworICAgIGludCBtX3RvdGFsU2l6
ZTsKKyAgICBpbnQgbV9tYXhpbXVtOworICAgIFNjcm9sbGJhckNvbnRyb2xTaXplIG1fY29udHJv
bFNpemU7CisgICAgU2Nyb2xsYmFyUGFydCBtX3ByZXNzZWRQYXJ0OworICAgIFNjcm9sbGJhclBh
cnQgbV9ob3ZlcmVkUGFydDsKKyAgICBib29sIG1fZW5hYmxlZDsKKyAgICBPd25QdHI8VmVjdG9y
PEludFJlY3Q+ID4gbV90aWNrbWFya3M7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBTY3JvbGxiYXJQYWludERhdGFfaAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uY3BwCmlu
ZGV4IGY4Y2IyODE1NDg2MWUwMWRhNzExMjQ5MjBjNjBkMDZhMzdlOWExODMuLmQ5MmNlNmZlNjRk
YzdhMmY4ZGM1NTY1ZTMyYmM0ODhjMDYzZWI2Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uY3BwCkBA
IC0zMCw3ICszMCw5IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKKyNpbmNsdWRlICJT
Y3JvbGxiYXJQYWludERhdGEuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5o
IgorI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lUGFpbnRlckNocm9taXVtLmgiCiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCiAvLyBUaGlzIGZpbGUgY29udGFpbnMgc2Nyb2xsYmFyIHRoZW1lIGNv
ZGUgdGhhdCBpcyBjcm9zcyBwbGF0Zm9ybS4gQWRkaXRpb25hbApAQCAtMzksNiArNDEsMTQgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBh
aW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRhbWFnZVJlY3QpCit7CisgICAgT3duUHRyPFZlY3RvcjxJbnRSZWN0PiA+IHRp
Y2ttYXJrcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8SW50UmVjdD4pOworICAgIHNjcm9sbGJhci0+
c2Nyb2xsYWJsZUFyZWEoKS0+Z2V0VGlja21hcmtzKCp0aWNrbWFya3MuZ2V0KCkpOworICAgIFNj
cm9sbGJhclBhaW50RGF0YSBkYXRhKHNjcm9sbGJhci0+ZnJhbWVSZWN0KCksIHNjcm9sbGJhci0+
b3JpZW50YXRpb24oKSwgc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCksIHNjcm9sbGJhci0+dmlzaWJs
ZVNpemUoKSwgc2Nyb2xsYmFyLT50b3RhbFNpemUoKSwgc2Nyb2xsYmFyLT5tYXhpbXVtKCksIHNj
cm9sbGJhci0+Y29udHJvbFNpemUoKSwgc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpLCBzY3JvbGxi
YXItPmhvdmVyZWRQYXJ0KCksIHNjcm9sbGJhci0+ZW5hYmxlZCgpLCB0aWNrbWFya3MucmVsZWFz
ZSgpKTsKKyAgICByZXR1cm4gU2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW06OnBhaW50ZXIo
KS0+cGFpbnQoJmRhdGEsIGNvbnRleHQsIGRhbWFnZVJlY3QpOyAKK30KKwogYm9vbCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikKIHsKICAgICAv
LyBUaGlzIG1ldGhvZCBpcyBqdXN0IGNhbGxlZCBhcyBhIHBhaW50LXRpbWUgb3B0aW1pemF0aW9u
IHRvIHNlZSBpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oCmluZGV4IDExNzgxMjU2OWY2OWYyMDAzNzFiYWMw
ZjlkYTg3YTdjMzJkZTRmYTUuLjRkMWQ2ZmViODFlYmQwZmU0Y2I1NjNhOGQ5MWViNTQzYTE4ZGZh
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtLmgKQEAgLTQwLDYgKzQwLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIC8vIFRoaXMgY2xhc3MgY29udGFpbnMgdGhlIHNjcm9sbGJhciBjb2RlIHdoaWNo
IGlzIHNoYXJlZCBiZXR3ZWVuIENocm9taXVtCiAgICAgLy8gV2luZG93cyBhbmQgTGludXguCiAg
ICAgY2xhc3MgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bSA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZSB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xs
YmFyKiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
KTsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Ny
b2xsYmFyKikgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIo
U2Nyb2xsYmFyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAppbmRleCBlYzY4NDA3
ZTlkOGMzMmUzMGQzMTBkMmU1MDU4YzJkYTdkYmRlY2M2Li44YmY4ZGQ2NzdkY2RlOTUwYWVkMjli
YTRkOTEyYjYzZTczZGExNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHAKQEAg
LTUyLDcyICs1MiwxNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpzY3JvbGxi
YXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbAogCiB2b2lkIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2Ms
IFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0
IHBhcnRUeXBlKQogewotICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHN0YXRl
ID0gc2Nyb2xsYmFyLT5ob3ZlcmVkUGFydCgpID09IHBhcnRUeXBlID8gUGxhdGZvcm1TdXBwb3J0
OjpTdGF0ZUhvdmVyIDogUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZU5vcm1hbDsKLSAgICBJbnRSZWN0
IGFsaWduUmVjdCA9IHRyYWNrUmVjdChzY3JvbGxiYXIsIGZhbHNlKTsKLSAgICBQbGF0Zm9ybVN1
cHBvcnQ6OlRoZW1lUGFpbnRFeHRyYVBhcmFtcyBleHRyYVBhcmFtczsKLSAgICBleHRyYVBhcmFt
cy5zY3JvbGxiYXJUcmFjay50cmFja1ggPSBhbGlnblJlY3QueCgpOwotICAgIGV4dHJhUGFyYW1z
LnNjcm9sbGJhclRyYWNrLnRyYWNrWSA9IGFsaWduUmVjdC55KCk7Ci0gICAgZXh0cmFQYXJhbXMu
c2Nyb2xsYmFyVHJhY2sudHJhY2tXaWR0aCA9IGFsaWduUmVjdC53aWR0aCgpOwotICAgIGV4dHJh
UGFyYW1zLnNjcm9sbGJhclRyYWNrLnRyYWNrSGVpZ2h0ID0gYWxpZ25SZWN0LmhlaWdodCgpOwot
ICAgIFBsYXRmb3JtU3VwcG9ydDo6cGFpbnRUaGVtZVBhcnQoCi0gICAgICAgIGdjLAotICAgICAg
ICBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IFBsYXRm
b3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhckhvcml6b250YWxUcmFjayA6IFBsYXRmb3JtU3VwcG9y
dDo6UGFydFNjcm9sbGJhclZlcnRpY2FsVHJhY2ssCi0gICAgICAgIHN0YXRlLAotICAgICAgICBy
ZWN0LAotICAgICAgICAmZXh0cmFQYXJhbXMpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
fQogCiB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24oR3JhcGhp
Y3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qs
IFNjcm9sbGJhclBhcnQgcGFydCkKIHsKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFydCBw
YWludFBhcnQ7Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGUgPSBQ
bGF0Zm9ybVN1cHBvcnQ6OlN0YXRlTm9ybWFsOwotICAgIGJvb2wgY2hlY2tNaW4gPSBmYWxzZTsK
LSAgICBib29sIGNoZWNrTWF4ID0gZmFsc2U7Ci0gICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7Ci0gICAgICAgIGlmIChwYXJ0ID09IEJhY2tC
dXR0b25TdGFydFBhcnQpIHsKLSAgICAgICAgICAgIHBhaW50UGFydCA9IFBsYXRmb3JtU3VwcG9y
dDo6UGFydFNjcm9sbGJhckxlZnRBcnJvdzsKLSAgICAgICAgICAgIGNoZWNrTWluID0gdHJ1ZTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBhaW50UGFydCA9IFBsYXRmb3JtU3VwcG9y
dDo6UGFydFNjcm9sbGJhclJpZ2h0QXJyb3c7Ci0gICAgICAgICAgICBjaGVja01heCA9IHRydWU7
Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9u
U3RhcnRQYXJ0KSB7Ci0gICAgICAgICAgICBwYWludFBhcnQgPSBQbGF0Zm9ybVN1cHBvcnQ6OlBh
cnRTY3JvbGxiYXJVcEFycm93OwotICAgICAgICAgICAgY2hlY2tNaW4gPSB0cnVlOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgcGFpbnRQYXJ0ID0gUGxhdGZvcm1TdXBwb3J0OjpQYXJ0
U2Nyb2xsYmFyRG93bkFycm93OwotICAgICAgICAgICAgY2hlY2tNYXggPSB0cnVlOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGlmICgoY2hlY2tNaW4gJiYgKHNjcm9sbGJhci0+Y3VycmVudFBvcygp
IDw9IDApKQotICAgICAgICB8fCAoY2hlY2tNYXggJiYgc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkg
PT0gc2Nyb2xsYmFyLT5tYXhpbXVtKCkpKSB7Ci0gICAgICAgIHN0YXRlID0gUGxhdGZvcm1TdXBw
b3J0OjpTdGF0ZURpc2FibGVkOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChwYXJ0ID09IHNj
cm9sbGJhci0+cHJlc3NlZFBhcnQoKSkKLSAgICAgICAgICAgIHN0YXRlID0gUGxhdGZvcm1TdXBw
b3J0OjpTdGF0ZVByZXNzZWQ7Ci0gICAgICAgIGVsc2UgaWYgKHBhcnQgPT0gc2Nyb2xsYmFyLT5o
b3ZlcmVkUGFydCgpKQotICAgICAgICAgICAgc3RhdGUgPSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRl
SG92ZXI7Ci0gICAgfQotICAgIFBsYXRmb3JtU3VwcG9ydDo6cGFpbnRUaGVtZVBhcnQoZ2MsIHBh
aW50UGFydCwgc3RhdGUsIHJlY3QsIDApOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
CiB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUaHVtYihHcmFwaGljc0Nv
bnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsK
LSAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0ZTsKLQotICAgIGlmIChz
Y3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0KQotICAgICAgICBzdGF0ZSA9IFBs
YXRmb3JtU3VwcG9ydDo6U3RhdGVQcmVzc2VkOwotICAgIGVsc2UgaWYgKHNjcm9sbGJhci0+aG92
ZXJlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCi0gICAgICAgIHN0YXRlID0gUGxhdGZvcm1TdXBwb3J0
OjpTdGF0ZUhvdmVyOwotICAgIGVsc2UKLSAgICAgICAgc3RhdGUgPSBQbGF0Zm9ybVN1cHBvcnQ6
OlN0YXRlTm9ybWFsOwotICAgIFBsYXRmb3JtU3VwcG9ydDo6cGFpbnRUaGVtZVBhcnQoCi0gICAg
ICAgIGdjLAotICAgICAgICBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNj
cm9sbGJhciA/IFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYiA6
IFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhclZlcnRpY2FsVGh1bWIsCi0gICAgICAgIHN0
YXRlLAotICAgICAgICByZWN0LAotICAgICAgICAwKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAogYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNob3VsZENlbnRlck9u
VGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZVBhaW50
ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxi
YXJUaGVtZVBhaW50ZXJDaHJvbWl1bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg0OWQ0MjdjYzJiOGY5YmVj
YjkzMmJmNjc0MmE3ZjI2NjQ1ODJjOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lUGFpbnRlckNocm9taXVtLmNwcApAQCAt
MCwwICsxLDI3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgR29vZ2xlIEluYy4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lUGFpbnRlckNocm9taXVtLmgiCisKKyNp
bmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5o
IgorI2luY2x1ZGUgIlNjcm9sbGJhci5oIgorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8g
VGhpcyBmaWxlIGNvbnRhaW5zIHNjcm9sbGJhciB0aGVtZSBjb2RlIHRoYXQgaXMgY3Jvc3MgcGxh
dGZvcm0uIEFkZGl0aW9uYWwKKy8vIG1lbWJlcnMgb2YgU2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hy
b21pdW0gY2FuIGJlIGZvdW5kIGluIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcworLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBSZXR1cm5zIHRo
ZSBzaXplIHJlcHJlc2VudGVkIGJ5IHRyYWNrIHRha2luZyBpbnRvIGFjY291bnQgc2Nyb2xsaW5n
IHBhc3QKKy8vIHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50LgorZmxvYXQgU2Nyb2xsYmFyVGhlbWVQ
YWludGVyQ2hyb21pdW06OnVzZWRUb3RhbFNpemUoU2Nyb2xsYmFyUGFpbnREYXRhKiBzY3JvbGxi
YXIpCit7CisgICAgZmxvYXQgb3ZlcmhhbmdBdFN0YXJ0ID0gLXNjcm9sbGJhci0+Y3VycmVudFBv
cygpOworICAgIGZsb2F0IG92ZXJoYW5nQXRFbmQgPSBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSAr
IHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKSAtIHNjcm9sbGJhci0+dG90YWxTaXplKCk7CisgICAg
ZmxvYXQgb3ZlcmhhbmcgPSBtYXgoMC4wZiwgbWF4KG92ZXJoYW5nQXRTdGFydCwgb3ZlcmhhbmdB
dEVuZCkpOworICAgIHJldHVybiBzY3JvbGxiYXItPnRvdGFsU2l6ZSgpICsgb3Zlcmhhbmc7Cit9
CisKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW06OnNwbGl0VHJhY2soU2Nyb2xs
YmFyUGFpbnREYXRhKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFj
a1JlY3QsIEludFJlY3QmIGJlZm9yZVRodW1iUmVjdCwgSW50UmVjdCYgdGh1bWJSZWN0LCBJbnRS
ZWN0JiBhZnRlclRodW1iUmVjdCkKK3sKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHdvbid0IGV2ZW4g
Z2V0IGNhbGxlZCB1bmxlc3Mgd2UncmUgYmlnIGVub3VnaCB0byBoYXZlIHNvbWUgY29tYmluYXRp
b24gb2YgdGhlc2UgdGhyZWUgcmVjdHMgd2hlcmUgYXQgbGVhc3QKKyAgICAvLyBvbmUgb2YgdGhl
bSBpcyBub24tZW1wdHkuCisgICAgSW50UmVjdCB0cmFja1JlY3QgPSBjb25zdHJhaW5UcmFja1Jl
Y3RUb1RyYWNrUGllY2VzKHNjcm9sbGJhciwgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCk7CisgICAg
aW50IHRoaWNrbmVzcyA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Ny
b2xsYmFyID8gc2Nyb2xsYmFyLT5oZWlnaHQoKSA6IHNjcm9sbGJhci0+d2lkdGgoKTsKKyAgICBp
bnQgdGh1bWJQb3MgPSB0aHVtYlBvc2l0aW9uKHNjcm9sbGJhcik7CisgICAgaWYgKHNjcm9sbGJh
ci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgICAgIHRodW1i
UmVjdCA9IEludFJlY3QodHJhY2tSZWN0LngoKSArIHRodW1iUG9zLCB0cmFja1JlY3QueSgpICsg
KHRyYWNrUmVjdC5oZWlnaHQoKSAtIHRoaWNrbmVzcykgLyAyLCB0aHVtYkxlbmd0aChzY3JvbGxi
YXIpLCB0aGlja25lc3MpOworICAgICAgICBiZWZvcmVUaHVtYlJlY3QgPSBJbnRSZWN0KHRyYWNr
UmVjdC54KCksIHRyYWNrUmVjdC55KCksIHRodW1iUG9zICsgdGh1bWJSZWN0LndpZHRoKCkgLyAy
LCB0cmFja1JlY3QuaGVpZ2h0KCkpOworICAgICAgICBhZnRlclRodW1iUmVjdCA9IEludFJlY3Qo
dHJhY2tSZWN0LngoKSArIGJlZm9yZVRodW1iUmVjdC53aWR0aCgpLCB0cmFja1JlY3QueSgpLCB0
cmFja1JlY3QubWF4WCgpIC0gYmVmb3JlVGh1bWJSZWN0Lm1heFgoKSwgdHJhY2tSZWN0LmhlaWdo
dCgpKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0aHVtYlJlY3QgPSBJbnRSZWN0KHRyYWNrUmVj
dC54KCkgKyAodHJhY2tSZWN0LndpZHRoKCkgLSB0aGlja25lc3MpIC8gMiwgdHJhY2tSZWN0Lnko
KSArIHRodW1iUG9zLCB0aGlja25lc3MsIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikpOworICAgICAg
ICBiZWZvcmVUaHVtYlJlY3QgPSBJbnRSZWN0KHRyYWNrUmVjdC54KCksIHRyYWNrUmVjdC55KCks
IHRyYWNrUmVjdC53aWR0aCgpLCB0aHVtYlBvcyArIHRodW1iUmVjdC5oZWlnaHQoKSAvIDIpOwor
ICAgICAgICBhZnRlclRodW1iUmVjdCA9IEludFJlY3QodHJhY2tSZWN0LngoKSwgdHJhY2tSZWN0
LnkoKSArIGJlZm9yZVRodW1iUmVjdC5oZWlnaHQoKSwgdHJhY2tSZWN0LndpZHRoKCksIHRyYWNr
UmVjdC5tYXhZKCkgLSBiZWZvcmVUaHVtYlJlY3QubWF4WSgpKTsKKyAgICB9Cit9CisKK2ludCBT
Y3JvbGxiYXJUaGVtZVBhaW50ZXJDaHJvbWl1bTo6dGh1bWJQb3NpdGlvbihTY3JvbGxiYXJQYWlu
dERhdGEqIHNjcm9sbGJhcikKK3sKKyAgICBpZiAoc2Nyb2xsYmFyLT5lbmFibGVkKCkpIHsKKyAg
ICAgICAgZmxvYXQgcG9zID0gbWF4KDAuMGYsIHNjcm9sbGJhci0+Y3VycmVudFBvcygpKSAqICh0
cmFja0xlbmd0aChzY3JvbGxiYXIpIC0gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSkgLyAodXNlZFRv
dGFsU2l6ZShzY3JvbGxiYXIpIC0gc2Nyb2xsYmFyLT52aXNpYmxlU2l6ZSgpKTsKKyAgICAgICAg
cmV0dXJuIChwb3MgPCAxICYmIHBvcyA+IDApID8gMSA6IHBvczsKKyAgICB9CisgICAgcmV0dXJu
IDA7Cit9CisKK2ludCBTY3JvbGxiYXJUaGVtZVBhaW50ZXJDaHJvbWl1bTo6dGh1bWJMZW5ndGgo
U2Nyb2xsYmFyUGFpbnREYXRhKiBzY3JvbGxiYXIpCit7CisgICAgaWYgKCFzY3JvbGxiYXItPmVu
YWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmbG9hdCBwcm9wb3J0aW9uID0gc2Ny
b2xsYmFyLT52aXNpYmxlU2l6ZSgpIC8gdXNlZFRvdGFsU2l6ZShzY3JvbGxiYXIpOworICAgIGlu
dCB0cmFja0xlbiA9IHRyYWNrTGVuZ3RoKHNjcm9sbGJhcik7CisgICAgaW50IGxlbmd0aCA9IHBy
b3BvcnRpb24gKiB0cmFja0xlbjsKKyAgICBsZW5ndGggPSBtYXgobGVuZ3RoLCBtaW5pbXVtVGh1
bWJMZW5ndGgoc2Nyb2xsYmFyKSk7CisgICAgaWYgKGxlbmd0aCA+IHRyYWNrTGVuKQorICAgICAg
ICBsZW5ndGggPSAwOyAvLyBPbmNlIHRoZSB0aHVtYiBpcyBiZWxvdyB0aGUgdHJhY2sgbGVuZ3Ro
LCBpdCBqdXN0IGdvZXMgYXdheSAodG8gbWFrZSBtb3JlIHJvb20gZm9yIHRoZSB0cmFjaykuCisg
ICAgcmV0dXJuIGxlbmd0aDsKK30KKworaW50IFNjcm9sbGJhclRoZW1lUGFpbnRlckNocm9taXVt
OjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyUGFpbnREYXRhKiBzY3JvbGxiYXIpCit7Cisg
ICAgcmV0dXJuIHNjcm9sbGJhclRoaWNrbmVzcyhzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOwor
fQorCitpbnQgU2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW06OnRyYWNrTGVuZ3RoKFNjcm9s
bGJhclBhaW50RGF0YSogc2Nyb2xsYmFyKQoreworICAgIEludFJlY3QgY29uc3RyYWluZWRUcmFj
a1JlY3QgPSBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKHNjcm9sbGJhciwgdHJhY2tS
ZWN0KHNjcm9sbGJhcikpOworICAgIHJldHVybiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09
IEhvcml6b250YWxTY3JvbGxiYXIpID8gY29uc3RyYWluZWRUcmFja1JlY3Qud2lkdGgoKSA6IGNv
bnN0cmFpbmVkVHJhY2tSZWN0LmhlaWdodCgpOworfQorCitib29sIFNjcm9sbGJhclRoZW1lUGFp
bnRlckNocm9taXVtOjpwYWludChTY3JvbGxiYXJQYWludERhdGEqIHNjcm9sbGJhciwgR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCit7
CisgICAgLy8gQ3JlYXRlIHRoZSBTY3JvbGxiYXJDb250cm9sUGFydE1hc2sgYmFzZWQgb24gdGhl
IGRhbWFnZVJlY3QKKyAgICBTY3JvbGxiYXJDb250cm9sUGFydE1hc2sgc2Nyb2xsTWFzayA9IE5v
UGFydDsKKworICAgIEludFJlY3QgYmFja0J1dHRvblN0YXJ0UGFpbnRSZWN0OworICAgIEludFJl
Y3QgYmFja0J1dHRvbkVuZFBhaW50UmVjdDsKKyAgICBJbnRSZWN0IGZvcndhcmRCdXR0b25TdGFy
dFBhaW50UmVjdDsKKyAgICBJbnRSZWN0IGZvcndhcmRCdXR0b25FbmRQYWludFJlY3Q7CisgICAg
aWYgKGhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkgeworICAgICAgICBiYWNrQnV0dG9uU3RhcnRQYWlu
dFJlY3QgPSBiYWNrQnV0dG9uUmVjdChzY3JvbGxiYXIsIEJhY2tCdXR0b25TdGFydFBhcnQsIHRy
dWUpOworICAgICAgICBpZiAoZGFtYWdlUmVjdC5pbnRlcnNlY3RzKGJhY2tCdXR0b25TdGFydFBh
aW50UmVjdCkpCisgICAgICAgICAgICBzY3JvbGxNYXNrIHw9IEJhY2tCdXR0b25TdGFydFBhcnQ7
CisgICAgICAgIGJhY2tCdXR0b25FbmRQYWludFJlY3QgPSBiYWNrQnV0dG9uUmVjdChzY3JvbGxi
YXIsIEJhY2tCdXR0b25FbmRQYXJ0LCB0cnVlKTsKKyAgICAgICAgaWYgKGRhbWFnZVJlY3QuaW50
ZXJzZWN0cyhiYWNrQnV0dG9uRW5kUGFpbnRSZWN0KSkKKyAgICAgICAgICAgIHNjcm9sbE1hc2sg
fD0gQmFja0J1dHRvbkVuZFBhcnQ7CisgICAgICAgIGZvcndhcmRCdXR0b25TdGFydFBhaW50UmVj
dCA9IGZvcndhcmRCdXR0b25SZWN0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCwg
dHJ1ZSk7CisgICAgICAgIGlmIChkYW1hZ2VSZWN0LmludGVyc2VjdHMoZm9yd2FyZEJ1dHRvblN0
YXJ0UGFpbnRSZWN0KSkKKyAgICAgICAgICAgIHNjcm9sbE1hc2sgfD0gRm9yd2FyZEJ1dHRvblN0
YXJ0UGFydDsKKyAgICAgICAgZm9yd2FyZEJ1dHRvbkVuZFBhaW50UmVjdCA9IGZvcndhcmRCdXR0
b25SZWN0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRvbkVuZFBhcnQsIHRydWUpOworICAgICAgICBp
ZiAoZGFtYWdlUmVjdC5pbnRlcnNlY3RzKGZvcndhcmRCdXR0b25FbmRQYWludFJlY3QpKQorICAg
ICAgICAgICAgc2Nyb2xsTWFzayB8PSBGb3J3YXJkQnV0dG9uRW5kUGFydDsKKyAgICB9CisKKyAg
ICBJbnRSZWN0IHN0YXJ0VHJhY2tSZWN0OworICAgIEludFJlY3QgdGh1bWJSZWN0OworICAgIElu
dFJlY3QgZW5kVHJhY2tSZWN0OworICAgIEludFJlY3QgdHJhY2tQYWludFJlY3QgPSB0cmFja1Jl
Y3Qoc2Nyb2xsYmFyLCB0cnVlKTsKKyAgICBpZiAoZGFtYWdlUmVjdC5pbnRlcnNlY3RzKHRyYWNr
UGFpbnRSZWN0KSkKKyAgICAgICAgc2Nyb2xsTWFzayB8PSBUcmFja0JHUGFydDsKKyAgICBib29s
IHRodW1iUHJlc2VudCA9IGhhc1RodW1iKHNjcm9sbGJhcik7CisgICAgaWYgKHRodW1iUHJlc2Vu
dCkgeworICAgICAgICBJbnRSZWN0IHRyYWNrID0gdHJhY2tSZWN0KHNjcm9sbGJhcik7CisgICAg
ICAgIHNwbGl0VHJhY2soc2Nyb2xsYmFyLCB0cmFjaywgc3RhcnRUcmFja1JlY3QsIHRodW1iUmVj
dCwgZW5kVHJhY2tSZWN0KTsKKyAgICAgICAgaWYgKGRhbWFnZVJlY3QuaW50ZXJzZWN0cyh0aHVt
YlJlY3QpKQorICAgICAgICAgICAgc2Nyb2xsTWFzayB8PSBUaHVtYlBhcnQ7CisgICAgICAgIGlm
IChkYW1hZ2VSZWN0LmludGVyc2VjdHMoc3RhcnRUcmFja1JlY3QpKQorICAgICAgICAgICAgc2Ny
b2xsTWFzayB8PSBCYWNrVHJhY2tQYXJ0OworICAgICAgICBpZiAoZGFtYWdlUmVjdC5pbnRlcnNl
Y3RzKGVuZFRyYWNrUmVjdCkpCisgICAgICAgICAgICBzY3JvbGxNYXNrIHw9IEZvcndhcmRUcmFj
a1BhcnQ7CisgICAgfQorCisgICAgLy8gUGFpbnQgdGhlIHNjcm9sbGJhciBiYWNrZ3JvdW5kIChv
bmx5IHVzZWQgYnkgY3VzdG9tIENTUyBzY3JvbGxiYXJzKS4KKyAgICBwYWludFNjcm9sbGJhckJh
Y2tncm91bmQoZ3JhcGhpY3NDb250ZXh0LCBzY3JvbGxiYXIpOworCisgICAgLy8gUGFpbnQgdGhl
IGJhY2sgYW5kIGZvcndhcmQgYnV0dG9ucy4KKyAgICBpZiAoc2Nyb2xsTWFzayAmIEJhY2tCdXR0
b25TdGFydFBhcnQpCisgICAgICAgIHBhaW50QnV0dG9uKGdyYXBoaWNzQ29udGV4dCwgc2Nyb2xs
YmFyLCBiYWNrQnV0dG9uU3RhcnRQYWludFJlY3QsIEJhY2tCdXR0b25TdGFydFBhcnQpOworICAg
IGlmIChzY3JvbGxNYXNrICYgQmFja0J1dHRvbkVuZFBhcnQpCisgICAgICAgIHBhaW50QnV0dG9u
KGdyYXBoaWNzQ29udGV4dCwgc2Nyb2xsYmFyLCBiYWNrQnV0dG9uRW5kUGFpbnRSZWN0LCBCYWNr
QnV0dG9uRW5kUGFydCk7CisgICAgaWYgKHNjcm9sbE1hc2sgJiBGb3J3YXJkQnV0dG9uU3RhcnRQ
YXJ0KQorICAgICAgICBwYWludEJ1dHRvbihncmFwaGljc0NvbnRleHQsIHNjcm9sbGJhciwgZm9y
d2FyZEJ1dHRvblN0YXJ0UGFpbnRSZWN0LCBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0KTsKKyAgICBp
ZiAoc2Nyb2xsTWFzayAmIEZvcndhcmRCdXR0b25FbmRQYXJ0KQorICAgICAgICBwYWludEJ1dHRv
bihncmFwaGljc0NvbnRleHQsIHNjcm9sbGJhciwgZm9yd2FyZEJ1dHRvbkVuZFBhaW50UmVjdCwg
Rm9yd2FyZEJ1dHRvbkVuZFBhcnQpOworCisgICAgaWYgKHNjcm9sbE1hc2sgJiBUcmFja0JHUGFy
dCkKKyAgICAgICAgcGFpbnRUcmFja0JhY2tncm91bmQoZ3JhcGhpY3NDb250ZXh0LCBzY3JvbGxi
YXIsIHRyYWNrUGFpbnRSZWN0KTsKKworICAgIGlmICgoc2Nyb2xsTWFzayAmIEZvcndhcmRUcmFj
a1BhcnQpIHx8IChzY3JvbGxNYXNrICYgQmFja1RyYWNrUGFydCkpIHsKKyAgICAgICAgLy8gUGFp
bnQgdGhlIHRyYWNrIHBpZWNlcyBhYm92ZSBhbmQgYmVsb3cgdGhlIHRodW1iLgorICAgICAgICBp
ZiAoc2Nyb2xsTWFzayAmIEJhY2tUcmFja1BhcnQpCisgICAgICAgICAgICBwYWludFRyYWNrUGll
Y2UoZ3JhcGhpY3NDb250ZXh0LCBzY3JvbGxiYXIsIHN0YXJ0VHJhY2tSZWN0LCBCYWNrVHJhY2tQ
YXJ0KTsKKyAgICAgICAgaWYgKHNjcm9sbE1hc2sgJiBGb3J3YXJkVHJhY2tQYXJ0KQorICAgICAg
ICAgICAgcGFpbnRUcmFja1BpZWNlKGdyYXBoaWNzQ29udGV4dCwgc2Nyb2xsYmFyLCBlbmRUcmFj
a1JlY3QsIEZvcndhcmRUcmFja1BhcnQpOworCisgICAgICAgIHBhaW50VGlja21hcmtzKGdyYXBo
aWNzQ29udGV4dCwgc2Nyb2xsYmFyLCB0cmFja1BhaW50UmVjdCk7CisgICAgfQorCisgICAgLy8g
UGFpbnQgdGhlIHRodW1iLgorICAgIGlmIChzY3JvbGxNYXNrICYgVGh1bWJQYXJ0KQorICAgICAg
ICBwYWludFRodW1iKGdyYXBoaWNzQ29udGV4dCwgc2Nyb2xsYmFyLCB0aHVtYlJlY3QpOworCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW06
Omhhc1RodW1iKFNjcm9sbGJhclBhaW50RGF0YSogc2Nyb2xsYmFyKQoreworICAgIC8vIFRoaXMg
bWV0aG9kIGlzIGp1c3QgY2FsbGVkIGFzIGEgcGFpbnQtdGltZSBvcHRpbWl6YXRpb24gdG8gc2Vl
IGlmCisgICAgLy8gcGFpbnRpbmcgdGhlIHRodW1iIGNhbiBiZSBza2lwcGVkLiBXZSBkb24ndCBo
YXZlIHRvIGJlIGV4YWN0IGhlcmUuCisgICAgcmV0dXJuIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikg
PiAwOworfQorCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lUGFpbnRlckNocm9taXVtOjpiYWNrQnV0
dG9uUmVjdChTY3JvbGxiYXJQYWludERhdGEqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0
LCBib29sKQoreworICAgIC8vIFdpbmRvd3MgYW5kIExpbnV4IGp1c3QgaGF2ZSBzaW5nbGUgYXJy
b3dzLgorICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0b25FbmRQYXJ0KQorICAgICAgICByZXR1cm4g
SW50UmVjdCgpOworCisgICAgSW50U2l6ZSBzaXplID0gYnV0dG9uU2l6ZShzY3JvbGxiYXIpOwor
ICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSwgc2l6ZS53
aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKK30KKworSW50UmVjdCBTY3JvbGxiYXJUaGVtZVBhaW50
ZXJDaHJvbWl1bTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyUGFpbnREYXRhKiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKK3sKKyAgICAvLyBXaW5kb3dzIGFuZCBMaW51
eCBqdXN0IGhhdmUgc2luZ2xlIGFycm93cy4KKyAgICBpZiAocGFydCA9PSBGb3J3YXJkQnV0dG9u
U3RhcnRQYXJ0KQorICAgICAgICByZXR1cm4gSW50UmVjdCgpOworCisgICAgSW50U2l6ZSBzaXpl
ID0gYnV0dG9uU2l6ZShzY3JvbGxiYXIpOworICAgIGludCB4LCB5OworICAgIGlmIChzY3JvbGxi
YXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAgICAgICB4ID0g
c2Nyb2xsYmFyLT54KCkgKyBzY3JvbGxiYXItPndpZHRoKCkgLSBzaXplLndpZHRoKCk7CisgICAg
ICAgIHkgPSBzY3JvbGxiYXItPnkoKTsKKyAgICB9IGVsc2UgeworICAgICAgICB4ID0gc2Nyb2xs
YmFyLT54KCk7CisgICAgICAgIHkgPSBzY3JvbGxiYXItPnkoKSArIHNjcm9sbGJhci0+aGVpZ2h0
KCkgLSBzaXplLmhlaWdodCgpOworICAgIH0KKyAgICByZXR1cm4gSW50UmVjdCh4LCB5LCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworfQorCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lUGFp
bnRlckNocm9taXVtOjp0cmFja1JlY3QoU2Nyb2xsYmFyUGFpbnREYXRhKiBzY3JvbGxiYXIsIGJv
b2wpCit7CisgICAgSW50U2l6ZSBicyA9IGJ1dHRvblNpemUoc2Nyb2xsYmFyKTsKKyAgICAvLyBU
aGUgYnV0dG9ucyBhdCB0aGUgdG9wIGFuZCBib3R0b20gb2YgdGhlIHNjcm9sbGJhciBhcmUgc3F1
YXJlLCBzbyB0aGUKKyAgICAvLyB0aGlja25lc3Mgb2YgdGhlIHNjcm9sbGJhciBpcyBhbHNvIHRo
ZWlyIGhlaWdodC4KKyAgICBpbnQgdGhpY2tuZXNzID0gc2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9s
bGJhci0+Y29udHJvbFNpemUoKSk7CisgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9
PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgICAgIC8vIE9uY2UgdGhlIHNjcm9sbGJhciBi
ZWNvbWVzIHNtYWxsZXIgdGhhbiB0aGUgbmF0dXJhbCBzaXplIG9mIHRoZQorICAgICAgICAvLyB0
d28gYnV0dG9ucywgdGhlIHRyYWNrIGRpc2FwcGVhcnMuCisgICAgICAgIGlmIChzY3JvbGxiYXIt
PndpZHRoKCkgPCAyICogdGhpY2tuZXNzKQorICAgICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsK
KyAgICAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCkgKyBicy53aWR0aCgpLCBzY3Jv
bGxiYXItPnkoKSwgc2Nyb2xsYmFyLT53aWR0aCgpIC0gMiAqIGJzLndpZHRoKCksIHRoaWNrbmVz
cyk7CisgICAgfQorICAgIGlmIChzY3JvbGxiYXItPmhlaWdodCgpIDwgMiAqIHRoaWNrbmVzcykK
KyAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKKyAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXIt
PngoKSwgc2Nyb2xsYmFyLT55KCkgKyBicy5oZWlnaHQoKSwgdGhpY2tuZXNzLCBzY3JvbGxiYXIt
PmhlaWdodCgpIC0gMiAqIGJzLmhlaWdodCgpKTsKK30KKwordm9pZCBTY3JvbGxiYXJUaGVtZVBh
aW50ZXJDaHJvbWl1bTo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBTY3JvbGxiYXJQYWludERhdGEqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
K3sKKyAgICAvLyBKdXN0IGFzc3VtZSBhIGZvcndhcmQgdHJhY2sgcGFydC4gV2Ugb25seSBwYWlu
dCB0aGUgdHJhY2sgYXMgYSBzaW5nbGUgcGllY2Ugd2hlbiB0aGVyZSBpcyBubyB0aHVtYi4KKyAg
ICBpZiAoIWhhc1RodW1iKHNjcm9sbGJhcikpCisgICAgICAgIHBhaW50VHJhY2tQaWVjZShjb250
ZXh0LCBzY3JvbGxiYXIsIHJlY3QsIEZvcndhcmRUcmFja1BhcnQpOworfQorCit2b2lkIFNjcm9s
bGJhclRoZW1lUGFpbnRlckNocm9taXVtOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFNjcm9sbGJhclBhaW50RGF0YSogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQoreworICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgIT0gVmVydGljYWxTY3Jv
bGxiYXIpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChyZWN0LmhlaWdodCgpIDw9IDAgfHwg
cmVjdC53aWR0aCgpIDw9IDApCisgICAgICAgIHJldHVybjsgLy8gbm90aGluZyB0byBkcmF3IG9u
LgorCisgICAgLy8gR2V0IHRoZSB0aWNrbWFya3MgZm9yIHRoZSBmcmFtZXZpZXcuCisgICAgVmVj
dG9yPEludFJlY3Q+KiB0aWNrbWFya3MgPSBzY3JvbGxiYXItPnRpY2ttYXJrcygpOworICAgIGlm
ICghdGlja21hcmtzLT5zaXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEdldCB0aGUg
aW1hZ2UgZm9yIHRoZSB0aWNrbWFya3MuCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWZQdHI8
SW1hZ2U+LCBkYXNoLCAoSW1hZ2U6OmxvYWRQbGF0Zm9ybVJlc291cmNlKCJ0aWNrbWFya0Rhc2gi
KSkpOworICAgIGlmIChkYXNoLT5pc051bGwoKSkgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnRleHQtPnNhdmUoKTsKKwor
ICAgIGZvciAoVmVjdG9yPEludFJlY3Q+Ojpjb25zdF9pdGVyYXRvciBpID0gdGlja21hcmtzLT5i
ZWdpbigpOyBpICE9IHRpY2ttYXJrcy0+ZW5kKCk7ICsraSkgeworICAgICAgICAvLyBDYWxjdWxh
dGUgaG93IGZhciBkb3duIChpbiAlKSB0aGUgdGljay1tYXJrIHNob3VsZCBhcHBlYXIuCisgICAg
ICAgIGNvbnN0IGZsb2F0IHBlcmNlbnQgPSBzdGF0aWNfY2FzdDxmbG9hdD4oaS0+eSgpKSAvIHNj
cm9sbGJhci0+dG90YWxTaXplKCk7CisKKyAgICAgICAgLy8gQ2FsY3VsYXRlIGhvdyBmYXIgZG93
biAoaW4gcGl4ZWxzKSB0aGUgdGljay1tYXJrIHNob3VsZCBhcHBlYXIuCisgICAgICAgIGNvbnN0
IGludCB5UG9zID0gcmVjdC55KCkgKyAocmVjdC5oZWlnaHQoKSAqIHBlcmNlbnQpOworCisgICAg
ICAgIEludFBvaW50IHRpY2soc2Nyb2xsYmFyLT54KCksIHlQb3MpOworICAgICAgICBjb250ZXh0
LT5kcmF3SW1hZ2UoZGFzaC5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgdGljayk7CisgICAg
fQorCisgICAgY29udGV4dC0+cmVzdG9yZSgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZVBhaW50ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZmZiZjQ2YmU0MDk3
ODhiNDI2MTdiNjMyNDI2MzBkNTg2YmFjY2YzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW0uaApA
QCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
CisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21p
dW1faAorI2RlZmluZSBTY3JvbGxiYXJUaGVtZVBhaW50ZXJDaHJvbWl1bV9oCisKKyNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiU2Ny
b2xsYmFyUGFpbnREYXRhLmgiCisjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKKwordXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgLy8gVGhpcyBjbGFzcyBj
b250YWlucyB0aGUgc2Nyb2xsYmFyIGNvZGUgd2hpY2ggaXMgc2hhcmVkIGJldHdlZW4gQ2hyb21p
dW0KKyAgICAvLyBXaW5kb3dzIGFuZCBMaW51eC4KKyAgICBjbGFzcyBTY3JvbGxiYXJUaGVtZVBh
aW50ZXJDaHJvbWl1bSB7CisgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcm9sbGJhclRo
ZW1lUGFpbnRlckNocm9taXVtKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGlj
OgorICAgICAgICBTY3JvbGxiYXJUaGVtZVBhaW50ZXJDaHJvbWl1bSgpIHsgfQorICAgICAgICB+
U2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW0oKSB7IH0KKworICAgICAgICBzdGF0aWMgU2Ny
b2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW0qIHBhaW50ZXIoKTsKKworICAgICAgICB2aXJ0dWFs
IGJvb2wgcGFpbnQoU2Nyb2xsYmFyUGFpbnREYXRhKiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKworICAgICAgICB2aXJ0dWFsIGludCBzY3Jv
bGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKSB7
IHJldHVybiAwOyB9CisKKyAgICAgICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxi
YXJQYWludERhdGEqKTsKKyAgICAgICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFy
UGFpbnREYXRhKik7CisgICAgICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhclBh
aW50RGF0YSopOworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCBib29sIGhhc0J1dHRv
bnMoU2Nyb2xsYmFyUGFpbnREYXRhKikgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFs
IGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyUGFpbnREYXRhKik7CisKKyAgICAgICAgdmlydHVhbCBJ
bnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclBhaW50RGF0YSosIFNjcm9sbGJhclBhcnQs
IGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJk
QnV0dG9uUmVjdChTY3JvbGxiYXJQYWludERhdGEqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50
aW5nID0gZmFsc2UpOworICAgICAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJh
clBhaW50RGF0YSosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisKKyAgICAgICAgdmlydHVhbCBm
bG9hdCB1c2VkVG90YWxTaXplKFNjcm9sbGJhclBhaW50RGF0YSogc2Nyb2xsYmFyKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHNwbGl0VHJhY2soU2Nyb2xsYmFyUGFpbnREYXRhKiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QsIEludFJlY3QmIGJlZm9yZVRo
dW1iUmVjdCwgSW50UmVjdCYgdGh1bWJSZWN0LCBJbnRSZWN0JiBhZnRlclRodW1iUmVjdCk7CisK
KyAgICAgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclBhaW50RGF0
YSopOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyUGFpbnREYXRhKikgeyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyUGFpbnREYXRh
KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIHsgfQorICAgICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyUGFpbnREYXRhKiwgY29u
c3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJQYWludERhdGEqLCBjb25zdCBJbnRS
ZWN0JikgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclBhaW50RGF0YSosIGNvbnN0IEludFJlY3QmKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9s
bGJhclBhaW50RGF0YSosIGNvbnN0IEludFJlY3QmKTsKKworICAgICAgICB2aXJ0dWFsIEludFJl
Y3QgY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXJQYWludERhdGEqLCBj
b25zdCBJbnRSZWN0JiByZWN0KSB7IHJldHVybiByZWN0OyB9CisKKyAgICAgICAgdmlydHVhbCBJ
bnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyUGFpbnREYXRhKikgPSAwOworICAgIH07Cit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTY3JvbGxiYXJUaGVtZVBhaW50ZXJDaHJv
bWl1bV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZVBhaW50ZXJDaHJvbWl1bUxpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lUGFpbnRlckNocm9taXVtTGludXguY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY2YTA2NWUxZjE3ZDc0N2UyZTIyOWNhMzk2NDk3NDE5YThkZWVmMDIKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZVBhaW50ZXJDaHJvbWl1bUxpbnV4LmNwcApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHly
aWdodCAoYykgMjAwOCwgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW1MaW51
eC5oIgorCisjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1N
b3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworU2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW0qIFNjcm9sbGJhclRoZW1lUGFpbnRl
ckNocm9taXVtOjpwYWludGVyKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNjcm9sbGJh
clRoZW1lUGFpbnRlckNocm9taXVtTGludXgsIHBhaW50ZXIsICgpKTsKKyAgICByZXR1cm4gJnBh
aW50ZXI7Cit9CisKK2ludCBTY3JvbGxiYXJUaGVtZVBhaW50ZXJDaHJvbWl1bUxpbnV4OjpzY3Jv
bGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCit7CisgICAg
Ly8gSG9yaXogYW5kIFZlcnQgc2Nyb2xsYmFycyBhcmUgdGhlIHNhbWUgdGhpY2tuZXNzLgorICAg
IEludFNpemUgc2Nyb2xsYmFyU2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6
ZShQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrKTsKKyAgICByZXR1
cm4gc2Nyb2xsYmFyU2l6ZS53aWR0aCgpOworfQorCit2b2lkIFNjcm9sbGJhclRoZW1lUGFpbnRl
ckNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGdjLCBTY3Jv
bGxiYXJQYWludERhdGEqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFy
UGFydCBwYXJ0VHlwZSkKK3sKKyAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBz
dGF0ZSA9IHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSA9PSBwYXJ0VHlwZSA/IFBsYXRmb3JtU3Vw
cG9ydDo6U3RhdGVIb3ZlciA6IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVOb3JtYWw7CisgICAgSW50
UmVjdCBhbGlnblJlY3QgPSB0cmFja1JlY3Qoc2Nyb2xsYmFyLCBmYWxzZSk7CisgICAgUGxhdGZv
cm1TdXBwb3J0OjpUaGVtZVBhaW50RXh0cmFQYXJhbXMgZXh0cmFQYXJhbXM7CisgICAgZXh0cmFQ
YXJhbXMuc2Nyb2xsYmFyVHJhY2sudHJhY2tYID0gYWxpZ25SZWN0LngoKTsKKyAgICBleHRyYVBh
cmFtcy5zY3JvbGxiYXJUcmFjay50cmFja1kgPSBhbGlnblJlY3QueSgpOworICAgIGV4dHJhUGFy
YW1zLnNjcm9sbGJhclRyYWNrLnRyYWNrV2lkdGggPSBhbGlnblJlY3Qud2lkdGgoKTsKKyAgICBl
eHRyYVBhcmFtcy5zY3JvbGxiYXJUcmFjay50cmFja0hlaWdodCA9IGFsaWduUmVjdC5oZWlnaHQo
KTsKKyAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KAorICAgICAgICBnYywKKyAg
ICAgICAgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBQ
bGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJIb3Jpem9udGFsVHJhY2sgOiBQbGF0Zm9ybVN1
cHBvcnQ6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRyYWNrLAorICAgICAgICBzdGF0ZSwKKyAgICAg
ICAgcmVjdCwKKyAgICAgICAgJmV4dHJhUGFyYW1zKTsKK30KKwordm9pZCBTY3JvbGxiYXJUaGVt
ZVBhaW50ZXJDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBT
Y3JvbGxiYXJQYWludERhdGEqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xs
YmFyUGFydCBwYXJ0KQoreworICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYXJ0IHBhaW50UGFy
dDsKKyAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0ZSA9IFBsYXRmb3Jt
U3VwcG9ydDo6U3RhdGVOb3JtYWw7CisgICAgYm9vbCBjaGVja01pbiA9IGZhbHNlOworICAgIGJv
b2wgY2hlY2tNYXggPSBmYWxzZTsKKyAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09
IEhvcml6b250YWxTY3JvbGxiYXIpIHsKKyAgICAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRvblN0
YXJ0UGFydCkgeworICAgICAgICAgICAgcGFpbnRQYXJ0ID0gUGxhdGZvcm1TdXBwb3J0OjpQYXJ0
U2Nyb2xsYmFyTGVmdEFycm93OworICAgICAgICAgICAgY2hlY2tNaW4gPSB0cnVlOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgcGFpbnRQYXJ0ID0gUGxhdGZvcm1TdXBwb3J0OjpQYXJ0
U2Nyb2xsYmFyUmlnaHRBcnJvdzsKKyAgICAgICAgICAgIGNoZWNrTWF4ID0gdHJ1ZTsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0b25TdGFydFBh
cnQpIHsKKyAgICAgICAgICAgIHBhaW50UGFydCA9IFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9s
bGJhclVwQXJyb3c7CisgICAgICAgICAgICBjaGVja01pbiA9IHRydWU7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBwYWludFBhcnQgPSBQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxi
YXJEb3duQXJyb3c7CisgICAgICAgICAgICBjaGVja01heCA9IHRydWU7CisgICAgICAgIH0KKyAg
ICB9CisgICAgaWYgKChjaGVja01pbiAmJiAoc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgPD0gMCkp
CisgICAgICAgIHx8IChjaGVja01heCAmJiBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSA9PSBzY3Jv
bGxiYXItPm1heGltdW0oKSkpIHsKKyAgICAgICAgc3RhdGUgPSBQbGF0Zm9ybVN1cHBvcnQ6OlN0
YXRlRGlzYWJsZWQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHBhcnQgPT0gc2Nyb2xsYmFy
LT5wcmVzc2VkUGFydCgpKQorICAgICAgICAgICAgc3RhdGUgPSBQbGF0Zm9ybVN1cHBvcnQ6OlN0
YXRlUHJlc3NlZDsKKyAgICAgICAgZWxzZSBpZiAocGFydCA9PSBzY3JvbGxiYXItPmhvdmVyZWRQ
YXJ0KCkpCisgICAgICAgICAgICBzdGF0ZSA9IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVIb3ZlcjsK
KyAgICB9CisgICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydChnYywgcGFpbnRQYXJ0
LCBzdGF0ZSwgcmVjdCwgMCk7Cit9CisKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21p
dW1MaW51eDo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJQYWludERh
dGEqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBQbGF0Zm9ybVN1cHBv
cnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0ZTsKKworICAgIGlmIChzY3JvbGxiYXItPnByZXNzZWRQ
YXJ0KCkgPT0gVGh1bWJQYXJ0KQorICAgICAgICBzdGF0ZSA9IFBsYXRmb3JtU3VwcG9ydDo6U3Rh
dGVQcmVzc2VkOworICAgIGVsc2UgaWYgKHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSA9PSBUaHVt
YlBhcnQpCisgICAgICAgIHN0YXRlID0gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZUhvdmVyOworICAg
IGVsc2UKKyAgICAgICAgc3RhdGUgPSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlTm9ybWFsOworICAg
IFBsYXRmb3JtU3VwcG9ydDo6cGFpbnRUaGVtZVBhcnQoCisgICAgICAgIGdjLAorICAgICAgICBz
Y3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IFBsYXRmb3Jt
U3VwcG9ydDo6UGFydFNjcm9sbGJhckhvcml6b250YWxUaHVtYiA6IFBsYXRmb3JtU3VwcG9ydDo6
UGFydFNjcm9sbGJhclZlcnRpY2FsVGh1bWIsCisgICAgICAgIHN0YXRlLAorICAgICAgICByZWN0
LAorICAgICAgICAwKTsKK30KKworSW50U2l6ZSBTY3JvbGxiYXJUaGVtZVBhaW50ZXJDaHJvbWl1
bUxpbnV4OjpidXR0b25TaXplKFNjcm9sbGJhclBhaW50RGF0YSogc2Nyb2xsYmFyKQoreworICAg
IGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpIHsKKyAg
ICAgICAgSW50U2l6ZSBzaXplID0gUGxhdGZvcm1TdXBwb3J0OjpnZXRUaGVtZVBhcnRTaXplKFBs
YXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhclVwQXJyb3cpOworICAgICAgICByZXR1cm4gSW50
U2l6ZShzaXplLndpZHRoKCksIHNjcm9sbGJhci0+aGVpZ2h0KCkgPCAyICogc2l6ZS5oZWlnaHQo
KSA/IHNjcm9sbGJhci0+aGVpZ2h0KCkgLyAyIDogc2l6ZS5oZWlnaHQoKSk7CisgICAgfQorCisg
ICAgLy8gSG9yaXpvbnRhbFNjcm9sbGJhcgorICAgIEludFNpemUgc2l6ZSA9IFBsYXRmb3JtU3Vw
cG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJMZWZ0
QXJyb3cpOworICAgIHJldHVybiBJbnRTaXplKHNjcm9sbGJhci0+d2lkdGgoKSA8IDIgKiBzaXpl
LndpZHRoKCkgPyBzY3JvbGxiYXItPndpZHRoKCkgLyAyIDogc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpKTsKK30KKworaW50IFNjcm9sbGJhclRoZW1lUGFpbnRlckNocm9taXVtTGludXg6Om1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJQYWludERhdGEqIHNjcm9sbGJhcikKK3sKKyAgICBp
ZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7CisgICAg
ICAgIEludFNpemUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0
Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iKTsKKyAgICAgICAgcmV0dXJu
IHNpemUuaGVpZ2h0KCk7CisgICAgfQorCisgICAgSW50U2l6ZSBzaXplID0gUGxhdGZvcm1TdXBw
b3J0OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhckhvcml6
b250YWxUaHVtYik7CisgICAgcmV0dXJuIHNpemUud2lkdGgoKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW1MaW51eC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVQYWludGVyQ2hyb21pdW1MaW51eC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjU4NzRjNDE1ZmYyYTBiMjZjMjBiNzQyOWE2ODFlY2E1YzE5ZTdjN2YKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZVBhaW50ZXJDaHJvbWl1bUxpbnV4LmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoYykgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNjcm9sbGJh
clRoZW1lUGFpbnRlckNocm9taXVtTGludXhfaAorI2RlZmluZSBTY3JvbGxiYXJUaGVtZVBhaW50
ZXJDaHJvbWl1bUxpbnV4X2gKKworI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lUGFpbnRlckNocm9t
aXVtLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBTY3JvbGxiYXJUaGVtZVBh
aW50ZXJDaHJvbWl1bUxpbnV4IDogcHVibGljIFNjcm9sbGJhclRoZW1lUGFpbnRlckNocm9taXVt
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhT
Y3JvbGxiYXJDb250cm9sU2l6ZSk7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwg
dm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyUGFpbnREYXRh
KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyUGFpbnREYXRhKiwgY29uc3Qg
SW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVt
YihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJQYWludERhdGEqLCBjb25zdCBJbnRSZWN0Jik7
CisgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclBhaW50RGF0YSop
OworICAgICAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyUGFpbnRE
YXRhKik7CisgICAgfTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmICAvLyBTY3Jv
bGxiYXJUaGVtZVBhaW50ZXJMaW51eF9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGE3NGU3NjFmMWMzNWE2ZjZiM2QwM2Fk
ODcxY2M4NWY3ZjIzNDRiZi4uYzcyY2U5YTc2YTY5MDEwNTMyNWQzNDlmMzhjMDUyZDM4NGM2Mjgz
YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAyLTA3ICBQZXRlciBLb3R3aWN6ICA8cGtv
dHdpY3pAZ29vZ2xlLmNvbT4KKworICAgICAgICBEZWNvdXBsZSBzY3JvbGxiYXIgcGFpbnRpbmcg
ZnJvbSBTY3JvbGxiYXIgb2JqZWN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03ODAyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0td2luL2NzczMvZmxleGJveC9jcm9zcy1h
eGlzLXNjcm9sbGJhci1leHBlY3RlZC5wbmc6IEFkZGVkLgorCiAyMDEyLTAyLTAzICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTA2NjU0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0td2luL2NzczMvZmxleGJveC9jcm9zcy1heGlzLXNjcm9sbGJhci1leHBlY3RlZC5w
bmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vY3NzMy9mbGV4Ym94L2Nyb3Nz
LWF4aXMtc2Nyb2xsYmFyLWV4cGVjdGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjNkOTQ3M2I2MDc1Y2Rm
Mjg3MTAzNmRiNDc5M2IxYTU5ODJhZGM3CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA0MzA4Cnpj
bWVITFg7NCNIN1FPQCExUThJRyU+Zmpad25WfXJBcVdVSUIwNkdkTTFfX3VmQ0xjfldRbD5XR20w
MkE8SWJpPwp6Qlc2JUUhS2sxdDM1Ril4Z3JwQFVCbUBGVDZQamo4PW55c3E8Xl5jJXMtQ0woSE5T
Pm1ANl5xR191VFdIQEI3WkgKejxhfiM2KkhBTjEwfDAwb0k9S0hSMEUjOTZ6PGdDPCg4YEFPOF9i
fWBqKDlpVV98VmZ+cF48UzNYRj0kMFl3SGxDCnp5KFB2UFY7aEREd1gjUUlrZiQoS21iPmxqWkxS
RVc1bEU3VTVDQVJBcTViPWc7ZmhBT3s5O1FGIWQkIX1mMCVnSwp6ZTtjMHxjdzVCaVQ2XjBfP0Ar
dCk+VmYzPVZ9aGl1UDR3ZkxXc0pmMkJ0YEgqTi1JK1ZmTU4/JTJQV0dvMEVBQGMKemkwYDNEak5Y
YCg+dW9MWWJIZUdQIyV0JjJJYDdRYnpaZmJEREVhKEYyR1psUXRFaGtYSj8+aTNfTV8qWmNzX1py
CnomazxTZU5UfnZkPTh7eHs5RGh5Uyk8RzE4ZU5UdSNeIVpfezhpPHsqeHNhVURzU0kjenZjMjZL
QndfYn0kRVNnSQp6anU8RHNHWjBpOy0jcHo/ZT1iSXZ2KXU/Zz1kKnB8SyokPTcjX3hnRCEweilp
cSY+NjlaaXt6eVZ6Jk9ZWjA2MGgKem18UnZwdEB0e1JibkFCeiNoSmBWa20zPyZwQXpyXnt3OFZD
WnJ1eVQpc047eGIocD13PDM1a1hJSUJ5I0Qpc317CnpZOyt8ZktlMSU3O3U7KEcpY1BzQWBJSUBH
YGJsY1FnYzxAJnNuQDMhVUx2Xm13M3ZQPlYqSndVT2NjJXpZMGIlSwp6SSRTVFZDZjxyQG8jeG5X
KGV0QVRyP19BQWp3SHI4eSZeRjRaQTgpOERSVyhCMmxtZTlPe1NVdmlWNzhfRXNQV0EKel42Q3N9
djZGYXFJQm5FdnhXI095V05kNVRDaS19MFpGU3pqJkV2WkJEUGIlPyojPWlgNll5PGFKJm02Uno1
WlAxCno1YT5NMkdEfHd8SUFtMzRxSFpCLVMkej1qXjZtPVhyPzRZUmJCNkxxeUhhS2hOXl5HUipR
WWNNa19yPHk0c1hgSQp6eVVuUiF5JlpoKHtGflpBMHA0az4zKGhyN24+cVRKVzArUXVzMDtNaUJU
cWA7XipIZ1RsRUwhSjFuR0E9eH5QRVUKemV4Yn56eX1LXilXREh4VVdmTW5zNmBsJnlHMG1zP09Q
U2EpcSNZcVYxbjYrNEleVVQrWW90fjh3QHxBRng+TjkkCno5e19yYDJ9IVhCKFRzNXFKckgkQzZU
Yj52KjA0PExEZm81UT4lPVFzMEQoIVQhKzsqYWB5VCpRRzZiSm5VRzxvUQp6bExxMFIqVXBjTkVo
QGhrXkc2cyN0MEUtfFExRzxEdHMpTXQ9R148eSZmc0VZYSZqYE93dG8hdzwtPkshcmJzUWwKek8h
Kk8zOE9sSVEkOUs0NjM+VXY4OyZodHsxK35hZDkre2w0PjF+cXJke3hIQmItb0s1cW9XX1dHPSoh
eG9AfUE7CnolN14rWU9+LXZKX011eXBIVWJ3OWJmeD5gcWRndU94by1gV1BOMntWcGkjY2UlNjZp
PE9Qd3dBNX07I2wraGlAfAp6ZzNjblRAXiNhfjVQUmdlcG9hdkJmQD1DKT5RUVlibVAjYTUxclZ+
VmtOKjtnTkBJQzFySm1tVF5aTW8kKnx3P2AKekh9JWF5ZExEJCY8PDteYWxFUyt5SiZZQmw1b0RC
QThKa3RqQyZLMHVlIWtXPWJWPnV9OFV1bTNzNnYkWGI5V3N4CnpWKHJ+bEV2VE07KjVkOClAekZP
SnpjOWElRkQ7aFhLPVZrPVdnOTU5eHVQcSpieVkle3FGJiFEZGNpXn1kSStzdgp6PG1pI1E8fG5C
QiF9MWVxS1lVWXo1cnhMZkE7cmtXekZiVXBuVGxsfGNrc295N0VhaEo7bFhQXikqKiljdnh3S3UK
ejNgQ3Q2Wlh7UFIkP0tlcWg9JGRhQHRpV0c1eiU/Sy1yUVJKI0R9TD9qU2Qydil+dTxxczt6MHF3
Oy1LMjhPQGMqCnpHRDgpflJpbzRYTyZWfCRpVjVDfVM1aSp6NWNyUThWS2VGN3J7SFFlMzhze1pT
TUpyS0dDaGVKLVY1KEZXbEJOTgp6eW02LSRNb2lNKGBHbWwzVWZge2kqeXwzIVd0Z2E2IUQtaG9P
akFiT15hLUdzNCFkI3FneS1SUSZsO1gqUU1eSDUKekYjSFQkP1pXJk9ObmMrbTktbDJlSjExPUEh
QCs3T0RZZCpSZityd1lJdyhIfmdMMkFkNFg9JntYWW09PHUpfTxZCno1a3w5RlJkZFllNTVoVF5K
RWI9aXAtNSVmcHJXfUs/TEd0V1VmNTZWT0toJjFnfmp4ejNAWVJAMCZtVEpaUFBNLQp6ZSteV2tB
RkczKHQoVzw9TmF8JkZ7fHx6JSh1KXx9KyEtQDlLcEVGYzw+OWdUJGU4JUg5Kkt9REFXUUVtKVBG
Z2QKejFTRUF0QX5DPHA1bytYfmJ2PHJ+YU9fKW9eT2s3WjZ6NkRrJm1zTFIjaCFZNnVgb1NXSjBY
Q2E2ZGFFVE18ZG85CnpRQm5GPjdyX3YqbnBEalgjTVlfNV4xaWY+VSZLYyZtYnM9K197MHl8a0Eo
Sm57ei1XQHh6b2trPko+I1RgN003fAp6b19ATnNkMWVjZ1A2dEwlVkExPjteQGI8ZEF7R2tpcllk
KVd8QTx2STdhWWIxQzRvTDx0dWN6a1o3bF47X3Z4QWEKelBCWDhnbjBAQ0pqciU3V2tLI2hOcVN2
RmVWVzUkUFpzPHJrQjhXbl97ZFMpZCkrdkYoQFRMPyEmVUU0clhOXy02CnpWaD09Vj9zJEszSGl8
dWJtN2UqTEA4PVU+UT0qKVVMTntFQStXWFkjcSlXYlhabk43Y2JQcFRmSFJ6Q3omYHxIYQp6I1or
NUV6a2lZUFlkUmp2LXolYnIwSUI4KzBkSFRrZEJuP0x5cjc3YEQ/QHB3WTszSHVQTFZhO0FRUUho
Pz9mdnEKelpMRFkpSzY/SWUxNFNRMzI9PDY/ZFpvensxaXRhYWB5T0RBVkI7eyhVcDghKFRiRVRY
bypZPnh5eDdZdDt5YVI1CnpnQSthZCEoTHVockBwRk81ODlQQmg2PiZlYnhsSD15flkpRFRVfm9w
JklaUl9ubiR8NUo3X1VNISFqKWAzVCpAbgp6KDtQLTxOVW1lYWw1YEoqJDYqKT97XnZIRCVPbkt3
KSlkPEtne31IeT5kVmBWXi1UZzxfVjtRenoxPikoPEFtUnQKenpjcmtKVDFzUkhgcjdyM2gpZk90
SjUhQkVIeGI/YTlEcm9rZi04MkBqeGdGdW1GSz5+M2V2ZDgmPzYmUnFtJSE8CnowcTgrN2tqfnFW
d3xrc2MwQSN0d2klKTNvZGNjQiNgK1p3M0t4U2NWO3x0K2ZTajtTVi0/OyV1aVZXTSlANjk4Vwp6
TEc3b31Bbm54VDxTMjNfeUxuSSE5cTRpTWpePExUJUg9PEF0eHFmYztCPDs8YlZuT1pNSl89R2BQ
PHNWbnJLVEIKejdvdEFea3IhfGZKeWlSVXZuUEIyZVg/a2Eodmt4JlRrJjU0VVc0Q0ZNZXQoRFl+
XmlPbmkocz4hYVE5O1Z9JWxuCm9wQipicVNZZzVuNmFNZDFGZypYO3lARTZRdDlMWChlXlk9JVpt
OWp3ekN+eUw4fDtnfj5IcSkkCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127039</attachid>
            <date>2012-02-14 14:02:58 -0800</date>
            <delta_ts>2012-02-15 14:36:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78028-20120214170257.patch</filename>
            <type>text/plain</type>
            <size>34936</size>
            <attacher name="Peter Kotwicz">pkotwicz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3NzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDM2Njk1ZTllMWExOGI5
Y2I5MGQ2NzY0NzQ3ZGZhYjNhMzE2ODVjYy4uZjAzM2RjZGY3MDFiYjFmYjlhMTk1MjU5MTRiZWJk
NjhkZmVkNjI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMiBAQAorMjAxMi0wMi0xNCAgUGV0
ZXIgS290d2ljeiBIZXJuaWN6ZWsgIDxwa290d2ljekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
Tm90IEZvciBSZXZpZXc6IERlY291cGxlIHNjcm9sbGJhciBwYWludGluZyBmcm9tIFNjcm9sbGJh
ciBvYmplY3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc4MDI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6
U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cmVnaXN0ZXJTY3JvbGxi
YXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6Omdl
dFRpY2ttYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmlzU2Nyb2xsYWJsZUFy
ZWFBY3RpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5oOgorICAgICAgICAoU2Ny
b2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6b3JpZW50YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXI6OmN1cnJlbnRQb3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp2aXNpYmxl
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnRvdGFsU2l6ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXI6Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyOjpjb250cm9sU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmxpbmVTdGVw
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFnZVN0ZXApOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjpwcmVzc2VkUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXI6OmhvdmVyZWRQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZW5hYmxlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnRoZW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhcjo6dG9TY3JvbGxiYXJUaGVtZUNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYmFyVGhlbWVDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFNjcm9sbGJhclRoZW1lQ2xpZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZUNsaWVudEltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsOjpTY3JvbGxiYXJUaGVtZUNsaWVudElt
cGwpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ2xpZW50SW1wbC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbDo6eCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNsaWVudEltcGw6OnkpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNsaWVudEltcGw6OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUNsaWVudEltcGw6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDbGllbnRJbXBsOjpsb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNsaWVudEltcGw6OnNldEZyYW1lUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZUNsaWVudEltcGw6OmZyYW1lUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZUNsaWVudEltcGw6OnBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNsaWVudEltcGw6OnJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVDbGllbnRJbXBsOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lQ2xpZW50SW1wbDo6aW52YWxpZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDbGllbnRJbXBsOjpjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsOjpvcmllbnRhdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNsaWVudEltcGw6OnZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbDo6Y3VycmVudFBvcyk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNsaWVudEltcGw6OnZpc2libGVTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbDo6dG90YWxTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbDo6bWF4aW11bSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNsaWVudEltcGw6OmNvbnRyb2xTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbDo6bGluZVN0ZXApOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsOjpwYWdlU3RlcCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNsaWVudEltcGw6OnByZXNzZWRQYXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbDo6aG92ZXJlZFBhcnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsOjplbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbDo6c2V0RW5hYmxlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNsaWVudEltcGw6OmdldFRpY2ttYXJrcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNsaWVudEltcGw6OmlzU2Nyb2xsYWJsZUFy
ZWFBY3RpdmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjpyZWdpc3RlclNjcm9sbGJhcik6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmg6Cisg
ICAgICAgIChSZW5kZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6dG9SZW5kZXJTY3Jv
bGxiYXJUaGVtZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFJlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50
SW1wbDo6UmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChSZW5kZXJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsOjp4KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbDo6eSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGw6OndpZHRoKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbDo6aGVpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbDo6c2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGw6OmxvY2F0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbDo6c2V0RnJh
bWVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50SW1w
bDo6ZnJhbWVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lQ2xp
ZW50SW1wbDo6cGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1l
Q2xpZW50SW1wbDo6cm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVt
ZUNsaWVudEltcGw6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xs
YmFyVGhlbWVDbGllbnRJbXBsOjppbnZhbGlkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGw6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRv
dyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGw6Om9y
aWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50
SW1wbDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGll
bnRJbXBsOjpjdXJyZW50UG9zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRo
ZW1lQ2xpZW50SW1wbDo6dmlzaWJsZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Ny
b2xsYmFyVGhlbWVDbGllbnRJbXBsOjp0b3RhbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsOjptYXhpbXVtKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbDo6Y29udHJvbFNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsOjpsaW5lU3RlcCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGw6OnBhZ2VTdGVwKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbDo6cHJlc3Nl
ZFBhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBs
Ojpob3ZlcmVkUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZUNs
aWVudEltcGw6OmVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhl
bWVDbGllbnRJbXBsOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9s
bGJhclRoZW1lQ2xpZW50SW1wbDo6Z2V0VGlja21hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbDo6aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGw6OmJ1dHRvblJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsOjp0
cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnRJ
bXBsOjp0cmFja1BpZWNlUmVjdFdpdGhNYXJnaW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbDo6cGFpbnRQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbDo6bWluaW11bVRodW1iTGVuZ3RoKToKKwog
MjAxMi0wMi0xNCAgTGV2aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgVXBkYXRlIHVzYWdlIG9mIExheW91dFVuaXRzIGluIFJlbmRlckxheWVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggZmIxNmE1ZmY5Yzk1MDljZjliYmUwZmY0MDg5ZTQxZmY0MDA1MWEzMS4uZjQ3YzQy
MjMwYzc4MThkZmMxZWQ5Y2M3NzcwMzkyMWZhOTkxOWZiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
Mjk0LDYgKzI5NCw5IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vU2Nyb2xsYmFyLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL1Njcm9sbGJhclRoZW1lLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGJhclRo
ZW1lQ2xpZW50LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ2xpZW50
SW1wbC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudEltcGwu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1No
YXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgnLApAQCAtNDQwNyw2ICs0NDEwLDkgQEAKICAgICAgICAg
ICAgICdyZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oJywKICAgICAgICAgICAgICdyZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyVGhlbWUuaCcsCisgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclRoZW1lQ2xpZW50LmgnLAorICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXJUaGVtZUNsaWVudEltcGwuY3BwJywKKyAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVy
U2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5k
ZXJTZWxlY3Rpb25JbmZvLmgnLAogICAgICAgICAgICAgJ3JlbmRlcmluZy9SZW5kZXJTbGlkZXIu
Y3BwJywKICAgICAgICAgICAgICdyZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmgnLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXggM2I5YzE5NWNmZjU1MzkxNjU1NjIwM2UyZjJj
YzRmZTVkOGY5YTUxZS4uMzdmMTE5YjYxMzMwMzNmZDhmNzNlODQzYjg3YWZhZTI4MDAzYzRiOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKICNpbmNsdWRlICJTY3JvbGxhYmxlQXJlYS5oIgog
I2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDbGll
bnRJbXBsLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiAvLyBGSVhNRTogVGhlIGZvbGxvd2lu
ZyAjaW5jbHVkZXMgYXJlIGEgbGF5ZXJpbmcgdmlvbGF0aW9uIGFuZCBzaG91bGQgYmUgcmVtb3Zl
ZC4KQEAgLTkwLDcgKzkxLDcgQEAgU2Nyb2xsYmFyOjpTY3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEq
IHNjcm9sbGFibGVBcmVhLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnQKICAgICBpZiAoIW1f
dGhlbWUpCiAgICAgICAgIG1fdGhlbWUgPSBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKTsKIAotICAg
IG1fdGhlbWUtPnJlZ2lzdGVyU2Nyb2xsYmFyKHRoaXMpOworICAgIHJlZ2lzdGVyU2Nyb2xsYmFy
KCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyB1Z2x5IGFuZCB3b3VsZCBub3QgYmUgbmVjZXNz
YXJ5IGlmIHdlIGZpeCBjcm9zcy1wbGF0Zm9ybSBjb2RlIHRvIGFjdHVhbGx5IHF1ZXJ5IGZvcgog
ICAgIC8vIHNjcm9sbGJhciB0aGlja25lc3MgYW5kIHVzZSBpdCB3aGVuIHNpemluZyBzY3JvbGxi
YXJzIChyYXRoZXIgdGhhbiBsZWF2aW5nIG9uZSBkaW1lbnNpb24gb2YgdGhlIHNjcm9sbGJhcgpA
QCAtMTEyLDYgKzExMywxMiBAQCBTY3JvbGxiYXI6On5TY3JvbGxiYXIoKQogICAgIG1fdGhlbWUt
PnVucmVnaXN0ZXJTY3JvbGxiYXIodGhpcyk7CiB9CiAKK3ZvaWQgU2Nyb2xsYmFyOjpyZWdpc3Rl
clNjcm9sbGJhcigpCit7CisgICAgbV9jbGllbnQgPSBhZG9wdFB0cihuZXcgU2Nyb2xsYmFyVGhl
bWVDbGllbnRJbXBsKHRoaXMpKTsKKyAgICBtX3RoZW1lLT5yZWdpc3RlclNjcm9sbGJhcih0aGlz
KTsKK30gCisKIHZvaWQgU2Nyb2xsYmFyOjpvZmZzZXREaWRDaGFuZ2UoKQogewogICAgIEFTU0VS
VChtX3Njcm9sbGFibGVBcmVhKTsKQEAgLTU1Miw0ICs1NTksMTcgQEAgSW50UG9pbnQgU2Nyb2xs
YmFyOjpjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JiBwYXJlbnRQb2lu
dCkgY29uc3QKICAgICByZXR1cm4gV2lkZ2V0Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KHBh
cmVudFBvaW50KTsKIH0KIAorUGFzc093blB0cjxWZWN0b3I8SW50UmVjdD4gPiBTY3JvbGxiYXI6
OmdldFRpY2ttYXJrcygpIGNvbnN0Cit7CisgICAgT3duUHRyPFZlY3RvcjxJbnRSZWN0PiA+IHRp
Y2ttYXJrcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8SW50UmVjdD4pOworICAgIGlmIChtX3Njcm9s
bGFibGVBcmVhKQorICAgICAgICBtX3Njcm9sbGFibGVBcmVhLT5nZXRUaWNrbWFya3MoKnRpY2tt
YXJrcy5nZXQoKSk7CisgICAgcmV0dXJuIHRpY2ttYXJrcy5yZWxlYXNlKCk7Cit9CisKK2Jvb2wg
U2Nyb2xsYmFyOjppc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9zY3JvbGxhYmxlQXJlYSAmJiBtX3Njcm9sbGFibGVBcmVhLT5pc0FjdGl2ZSgpOworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4
IGU0ZTcyNDY1YmVmN2ZhMGE2ZGU2YjJhZGRhNDAyOWVjODMyY2IwZTcuLjQxYjMwODdlMzFiNzMz
YTgxN2QxYjIxOTk3OWNmNWI0NmZhOTE2NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJh
ci5oCkBAIC0yNiwxMCArMjYsMTIgQEAKICNpZm5kZWYgU2Nyb2xsYmFyX2gKICNkZWZpbmUgU2Ny
b2xsYmFyX2gKIAorI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAi
U2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIldpZGdldC5oIgog
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDYg
KzQ5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyKCk7CiAKKyAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoKTsgCisKICAgICAvLyBDYWxsZWQgYnkgdGhlIFNj
cm9sbGFibGVBcmVhIHdoZW4gdGhlIHNjcm9sbCBvZmZzZXQgY2hhbmdlcy4KICAgICB2b2lkIG9m
ZnNldERpZENoYW5nZSgpOwogCkBAIC01OCwyMiArNjIsMjIgQEAgcHVibGljOgogICAgIFNjcm9s
bGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWE7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0N1c3RvbVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25z
dCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXJPcmllbnRh
dGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KIAotICAg
IGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGxyb3VuZGYobV9jdXJyZW50UG9zKTsgfQotICAg
IGZsb2F0IGN1cnJlbnRQb3MoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRQb3M7IH0KKyAgICB2
aXJ0dWFsIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGxyb3VuZGYobV9jdXJyZW50UG9zKTsg
fQorICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFBvcygpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVu
dFBvczsgfQogICAgIGludCBwcmVzc2VkUG9zKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzc2VkUG9z
OyB9Ci0gICAgaW50IHZpc2libGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlU2l6ZTsg
fQotICAgIGludCB0b3RhbFNpemUoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsU2l6ZTsgfQotICAg
IGludCBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNpemUgLSBtX3Zpc2libGVTaXpl
OyB9ICAgICAgICAKLSAgICBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udHJvbFNpemU7IH0KKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZVNpemU7IH0KKyAgICB2aXJ0dWFsIGludCB0b3RhbFNp
emUoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsU2l6ZTsgfQorICAgIHZpcnR1YWwgaW50IG1heGlt
dW0oKSBjb25zdCB7IHJldHVybiBtX3RvdGFsU2l6ZSAtIG1fdmlzaWJsZVNpemU7IH0gICAgICAg
IAorICAgIHZpcnR1YWwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUoKSBjb25zdCB7
IHJldHVybiBtX2NvbnRyb2xTaXplOyB9CiAKLSAgICBpbnQgbGluZVN0ZXAoKSBjb25zdCB7IHJl
dHVybiBtX2xpbmVTdGVwOyB9Ci0gICAgaW50IHBhZ2VTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlU3RlcDsgfQorICAgIHZpcnR1YWwgaW50IGxpbmVTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9s
aW5lU3RlcDsgfQorICAgIHZpcnR1YWwgaW50IHBhZ2VTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlU3RlcDsgfQogICAgIGZsb2F0IHBpeGVsU3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxT
dGVwOyB9CiAKLSAgICBTY3JvbGxiYXJQYXJ0IHByZXNzZWRQYXJ0KCkgY29uc3QgeyByZXR1cm4g
bV9wcmVzc2VkUGFydDsgfQotICAgIFNjcm9sbGJhclBhcnQgaG92ZXJlZFBhcnQoKSBjb25zdCB7
IHJldHVybiBtX2hvdmVyZWRQYXJ0OyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IHByZXNz
ZWRQYXJ0KCkgY29uc3QgeyByZXR1cm4gbV9wcmVzc2VkUGFydDsgfQorICAgIHZpcnR1YWwgU2Ny
b2xsYmFyUGFydCBob3ZlcmVkUGFydCgpIGNvbnN0IHsgcmV0dXJuIG1faG92ZXJlZFBhcnQ7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgc2V0SG92ZXJlZFBhcnQoU2Nyb2xsYmFyUGFydCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldFByZXNzZWRQYXJ0KFNjcm9sbGJhclBhcnQpOwogCkBAIC04Myw3ICs4Nyw3
IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CiAKLSAgICBib29sIGVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wg
ZSk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNPdmVybGF5U2Nyb2xsYmFyKCkgY29uc3Q7CkBAIC0x
MTAsNyArMTE0LDggQEAgcHVibGljOgogICAgIGJvb2wgY29udGV4dE1lbnUoY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCk7CiAjZW5kaWYKIAotICAgIFNjcm9sbGJhclRoZW1lKiB0aGVt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGhlbWU7IH0KKyAgICBTY3JvbGxiYXJUaGVtZSogdGhlbWUo
KSBjb25zdCB7IHJldHVybiBtX3RoZW1lOyB9IAorICAgIHZpcnR1YWwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHRvU2Nyb2xsYmFyVGhlbWVDbGllbnQoKSB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsg
fQogCiAgICAgdmlydHVhbCB2b2lkIHNldFBhcmVudChTY3JvbGxWaWV3Kik7CiAgICAgdmlydHVh
bCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0Jik7CkBAIC0xMjgsNiArMTMzLDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29u
c3QgSW50UG9pbnQmKSBjb25zdDsKICAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29u
dGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKIAorICAgIHZpcnR1YWwgUGFzc093
blB0cjxWZWN0b3I8SW50UmVjdD4gPiBnZXRUaWNrbWFya3MoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAg
U2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbGJh
ckNvbnRyb2xTaXplLCBTY3JvbGxiYXJUaGVtZSogPSAwKTsKIApAQCAtMTcwLDYgKzE3OCw4IEBA
IHByb3RlY3RlZDoKICAgICAKICAgICBib29sIG1fc3VwcHJlc3NJbnZhbGlkYXRpb247CiAKKyAg
ICBPd25QdHI8U2Nyb2xsYmFyVGhlbWVDbGllbnQ+IG1fY2xpZW50OworCiBwcml2YXRlOgogICAg
IHZpcnR1YWwgYm9vbCBpc1Njcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2
aXJ0dWFsIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyYWFm
NjM4MDM1NDEwZWRjYjZiNzc2MDE3MmQ4NDEyYWQxN2UyOGUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oCkBAIC0wLDAgKzEs
ODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFNjcm9sbGJhclRoZW1lQ2xpZW50X2gKKyNkZWZpbmUgU2Ny
b2xsYmFyVGhlbWVDbGllbnRfaAorCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJ
bnRSZWN0LmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgi
CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsVmlldzsKKworY2xhc3MgU2Nyb2xs
YmFyVGhlbWVDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgaW50IHgoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBpbnQgeSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCB3aWR0aCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBoZWlnaHQoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBJbnRTaXplIHNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRQb2ludCBsb2Nh
dGlvbigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3Qg
SW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3QgZnJhbWVSZWN0KCkgY29uc3QgPSAw
OworCisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiBwYXJlbnQoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBTY3JvbGxWaWV3KiByb290KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGlu
dmFsaWRhdGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IElu
dFJlY3QmKSA9IDA7CisKKyAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmlu
Z1dpbmRvdyhjb25zdCBJbnRQb2ludCYgd2luZG93UG9pbnQpID0gMDsgCisKKyAgICB2aXJ0dWFs
IFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCBpbnQgdmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50UG9z
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHZpc2libGVTaXplKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgaW50IHRvdGFsU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBt
YXhpbXVtKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29u
dHJvbFNpemUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGludCBsaW5lU3RlcCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGludCBwYWdlU3RlcCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1
YWwgU2Nyb2xsYmFyUGFydCBwcmVzc2VkUGFydCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNj
cm9sbGJhclBhcnQgaG92ZXJlZFBhcnQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wg
ZW5hYmxlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sKSA9
IDA7CisKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8VmVjdG9yPEludFJlY3Q+ID4gZ2V0VGlja21h
cmtzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGFibGVBcmVhQWN0aXZl
KCkgY29uc3QgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
U2NvbGxiYXJUaGVtZUNsaWVudF9oCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhclRoZW1lQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNsaWVudEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzMjg3MjZlNTRhY2Uz
YzIxYTc2Y2M5OTgzY2Q0NzJjYzc1NzFjMzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudEltcGwuY3BwCkBAIC0wLDAgKzEsMzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVD
bGllbnRJbXBsLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU2Nyb2xsYmFyVGhlbWVDbGll
bnRJbXBsOjpTY3JvbGxiYXJUaGVtZUNsaWVudEltcGwoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpIDoK
KyAgICBtX3Njcm9sbGJhcihzY3JvbGxiYXIpIHsgfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVD
bGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVu
dEltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xMTAwNjA4YWRlY2ZiZTc0MzdjMjJhNWZjM2JhMjg2ZmRmY2Zl
MzY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWVDbGllbnRJbXBsLmgKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2Nyb2xs
YmFyVGhlbWVDbGllbnRJbXBsX2gKKyNkZWZpbmUgU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsX2gK
KworI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKKyNpbmNsdWRlICJTY3JvbGxiYXIuaCIKKyNpbmNs
dWRlICJTY3JvbGxiYXJUaGVtZUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNsaWVu
dCB7CitwdWJsaWM6CisgICAgU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsKFNjcm9sbGJhciopOwor
CisgICAgdmlydHVhbCBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFyLT54KCk7IH0K
KyAgICB2aXJ0dWFsIGludCB5KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXItPnkoKTsgfQor
ICAgIHZpcnR1YWwgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXItPndpZHRo
KCk7IH0KKyAgICB2aXJ0dWFsIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJh
ci0+aGVpZ2h0KCk7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2Nyb2xsYmFyLT5zaXplKCk7IH0KKyAgICB2aXJ0dWFsIEludFBvaW50IGxvY2F0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXItPmxvY2F0aW9uKCk7IH0KKworICAgIHZpcnR1YWwg
dm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgeyBtX3Njcm9sbGJhci0+c2V0
RnJhbWVSZWN0KHJlY3QpOyB9CisgICAgdmlydHVhbCBJbnRSZWN0IGZyYW1lUmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKTsgfQorCisgICAgdmlydHVhbCBTY3Jv
bGxWaWV3KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJhci0+cGFyZW50KCk7IH0K
KyAgICB2aXJ0dWFsIFNjcm9sbFZpZXcqIHJvb3QoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJh
ci0+cm9vdCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIHsgbV9zY3JvbGxi
YXItPmludmFsaWRhdGUoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25z
dCBJbnRSZWN0JiByZWN0KSB7IG1fc2Nyb2xsYmFyLT5pbnZhbGlkYXRlUmVjdChyZWN0KTsgfQor
CisgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coY29uc3Qg
SW50UG9pbnQmIHdpbmRvd1BvaW50KSB7IHJldHVybiBtX3Njcm9sbGJhci0+Y29udmVydEZyb21D
b250YWluaW5nV2luZG93KHdpbmRvd1BvaW50KTsgfQorCisgICAgdmlydHVhbCBTY3JvbGxiYXJP
cmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFyLT5vcmll
bnRhdGlvbigpOyB9CisKKyAgICB2aXJ0dWFsIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Nyb2xsYmFyLT52YWx1ZSgpOyB9CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50UG9zKCkgY29u
c3QgeyByZXR1cm4gbV9zY3JvbGxiYXItPmN1cnJlbnRQb3MoKTsgfQorICAgIHZpcnR1YWwgaW50
IHZpc2libGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXItPnZpc2libGVTaXplKCk7
IH0KKyAgICB2aXJ0dWFsIGludCB0b3RhbFNpemUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJh
ci0+dG90YWxTaXplKCk7IH0KKyAgICB2aXJ0dWFsIGludCBtYXhpbXVtKCkgY29uc3QgeyByZXR1
cm4gbV9zY3JvbGxiYXItPm1heGltdW0oKTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyQ29udHJv
bFNpemUgY29udHJvbFNpemUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJhci0+Y29udHJvbFNp
emUoKTsgfQorCisgICAgdmlydHVhbCBpbnQgbGluZVN0ZXAoKSBjb25zdCB7IHJldHVybiBtX3Nj
cm9sbGJhci0+bGluZVN0ZXAoKTsgfQorICAgIHZpcnR1YWwgaW50IHBhZ2VTdGVwKCkgY29uc3Qg
eyByZXR1cm4gbV9zY3JvbGxiYXItPnBhZ2VTdGVwKCk7IH0KKworICAgIHZpcnR1YWwgU2Nyb2xs
YmFyUGFydCBwcmVzc2VkUGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFyLT5wcmVzc2Vk
UGFydCgpOyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhvdmVyZWRQYXJ0KCkgY29uc3Qg
eyByZXR1cm4gbV9zY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCk7IH0KKworICAgIHZpcnR1YWwgYm9v
bCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXItPmVuYWJsZWQoKTsgfQorICAg
IHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wgZSkgeyBtX3Njcm9sbGJhci0+c2V0RW5hYmxl
ZChlKTsgfQorCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFZlY3RvcjxJbnRSZWN0PiA+IGdldFRp
Y2ttYXJrcygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFyLT5nZXRUaWNrbWFya3MoKTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JvbGxiYXItPmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKTsgfQorCitwcml2YXRlOgorICAg
IFNjcm9sbGJhciogbV9zY3JvbGxiYXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBTY29sbGJhclRoZW1lQ2xpZW50SW1wbF9oCisKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAKaW5kZXggMjVlYjVhN2IzYzM4ZWUzNGU0YWRl
ODM0MDAxOGRiNzg3ODgwYTQ5ZS4uZDVlZmYyNjk4Mzk2MDlhYTgxMzg5YTA1N2RmNmY2NDM0Zjc2
NGU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJQYXJ0LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU2Nyb2xsYmFyUGFydC5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhclRoZW1lLmgiCisj
aW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNzUsNiArNzYsMTIgQEAgUmVuZGVyU2Nyb2xsYmFyOjp+UmVuZGVyU2Ny
b2xsYmFyKCkKICAgICB9CiB9CiAKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyOjpyZWdpc3RlclNjcm9s
bGJhcigpCit7CisgICAgbV9jbGllbnQgPSBhZG9wdFB0cihuZXcgUmVuZGVyU2Nyb2xsYmFyVGhl
bWVDbGllbnRJbXBsKHRoaXMpKTsKKyAgICBtX3RoZW1lLT5yZWdpc3RlclNjcm9sbGJhcih0aGlz
KTsKK30KKwogUmVuZGVyQm94KiBSZW5kZXJTY3JvbGxiYXI6Om93bmluZ1JlbmRlcmVyKCkgY29u
c3QKIHsKICAgICBpZiAobV9vd25pbmdGcmFtZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhci5oCmluZGV4IDgxMGM5OGZmMzY2OGFiOTFjZGU5YzM1NzE4ZDZmMDRi
MmY3NDY3MWIuLjM4NjRlZjY2ZWIwZjI3M2U3OWE1ZGE1NjUwNGQ0YzJmYzI5NWQ5YzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNpZm5kZWYgUmVuZGVyU2Nyb2xsYmFyX2gKICNkZWZpbmUgUmVuZGVyU2Nyb2xsYmFyX2gK
IAorI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU3R5bGVDb25zdGFudHMuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgpAQCAtNDYsMTkgKzQ3LDIxIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTY3JvbGxiYXI+IGNyZWF0ZUN1c3RvbVNjcm9sbGJhcihTY3JvbGxhYmxlQXJlYSos
IFNjcm9sbGJhck9yaWVudGF0aW9uLCBSZW5kZXJCb3gqLCBGcmFtZSogb3duaW5nRnJhbWUgPSAw
KTsKICAgICB2aXJ0dWFsIH5SZW5kZXJTY3JvbGxiYXIoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlclNjcm9sbGJhcigpOworCiAgICAgc3RhdGljIFNjcm9sbGJhclBhcnQgcGFydEZvclN0
eWxlUmVzb2x2ZSgpOwogICAgIHN0YXRpYyBSZW5kZXJTY3JvbGxiYXIqIHNjcm9sbGJhckZvclN0
eWxlUmVzb2x2ZSgpOwogCiAgICAgUmVuZGVyQm94KiBvd25pbmdSZW5kZXJlcigpIGNvbnN0Owog
ICAgIHZvaWQgY2xlYXJPd25pbmdSZW5kZXJlcigpIHsgbV9vd25lciA9IDA7IH0KIAotICAgIHZv
aWQgcGFpbnRQYXJ0KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclBhcnQsIGNvbnN0IEludFJl
Y3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRQYXJ0KEdyYXBoaWNzQ29udGV4dCosIFNjcm9s
bGJhclBhcnQsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIEludFJlY3QgYnV0dG9uUmVjdChTY3Jv
bGxiYXJQYXJ0KTsKLSAgICBJbnRSZWN0IHRyYWNrUmVjdChpbnQgc3RhcnRMZW5ndGgsIGludCBl
bmRMZW5ndGgpOwotICAgIEludFJlY3QgdHJhY2tQaWVjZVJlY3RXaXRoTWFyZ2lucyhTY3JvbGxi
YXJQYXJ0LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBJbnRSZWN0IGJ1dHRvblJlY3Qo
U2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChpbnQgc3RhcnRM
ZW5ndGgsIGludCBlbmRMZW5ndGgpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1BpZWNlUmVj
dFdpdGhNYXJnaW5zKFNjcm9sbGJhclBhcnQsIGNvbnN0IEludFJlY3QmKTsKIAotICAgIGludCBt
aW5pbXVtVGh1bWJMZW5ndGgoKTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgo
KTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc092ZXJsYXlTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogCkBAIC05MSw2ICs5NCwxMSBAQCBpbmxpbmUgUmVuZGVyU2Nyb2xsYmFyKiB0
b1JlbmRlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8UmVuZGVyU2Nyb2xsYmFyKj4oc2Nyb2xsYmFyKTsKIH0KIAoraW5saW5lIFJlbmRlclNj
cm9sbGJhclRoZW1lQ2xpZW50KiB0b1JlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50KFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBjbGllbnQpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlclNj
cm9sbGJhclRoZW1lQ2xpZW50Kj4oY2xpZW50KTsKK30KKwogLy8gVGhpcyB3aWxsIGNhdGNoIGFu
eW9uZSBkb2luZyBhbiB1bm5lY2Vzc2FyeSBjYXN0Lgogdm9pZCB0b1JlbmRlclNjcm9sbGJhcihj
b25zdCBSZW5kZXJTY3JvbGxiYXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yN2ZkZTViODQ2
NDU2MDgwNjE0YjhlMzViNmJmMzdiMDBjY2E3MzYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50LmgKQEAgLTAsMCAr
MSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgUmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnRfaAorI2Rl
ZmluZSBSZW5kZXJTY3JvbGxiYXJUaGVtZUNsaWVudF9oCisKKyNpbmNsdWRlICJTY3JvbGxiYXJU
aGVtZUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKKworY2xhc3MgUmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnQgOiBwdWJsaWMgU2Nyb2xs
YmFyVGhlbWVDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgSW50UmVjdCBidXR0b25SZWN0
KFNjcm9sbGJhclBhcnQpID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KGludCBz
dGFydExlbmd0aCwgaW50IGVuZExlbmd0aCkgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFj
a1BpZWNlUmVjdFdpdGhNYXJnaW5zKFNjcm9sbGJhclBhcnQsIGNvbnN0IEludFJlY3QmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHBhaW50UGFydChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJQ
YXJ0LCBjb25zdCBJbnRSZWN0JikgPSAwOworCisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1i
TGVuZ3RoKCkgPSAwOyAgICAKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIFJlbmRlclNjb2xsYmFyVGhlbWVDbGllbnRJbXBsX2gKKwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNjJjNTUwZTQzZjc5YWQ1NGZlZmJiMmViNGVkODRiNjBlOTY4NzVlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clRoZW1lQ2xpZW50SW1wbC5jcHAKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGwuaCIKKwor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Jl
bmRlclNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbDo6UmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnRJ
bXBsKFJlbmRlclNjcm9sbGJhciogc2Nyb2xsYmFyKQorICAgIDogbV9zY3JvbGxiYXIoc2Nyb2xs
YmFyKSB7IH0KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI2ZGRkZTdkZTMxODBjZTE1MjliODNjNjRmNWVmMGIwODQ4NDQ4ZTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWVD
bGllbnRJbXBsLmgKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUmVuZGVyU2Nyb2xs
YmFyVGhlbWVDbGllbnRJbXBsX2gKKyNkZWZpbmUgUmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnRJ
bXBsX2gKKworI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2lu
Y2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIKKyNpbmNsdWRl
ICJTY3JvbGxWaWV3LmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBSZW5kZXJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGwg
OiBwdWJsaWMgUmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnQgeworcHVibGljOgorICAgIFJlbmRl
clNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbChSZW5kZXJTY3JvbGxiYXIqKTsKKworICAgIHZpcnR1
YWwgaW50IHgoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJhci0+eCgpOyB9CisgICAgdmlydHVh
bCBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFyLT55KCk7IH0KKyAgICB2aXJ0dWFs
IGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFyLT53aWR0aCgpOyB9CisgICAg
dmlydHVhbCBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXItPmhlaWdodCgp
OyB9CisgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJh
ci0+c2l6ZSgpOyB9CisgICAgdmlydHVhbCBJbnRQb2ludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fc2Nyb2xsYmFyLT5sb2NhdGlvbigpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJh
bWVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgbV9zY3JvbGxiYXItPnNldEZyYW1lUmVjdChy
ZWN0KTsgfQorICAgIHZpcnR1YWwgSW50UmVjdCBmcmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBt
X3Njcm9sbGJhci0+ZnJhbWVSZWN0KCk7IH0KKworICAgIHZpcnR1YWwgU2Nyb2xsVmlldyogcGFy
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXItPnBhcmVudCgpOyB9CisgICAgdmlydHVh
bCBTY3JvbGxWaWV3KiByb290KCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXItPnJvb3QoKTsg
fQorCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKSB7IG1fc2Nyb2xsYmFyLT5pbnZhbGlk
YXRlKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCkgeyBtX3Njcm9sbGJhci0+aW52YWxpZGF0ZVJlY3QocmVjdCk7IH0KKworICAgIHZpcnR1
YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nV2luZG93KGNvbnN0IEludFBvaW50JiB3
aW5kb3dQb2ludCkgeyByZXR1cm4gbV9zY3JvbGxiYXItPmNvbnZlcnRGcm9tQ29udGFpbmluZ1dp
bmRvdyh3aW5kb3dQb2ludCk7IH0KKworICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3JpZW50YXRpb24g
b3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJhci0+b3JpZW50YXRpb24oKTsg
fQorCisgICAgdmlydHVhbCBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJhci0+
dmFsdWUoKTsgfQorICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFBvcygpIGNvbnN0IHsgcmV0dXJu
IG1fc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCk7IH0KKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFyLT52aXNpYmxlU2l6ZSgpOyB9CisgICAgdmly
dHVhbCBpbnQgdG90YWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXItPnRvdGFsU2l6
ZSgpOyB9CisgICAgdmlydHVhbCBpbnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xs
YmFyLT5tYXhpbXVtKCk7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRy
b2xTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXItPmNvbnRyb2xTaXplKCk7IH0KKwor
ICAgIHZpcnR1YWwgaW50IGxpbmVTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxiYXItPmxp
bmVTdGVwKCk7IH0KKyAgICB2aXJ0dWFsIGludCBwYWdlU3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Nyb2xsYmFyLT5wYWdlU3RlcCgpOyB9CisKKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgcHJl
c3NlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGJhci0+cHJlc3NlZFBhcnQoKTsgfQor
ICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBob3ZlcmVkUGFydCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2Nyb2xsYmFyLT5ob3ZlcmVkUGFydCgpOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFyLT5lbmFibGVkKCk7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RW5hYmxlZChib29sIGUpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKworICAgIHZp
cnR1YWwgUGFzc093blB0cjxWZWN0b3I8SW50UmVjdD4gPiBnZXRUaWNrbWFya3MoKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbGJhci0+Z2V0VGlja21hcmtzKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsYmFyLT5pc1Nj
cm9sbGFibGVBcmVhQWN0aXZlKCk7IH0KKworICAgIHZpcnR1YWwgSW50UmVjdCBidXR0b25SZWN0
KFNjcm9sbGJhclBhcnQgcGFydFR5cGUpIHsgcmV0dXJuIG1fc2Nyb2xsYmFyLT5idXR0b25SZWN0
KHBhcnRUeXBlKTsgfQorICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoaW50IHN0YXJ0TGVu
Z3RoLCBpbnQgZW5kTGVuZ3RoKSB7IHJldHVybiBtX3Njcm9sbGJhci0+dHJhY2tSZWN0KHN0YXJ0
TGVuZ3RoLCBlbmRMZW5ndGgpOyB9CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUGllY2VSZWN0
V2l0aE1hcmdpbnMoU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgY29uc3QgSW50UmVjdCYgb2xkUmVj
dCkgeyByZXR1cm4gbV9zY3JvbGxiYXItPnRyYWNrUGllY2VSZWN0V2l0aE1hcmdpbnMocGFydFR5
cGUsIG9sZFJlY3QpOyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50UGFydChHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgY29uc3QgSW50UmVj
dCYgcmVjdCkgeyBtX3Njcm9sbGJhci0+cGFpbnRQYXJ0KGdyYXBoaWNzQ29udGV4dCwgcGFydFR5
cGUsIHJlY3QpOyB9CisKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoKSB7IHJl
dHVybiBtX3Njcm9sbGJhci0+bWluaW11bVRodW1iTGVuZ3RoKCk7IH0KKworcHJpdmF0ZToKKyAg
ICBSZW5kZXJTY3JvbGxiYXIqIG1fc2Nyb2xsYmFyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gUmVuZGVyU2NvbGxiYXJUaGVtZUNsaWVudEltcGxfaAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127239</attachid>
            <date>2012-02-15 14:37:00 -0800</date>
            <delta_ts>2012-02-17 10:45:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78028-20120215173658.patch</filename>
            <type>text/plain</type>
            <size>23688</size>
            <attacher name="Peter Kotwicz">pkotwicz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3ODQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjc5YTE5N2E3OGM5MTll
N2QyNDAwNjdiN2ZhYjBmNjZmNTc5NDI4ZC4uYjczNmE1MzA1ZmZlMTIyZGJhNTQxYzdmYWNjM2Jh
ZjQ0MTdkM2FmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDEyLTAyLTE1ICBQZXRl
ciBLb3R3aWN6ICA8cGtvdHdpY3pAZ29vZ2xlLmNvbT4KKworICAgICAgICBOb3QgRm9yIFJldmll
dzogRGVjb3VwbGUgc2Nyb2xsYmFyIHBhaW50aW5nIGZyb20gU2Nyb2xsYmFyIG9iamVjdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwMjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IChPT1BTISkKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpnZXRUaWNrbWFya3Mp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmlzU2Ny
b2xsYWJsZUFyZWFBY3RpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5oOgorICAg
ICAgICAoU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6b3JpZW50YXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp2YWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXI6OmN1cnJlbnRQb3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
Ojp2aXNpYmxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnRvdGFsU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6Om1heGltdW0pOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjpjb250cm9sU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6
OmxpbmVTdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFnZVN0ZXApOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpwcmVzc2VkUGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXI6OmhvdmVyZWRQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6
ZW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OngpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjp5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6d2lkdGgp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bG9jYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpwYXJlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjpyb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZnJh
bWVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6aW52YWxpZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lQ2xpZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9XaWRnZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6eCk6CisgICAgICAg
IChXZWJDb3JlOjpXaWRnZXQ6OnkpOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0Ojp3aWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OmhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpX
aWRnZXQ6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0Ojpsb2NhdGlvbik6CisgICAg
ICAgIChXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0OjppbnZhbGlkYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldpZGdldDo6cGFyZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU2Nyb2xsYmFyLmg6CisgICAgICAgIChSZW5kZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU2Nyb2xsYmFyOjp4KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9s
bGJhcjo6eSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OndpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6aGVpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNjcm9sbGJhcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXI6OmxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6c2V0
RnJhbWVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6ZnJhbWVSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6cGFyZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6cm9vdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTY3JvbGxiYXI6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xs
YmFyOjppbnZhbGlkYXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6
OmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
Y3JvbGxiYXI6Om9yaWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJh
cjo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjpjdXJyZW50UG9z
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6dmlzaWJsZVNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjp0b3RhbFNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU2Nyb2xsYmFyOjptYXhpbXVtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNjcm9sbGJhcjo6Y29udHJvbFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xs
YmFyOjpsaW5lU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OnBhZ2VT
dGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhcjo6cHJlc3NlZFBhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyOjpob3ZlcmVkUGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXI6OmVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU2Nyb2xsYmFyOjpnZXRUaWNrbWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U2Nyb2xsYmFyOjppc1Njcm9sbGFibGVBcmVhQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OnRv
UmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50Lmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChSZW5kZXJTY3JvbGxiYXJUaGVtZUNsaWVudCk6CisKIDIw
MTItMDItMTUgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAg
ICBXaGVlbCBldmVudHMgc2hvdWxkIGJlIHJlLWRpc3BhdGNoZWQgdG8gdGhlIHNjcm9sbGluZyB0
aHJlYWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA0ZTZhMmM2NjU4MWY4NTZhZGI4YjFkNDM0ZGY3OWVi
MWUwNjE1ZDZlLi5mMjFkYTNlZmY1NTE5MzczZWMyYmI5M2EzNTU0MTYyYTU0MmFjYjJjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0yOTQsNiArMjk0LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9T
Y3JvbGxhYmxlQXJlYS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxiYXIuaCcsCiAg
ICAgICAgICAgICAncGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2Vh
cmNoUG9wdXBNZW51LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9TaGFyZWRCdWZmZXJDaHVua1JlYWRlci5oJywKQEAgLTQ0
MDcsNiArNDQwOCw3IEBACiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBh
cnQuaCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcCcs
CiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgnLAorICAgICAg
ICAgICAgJ3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZUNsaWVudC5oJywKICAgICAgICAg
ICAgICdyZW5kZXJpbmcvUmVuZGVyU2VsZWN0aW9uSW5mby5oJywKICAgICAgICAgICAgICdyZW5k
ZXJpbmcvUmVuZGVyU2xpZGVyLmNwcCcsCiAgICAgICAgICAgICAncmVuZGVyaW5nL1JlbmRlclNs
aWRlci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCmluZGV4IDNiOWMxOTVj
ZmY1NTM5MTY1NTYyMDNlMmYyY2M0ZmU1ZDhmOWE1MWUuLmQ5ZjZlOWIyMTM2YTE0ZjNkNGIwNjJk
OThiOGUyOGFjNDhmOTA2YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGJhci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsYmFyVGhlbWUuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CisjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogCiAvLyBGSVhNRTogVGhlIGZvbGxvd2luZyAjaW5jbHVkZXMgYXJlIGEgbGF5ZXJp
bmcgdmlvbGF0aW9uIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4KICNpbmNsdWRlICJBWE9iamVjdENh
Y2hlLmgiCkBAIC01NTIsNCArNTUzLDE3IEBAIEludFBvaW50IFNjcm9sbGJhcjo6Y29udmVydEZy
b21Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYgcGFyZW50UG9pbnQpIGNvbnN0CiAgICAg
cmV0dXJuIFdpZGdldDo6Y29udmVydEZyb21Db250YWluaW5nVmlldyhwYXJlbnRQb2ludCk7CiB9
CiAKK1Bhc3NPd25QdHI8VmVjdG9yPEludFJlY3Q+ID4gU2Nyb2xsYmFyOjpnZXRUaWNrbWFya3Mo
KSBjb25zdAoreworICAgIE93blB0cjxWZWN0b3I8SW50UmVjdD4gPiB0aWNrbWFya3MgPSBhZG9w
dFB0cihuZXcgVmVjdG9yPEludFJlY3Q+KTsKKyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYSkKKyAg
ICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+Z2V0VGlja21hcmtzKCp0aWNrbWFya3MuZ2V0KCkpOwor
ICAgIHJldHVybiB0aWNrbWFya3MucmVsZWFzZSgpOworfQorCitib29sIFNjcm9sbGJhcjo6aXNT
Y3JvbGxhYmxlQXJlYUFjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFy
ZWEgJiYgbV9zY3JvbGxhYmxlQXJlYS0+aXNBY3RpdmUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAppbmRleCBlNGU3MjQ2NWJlZjdm
YTBhNmRlNmIyYWRkYTQwMjllYzgzMmNiMGU3Li5hZThjM2RhZWM3NDcxNmU4NTc3MGFhZGY0M2I3
NTAwMDJmMTZmMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaApAQCAtMjYsNiAr
MjYsNyBAQAogI2lmbmRlZiBTY3JvbGxiYXJfaAogI2RlZmluZSBTY3JvbGxiYXJfaAogCisjaW5j
bHVkZSAiU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgog
I2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV2lkZ2V0LmgiCkBAIC00MCw3ICs0MSw5IEBA
IGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwogY2xhc3Mg
U2Nyb2xsYmFyVGhlbWU7CiAKLWNsYXNzIFNjcm9sbGJhciA6IHB1YmxpYyBXaWRnZXQgeworY2xh
c3MgU2Nyb2xsYmFyIDogcHVibGljIFdpZGdldAorICAgICAgICAgICAgICAgICAgcHVibGljIFNj
cm9sbGJhclRoZW1lQ2xpZW50IHsKKwogcHVibGljOgogICAgIC8vIE11c3QgYmUgaW1wbGVtZW50
ZWQgYnkgcGxhdGZvcm1zIHRoYXQgY2FuJ3Qgc2ltcGx5IHVzZSB0aGUgU2Nyb2xsYmFyIGJhc2Ug
Y2xhc3MuICBSaWdodCBub3cgdGhlIG9ubHkgcGxhdGZvcm0gdGhhdCBpcyBub3QgdXNpbmcgdGhl
IGJhc2UgY2xhc3MgaXMgR1RLLgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gY3Jl
YXRlTmF0aXZlU2Nyb2xsYmFyKFNjcm9sbGFibGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24g
b3JpZW50YXRpb24sIFNjcm9sbGJhckNvbnRyb2xTaXplIHNpemUpOwpAQCAtNTgsMzIgKzYxLDMy
IEBAIHB1YmxpYzoKICAgICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEoKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbGFibGVBcmVhOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21T
Y3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIFNjcm9sbGJhck9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgIHZp
cnR1YWwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBt
X29yaWVudGF0aW9uOyB9CiAKLSAgICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBscm91bmRm
KG1fY3VycmVudFBvcyk7IH0KLSAgICBmbG9hdCBjdXJyZW50UG9zKCkgY29uc3QgeyByZXR1cm4g
bV9jdXJyZW50UG9zOyB9CisgICAgdmlydHVhbCBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBs
cm91bmRmKG1fY3VycmVudFBvcyk7IH0KKyAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRQb3MoKSBj
b25zdCB7IHJldHVybiBtX2N1cnJlbnRQb3M7IH0KICAgICBpbnQgcHJlc3NlZFBvcygpIGNvbnN0
IHsgcmV0dXJuIG1fcHJlc3NlZFBvczsgfQotICAgIGludCB2aXNpYmxlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmlzaWJsZVNpemU7IH0KLSAgICBpbnQgdG90YWxTaXplKCkgY29uc3QgeyByZXR1
cm4gbV90b3RhbFNpemU7IH0KLSAgICBpbnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90
YWxTaXplIC0gbV92aXNpYmxlU2l6ZTsgfSAgICAgICAgCi0gICAgU2Nyb2xsYmFyQ29udHJvbFNp
emUgY29udHJvbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xTaXplOyB9CisgICAgdmly
dHVhbCBpbnQgdmlzaWJsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGVTaXplOyB9Cisg
ICAgdmlydHVhbCBpbnQgdG90YWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNpemU7IH0K
KyAgICB2aXJ0dWFsIGludCBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNpemUgLSBt
X3Zpc2libGVTaXplOyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9s
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbFNpemU7IH0KIAotICAgIGludCBsaW5lU3Rl
cCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZVN0ZXA7IH0KLSAgICBpbnQgcGFnZVN0ZXAoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VTdGVwOyB9CisgICAgdmlydHVhbCBpbnQgbGluZVN0ZXAoKSBjb25z
dCB7IHJldHVybiBtX2xpbmVTdGVwOyB9CisgICAgdmlydHVhbCBpbnQgcGFnZVN0ZXAoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VTdGVwOyB9CiAgICAgZmxvYXQgcGl4ZWxTdGVwKCkgY29uc3QgeyBy
ZXR1cm4gbV9waXhlbFN0ZXA7IH0KIAotICAgIFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQoKSBj
b25zdCB7IHJldHVybiBtX3ByZXNzZWRQYXJ0OyB9Ci0gICAgU2Nyb2xsYmFyUGFydCBob3ZlcmVk
UGFydCgpIGNvbnN0IHsgcmV0dXJuIG1faG92ZXJlZFBhcnQ7IH0KKyAgICB2aXJ0dWFsIFNjcm9s
bGJhclBhcnQgcHJlc3NlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXNzZWRQYXJ0OyB9Cisg
ICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhvdmVyZWRQYXJ0KCkgY29uc3QgeyByZXR1cm4gbV9o
b3ZlcmVkUGFydDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRIb3ZlcmVkUGFydChTY3JvbGxiYXJQ
YXJ0KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJlc3NlZFBhcnQoU2Nyb2xsYmFyUGFydCk7CiAK
ICAgICB2b2lkIHNldFN0ZXBzKGludCBsaW5lU3RlcCwgaW50IHBhZ2VTdGVwLCBpbnQgcGl4ZWxz
UGVyU3RlcCA9IDEpOwogICAgIHZvaWQgc2V0UHJvcG9ydGlvbihpbnQgdmlzaWJsZVNpemUsIGlu
dCB0b3RhbFNpemUpOwogICAgIHZvaWQgc2V0UHJlc3NlZFBvcyhpbnQgcCkgeyBtX3ByZXNzZWRQ
b3MgPSBwOyB9Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CiAKLSAgICBib29sIGVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wg
ZSk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNPdmVybGF5U2Nyb2xsYmFyKCkgY29uc3Q7CkBAIC05
Nyw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBtb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpOwogICAgIHZvaWQgbW91c2VFbnRlcmVkKCk7CiAgICAgYm9vbCBtb3VzZUV4
aXRlZCgpOwotICAgIAorCiAgICAgLy8gVXNlZCBieSBzb21lIHBsYXRmb3JtIHNjcm9sbGJhcnMg
dG8ga25vdyB3aGVuIHRoZXkndmUgYmVlbiByZWxlYXNlZCBmcm9tIGNhcHR1cmUuCiAgICAgYm9v
bCBtb3VzZVVwKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCkBAIC0xMTIsMTEgKzExNSwy
MyBAQCBwdWJsaWM6CiAKICAgICBTY3JvbGxiYXJUaGVtZSogdGhlbWUoKSBjb25zdCB7IHJldHVy
biBtX3RoZW1lOyB9CiAKKyAgICB2aXJ0dWFsIGludCB4KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0
Ojp4KCk7IH0KKyAgICB2aXJ0dWFsIGludCB5KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0Ojp5KCk7
IH0KKyAgICB2aXJ0dWFsIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6d2lkdGgo
KTsgfQorICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6aGVp
Z2h0KCk7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIFdpZGdl
dDo6c2l6ZSgpOyB9CisgICAgdmlydHVhbCBJbnRQb2ludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIFdpZGdldDo6bG9jYXRpb24oKTsgfQorCiAgICAgdmlydHVhbCB2b2lkIHNldFBhcmVudChT
Y3JvbGxWaWV3Kik7CisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiBwYXJlbnQoKSBjb25zdCB7IHJl
dHVybiBXaWRnZXQ6OnBhcmVudCgpOyB9CisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiByb290KCkg
Y29uc3QgeyByZXR1cm4gV2lkZ2V0Ojpyb290KCk7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBzZXRG
cmFtZVJlY3QoY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgSW50UmVjdCBmcmFtZVJlY3Qo
KSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OmZyYW1lUmVjdCgpOyB9CiAKKyAgICB2aXJ0dWFsIHZv
aWQgaW52YWxpZGF0ZSgpIHsgV2lkZ2V0OjppbnZhbGlkYXRlKCk7IH0KICAgICB2aXJ0dWFsIHZv
aWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYpOwotICAgIAorCiAgICAgYm9vbCBzdXBw
cmVzc0ludmFsaWRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3NJbnZhbGlkYXRpb247
IH0KICAgICB2b2lkIHNldFN1cHByZXNzSW52YWxpZGF0aW9uKGJvb2wgcykgeyBtX3N1cHByZXNz
SW52YWxpZGF0aW9uID0gczsgfQogCkBAIC0xMjQsMTAgKzEzOSwxNSBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIEludFJlY3QgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYp
IGNvbnN0OwogICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNv
bnN0IEludFJlY3QmKSBjb25zdDsKLSAgICAKKwogICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVy
dFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKICAgICB2aXJ0dWFsIElu
dFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdDsK
IAorICAgIHZpcnR1YWwgUGFzc093blB0cjxWZWN0b3I8SW50UmVjdD4gPiBnZXRUaWNrbWFya3Mo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpIGNvbnN0
OworCisgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coY29u
c3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSB7IHJldHVybiBXaWRnZXQ6OmNvbnZlcnRGcm9tQ29u
dGFpbmluZ1dpbmRvdyh3aW5kb3dQb2ludCk7IH0KKwogcHJvdGVjdGVkOgogICAgIFNjcm9sbGJh
cihTY3JvbGxhYmxlQXJlYSosIFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9s
U2l6ZSwgU2Nyb2xsYmFyVGhlbWUqID0gMCk7CiAKQEAgLTE0MSw3ICsxNjEsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBhdXRvc2Nyb2xsUHJlc3NlZFBhcnQoZG91YmxlIGRlbGF5KTsKICAgICBT
Y3JvbGxEaXJlY3Rpb24gcHJlc3NlZFBhcnRTY3JvbGxEaXJlY3Rpb24oKTsKICAgICBTY3JvbGxH
cmFudWxhcml0eSBwcmVzc2VkUGFydFNjcm9sbEdyYW51bGFyaXR5KCk7Ci0gICAgCisKICAgICB2
b2lkIG1vdmVUaHVtYihpbnQgcG9zLCBib29sIGRyYWdnaW5nRG9jdW1lbnQgPSBmYWxzZSk7CiAK
ICAgICBTY3JvbGxhYmxlQXJlYSogbV9zY3JvbGxhYmxlQXJlYTsKQEAgLTE2Nyw3ICsxODcsNyBA
QCBwcm90ZWN0ZWQ6CiAKICAgICBUaW1lcjxTY3JvbGxiYXI+IG1fc2Nyb2xsVGltZXI7CiAgICAg
Ym9vbCBtX292ZXJsYXBzUmVzaXplcjsKLSAgICAKKwogICAgIGJvb2wgbV9zdXBwcmVzc0ludmFs
aWRhdGlvbjsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXJUaGVtZUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjMjBhMDBlMzNhNmE5ZjRlMTY4NDAwYzMxOWU0
YmQ4MmFlZWMyNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxiYXJUaGVtZUNsaWVudC5oCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNj
cm9sbGJhclRoZW1lQ2xpZW50X2gKKyNkZWZpbmUgU2Nyb2xsYmFyVGhlbWVDbGllbnRfaAorCisj
aW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiSW50
U2l6ZS5oIgorI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgU2Nyb2xsVmlldzsKKworY2xhc3MgU2Nyb2xsYmFyVGhlbWVDbGllbnQgeworcHVibGlj
OgorICAgIHZpcnR1YWwgaW50IHgoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgeSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCB3aWR0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGludCBoZWlnaHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBJbnRQb2ludCBsb2NhdGlvbigpIGNvbnN0ID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpID0gMDsKKyAgICB2aXJ0
dWFsIEludFJlY3QgZnJhbWVSZWN0KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTY3JvbGxW
aWV3KiBwYXJlbnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiByb290KCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKSA9IDA7CisKKyAgICB2aXJ0
dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhjb25zdCBJbnRQb2ludCYg
d2luZG93UG9pbnQpID0gMDsKKworICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3Jp
ZW50YXRpb24oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGludCB2YWx1ZSgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRQb3MoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCBpbnQgdmlzaWJsZVNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgdG90YWxTaXpl
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IG1heGltdW0oKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSgpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgaW50IGxpbmVTdGVwKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHBh
Z2VTdGVwKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IHByZXNzZWRQ
YXJ0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBob3ZlcmVkUGFydCgp
IGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpID0gMDsKKworICAgIHZpcnR1YWwgUGFzc093
blB0cjxWZWN0b3I8SW50UmVjdD4gPiBnZXRUaWNrbWFya3MoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSBjb25zdCA9IDA7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTY29sbGJhclRoZW1lQ2xpZW50X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vV2lkZ2V0LmgKaW5kZXggZDcxMDcxNmJhNzQ0OTc3ZWE4MjA1Y2IwMTI1NzIy
YTMyOWQ5NWRmMC4uNWRlZDE2NTZjM2ViY2U2OWI5ZWU1MGRmMTg4NDU5YzZiNGZiOTkwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKQEAgLTEyMywxNSArMTIzLDE1IEBAIHB1YmxpYzoKICAg
ICBQbGF0Zm9ybVdpZGdldCBwbGF0Zm9ybVdpZGdldCgpIGNvbnN0OwogICAgIHZvaWQgc2V0UGxh
dGZvcm1XaWRnZXQoUGxhdGZvcm1XaWRnZXQpOwogCi0gICAgaW50IHgoKSBjb25zdCB7IHJldHVy
biBmcmFtZVJlY3QoKS54KCk7IH0KLSAgICBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIGZyYW1lUmVj
dCgpLnkoKTsgfQotICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIGZyYW1lUmVjdCgpLndp
ZHRoKCk7IH0KLSAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gZnJhbWVSZWN0KCkuaGVp
Z2h0KCk7IH0KLSAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBmcmFtZVJlY3QoKS5z
aXplKCk7IH0KLSAgICBJbnRQb2ludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZyYW1lUmVj
dCgpLmxvY2F0aW9uKCk7IH0KKyAgICB2aXJ0dWFsIGludCB4KCkgY29uc3QgeyByZXR1cm4gZnJh
bWVSZWN0KCkueCgpOyB9CisgICAgdmlydHVhbCBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIGZyYW1l
UmVjdCgpLnkoKTsgfQorICAgIHZpcnR1YWwgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gZnJh
bWVSZWN0KCkud2lkdGgoKTsgfQorICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIGZyYW1lUmVjdCgpLmhlaWdodCgpOyB9CisgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBj
b25zdCB7IHJldHVybiBmcmFtZVJlY3QoKS5zaXplKCk7IH0KKyAgICB2aXJ0dWFsIEludFBvaW50
IGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gZnJhbWVSZWN0KCkubG9jYXRpb24oKTsgfQogCiAg
ICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0Jik7Ci0gICAgSW50UmVj
dCBmcmFtZVJlY3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIEludFJlY3QgZnJhbWVSZWN0KCkgY29u
c3Q7CiAgICAgSW50UmVjdCBib3VuZHNSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdCgwLCAw
LCB3aWR0aCgpLCAgaGVpZ2h0KCkpOyB9CiAKICAgICB2b2lkIHJlc2l6ZShpbnQgdywgaW50IGgp
IHsgc2V0RnJhbWVSZWN0KEludFJlY3QoeCgpLCB5KCksIHcsIGgpKTsgfQpAQCAtMTQwLDcgKzE0
MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1vdmUoY29uc3QgSW50UG9pbnQmIHApIHsgc2V0RnJh
bWVSZWN0KEludFJlY3QocCwgc2l6ZSgpKSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBpbnZhbGlkYXRlKCkg
eyBpbnZhbGlkYXRlUmVjdChib3VuZHNSZWN0KCkpOyB9CisgICAgdmlydHVhbCB2b2lkIGludmFs
aWRhdGUoKSB7IGludmFsaWRhdGVSZWN0KGJvdW5kc1JlY3QoKSk7IH0KICAgICB2aXJ0dWFsIHZv
aWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9p
ZCBzZXRGb2N1cyhib29sKTsKQEAgLTE2NSw4ICsxNjUsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHJlbW92ZUZyb21QYXJlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50KFNjcm9sbFZp
ZXcqIHZpZXcpOwotICAgIFNjcm9sbFZpZXcqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
ZW50OyB9Ci0gICAgU2Nyb2xsVmlldyogcm9vdCgpIGNvbnN0OworICAgIHZpcnR1YWwgU2Nyb2xs
VmlldyogcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KKyAgICB2aXJ0dWFsIFNj
cm9sbFZpZXcqIHJvb3QoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChF
dmVudCopIHsgfQogCkBAIC0xODYsNyArMTg2LDcgQEAgcHVibGljOgogICAgIEludFJlY3QgY29u
dmVydEZyb21Db250YWluaW5nV2luZG93KGNvbnN0IEludFJlY3QmKSBjb25zdDsKIAogICAgIElu
dFBvaW50IGNvbnZlcnRUb0NvbnRhaW5pbmdXaW5kb3coY29uc3QgSW50UG9pbnQmKSBjb25zdDsK
LSAgICBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coY29uc3QgSW50UG9pbnQm
KSBjb25zdDsKKyAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRv
dyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIGZyYW1lUmVjdHND
aGFuZ2VkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaApp
bmRleCA4MTBjOThmZjM2NjhhYjkxY2RlOWMzNTcxOGQ2ZjA0YjJmNzQ2NzFiLi45OTQ2MWQ1NzUy
MzM5NmU2YzRjZDAwYWU3NDY0NDgyZjFjMjhhNjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFJlbmRlclNj
cm9sbGJhcl9oCiAjZGVmaW5lIFJlbmRlclNjcm9sbGJhcl9oCiAKKyNpbmNsdWRlICJSZW5kZXJT
Y3JvbGxiYXJUaGVtZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRzLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTM3
LDcgKzM4LDggQEAgY2xhc3MgUmVuZGVyQm94OwogY2xhc3MgUmVuZGVyU2Nyb2xsYmFyUGFydDsK
IGNsYXNzIFJlbmRlclN0eWxlOwogCi1jbGFzcyBSZW5kZXJTY3JvbGxiYXIgOiBwdWJsaWMgU2Ny
b2xsYmFyIHsKK2NsYXNzIFJlbmRlclNjcm9sbGJhciA6IHB1YmxpYyBTY3JvbGxiYXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgUmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnQgewog
cHJvdGVjdGVkOgogICAgIFJlbmRlclNjcm9sbGJhcihTY3JvbGxhYmxlQXJlYSosIFNjcm9sbGJh
ck9yaWVudGF0aW9uLCBSZW5kZXJCb3gqLCBGcmFtZSopOwogCkBAIC01MiwxNiArNTQsNTQgQEAg
cHVibGljOgogICAgIFJlbmRlckJveCogb3duaW5nUmVuZGVyZXIoKSBjb25zdDsKICAgICB2b2lk
IGNsZWFyT3duaW5nUmVuZGVyZXIoKSB7IG1fb3duZXIgPSAwOyB9CiAKLSAgICB2b2lkIHBhaW50
UGFydChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJQYXJ0LCBjb25zdCBJbnRSZWN0Jik7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50UGFydChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJQYXJ0
LCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICBJbnRSZWN0IGJ1dHRvblJlY3QoU2Nyb2xsYmFyUGFy
dCk7Ci0gICAgSW50UmVjdCB0cmFja1JlY3QoaW50IHN0YXJ0TGVuZ3RoLCBpbnQgZW5kTGVuZ3Ro
KTsKLSAgICBJbnRSZWN0IHRyYWNrUGllY2VSZWN0V2l0aE1hcmdpbnMoU2Nyb2xsYmFyUGFydCwg
Y29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgSW50UmVjdCBidXR0b25SZWN0KFNjcm9sbGJh
clBhcnQpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoaW50IHN0YXJ0TGVuZ3RoLCBp
bnQgZW5kTGVuZ3RoKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tQaWVjZVJlY3RXaXRoTWFy
Z2lucyhTY3JvbGxiYXJQYXJ0LCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICBpbnQgbWluaW11bVRo
dW1iTGVuZ3RoKCk7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKCk7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNPdmVybGF5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAorICAgIHZpcnR1YWwgaW50IHgoKSBjb25zdCB7IHJldHVybiBTY3JvbGxiYXI6OngoKTsg
fQorICAgIHZpcnR1YWwgaW50IHkoKSBjb25zdCB7IHJldHVybiBTY3JvbGxiYXI6OnkoKTsgfQor
ICAgIHZpcnR1YWwgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsYmFyOjp3aWR0aCgp
OyB9CisgICAgdmlydHVhbCBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsYmFyOjpo
ZWlnaHQoKTsgfQorICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gU2Ny
b2xsYmFyOjpzaXplKCk7IH0KKyAgICB2aXJ0dWFsIEludFBvaW50IGxvY2F0aW9uKCkgY29uc3Qg
eyByZXR1cm4gU2Nyb2xsYmFyOjpsb2NhdGlvbigpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpIHsgU2Nyb2xsYmFyOjpzZXRGcmFtZVJlY3Qo
cmVjdCk7IH0KKyAgICB2aXJ0dWFsIEludFJlY3QgZnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4g
U2Nyb2xsYmFyOjpmcmFtZVJlY3QoKTsgfQorCisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiBwYXJl
bnQoKSBjb25zdCB7IHJldHVybiBTY3JvbGxiYXI6OnBhcmVudCgpOyB9CisgICAgdmlydHVhbCBT
Y3JvbGxWaWV3KiByb290KCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsYmFyOjpyb290KCk7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgeyBTY3JvbGxiYXI6OmludmFsaWRhdGUoKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KSB7
IFNjcm9sbGJhcjo6aW52YWxpZGF0ZVJlY3QocmVjdCk7IH0KKworICAgIHZpcnR1YWwgSW50UG9p
bnQgY29udmVydEZyb21Db250YWluaW5nV2luZG93KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2lu
dCkgeyByZXR1cm4gU2Nyb2xsYmFyOjpjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3cod2luZG93
UG9pbnQpOyB9IAorCisgICAgdmlydHVhbCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIFNjcm9sbGJhcjo6b3JpZW50YXRpb24oKTsgfQorCisgICAgdmly
dHVhbCBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBTY3JvbGxiYXI6OnZhbHVlKCk7IH0KKyAg
ICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRQb3MoKSBjb25zdCB7IHJldHVybiBTY3JvbGxiYXI6OmN1
cnJlbnRQb3MoKTsgfQorICAgIHZpcnR1YWwgaW50IHZpc2libGVTaXplKCkgY29uc3QgeyByZXR1
cm4gU2Nyb2xsYmFyOjp2aXNpYmxlU2l6ZSgpOyB9CisgICAgdmlydHVhbCBpbnQgdG90YWxTaXpl
KCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsYmFyOjp0b3RhbFNpemUoKTsgfQorICAgIHZpcnR1YWwg
aW50IG1heGltdW0oKSBjb25zdCB7IHJldHVybiBTY3JvbGxiYXI6Om1heGltdW0oKTsgfQorICAg
IHZpcnR1YWwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUoKSBjb25zdCB7IHJldHVy
biBTY3JvbGxiYXI6OmNvbnRyb2xTaXplKCk7IH0KKworICAgIHZpcnR1YWwgaW50IGxpbmVTdGVw
KCkgY29uc3QgeyByZXR1cm4gU2Nyb2xsYmFyOjpsaW5lU3RlcCgpOyB9CisgICAgdmlydHVhbCBp
bnQgcGFnZVN0ZXAoKSBjb25zdCB7IHJldHVybiBTY3JvbGxiYXI6OnBhZ2VTdGVwKCk7IH0KKwor
ICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBwcmVzc2VkUGFydCgpIGNvbnN0IHsgcmV0dXJuIFNj
cm9sbGJhcjo6cHJlc3NlZFBhcnQoKTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBob3Zl
cmVkUGFydCgpIGNvbnN0IHsgcmV0dXJuIFNjcm9sbGJhcjo6aG92ZXJlZFBhcnQoKTsgfQorCisg
ICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBTY3JvbGxiYXI6OmVuYWJs
ZWQoKTsgfQorCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFZlY3RvcjxJbnRSZWN0PiA+IGdldFRp
Y2ttYXJrcygpIGNvbnN0IHsgcmV0dXJuIFNjcm9sbGJhcjo6Z2V0VGlja21hcmtzKCk7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIFNj
cm9sbGJhcjo6aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpOyB9CisKIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHNldFBhcmVudChTY3JvbGxWaWV3Kik7CiAgICAgdmlydHVhbCB2b2lkIHNldEVu
YWJsZWQoYm9vbCk7CkBAIC05MSw2ICsxMzEsMTEgQEAgaW5saW5lIFJlbmRlclNjcm9sbGJhciog
dG9SZW5kZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFJlbmRlclNjcm9sbGJhcio+KHNjcm9sbGJhcik7CiB9CiAKK2lubGluZSBSZW5kZXJT
Y3JvbGxiYXJUaGVtZUNsaWVudCogdG9SZW5kZXJTY3JvbGxiYXJUaGVtZUNsaWVudChTY3JvbGxi
YXJUaGVtZUNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJT
Y3JvbGxiYXJUaGVtZUNsaWVudCo+KGNsaWVudCk7Cit9CisKIC8vIFRoaXMgd2lsbCBjYXRjaCBh
bnlvbmUgZG9pbmcgYW4gdW5uZWNlc3NhcnkgY2FzdC4KIHZvaWQgdG9SZW5kZXJTY3JvbGxiYXIo
Y29uc3QgUmVuZGVyU2Nyb2xsYmFyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZUNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ3NGYxZmU3
YTk2YmY1ZjVjNDgxMTFjMjJmZmVkMmY3YjdmYzM2NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZUNsaWVudC5oCkBAIC0wLDAg
KzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFJlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50X2gKKyNk
ZWZpbmUgUmVuZGVyU2Nyb2xsYmFyVGhlbWVDbGllbnRfaAorCisjaW5jbHVkZSAiU2Nyb2xsYmFy
VGhlbWVDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHcmFwaGljc0Nv
bnRleHQ7CisKK2NsYXNzIFJlbmRlclNjcm9sbGJhclRoZW1lQ2xpZW50IDogcHVibGljIFNjcm9s
bGJhclRoZW1lQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIEludFJlY3QgYnV0dG9uUmVj
dChTY3JvbGxiYXJQYXJ0KSA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChpbnQg
c3RhcnRMZW5ndGgsIGludCBlbmRMZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJh
Y2tQaWVjZVJlY3RXaXRoTWFyZ2lucyhTY3JvbGxiYXJQYXJ0LCBjb25zdCBJbnRSZWN0JikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBwYWludFBhcnQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
UGFydCwgY29uc3QgSW50UmVjdCYpID0gMDsKKworICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVt
Ykxlbmd0aCgpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFJlbmRlclNjb2xsYmFyVGhlbWVDbGllbnRJbXBsX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127611</attachid>
            <date>2012-02-17 10:45:31 -0800</date>
            <delta_ts>2012-02-21 12:59:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78028-20120217134529.patch</filename>
            <type>text/plain</type>
            <size>12380</size>
            <attacher name="Peter Kotwicz">pkotwicz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3OTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzcyNTA4NThiODlkOWUz
MzYyODI5NTY4MjAxYWYzMzVhOWVmN2RkYi4uYTBjNGMyYjg5YWVhMDA1MjY5ZDJjMTI1NzFjNzlh
ZGEyNmMwNWEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTAyLTE3ICBQZXRl
ciBLb3R3aWN6ICA8cGtvdHdpY3pAZ29vZ2xlLmNvbT4KKworICAgICAgICBOb3QgRm9yIFJldmll
dzogRGVjb3VwbGUgc2Nyb2xsYmFyIHBhaW50aW5nIGZyb20gU2Nyb2xsYmFyIG9iamVjdAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwMjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IChPT1BTISkKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9T
Y3JvbGxiYXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpnZXRUaWNrbWFya3Mp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmlzU2Ny
b2xsYWJsZUFyZWFBY3RpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5oOgorICAg
ICAgICAoU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6b3JpZW50YXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp2YWx1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXI6OmN1cnJlbnRQb3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
Ojp2aXNpYmxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnRvdGFsU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6Om1heGltdW0pOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjpjb250cm9sU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6
OmxpbmVTdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFnZVN0ZXApOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpwcmVzc2VkUGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXI6OmhvdmVyZWRQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6
ZW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OngpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjp5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6d2lkdGgp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bG9jYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpwYXJlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjpyb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZnJh
bWVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6aW52YWxpZGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lQ2xpZW50KToKKwogMjAxMi0wMi0x
NiAgVGVycnkgQW5kZXJzb24gIDx0ZGFuZGVyc29uQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWJLaXQgZG9lcyBub3Qgc3VwcG9ydCBET00gMyBFdmVudHMgRm9jdXNFdmVudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IGIwNzI5YjNkNjRjNGQyYzg5YzIzODZkYTY5ZjMxYzdhOGY4YzA3YzUuLjQzZjBl
MGE4MzFmODg5NjFkNDgyMmY2MGFhOTAzODk2YWFjNGViZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTI5NCw2ICsyOTQsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGJhci5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZUNsaWVudC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGJhci5jcHAKaW5kZXggM2I5YzE5NWNmZjU1MzkxNjU1NjIwM2UyZjJjYzRmZTVkOGY5YTUx
ZS4uOGU0OWJmYzJkYmI2ODdjNGQ2ZTY5YjcyNzAwZmM2NThjNzNmY2M5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiU2Ny
b2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgPGFs
Z29yaXRobT4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIC8vIEZJWE1FOiBUaGUgZm9sbG93
aW5nICNpbmNsdWRlcyBhcmUgYSBsYXllcmluZyB2aW9sYXRpb24gYW5kIHNob3VsZCBiZSByZW1v
dmVkLgogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKQEAgLTU1Miw0ICs1NTMsMTUgQEAgSW50
UG9pbnQgU2Nyb2xsYmFyOjpjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50
JiBwYXJlbnRQb2ludCkgY29uc3QKICAgICByZXR1cm4gV2lkZ2V0Ojpjb252ZXJ0RnJvbUNvbnRh
aW5pbmdWaWV3KHBhcmVudFBvaW50KTsKIH0KIAordm9pZCBTY3JvbGxiYXI6OmdldFRpY2ttYXJr
cyhWZWN0b3I8SW50UmVjdD4mIHRpY2ttYXJrcykgY29uc3QKK3sKKyAgICBpZiAobV9zY3JvbGxh
YmxlQXJlYSkKKyAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+Z2V0VGlja21hcmtzKHRpY2ttYXJr
cyk7Cit9CisKK2Jvb2wgU2Nyb2xsYmFyOjppc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYSAmJiBtX3Njcm9sbGFibGVBcmVhLT5pc0Fj
dGl2ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGJhci5oCmluZGV4IGU0ZTcyNDY1YmVmN2ZhMGE2ZGU2YjJhZGRhNDAyOWVjODMyY2IwZTcu
LmZhY2JhODEzNDFlZmI5ZWViZjNiOTRhOTczZjdlNTljNTQyMDM0YTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFNjcm9sbGJhcl9o
CiAjZGVmaW5lIFNjcm9sbGJhcl9oCiAKKyNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNsaWVudC5o
IgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRl
ICJXaWRnZXQuaCIKQEAgLTQwLDcgKzQxLDkgQEAgY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50Owog
Y2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBTY3JvbGxiYXJUaGVtZTsKIAotY2xhc3MgU2Ny
b2xsYmFyIDogcHVibGljIFdpZGdldCB7CitjbGFzcyBTY3JvbGxiYXIgOiBwdWJsaWMgV2lkZ2V0
LAorICAgICAgICAgICAgICAgICAgcHVibGljIFNjcm9sbGJhclRoZW1lQ2xpZW50IHsKKwogcHVi
bGljOgogICAgIC8vIE11c3QgYmUgaW1wbGVtZW50ZWQgYnkgcGxhdGZvcm1zIHRoYXQgY2FuJ3Qg
c2ltcGx5IHVzZSB0aGUgU2Nyb2xsYmFyIGJhc2UgY2xhc3MuICBSaWdodCBub3cgdGhlIG9ubHkg
cGxhdGZvcm0gdGhhdCBpcyBub3QgdXNpbmcgdGhlIGJhc2UgY2xhc3MgaXMgR1RLLgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gY3JlYXRlTmF0aXZlU2Nyb2xsYmFyKFNjcm9sbGFi
bGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbGJhckNvbnRy
b2xTaXplIHNpemUpOwpAQCAtNTgsMzIgKzYxLDMyIEBAIHB1YmxpYzoKICAgICBTY3JvbGxhYmxl
QXJlYSogc2Nyb2xsYWJsZUFyZWEoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhOyB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21TY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQotICAgIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3JpZW50YXRpb24g
b3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CiAKLSAgICBpbnQg
dmFsdWUoKSBjb25zdCB7IHJldHVybiBscm91bmRmKG1fY3VycmVudFBvcyk7IH0KLSAgICBmbG9h
dCBjdXJyZW50UG9zKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50UG9zOyB9CisgICAgdmlydHVh
bCBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBscm91bmRmKG1fY3VycmVudFBvcyk7IH0KKyAg
ICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRQb3MoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRQb3M7
IH0KICAgICBpbnQgcHJlc3NlZFBvcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc3NlZFBvczsgfQot
ICAgIGludCB2aXNpYmxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZVNpemU7IH0KLSAg
ICBpbnQgdG90YWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNpemU7IH0KLSAgICBpbnQg
bWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplIC0gbV92aXNpYmxlU2l6ZTsgfSAg
ICAgICAgCi0gICAgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2NvbnRyb2xTaXplOyB9CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZVNpemUoKSBjb25z
dCB7IHJldHVybiBtX3Zpc2libGVTaXplOyB9CisgICAgdmlydHVhbCBpbnQgdG90YWxTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV90b3RhbFNpemU7IH0KKyAgICB2aXJ0dWFsIGludCBtYXhpbXVtKCkg
Y29uc3QgeyByZXR1cm4gbV90b3RhbFNpemUgLSBtX3Zpc2libGVTaXplOyB9CisgICAgdmlydHVh
bCBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dHJvbFNpemU7IH0KIAotICAgIGludCBsaW5lU3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZVN0
ZXA7IH0KLSAgICBpbnQgcGFnZVN0ZXAoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VTdGVwOyB9Cisg
ICAgdmlydHVhbCBpbnQgbGluZVN0ZXAoKSBjb25zdCB7IHJldHVybiBtX2xpbmVTdGVwOyB9Cisg
ICAgdmlydHVhbCBpbnQgcGFnZVN0ZXAoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VTdGVwOyB9CiAg
ICAgZmxvYXQgcGl4ZWxTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9waXhlbFN0ZXA7IH0KIAotICAg
IFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXNzZWRQYXJ0
OyB9Ci0gICAgU2Nyb2xsYmFyUGFydCBob3ZlcmVkUGFydCgpIGNvbnN0IHsgcmV0dXJuIG1faG92
ZXJlZFBhcnQ7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQoKSBjb25z
dCB7IHJldHVybiBtX3ByZXNzZWRQYXJ0OyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhv
dmVyZWRQYXJ0KCkgY29uc3QgeyByZXR1cm4gbV9ob3ZlcmVkUGFydDsgfQogICAgIHZpcnR1YWwg
dm9pZCBzZXRIb3ZlcmVkUGFydChTY3JvbGxiYXJQYXJ0KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
UHJlc3NlZFBhcnQoU2Nyb2xsYmFyUGFydCk7CiAKICAgICB2b2lkIHNldFN0ZXBzKGludCBsaW5l
U3RlcCwgaW50IHBhZ2VTdGVwLCBpbnQgcGl4ZWxzUGVyU3RlcCA9IDEpOwogICAgIHZvaWQgc2V0
UHJvcG9ydGlvbihpbnQgdmlzaWJsZVNpemUsIGludCB0b3RhbFNpemUpOwogICAgIHZvaWQgc2V0
UHJlc3NlZFBvcyhpbnQgcCkgeyBtX3ByZXNzZWRQb3MgPSBwOyB9Ci0gICAgCisKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVj
dCk7CiAKLSAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wgZSk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNP
dmVybGF5U2Nyb2xsYmFyKCkgY29uc3Q7CkBAIC05Nyw3ICsxMDAsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBtb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIHZvaWQgbW91
c2VFbnRlcmVkKCk7CiAgICAgYm9vbCBtb3VzZUV4aXRlZCgpOwotICAgIAorCiAgICAgLy8gVXNl
ZCBieSBzb21lIHBsYXRmb3JtIHNjcm9sbGJhcnMgdG8ga25vdyB3aGVuIHRoZXkndmUgYmVlbiBy
ZWxlYXNlZCBmcm9tIGNhcHR1cmUuCiAgICAgYm9vbCBtb3VzZVVwKGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYpOwogCkBAIC0xMTIsMTEgKzExNSwyMyBAQCBwdWJsaWM6CiAKICAgICBTY3JvbGxi
YXJUaGVtZSogdGhlbWUoKSBjb25zdCB7IHJldHVybiBtX3RoZW1lOyB9CiAKKyAgICB2aXJ0dWFs
IGludCB4KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0Ojp4KCk7IH0KKyAgICB2aXJ0dWFsIGludCB5
KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0Ojp5KCk7IH0KKyAgICB2aXJ0dWFsIGludCB3aWR0aCgp
IGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6d2lkdGgoKTsgfQorICAgIHZpcnR1YWwgaW50IGhlaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6aGVpZ2h0KCk7IH0KKyAgICB2aXJ0dWFsIEludFNp
emUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6c2l6ZSgpOyB9CisgICAgdmlydHVhbCBJ
bnRQb2ludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6bG9jYXRpb24oKTsgfQor
CiAgICAgdmlydHVhbCB2b2lkIHNldFBhcmVudChTY3JvbGxWaWV3Kik7CisgICAgdmlydHVhbCBT
Y3JvbGxWaWV3KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OnBhcmVudCgpOyB9Cisg
ICAgdmlydHVhbCBTY3JvbGxWaWV3KiByb290KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0Ojpyb290
KCk7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpOwor
ICAgIHZpcnR1YWwgSW50UmVjdCBmcmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OmZy
YW1lUmVjdCgpOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIHsgV2lkZ2V0Ojpp
bnZhbGlkYXRlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50
UmVjdCYpOwotICAgIAorCiAgICAgYm9vbCBzdXBwcmVzc0ludmFsaWRhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fc3VwcHJlc3NJbnZhbGlkYXRpb247IH0KICAgICB2b2lkIHNldFN1cHByZXNzSW52
YWxpZGF0aW9uKGJvb2wgcykgeyBtX3N1cHByZXNzSW52YWxpZGF0aW9uID0gczsgfQogCkBAIC0x
MjQsMTAgKzEzOSwxNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydFRv
Q29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAgIHZpcnR1YWwgSW50UmVj
dCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdDsKLSAgICAK
KwogICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50
UG9pbnQmKSBjb25zdDsKICAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmlu
Z1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKIAorICAgIHZpcnR1YWwgdm9pZCBnZXRUaWNr
bWFya3MoVmVjdG9yPEludFJlY3Q+JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xs
YWJsZUFyZWFBY3RpdmUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZy
b21Db250YWluaW5nV2luZG93KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkgeyByZXR1cm4g
V2lkZ2V0Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3cod2luZG93UG9pbnQpOyB9CisKIHBy
b3RlY3RlZDoKICAgICBTY3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEqLCBTY3JvbGxiYXJPcmllbnRh
dGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemUsIFNjcm9sbGJhclRoZW1lKiA9IDApOwogCkBAIC0x
NDEsNyArMTYxLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgYXV0b3Njcm9sbFByZXNzZWRQYXJ0
KGRvdWJsZSBkZWxheSk7CiAgICAgU2Nyb2xsRGlyZWN0aW9uIHByZXNzZWRQYXJ0U2Nyb2xsRGly
ZWN0aW9uKCk7CiAgICAgU2Nyb2xsR3JhbnVsYXJpdHkgcHJlc3NlZFBhcnRTY3JvbGxHcmFudWxh
cml0eSgpOwotICAgIAorCiAgICAgdm9pZCBtb3ZlVGh1bWIoaW50IHBvcywgYm9vbCBkcmFnZ2lu
Z0RvY3VtZW50ID0gZmFsc2UpOwogCiAgICAgU2Nyb2xsYWJsZUFyZWEqIG1fc2Nyb2xsYWJsZUFy
ZWE7CkBAIC0xNjcsNyArMTg3LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgVGltZXI8U2Nyb2xsYmFy
PiBtX3Njcm9sbFRpbWVyOwogICAgIGJvb2wgbV9vdmVybGFwc1Jlc2l6ZXI7Ci0gICAgCisKICAg
ICBib29sIG1fc3VwcHJlc3NJbnZhbGlkYXRpb247CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44NWUwYTgx
MmU2NGViODUyMjU0NGJkZWU4ZWQwOTk1ODdiYjA0ZmZiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaApAQCAtMCwwICsxLDg0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBTY3JvbGxiYXJUaGVtZUNsaWVudF9oCisjZGVmaW5lIFNjcm9s
bGJhclRoZW1lQ2xpZW50X2gKKworI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiSW50
UmVjdC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbFZpZXc7CisKK2NsYXNzIFNjcm9sbGJh
clRoZW1lQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGludCB4KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgaW50IHkoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgd2lkdGgoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgaGVpZ2h0KCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UG9pbnQgbG9jYXRp
b24oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IElu
dFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGZyYW1lUmVjdCgpIGNvbnN0ID0gMDsK
KworICAgIHZpcnR1YWwgU2Nyb2xsVmlldyogcGFyZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgU2Nyb2xsVmlldyogcm9vdCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRS
ZWN0JikgPSAwOworCisgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdX
aW5kb3coY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSA9IDA7CisKKyAgICB2aXJ0dWFsIFNj
cm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgPSAwOworCisgICAgdmlydHVh
bCBpbnQgdmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50UG9zKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHZpc2libGVTaXplKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgaW50IHRvdGFsU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBtYXhp
bXVtKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJv
bFNpemUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGludCBsaW5lU3RlcCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGludCBwYWdlU3RlcCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwg
U2Nyb2xsYmFyUGFydCBwcmVzc2VkUGFydCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNjcm9s
bGJhclBhcnQgaG92ZXJlZFBhcnQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgZW5h
YmxlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sKSA9IDA7
CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3RvcjxJbnRSZWN0PiYpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpIGNvbnN0ID0g
MDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjb2xsYmFyVGhl
bWVDbGllbnRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128027</attachid>
            <date>2012-02-21 12:59:17 -0800</date>
            <delta_ts>2012-02-22 08:02:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78028-20120221155916.patch</filename>
            <type>text/plain</type>
            <size>124532</size>
            <attacher name="Peter Kotwicz">pkotwicz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY3YTNkZGQwMWU3YjJj
ZDI0ZDVlZWIyNTIxMTc0NjY5NDM0NTlmOC4uNmU4MmY4MjllOGZiOTQxZGQ0YjZhY2NmMjcwYTA0
ZWUxM2FjZGQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2NCBAQAorMjAxMi0wMi0yMSAgUGV0
ZXIgS290d2ljeiAgPHBrb3R3aWN6QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBN
YWtlcyBTY3JvbGxiYXJUaGVtZSB0YWtlIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBpbnN0ZWFkIG9m
IFNjcm9sbGJhcioKKyAgICAgICAgVGhpcyBlbmFibGVzIHBhaW50aW5nIFNjcm9sbGJhcnMgb24g
YSBzZXBhcmF0ZSB0aHJlYWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03ODAyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXI6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6Z2V0VGlja21hcmtzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhcjo6aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSk6CisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsYmFyLmg6CisgICAgICAgIChTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyOjpvcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6Y3VycmVudFBvcyk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXI6OnZpc2libGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhcjo6dG90YWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bWF4aW11
bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmNvbnRyb2xTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhcjo6bGluZVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyOjpwYWdlU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnByZXNzZWRQYXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6aG92ZXJlZFBhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyOjplbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
cjo6eCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnkpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjpsb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnBh
cmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnJvb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjpmcmFtZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6Y29udmVydEZyb21D
b250YWluaW5nV2luZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dXBk
YXRlRW5hYmxlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6aGl0VGVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjppbnZhbGlkYXRlUGFydHMpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OmludmFsaWRhdGVQYXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpzaG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVh
ZE9mVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnRodW1iUG9zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnRodW1iTGVuZ3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp0cmFja1Bvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp0cmFja0xlbmd0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZTo6cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWU6OnVucmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChTY3JvbGxiYXJUaGVtZUNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRl
OjpoaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpp
bnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6c3BsaXRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjp1c2VkVG90YWxTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYlBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYkxlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6bWluaW11bVRodW1iTGVu
Z3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja1Bv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFj
a0xlbmd0aCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaDoK
KyAgICAgICAgKFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50VHJhY2tCYWNrZ3JvdW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRyYWNr
UGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50
QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWlu
dFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWlu
dFRpY2ttYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6
Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZUNocm9taXVtOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNocm9taXVtOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZUNocm9taXVtOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUaWNrbWFya3MpOgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW06Omhhc0J1dHRvbnMpOgorICAgICAgICAo
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6c2hvdWxkQ2VudGVy
T25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9p
ZDo6YnV0dG9uU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVt
QW5kcm9pZDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUFuZHJvaWQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUaHVtYik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNob3VsZENlbnRlck9uVGh1bWIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6bWluaW11
bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtTGludXguaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eCk6
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5o
OgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyk6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWM6OnBhaW50R2l2ZW5UaWNrbWFya3MpOgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmln
aW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRU
cmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46
OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1X
aW46OnBhaW50VGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bVdpbjo6Z2V0VGhlbWVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNo
cm9taXVtV2luOjpnZXRUaGVtZUFycm93U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3NpY1RoZW1lU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkQ2VudGVyT25UaHVtYik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpidXR0b25TaXplKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmg6
CisgICAgICAgIChTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVFZmw6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lRWZsOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwv
U2Nyb2xsYmFyVGhlbWVFZmwuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lRWZsKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cmVnaXN0ZXJTY3JvbGxi
YXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnVucmVnaXN0ZXJTY3Jv
bGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVNjcm9s
bGJhcnNGcmFtZVRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0
azo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tC
dXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpmb3J3YXJk
QnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjp0aHVtYlJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpzaG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpidXR0b25TaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lR3RrOjptaW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVHdGs6Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVHdGspOgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1Njcm9sbGJhclRoZW1lR3RrMy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUd0azo6cGFpbnRCdXR0b24pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxi
YXJUaGVtZU1hYy5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVNYWMpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Ny
b2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9y
U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVT
Y3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVN
YWM6Omhhc0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhh
c1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9u
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRv
blJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRo
dW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGREcmFnRG9j
dW1lbnRJbnN0ZWFkT2ZUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1h
Yzo6dXBkYXRlRW5hYmxlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
TWFjOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjp0cmFja1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIpOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6Omhhc0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZU1vY2s6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lTW9jazo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoU2Nyb2xsYmFyVGhl
bWVNb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnN0eWxlT3B0aW9uU2xpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lUXQ6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
UXQ6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVRdDo6c2hvdWxk
Q2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVF0OjppbnZh
bGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYlBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnRodW1iTGVuZ3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnRyYWNrUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVRdDo6dHJhY2tMZW5ndGgpOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuaDoKKyAgICAgICAgKFNjcm9sbGJhclRo
ZW1lUXQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzQnV0dG9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzVGh1bWIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmJhY2tCdXR0b25SZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpmb3J3YXJkQnV0dG9uUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6dHJhY2tSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjptaW5pbXVtVGh1bWJMZW5ndGgpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnNob3VsZENlbnRlck9uVGh1
bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50VHJhY2tC
YWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWlu
dEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRU
aHVtYik6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmg6Cisg
ICAgICAgIChTY3JvbGxiYXJUaGVtZVNhZmFyaSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Nj
cm9sbGJhclRoZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2lu
OjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVdpbjo6YmFja0J1
dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OmZvcndhcmRC
dXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjp0cmFja1Jl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZENlbnRlck9u
VGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBC
YWNrVG9EcmFnT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpw
YWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVdp
bjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2lu
OjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpwYWludEdyaXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVXaW46Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVXaW4pOgor
ICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVXeDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lV3g6OmJ1dHRvblNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVXeDo6c3BsaXRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4
OjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojpm
b3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojp0
cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6cGFpbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guaDoKKyAgICAgICAgKFNjcm9s
bGJhclRoZW1lV3gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzQnV0
dG9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oOgorICAgICAgICAo
V2ViQ29yZTo6dG9SZW5kZXJTY3JvbGxiYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVt
ZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
Y3JvbGxiYXJUaGVtZTo6aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFy
VGhlbWU6Om1pbmltdW1UaHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6YmFja0J1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Ny
b2xsYmFyVGhlbWU6OmZvcndhcmRCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Ny
b2xsYmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tn
cm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJh
Y2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1
bWIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnNob3VsZENlbnRlck9uVGh1bWIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Ny
b2xsYmFyKToKKyAgICAgICAgKFJlbmRlclNjcm9sbGJhclRoZW1lKToKKwogMjAxMi0wMi0yMSAg
TGluIFdlaSAgPHdlaS5hLmxpbkBpbnRlbC5jb20+CiAKICAgICAgICAgRml4IGJ1ZyBmcm9tIHIx
MDc2NzIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzI1NDdjYzY2ZGY2YjZkYmQ4NGJhYjRlOWE3Y2Mw
MWQ1N2JiMmE0Yy4uYzk4Njc3ODE0ZWRhM2JkOWM4OWNkYmMxNzgyMDRlOWYwYWYyOGU5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtMjkyLDYgKzI5Miw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2Nyb2xsYmFyLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL1Njcm9sbGJhclRoZW1lQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Nl
YXJjaFBvcHVwTWVudS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAppbmRleCAzYjljMTk1Y2ZmNTUzOTE2NTU2MjAz
ZTJmMmNjNGZlNWQ4ZjlhNTFlLi5hOTZhNjU2NzVhYjgzZDFmMDkwZDIwNzcxODNiODYzZGM5Yjc4
YjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKQEAgLTU1Miw0ICs1NTIs
MjAgQEAgSW50UG9pbnQgU2Nyb2xsYmFyOjpjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0
IEludFBvaW50JiBwYXJlbnRQb2ludCkgY29uc3QKICAgICByZXR1cm4gV2lkZ2V0Ojpjb252ZXJ0
RnJvbUNvbnRhaW5pbmdWaWV3KHBhcmVudFBvaW50KTsKIH0KIAorU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlIFNjcm9sbGJhcjo6c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zY3JvbGxhYmxlQXJlYSA/IFNjcm9sbGJhck92ZXJsYXlTdHlsZURlZmF1bHQgOiBtX3Nj
cm9sbGFibGVBcmVhLT5zY3JvbGxiYXJPdmVybGF5U3R5bGUoKTsKK30KKwordm9pZCBTY3JvbGxi
YXI6OmdldFRpY2ttYXJrcyhWZWN0b3I8SW50UmVjdD4mIHRpY2ttYXJrcykgY29uc3QKK3sKKyAg
ICBpZiAobV9zY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+Z2V0VGlj
a21hcmtzKHRpY2ttYXJrcyk7Cit9CisKK2Jvb2wgU2Nyb2xsYmFyOjppc1Njcm9sbGFibGVBcmVh
QWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYSAmJiBtX3Njcm9s
bGFibGVBcmVhLT5pc0FjdGl2ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4IGU0ZTcyNDY1YmVmN2ZhMGE2ZGU2YjJhZGRh
NDAyOWVjODMyY2IwZTcuLjkxMjZkYzQ2MDg3YjI1ZmM1NDQxYzJhMDZiY2IxYmVhZjIxODBkOWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZu
ZGVmIFNjcm9sbGJhcl9oCiAjZGVmaW5lIFNjcm9sbGJhcl9oCiAKKyNpbmNsdWRlICJTY3JvbGxi
YXJUaGVtZUNsaWVudC5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKQEAgLTQwLDcgKzQxLDkgQEAgY2xhc3MgUGxhdGZv
cm1Nb3VzZUV2ZW50OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBTY3JvbGxiYXJUaGVt
ZTsKIAotY2xhc3MgU2Nyb2xsYmFyIDogcHVibGljIFdpZGdldCB7CitjbGFzcyBTY3JvbGxiYXIg
OiBwdWJsaWMgV2lkZ2V0LAorICAgICAgICAgICAgICAgICAgcHVibGljIFNjcm9sbGJhclRoZW1l
Q2xpZW50IHsKKwogcHVibGljOgogICAgIC8vIE11c3QgYmUgaW1wbGVtZW50ZWQgYnkgcGxhdGZv
cm1zIHRoYXQgY2FuJ3Qgc2ltcGx5IHVzZSB0aGUgU2Nyb2xsYmFyIGJhc2UgY2xhc3MuICBSaWdo
dCBub3cgdGhlIG9ubHkgcGxhdGZvcm0gdGhhdCBpcyBub3QgdXNpbmcgdGhlIGJhc2UgY2xhc3Mg
aXMgR1RLLgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gY3JlYXRlTmF0aXZlU2Ny
b2xsYmFyKFNjcm9sbGFibGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24s
IFNjcm9sbGJhckNvbnRyb2xTaXplIHNpemUpOwpAQCAtNTgsMzIgKzYxLDMyIEBAIHB1YmxpYzoK
ICAgICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEoKSBjb25zdCB7IHJldHVybiBtX3Nj
cm9sbGFibGVBcmVhOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21TY3JvbGxiYXIoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgIHZpcnR1YWwgU2Nyb2xs
YmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9u
OyB9CiAKLSAgICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBscm91bmRmKG1fY3VycmVudFBv
cyk7IH0KLSAgICBmbG9hdCBjdXJyZW50UG9zKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50UG9z
OyB9CisgICAgdmlydHVhbCBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBscm91bmRmKG1fY3Vy
cmVudFBvcyk7IH0KKyAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRQb3MoKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnRQb3M7IH0KICAgICBpbnQgcHJlc3NlZFBvcygpIGNvbnN0IHsgcmV0dXJuIG1f
cHJlc3NlZFBvczsgfQotICAgIGludCB2aXNpYmxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlz
aWJsZVNpemU7IH0KLSAgICBpbnQgdG90YWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNp
emU7IH0KLSAgICBpbnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplIC0gbV92
aXNpYmxlU2l6ZTsgfSAgICAgICAgCi0gICAgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNp
emUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xTaXplOyB9CisgICAgdmlydHVhbCBpbnQgdmlz
aWJsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGVTaXplOyB9CisgICAgdmlydHVhbCBp
bnQgdG90YWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNpemU7IH0KKyAgICB2aXJ0dWFs
IGludCBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNpemUgLSBtX3Zpc2libGVTaXpl
OyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udHJvbFNpemU7IH0KIAotICAgIGludCBsaW5lU3RlcCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGluZVN0ZXA7IH0KLSAgICBpbnQgcGFnZVN0ZXAoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VTdGVwOyB9CisgICAgdmlydHVhbCBpbnQgbGluZVN0ZXAoKSBjb25zdCB7IHJldHVybiBt
X2xpbmVTdGVwOyB9CisgICAgdmlydHVhbCBpbnQgcGFnZVN0ZXAoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VTdGVwOyB9CiAgICAgZmxvYXQgcGl4ZWxTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9waXhl
bFN0ZXA7IH0KIAotICAgIFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQoKSBjb25zdCB7IHJldHVy
biBtX3ByZXNzZWRQYXJ0OyB9Ci0gICAgU2Nyb2xsYmFyUGFydCBob3ZlcmVkUGFydCgpIGNvbnN0
IHsgcmV0dXJuIG1faG92ZXJlZFBhcnQ7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgcHJl
c3NlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXNzZWRQYXJ0OyB9CisgICAgdmlydHVhbCBT
Y3JvbGxiYXJQYXJ0IGhvdmVyZWRQYXJ0KCkgY29uc3QgeyByZXR1cm4gbV9ob3ZlcmVkUGFydDsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXRIb3ZlcmVkUGFydChTY3JvbGxiYXJQYXJ0KTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0UHJlc3NlZFBhcnQoU2Nyb2xsYmFyUGFydCk7CiAKICAgICB2b2lkIHNl
dFN0ZXBzKGludCBsaW5lU3RlcCwgaW50IHBhZ2VTdGVwLCBpbnQgcGl4ZWxzUGVyU3RlcCA9IDEp
OwogICAgIHZvaWQgc2V0UHJvcG9ydGlvbihpbnQgdmlzaWJsZVNpemUsIGludCB0b3RhbFNpemUp
OwogICAgIHZvaWQgc2V0UHJlc3NlZFBvcyhpbnQgcCkgeyBtX3ByZXNzZWRQb3MgPSBwOyB9Ci0g
ICAgCisKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCk7CiAKLSAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2VuYWJsZWQ7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZW5hYmxlZDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wgZSk7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNPdmVybGF5U2Nyb2xsYmFyKCkgY29uc3Q7CkBAIC05Nyw3ICsxMDAsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBtb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
OwogICAgIHZvaWQgbW91c2VFbnRlcmVkKCk7CiAgICAgYm9vbCBtb3VzZUV4aXRlZCgpOwotICAg
IAorCiAgICAgLy8gVXNlZCBieSBzb21lIHBsYXRmb3JtIHNjcm9sbGJhcnMgdG8ga25vdyB3aGVu
IHRoZXkndmUgYmVlbiByZWxlYXNlZCBmcm9tIGNhcHR1cmUuCiAgICAgYm9vbCBtb3VzZVVwKGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCkBAIC0xMTIsMTEgKzExNSwyMyBAQCBwdWJsaWM6
CiAKICAgICBTY3JvbGxiYXJUaGVtZSogdGhlbWUoKSBjb25zdCB7IHJldHVybiBtX3RoZW1lOyB9
CiAKKyAgICB2aXJ0dWFsIGludCB4KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0Ojp4KCk7IH0KKyAg
ICB2aXJ0dWFsIGludCB5KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0Ojp5KCk7IH0KKyAgICB2aXJ0
dWFsIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6d2lkdGgoKTsgfQorICAgIHZp
cnR1YWwgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6aGVpZ2h0KCk7IH0KKyAg
ICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6c2l6ZSgpOyB9
CisgICAgdmlydHVhbCBJbnRQb2ludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6
bG9jYXRpb24oKTsgfQorCiAgICAgdmlydHVhbCB2b2lkIHNldFBhcmVudChTY3JvbGxWaWV3Kik7
CisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6
OnBhcmVudCgpOyB9CisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiByb290KCkgY29uc3QgeyByZXR1
cm4gV2lkZ2V0Ojpyb290KCk7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29u
c3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgSW50UmVjdCBmcmFtZVJlY3QoKSBjb25zdCB7IHJl
dHVybiBXaWRnZXQ6OmZyYW1lUmVjdCgpOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0
ZSgpIHsgV2lkZ2V0OjppbnZhbGlkYXRlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0
ZVJlY3QoY29uc3QgSW50UmVjdCYpOwotICAgIAorCiAgICAgYm9vbCBzdXBwcmVzc0ludmFsaWRh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3NJbnZhbGlkYXRpb247IH0KICAgICB2b2lk
IHNldFN1cHByZXNzSW52YWxpZGF0aW9uKGJvb2wgcykgeyBtX3N1cHByZXNzSW52YWxpZGF0aW9u
ID0gczsgfQogCkBAIC0xMjQsMTAgKzEzOSwxNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIElu
dFJlY3QgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAg
IHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3Qm
KSBjb25zdDsKLSAgICAKKwogICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydFRvQ29udGFpbmlu
Z1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKICAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZl
cnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKIAorICAgIHZpcnR1
YWwgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBnZXRUaWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JikgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSBjb25zdDsKKworICAgIHZp
cnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nV2luZG93KGNvbnN0IEludFBvaW50
JiB3aW5kb3dQb2ludCkgeyByZXR1cm4gV2lkZ2V0Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5k
b3cod2luZG93UG9pbnQpOyB9CisKIHByb3RlY3RlZDoKICAgICBTY3JvbGxiYXIoU2Nyb2xsYWJs
ZUFyZWEqLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemUsIFNjcm9s
bGJhclRoZW1lKiA9IDApOwogCkBAIC0xNDEsNyArMTYyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgYXV0b3Njcm9sbFByZXNzZWRQYXJ0KGRvdWJsZSBkZWxheSk7CiAgICAgU2Nyb2xsRGlyZWN0
aW9uIHByZXNzZWRQYXJ0U2Nyb2xsRGlyZWN0aW9uKCk7CiAgICAgU2Nyb2xsR3JhbnVsYXJpdHkg
cHJlc3NlZFBhcnRTY3JvbGxHcmFudWxhcml0eSgpOwotICAgIAorCiAgICAgdm9pZCBtb3ZlVGh1
bWIoaW50IHBvcywgYm9vbCBkcmFnZ2luZ0RvY3VtZW50ID0gZmFsc2UpOwogCiAgICAgU2Nyb2xs
YWJsZUFyZWEqIG1fc2Nyb2xsYWJsZUFyZWE7CkBAIC0xNjcsNyArMTg4LDcgQEAgcHJvdGVjdGVk
OgogCiAgICAgVGltZXI8U2Nyb2xsYmFyPiBtX3Njcm9sbFRpbWVyOwogICAgIGJvb2wgbV9vdmVy
bGFwc1Jlc2l6ZXI7Ci0gICAgCisKICAgICBib29sIG1fc3VwcHJlc3NJbnZhbGlkYXRpb247CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAppbmRleCAy
YTgzZDUzODVlYWJiY2FjZmY4YmU1NjM0OWI0ZDE5ZTMyYmI2ZmNjLi4xN2VmNjM4ZTYwM2I0MjE2
NTJhNGQwYTliMTFmOTA3NDdkYTc3MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhclRoZW1lLmgKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwotY2xhc3MgU2Nyb2xsYmFyOworY2xhc3MgU2Nyb2xsYmFy
VGhlbWVDbGllbnQ7CiBjbGFzcyBTY3JvbGxWaWV3OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKSAmJiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCkBAIC00NiwxMCArNDYsMTAgQEAg
cHVibGljOgogICAgIFNjcm9sbGJhclRoZW1lKCkgeyB9CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFy
VGhlbWUoKSB7fTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xs
YmFyKikgeyB9OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKSB7IH07CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwg
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgLypkYW1hZ2VSZWN0Ki8pIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyKiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gTm9QYXJ0OyB9CisgICAgdmlydHVh
bCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgSW50UmVjdCYgLypkYW1hZ2VSZWN0Ki8pIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBOb1BhcnQ7IH0KICAgICAKICAgICB2aXJ0dWFsIGlu
dCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xs
YmFyKSB7IHJldHVybiAwOyB9CiAKQEAgLTU3LDEzICs1NywxMyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUo
U2Nyb2xsYmFyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbGJhck92ZXJsYXlT
dHlsZShTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRoZW1l
Q2hhbmdlZCgpIHt9CiAgICAgCiAgICAgdmlydHVhbCBib29sIGludmFsaWRhdGVPbk1vdXNlRW50
ZXJFeGl0KCkgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgaW52YWxpZGF0ZVBhcnRzKFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJDb250cm9sUGFydE1hc2sgbWFzaykKKyAgICB2
b2lkIGludmFsaWRhdGVQYXJ0cyhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3Jv
bGxiYXJDb250cm9sUGFydE1hc2sgbWFzaykKICAgICB7CiAgICAgICAgIGlmIChtYXNrICYgQmFj
a0J1dHRvblN0YXJ0UGFydCkKICAgICAgICAgICAgIGludmFsaWRhdGVQYXJ0KHNjcm9sbGJhciwg
QmFja0J1dHRvblN0YXJ0UGFydCk7CkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIGludmFsaWRhdGVQYXJ0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRvbkVuZFBhcnQpOwogICAg
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXIqLCBTY3JvbGxi
YXJQYXJ0KSB7fQorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIHt9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3Jv
bGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50
UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29y
bmVyUmVjdCk7IH0KICAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRl
eHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJH
Qik7IH0KQEAgLTkzLDIxICs5MywyMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFVw
Q29udGVudFNoYWRvd0xheWVyKEdyYXBoaWNzTGF5ZXIqKSB7IH0KICNlbmRpZgogCi0gICAgdmly
dHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25h
cEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jikg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJhZ0RvY3VtZW50SW5z
dGVhZE9mVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9sbGJhciopIHsg
cmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0aHVtYiByZWxhdGl2ZSB0byB0aGUg
dHJhY2suCi0gICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyKikgeyByZXR1cm4g
MDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0aHVtYiBhbG9uZyB0aGUgYXhpcyBvZiB0aGUgc2Ny
b2xsYmFyLgotICAgIHZpcnR1YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKikgeyByZXR1
cm4gMDsgfSAvLyBUaGUgcG9zaXRpb24gb2YgdGhlIHRyYWNrIHJlbGF0aXZlIHRvIHRoZSBzY3Jv
bGxiYXIuCi0gICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFyKikgeyByZXR1cm4g
MDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0cmFjayBhbG9uZyB0aGUgYXhpcyBvZiB0aGUgc2Ny
b2xsYmFyLgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCop
IHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0aHVtYiByZWxhdGl2ZSB0byB0
aGUgdHJhY2suCisgICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqKSB7IHJldHVybiAwOyB9IC8vIFRoZSBsZW5ndGggb2YgdGhlIHRodW1iIGFsb25nIHRoZSBh
eGlzIG9mIHRoZSBzY3JvbGxiYXIuCisgICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3Jv
bGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0
cmFjayByZWxhdGl2ZSB0byB0aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1YWwgaW50IHRyYWNrTGVu
Z3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4gMDsgfSAvLyBUaGUgbGVuZ3RoIG9m
IHRoZSB0cmFjayBhbG9uZyB0aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLgogCiAgICAgdmlydHVh
bCBpbnQgbWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWF4KCk7IH0KIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xs
VGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMjU7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBhdXRvc2Ny
b2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMDU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKSB7fQotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVy
U2Nyb2xsYmFyKFNjcm9sbGJhciopIHt9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xs
YmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikge30KKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
clNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHt9CiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNNb2NrVGhlbWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWViMGNlODEy
ZTEwYmRjN2Q3ZTU4MDc3MWFmOGVjZjJiOWFlNjljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaApAQCAtMCwwICsxLDg2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBTY3JvbGxiYXJUaGVtZUNsaWVudF9oCisjZGVmaW5lIFNjcm9sbGJh
clRoZW1lQ2xpZW50X2gKKworI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiSW50UmVj
dC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbFZpZXc7CisKK2NsYXNzIFNjcm9sbGJhclRo
ZW1lQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21TY3JvbGxiYXIo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlv
bigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgaW50IHZhbHVlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgZmxvYXQgY3VycmVudFBvcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCB2
aXNpYmxlU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCB0b3RhbFNpemUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBpbnQgbWF4aW11bSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKCkgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCBpbnQgbGluZVN0ZXAoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgcGFnZVN0ZXAo
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhvdmVyZWRQYXJ0KCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldEVuYWJsZWQoYm9vbCkgPSAwOworCisgICAgdmlydHVhbCBpbnQgeCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGludCB5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHdp
ZHRoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFBvaW50
IGxvY2F0aW9uKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiBwYXJlbnQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiByb290KCkgY29uc3QgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOworICAg
IHZpcnR1YWwgSW50UmVjdCBmcmFtZVJlY3QoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZv
aWQgaW52YWxpZGF0ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29u
c3QgSW50UmVjdCYpID0gMDsKKworICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHNj
cm9sbGJhck92ZXJsYXlTdHlsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VGlj
a21hcmtzKFZlY3RvcjxJbnRSZWN0PiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNT
Y3JvbGxhYmxlQXJlYUFjdGl2ZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgSW50UG9pbnQg
Y29udmVydEZyb21Db250YWluaW5nV2luZG93KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkg
PSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2NvbGxiYXJU
aGVtZUNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZS5jcHAKaW5kZXggZmNiZjQ4NGMwOTUxYjViMGFmYjliYzdiNWZiYzU2Y2Zl
YzlhOTg1ZS4uZTI5NjY5ZjhkNWM5Zjc3M2Q5N2ViZmIzY2ZkNDZhMjQxZjdhYTE5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNw
cApAQCAtMzMsMTUgKzMzLDE0IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgotI2luY2x1ZGUg
IlNjcm9sbGJhci5oIgotI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCisjaW5jbHVkZSAiU2Ny
b2xsYmFyVGhlbWVDbGllbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGU6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
KQogewogICAgIC8vIENyZWF0ZSB0aGUgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrIGJhc2VkIG9u
IHRoZSBkYW1hZ2VSZWN0CiAgICAgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrIHNjcm9sbE1hc2sg
PSBOb1BhcnQ7CkBAIC0xMTYsNyArMTE1LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGgKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6aGl0VGVzdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldnQpCitTY3JvbGxiYXJQYXJ0IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpoaXRUZXN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZ0KQogewogICAgIFNjcm9sbGJhclBhcnQgcmVzdWx0ID0gTm9QYXJ0OwogICAgIGlmICghc2Ny
b2xsYmFyLT5lbmFibGVkKCkpCkBAIC0xNTUsNyArMTU0LDcgQEAgU2Nyb2xsYmFyUGFydCBTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZTo6aGl0VGVzdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3Qg
UGxhdGYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjppbnZhbGlkYXRlUGFydChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBw
YXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aW52YWxpZGF0ZVBhcnQoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGlm
IChwYXJ0ID09IE5vUGFydCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk1LDcgKzE5NCw3IEBAIHZv
aWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgc2Nyb2xsYmFyLT5pbnZhbGlkYXRlUmVjdChyZXN1
bHQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxpdFRyYWNrKFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0LCBJ
bnRSZWN0JiBiZWZvcmVUaHVtYlJlY3QsIEludFJlY3QmIHRodW1iUmVjdCwgSW50UmVjdCYgYWZ0
ZXJUaHVtYlJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxpdFRyYWNrKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWlu
ZWRUcmFja1JlY3QsIEludFJlY3QmIGJlZm9yZVRodW1iUmVjdCwgSW50UmVjdCYgdGh1bWJSZWN0
LCBJbnRSZWN0JiBhZnRlclRodW1iUmVjdCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHdvbid0
IGV2ZW4gZ2V0IGNhbGxlZCB1bmxlc3Mgd2UncmUgYmlnIGVub3VnaCB0byBoYXZlIHNvbWUgY29t
YmluYXRpb24gb2YgdGhlc2UgdGhyZWUgcmVjdHMgd2hlcmUgYXQgbGVhc3QKICAgICAvLyBvbmUg
b2YgdGhlbSBpcyBub24tZW1wdHkuCkBAIC0yMTUsNyArMjE0LDcgQEAgdm9pZCBTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50
UmVjdCYgdW4KIAogLy8gUmV0dXJucyB0aGUgc2l6ZSByZXByZXNlbnRlZCBieSB0cmFjayB0YWtp
bmcgaW50byBhY2NvdW50IHNjcm9sbGluZyBwYXN0CiAvLyB0aGUgZW5kIG9mIHRoZSBkb2N1bWVu
dC4KLXN0YXRpYyBmbG9hdCB1c2VkVG90YWxTaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorc3Rh
dGljIGZsb2F0IHVzZWRUb3RhbFNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikK
IHsKICAgICBmbG9hdCBvdmVyaGFuZ0F0U3RhcnQgPSAtc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCk7
CiAgICAgZmxvYXQgb3ZlcmhhbmdBdEVuZCA9IHNjcm9sbGJhci0+Y3VycmVudFBvcygpICsgc2Ny
b2xsYmFyLT52aXNpYmxlU2l6ZSgpIC0gc2Nyb2xsYmFyLT50b3RhbFNpemUoKTsKQEAgLTIyMyw3
ICsyMjIsNyBAQCBzdGF0aWMgZmxvYXQgdXNlZFRvdGFsU2l6ZShTY3JvbGxiYXIqIHNjcm9sbGJh
cikKICAgICByZXR1cm4gc2Nyb2xsYmFyLT50b3RhbFNpemUoKSArIG92ZXJoYW5nOwogfQogCi1p
bnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUG9zaXRpb24oU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5lbmFibGVk
KCkpIHsKICAgICAgICAgZmxvYXQgcG9zID0gbWF4KDAuMGYsIHNjcm9sbGJhci0+Y3VycmVudFBv
cygpKSAqICh0cmFja0xlbmd0aChzY3JvbGxiYXIpIC0gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSkg
LyAodXNlZFRvdGFsU2l6ZShzY3JvbGxiYXIpIC0gc2Nyb2xsYmFyLT52aXNpYmxlU2l6ZSgpKTsK
QEAgLTIzMiw3ICsyMzEsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUG9z
aXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitp
bnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC0yNDYsMTggKzI0NSwxOCBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OnRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiBsZW5n
dGg7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6bWluaW11bVRodW1iTGVuZ3Ro
KFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjptaW5p
bXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBy
ZXR1cm4gc2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSk7CiB9CiAK
LWludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tQb3NpdGlvbihTY3JvbGxiYXIqIHNj
cm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tQb3NpdGlvbihTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIEludFJlY3QgY29uc3RyYWluZWRU
cmFja1JlY3QgPSBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKHNjcm9sbGJhciwgdHJh
Y2tSZWN0KHNjcm9sbGJhcikpOwogICAgIHJldHVybiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigp
ID09IEhvcml6b250YWxTY3JvbGxiYXIpID8gY29uc3RyYWluZWRUcmFja1JlY3QueCgpIC0gc2Ny
b2xsYmFyLT54KCkgOiBjb25zdHJhaW5lZFRyYWNrUmVjdC55KCkgLSBzY3JvbGxiYXItPnkoKTsK
IH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aChTY3JvbGxiYXIq
IHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tMZW5ndGgoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBJbnRSZWN0IGNvbnN0cmFpbmVk
VHJhY2tSZWN0ID0gY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxiYXIsIHRy
YWNrUmVjdChzY3JvbGxiYXIpKTsKICAgICByZXR1cm4gKHNjcm9sbGJhci0+b3JpZW50YXRpb24o
KSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSA/IGNvbnN0cmFpbmVkVHJhY2tSZWN0LndpZHRoKCkg
OiBjb25zdHJhaW5lZFRyYWNrUmVjdC5oZWlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oCmluZGV4IDExYjNiZDQ3MDAxODdmZjE4
MmIwNDViNDUyY2RjMjRkYTMzZTc1OTAuLjhlZGQ0YmJhYzk4MDQwZDAzZmM0YjMwZWViMjFhYTk5
NWUzZDJlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRo
ZW1lQ29tcG9zaXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuaApAQCAtMzIsNDAgKzMyLDQwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUgOiBwdWJsaWMgU2Nyb2xsYmFyVGhlbWUgewog
cHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXIqLCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZpcnR1YWwgYm9v
bCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CiAKLSAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQg
aGl0VGVzdChTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0
dWFsIFNjcm9sbGJhclBhcnQgaGl0VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0KFNj
cm9sbGJhciosIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFy
dChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpOwogCi0gICAgdmlydHVhbCBp
bnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0aHVtYkxlbmd0
aChTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJhciop
OwotICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwg
aW50IHRodW1iUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGlu
dCB0aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IHRy
YWNrUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCB0cmFj
a0xlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50
U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
JiBjb3JuZXJSZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9s
bFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3Zlcmhh
bmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0KTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25z
KFNjcm9sbGJhciopID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopID0g
MDsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3Jv
bGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpID0gMDsKLSAgICB2aXJ0dWFsIEludFJl
Y3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKSA9IDA7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxi
YXIqLCBib29sIHBhaW50aW5nID0gZmFsc2UpID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBh
aW50aW5nID0gZmFsc2UpID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJl
Y3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0g
ZmFsc2UpID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c3BsaXRUcmFjayhTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiB0cmFjaywgSW50UmVjdCYgc3Rh
cnRUcmFjaywgSW50UmVjdCYgdGh1bWIsIEludFJlY3QmIGVuZFRyYWNrKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3BsaXRUcmFjayhTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmIHRy
YWNrLCBJbnRSZWN0JiBzdGFydFRyYWNrLCBJbnRSZWN0JiB0aHVtYiwgSW50UmVjdCYgZW5kVHJh
Y2spOwogICAgIAotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIq
KTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyKikge30KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0Jh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIHt9
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3Jv
bGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkge30KLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVj
dCYsIFNjcm9sbGJhclBhcnQpIHt9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIHt9Ci0gICAgdmlydHVhbCB2
b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmKSB7fQorICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7fQorICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmKSB7fQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGll
Y2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0
JiwgU2Nyb2xsYmFyUGFydCkge30KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xs
YmFyUGFydCkge30KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSB7fQorICAgIHZpcnR1YWwg
dm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IEludFJlY3QmKSB7fQogCi0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRy
YWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYgcmVjdCkgeyBy
ZXR1cm4gcmVjdDsgfQorICAgIHZpcnR1YWwgSW50UmVjdCBjb25zdHJhaW5UcmFja1JlY3RUb1Ry
YWNrUGllY2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYgcmVjdCkgeyBy
ZXR1cm4gcmVjdDsgfQogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcAppbmRleCBmOGNiMjgx
NTQ4NjFlMDFkYTcxMTI0OTIwYzYwZDA2YTM3ZTlhMTgzLi42ODJkODJkNWIzMzc5MThiMjVkMDk4
YmE3NzE3MzRlNzkxNTA1ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcApAQCAtMzksMTQgKzM5
LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bTo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAg
ICAvLyBUaGlzIG1ldGhvZCBpcyBqdXN0IGNhbGxlZCBhcyBhIHBhaW50LXRpbWUgb3B0aW1pemF0
aW9uIHRvIHNlZSBpZgogICAgIC8vIHBhaW50aW5nIHRoZSB0aHVtYiBjYW4gYmUgc2tpcHBlZC4g
IFdlIGRvbid0IGhhdmUgdG8gYmUgZXhhY3QgaGVyZS4KICAgICByZXR1cm4gdGh1bWJMZW5ndGgo
c2Nyb2xsYmFyKSA+IDA7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6YmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9v
bCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6YmFja0J1dHRvblJlY3QoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewog
ICAgIC8vIFdpbmRvd3MgYW5kIExpbnV4IGp1c3QgaGF2ZSBzaW5nbGUgYXJyb3dzLgogICAgIGlm
IChwYXJ0ID09IEJhY2tCdXR0b25FbmRQYXJ0KQpAQCAtNTYsNyArNTYsNyBAQCBJbnRSZWN0IFNj
cm9sbGJhclRoZW1lQ2hyb21pdW06OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFy
LCBTY3JvbGxiYXJQYQogICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxi
YXItPnkoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBT
Y3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAgICAgLy8gV2luZG93cyBhbmQgTGludXgganVz
dCBoYXZlIHNpbmdsZSBhcnJvd3MuCiAgICAgaWYgKHBhcnQgPT0gRm9yd2FyZEJ1dHRvblN0YXJ0
UGFydCkKQEAgLTc0LDcgKzc0LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpm
b3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmEKICAgICByZXR1
cm4gSW50UmVjdCh4LCB5LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogfQogCi1JbnRS
ZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6dHJhY2tSZWN0KFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgSW50U2l6ZSBicyA9IGJ1
dHRvblNpemUoc2Nyb2xsYmFyKTsKICAgICAvLyBUaGUgYnV0dG9ucyBhdCB0aGUgdG9wIGFuZCBi
b3R0b20gb2YgdGhlIHNjcm9sbGJhciBhcmUgc3F1YXJlLCBzbyB0aGUKQEAgLTkyLDE0ICs5Miwx
NCBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnRyYWNrUmVjdChTY3JvbGxiYXIq
IHNjcm9sbGJhciwgYm9vbCkKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Ny
b2xsYmFyLT55KCkgKyBicy5oZWlnaHQoKSwgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgp
IC0gMiAqIGJzLmhlaWdodCgpKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpw
YWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAg
Ly8gSnVzdCBhc3N1bWUgYSBmb3J3YXJkIHRyYWNrIHBhcnQuICBXZSBvbmx5IHBhaW50IHRoZSB0
cmFjayBhcyBhIHNpbmdsZSBwaWVjZSB3aGVuIHRoZXJlIGlzIG5vIHRodW1iLgogICAgIGlmICgh
aGFzVGh1bWIoc2Nyb2xsYmFyKSkKICAgICAgICAgcGFpbnRUcmFja1BpZWNlKGNvbnRleHQsIHNj
cm9sbGJhciwgcmVjdCwgRm9yd2FyZFRyYWNrUGFydCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bTo6cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bTo6cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAg
IGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgIT0gVmVydGljYWxTY3JvbGxiYXIpCiAgICAg
ICAgIHJldHVybjsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21p
dW06OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKgog
CiAgICAgLy8gR2V0IHRoZSB0aWNrbWFya3MgZm9yIHRoZSBmcmFtZXZpZXcuCiAgICAgVmVjdG9y
PEludFJlY3Q+IHRpY2ttYXJrczsKLSAgICBzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmdl
dFRpY2ttYXJrcyh0aWNrbWFya3MpOworICAgIHNjcm9sbGJhci0+Z2V0VGlja21hcmtzKHRpY2tt
YXJrcyk7CiAgICAgaWYgKCF0aWNrbWFya3Muc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1l
Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW0uaAppbmRleCAxMTc4MTI1NjlmNjlmMjAwMzcxYmFjMGY5ZGE4N2E3YzMyZGU0
ZmE1Li5jZjY3MWRkOTg0YzA3OTA5OTVjNjdkN2QwZjE4YzViNGE2ZjZjZmRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bS5oCkBAIC00MSwxNyArNDEsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8v
IFdpbmRvd3MgYW5kIExpbnV4LgogICAgIGNsYXNzIFNjcm9sbGJhclRoZW1lQ2hyb21pdW0gOiBw
dWJsaWMgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUgewogICAgIHByb3RlY3RlZDoKLSAgICAgICAg
dmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKikgeyByZXR1cm4gdHJ1ZTsgfQotICAg
ICAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAot
ICAgICAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xs
YmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICAgICAgdmlydHVhbCBJbnRSZWN0
IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRp
bmcgPSBmYWxzZSk7Ci0gICAgICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFy
KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICAgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tC
dXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKTsKKyAgICAgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZh
bHNlKTsKKyAgICAgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBh
aW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFy
a3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0
Jik7CiAKLSAgICAgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKikgPSAw
OworICAgICAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVu
dCopID0gMDsKICAgICB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5k
cm9pZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtQW5kcm9pZC5jcHAKaW5kZXggMWRiZWZhNjQ5YzA4OTcyZWIxYzJiMzdiNzQ3NzFi
MGQ2MWJlYTVhZC4uZTFlNTVhMWZjMTNkNzljMGY5ZThmNDczMGJlODk3ODA5NGMxZjY5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUFuZHJvaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcApAQCAtNTcsNyArNTcsNyBAQCBpbnQg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxi
YXJDb250cm9sU2l6ZSBjb250cgogICAgIHJldHVybiBzY3JvbGxiYXJUaGlja25lc3NWYWx1ZTsK
IH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6cGFpbnRTY3JvbGxiYXJC
YWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
Cit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpwYWludFNjcm9sbGJhckJhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyKQogewogICAgIC8vIFBhaW50IGJsYWNrIGJhY2tncm91bmQgaW4gRHVtcFJlbmRlclRy
ZWUsIG90aGVyd2lzZSB0aGUgcGl4ZWxzIGluIHRoZSBzY3JvbGxiYXIgYXJlYSBkZXBlbmQKICAg
ICAvLyBvbiB0aGVpciBwcmV2aW91cyBzdGF0ZSwgd2hpY2ggbWFrZXMgdGhlIGR1bXBlZCByZXN1
bHQgdW5kZXRlcm1pbmVkLgpAQCAtNjUsMTIgKzY1LDEyIEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUFuZHJvaWQ6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
IGNvCiAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHNjcm9sbGJhci0+ZnJhbWVSZWN0KCksIENv
bG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUFuZHJvaWQ6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRy
b2lkOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUludFNpemUg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCitJbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpidXR0b25TaXpl
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+
b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAgcmV0dXJuIEludFNp
emUoc2Nyb2xsYmFyVGhpY2tuZXNzVmFsdWUsIGJ1dHRvbkxlbmd0aCk7CkBAIC03OCw3ICs3OCw3
IEBAIEludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OmJ1dHRvblNpemUoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIEludFNpemUoYnV0dG9uTGVuZ3RoLCBzY3Jv
bGxiYXJUaGlja25lc3NWYWx1ZSk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5k
cm9pZDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gMiAqIHNjcm9sbGJhclRoaWNrbmVz
cyhzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRy
b2lkLmgKaW5kZXggZjA3YzkwMTY3ODZjYjI0Zjg4ZGZiOTRhZTRmYzIxNmZlNmU3MGJmYy4uZjNk
YjgwZTUyZmJmNTBjMWRmNjhhOTQwZWE5ZDQ3M2YyZGJmMjg2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtQW5kcm9pZC5oCkBAIC0zNSwxMCArMzUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
aW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7CiAKIHByb3RlY3Rl
ZDoKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwotICAgIHZpcnR1YWwgSW50
U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVt
Ykxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmly
dHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShT
Y3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0
aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHAKaW5kZXggZWM2ODQwN2U5ZDhjMzJlMzBkMzEw
ZDJlNTA1OGMyZGE3ZGJkZWNjNi4uNmI0ZGFmYzM3M2YxMGQwYWEyZDZlOTY2MmFiZTYzZGQ1ZGI2
NWU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwCkBAIC01MCw3ICs1MCw3IEBA
IGludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3Jv
bGxiYXJDb250cm9sU2l6ZSBjb250cm9sCiAgICAgcmV0dXJuIHNjcm9sbGJhclNpemUud2lkdGgo
KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVj
ZShHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bUxpbnV4OjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFy
dCBwYXJ0VHlwZSkKIHsKICAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0
ZSA9IHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSA9PSBwYXJ0VHlwZSA/IFBsYXRmb3JtU3VwcG9y
dDo6U3RhdGVIb3ZlciA6IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVOb3JtYWw7CiAgICAgSW50UmVj
dCBhbGlnblJlY3QgPSB0cmFja1JlY3Qoc2Nyb2xsYmFyLCBmYWxzZSk7CkBAIC02Nyw3ICs2Nyw3
IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRyYWNrUGllY2UoR3Jh
cGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyCiAgICAgICAgICZleHRyYVBhcmFtcyk7CiB9CiAK
LXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbihHcmFwaGljc0Nv
bnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Ny
b2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50
QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAgICBQbGF0
Zm9ybVN1cHBvcnQ6OlRoZW1lUGFydCBwYWludFBhcnQ7CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpU
aGVtZVBhaW50U3RhdGUgc3RhdGUgPSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlTm9ybWFsOwpAQCAt
MTAyLDcgKzEwMiw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1
dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjCiAgICAgUGxhdGZvcm1TdXBw
b3J0OjpwYWludFRoZW1lUGFydChnYywgcGFpbnRQYXJ0LCBzdGF0ZSwgcmVjdCwgMCk7CiB9CiAK
LXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCogZ2MsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9p
ZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0
KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKICAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0ZTsKIApAQCAt
MTIwLDEyICsxMjAsMTIgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50
VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3IKICAgICAgICAgMCk7CiB9
CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtTGludXg6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4gKGV2
dC5zaGlmdEtleSgpICYmIGV2dC5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB8fCAoZXZ0LmJ1dHRv
bigpID09IE1pZGRsZUJ1dHRvbik7CiB9CiAKLUludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUxpbnV4OjpidXR0b25TaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorSW50U2l6ZSBTY3JvbGxi
YXJUaGVtZUNocm9taXVtTGludXg6OmJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2Fs
U2Nyb2xsYmFyKSB7CiAgICAgICAgIEludFNpemUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0
VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJVcEFycm93KTsKQEAg
LTEzNyw3ICsxMzcsNyBAQCBJbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6YnV0
dG9uU2l6ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICByZXR1cm4gSW50U2l6ZShzY3JvbGxi
YXItPndpZHRoKCkgPCAyICogc2l6ZS53aWR0aCgpID8gc2Nyb2xsYmFyLT53aWR0aCgpIC8gMiA6
IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTGludXg6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2lu
dCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0
aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAgICAgSW50U2l6ZSBzaXplID0gUGxh
dGZvcm1TdXBwb3J0OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9s
bGJhclZlcnRpY2FsVGh1bWIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaAppbmRleCA4ZTgw
MmU3MzQxYjc3NWI1OTU1YWQwZGVjMGI4ZWVkNTZmNzk3MjczLi4zMzBkMDNmYjAyMzIxMzRlYzJj
YTI5NDE5ZmRhYjI3MzQ5NDc1NGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaApAQCAt
MzksMTIgKzM5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBpbnQg
c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplKTsKIAogICAgIHByb3RlY3Rl
ZDoKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25z
dCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRo
dW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICAg
ICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNj
cm9sbGJhciopOwotICAgICAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xs
YmFyKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFy
dCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50Jik7CisgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRo
ZW1lQ2xpZW50Kik7CisgICAgICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3Jv
bGxiYXJUaGVtZUNsaWVudCopOwogICAgIH07CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1l
Q2hyb21pdW1NYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWMuaAppbmRleCA0MWExOThlM2Y4NDIwYzg0ODk0NWZiODQ3NDRkZGI3
MDAyNGNkNmU1Li40ZDM0MjZiYjYyMDc5OWJhM2Q5MDgzYjZkYzg5NDFjYWI0NDI2ZWFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYy5oCkBAIC0zNiwxMiArMzYsMTIgQEAgcHVibGljOgogICAgIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWMoKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2aXJ0
dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHBh
aW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVy
aGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAgICAgCiBwcml2YXRlOgotICAg
IHZvaWQgcGFpbnRHaXZlblRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBj
b25zdCBJbnRSZWN0JiwgY29uc3QgVmVjdG9yPEludFJlY3Q+Jik7CisgICAgdm9pZCBwYWludEdp
dmVuVGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgSW50UmVjdCYsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYpOwogCiAgICAgUmVmUHRyPFBhdHRl
cm4+IG1fb3ZlcmhhbmdQYXR0ZXJuOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCmluZGV4
IDQ1OWE1OGIwNzZmNzAwNmYyNzc2NWIwMjQ5N2EwOTkzNWY4MjNmYjcuLjlmN2EzZjMwZDcxYTNk
NjM3NjQxNWQwM2VlZjkxMDU3MWZjZmJjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQpA
QCAtNjEsMTEgKzYxLDExIEBAIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6On5TY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjKCkKIHsKIH0KIAotc3RhdGljIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQ
YWludFN0YXRlIHNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFy
KQorc3RhdGljIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHNjcm9sbGJhclN0YXRl
VG9UaGVtZVN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYg
KCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6
U3RhdGVEaXNhYmxlZDsKLSAgICBpZiAoIXNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNB
Y3RpdmUoKSkKKyAgICBpZiAoIXNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQog
ICAgICAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZUluYWN0aXZlOwogICAgIGlmIChz
Y3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0KQogICAgICAgICByZXR1cm4gUGxh
dGZvcm1TdXBwb3J0OjpTdGF0ZVByZXNzZWQ7CkBAIC05NCwxMSArOTQsMTEgQEAgc3RhdGljIHZv
aWQgc2Nyb2xsYmFyUGFpbnRlclBhaW50VHJhY2soU2Nyb2xsYmFyUGFpbnRlciBzY3JvbGxiYXJQ
YWludGVyLCBib29sIGUKIC8vICAgICAtIGRyYXdpbmcgdXNpbmcgUGxhdGZvcm1TdXBwb3J0IGZ1
bmN0aW9ucwogLy8gICAgIC0gZHJhd2luZyB0aWNrbWFya3MKIC8vICAgICAtIFNraWEgc3BlY2lm
aWMgY2hhbmdlcwotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxi
YXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgLy8gR2V0IHRoZSB0aWNrbWFya3MgZm9yIHRo
ZSBmcmFtZXZpZXcuCiAgICAgVmVjdG9yPEludFJlY3Q+IHRpY2ttYXJrczsKLSAgICBzY3JvbGxi
YXItPnNjcm9sbGFibGVBcmVhKCktPmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOworICAgIHNjcm9s
bGJhci0+Z2V0VGlja21hcmtzKHRpY2ttYXJrcyk7CiAKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVy
bGF5QVBJQXZhaWxhYmxlKCkpIHsKICAgICAgICAgZmxvYXQgdmFsdWUgPSAwOwpAQCAtMTg4LDcg
KzE4OCw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogY29uCiAgICAgaWYgKCFzY3JvbGxiYXItPmVu
YWJsZWQoKSkKICAgICAgICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0ga1RoZW1lVHJhY2tEaXNh
YmxlZDsKICAgICBlbHNlCi0gICAgICAgIHRyYWNrSW5mby5lbmFibGVTdGF0ZSA9IHNjcm9sbGJh
ci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSA/IGtUaGVtZVRyYWNrQWN0aXZlIDoga1Ro
ZW1lVHJhY2tJbmFjdGl2ZTsKKyAgICAgICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0gc2Nyb2xs
YmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkgPyBrVGhlbWVUcmFja0FjdGl2ZSA6IGtUaGVt
ZVRyYWNrSW5hY3RpdmU7CiAKICAgICBpZiAoIWhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkKICAgICAg
ICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0ga1RoZW1lVHJhY2tOb3RoaW5nVG9TY3JvbGw7CkBA
IC0yNjMsNyArMjYzLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb24KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludEdpdmVuVGlja21h
cmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgdGlja21hcmtzKQordm9pZCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludEdpdmVuVGlja21hcmtzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgVmVjdG9yPEludFJlY3Q+JiB0aWNrbWFya3MpCiB7CiAgICAgaWYg
KHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSAhPSBWZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcAppbmRleCBmNDM1ODM5ZDgyMTg1NjRm
ODAyNzI4ZDMyODUzMjBkMWUwY2RiYWM4Li5hMDgxOTgzNDc0OTFkY2M1ZDhmMDIyYTEyMjg4OTBk
NjU3N2ZlM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcApAQCAtNzMsNyArNzMsNyBA
QCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmludmFsaWRhdGVPbk1vdXNlRW50ZXJF
eGl0KCkKICAgICByZXR1cm4gd2luZG93c1ZlcnNpb24oKSA+PSBXaW5kb3dzVmlzdGE7CiB9CiAK
LWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmln
aW4oU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQor
Ym9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdp
bihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2dCkKIHsKICAgICAvLyBGaW5kIHRoZSByZWN0IHdpdGhpbiB3aGljaCB3ZSBzaG91bGRu
J3Qgc25hcCwgYnkgZXhwYW5kaW5nIHRoZSB0cmFjayByZWN0CiAgICAgLy8gaW4gYm90aCBkaW1l
bnNpb25zLgpAQCAtOTEsNyArOTEsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46
OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhciogc2Nyb2xsYmFyLAogICAgIHJl
dHVybiAhcmVjdC5jb250YWlucyhtb3VzZVBvc2l0aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtV2luOjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFy
dFR5cGUpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VHJhY2tQaWVjZShH
cmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25z
dCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQogewogICAgIGJvb2wgaG9y
eiA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyOwogCkBA
IC0xMTMsNyArMTEzLDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWludFRy
YWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKgogICAgICAgICBhbGlnblJl
Y3QpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50QnV0dG9uKEdy
YXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46
OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAg
ICBib29sIGhvcnogPSBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9s
bGJhcjsKIApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bjo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvCiAgICAg
ICAgIHJlY3QpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1
bWIoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIoR3Jh
cGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKICAgICBib29sIGhvcnogPSBzY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsKIApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBT
Y3JvbGxiYXIqIHNjcm9sCiAgICAgICAgIHJlY3QpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFy
UGFydCBwYXJ0KSBjb25zdAoraW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldFRoZW1l
U3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0
KSBjb25zdAogewogICAgIC8vIFdoZW4gZHJhZ2dpbmcgdGhlIHRodW1iLCBkcmF3IHRodW1iIHBy
ZXNzZWQgYW5kIG90aGVyIHNlZ21lbnRzIG5vcm1hbAogICAgIC8vIHJlZ2FyZGxlc3Mgb2Ygd2hl
cmUgdGhlIGN1cnNvciBhY3R1YWxseSBpcy4gIFNlZSBhbHNvIGZvdXIgcGxhY2VzIGluCkBAIC0x
NzEsNyArMTcxLDcgQEAgaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldFRoZW1lU3Rh
dGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gKHNjcm9s
bGJhci0+cHJlc3NlZFBhcnQoKSA9PSBwYXJ0KSA/IFNDUkJTX1BSRVNTRUQgOiBTQ1JCU19OT1JN
QUw7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3Rh
dGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29uc3QKK2ludCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3RhdGUoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KSBjb25zdAogewogICAgIC8v
IFdlIGNvdWxkIHRha2UgYWR2YW50YWdlIG9mIGtub3dpbmcgdGhlIHZhbHVlcyBpbiB0aGUgc3Rh
dGUgZW51bSB0byB3cml0ZQogICAgIC8vIHNvbWUgc2ltcGxlciBjb2RlLCBidXQgdHJlYXRpbmcg
dGhlIHN0YXRlIGVudW0gYXMgYSBibGFjayBib3ggc2VlbXMKQEAgLTIyMSw3ICsyMjEsNyBAQCBp
bnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVBcnJvd1N0YXRlKFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBTY3JvbGxiYQogICAgIHJldHVybiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFy
dCgpID09IHBhcnQpID8gQUJTX0RPV05QUkVTU0VEIDogQUJTX0RPV05OT1JNQUw7CiB9CiAKLWlu
dCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRDbGFzc2ljVGhlbWVTdGF0ZShTY3JvbGxi
YXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KSBjb25zdAoraW50IFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1XaW46OmdldENsYXNzaWNUaGVtZVN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29uc3QKIHsKICAgICAvLyBXaGVuIGRy
YWdnaW5nIHRoZSB0aHVtYiwgZHJhdyB0aGUgYnV0dG9ucyBub3JtYWwgZXZlbiB3aGVuIGhvdmVy
ZWQuCiAgICAgaWYgKHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCkBAIC0y
MzUsMTIgKzIzNSwxMiBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3Np
Y1RoZW1lU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbAogICAgIHJldHVybiAoc2Ny
b2xsYmFyLT5wcmVzc2VkUGFydCgpID09IHBhcnQpID8gKERGQ1NfUFVTSEVEIHwgREZDU19GTEFU
KSA6IDA7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkQ2VudGVy
T25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIHJldHVy
biBldnQuc2hpZnRLZXkoKSAmJiBldnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbjsKIH0KIAotSW50
U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpidXR0b25TaXplKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQorSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpidXR0b25TaXplKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgLy8gT3VyIGRlc2lyZWQgcmVj
dCBpcyBlc3NlbnRpYWxseSB0aGlja25lc3MgYnkgdGhpY2tuZXNzLgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2lu
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtV2luLmgKaW5kZXggNjljZmExMzFjNWNiMDRlOWI1MjEwYjc2NWNmYjQ4MWU4ZGRjYjEzNS4u
YWM4ODgxZjkzYjVkYjFhZmY0Njc5YTYwNjNlN2JhN2U4NmY1NTFmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1XaW4uaApAQCAtMzgsMTkgKzM4LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJD
b250cm9sU2l6ZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpbnZhbGlkYXRlT25Nb3VzZUVudGVy
RXhpdCgpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4o
U2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50
QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3Jv
bGxiYXJQYXJ0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
KTsKLSAgICAgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKik7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRo
dW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Cisg
ICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICBpbnQgZ2V0VGhlbWVTdGF0ZShTY3JvbGxiYXIqLCBT
Y3JvbGxiYXJQYXJ0KSBjb25zdDsKLSAgICAgICAgaW50IGdldFRoZW1lQXJyb3dTdGF0ZShTY3Jv
bGxiYXIqLCBTY3JvbGxiYXJQYXJ0KSBjb25zdDsKLSAgICAgICAgaW50IGdldENsYXNzaWNUaGVt
ZVN0YXRlKFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQpIGNvbnN0OworICAgICAgICBpbnQgZ2V0
VGhlbWVTdGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIGNvbnN0Owor
ICAgICAgICBpbnQgZ2V0VGhlbWVBcnJvd1N0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Ny
b2xsYmFyUGFydCkgY29uc3Q7CisgICAgICAgIGludCBnZXRDbGFzc2ljVGhlbWVTdGF0ZShTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIGNvbnN0OwogICAgIH07CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9TY3JvbGxiYXJUaGVtZUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Ny
b2xsYmFyVGhlbWVFZmwuY3BwCmluZGV4IDYyZGYwMDVkNjc1NzFkMTRhZDM5NDM2MGQ1NmM0OThl
NGRmOTJiZmIuLjI0MGI1MDE0Nzc5YzE4MmQxNDM5MGMzZjhjMzkzNzc1NzdlOTNhODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmNwcApA
QCAtNDksMTEgKzQ5LDExIEBAIGludCBTY3JvbGxiYXJUaGVtZUVmbDo6c2Nyb2xsYmFyVGhpY2tu
ZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogICAgIHJldHVybiAwOyAvLyB3
ZSBwYWludCBvbiB0b3AKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUVmbDo6cmVnaXN0ZXJTY3Jv
bGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lRWZsOjpyZWdp
c3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogfQogCi12
b2lkIFNjcm9sbGJhclRoZW1lRWZsOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUVmbDo6dW5yZWdpc3RlclNjcm9sbGJhcihTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5oCmluZGV4IDBmZTE2ODgxZTJlNDU2ZTZl
MTIzMDFhZWVmODZjMjY1YmQzMzIzNGIuLmZjNzFjYmVkODkwYTFhNjVhOWEwMmFkOGEwM2QzOGZk
Yzk5YWQzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxi
YXJUaGVtZUVmbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJU
aGVtZUVmbC5oCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgaW50IHNj
cm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIp
OwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xs
YmFyKTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNj
cm9sbGJhcik7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIpOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xs
YmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAKaW5kZXggZTk5
MzY0ZjJhN2ZjYWY0ODg4MzBiNDY4ZGUxZDE4YWQ3NTA0ZTkwZi4uOTRlM2ZkNzZmN2ZmYzUyMzBm
Yzg0N2ZmOWZlY2FmNDNkYzQ2ZmEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotc3RhdGljIEhhc2hTZXQ8U2Nyb2xsYmFyKj4qIGdTY3JvbGxiYXJzOwor
c3RhdGljIEhhc2hTZXQ8U2Nyb2xsYmFyVGhlbWVDbGllbnQqPiogZ1Njcm9sbGJhcnM7CiAKIFNj
cm9sbGJhclRoZW1lKiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQogewpAQCAtNDUsMTQg
KzQ1LDE0IEBAIFNjcm9sbGJhclRoZW1lR3RrOjp+U2Nyb2xsYmFyVGhlbWVHdGsoKQogewogfQog
Ci12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNj
cm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKCFnU2Nyb2xsYmFycykKLSAg
ICAgICAgZ1Njcm9sbGJhcnMgPSBuZXcgSGFzaFNldDxTY3JvbGxiYXIqPjsKKyAgICAgICAgZ1Nj
cm9sbGJhcnMgPSBuZXcgSGFzaFNldDxTY3JvbGxiYXJUaGVtZUNsaWVudCo+OwogICAgIGdTY3Jv
bGxiYXJzLT5hZGQoc2Nyb2xsYmFyKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dW5y
ZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhl
bWVHdGs6OnVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
cikKIHsKICAgICBnU2Nyb2xsYmFycy0+cmVtb3ZlKHNjcm9sbGJhcik7CiAgICAgaWYgKGdTY3Jv
bGxiYXJzLT5pc0VtcHR5KCkpIHsKQEAgLTY5LDkgKzY5LDkgQEAgdm9pZCBTY3JvbGxiYXJUaGVt
ZUd0azo6dXBkYXRlU2Nyb2xsYmFyc0ZyYW1lVGhpY2tuZXNzKCkKICAgICAvLyBVcGRhdGUgdGhl
IHRoaWNrbmVzcyBvZiBldmVyeSBpbnRlcmlvciBmcmFtZSBzY3JvbGxiYXIgd2lkZ2V0LiBUaGUK
ICAgICAvLyBwbGF0Zm9ybS1pbmRlcGVuZGVudCBzY3JvbGxiYXIgdGhlbSBjb2RlIGlzbid0IHll
dCBzbWFydCBlbm91Z2ggdG8gZ2V0CiAgICAgLy8gdGhpcyBpbmZvcm1hdGlvbiB3aGVuIGl0IHBh
aW50cy4KLSAgICBIYXNoU2V0PFNjcm9sbGJhcio+OjppdGVyYXRvciBlbmQgPSBnU2Nyb2xsYmFy
cy0+ZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFNjcm9sbGJhcio+OjppdGVyYXRvciBpdCA9IGdT
Y3JvbGxiYXJzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgU2Nyb2xsYmFy
KiBzY3JvbGxiYXIgPSAoKml0KTsKKyAgICBIYXNoU2V0PFNjcm9sbGJhclRoZW1lQ2xpZW50Kj46
Oml0ZXJhdG9yIGVuZCA9IGdTY3JvbGxiYXJzLT5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8U2Ny
b2xsYmFyVGhlbWVDbGllbnQqPjo6aXRlcmF0b3IgaXQgPSBnU2Nyb2xsYmFycy0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIgPSAoKml0KTsKIAogICAgICAgICAvLyBUb3AtbGV2ZWwgc2Nyb2xsYmFyIGkuZS4gc2Nyb2xs
YmFycyB3aG8gaGF2ZSBhIHBhcmVudCBTY3JvbGxWaWV3CiAgICAgICAgIC8vIHdpdGggbm8gcGFy
ZW50IGFyZSBuYXRpdmUsIGFuZCB0aHVzIGRvIG5vdCBuZWVkIHRvIGJlIHJlc2l6ZWQuCkBAIC04
NiwxNCArODYsMTQgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dXBkYXRlU2Nyb2xsYmFyc0Zy
YW1lVGhpY2tuZXNzKCkKICAgICB9CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6Omhhc1Ro
dW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6aGFzVGh1
bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICAvLyBUaGlzIG1ldGhv
ZCBpcyBqdXN0IGNhbGxlZCBhcyBhIHBhaW50LXRpbWUgb3B0aW1pemF0aW9uIHRvIHNlZSBpZgog
ICAgIC8vIHBhaW50aW5nIHRoZSB0aHVtYiBjYW4gYmUgc2tpcHBlZC4gIFdlIGRvbid0IGhhdmUg
dG8gYmUgZXhhY3QgaGVyZS4KICAgICByZXR1cm4gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+IDA7
CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJh
clRoZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRv
bkVuZFBhcnQgJiYgIW1faGFzQmFja0J1dHRvbkVuZFBhcnQpCiAgICAgICAgIHJldHVybiBJbnRS
ZWN0KCk7CkBAIC0xMTQsNyArMTE0LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6YmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGEKICAgICBy
ZXR1cm4gSW50UmVjdCh4LCBzY3JvbGxiYXItPnkoKSArIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSBt
X3Ryb3VnaEJvcmRlcldpZHRoIC0gKDIgKiBzaXplLmhlaWdodCgpKSwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6Zm9yd2FyZEJ1
dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkK
K0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICBp
ZiAocGFydCA9PSBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0ICYmICFtX2hhc0ZvcndhcmRCdXR0b25T
dGFydFBhcnQpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CkBAIC0xNDAsNyArMTQwLDcgQEAg
SW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gSW50UmVjdCh4LCBzY3JvbGxiYXIt
PnkoKSArIG1fdHJvdWdoQm9yZGVyV2lkdGggKyBzaXplLmhlaWdodCgpLCBzaXplLndpZHRoKCks
IHNpemUuaGVpZ2h0KCkpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0cmFja1Jl
Y3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3Rr
Ojp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCkKIHsKICAg
ICAvLyBUaGUgcGFkZGluZyBhbG9uZyB0aGUgdGh1bWIgbW92ZW1lbnQgYXhpcyBpbmNsdWRlcyB0
aGUgdHJvdWdoIGJvcmRlcgogICAgIC8vIHBsdXMgdGhlIHNpemUgb2Ygc3RlcHBlciBzcGFjaW5n
ICh0aGUgc3BhY2UgYmV0d2VlbiB0aGUgc3RlcHBlciBhbmQKQEAgLTE4MCw3ICsxODAsNyBAQCBJ
bnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGJvb2wpCiAgICAgICAgICAgICAgICAgICAgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgp
IC0gKDIgKiBtb3ZlbWVudEF4aXNQYWRkaW5nKSAtIGJ1dHRvbnNXaWR0aCk7CiB9CiAKLUludFJl
Y3QgU2Nyb2xsYmFyVGhlbWVHdGs6OnRodW1iUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhl
bWVHdGs6OnRodW1iUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KQogewogICAgIEludFJlY3QgdHJhY2tSZWN0
ID0gY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxiYXIsIHVuY29uc3RyYWlu
ZWRUcmFja1JlY3QpOwogICAgIGludCB0aHVtYlBvcyA9IHRodW1iUG9zaXRpb24oc2Nyb2xsYmFy
KTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0aHVtYlJl
Y3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29ucwogICAgIHJldHVy
biBJbnRSZWN0KHRyYWNrUmVjdC54KCkgKyAodHJhY2tSZWN0LndpZHRoKCkgLSBtX3RodW1iRmF0
bmVzcykgLyAyLCB0cmFja1JlY3QueSgpICsgdGh1bWJQb3MsIG1fdGh1bWJGYXRuZXNzLCB0aHVt
Ykxlbmd0aChzY3JvbGxiYXIpKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgaWYgKGdyYXBoaWNz
Q29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
NjAsNyArMjYwLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb24KICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxi
YXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQorYm9vbCBTY3JvbGxiYXJUaGVt
ZUd0azo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiB7CiAgICAgcmV0dXJuIChldmVudC5zaGlmdEtleSgp
ICYmIGV2ZW50LmJ1dHRvbigpID09IExlZnRCdXR0b24pIHx8IChldmVudC5idXR0b24oKSA9PSBN
aWRkbGVCdXR0b24pOwogfQpAQCAtMjcwLDcgKzI3MCw3IEBAIGludCBTY3JvbGxiYXJUaGVtZUd0
azo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplKQogICAgIHJldHVybiBt
X3RodW1iRmF0bmVzcyArIChtX3Ryb3VnaEJvcmRlcldpZHRoICogMik7CiB9CiAKLUludFNpemUg
U2Nyb2xsYmFyVGhlbWVHdGs6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitJbnRT
aXplIFNjcm9sbGJhclRoZW1lR3RrOjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNh
bFNjcm9sbGJhcikKICAgICAgICAgcmV0dXJuIEludFNpemUobV90aHVtYkZhdG5lc3MsIG1fc3Rl
cHBlclNpemUpOwpAQCAtMjc5LDcgKzI3OSw3IEBAIEludFNpemUgU2Nyb2xsYmFyVGhlbWVHdGs6
OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIEludFNpemUobV9z
dGVwcGVyU2l6ZSwgbV90aHVtYkZhdG5lc3MpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVHdGs6
Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJU
aGVtZUd0azo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIpCiB7CiAgICAgcmV0dXJuIG1fbWluVGh1bWJMZW5ndGg7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5oCmluZGV4IDQ1ZTA5M2IxZWM5N2Qx
YWZhYTI0YzU4MzMxNTY2OTMwMmU4NWNkNjMuLmU3M2RmMjg1NTAxYjU4MjZkYzA1OWI4M2JmYzNk
OWE0MTcwZDRiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3Jv
bGxiYXJUaGVtZUd0ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxi
YXJUaGVtZUd0ay5oCkBAIC0zNywyOSArMzcsMjkgQEAgcHVibGljOgogICAgIFNjcm9sbGJhclRo
ZW1lR3RrKCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhlbWVHdGsoKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tC
dXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wpOwotICAgIHZpcnR1YWwg
SW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29s
KTsKLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wpOwotICAg
IEludFJlY3QgdGh1bWJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWlu
ZWRUcmFja1JlY3QpOwotICAgIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7Ci0gICAgdm9pZCBwYWludFNjcm9sbGJhckJh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKik7Ci0gICAgdm9pZCBwYWludFRy
YWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0
Jik7Ci0gICAgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1l
Q2xpZW50KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3Jv
bGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wpOworICAgIHZpcnR1YWwg
SW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJh
clBhcnQsIGJvb2wpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBib29sKTsKKyAgICBJbnRSZWN0IHRodW1iUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QpOworICAgIGJvb2wg
cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRS
ZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZvaWQgcGFpbnRUcmFj
a0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBJbnRSZWN0Jik7CisgICAgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IElu
dFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25U
aHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwog
ICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7
Ci0gICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVh
bCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgSW50U2l6
ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgbWlu
aW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKICAgICAvLyBUT0RPOiBU
aGVzZSBhcmUgdGhlIGRlZmF1bHQgR1RLKyB2YWx1ZXMuIEF0IHNvbWUgcG9pbnQgd2Ugc2hvdWxk
IHB1bGwgdGhlc2UgZnJvbSB0aGUgdGhlbWUgaXRzZWxmLgogICAgIHZpcnR1YWwgZG91YmxlIGlu
aXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMjA7IH0KICAgICB2aXJ0dWFs
IGRvdWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMDI7IH0KICAgICB2b2lk
IHVwZGF0ZVRoZW1lUHJvcGVydGllcygpOwogICAgIHZvaWQgdXBkYXRlU2Nyb2xsYmFyc0ZyYW1l
VGhpY2tuZXNzKCk7Ci0gICAgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKLSAg
ICB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CisgICAgdm9pZCByZWdpc3Rl
clNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZvaWQgdW5yZWdpc3RlclNj
cm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiBwcm90ZWN0ZWQ6CiAjaWZuZGVmIEdU
S19BUElfVkVSU0lPTl8yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2Nyb2xsYmFyVGhlbWVHdGsyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3Jv
bGxiYXJUaGVtZUd0azIuY3BwCmluZGV4IDcyOWJkMTI0ZGUyYjIxODU0OTk3YjE5ODc2MzBjZGY4
OWJlYTkxMDMuLjg2NmJiOGExZDJmNzFhYTg2NGVhNTdlZDMwM2YxMzYwNzJjMWM0MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3Bw
CkBAIC02NiwxMyArNjYsMTMgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dXBkYXRlVGhlbWVQ
cm9wZXJ0aWVzKCkKICAgICB1cGRhdGVTY3JvbGxiYXJzRnJhbWVUaGlja25lc3MoKTsKIH0KIAot
c3RhdGljIEd0a1dpZGdldCogZ2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQorc3RhdGljIEd0a1dpZGdldCogZ2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgUmVuZGVyVGhlbWVHdGsqIHRoZW1lID0gc3Rh
dGljX2Nhc3Q8UmVuZGVyVGhlbWVHdGsqPihSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCkuZ2V0
KCkpOwogICAgIHJldHVybiBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3Jv
bGxiYXIgPyB0aGVtZS0+Z3RrVlNjcm9sbGJhcigpIDogdGhlbWUtPmd0a0hTY3JvbGxiYXIoKTsK
IH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
cmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBQYWludCB0aGUgdHJhY2sgYmFja2dyb3VuZC4g
SWYgdGhlIHRyb3VnaC11bmRlci1zdGVwcGVycyBwcm9wZXJ0eSBpcyB0cnVlLCB0aGlzCiAgICAg
Ly8gc2hvdWxkIGJlIHRoZSBmdWxsIHNpemUgb2YgdGhlIHNjcm9sbGJhciwgYnV0IGlmIGlzIGZh
bHNlLCBpdCBzaG91bGQgb25seSBiZSB0aGUKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTY3JvbGxi
YXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBTY3JvbGxiYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9BQ1RJ
VkUsIEdUS19TSEFET1dfSU4sICJ0cm91Z2giKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJh
ckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyKQogewogICAgIEludFJlY3QgZnVsbFNjcm9sbGJhclJlY3QgPSBJbnRSZWN0
KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSwgc2Nyb2xsYmFyLT53aWR0aCgpLCBzY3Jv
bGxiYXItPmhlaWdodCgpKTsKIApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1l
R3RrOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBT
Y3JvbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NUQVRFX05PUk1BTCwgR1RL
X1NIQURPV19JTiwgInNjcm9sbGVkX3dpbmRvdyIpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1l
R3RrOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBHdGtXaWRnZXQqIHdpZGdldCA9
IGdldFdpZGdldEZvclNjcm9sbGJhcihzY3JvbGxiYXIpOwogICAgIGdib29sZWFuIGFjdGl2YXRl
U2xpZGVyOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50
VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhCiAgICAg
d2lkZ2V0Q29udGV4dC5ndGtQYWludFNsaWRlcihzbGlkZXJSZWN0LCB3aWRnZXQsIHN0YXRlVHlw
ZSwgc2hhZG93VHlwZSwgInNsaWRlciIsIG9yaWVudGF0aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxi
YXJUaGVtZUd0azo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQor
dm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0
LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgLy8gVGhlIGJ1dHRvbnMgd2lsbCBiZSBkaXNh
YmxlZCBpZiB0aGUgdGh1bWIgaXMgYXMgdGhlIGFwcHJvcHJpYXRlIGV4dHJlbWUuCiAgICAgR3Rr
U2hhZG93VHlwZSBzaGFkb3dUeXBlID0gR1RLX1NIQURPV19PVVQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGszLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azMuY3BwCmluZGV4IDRjMzNlNjZk
YjhmZmVmYzNmNDIzNDZjYWQwZWVlNjdlZTZjZDQ1ZmUuLjk3NDljNTQzZjNkZGY2YjMxNWVmZmI5
OGE3NTlmZjViMDAyZDcwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9TY3JvbGxiYXJUaGVtZUd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9TY3JvbGxiYXJUaGVtZUd0azMuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyB2b2lkIGFw
cGx5U2Nyb2xsYmFyU3R5bGVDb250ZXh0Q2xhc3NlcyhHdGtTdHlsZUNvbnRleHQqIGNvbnRleHQs
IFNjcm9sbGJhCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfYWRkX2NsYXNzKGNvbnRleHQsIG9yaWVu
dGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gIEdUS19TVFlMRV9DTEFTU19WRVJUSUNBTCA6
IEdUS19TVFlMRV9DTEFTU19IT1JJWk9OVEFMKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVH
dGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAv
LyBQYWludCB0aGUgdHJhY2sgYmFja2dyb3VuZC4gSWYgdGhlIHRyb3VnaC11bmRlci1zdGVwcGVy
cyBwcm9wZXJ0eSBpcyB0cnVlLCB0aGlzCiAgICAgLy8gc2hvdWxkIGJlIHRoZSBmdWxsIHNpemUg
b2YgdGhlIHNjcm9sbGJhciwgYnV0IGlmIGlzIGZhbHNlLCBpdCBzaG91bGQgb25seSBiZSB0aGUK
QEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIKICAgICBndGtfc3R5bGVf
Y29udGV4dF9yZXN0b3JlKG1fY29udGV4dCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6
OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9s
bGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJC
YWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhcikKIHsKICAgICBndGtfc3R5bGVfY29udGV4dF9zYXZlKG1fY29udGV4dCk7CiAK
QEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJh
ckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbAogICAgIGd0a19zdHls
ZV9jb250ZXh0X3Jlc3RvcmUobV9jb250ZXh0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRU
aHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2F2
ZShtX2NvbnRleHQpOwogCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xs
YmEKICAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKG1fY29udGV4dCk7CiB9CiAKLXZvaWQg
U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQg
cGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGd0a19zdHlsZV9jb250ZXh0X3Nh
dmUobV9jb250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbGJhclRoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
YmFyVGhlbWVNYWMuaAppbmRleCAxM2Q0NGMyM2QzYjMzNjIzNmZiNjQwOThmYTg3MGFlYzhjN2I1
NjU4Li43N2ZiYWM5NGJjYjliMDI3NzY4ODQxYmNmZjg5ZDRjZDEwOTc5OWFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaApAQCAtMjYsNiAr
MjYsNyBAQAogI2lmbmRlZiBTY3JvbGxiYXJUaGVtZU1hY19oCiAjZGVmaW5lIFNjcm9sbGJhclRo
ZW1lTWFjX2gKIAorI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlLmgiCiAKIHR5cGVkZWYgaWQgU2Nyb2xsYmFyUGFpbnRlcjsKQEAgLTM5LDEw
ICs0MCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByZWZlcmVuY2VzQ2hhbmdlZCgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXIqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKICNp
ZiAhUExBVEZPUk0oQ0hST01JVU0pCi0gICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhcios
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7Cisg
ICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKICNlbmRpZgogCiAgICAg
dmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVn
dWxhclNjcm9sbGJhcik7CkBAIC01Niw4ICs1Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
U2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBidXR0b25zUGxhY2VtZW50KCkgY29uc3Q7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVh
bCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCB2
b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogICAgIHZv
aWQgc2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYWludGVy
KTsKICAgICBTY3JvbGxiYXJQYWludGVyIHBhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKik7
CkBAIC02NiwxOSArNjcsMTkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldElzQ3VycmVu
dGx5RHJhd2luZ0ludG9MYXllcihib29sKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9v
bCBoYXNCdXR0b25zKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3Jv
bGxiYXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVu
dCopOworICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwog
Ci0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJh
clBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndh
cmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBm
YWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29sIHBh
aW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7
CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFs
IEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9
IGZhbHNlKTsKIAogICAgIHZpcnR1YWwgaW50IG1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSB7IHJl
dHVybiA0MDsgfQogCi0gICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJh
ciopOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNs
aWVudCopOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9s
bGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwotICAgIHZpcnR1YWwgYm9vbCBzaG91
bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIGludCBzY3JvbGxiYXJQYXJ0VG9I
SVByZXNzZWRTdGF0ZShTY3JvbGxiYXJQYXJ0KTsKIAogI2lmICFQTEFURk9STShDSFJPTUlVTSkg
JiYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0K
aW5kZXggY2M3NDgyNDU3Nzg1MjkzZDFkNTc4Yjc4MmQ4MWMyN2ZhYmIyNTkyNC4uM2I5MDIxYWRl
YTU1ZGM4YWZjZDY2YmRkZjU1NzYxMjQwOWQ5OTdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpAQCAtNTAsNyArNTAsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIEhh
c2hNYXA8U2Nyb2xsYmFyKiwgUmV0YWluUHRyPFNjcm9sbGJhclBhaW50ZXI+ID4gU2Nyb2xsYmFy
UGFpbnRlck1hcDsKK3R5cGVkZWYgSGFzaE1hcDxTY3JvbGxiYXJUaGVtZUNsaWVudCosIFJldGFp
blB0cjxTY3JvbGxiYXJQYWludGVyPiA+IFNjcm9sbGJhclBhaW50ZXJNYXA7CiAKIHN0YXRpYyBT
Y3JvbGxiYXJQYWludGVyTWFwKiBzY3JvbGxiYXJNYXAoKQogewpAQCAtMTYyLDcgKzE2Miw3IEBA
IHN0YXRpYyB2b2lkIHVwZGF0ZUFycm93UGxhY2VtZW50KCkKICAgICB9CiB9CiAKLXZvaWQgU2Ny
b2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQor
dm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxh
YmxlKCkpIHsKICAgICAgICAgYm9vbCBpc0hvcml6b250YWwgPSBzY3JvbGxiYXItPm9yaWVudGF0
aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsKQEAgLTE3NSwxOSArMTc1LDE5IEBAIHZvaWQg
U2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFy
KQogICAgIH0KIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dW5yZWdpc3RlclNjcm9sbGJh
cihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVucmVnaXN0
ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBzY3Jv
bGxiYXJNYXAoKS0+cmVtb3ZlKHNjcm9sbGJhcik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVN
YWM6OnNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9s
bGJhclBhaW50ZXIgbmV3UGFpbnRlcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnNldE5ld1Bh
aW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xs
YmFyUGFpbnRlciBuZXdQYWludGVyKQogewogICAgIHNjcm9sbGJhck1hcCgpLT5zZXQoc2Nyb2xs
YmFyLCBuZXdQYWludGVyKTsKICAgICB1cGRhdGVFbmFibGVkU3RhdGUoc2Nyb2xsYmFyKTsKICAg
ICB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoc2Nyb2xsYmFyKTsKIH0KIAotU2Nyb2xsYmFy
UGFpbnRlciBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXIq
IHNjcm9sbGJhcikKK1Njcm9sbGJhclBhaW50ZXIgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50ZXJG
b3JTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1
cm4gc2Nyb2xsYmFyTWFwKCktPmdldChzY3JvbGxiYXIpLmdldCgpOwogfQpAQCAtMjQ4LDEwICsy
NDgsMTAgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6dXNlc092ZXJsYXlTY3JvbGxiYXJzKCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTWFj
Ojp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lk
IFNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBTY3JvbGxiYXJQYWludGVyIHBhaW50ZXIg
PSBwYWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJhcik7Ci0gICAgc3dpdGNoIChzY3JvbGxiYXIt
PnNjcm9sbGFibGVBcmVhKCktPnNjcm9sbGJhck92ZXJsYXlTdHlsZSgpKSB7CisgICAgc3dpdGNo
IChzY3JvbGxiYXItPnNjcm9sbGJhck92ZXJsYXlTdHlsZSgpKSB7CiAgICAgY2FzZSBTY3JvbGxi
YXJPdmVybGF5U3R5bGVEZWZhdWx0OgogICAgICAgICBbcGFpbnRlciBzZXRLbm9iU3R5bGU6TlNT
Y3JvbGxlcktub2JTdHlsZURlZmF1bHRdOwogICAgICAgICBicmVhazsKQEAgLTI3OSw3ICsyNzks
NyBAQCBTY3JvbGxiYXJCdXR0b25zUGxhY2VtZW50IFNjcm9sbGJhclRoZW1lTWFjOjpidXR0b25z
UGxhY2VtZW50KCkgY29uc3QKICAgICByZXR1cm4gZ0J1dHRvblBsYWNlbWVudDsKIH0KIAotYm9v
bCBTY3JvbGxiYXJUaGVtZU1hYzo6aGFzQnV0dG9ucyhTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jv
b2wgU2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICByZXR1cm4gc2Nyb2xsYmFyLT5lbmFibGVkKCkgJiYgYnV0dG9uc1Bs
YWNlbWVudCgpICE9IFNjcm9sbGJhckJ1dHRvbnNOb25lCiAgICAgICAgICAgICAgJiYgKHNjcm9s
bGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyCkBAIC0yODcsNyArMjg3
LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6aGFzQnV0dG9ucyhTY3JvbGxiYXIqIHNjcm9s
bGJhcikKICAgICAgICAgICAgICA6IHNjcm9sbGJhci0+aGVpZ2h0KCkpID49IDIgKiAoY1JlYWxC
dXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSAtIGNCdXR0b25IaXRJbnNldFtz
Y3JvbGxiYXItPmNvbnRyb2xTaXplKCldKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6
aGFzVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lTWFjOjpo
YXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGludCBtaW5M
ZW5ndGhGb3JUaHVtYjsKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkp
IHsKQEAgLTMxOSw3ICszMTksNyBAQCBzdGF0aWMgSW50UmVjdCBidXR0b25SZXBhaW50UmVjdChj
b25zdCBJbnRSZWN0JiBidXR0b25SZWN0LCBTY3JvbGxiYXJPcmllbnRhdGlvbgogICAgIHJldHVy
biBwYWludFJlY3Q7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmJhY2tCdXR0b25S
ZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRp
bmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcp
CiB7CiAgICAgSW50UmVjdCByZXN1bHQ7CiAgICAgCkBAIC0zNTMsNyArMzUzLDcgQEAgSW50UmVj
dCBTY3JvbGxiYXJUaGVtZU1hYzo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IFNjcm9sbGJhclBhcnQgcGEKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbnRSZWN0IFNjcm9s
bGJhclRoZW1lTWFjOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Ny
b2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1h
Yzo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Ny
b2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQogewogICAgIEludFJlY3QgcmVzdWx0Owog
ICAgIApAQCAtMzkzLDcgKzM5Myw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZvcndh
cmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6dHJhY2tSZWN0KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZU1hYzo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wgcGFp
bnRpbmcpCiB7CiAgICAgaWYgKHBhaW50aW5nIHx8ICFoYXNCdXR0b25zKHNjcm9sbGJhcikpCiAg
ICAgICAgIHJldHVybiBzY3JvbGxiYXItPmZyYW1lUmVjdCgpOwpAQCAtNDMwLDcgKzQzMCw3IEBA
IEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgYm9vbCBwYWludGluZykKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Ny
b2xsYmFyLT55KCkgKyBzdGFydFdpZHRoLCB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0KCkg
LSB0b3RhbFdpZHRoKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lTWFjOjptaW5pbXVtVGh1bWJM
ZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVNYWM6Om1pbmlt
dW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlm
IChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIFtzY3Jv
bGxiYXJNYXAoKS0+Z2V0KHNjcm9sbGJhcikuZ2V0KCkga25vYk1pbkxlbmd0aF07CkBAIC00Mzgs
NyArNDM4LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lTWFjOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgICAgIHJldHVybiBjVGh1bWJNaW5MZW5ndGhbc2Nyb2xs
YmFyLT5jb250cm9sU2l6ZSgpXTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6c2hvdWxk
Q2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkK
K2Jvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICBpZiAoZXZ0
LmJ1dHRvbigpICE9IExlZnRCdXR0b24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ0Nyw3
ICs0NDcsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKFNj
cm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudAogICAgIHJldHVybiBldnQuYWx0S2V5
KCk7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnNob3VsZERyYWdEb2N1bWVudEluc3Rl
YWRPZlRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiti
b29sIFNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiB7
CiAgICAgcmV0dXJuIGV2ZW50LmFsdEtleSgpOwogfQpAQCAtNDcwLDcgKzQ3MCw3IEBAIGludCBT
Y3JvbGxiYXJUaGVtZU1hYzo6c2Nyb2xsYmFyUGFydFRvSElQcmVzc2VkU3RhdGUoU2Nyb2xsYmFy
UGFydCBwYXJ0KQogICAgIH0KIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlRW5h
YmxlZFN0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6
dXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAg
ICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQogICAgICAgICBbc2Nyb2xs
YmFyTWFwKCktPmdldChzY3JvbGxiYXIpLmdldCgpIHNldEVuYWJsZWQ6c2Nyb2xsYmFyLT5lbmFi
bGVkKCldOwpAQCAtNDk5LDcgKzQ5OSw3IEBAIHN0YXRpYyB2b2lkIHNjcm9sbGJhclBhaW50ZXJQ
YWludChTY3JvbGxiYXJQYWludGVyIHNjcm9sbGJhclBhaW50ZXIsIGJvb2wgZW5hYmxlCiB9CiAK
ICNpZiAhUExBVEZPUk0oQ0hST01JVU0pCi1ib29sIFNjcm9sbGJhclRoZW1lTWFjOjpwYWludChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBkYW1hZ2VSZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBkYW1hZ2VSZWN0KQogewogICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFp
bGFibGUoKSkgewogICAgICAgICBmbG9hdCB2YWx1ZSA9IDA7CkBAIC01NzAsNyArNTcwLDcgQEAg
Ym9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY28KICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQog
ICAgICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBrVGhlbWVUcmFja0Rpc2FibGVkOwogICAg
IGVsc2UKLSAgICAgICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0gc2Nyb2xsYmFyLT5zY3JvbGxh
YmxlQXJlYSgpLT5pc0FjdGl2ZSgpID8ga1RoZW1lVHJhY2tBY3RpdmUgOiBrVGhlbWVUcmFja0lu
YWN0aXZlOworICAgICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBzY3JvbGxiYXItPmlzU2Ny
b2xsYWJsZUFyZWFBY3RpdmUoKSA/IGtUaGVtZVRyYWNrQWN0aXZlIDoga1RoZW1lVHJhY2tJbmFj
dGl2ZTsKIAogICAgIGlmIChoYXNUaHVtYihzY3JvbGxiYXIpKQogICAgICAgICB0cmFja0luZm8u
YXR0cmlidXRlcyB8PSBrVGhlbWVUcmFja1Nob3dUaHVtYjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAppbmRleCA1ZDJiYzNlYzA4
OTc4ZTAzNzM3ZmJhNzM5NWI4YjhjZTc0NjBkNDY0Li42ZGU5MWNjYjgxOTIxMDQwYzA4NDc4YzFl
ZTU2NzdkZGU0Mzc0OTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1Njcm9sbGJhclRoZW1lTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIGludCBjU2Nyb2xsYmFyVGhpY2tuZXNzW10gPSB7IDE1LCAxMSB9Owog
Ci1JbnRSZWN0IFNjcm9sbGJhclRoZW1lTW9jazo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1vY2s6OnRyYWNrUmVjdChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sKQogewogICAgIHJldHVybiBzY3JvbGxiYXIt
PmZyYW1lUmVjdCgpOwogfQpAQCAtNDIsMTIgKzQyLDEyIEBAIGludCBTY3JvbGxiYXJUaGVtZU1v
Y2s6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkK
ICAgICByZXR1cm4gY1Njcm9sbGJhclRoaWNrbmVzc1tjb250cm9sU2l6ZV07CiB9CiAKLXZvaWQg
U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3Qp
Cit2b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiB0cmFja1JlY3QpCiB7CiAgICAgY29udGV4dC0+ZmlsbFJlY3QodHJhY2tSZWN0LCBz
Y3JvbGxiYXItPmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdyYXkgOiBDb2xvcigweEZGRTBFMEUw
KSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpw
YWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQogewogICAgIGlmIChzY3JvbGxiYXIt
PmVuYWJsZWQoKSkKICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QodGh1bWJSZWN0LCBDb2xvcjo6
ZGFya0dyYXksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmgKaW5kZXggZTI1NDg0MjJhMjhmNWU3MjNl
NDM1M2Y4ZjQ1NzY1MjUzY2I2ODViYi4uNjMzMzg0MWFiNzk2YjlkYzIzM2YzZjYzZWI4MDBhYmZh
N2IwYmIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxi
YXJUaGVtZU1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJh
clRoZW1lTW9jay5oCkBAIC0zNiwxNSArMzYsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50
IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxi
YXIpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFy
KikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFy
KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJh
clRoZW1lQ2xpZW50KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1
bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFs
IEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCAv
KnBhaW50aW5nKi8gPSBmYWxzZSkgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBJ
bnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wg
LypwYWludGluZyovID0gZmFsc2UpIHsgcmV0dXJuIEludFJlY3QoKTsgfQotICAgIHZpcnR1YWwg
SW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAg
ICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBT
Y3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7IHJldHVybiBJbnRSZWN0
KCk7IH0KKyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7IHJl
dHVybiBJbnRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKICAgICAKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwg
Y29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3ND
b250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc01vY2tUaGVtZSgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRo
ZW1lUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5j
cHAKaW5kZXggZTMyNDNlY2ZhODk3OWI5YTY4MWUxNTliZGVlOWE5YjE1OWM2NzQzYy4uZDRiNThi
MWIwZTVhZjE3MGY5NmVmODM2NGI2OWI0ODRhMzYyMjI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBz
dGF0aWMgU2Nyb2xsYmFyUGFydCBzY3JvbGxiYXJQYXJ0KGNvbnN0IFFTdHlsZTo6U3ViQ29udHJv
bCYgc2MpCiAgICAgcmV0dXJuIE5vUGFydDsKIH0KIAotc3RhdGljIFFTdHlsZU9wdGlvblNsaWRl
ciogc3R5bGVPcHRpb25TbGlkZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFFXaWRnZXQqIHdpZGdl
dCA9IDApCitzdGF0aWMgUVN0eWxlT3B0aW9uU2xpZGVyKiBzdHlsZU9wdGlvblNsaWRlcihTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBRV2lkZ2V0KiB3aWRnZXQgPSAwKQogewogICAg
IHN0YXRpYyBRU3R5bGVPcHRpb25TbGlkZXIgb3B0OwogICAgIGlmICh3aWRnZXQpCkBAIC0xNTUs
NyArMTU1LDcgQEAgc3RhdGljIFFTdHlsZU9wdGlvblNsaWRlciogc3R5bGVPcHRpb25TbGlkZXIo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFFXaWRnZXQqIHdpZGcKICAgICByZXR1cm4gJm9wdDsKIH0K
IAotYm9vbCBTY3JvbGxiYXJUaGVtZVF0OjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3Qp
Citib29sIFNjcm9sbGJhclRoZW1lUXQ6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0KQogewogICAgIGlmIChncmFwaGljc0NvbnRleHQtPnVwZGF0aW5nQ29udHJvbFRp
bnRzKCkpIHsKICAgICAgICBzY3JvbGxiYXItPmludmFsaWRhdGVSZWN0KGRhbWFnZVJlY3QpOwpA
QCAtMTkzLDcgKzE5Myw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVRdDo6cGFpbnQoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLVNjcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVRdDo6aGl0VGVzdChTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitTY3JvbGxiYXJQ
YXJ0IFNjcm9sbGJhclRoZW1lUXQ6OmhpdFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgUVN0eWxlT3B0aW9u
U2xpZGVyKiBvcHQgPSBzdHlsZU9wdGlvblNsaWRlcihzY3JvbGxiYXIpOwogICAgIGNvbnN0IFFQ
b2ludCBwb3MgPSBzY3JvbGxiYXItPmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9z
aXRpb24oKSk7CkBAIC0yMDIsMTMgKzIwMiwxMyBAQCBTY3JvbGxiYXJQYXJ0IFNjcm9sbGJhclRo
ZW1lUXQ6OmhpdFRlc3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91cwog
ICAgIHJldHVybiBzY3JvbGxiYXJQYXJ0KHNjKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVF0
OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZVF0OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAg
Ly8gTWlkZGxlIGNsaWNrIGNlbnRlcnMgc2xpZGVyIHRodW1iIChpZiBzdXBwb3J0ZWQpLgogICAg
IHJldHVybiBzdHlsZSgpLT5zdHlsZUhpbnQoUVN0eWxlOjpTSF9TY3JvbGxCYXJfTWlkZGxlQ2xp
Y2tBYnNvbHV0ZVBvc2l0aW9uKSAmJiBldnQuYnV0dG9uKCkgPT0gTWlkZGxlQnV0dG9uOwogfQog
Ci12b2lkIFNjcm9sbGJhclRoZW1lUXQ6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBTY3JvbGxiYXJQYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZVF0OjppbnZhbGlkYXRlUGFy
dChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0KQogewogICAg
IC8vIEZJWE1FOiBEbyBtb3JlIHByZWNpc2UgaW52YWxpZGF0aW9uLgogICAgIHNjcm9sbGJhci0+
aW52YWxpZGF0ZSgpOwpAQCAtMjI0LDcgKzIyNCw3IEBAIGludCBTY3JvbGxiYXJUaGVtZVF0Ojpz
Y3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiAgICAg
cmV0dXJuIHN0eWxlKCktPnBpeGVsTWV0cmljKFFTdHlsZTo6UE1fU2Nyb2xsQmFyRXh0ZW50LCAm
bywgMCk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYlBvc2l0aW9uKFNjcm9sbGJh
ciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lUXQ6OnRodW1iUG9zaXRpb24oU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5lbmFibGVk
KCkpIHsKICAgICAgICAgZmxvYXQgcG9zID0gKGZsb2F0KXNjcm9sbGJhci0+Y3VycmVudFBvcygp
ICogKHRyYWNrTGVuZ3RoKHNjcm9sbGJhcikgLSB0aHVtYkxlbmd0aChzY3JvbGxiYXIpKSAvIHNj
cm9sbGJhci0+bWF4aW11bSgpOwpAQCAtMjMzLDIxICsyMzMsMjEgQEAgaW50IFNjcm9sbGJhclRo
ZW1lUXQ6OnRodW1iUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIDA7
CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9s
bGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyKQogewogICAgIFFTdHlsZU9wdGlvblNsaWRlciogb3B0ID0gc3R5bGVP
cHRpb25TbGlkZXIoc2Nyb2xsYmFyKTsKICAgICBJbnRSZWN0IHRodW1iID0gc3R5bGUoKS0+c3Vi
Q29udHJvbFJlY3QoUVN0eWxlOjpDQ19TY3JvbGxCYXIsIG9wdCwgUVN0eWxlOjpTQ19TY3JvbGxC
YXJTbGlkZXIsIDApOwogICAgIHJldHVybiBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9y
aXpvbnRhbFNjcm9sbGJhciA/IHRodW1iLndpZHRoKCkgOiB0aHVtYi5oZWlnaHQoKTsKIH0KIAot
aW50IFNjcm9sbGJhclRoZW1lUXQ6OnRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
CitpbnQgU2Nyb2xsYmFyVGhlbWVRdDo6dHJhY2tQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyKQogewogICAgIFFTdHlsZU9wdGlvblNsaWRlciogb3B0ID0gc3R5bGVPcHRp
b25TbGlkZXIoc2Nyb2xsYmFyKTsKICAgICBJbnRSZWN0IHRyYWNrID0gc3R5bGUoKS0+c3ViQ29u
dHJvbFJlY3QoUVN0eWxlOjpDQ19TY3JvbGxCYXIsIG9wdCwgUVN0eWxlOjpTQ19TY3JvbGxCYXJH
cm9vdmUsIDApOwogICAgIHJldHVybiBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpv
bnRhbFNjcm9sbGJhciA/IHRyYWNrLngoKSAtIHNjcm9sbGJhci0+eCgpIDogdHJhY2sueSgpIC0g
c2Nyb2xsYmFyLT55KCk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZVF0Ojp0cmFja0xlbmd0aChT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVF0Ojp0cmFja0xlbmd0aChT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIFFTdHlsZU9wdGlvblNsaWRl
ciogb3B0ID0gc3R5bGVPcHRpb25TbGlkZXIoc2Nyb2xsYmFyKTsKICAgICBJbnRSZWN0IHRyYWNr
ID0gc3R5bGUoKS0+c3ViQ29udHJvbFJlY3QoUVN0eWxlOjpDQ19TY3JvbGxCYXIsIG9wdCwgUVN0
eWxlOjpTQ19TY3JvbGxCYXJHcm9vdmUsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvU2Nyb2xsYmFyVGhlbWVRdC5oCmluZGV4IGNmNDg4MmRhMjAzYmJmMGZiN2NjNjllN2MzZTFj
MWZmZGQ4MWY1ZWIuLjAzMzdiZjgwY2NmNjQ2ZDE4ZThmMDdjNGZlNWFjYmEzYWE5OTUyMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmgKQEAgLTQw
LDE5ICs0MCwxOSBAQCBjbGFzcyBTY3JvbGxiYXJUaGVtZVF0IDogcHVibGljIFNjcm9sbGJhclRo
ZW1lIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZVF0KCk7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCk7CisgICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKIAotICAgIHZpcnR1YWwgU2Nyb2xs
YmFyUGFydCBoaXRUZXN0KFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwor
ICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBoaXRUZXN0KFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2Vu
dGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQ
YXJ0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlUGFydChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpOwogCi0gICAgdmly
dHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0aHVt
Ykxlbmd0aChTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9s
bGJhciopOwotICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZp
cnR1YWwgaW50IHRodW1iUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0
dWFsIGludCB0aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwg
aW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGlu
dCB0cmFja0xlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiAgICAgdmlydHVhbCBpbnQg
c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJh
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJU
aGVtZVNhZmFyaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhl
bWVTYWZhcmkuY3BwCmluZGV4IDM0M2JiYjI4MGVkNmFmODQ4ZjUxY2MwMGVkOThmMzFmN2UxN2Uy
NDguLjFjYzUzODVlMTg3YTIyZWFmMWIwNTVlMzRiZTBmZjY0Mzg5MjliM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmNwcApA
QCAtMTA0LDE0ICsxMDQsMTQgQEAgaW50IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpzY3JvbGxiYXJU
aGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiAgICAgcmV0dXJuIGNT
Y3JvbGxiYXJUaGlja25lc3NbY29udHJvbFNpemVdOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1l
U2FmYXJpOjpoYXNCdXR0b25zKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJU
aGVtZVNhZmFyaTo6aGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQog
ewogICAgIHJldHVybiBzY3JvbGxiYXItPmVuYWJsZWQoKSAmJiAoc2Nyb2xsYmFyLT5vcmllbnRh
dGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyAKICAgICAgICAgICAgICBzY3JvbGxiYXIt
PndpZHRoKCkgOiAKICAgICAgICAgICAgICBzY3JvbGxiYXItPmhlaWdodCgpKSA+PSAyICogKGNS
ZWFsQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0gLSBjQnV0dG9uSGl0SW5z
ZXRbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSk7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVT
YWZhcmk6Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAg
ICByZXR1cm4gc2Nyb2xsYmFyLT5lbmFibGVkKCkgJiYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24o
KSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gCiAgICAgICAgICAgICAgc2Nyb2xsYmFyLT53aWR0
aCgpIDogCkBAIC0xMzQsNyArMTM0LDcgQEAgc3RhdGljIEludFJlY3QgYnV0dG9uUmVwYWludFJl
Y3QoY29uc3QgSW50UmVjdCYgYnV0dG9uUmVjdCwgU2Nyb2xsYmFyT3JpZW50YXRpb24KICAgICBy
ZXR1cm4gcGFpbnRSZWN0OwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpiYWNr
QnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29s
IHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6YmFja0J1dHRvblJlY3Qo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29s
IHBhaW50aW5nKQogewogICAgIEludFJlY3QgcmVzdWx0OwogCkBAIC0xNTIsNyArMTUyLDcgQEAg
SW50UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbnRSZWN0
IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9s
bGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxi
YXJUaGVtZVNhZmFyaTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQogewogICAgIEludFJl
Y3QgcmVzdWx0OwogICAgIApAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyBJbnRSZWN0IHRyYWNr
UmVwYWludFJlY3QoY29uc3QgSW50UmVjdCYgdHJhY2tSZWN0LCBTY3JvbGxiYXJPcmllbnRhdGlv
biBvCiAgICAgcmV0dXJuIHBhaW50UmVjdDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVNh
ZmFyaTo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQorSW50
UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcpCiB7CiAgICAgaWYgKHBhaW50aW5nIHx8ICFoYXNC
dXR0b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHJldHVybiBzY3JvbGxiYXItPmZyYW1lUmVjdCgp
OwpAQCAtMTkzLDM2ICsxOTMsMzYgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6dHJh
Y2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQogICAgIHJldHVybiBJ
bnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIGNCdXR0b25MZW5ndGhbc2Ny
b2xsYmFyLT5jb250cm9sU2l6ZSgpXSwgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0g
MiAqIGNCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSk7CiB9CiAKLWludCBT
Y3JvbGxiYXJUaGVtZVNhZmFyaTo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQoraW50IFNjcm9sbGJhclRoZW1lU2FmYXJpOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gY1RodW1iTWluTGVuZ3Ro
W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV07CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVTYWZh
cmk6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7
CiAgICAgcmV0dXJuIGV2dC5zaGlmdEtleSgpICYmIGV2dC5idXR0b24oKSA9PSBMZWZ0QnV0dG9u
OwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludFRyYWNrQmFja2dyb3VuZChH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIHRyYWNrUmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50
VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7CiAg
ICAgaWYgKCFTYWZhcmlUaGVtZUxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIE5TQ29u
dHJvbFNpemUgc2l6ZSA9IHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSA9PSBTbWFsbFNjcm9sbGJh
ciA/IE5TU21hbGxDb250cm9sU2l6ZSA6IE5TUmVndWxhckNvbnRyb2xTaXplOwogICAgIFRoZW1l
Q29udHJvbFN0YXRlIHN0YXRlID0gMDsKLSAgICBpZiAoc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJl
YSgpLT5pc0FjdGl2ZSgpKQorICAgIGlmIChzY3JvbGxiYXItPmlzU2Nyb2xsYWJsZUFyZWFBY3Rp
dmUoKSkKICAgICAgICAgc3RhdGUgfD0gQWN0aXZlU3RhdGU7CiAgICAgaWYgKGhhc0J1dHRvbnMo
c2Nyb2xsYmFyKSkKICAgICAgICAgc3RhdGUgfD0gRW5hYmxlZFN0YXRlOwogICAgIHBhaW50VGhl
bWVQYXJ0KHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhciA/IFZT
Y3JvbGxUcmFja1BhcnQgOiBIU2Nyb2xsVHJhY2tQYXJ0LCBncmFwaGljc0NvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLCB0cmFja1JlY3QsIHNpemUsIHN0YXRlKTsgCiB9CiAKLXZvaWQgU2Nyb2xs
YmFyVGhlbWVTYWZhcmk6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgYnV0dG9uUmVjdCwgU2Ny
b2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0b24o
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkK
IHsKICAgICBpZiAoIVNhZmFyaVRoZW1lTGlicmFyeSgpKQogICAgICAgICByZXR1cm47CiAgICAg
TlNDb250cm9sU2l6ZSBzaXplID0gc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpID09IFNtYWxsU2Ny
b2xsYmFyID8gTlNTbWFsbENvbnRyb2xTaXplIDogTlNSZWd1bGFyQ29udHJvbFNpemU7CiAgICAg
VGhlbWVDb250cm9sU3RhdGUgc3RhdGUgPSAwOwotICAgIGlmIChzY3JvbGxiYXItPnNjcm9sbGFi
bGVBcmVhKCktPmlzQWN0aXZlKCkpCisgICAgaWYgKHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJl
YUFjdGl2ZSgpKQogICAgICAgICBzdGF0ZSB8PSBBY3RpdmVTdGF0ZTsKICAgICBpZiAoaGFzQnV0
dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICBzdGF0ZSB8PSBFbmFibGVkU3RhdGU7CkBAIC0yMzYs
MTMgKzIzNiwxMyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbihHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYgogICAgICAgICAgICAgICAgICAg
ICAgICBidXR0b25SZWN0LCBzaXplLCBzdGF0ZSk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVT
YWZhcmk6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3QpCit2b2lkIFNjcm9sbGJh
clRoZW1lU2FmYXJpOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJl
Y3QpCiB7CiAgICAgaWYgKCFTYWZhcmlUaGVtZUxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIE5TQ29udHJvbFNpemUgc2l6ZSA9IHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSA9PSBTbWFs
bFNjcm9sbGJhciA/IE5TU21hbGxDb250cm9sU2l6ZSA6IE5TUmVndWxhckNvbnRyb2xTaXplOwog
ICAgIFRoZW1lQ29udHJvbFN0YXRlIHN0YXRlID0gMDsKLSAgICBpZiAoc2Nyb2xsYmFyLT5zY3Jv
bGxhYmxlQXJlYSgpLT5pc0FjdGl2ZSgpKQorICAgIGlmIChzY3JvbGxiYXItPmlzU2Nyb2xsYWJs
ZUFyZWFBY3RpdmUoKSkKICAgICAgICAgc3RhdGUgfD0gQWN0aXZlU3RhdGU7CiAgICAgaWYgKGhh
c1RodW1iKHNjcm9sbGJhcikpCiAgICAgICAgIHN0YXRlIHw9IEVuYWJsZWRTdGF0ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmgKaW5k
ZXggZjAzOTM3OWVhNDQ3MDhlOGI1Yjc1Zjk2MDU1MzJmZTExZDYyNjU5Mi4uZjQyN2IxOTBmZDY3
NjY1MjE1Njc1NjZjYjZjYmM0ZGZlNDNkOTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmgKQEAgLTQxLDIwICs0MSwyMCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMo
U2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOworICAg
IHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmly
dHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFs
IEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBw
YWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3Qo
U2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2
aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxz
ZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFs
IEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxi
YXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFj
a1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogCi0g
ICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1
YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogICAgIAot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihH
cmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFy
dCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAg
dmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcAppbmRleCBkMzYzNDEwNjg0ODdmZjFi
Nzg2OTc2OGU5ZDVmNmIyZjQ4OTgxYWE1Li41NjQ0Mjk3ZDdmMjcwYzUwYzdhMjhlZjNiMWUyNGFj
ZjFkMTI3OWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xs
YmFyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxi
YXJUaGVtZVdpbi5jcHAKQEAgLTEzMCwxMiArMTMwLDEyIEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVX
aW46OmludmFsaWRhdGVPbk1vdXNlRW50ZXJFeGl0KCkKICAgICByZXR1cm4gcnVubmluZ1Zpc3Rh
OwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lV2luOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9s
bGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVXaW46Omhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikgPiAw
OwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxi
YXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxi
YXJUaGVtZVdpbjo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIC8vIFdpbmRvd3MganVzdCBoYXMg
c2luZ2xlIGFycm93cy4KICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uRW5kUGFydCkKQEAgLTE1
NCw3ICsxNTQsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYQogICAgICAgICAgICAgICAgICAg
IHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSA8IDIgKiB0aGlja25lc3MgPyBzY3JvbGxi
YXItPmhlaWdodCgpIC8gMiA6IHRoaWNrbmVzcyk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhl
bWVXaW46OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQ
YXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpmb3J3YXJkQnV0dG9u
UmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQs
IGJvb2wpCiB7CiAgICAgLy8gV2luZG93cyBqdXN0IGhhcyBzaW5nbGUgYXJyb3dzLgogICAgIGlm
IChwYXJ0ID09IEZvcndhcmRCdXR0b25TdGFydFBhcnQpCkBAIC0xNzUsNyArMTc1LDcgQEAgSW50
UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwg
c2Nyb2xsYmFyLT55KCkgKyBzY3JvbGxiYXItPmhlaWdodCgpIC0gaCwgdGhpY2tuZXNzLCBoKTsK
IH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6dHJhY2tSZWN0KFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgaW50IHRoaWNrbmVzcyA9
IHNjcm9sbGJhclRoaWNrbmVzcygpOwogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkg
PT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewpAQCAtMTg4LDEyICsxODgsMTIgQEAgSW50UmVjdCBT
Y3JvbGxiYXJUaGVtZVdpbjo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQog
ICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIHRoaWNr
bmVzcywgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0gMiAqIHRoaWNrbmVzcyk7CiB9
CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFy
KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lV2lu
OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgcmV0dXJuIGV2dC5zaGlmdEtleSgpICYmIGV2dC5i
dXR0b24oKSA9PSBMZWZ0QnV0dG9uOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lV2luOjpzaG91
bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lV2luOjpzaG91bGRTbmFwQmFj
a1RvRHJhZ09yaWdpbihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICAvLyBGaW5kIHRoZSByZWN0IHdpdGhpbiB3aGlj
aCB3ZSBzaG91bGRuJ3Qgc25hcCwgYnkgZXhwYW5kaW5nIHRoZSB0cmFjayByZWN0CiAgICAgLy8g
aW4gYm90aCBkaW1lbnNpb25zLgpAQCAtMjExLDE0ICsyMTEsMTQgQEAgYm9vbCBTY3JvbGxiYXJU
aGVtZVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGNvbnN0IFAKICAgICByZXR1cm4gIXJlY3QuY29udGFpbnMobW91c2VQb3NpdGlvbik7CiB9CiAK
LXZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qp
Cit2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gSnVzdCBhc3N1bWUgYSBmb3J3YXJkIHRyYWNrIHBhcnQu
ICBXZSBvbmx5IHBhaW50IHRoZSB0cmFjayBhcyBhIHNpbmdsZSBwaWVjZSB3aGVuIHRoZXJlIGlz
IG5vIHRodW1iLgogICAgIGlmICghaGFzVGh1bWIoc2Nyb2xsYmFyKSkKICAgICAgICAgcGFpbnRU
cmFja1BpZWNlKGNvbnRleHQsIHNjcm9sbGJhciwgcmVjdCwgRm9yd2FyZFRyYWNrUGFydCk7CiB9
CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBT
Y3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQordm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFj
a1BpZWNlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKIHsK
ICAgICBjaGVja0FuZEluaXRTY3JvbGxiYXJUaGVtZSgpOwogCkBAIC0yNzYsNyArMjc2LDcgQEAg
dm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgU2Nyb2xsYmFyKiBzY3IKICNlbmRpZgogfQogCi12b2lkIFNjcm9sbGJhclRoZW1l
V2luOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNj
cm9sbGJhclRoZW1lV2luOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9s
bGJhclBhcnQgcGFydCkKIHsKICAgICBjaGVja0FuZEluaXRTY3JvbGxiYXJUaGVtZSgpOwogCkBA
IC0zMzksNyArMzM5LDcgQEAgc3RhdGljIEludFJlY3QgZ3JpcHBlclJlY3QoaW50IHRoaWNrbmVz
cywgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQogICAgICAgICAgICAgICAgICAgIGdyaXBwZXJU
aGlja25lc3MsIGdyaXBwZXJUaGlja25lc3MpOwogfQogCi1zdGF0aWMgdm9pZCBwYWludEdyaXBw
ZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIHJlY3QpCitz
dGF0aWMgdm9pZCBwYWludEdyaXBwZXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwg
SERDIGhkYywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIXNjcm9sbGJhclRoZW1l
KQogICAgICAgICByZXR1cm47ICAvLyBDbGFzc2ljIGxvb2sgaGFzIG5vIGdyaXBwZXIuCkBAIC0z
NTgsNyArMzU4LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRHcmlwcGVyKFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBIREMgaGRjLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIERyYXdUaGVtZUJhY2tncm91
bmQoc2Nyb2xsYmFyVGhlbWUsIGhkYywgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6
b250YWxTY3JvbGxiYXIgPyBTUF9HUklQUEVSSE9SIDogU1BfR1JJUFBFUlZFUlQsIHN0YXRlLCAm
dGhlbWVSZWN0LCAwKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUaHVtYihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUaHVtYihHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiB7CiAgICAgY2hlY2tBbmRJbml0U2Nyb2xsYmFyVGhlbWUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uaAppbmRleCBj
ZDJmMTc2ZGZkYzk3MzgyYzM1YmI3NzNmOWIxZThkYWQyMTI3NmI2Li44NzAyNDBjMTY1NThjZjBm
NjI1NzQxOTZlZWI2OWFhYTgwNmE3YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uaApAQCAtNDIsMjAgKzQyLDIwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaW52YWxpZGF0ZU9uTW91c2VFbnRlckV4aXQoKTsKIAogcHJvdGVjdGVk
OgotICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopIHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBi
b29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2
aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwg
Ym9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRv
blJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsK
LSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2
aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBT
Y3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVj
dCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2Up
OwogCi0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBCYWNr
VG9EcmFnT3JpZ2luKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBC
YWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50
UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3Vu
ZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3Qm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAg
IHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IEludFJlY3QmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3d4L1Njcm9sbGJhclRoZW1lV3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gv
U2Nyb2xsYmFyVGhlbWVXeC5jcHAKaW5kZXggYzkyNDk3OGE1MDVhYzMxZjE0MDUxZTMwMTgzMzA2
NDI1MTNjNGE1MS4uYmFkZjMxNTU0MDVhNmE1MTM2NjIzMjViOTIzNTlkYzgxM2E5NTI0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5jcHAKQEAg
LTcxLDE5ICs3MSwxOSBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVXeDo6c2Nyb2xsYmFyVGhpY2tuZXNz
KFNjcm9sbGJhckNvbnRyb2xTaXplIHNpemUpCiAgICAgcmV0dXJuIHRoaWNrbmVzczsKIH0KIAot
Ym9vbCBTY3JvbGxiYXJUaGVtZVd4OjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jv
b2wgU2Nyb2xsYmFyVGhlbWVXeDo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhcikKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBqdXN0IGNhbGxlZCBhcyBhIHBhaW50LXRp
bWUgb3B0aW1pemF0aW9uIHRvIHNlZSBpZgogICAgIC8vIHBhaW50aW5nIHRoZSB0aHVtYiBjYW4g
YmUgc2tpcHBlZC4gIFdlIGRvbid0IGhhdmUgdG8gYmUgZXhhY3QgaGVyZS4KICAgICByZXR1cm4g
dGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+IDA7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZVd4Ojpt
aW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhl
bWVXeDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIp
CiB7CiAgICAgcmV0dXJuIDIwOwogfQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lV3g6OmJ1dHRv
blNpemUoU2Nyb2xsYmFyKikgCitJbnRTaXplIFNjcm9sbGJhclRoZW1lV3g6OmJ1dHRvblNpemUo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKSAKIHsKICNpZmRlZiBfX1dYTUFDX18KICAgICByZXR1cm4g
SW50U2l6ZSgyMCwyMCk7CkBAIC05Miw3ICs5Miw3IEBAIEludFNpemUgU2Nyb2xsYmFyVGhlbWVX
eDo6YnV0dG9uU2l6ZShTY3JvbGxiYXIqKQogI2VuZGlmCiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhl
bWVXeDo6c3BsaXRUcmFjayhTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdW5j
b25zdHJhaW5lZFRyYWNrUmVjdCwgSW50UmVjdCYgYmVmb3JlVGh1bWJSZWN0LCBJbnRSZWN0JiB0
aHVtYlJlY3QsIEludFJlY3QmIGFmdGVyVGh1bWJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZVd4
OjpzcGxpdFRyYWNrKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QsIEludFJlY3QmIGJlZm9yZVRodW1iUmVjdCwgSW50
UmVjdCYgdGh1bWJSZWN0LCBJbnRSZWN0JiBhZnRlclRodW1iUmVjdCkKIHsKICAgICBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhzY3JvbGxiYXIsIHVuY29uc3RyYWluZWRUcmFj
a1JlY3QsIGJlZm9yZVRodW1iUmVjdCwgdGh1bWJSZWN0LCBhZnRlclRodW1iUmVjdCk7CiAjaWZk
ZWYgX19XWE1BQ19fCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZVd4Ojpz
cGxpdFRyYWNrKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmEK
ICNlbmRpZgogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OmJhY2tCdXR0b25SZWN0KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNj
cm9sbGJhclRoZW1lV3g6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICAvLyBGSVhNRTogSGFuZGxp
bmcgdGhpcyBjYXNlIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGFyZSB0d28gc2V0cyBvZiBhcnJvdyBi
dXR0b25zCiAgICAgLy8gb24gTWFjLCBvbmUgYXQgdGhlIHRvcCBhbmQgb25lIGF0IHRoZSBib3R0
b20uCkBAIC0xMzAsNyArMTMwLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4OjpiYWNrQnV0
dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXIKICAgICByZXR1
cm4gSW50UmVjdCh4LCB5LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogfQogCi1JbnRS
ZWN0IFNjcm9sbGJhclRoZW1lV3g6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6
OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9s
bGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICAvLyBGSVhNRTogSGFuZGxpbmcgdGhpcyBjYXNl
IGlzIG5lZWRlZCB3aGVuIHRoZXJlIGFyZSB0d28gc2V0cyBvZiBhcnJvdyBidXR0b25zCiAgICAg
Ly8gb24gTWFjLCBvbmUgYXQgdGhlIHRvcCBhbmQgb25lIGF0IHRoZSBib3R0b20uCkBAIC0xNTUs
NyArMTU1LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0dG9uUmVjdChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydAogICAgIHJldHVybiBJbnRSZWN0KHgs
IHksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFy
VGhlbWVXeDo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBT
Y3JvbGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgYm9vbCkKIHsKICAgICBJbnRTaXplIGJzID0gYnV0dG9uU2l6ZShzY3JvbGxiYXIpOwogICAg
IGludCB0cmFja1N0YXJ0ID0gMDsKQEAgLTE3OSwxMSArMTc5LDExIEBAIEludFJlY3QgU2Nyb2xs
YmFyVGhlbWVXeDo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQogICAgIHJl
dHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIHRyYWNrU3RhcnQs
IHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIDIgKiBicy5oZWlnaHQoKSk7CiB9CiAK
LWJvb2wgU2Nyb2xsYmFyVGhlbWVXeDo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgU2Nyb2xsYmFy
VGhlbWVXeDo6cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIHd4T3JpZW50YXRp
b24gb3JpZW50YXRpb24gPSAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxT
Y3JvbGxiYXIpID8gd3hIT1JJWk9OVEFMIDogd3hWRVJUSUNBTDsKICAgICBpbnQgZmxhZ3MgPSAw
OwotICAgIGlmIChzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlzQWN0aXZlKCkpCisgICAg
aWYgKHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQogICAgICAgICBmbGFncyB8
PSB3eENPTlRST0xfRk9DVVNFRDsKICAgICAKICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVX
eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5oCmluZGV4
IDc1YWIxNzVhM2JhNjA0ZmNkNzk1YWQyZWE0NWVkZmNmNTgzZWU1NTguLjM3MmFhZjk2NjJmNzQ1
ZDRlZTA3NDdlZGY1YzExZjlmYzVhZDg5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93eC9TY3JvbGxiYXJUaGVtZVd4LmgKQEAgLTM1LDIxICszNSwyMSBAQCBjbGFzcyBTY3JvbGxi
YXJUaGVtZVd4IDogcHVibGljIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlIHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZVd4KCk7CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFy
VGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcik7Ci0gICAg
dmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhciosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKikgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
QnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1YWwg
SW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0
b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgYmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZh
bHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwg
U2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJl
Y3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmly
dHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xs
YmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgZm9y
d2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29s
IHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogCi0gICAgdmlydHVhbCB2
b2lkIHNwbGl0VHJhY2soU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYgdHJhY2ssIEludFJlY3Qm
IHN0YXJ0VHJhY2ssIEludFJlY3QmIHRodW1iLCBJbnRSZWN0JiBlbmRUcmFjayk7CisgICAgdmly
dHVhbCB2b2lkIHNwbGl0VHJhY2soU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0
JiB0cmFjaywgSW50UmVjdCYgc3RhcnRUcmFjaywgSW50UmVjdCYgdGh1bWIsIEludFJlY3QmIGVu
ZFRyYWNrKTsKICAgICAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xs
YmFyKik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1l
Q2xpZW50Kik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyLmgKaW5kZXggODEwYzk4ZmYzNjY4YWI5MWNkZTljMzU3MThkNmYwNGIyZjc0NjcxYi4uN2Zl
MmZhYzhiOGQ0OTc1NGQ4ZWFiMjNkNDA1YjE2MmJlMzNkYzdiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgog
ICAgIEhhc2hNYXA8dW5zaWduZWQsIFJlbmRlclNjcm9sbGJhclBhcnQqPiBtX3BhcnRzOwogfTsK
IAotaW5saW5lIFJlbmRlclNjcm9sbGJhciogdG9SZW5kZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIpCitpbmxpbmUgUmVuZGVyU2Nyb2xsYmFyKiB0b1JlbmRlclNjcm9sbGJhcihTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIEFTU0VSVCghc2Nyb2xsYmFyIHx8
IHNjcm9sbGJhci0+aXNDdXN0b21TY3JvbGxiYXIoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFJlbmRlclNjcm9sbGJhcio+KHNjcm9sbGJhcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAppbmRleCA4NzMwOWQ0NGU1YWE0NTI2OTc5
YWZlYmU1MTI3OGI0ZTQ2YTVlOTE3Li40NjkzN2Y5OGYwZTMxMmZiZDNjYzhlZWVjY2ExMmUyOGU5
MDIxZDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJUaGVtZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgUmVuZGVyU2Nyb2xsYmFyVGhlbWUqIFJlbmRl
clNjcm9sbGJhclRoZW1lOjpyZW5kZXJTY3JvbGxiYXJUaGVtZSgpCiAgICAgcmV0dXJuICZ0aGVt
ZTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNr
QXhpcyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6
ZSkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFm
dGVyU2l6ZSkKIHsKICAgICBJbnRSZWN0IGZpcnN0QnV0dG9uID0gYmFja0J1dHRvblJlY3Qoc2Ny
b2xsYmFyLCBCYWNrQnV0dG9uU3RhcnRQYXJ0KTsKICAgICBJbnRSZWN0IHNlY29uZEJ1dHRvbiA9
IGZvcndhcmRCdXR0b25SZWN0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCk7CkBA
IC01MSw3ICs1MSw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVzQWxv
bmdUcmFja0F4aXMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGludCYKICAgICB9CiB9CiAKLWJvb2wg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiti
b29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIpCiB7CiAgICAgaW50IHN0YXJ0U2l6ZTsKICAgICBpbnQgZW5kU2l6ZTsKQEAg
LTU5LDI3ICs1OSwyNyBAQCBib29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKFNj
cm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiAoc3RhcnRTaXplICsgZW5kU2l6ZSkgPD0g
KHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gc2Nyb2xs
YmFyLT53aWR0aCgpIDogc2Nyb2xsYmFyLT5oZWlnaHQoKSk7CiB9CiAKLWJvb2wgUmVuZGVyU2Ny
b2xsYmFyVGhlbWU6Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBSZW5kZXJT
Y3JvbGxiYXJUaGVtZTo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikK
IHsKICAgICByZXR1cm4gdHJhY2tMZW5ndGgoc2Nyb2xsYmFyKSAtIHRodW1iTGVuZ3RoKHNjcm9s
bGJhcikgPj0gMDsKIH0KIAotaW50IFJlbmRlclNjcm9sbGJhclRoZW1lOjptaW5pbXVtVGh1bWJM
ZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAg
IHJldHVybiB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5taW5pbXVtVGh1bWJMZW5ndGgo
KTsKIH0KIAotSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YmFja0J1dHRvblJlY3QoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCitJbnRSZWN0
IFJlbmRlclNjcm9sbGJhclRoZW1lOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29sKQogewogICAgIHJldHVy
biB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5idXR0b25SZWN0KHBhcnRUeXBlKTsKIH0K
IAotSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCitJbnRSZWN0IFJl
bmRlclNjcm9sbGJhclRoZW1lOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29sKQogewogICAgIHJldHVy
biB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5idXR0b25SZWN0KHBhcnRUeXBlKTsKIH0K
IAotSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBib29sKQorSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6dHJhY2tSZWN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgaWYgKCFoYXNCdXR0
b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHJldHVybiBzY3JvbGxiYXItPmZyYW1lUmVjdCgpOwpA
QCAtOTEsNyArOTEsNyBAQCBJbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3Qo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCiAgICAgcmV0dXJuIHRvUmVuZGVyU2Nyb2xsYmFy
KHNjcm9sbGJhciktPnRyYWNrUmVjdChzdGFydExlbmd0aCwgZW5kTGVuZ3RoKTsKIH0KIAotSW50
UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNl
cyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK0ludFJlY3QgUmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsgCiAgICAg
SW50UmVjdCBiYWNrUmVjdCA9IHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnRyYWNrUGll
Y2VSZWN0V2l0aE1hcmdpbnMoQmFja1RyYWNrUGFydCwgcmVjdCk7CiAgICAgSW50UmVjdCBmb3J3
YXJkUmVjdCA9IHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnRyYWNrUGllY2VSZWN0V2l0
aE1hcmdpbnMoRm9yd2FyZFRyYWNrUGFydCwgcmVjdCk7CkBAIC0xMTIsMjcgKzExMiwyNyBAQCB2
b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3Kiwg
R3JhcGhpY3NDb250ZXh0KiBjb250ZQogICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3Qs
IENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKLXZvaWQgUmVuZGVyU2Ny
b2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICB0b1JlbmRlclNjcm9sbGJhcihzY3Jv
bGxiYXIpLT5wYWludFBhcnQoY29udGV4dCwgU2Nyb2xsYmFyQkdQYXJ0LCBzY3JvbGxiYXItPmZy
YW1lUmVjdCgpKTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja0Jh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJh
Y2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICB0b1JlbmRlclNjcm9s
bGJhcihzY3JvbGxiYXIpLT5wYWludFBhcnQoY29udGV4dCwgVHJhY2tCR1BhcnQsIHJlY3QpOwog
fQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRU
cmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewog
ICAgIHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnBhaW50UGFydChjb250ZXh0LCBwYXJ0
LCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24oR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7
CiAgICAgdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+cGFpbnRQYXJ0KGNvbnRleHQsIHBh
cnQsIHJlY3QpOwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRodW1iKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRodW1iKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKICAgICB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5wYWlu
dFBhcnQoY29udGV4dCwgVGh1bWJQYXJ0LCByZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggNzBjMjRhNWVhMmVkNzliYjlm
OGZhZDAyMTM3YzYzNTY5ZDk5NjNjNC4uZWM5MmJkYzkzOTNhY2M2ZjJkYTZhMTc0Zjc3YjlmM2Vh
MTQxZmU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clRoZW1lLmgKQEAgLTQ2LDM1ICs0NiwzNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2Vu
dGVyT25UaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNob3VsZENlbnRlck9u
VGh1bWIoc2Nyb2xsYmFyLCBldmVudCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVy
T25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2ZW50KSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2hvdWxk
Q2VudGVyT25UaHVtYihzY3JvbGxiYXIsIGV2ZW50KTsgfQogICAgIAogICAgIHZpcnR1YWwgZG91
YmxlIGluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1l
Ojp0aGVtZSgpLT5pbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKTsgfQogICAgIHZpcnR1YWwg
ZG91YmxlIGF1dG9zY3JvbGxUaW1lckRlbGF5KCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRo
ZW1lKCktPmF1dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFyVGhl
bWU6OnRoZW1lKCktPnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikgeyByZXR1cm4g
U2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVucmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsg
fQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cmVnaXN0ZXJT
Y3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQorICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xs
YmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpIHsgcmV0dXJuIFNjcm9sbGJhclRo
ZW1lOjp0aGVtZSgpLT51bnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KIAotICAgIHZp
cnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGlu
dCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZvaWQg
YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgaW50JiBiZWZv
cmVTaXplLCBpbnQmIGFmdGVyU2l6ZSk7CisgICAgdm9pZCBidXR0b25TaXplc0Fsb25nVHJhY2tB
eGlzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGludCYgYmVmb3JlU2l6ZSwgaW50
JiBhZnRlclNpemUpOwogICAgIAogICAgIHN0YXRpYyBSZW5kZXJTY3JvbGxiYXJUaGVtZSogcmVu
ZGVyU2Nyb2xsYmFyVGhlbWUoKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBoYXNC
dXR0b25zKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIq
KTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopOwor
ICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAg
dmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQs
IGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0
b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7
Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29sIHBhaW50aW5n
ID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAg
dmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
U2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJl
Y3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNl
KTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhciopOyAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFj
a0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYp
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9p
ZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0
JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3ND
b250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBw
YWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqKTsgICAgCisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAg
IHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50
UmVjdCYpOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQ
aWVjZXMoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgSW50UmVjdCBj
b25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgSW50UmVjdCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128216</attachid>
            <date>2012-02-22 08:02:44 -0800</date>
            <delta_ts>2012-02-22 10:44:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78028-20120222110243.patch</filename>
            <type>text/plain</type>
            <size>124414</size>
            <attacher name="Peter Kotwicz">pkotwicz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTkwNGZmYTlmZThhMjRm
Y2Y4NDg2MmJjYmZjYmY0YTAwNWFiODE1OS4uMjIyNjM4ZmVmMjMzOTY1Zjg4YTU2NmQ4ODgwMjQ5
OWQ2ODIxNzgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2NCBAQAorMjAxMi0wMi0yMiAgUGV0
ZXIgS290d2ljeiAgPHBrb3R3aWN6QGdvb2dsZS5jb20+CisKKyAgICAgICAgRGVjb3VwbGUgc2Ny
b2xsYmFyIHBhaW50aW5nIGZyb20gU2Nyb2xsYmFyIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwMjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmdldFRpY2ttYXJr
cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUp
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5oOgorICAgICAgICAoU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6b3JpZW50YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmN1
cnJlbnRQb3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp2aXNpYmxlU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnRvdGFsU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXI6Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpjb250
cm9sU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmxpbmVTdGVwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFnZVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyOjpwcmVzc2VkUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmhvdmVy
ZWRQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXI6OngpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6d2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bG9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpy
b290KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZnJhbWVSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXI6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWU6OnVwZGF0ZUVuYWJsZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6
OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnVwZGF0ZVNjcm9s
bGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6aW52
YWxpZGF0ZVBhcnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjppbnZhbGlk
YXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkQ2VudGVy
T25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkU25hcEJh
Y2tUb0RyYWdPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnNob3Vs
ZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lOjp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Ojp0aHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dHJhY2tQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dHJhY2tMZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDbGllbnQ6On5TY3JvbGxiYXJUaGVtZUNsaWVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpoaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayk6CisgICAgICAgIChXZWJD
b3JlOjp1c2VkVG90YWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjp0aHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZTo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aCk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNj
cm9sbGJhckJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlOjpwYWludFRyYWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRpY2ttYXJrcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNl
cyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpoYXNUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpiYWNrQnV0dG9uUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpmb3J3YXJkQnV0
dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjp0cmFj
a1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRU
cmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bTo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21p
dW06Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bSk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50
U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNo
cm9taXVtQW5kcm9pZDo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YnV0dG9uU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6bWluaW11bVRodW1iTGVuZ3RoKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9p
ZC5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50
QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6
cGFpbnRUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGlu
dXg6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaDoKKyAgICAgICAgKFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50R2l2ZW5U
aWNrbWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3Np
Y1RoZW1lU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bjo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtV2luOjpidXR0b25TaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmg6CisgICAgICAgIChTY3JvbGxiYXJUaGVtZUNocm9t
aXVtV2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVFZmw6OnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lRWZsOjp1bnJlZ2lzdGVyU2Nyb2xsYmFy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaDoKKyAgICAgICAg
KFNjcm9sbGJhclRoZW1lRWZsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhl
bWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUd0azo6cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVHdGs6OnVucmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRoaWNrbmVzcyk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lR3RrOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lR3RrOjp0aHVtYlJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVHdGs6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpzaG91
bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpi
dXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjptaW5pbXVt
VGh1bWJMZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5o
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6Omhhc0J1dHRvbnMpOgorICAg
ICAgICAoU2Nyb2xsYmFyVGhlbWVHdGspOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxi
YXJUaGVtZUd0azIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0V2lkZ2V0Rm9yU2Nyb2xsYmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxi
YXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWlu
dFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRv
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRCdXR0b24pOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oOgorICAgICAgICAoU2Nyb2xs
YmFyVGhlbWVNYWMpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVN
YWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
TWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1dHRvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lTWFjOjpzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlRW5hYmxlZFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVNb2NrOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZU1vY2s6OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xs
YmFyVGhlbWVNb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6Omhh
c0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpoYXNUaHVt
Yik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OmJhY2tCdXR0b25SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6Zm9yd2FyZEJ1dHRvblJl
Y3QpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVNb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9TY3JvbGxiYXJUaGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlT3B0aW9uU2xp
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVRdDo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZVF0OjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lUXQ6OnRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lUXQ6OnRyYWNrUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVRdDo6dHJhY2tMZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1l
UXQuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lUXQpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZVNhZmFyaTo6aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZh
cmk6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2Fm
YXJpOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2Fm
YXJpOjptaW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVTYWZhcmk6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVTYWZhcmk6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUaHVtYik6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L1Njcm9sbGJhclRoZW1lU2FmYXJpLmg6CisgICAgICAgIChTY3JvbGxiYXJUaGVtZVNhZmFyaSk6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZVdpbjo6YmFja0J1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVXaW46OmZvcndhcmRCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lV2luOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVXaW46OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJD
b3JlOjpwYWludEdyaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46
OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5o
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46Omhhc0J1dHRvbnMpOgorICAg
ICAgICAoU2Nyb2xsYmFyVGhlbWVXaW4pOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJh
clRoZW1lV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzVGh1
bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6bWluaW11bVRodW1iTGVu
Z3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV3g6OmJ1dHRvblNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6c3BsaXRUcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4OjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVXeDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJh
clRoZW1lV3guaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lV3gpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzQnV0dG9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhci5oOgorICAgICAgICAoV2ViQ29yZTo6dG9SZW5kZXJTY3JvbGxiYXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzQnV0dG9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzVGh1bWIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1pbmltdW1UaHVtYkxlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YmFja0J1dHRvblJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmZvcndhcmRCdXR0b25SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVj
dFRvVHJhY2tQaWVjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJUaGVtZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xs
YmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNj
cm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFJlbmRlclNjcm9s
bGJhclRoZW1lKToKKwogMjAxMi0wMi0yMiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtleHBlcmltZW50YWxdIGFkZCBhIG1v
ZGUgdG8gZGlzcGxheSB0aW1lbGluZSBldmVudHMgYWxpZ25lZCBieSB0aGUgc3RhcnQgdGltZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDU4Y2FhYTFjOGNmNjBmYTYwYjA2YmMxZTE0M2JiNWVhOTZhYmEy
NzEuLjNhZDE4NWJiMWFiODViMzFjYzJkNWQ3NmEzYzkwYjU3MzEyZTE4OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTI5Miw2ICsyOTIsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGJhci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9T
Y3JvbGxiYXJUaGVtZUNsaWVudC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TZWFyY2hQb3B1
cE1lbnUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXggM2I5YzE5NWNmZjU1MzkxNjU1NjIwM2UyZjJjYzRm
ZTVkOGY5YTUxZS4uYTk2YTY1Njc1YWI4M2QxZjA5MGQyMDc3MTgzYjg2M2RjOWI3OGI1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC01NTIsNCArNTUyLDIwIEBAIElu
dFBvaW50IFNjcm9sbGJhcjo6Y29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2lu
dCYgcGFyZW50UG9pbnQpIGNvbnN0CiAgICAgcmV0dXJuIFdpZGdldDo6Y29udmVydEZyb21Db250
YWluaW5nVmlldyhwYXJlbnRQb2ludCk7CiB9CiAKK1Njcm9sbGJhck92ZXJsYXlTdHlsZSBTY3Jv
bGxiYXI6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Ny
b2xsYWJsZUFyZWEgPyBTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0IDogbV9zY3JvbGxhYmxl
QXJlYS0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7Cit9CisKK3ZvaWQgU2Nyb2xsYmFyOjpnZXRU
aWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JiB0aWNrbWFya3MpIGNvbnN0Cit7CisgICAgaWYgKG1f
c2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPmdldFRpY2ttYXJrcyh0
aWNrbWFya3MpOworfQorCitib29sIFNjcm9sbGJhcjo6aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEgJiYgbV9zY3JvbGxhYmxlQXJl
YS0+aXNBY3RpdmUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXIuaAppbmRleCAzOWFjMjU0NjVkMTQ1NWE1OTkyY2QyNWMyMjI4ZGQyYjY1
MzRhNjNkLi5lNzI4NDllNGMxOTI5NWI0NjljOWNiNzM2YThkZmFjZWE1N2FkNDA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBTY3Jv
bGxiYXJfaAogI2RlZmluZSBTY3JvbGxiYXJfaAogCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVD
bGllbnQuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAj
aW5jbHVkZSAiV2lkZ2V0LmgiCkBAIC00MCw3ICs0MSw5IEBAIGNsYXNzIFBsYXRmb3JtTW91c2VF
dmVudDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwogY2xhc3MgU2Nyb2xsYmFyVGhlbWU7CiAKLWNs
YXNzIFNjcm9sbGJhciA6IHB1YmxpYyBXaWRnZXQgeworY2xhc3MgU2Nyb2xsYmFyIDogcHVibGlj
IFdpZGdldCwKKyAgICAgICAgICAgICAgICAgIHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNsaWVudCB7
CisKIHB1YmxpYzoKICAgICAvLyBNdXN0IGJlIGltcGxlbWVudGVkIGJ5IHBsYXRmb3JtcyB0aGF0
IGNhbid0IHNpbXBseSB1c2UgdGhlIFNjcm9sbGJhciBiYXNlIGNsYXNzLiAgUmlnaHQgbm93IHRo
ZSBvbmx5IHBsYXRmb3JtIHRoYXQgaXMgbm90IHVzaW5nIHRoZSBiYXNlIGNsYXNzIGlzIEdUSy4K
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JvbGxiYXI+IGNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihT
Y3JvbGxhYmxlQXJlYSosIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxi
YXJDb250cm9sU2l6ZSBzaXplKTsKQEAgLTU4LDMyICs2MSwzMiBAQCBwdWJsaWM6CiAgICAgU2Ny
b2xsYWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxl
QXJlYTsgfQogCiAgICAgdmlydHVhbCBib29sIGlzQ3VzdG9tU2Nyb2xsYmFyKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJhck9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQogCi0g
ICAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbHJvdW5kZihtX2N1cnJlbnRQb3MpOyB9Ci0g
ICAgZmxvYXQgY3VycmVudFBvcygpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFBvczsgfQorICAg
IHZpcnR1YWwgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbHJvdW5kZihtX2N1cnJlbnRQb3Mp
OyB9CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50UG9zKCkgY29uc3QgeyByZXR1cm4gbV9jdXJy
ZW50UG9zOyB9CiAgICAgaW50IHByZXNzZWRQb3MoKSBjb25zdCB7IHJldHVybiBtX3ByZXNzZWRQ
b3M7IH0KLSAgICBpbnQgdmlzaWJsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGVTaXpl
OyB9Ci0gICAgaW50IHRvdGFsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplOyB9Ci0g
ICAgaW50IG1heGltdW0oKSBjb25zdCB7IHJldHVybiBtX3RvdGFsU2l6ZSAtIG1fdmlzaWJsZVNp
emU7IH0gICAgICAgIAotICAgIFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9jb250cm9sU2l6ZTsgfQorICAgIHZpcnR1YWwgaW50IHZpc2libGVTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlU2l6ZTsgfQorICAgIHZpcnR1YWwgaW50IHRvdGFs
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplOyB9CisgICAgdmlydHVhbCBpbnQgbWF4
aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplIC0gbV92aXNpYmxlU2l6ZTsgfQorICAg
IHZpcnR1YWwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRyb2xTaXplOyB9CiAKLSAgICBpbnQgbGluZVN0ZXAoKSBjb25zdCB7IHJldHVybiBt
X2xpbmVTdGVwOyB9Ci0gICAgaW50IHBhZ2VTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlU3Rl
cDsgfQorICAgIHZpcnR1YWwgaW50IGxpbmVTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9saW5lU3Rl
cDsgfQorICAgIHZpcnR1YWwgaW50IHBhZ2VTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlU3Rl
cDsgfQogICAgIGZsb2F0IHBpeGVsU3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1fcGl4ZWxTdGVwOyB9
CiAKLSAgICBTY3JvbGxiYXJQYXJ0IHByZXNzZWRQYXJ0KCkgY29uc3QgeyByZXR1cm4gbV9wcmVz
c2VkUGFydDsgfQotICAgIFNjcm9sbGJhclBhcnQgaG92ZXJlZFBhcnQoKSBjb25zdCB7IHJldHVy
biBtX2hvdmVyZWRQYXJ0OyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IHByZXNzZWRQYXJ0
KCkgY29uc3QgeyByZXR1cm4gbV9wcmVzc2VkUGFydDsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFy
UGFydCBob3ZlcmVkUGFydCgpIGNvbnN0IHsgcmV0dXJuIG1faG92ZXJlZFBhcnQ7IH0KICAgICB2
aXJ0dWFsIHZvaWQgc2V0SG92ZXJlZFBhcnQoU2Nyb2xsYmFyUGFydCk7CiAgICAgdmlydHVhbCB2
b2lkIHNldFByZXNzZWRQYXJ0KFNjcm9sbGJhclBhcnQpOwogCiAgICAgdm9pZCBzZXRTdGVwcyhp
bnQgbGluZVN0ZXAsIGludCBwYWdlU3RlcCwgaW50IHBpeGVsc1BlclN0ZXAgPSAxKTsKICAgICB2
b2lkIHNldFByb3BvcnRpb24oaW50IHZpc2libGVTaXplLCBpbnQgdG90YWxTaXplKTsKICAgICB2
b2lkIHNldFByZXNzZWRQb3MoaW50IHApIHsgbV9wcmVzc2VkUG9zID0gcDsgfQotICAgIAorCiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRh
bWFnZVJlY3QpOwogCi0gICAgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVk
OyB9CisgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7
IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sIGUpOwogCiAgICAgdmlydHVhbCBi
b29sIGlzT3ZlcmxheVNjcm9sbGJhcigpIGNvbnN0OwpAQCAtOTcsNyArMTAwLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgbW91c2VNb3ZlZChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAgICB2
b2lkIG1vdXNlRW50ZXJlZCgpOwogICAgIGJvb2wgbW91c2VFeGl0ZWQoKTsKLSAgICAKKwogICAg
IC8vIFVzZWQgYnkgc29tZSBwbGF0Zm9ybSBzY3JvbGxiYXJzIHRvIGtub3cgd2hlbiB0aGV5J3Zl
IGJlZW4gcmVsZWFzZWQgZnJvbSBjYXB0dXJlLgogICAgIGJvb2wgbW91c2VVcChjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmKTsKIApAQCAtMTA1LDExICsxMDgsMjMgQEAgcHVibGljOgogCiAgICAg
U2Nyb2xsYmFyVGhlbWUqIHRoZW1lKCkgY29uc3QgeyByZXR1cm4gbV90aGVtZTsgfQogCisgICAg
dmlydHVhbCBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6eCgpOyB9CisgICAgdmlydHVh
bCBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6eSgpOyB9CisgICAgdmlydHVhbCBpbnQg
d2lkdGgoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OndpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIGlu
dCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OmhlaWdodCgpOyB9CisgICAgdmlydHVh
bCBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OnNpemUoKTsgfQorICAgIHZp
cnR1YWwgSW50UG9pbnQgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OmxvY2F0aW9u
KCk7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnQoU2Nyb2xsVmlldyopOworICAgIHZp
cnR1YWwgU2Nyb2xsVmlldyogcGFyZW50KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0OjpwYXJlbnQo
KTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsVmlldyogcm9vdCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdl
dDo6cm9vdCgpOyB9CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IEludFJl
Y3QmKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgZnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gV2lk
Z2V0OjpmcmFtZVJlY3QoKTsgfQogCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKSB7IFdp
ZGdldDo6aW52YWxpZGF0ZSgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNv
bnN0IEludFJlY3QmKTsKLSAgICAKKwogICAgIGJvb2wgc3VwcHJlc3NJbnZhbGlkYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3N1cHByZXNzSW52YWxpZGF0aW9uOyB9CiAgICAgdm9pZCBzZXRTdXBw
cmVzc0ludmFsaWRhdGlvbihib29sIHMpIHsgbV9zdXBwcmVzc0ludmFsaWRhdGlvbiA9IHM7IH0K
IApAQCAtMTE3LDEyICsxMzIsMTggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBJbnRSZWN0IGNv
bnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdDsKICAgICB2aXJ0dWFs
IEludFJlY3QgY29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Q7
Ci0gICAgCisKICAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNv
bnN0IEludFBvaW50JikgY29uc3Q7CiAgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNv
bnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAKICAgICB2b2lkIG1vdmVUaHVt
YihpbnQgcG9zLCBib29sIGRyYWdnaW5nRG9jdW1lbnQgPSBmYWxzZSk7CiAKKyAgICB2aXJ0dWFs
IFNjcm9sbGJhck92ZXJsYXlTdHlsZSBzY3JvbGxiYXJPdmVybGF5U3R5bGUoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3RvcjxJbnRSZWN0PiYpIGNvbnN0OworICAg
IHZpcnR1YWwgYm9vbCBpc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkgY29uc3Q7CisKKyAgICB2aXJ0
dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhjb25zdCBJbnRQb2ludCYg
d2luZG93UG9pbnQpIHsgcmV0dXJuIFdpZGdldDo6Y29udmVydEZyb21Db250YWluaW5nV2luZG93
KHdpbmRvd1BvaW50KTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgU2Nyb2xsYmFyKFNjcm9sbGFibGVB
cmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbGJhckNvbnRyb2xTaXplLCBTY3JvbGxi
YXJUaGVtZSogPSAwKTsKIApAQCAtMTYwLDcgKzE4MSw3IEBAIHByb3RlY3RlZDoKIAogICAgIFRp
bWVyPFNjcm9sbGJhcj4gbV9zY3JvbGxUaW1lcjsKICAgICBib29sIG1fb3ZlcmxhcHNSZXNpemVy
OwotICAgIAorCiAgICAgYm9vbCBtX3N1cHByZXNzSW52YWxpZGF0aW9uOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKaW5kZXggMmE4M2Q1Mzg1ZWFi
YmNhY2ZmOGJlNTYzNDliNGQxOWUzMmJiNmZjYy4uMTdlZjYzOGU2MDNiNDIxNjUyYTRkMGE5YjEx
ZjkwNzQ3ZGE3NzA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5o
CkBAIC0zMyw3ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBsYXRmb3Jt
TW91c2VFdmVudDsKLWNsYXNzIFNjcm9sbGJhcjsKK2NsYXNzIFNjcm9sbGJhclRoZW1lQ2xpZW50
OwogY2xhc3MgU2Nyb2xsVmlldzsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykg
JiYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQpAQCAtNDYsMTAgKzQ2LDEwIEBAIHB1YmxpYzoKICAg
ICBTY3JvbGxiYXJUaGVtZSgpIHsgfQogICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lKCkge307
CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhciopIHsgfTsK
KyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50
KikgeyB9OwogCi0gICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhciosIEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEludFJlY3QmIC8qZGFtYWdlUmVjdCovKSB7IHJldHVybiBmYWxzZTsgfQot
ICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBoaXRUZXN0KFNjcm9sbGJhciosIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIE5vUGFydDsgfQorICAgIHZpcnR1YWwgYm9vbCBwYWlu
dChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3Qm
IC8qZGFtYWdlUmVjdCovKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFy
UGFydCBoaXRUZXN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JikgeyByZXR1cm4gTm9QYXJ0OyB9CiAgICAgCiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFy
VGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcikgeyByZXR1
cm4gMDsgfQogCkBAIC01NywxMyArNTcsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgdXNlc092ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhciop
IHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNoYW5nZWQoKSB7
fQogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpbnZhbGlkYXRlT25Nb3VzZUVudGVyRXhpdCgpIHsg
cmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lkIGludmFsaWRhdGVQYXJ0cyhTY3JvbGxiYXIqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrIG1hc2spCisgICAgdm9pZCBpbnZhbGlk
YXRlUGFydHMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyQ29udHJv
bFBhcnRNYXNrIG1hc2spCiAgICAgewogICAgICAgICBpZiAobWFzayAmIEJhY2tCdXR0b25TdGFy
dFBhcnQpCiAgICAgICAgICAgICBpbnZhbGlkYXRlUGFydChzY3JvbGxiYXIsIEJhY2tCdXR0b25T
dGFydFBhcnQpOwpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpbnZhbGlk
YXRlUGFydChzY3JvbGxiYXIsIEZvcndhcmRCdXR0b25FbmRQYXJ0KTsKICAgICB9CiAKLSAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCkge30K
KyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBT
Y3JvbGxiYXJQYXJ0KSB7fQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNj
cm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5l
clJlY3QpIHsgZGVmYXVsdFBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQsIGNvcm5lclJlY3QpOyB9
CiAgICAgc3RhdGljIHZvaWQgZGVmYXVsdFBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBjb250ZXh0LT5maWxsUmVj
dChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOyB9CkBAIC05
MywyMSArOTMsMjEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRVcENvbnRlbnRTaGFk
b3dMYXllcihHcmFwaGljc0xheWVyKikgeyB9CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBCYWNrVG9EcmFn
T3JpZ2luKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1i
KFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXIqKSB7IHJldHVybiAwOyB9
IC8vIFRoZSBwb3NpdGlvbiBvZiB0aGUgdGh1bWIgcmVsYXRpdmUgdG8gdGhlIHRyYWNrLgotICAg
IHZpcnR1YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhciopIHsgcmV0dXJuIDA7IH0gLy8gVGhl
IGxlbmd0aCBvZiB0aGUgdGh1bWIgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIHNjcm9sbGJhci4KLSAg
ICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJhciopIHsgcmV0dXJuIDA7IH0gLy8g
VGhlIHBvc2l0aW9uIG9mIHRoZSB0cmFjayByZWxhdGl2ZSB0byB0aGUgc2Nyb2xsYmFyLgotICAg
IHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhciopIHsgcmV0dXJuIDA7IH0gLy8gVGhl
IGxlbmd0aCBvZiB0aGUgdHJhY2sgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIHNjcm9sbGJhci4KKyAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCos
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIHNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgaW50IHRodW1iUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiAw
OyB9IC8vIFRoZSBwb3NpdGlvbiBvZiB0aGUgdGh1bWIgcmVsYXRpdmUgdG8gdGhlIHRyYWNrLgor
ICAgIHZpcnR1YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyByZXR1
cm4gMDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0aHVtYiBhbG9uZyB0aGUgYXhpcyBvZiB0aGUg
c2Nyb2xsYmFyLgorICAgIHZpcnR1YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVD
bGllbnQqKSB7IHJldHVybiAwOyB9IC8vIFRoZSBwb3NpdGlvbiBvZiB0aGUgdHJhY2sgcmVsYXRp
dmUgdG8gdGhlIHNjcm9sbGJhci4KKyAgICB2aXJ0dWFsIGludCB0cmFja0xlbmd0aChTY3JvbGxi
YXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIGxlbmd0aCBvZiB0aGUgdHJhY2sg
YWxvbmcgdGhlIGF4aXMgb2YgdGhlIHNjcm9sbGJhci4KIAogICAgIHZpcnR1YWwgaW50IG1heE92
ZXJsYXBCZXR3ZWVuUGFnZXMoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1h
eCgpOyB9CiAKICAgICB2aXJ0dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXko
KSB7IHJldHVybiAwLjI1OyB9CiAgICAgdmlydHVhbCBkb3VibGUgYXV0b3Njcm9sbFRpbWVyRGVs
YXkoKSB7IHJldHVybiAwLjA1OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxi
YXIoU2Nyb2xsYmFyKikge30KLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihT
Y3JvbGxiYXIqKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxi
YXJUaGVtZUNsaWVudCopIHt9CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7fQogCiAgICAgdmlydHVhbCBib29sIGlzTW9ja1RoZW1l
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWExNzYwNDcxNWE5NjU1YmRlNDE3
MDgwNGRmMDZmNDljMzBiYmFiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhclRoZW1lQ2xpZW50LmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgU2Nyb2xsYmFyVGhlbWVDbGllbnRfaAorI2RlZmluZSBTY3JvbGxiYXJUaGVtZUNsaWVu
dF9oCisKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNs
dWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBTY3JvbGxWaWV3OworCitjbGFzcyBTY3JvbGxiYXJUaGVtZUNsaWVudCB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhlbWVDbGllbnQoKSB7IH0KKworICAg
IHZpcnR1YWwgYm9vbCBpc0N1c3RvbVNjcm9sbGJhcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCBpbnQgdmFsdWUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50UG9z
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHZpc2libGVTaXplKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgaW50IHRvdGFsU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBt
YXhpbXVtKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29u
dHJvbFNpemUoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGludCBsaW5lU3RlcCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGludCBwYWdlU3RlcCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1
YWwgU2Nyb2xsYmFyUGFydCBwcmVzc2VkUGFydCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNj
cm9sbGJhclBhcnQgaG92ZXJlZFBhcnQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wg
ZW5hYmxlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sKSA9
IDA7CisKKyAgICB2aXJ0dWFsIGludCB4KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHko
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgd2lkdGgoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBpbnQgaGVpZ2h0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50UG9pbnQgbG9jYXRpb24oKSBjb25zdCA9IDA7CisK
KyAgICB2aXJ0dWFsIFNjcm9sbFZpZXcqIHBhcmVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFNjcm9sbFZpZXcqIHJvb3QoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJh
bWVSZWN0KGNvbnN0IEludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGZyYW1lUmVj
dCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOworCisgICAg
dmlydHVhbCBTY3JvbGxiYXJPdmVybGF5U3R5bGUgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBnZXRUaWNrbWFya3MoVmVjdG9yPEludFJlY3Q+Jikg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkgY29u
c3QgPSAwOworCisgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5k
b3coY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTY29sbGJhclRoZW1lQ2xpZW50X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAppbmRleCBm
Y2JmNDg0YzA5NTFiNWIwYWZiOWJjN2I1ZmJjNTZjZmVjOWE5ODVlLi5lMjk2NjlmOGQ1YzlmNzcz
ZDk3ZWJmYjNjZmQ0NmEyNDFmN2FhMTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCkBAIC0zMywxNSArMzMsMTQgQEAKICNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1Nb3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCi0jaW5jbHVkZSAi
U2Nyb2xsYWJsZUFyZWEuaCIKKyNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotYm9vbCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnQoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBkYW1hZ2VSZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnQoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgLy8gQ3JlYXRlIHRoZSBT
Y3JvbGxiYXJDb250cm9sUGFydE1hc2sgYmFzZWQgb24gdGhlIGRhbWFnZVJlY3QKICAgICBTY3Jv
bGxiYXJDb250cm9sUGFydE1hc2sgc2Nyb2xsTWFzayA9IE5vUGFydDsKQEAgLTExNiw3ICsxMTUs
NyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludChTY3JvbGxiYXIqIHNjcm9s
bGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaAogICAgIHJldHVybiB0cnVlOwogfQogCi1TY3Jv
bGxiYXJQYXJ0IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpoaXRUZXN0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK1Njcm9sbGJhclBhcnQgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OmhpdFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgU2Nyb2xsYmFyUGFy
dCByZXN1bHQgPSBOb1BhcnQ7CiAgICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKQEAgLTE1
NSw3ICsxNTQsNyBAQCBTY3JvbGxiYXJQYXJ0IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpoaXRU
ZXN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBQbGF0ZgogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OmludmFsaWRhdGVQYXJ0KFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjppbnZhbGlkYXRlUGFydChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgaWYgKHBhcnQgPT0gTm9QYXJ0KQogICAgICAg
ICByZXR1cm47CkBAIC0xOTUsNyArMTk0LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6aW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAg
ICBzY3JvbGxiYXItPmludmFsaWRhdGVSZWN0KHJlc3VsdCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGU6OnNwbGl0VHJhY2soU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QsIEludFJlY3QmIGJlZm9yZVRodW1iUmVjdCwg
SW50UmVjdCYgdGh1bWJSZWN0LCBJbnRSZWN0JiBhZnRlclRodW1iUmVjdCkKK3ZvaWQgU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGU6OnNwbGl0VHJhY2soU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCwgSW50UmVjdCYgYmVm
b3JlVGh1bWJSZWN0LCBJbnRSZWN0JiB0aHVtYlJlY3QsIEludFJlY3QmIGFmdGVyVGh1bWJSZWN0
KQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gd29uJ3QgZXZlbiBnZXQgY2FsbGVkIHVubGVzcyB3
ZSdyZSBiaWcgZW5vdWdoIHRvIGhhdmUgc29tZSBjb21iaW5hdGlvbiBvZiB0aGVzZSB0aHJlZSBy
ZWN0cyB3aGVyZSBhdCBsZWFzdAogICAgIC8vIG9uZSBvZiB0aGVtIGlzIG5vbi1lbXB0eS4KQEAg
LTIxNSw3ICsyMTQsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxpdFRyYWNr
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bgogCiAvLyBSZXR1cm5zIHRo
ZSBzaXplIHJlcHJlc2VudGVkIGJ5IHRyYWNrIHRha2luZyBpbnRvIGFjY291bnQgc2Nyb2xsaW5n
IHBhc3QKIC8vIHRoZSBlbmQgb2YgdGhlIGRvY3VtZW50Lgotc3RhdGljIGZsb2F0IHVzZWRUb3Rh
bFNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitzdGF0aWMgZmxvYXQgdXNlZFRvdGFsU2l6ZShT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGZsb2F0IG92ZXJoYW5nQXRT
dGFydCA9IC1zY3JvbGxiYXItPmN1cnJlbnRQb3MoKTsKICAgICBmbG9hdCBvdmVyaGFuZ0F0RW5k
ID0gc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgKyBzY3JvbGxiYXItPnZpc2libGVTaXplKCkgLSBz
Y3JvbGxiYXItPnRvdGFsU2l6ZSgpOwpAQCAtMjIzLDcgKzIyMiw3IEBAIHN0YXRpYyBmbG9hdCB1
c2VkVG90YWxTaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiBzY3JvbGxiYXIt
PnRvdGFsU2l6ZSgpICsgb3Zlcmhhbmc7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6dGh1bWJQb3NpdGlvbihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZTo6dGh1bWJQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
KQogewogICAgIGlmIChzY3JvbGxiYXItPmVuYWJsZWQoKSkgewogICAgICAgICBmbG9hdCBwb3Mg
PSBtYXgoMC4wZiwgc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkpICogKHRyYWNrTGVuZ3RoKHNjcm9s
bGJhcikgLSB0aHVtYkxlbmd0aChzY3JvbGxiYXIpKSAvICh1c2VkVG90YWxTaXplKHNjcm9sbGJh
cikgLSBzY3JvbGxiYXItPnZpc2libGVTaXplKCkpOwpAQCAtMjMyLDcgKzIzMSw3IEBAIGludCBT
Y3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJQb3NpdGlvbihTY3JvbGxiYXIqIHNjcm9sbGJh
cikKICAgICByZXR1cm4gMDsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVt
Ykxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6dGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBp
ZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI0NiwxOCAr
MjQ1LDE4IEBAIGludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJMZW5ndGgoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotaW50IFNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitp
bnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiBzY3JvbGxiYXJUaGlja25lc3Mo
c2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjp0cmFja1Bvc2l0aW9uKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlOjp0cmFja1Bvc2l0aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIpCiB7CiAgICAgSW50UmVjdCBjb25zdHJhaW5lZFRyYWNrUmVjdCA9IGNvbnN0cmFpblRyYWNr
UmVjdFRvVHJhY2tQaWVjZXMoc2Nyb2xsYmFyLCB0cmFja1JlY3Qoc2Nyb2xsYmFyKSk7CiAgICAg
cmV0dXJuIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikg
PyBjb25zdHJhaW5lZFRyYWNrUmVjdC54KCkgLSBzY3JvbGxiYXItPngoKSA6IGNvbnN0cmFpbmVk
VHJhY2tSZWN0LnkoKSAtIHNjcm9sbGJhci0+eSgpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyKQogewogICAgIEludFJlY3QgY29uc3RyYWluZWRUcmFja1JlY3QgPSBjb25zdHJhaW5UcmFj
a1JlY3RUb1RyYWNrUGllY2VzKHNjcm9sbGJhciwgdHJhY2tSZWN0KHNjcm9sbGJhcikpOwogICAg
IHJldHVybiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIp
ID8gY29uc3RyYWluZWRUcmFja1JlY3Qud2lkdGgoKSA6IGNvbnN0cmFpbmVkVHJhY2tSZWN0Lmhl
aWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29t
cG9zaXRlLmgKaW5kZXggMTFiM2JkNDcwMDE4N2ZmMTgyYjA0NWI0NTJjZGMyNGRhMzNlNzU5MC4u
OGVkZDRiYmFjOTgwNDBkMDNmYzRiMzBlZWIyMWFhOTk1ZTNkMmVlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oCkBAIC0zMiw0MCAr
MzIsNDAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZSA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBib29s
IHBhaW50KFNjcm9sbGJhciosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgZGFtYWdlUmVjdCk7CisgICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
KTsKIAotICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBoaXRUZXN0KFNjcm9sbGJhciosIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBoaXRUZXN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCk7
CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
U2Nyb2xsYmFyUGFydCk7CiAKLSAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9sbGJh
ciopOwotICAgIHZpcnR1YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhciopOwotICAgIHZpcnR1
YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBpbnQgdHJhY2tM
ZW5ndGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxi
YXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhclRo
ZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3JvbGxiYXJUaGVt
ZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xp
ZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyos
IEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOwogICAgIHZpcnR1
YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZl
cnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKikgPSAwOwotICAgIHZp
cnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhh
c0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhh
c1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgPSAwOwogCi0gICAgdmlydHVhbCBJbnRSZWN0
IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSkgPSAwOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3Jv
bGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpID0gMDsKLSAgICB2
aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxz
ZSkgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOworICAg
IHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCos
IFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOworICAgIHZpcnR1YWwg
SW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0g
ZmFsc2UpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzcGxpdFRyYWNrKFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmIHRyYWNrLCBJbnRSZWN0JiBzdGFydFRyYWNrLCBJbnRSZWN0JiB0aHVtYiwg
SW50UmVjdCYgZW5kVHJhY2spOworICAgIHZpcnR1YWwgdm9pZCBzcGxpdFRyYWNrKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYgdHJhY2ssIEludFJlY3QmIHN0YXJ0VHJhY2ss
IEludFJlY3QmIHRodW1iLCBJbnRSZWN0JiBlbmRUcmFjayk7CiAgICAgCi0gICAgdmlydHVhbCBp
bnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgaW50IG1pbmlt
dW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAgdmlydHVhbCB2b2lk
IHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqKSB7
fQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jikge30KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
cmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBT
Y3JvbGxiYXJQYXJ0KSB7fQotICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkge30KLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBj
b25zdCBJbnRSZWN0Jikge30KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIHt9CisgICAgdmlydHVhbCB2
b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJU
aGVtZUNsaWVudCopIHt9CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIHt9
CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSB7fQorICAg
IHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSB7fQorICAgIHZpcnR1YWwg
dm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
Y29uc3QgSW50UmVjdCYpIHt9CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIHt9CiAK
LSAgICB2aXJ0dWFsIEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3Jv
bGxiYXIqLCBjb25zdCBJbnRSZWN0JiByZWN0KSB7IHJldHVybiByZWN0OyB9CisgICAgdmlydHVh
bCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBJbnRSZWN0JiByZWN0KSB7IHJldHVybiByZWN0OyB9CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW0uY3BwCmluZGV4IGY4Y2IyODE1NDg2MWUwMWRhNzExMjQ5MjBjNjBkMDZh
MzdlOWExODMuLjY4MmQ4MmQ1YjMzNzkxOGIyNWQwOThiYTc3MTczNGU3OTE1MDVlOTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW0uY3BwCkBAIC0zOSwxNCArMzksMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1ib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06Omhhc1RodW1iKFNjcm9sbGJhciog
c2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpoYXNUaHVtYihTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGp1c3Qg
Y2FsbGVkIGFzIGEgcGFpbnQtdGltZSBvcHRpbWl6YXRpb24gdG8gc2VlIGlmCiAgICAgLy8gcGFp
bnRpbmcgdGhlIHRodW1iIGNhbiBiZSBza2lwcGVkLiAgV2UgZG9uJ3QgaGF2ZSB0byBiZSBleGFj
dCBoZXJlLgogICAgIHJldHVybiB0aHVtYkxlbmd0aChzY3JvbGxiYXIpID4gMDsKIH0KIAotSW50
UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAgICAgLy8gV2luZG93cyBhbmQgTGludXgg
anVzdCBoYXZlIHNpbmdsZSBhcnJvd3MuCiAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRvbkVuZFBh
cnQpCkBAIC01Niw3ICs1Niw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6YmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhCiAgICAgcmV0dXJu
IEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpLCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OmZvcndh
cmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJv
b2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OmZvcndhcmRCdXR0b25SZWN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkK
IHsKICAgICAvLyBXaW5kb3dzIGFuZCBMaW51eCBqdXN0IGhhdmUgc2luZ2xlIGFycm93cy4KICAg
ICBpZiAocGFydCA9PSBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0KQpAQCAtNzQsNyArNzQsNyBAQCBJ
bnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBTY3JvbGxiYQogICAgIHJldHVybiBJbnRSZWN0KHgsIHksIHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bTo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgYm9vbCkKIHsKICAgICBJbnRTaXplIGJzID0gYnV0dG9uU2l6ZShzY3JvbGxiYXIpOwogICAg
IC8vIFRoZSBidXR0b25zIGF0IHRoZSB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgc2Nyb2xsYmFyIGFy
ZSBzcXVhcmUsIHNvIHRoZQpAQCAtOTIsMTQgKzkyLDE0IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bTo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQogICAgIHJl
dHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIGJzLmhlaWdodCgp
LCB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSAyICogYnMuaGVpZ2h0KCkpOwogfQog
Ci12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VHJhY2tCYWNrZ3JvdW5k
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBKdXN0IGFzc3VtZSBhIGZvcndhcmQg
dHJhY2sgcGFydC4gIFdlIG9ubHkgcGFpbnQgdGhlIHRyYWNrIGFzIGEgc2luZ2xlIHBpZWNlIHdo
ZW4gdGhlcmUgaXMgbm8gdGh1bWIuCiAgICAgaWYgKCFoYXNUaHVtYihzY3JvbGxiYXIpKQogICAg
ICAgICBwYWludFRyYWNrUGllY2UoY29udGV4dCwgc2Nyb2xsYmFyLCByZWN0LCBGb3J3YXJkVHJh
Y2tQYXJ0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpwYWludFRpY2ttYXJr
cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpwYWludFRpY2ttYXJr
cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRp
b24oKSAhPSBWZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTA5LDcgKzEw
OSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUaWNrbWFya3MoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqCiAKICAgICAvLyBHZXQgdGhlIHRpY2ttYXJr
cyBmb3IgdGhlIGZyYW1ldmlldy4KICAgICBWZWN0b3I8SW50UmVjdD4gdGlja21hcmtzOwotICAg
IHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+Z2V0VGlja21hcmtzKHRpY2ttYXJrcyk7Cisg
ICAgc2Nyb2xsYmFyLT5nZXRUaWNrbWFya3ModGlja21hcmtzKTsKICAgICBpZiAoIXRpY2ttYXJr
cy5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oCmluZGV4IDExNzgx
MjU2OWY2OWYyMDAzNzFiYWMwZjlkYTg3YTdjMzJkZTRmYTUuLmNmNjcxZGQ5ODRjMDc5MDk5NWM2
N2Q3ZDBmMThjNWI0YTZmNmNmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmgKQEAgLTQxLDE3ICs0MSwx
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gV2luZG93cyBhbmQgTGludXguCiAgICAg
Y2xhc3MgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bSA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZSB7CiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhT
Y3JvbGxiYXIqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVt
YihTY3JvbGxiYXIqKTsKKyAgICAgICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKSB7IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNU
aHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAgICAgIHZpcnR1YWwgSW50UmVjdCBi
YWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0g
ZmFsc2UpOwotICAgICAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xs
YmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICAgICAgdmly
dHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29sIHBhaW50aW5nID0gZmFsc2Up
OworICAgICAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgICAgICB2
aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBT
Y3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgICAgICB2aXJ0dWFsIElu
dFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZh
bHNlKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3Qg
SW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKIAotICAgICAgICB2aXJ0dWFsIElu
dFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXIqKSA9IDA7CisgICAgICAgIHZpcnR1YWwgSW50U2l6
ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgPSAwOwogICAgIH07CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcAppbmRl
eCAxZGJlZmE2NDljMDg5NzJlYjFjMmIzN2I3NDc3MWIwZDYxYmVhNWFkLi5lMWU1NWExZmMxM2Q3
OWMwZjllOGY0NzMwYmU4OTc4MDk0YzFmNjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFu
ZHJvaWQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5k
cm9pZDo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyCiAgICAg
cmV0dXJuIHNjcm9sbGJhclRoaWNrbmVzc1ZhbHVlOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1BbmRyb2lkOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bUFuZHJvaWQ6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgLy8gUGFpbnQg
YmxhY2sgYmFja2dyb3VuZCBpbiBEdW1wUmVuZGVyVHJlZSwgb3RoZXJ3aXNlIHRoZSBwaXhlbHMg
aW4gdGhlIHNjcm9sbGJhciBhcmVhIGRlcGVuZAogICAgIC8vIG9uIHRoZWlyIHByZXZpb3VzIHN0
YXRlLCB3aGljaCBtYWtlcyB0aGUgZHVtcGVkIHJlc3VsdCB1bmRldGVybWluZWQuCkBAIC02NSwx
MiArNjUsMTIgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6cGFpbnRTY3Jv
bGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY28KICAgICAgICAgY29udGV4dC0+Zmls
bFJlY3Qoc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKSwgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6c2hvdWxk
Q2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkK
K2Jvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnNob3VsZENlbnRlck9uVGh1bWIo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5k
cm9pZDo6YnV0dG9uU2l6ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKK0ludFNpemUgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUFuZHJvaWQ6OmJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2Fs
U2Nyb2xsYmFyKQogICAgICAgICByZXR1cm4gSW50U2l6ZShzY3JvbGxiYXJUaGlja25lc3NWYWx1
ZSwgYnV0dG9uTGVuZ3RoKTsKQEAgLTc4LDcgKzc4LDcgQEAgSW50U2l6ZSBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtQW5kcm9pZDo6YnV0dG9uU2l6ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICBy
ZXR1cm4gSW50U2l6ZShidXR0b25MZW5ndGgsIHNjcm9sbGJhclRoaWNrbmVzc1ZhbHVlKTsKIH0K
IAotaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjptaW5pbXVtVGh1bWJMZW5ndGgo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6
Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewog
ICAgIHJldHVybiAyICogc2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJhci0+Y29udHJvbFNpemUo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuaAppbmRleCBmMDdjOTAxNjc4NmNi
MjRmODhkZmI5NGFlNGZjMjE2ZmU2ZTcwYmZjLi5mM2RiODBlNTJmYmY1MGMxZGY2OGE5NDBlYTlk
NDczZjJkYmYyODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmgKQEAgLTM1LDEw
ICszNSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNj
cm9sbGJhckNvbnRyb2xTaXplKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKik7Ci0gICAg
dmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50Jik7Ci0gICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFy
Kik7Ci0gICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAg
IHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25U
aHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwor
ICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Cisg
ICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4
LmNwcAppbmRleCBlYzY4NDA3ZTlkOGMzMmUzMGQzMTBkMmU1MDU4YzJkYTdkYmRlY2M2Li42YjRk
YWZjMzczZjEwZDBhYTJkNmU5NjYyYWJlNjNkZDVkYjY1ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1MaW51eC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgaW50IFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1MaW51eDo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2wK
ICAgICByZXR1cm4gc2Nyb2xsYmFyU2l6ZS53aWR0aCgpOwogfQogCi12b2lkIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBh
cnRUeXBlKQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVj
ZShHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBj
b25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQogewogICAgIFBsYXRm
b3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHN0YXRlID0gc2Nyb2xsYmFyLT5ob3ZlcmVkUGFy
dCgpID09IHBhcnRUeXBlID8gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZUhvdmVyIDogUGxhdGZvcm1T
dXBwb3J0OjpTdGF0ZU5vcm1hbDsKICAgICBJbnRSZWN0IGFsaWduUmVjdCA9IHRyYWNrUmVjdChz
Y3JvbGxiYXIsIGZhbHNlKTsKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxi
YXIKICAgICAgICAgJmV4dHJhUGFyYW1zKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTGludXg6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBn
YywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwg
U2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYXJ0IHBh
aW50UGFydDsKICAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0ZSA9IFBs
YXRmb3JtU3VwcG9ydDo6U3RhdGVOb3JtYWw7CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2Ms
IFNjcm9sbGJhciogc2MKICAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KGdjLCBw
YWludFBhcnQsIHN0YXRlLCByZWN0LCAwKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTGludXg6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1M
aW51eDo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIFBsYXRmb3JtU3VwcG9y
dDo6VGhlbWVQYWludFN0YXRlIHN0YXRlOwogCkBAIC0xMjAsMTIgKzEyMCwxMiBAQCB2b2lkIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdj
LCBTY3JvbGxiYXIqIHNjcgogICAgICAgICAwKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTGludXg6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6c2hv
dWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZ0KQogewogICAgIHJldHVybiAoZXZ0LnNoaWZ0S2V5KCkgJiYgZXZ0LmJ1dHRv
bigpID09IExlZnRCdXR0b24pIHx8IChldnQuYnV0dG9uKCkgPT0gTWlkZGxlQnV0dG9uKTsKIH0K
IAotSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OmJ1dHRvblNpemUoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIpCitJbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6YnV0
dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChzY3Jv
bGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAgICAgSW50
U2l6ZSBzaXplID0gUGxhdGZvcm1TdXBwb3J0OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3Vw
cG9ydDo6UGFydFNjcm9sbGJhclVwQXJyb3cpOwpAQCAtMTM3LDcgKzEzNyw3IEBAIEludFNpemUg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXplKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQogICAgIHJldHVybiBJbnRTaXplKHNjcm9sbGJhci0+d2lkdGgoKSA8IDIgKiBzaXplLndp
ZHRoKCkgPyBzY3JvbGxiYXItPndpZHRoKCkgLyAyIDogc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6bWluaW11bVRodW1i
TGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1M
aW51eDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIp
CiB7CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJh
cikgewogICAgICAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFy
dFNpemUoUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVtYik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtTGludXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eC5oCmluZGV4IDhlODAyZTczNDFiNzc1YjU5NTVhZDBkZWMwYjhl
ZWQ1NmY3OTcyNzMuLjMzMGQwM2ZiMDIzMjEzNGVjMmNhMjk0MTlmZGFiMjczNDk0NzU0ZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1l
Q2hyb21pdW1MaW51eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5oCkBAIC0zOSwxMiArMzksMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xs
YmFyQ29udHJvbFNpemUpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJl
Y3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0
KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2Vu
dGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICAg
ICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKik7Ci0gICAgICAgIHZpcnR1
YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
aHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICAgICAgdmlydHVh
bCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICAgICAgdmly
dHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAgICAg
fTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCmluZGV4
IDQxYTE5OGUzZjg0MjBjODQ4OTQ1ZmI4NDc0NGRkYjcwMDI0Y2Q2ZTUuLjRkMzQyNmJiNjIwNzk5
YmEzZDkwODNiNmRjODk0MWNhYjQ0MjZlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgKQEAg
LTM2LDEyICszNiwxMiBAQCBwdWJsaWM6CiAgICAgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYygp
OwogICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMoKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBwYWludChTY3JvbGxiYXIqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXJU
aGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFt
YWdlUmVjdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdB
cmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0KTsKICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCBwYWludEdpdmVuVGlja21hcmtz
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBjb25zdCBWZWN0
b3I8SW50UmVjdD4mKTsKKyAgICB2b2lkIHBhaW50R2l2ZW5UaWNrbWFya3MoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgVmVjdG9y
PEludFJlY3Q+Jik7CiAKICAgICBSZWZQdHI8UGF0dGVybj4gbV9vdmVyaGFuZ1BhdHRlcm47CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KaW5kZXggNDU5YTU4YjA3NmY3MDA2ZjI3NzY1YjAy
NDk3YTA5OTM1ZjgyM2ZiNy4uOWY3YTNmMzBkNzFhM2Q2Mzc2NDE1ZDAzZWVmOTEwNTcxZmNmYmNh
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCkBAIC02MSwxMSArNjEsMTEgQEAgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYzo6flNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMoKQogewogfQog
Ci1zdGF0aWMgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc2Nyb2xsYmFyU3RhdGVU
b1RoZW1lU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitzdGF0aWMgUGxhdGZvcm1TdXBwb3J0
OjpUaGVtZVBhaW50U3RhdGUgc2Nyb2xsYmFyU3RhdGVUb1RoZW1lU3RhdGUoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZURpc2FibGVkOwotICAgIGlmICgh
c2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5pc0FjdGl2ZSgpKQorICAgIGlmICghc2Nyb2xs
YmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVN1
cHBvcnQ6OlN0YXRlSW5hY3RpdmU7CiAgICAgaWYgKHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSA9
PSBUaHVtYlBhcnQpCiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlUHJlc3Nl
ZDsKQEAgLTk0LDExICs5NCwxMSBAQCBzdGF0aWMgdm9pZCBzY3JvbGxiYXJQYWludGVyUGFpbnRU
cmFjayhTY3JvbGxiYXJQYWludGVyIHNjcm9sbGJhclBhaW50ZXIsIGJvb2wgZQogLy8gICAgIC0g
ZHJhd2luZyB1c2luZyBQbGF0Zm9ybVN1cHBvcnQgZnVuY3Rpb25zCiAvLyAgICAgLSBkcmF3aW5n
IHRpY2ttYXJrcwogLy8gICAgIC0gU2tpYSBzcGVjaWZpYyBjaGFuZ2VzCi1ib29sIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCitib29sIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsK
ICAgICAvLyBHZXQgdGhlIHRpY2ttYXJrcyBmb3IgdGhlIGZyYW1ldmlldy4KICAgICBWZWN0b3I8
SW50UmVjdD4gdGlja21hcmtzOwotICAgIHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+Z2V0
VGlja21hcmtzKHRpY2ttYXJrcyk7CisgICAgc2Nyb2xsYmFyLT5nZXRUaWNrbWFya3ModGlja21h
cmtzKTsKIAogICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkgewogICAg
ICAgICBmbG9hdCB2YWx1ZSA9IDA7CkBAIC0xODgsNyArMTg4LDcgQEAgYm9vbCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250
ZXh0KiBjb24KICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQogICAgICAgICB0cmFja0lu
Zm8uZW5hYmxlU3RhdGUgPSBrVGhlbWVUcmFja0Rpc2FibGVkOwogICAgIGVsc2UKLSAgICAgICAg
dHJhY2tJbmZvLmVuYWJsZVN0YXRlID0gc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5pc0Fj
dGl2ZSgpID8ga1RoZW1lVHJhY2tBY3RpdmUgOiBrVGhlbWVUcmFja0luYWN0aXZlOworICAgICAg
ICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBzY3JvbGxiYXItPmlzU2Nyb2xsYWJsZUFyZWFBY3Rp
dmUoKSA/IGtUaGVtZVRyYWNrQWN0aXZlIDoga1RoZW1lVHJhY2tJbmFjdGl2ZTsKIAogICAgIGlm
ICghaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUg
PSBrVGhlbWVUcmFja05vdGhpbmdUb1Njcm9sbDsKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29sIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFw
aGljc0NvbnRleHQqIGNvbgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWM6OnBhaW50R2l2ZW5UaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgVmVj
dG9yPEludFJlY3Q+JiB0aWNrbWFya3MpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6
OnBhaW50R2l2ZW5UaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBWZWN0b3I8
SW50UmVjdD4mIHRpY2ttYXJrcykKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigp
ICE9IFZlcnRpY2FsU2Nyb2xsYmFyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW1XaW4uY3BwCmluZGV4IGY0MzU4MzlkODIxODU2NGY4MDI3MjhkMzI4NTMyMGQxZTBjZGJhYzgu
LmEwODE5ODM0NzQ5MWRjYzVkOGYwMjJhMTIyODg5MGQ2NTc3ZmUzZjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1l
Q2hyb21pdW1XaW4uY3BwCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bVdpbjo6aW52YWxpZGF0ZU9uTW91c2VFbnRlckV4aXQoKQogICAgIHJldHVybiB3aW5kb3dz
VmVyc2lvbigpID49IFdpbmRvd3NWaXN0YTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtV2luOjpzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqIHNjcm9sbGJhciwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1XaW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIC8vIEZpbmQg
dGhlIHJlY3Qgd2l0aGluIHdoaWNoIHdlIHNob3VsZG4ndCBzbmFwLCBieSBleHBhbmRpbmcgdGhl
IHRyYWNrIHJlY3QKICAgICAvLyBpbiBib3RoIGRpbWVuc2lvbnMuCkBAIC05MSw3ICs5MSw3IEBA
IGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmln
aW4oU2Nyb2xsYmFyKiBzY3JvbGxiYXIsCiAgICAgcmV0dXJuICFyZWN0LmNvbnRhaW5zKG1vdXNl
UG9zaXRpb24pOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VHJh
Y2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKK3ZvaWQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJh
clBhcnQgcGFydFR5cGUpCiB7CiAgICAgYm9vbCBob3J6ID0gc2Nyb2xsYmFyLT5vcmllbnRhdGlv
bigpID09IEhvcml6b250YWxTY3JvbGxiYXI7CiAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQq
IGdjLCBTY3JvbGxiYXIqCiAgICAgICAgIGFsaWduUmVjdCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkK
K3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250
ZXh0KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
cmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGJvb2wgaG9yeiA9IHNjcm9sbGJhci0+
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyOwogCkBAIC0xMzEsNyArMTMxLDcg
QEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWludEJ1dHRvbihHcmFwaGljc0Nv
bnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcm8KICAgICAgICAgcmVjdCk7CiB9CiAKLXZvaWQgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGJv
b2wgaG9yeiA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
OwogCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpw
YWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2Nyb2wKICAgICAgICAg
cmVjdCk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZVN0YXRl
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpIGNvbnN0CitpbnQgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpIGNvbnN0CiB7CiAgICAgLy8gV2hlbiBk
cmFnZ2luZyB0aGUgdGh1bWIsIGRyYXcgdGh1bWIgcHJlc3NlZCBhbmQgb3RoZXIgc2VnbWVudHMg
bm9ybWFsCiAgICAgLy8gcmVnYXJkbGVzcyBvZiB3aGVyZSB0aGUgY3Vyc29yIGFjdHVhbGx5IGlz
LiAgU2VlIGFsc28gZm91ciBwbGFjZXMgaW4KQEAgLTE3MSw3ICsxNzEsNyBAQCBpbnQgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhciwg
U2Nyb2xsYmFyUGFydAogICAgIHJldHVybiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpID09IHBh
cnQpID8gU0NSQlNfUFJFU1NFRCA6IFNDUkJTX05PUk1BTDsKIH0KIAotaW50IFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1XaW46OmdldFRoZW1lQXJyb3dTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhciwg
U2Nyb2xsYmFyUGFydCBwYXJ0KSBjb25zdAoraW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46
OmdldFRoZW1lQXJyb3dTdGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3Jv
bGxiYXJQYXJ0IHBhcnQpIGNvbnN0CiB7CiAgICAgLy8gV2UgY291bGQgdGFrZSBhZHZhbnRhZ2Ug
b2Yga25vd2luZyB0aGUgdmFsdWVzIGluIHRoZSBzdGF0ZSBlbnVtIHRvIHdyaXRlCiAgICAgLy8g
c29tZSBzaW1wbGVyIGNvZGUsIGJ1dCB0cmVhdGluZyB0aGUgc3RhdGUgZW51bSBhcyBhIGJsYWNr
IGJveCBzZWVtcwpAQCAtMjIxLDcgKzIyMSw3IEBAIGludCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
V2luOjpnZXRUaGVtZUFycm93U3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhCiAg
ICAgcmV0dXJuIChzY3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gcGFydCkgPyBBQlNfRE9XTlBS
RVNTRUQgOiBBQlNfRE9XTk5PUk1BTDsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1X
aW46OmdldENsYXNzaWNUaGVtZVN0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQ
YXJ0IHBhcnQpIGNvbnN0CitpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3Np
Y1RoZW1lU3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFy
dCBwYXJ0KSBjb25zdAogewogICAgIC8vIFdoZW4gZHJhZ2dpbmcgdGhlIHRodW1iLCBkcmF3IHRo
ZSBidXR0b25zIG5vcm1hbCBldmVuIHdoZW4gaG92ZXJlZC4KICAgICBpZiAoc2Nyb2xsYmFyLT5w
cmVzc2VkUGFydCgpID09IFRodW1iUGFydCkKQEAgLTIzNSwxMiArMjM1LDEyIEBAIGludCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRDbGFzc2ljVGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNj
cm9sbGJhciwgU2Nyb2xsCiAgICAgcmV0dXJuIChzY3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0g
cGFydCkgPyAoREZDU19QVVNIRUQgfCBERkNTX0ZMQVQpIDogMDsKIH0KIAotYm9vbCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtV2luOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2lu
OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgcmV0dXJuIGV2dC5zaGlmdEtleSgpICYmIGV2dC5i
dXR0b24oKSA9PSBMZWZ0QnV0dG9uOwogfQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1XaW46OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitJbnRTaXplIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1XaW46OmJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhcikKIHsKICAgICAvLyBPdXIgZGVzaXJlZCByZWN0IGlzIGVzc2VudGlhbGx5IHRoaWNrbmVz
cyBieSB0aGlja25lc3MuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uaAppbmRleCA2OWNmYTEzMWM1
Y2IwNGU5YjUyMTBiNzY1Y2ZiNDgxZThkZGNiMTM1Li5hYzg4ODFmOTNiNWRiMWFmZjQ2NzlhNjA2
M2U3YmE3ZTg2ZjU1MWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5oCkBAIC0zOCwxOSArMzgs
MTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBp
bnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplKTsKICAgICAgICAgdmly
dHVhbCBib29sIGludmFsaWRhdGVPbk1vdXNlRW50ZXJFeGl0KCk7Ci0gICAgICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmKTsKKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBCYWNrVG9EcmFn
T3JpZ2luKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7
CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2Uo
R3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBh
cnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9s
bGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwotICAgICAgICB2aXJ0dWFsIEludFNp
emUgYnV0dG9uU2l6ZShTY3JvbGxiYXIqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJh
Y2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IElu
dFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9u
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYs
IFNjcm9sbGJhclBhcnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGlj
c0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICAg
ICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICAgICAgdmlydHVhbCBJbnRTaXplIGJ1
dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IGludCBnZXRUaGVtZVN0YXRlKFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQpIGNvbnN0OwotICAg
ICAgICBpbnQgZ2V0VGhlbWVBcnJvd1N0YXRlKFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQpIGNv
bnN0OwotICAgICAgICBpbnQgZ2V0Q2xhc3NpY1RoZW1lU3RhdGUoU2Nyb2xsYmFyKiwgU2Nyb2xs
YmFyUGFydCkgY29uc3Q7CisgICAgICAgIGludCBnZXRUaGVtZVN0YXRlKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgU2Nyb2xsYmFyUGFydCkgY29uc3Q7CisgICAgICAgIGludCBnZXRUaGVtZUFycm93
U3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0KSBjb25zdDsKKyAgICAg
ICAgaW50IGdldENsYXNzaWNUaGVtZVN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xs
YmFyUGFydCkgY29uc3Q7CiAgICAgfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5jcHAKaW5kZXgg
NjJkZjAwNWQ2NzU3MWQxNGFkMzk0MzYwZDU2YzQ5OGU0ZGY5MmJmYi4uMjQwYjUwMTQ3NzljMTgy
ZDE0MzkwYzNmOGMzOTM3NzU3N2U5M2E4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwCkBAIC00OSwxMSArNDksMTEgQEAgaW50IFNj
cm9sbGJhclRoZW1lRWZsOjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUg
Y29udHJvbFNpemUpCiAgICAgcmV0dXJuIDA7IC8vIHdlIHBhaW50IG9uIHRvcAogfQogCi12b2lk
IFNjcm9sbGJhclRoZW1lRWZsOjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJh
cikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVFZmw6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVFZmw6OnVu
cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRo
ZW1lRWZsOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3Jv
bGxiYXJUaGVtZUVmbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRo
ZW1lRWZsLmgKaW5kZXggMGZlMTY4ODFlMmU0NTZlNmUxMjMwMWFlZWY4NmMyNjViZDMzMjM0Yi4u
ZmM3MWNiZWQ4OTBhMWE2NWE5YTAyYWQ4YTAzZDM4ZmRjOTlhZDNjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmgKQEAgLTM5LDggKzM5LDgg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJh
ckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVn
aXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpOwotICAgIHZpcnR1YWwgdm9pZCB1
bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcik7Cisg
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhcik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Njcm9sbGJhclRoZW1lR3RrLmNwcAppbmRleCBlOTkzNjRmMmE3ZmNhZjQ4ODgzMGI0NjhkZTFk
MThhZDc1MDRlOTBmLi45NGUzZmQ3NmY3ZmZjNTIzMGZjODQ3ZmY5ZmVjYWY0M2RjNDZmYTA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5j
cHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgSGFz
aFNldDxTY3JvbGxiYXIqPiogZ1Njcm9sbGJhcnM7CitzdGF0aWMgSGFzaFNldDxTY3JvbGxiYXJU
aGVtZUNsaWVudCo+KiBnU2Nyb2xsYmFyczsKIAogU2Nyb2xsYmFyVGhlbWUqIFNjcm9sbGJhclRo
ZW1lOjpuYXRpdmVUaGVtZSgpCiB7CkBAIC00NSwxNCArNDUsMTQgQEAgU2Nyb2xsYmFyVGhlbWVH
dGs6On5TY3JvbGxiYXJUaGVtZUd0aygpCiB7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6
OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJU
aGVtZUd0azo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
cikKIHsKICAgICBpZiAoIWdTY3JvbGxiYXJzKQotICAgICAgICBnU2Nyb2xsYmFycyA9IG5ldyBI
YXNoU2V0PFNjcm9sbGJhcio+OworICAgICAgICBnU2Nyb2xsYmFycyA9IG5ldyBIYXNoU2V0PFNj
cm9sbGJhclRoZW1lQ2xpZW50Kj47CiAgICAgZ1Njcm9sbGJhcnMtPmFkZChzY3JvbGxiYXIpOwog
fQogCi12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJh
ciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dW5yZWdpc3RlclNjcm9sbGJh
cihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGdTY3JvbGxiYXJzLT5y
ZW1vdmUoc2Nyb2xsYmFyKTsKICAgICBpZiAoZ1Njcm9sbGJhcnMtPmlzRW1wdHkoKSkgewpAQCAt
NjksOSArNjksOSBAQCB2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjp1cGRhdGVTY3JvbGxiYXJzRnJh
bWVUaGlja25lc3MoKQogICAgIC8vIFVwZGF0ZSB0aGUgdGhpY2tuZXNzIG9mIGV2ZXJ5IGludGVy
aW9yIGZyYW1lIHNjcm9sbGJhciB3aWRnZXQuIFRoZQogICAgIC8vIHBsYXRmb3JtLWluZGVwZW5k
ZW50IHNjcm9sbGJhciB0aGVtIGNvZGUgaXNuJ3QgeWV0IHNtYXJ0IGVub3VnaCB0byBnZXQKICAg
ICAvLyB0aGlzIGluZm9ybWF0aW9uIHdoZW4gaXQgcGFpbnRzLgotICAgIEhhc2hTZXQ8U2Nyb2xs
YmFyKj46Oml0ZXJhdG9yIGVuZCA9IGdTY3JvbGxiYXJzLT5lbmQoKTsKLSAgICBmb3IgKEhhc2hT
ZXQ8U2Nyb2xsYmFyKj46Oml0ZXJhdG9yIGl0ID0gZ1Njcm9sbGJhcnMtPmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewotICAgICAgICBTY3JvbGxiYXIqIHNjcm9sbGJhciA9ICgqaXQpOworICAg
IEhhc2hTZXQ8U2Nyb2xsYmFyVGhlbWVDbGllbnQqPjo6aXRlcmF0b3IgZW5kID0gZ1Njcm9sbGJh
cnMtPmVuZCgpOworICAgIGZvciAoSGFzaFNldDxTY3JvbGxiYXJUaGVtZUNsaWVudCo+OjppdGVy
YXRvciBpdCA9IGdTY3JvbGxiYXJzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAg
ICAgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciA9ICgqaXQpOwogCiAgICAgICAgIC8v
IFRvcC1sZXZlbCBzY3JvbGxiYXIgaS5lLiBzY3JvbGxiYXJzIHdobyBoYXZlIGEgcGFyZW50IFNj
cm9sbFZpZXcKICAgICAgICAgLy8gd2l0aCBubyBwYXJlbnQgYXJlIG5hdGl2ZSwgYW5kIHRodXMg
ZG8gbm90IG5lZWQgdG8gYmUgcmVzaXplZC4KQEAgLTg2LDE0ICs4NiwxNCBAQCB2b2lkIFNjcm9s
bGJhclRoZW1lR3RrOjp1cGRhdGVTY3JvbGxiYXJzRnJhbWVUaGlja25lc3MoKQogICAgIH0KIH0K
IAotYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6aGFzVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
Citib29sIFNjcm9sbGJhclRoZW1lR3RrOjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQogewogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGp1c3QgY2FsbGVkIGFzIGEgcGFp
bnQtdGltZSBvcHRpbWl6YXRpb24gdG8gc2VlIGlmCiAgICAgLy8gcGFpbnRpbmcgdGhlIHRodW1i
IGNhbiBiZSBza2lwcGVkLiAgV2UgZG9uJ3QgaGF2ZSB0byBiZSBleGFjdCBoZXJlLgogICAgIHJl
dHVybiB0aHVtYkxlbmd0aChzY3JvbGxiYXIpID4gMDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJU
aGVtZUd0azo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBh
cnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9v
bCkKIHsKICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uRW5kUGFydCAmJiAhbV9oYXNCYWNrQnV0
dG9uRW5kUGFydCkKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKQEAgLTExNCw3ICsxMTQsNyBA
QCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYQogICAgIHJldHVybiBJbnRSZWN0KHgsIHNjcm9sbGJh
ci0+eSgpICsgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIG1fdHJvdWdoQm9yZGVyV2lkdGggLSAoMiAq
IHNpemUuaGVpZ2h0KCkpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogfQogCi1JbnRS
ZWN0IFNjcm9sbGJhclRoZW1lR3RrOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9s
bGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0
azo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Ny
b2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIGlmIChwYXJ0ID09IEZvcndhcmRCdXR0b25T
dGFydFBhcnQgJiYgIW1faGFzRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCkKICAgICAgICAgcmV0dXJu
IEludFJlY3QoKTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3Rr
Ojpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydAog
ICAgIHJldHVybiBJbnRSZWN0KHgsIHNjcm9sbGJhci0+eSgpICsgbV90cm91Z2hCb3JkZXJXaWR0
aCArIHNpemUuaGVpZ2h0KCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLUlu
dFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwg
Ym9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBib29sKQogewogICAgIC8vIFRoZSBwYWRkaW5nIGFsb25nIHRo
ZSB0aHVtYiBtb3ZlbWVudCBheGlzIGluY2x1ZGVzIHRoZSB0cm91Z2ggYm9yZGVyCiAgICAgLy8g
cGx1cyB0aGUgc2l6ZSBvZiBzdGVwcGVyIHNwYWNpbmcgKHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBz
dGVwcGVyIGFuZApAQCAtMTgwLDcgKzE4MCw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6
OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKICAgICAgICAgICAgICAgICAg
ICB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSAoMiAqIG1vdmVtZW50QXhpc1BhZGRp
bmcpIC0gYnV0dG9uc1dpZHRoKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dGh1
bWJSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVk
VHJhY2tSZWN0KQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dGh1bWJSZWN0KFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFj
a1JlY3QpCiB7CiAgICAgSW50UmVjdCB0cmFja1JlY3QgPSBjb25zdHJhaW5UcmFja1JlY3RUb1Ry
YWNrUGllY2VzKHNjcm9sbGJhciwgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCk7CiAgICAgaW50IHRo
dW1iUG9zID0gdGh1bWJQb3NpdGlvbihzY3JvbGxiYXIpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIElu
dFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OnRodW1iUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgdW5jb25zCiAgICAgcmV0dXJuIEludFJlY3QodHJhY2tSZWN0LngoKSAr
ICh0cmFja1JlY3Qud2lkdGgoKSAtIG1fdGh1bWJGYXRuZXNzKSAvIDIsIHRyYWNrUmVjdC55KCkg
KyB0aHVtYlBvcywgbV90aHVtYkZhdG5lc3MsIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikpOwogfQog
Ci1ib29sIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3Qp
Citib29sIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYg
ZGFtYWdlUmVjdCkKIHsKICAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LT5wYWludGluZ0Rpc2FibGVk
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2MCw3ICsyNjAsNyBAQCBib29sIFNjcm9s
bGJhclRoZW1lR3RrOjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbgogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1l
R3RrOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQpCitib29sIFNjcm9sbGJhclRoZW1lR3RrOjpzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkK
IHsKICAgICByZXR1cm4gKGV2ZW50LnNoaWZ0S2V5KCkgJiYgZXZlbnQuYnV0dG9uKCkgPT0gTGVm
dEJ1dHRvbikgfHwgKGV2ZW50LmJ1dHRvbigpID09IE1pZGRsZUJ1dHRvbik7CiB9CkBAIC0yNzAs
NyArMjcwLDcgQEAgaW50IFNjcm9sbGJhclRoZW1lR3RrOjpzY3JvbGxiYXJUaGlja25lc3MoU2Ny
b2xsYmFyQ29udHJvbFNpemUpCiAgICAgcmV0dXJuIG1fdGh1bWJGYXRuZXNzICsgKG1fdHJvdWdo
Qm9yZGVyV2lkdGggKiAyKTsKIH0KIAotSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUd0azo6YnV0dG9u
U2l6ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKK0ludFNpemUgU2Nyb2xsYmFyVGhlbWVHdGs6OmJ1
dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Ny
b2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKQogICAgICAgICByZXR1
cm4gSW50U2l6ZShtX3RodW1iRmF0bmVzcywgbV9zdGVwcGVyU2l6ZSk7CkBAIC0yNzksNyArMjc5
LDcgQEAgSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUd0azo6YnV0dG9uU2l6ZShTY3JvbGxiYXIqIHNj
cm9sbGJhcikKICAgICByZXR1cm4gSW50U2l6ZShtX3N0ZXBwZXJTaXplLCBtX3RodW1iRmF0bmVz
cyk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUd0azo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9s
bGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lR3RrOjptaW5pbXVtVGh1bWJMZW5n
dGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gbV9taW5U
aHVtYkxlbmd0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9T
Y3JvbGxiYXJUaGVtZUd0ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJh
clRoZW1lR3RrLmgKaW5kZXggNDVlMDkzYjFlYzk3ZDFhZmFhMjRjNTgzMzE1NjY5MzAyZTg1Y2Q2
My4uZTczZGYyODU1MDFiNTgyNmRjMDU5YjgzYmZjM2Q5YTQxNzBkNGJhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmgKQEAgLTM3LDI5ICsz
NywyOSBAQCBwdWJsaWM6CiAgICAgU2Nyb2xsYmFyVGhlbWVHdGsoKTsKICAgICB2aXJ0dWFsIH5T
Y3JvbGxiYXJUaGVtZUd0aygpOwogCi0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xs
YmFyKikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxi
YXIqKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Ny
b2xsYmFyUGFydCwgYm9vbCk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0
KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0
cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCk7Ci0gICAgSW50UmVjdCB0aHVtYlJlY3QoU2Nyb2xs
YmFyKiwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCk7Ci0gICAgYm9vbCBw
YWludChTY3JvbGxiYXIqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VS
ZWN0KTsKLSAgICB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXIqKTsKLSAgICB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICB2b2lkIHBhaW50VGh1bWIo
R3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1
YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9u
VGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVh
bCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAg
dmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Ny
b2xsYmFyUGFydCwgYm9vbCk7CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCk7CisgICAgdmlydHVh
bCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wpOworICAgIElu
dFJlY3QgdGh1bWJSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYgdW5j
b25zdHJhaW5lZFRyYWNrUmVjdCk7CisgICAgYm9vbCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZv
aWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRo
ZW1lQ2xpZW50Kik7CisgICAgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRl
eHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIHBh
aW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFy
VGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplKTsKLSAgICB2aXJ0dWFsIEludFNpemUgYnV0
dG9uU2l6ZShTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgo
U2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKTsKIAogICAgIC8vIFRPRE86IFRoZXNlIGFyZSB0aGUgZGVmYXVsdCBHVEsr
IHZhbHVlcy4gQXQgc29tZSBwb2ludCB3ZSBzaG91bGQgcHVsbCB0aGVzZSBmcm9tIHRoZSB0aGVt
ZSBpdHNlbGYuCiAgICAgdmlydHVhbCBkb3VibGUgaW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5
KCkgeyByZXR1cm4gMC4yMDsgfQogICAgIHZpcnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1lckRl
bGF5KCkgeyByZXR1cm4gMC4wMjsgfQogICAgIHZvaWQgdXBkYXRlVGhlbWVQcm9wZXJ0aWVzKCk7
CiAgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJzRnJhbWVUaGlja25lc3MoKTsKLSAgICB2b2lkIHJl
Z2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciopOwotICAgIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJh
cihTY3JvbGxiYXIqKTsKKyAgICB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1l
Q2xpZW50Kik7CisgICAgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xp
ZW50Kik7CiAKIHByb3RlY3RlZDoKICNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMi5jcHAKaW5kZXgg
NzI5YmQxMjRkZTJiMjE4NTQ5OTdiMTk4NzYzMGNkZjg5YmVhOTEwMy4uODY2YmI4YTFkMmY3MWFh
ODY0ZWE1N2VkMzAzZjEzNjA3MmMxYzQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMi5jcHAKQEAgLTY2LDEzICs2NiwxMyBAQCB2b2lk
IFNjcm9sbGJhclRoZW1lR3RrOjp1cGRhdGVUaGVtZVByb3BlcnRpZXMoKQogICAgIHVwZGF0ZVNj
cm9sbGJhcnNGcmFtZVRoaWNrbmVzcygpOwogfQogCi1zdGF0aWMgR3RrV2lkZ2V0KiBnZXRXaWRn
ZXRGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitzdGF0aWMgR3RrV2lkZ2V0KiBn
ZXRXaWRnZXRGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsK
ICAgICBSZW5kZXJUaGVtZUd0ayogdGhlbWUgPSBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUd0ayo+
KFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS5nZXQoKSk7CiAgICAgcmV0dXJuIHNjcm9sbGJh
ci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhciA/IHRoZW1lLT5ndGtWU2Nyb2xs
YmFyKCkgOiB0aGVtZS0+Z3RrSFNjcm9sbGJhcigpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1l
R3RrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVt
ZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAg
IC8vIFBhaW50IHRoZSB0cmFjayBiYWNrZ3JvdW5kLiBJZiB0aGUgdHJvdWdoLXVuZGVyLXN0ZXBw
ZXJzIHByb3BlcnR5IGlzIHRydWUsIHRoaXMKICAgICAvLyBzaG91bGQgYmUgdGhlIGZ1bGwgc2l6
ZSBvZiB0aGUgc2Nyb2xsYmFyLCBidXQgaWYgaXMgZmFsc2UsIGl0IHNob3VsZCBvbmx5IGJlIHRo
ZQpAQCAtODcsNyArODcsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFj
a2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhcgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR1RLX1NUQVRFX0FDVElWRSwgR1RLX1NIQURPV19JTiwgInRyb3Vn
aCIpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJhckJhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQg
U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgSW50
UmVjdCBmdWxsU2Nyb2xsYmFyUmVjdCA9IEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJh
ci0+eSgpLCBzY3JvbGxiYXItPndpZHRoKCksIHNjcm9sbGJhci0+aGVpZ2h0KCkpOwogCkBAIC05
Niw3ICs5Niw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHVEtfU1RBVEVfTk9STUFMLCBHVEtfU0hBRE9XX0lOLCAic2Nyb2xsZWRfd2lu
ZG93Iik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VGh1bWIoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogewogICAgIEd0a1dpZGdldCogd2lkZ2V0ID0gZ2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKHNj
cm9sbGJhcik7CiAgICAgZ2Jvb2xlYW4gYWN0aXZhdGVTbGlkZXI7CkBAIC0xMjksNyArMTI5LDcg
QEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmEKICAgICB3aWRnZXRDb250ZXh0Lmd0a1BhaW50U2xp
ZGVyKHNsaWRlclJlY3QsIHdpZGdldCwgc3RhdGVUeXBlLCBzaGFkb3dUeXBlLCAic2xpZGVyIiwg
b3JpZW50YXRpb24pOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRvbihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRS
ZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpw
YWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsK
ICAgICAvLyBUaGUgYnV0dG9ucyB3aWxsIGJlIGRpc2FibGVkIGlmIHRoZSB0aHVtYiBpcyBhcyB0
aGUgYXBwcm9wcmlhdGUgZXh0cmVtZS4KICAgICBHdGtTaGFkb3dUeXBlIHNoYWRvd1R5cGUgPSBH
VEtfU0hBRE9XX09VVDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9T
Y3JvbGxiYXJUaGVtZUd0azMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9s
bGJhclRoZW1lR3RrMy5jcHAKaW5kZXggNGMzM2U2NmRiOGZmZWZjM2Y0MjM0NmNhZDBlZWU2N2Vl
NmNkNDVmZS4uOTc0OWM1NDNmM2RkZjZiMzE1ZWZmYjk4YTc1OWZmNWIwMDJkNzBjZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMy5jcHAK
QEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgYXBwbHlTY3JvbGxiYXJTdHlsZUNvbnRleHRD
bGFzc2VzKEd0a1N0eWxlQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmEKICAgICBndGtfc3R5bGVf
Y29udGV4dF9hZGRfY2xhc3MoY29udGV4dCwgb3JpZW50YXRpb24gPT0gVmVydGljYWxTY3JvbGxi
YXIgPyAgR1RLX1NUWUxFX0NMQVNTX1ZFUlRJQ0FMIDogR1RLX1NUWUxFX0NMQVNTX0hPUklaT05U
QUwpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dyb3VuZChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIFBhaW50IHRoZSB0cmFjayBiYWNrZ3Jv
dW5kLiBJZiB0aGUgdHJvdWdoLXVuZGVyLXN0ZXBwZXJzIHByb3BlcnR5IGlzIHRydWUsIHRoaXMK
ICAgICAvLyBzaG91bGQgYmUgdGhlIGZ1bGwgc2l6ZSBvZiB0aGUgc2Nyb2xsYmFyLCBidXQgaWYg
aXMgZmFsc2UsIGl0IHNob3VsZCBvbmx5IGJlIHRoZQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFNj
cm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhcgogICAgIGd0a19zdHlsZV9jb250ZXh0X3Jlc3RvcmUobV9jb250ZXh0
KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5k
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNj
cm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGd0a19z
dHlsZV9jb250ZXh0X3NhdmUobV9jb250ZXh0KTsKIApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQg
U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFNjcm9sCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShtX2NvbnRl
eHQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qp
Cit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKICAgICBndGtfc3R5bGVfY29udGV4dF9zYXZlKG1fY29udGV4dCk7CiAKQEAgLTEyNiw3
ICsxMjYsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYQogICAgIGd0a19zdHlsZV9jb250ZXh0
X3Jlc3RvcmUobV9jb250ZXh0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRC
dXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVt
ZUd0azo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBh
cnQpCiB7CiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2F2ZShtX2NvbnRleHQpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oCmluZGV4IDEzZDQ0
YzIzZDNiMzM2MjM2ZmI2NDA5OGZhODcwYWVjOGM3YjU2NTguLmIyY2Y0MGI0MWU4MTE3YzNhOGUy
Y2E4MTUyMjMyYTZlMmM5NjM0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxiYXJUaGVtZU1hYy5oCkBAIC0zOSwxMCArMzksMTAgQEAgcHVibGljOgogCiAgICAg
dm9pZCBwcmVmZXJlbmNlc0NoYW5nZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFi
bGVkU3RhdGUoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUVuYWJsZWRTdGF0
ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQotICAg
IHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXIqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgZGFtYWdlUmVjdCk7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNr
bmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpOwpAQCAtNTYsOCAr
NTYsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQg
YnV0dG9uc1BsYWNlbWVudCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Ny
b2xsYmFyKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFy
KFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxi
YXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNj
cm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKICAgICB2b2lkIHNldE5ld1BhaW50ZXJGb3JTY3JvbGxi
YXIoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFpbnRlcik7CiAgICAgU2Nyb2xsYmFyUGFpbnRlciBw
YWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciopOwpAQCAtNjYsMTkgKzY2LDE5IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgdm9pZCBzZXRJc0N1cnJlbnRseURyYXdpbmdJbnRvTGF5ZXIoYm9vbCk7
CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKTsK
LSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBib29s
IGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
VGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNr
QnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFs
c2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBT
Y3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVj
dCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0
dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxi
YXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3
YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wg
cGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CiAKICAgICB2aXJ0dWFsIGlu
dCBtYXhPdmVybGFwQmV0d2VlblBhZ2VzKCkgeyByZXR1cm4gNDA7IH0KIAotICAgIHZpcnR1YWwg
aW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5p
bXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKICAgICAKLSAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1
bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBi
b29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJhZ0RvY3VtZW50SW5z
dGVhZE9mVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmKTsKICAgICBpbnQgc2Nyb2xsYmFyUGFydFRvSElQcmVzc2VkU3RhdGUoU2Nyb2xsYmFyUGFy
dCk7CiAKICNpZiAhUExBVEZPUk0oQ0hST01JVU0pICYmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykgJiYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCmluZGV4IGNjNzQ4MjQ1Nzc4NTI5M2QxZDU3
OGI3ODJkODFjMjdmYWJiMjU5MjQuLjNiOTAyMWFkZWE1NWRjOGFmY2Q2NmJkZGY1NTc2MTI0MDlk
OTk3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJU
aGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhl
bWVNYWMubW0KQEAgLTUwLDcgKzUwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBIYXNoTWFwPFNjcm9sbGJhciosIFJldGFpblB0
cjxTY3JvbGxiYXJQYWludGVyPiA+IFNjcm9sbGJhclBhaW50ZXJNYXA7Cit0eXBlZGVmIEhhc2hN
YXA8U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFpbnRlcj4gPiBT
Y3JvbGxiYXJQYWludGVyTWFwOwogCiBzdGF0aWMgU2Nyb2xsYmFyUGFpbnRlck1hcCogc2Nyb2xs
YmFyTWFwKCkKIHsKQEAgLTE2Miw3ICsxNjIsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVBcnJvd1Bs
YWNlbWVudCgpCiAgICAgfQogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpyZWdpc3RlclNj
cm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnJl
Z2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAg
aWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKSB7CiAgICAgICAgIGJvb2wgaXNI
b3Jpem9udGFsID0gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxi
YXI7CkBAIC0xNzUsMTkgKzE3NSwxOSBAQCB2b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpyZWdpc3Rl
clNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICB9CiB9CiAKLXZvaWQgU2Nyb2xs
YmFyVGhlbWVNYWM6OnVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2
b2lkIFNjcm9sbGJhclRoZW1lTWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgc2Nyb2xsYmFyTWFwKCktPnJlbW92ZShzY3JvbGxi
YXIpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xs
YmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYWludGVyIG5ld1BhaW50ZXIpCit2
b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhaW50ZXIgbmV3UGFpbnRlcikKIHsK
ICAgICBzY3JvbGxiYXJNYXAoKS0+c2V0KHNjcm9sbGJhciwgbmV3UGFpbnRlcik7CiAgICAgdXBk
YXRlRW5hYmxlZFN0YXRlKHNjcm9sbGJhcik7CiAgICAgdXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlKHNjcm9sbGJhcik7CiB9CiAKLVNjcm9sbGJhclBhaW50ZXIgU2Nyb2xsYmFyVGhlbWVNYWM6
OnBhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitTY3JvbGxiYXJQYWlu
dGVyIFNjcm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNjcm9sbGJhck1hcCgpLT5nZXQoc2Ny
b2xsYmFyKS5nZXQoKTsKIH0KQEAgLTI0OCwxMCArMjQ4LDEwIEBAIGJvb2wgU2Nyb2xsYmFyVGhl
bWVNYWM6OnVzZXNPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlKFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRl
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7
CiAgICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVyID0gcGFpbnRlckZvclNjcm9sbGJhcihzY3Jv
bGxiYXIpOwotICAgIHN3aXRjaCAoc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxi
YXJPdmVybGF5U3R5bGUoKSkgeworICAgIHN3aXRjaCAoc2Nyb2xsYmFyLT5zY3JvbGxiYXJPdmVy
bGF5U3R5bGUoKSkgewogICAgIGNhc2UgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGVmYXVsdDoKICAg
ICAgICAgW3BhaW50ZXIgc2V0S25vYlN0eWxlOk5TU2Nyb2xsZXJLbm9iU3R5bGVEZWZhdWx0XTsK
ICAgICAgICAgYnJlYWs7CkBAIC0yNzksNyArMjc5LDcgQEAgU2Nyb2xsYmFyQnV0dG9uc1BsYWNl
bWVudCBTY3JvbGxiYXJUaGVtZU1hYzo6YnV0dG9uc1BsYWNlbWVudCgpIGNvbnN0CiAgICAgcmV0
dXJuIGdCdXR0b25QbGFjZW1lbnQ7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1
dHRvbnMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNC
dXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNj
cm9sbGJhci0+ZW5hYmxlZCgpICYmIGJ1dHRvbnNQbGFjZW1lbnQoKSAhPSBTY3JvbGxiYXJCdXR0
b25zTm9uZQogICAgICAgICAgICAgICYmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9y
aXpvbnRhbFNjcm9sbGJhcgpAQCAtMjg3LDcgKzI4Nyw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVN
YWM6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgICAgICAgICAgOiBzY3Jv
bGxiYXItPmhlaWdodCgpKSA+PSAyICogKGNSZWFsQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29u
dHJvbFNpemUoKV0gLSBjQnV0dG9uSGl0SW5zZXRbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSk7
CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhcikKIHsKICAgICBpbnQgbWluTGVuZ3RoRm9yVGh1bWI7CiAgICAgaWYgKGlz
U2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKSB7CkBAIC0zMTksNyArMzE5LDcgQEAgc3Rh
dGljIEludFJlY3QgYnV0dG9uUmVwYWludFJlY3QoY29uc3QgSW50UmVjdCYgYnV0dG9uUmVjdCwg
U2Nyb2xsYmFyT3JpZW50YXRpb24KICAgICByZXR1cm4gcGFpbnRSZWN0OwogfQogCi1JbnRSZWN0
IFNjcm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwg
U2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZU1hYzo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Ny
b2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQogewogICAgIEludFJlY3QgcmVzdWx0Owog
ICAgIApAQCAtMzUzLDcgKzM1Myw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmJhY2tC
dXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRv
blJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWlu
dGluZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWlu
dGluZykKIHsKICAgICBJbnRSZWN0IHJlc3VsdDsKICAgICAKQEAgLTM5Myw3ICszOTMsNyBAQCBJ
bnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUludFJlY3Qg
U2Nyb2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCBw
YWludGluZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQogewogICAgIGlmIChwYWludGlu
ZyB8fCAhaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICByZXR1cm4gc2Nyb2xsYmFyLT5m
cmFtZVJlY3QoKTsKQEAgLTQzMCw3ICs0MzAsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFj
Ojp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcpCiAgICAgcmV0
dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpICsgc3RhcnRXaWR0aCwg
dGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0gdG90YWxXaWR0aCk7CiB9CiAKLWludCBT
Y3JvbGxiYXJUaGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFy
KQoraW50IFNjcm9sbGJhclRoZW1lTWFjOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZh
aWxhYmxlKCkpCiAgICAgICAgIHJldHVybiBbc2Nyb2xsYmFyTWFwKCktPmdldChzY3JvbGxiYXIp
LmdldCgpIGtub2JNaW5MZW5ndGhdOwpAQCAtNDM4LDcgKzQzOCw3IEBAIGludCBTY3JvbGxiYXJU
aGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgICAg
ICByZXR1cm4gY1RodW1iTWluTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV07CiB9CiAK
LWJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lTWFjOjpz
aG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldnQpCiB7CiAgICAgaWYgKGV2dC5idXR0b24oKSAhPSBMZWZ0QnV0dG9uKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00NDcsNyArNDQ3LDcgQEAgYm9vbCBTY3JvbGxiYXJU
aGVtZU1hYzo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQKICAgICByZXR1cm4gZXZ0LmFsdEtleSgpOwogfQogCi1ib29sIFNjcm9sbGJhclRo
ZW1lTWFjOjpzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXIqLCBjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQorYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6c2hv
dWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogewogICAgIHJldHVybiBldmVudC5hbHRLZXko
KTsKIH0KQEAgLTQ3MCw3ICs0NzAsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVNYWM6OnNjcm9sbGJh
clBhcnRUb0hJUHJlc3NlZFN0YXRlKFNjcm9sbGJhclBhcnQgcGFydCkKICAgICB9CiB9CiAKLXZv
aWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXIqIHNjcm9s
bGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlB
UElBdmFpbGFibGUoKSkKICAgICAgICAgW3Njcm9sbGJhck1hcCgpLT5nZXQoc2Nyb2xsYmFyKS5n
ZXQoKSBzZXRFbmFibGVkOnNjcm9sbGJhci0+ZW5hYmxlZCgpXTsKQEAgLTQ5OSw3ICs0OTksNyBA
QCBzdGF0aWMgdm9pZCBzY3JvbGxiYXJQYWludGVyUGFpbnQoU2Nyb2xsYmFyUGFpbnRlciBzY3Jv
bGxiYXJQYWludGVyLCBib29sIGVuYWJsZQogfQogCiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQot
Ym9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Ny
b2xsYmFyVGhlbWVNYWM6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsKICAg
ICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpIHsKICAgICAgICAgZmxvYXQg
dmFsdWUgPSAwOwpAQCAtNTcwLDcgKzU3MCw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnBh
aW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvCiAg
ICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAgICAgdHJhY2tJbmZvLmVuYWJsZVN0
YXRlID0ga1RoZW1lVHJhY2tEaXNhYmxlZDsKICAgICBlbHNlCi0gICAgICAgIHRyYWNrSW5mby5l
bmFibGVTdGF0ZSA9IHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSA/IGtU
aGVtZVRyYWNrQWN0aXZlIDoga1RoZW1lVHJhY2tJbmFjdGl2ZTsKKyAgICAgICAgdHJhY2tJbmZv
LmVuYWJsZVN0YXRlID0gc2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkgPyBrVGhl
bWVUcmFja0FjdGl2ZSA6IGtUaGVtZVRyYWNrSW5hY3RpdmU7CiAKICAgICBpZiAoaGFzVGh1bWIo
c2Nyb2xsYmFyKSkKICAgICAgICAgdHJhY2tJbmZvLmF0dHJpYnV0ZXMgfD0ga1RoZW1lVHJhY2tT
aG93VGh1bWI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9s
bGJhclRoZW1lTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJh
clRoZW1lTW9jay5jcHAKaW5kZXggNWQyYmMzZWMwODk3OGUwMzczN2ZiYTczOTViOGI4Y2U3NDYw
ZDQ2NC4uNmRlOTFjY2I4MTkyMTA0MGMwODQ3OGMxZWU1Njc3ZGRlNDM3NDk1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcApA
QCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbnQgY1Njcm9s
bGJhclRoaWNrbmVzc1tdID0geyAxNSwgMTEgfTsKIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1v
Y2s6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKK0ludFJlY3QgU2Nyb2xs
YmFyVGhlbWVNb2NrOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwg
Ym9vbCkKIHsKICAgICByZXR1cm4gc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKTsKIH0KQEAgLTQyLDEy
ICs0MiwxMiBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpzY3JvbGxiYXJUaGlja25lc3MoU2Ny
b2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiAgICAgcmV0dXJuIGNTY3JvbGxiYXJUaGlj
a25lc3NbY29udHJvbFNpemVdOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRU
cmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgdHJhY2tSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6
OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdHJhY2tSZWN0KQogewogICAg
IGNvbnRleHQtPmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xsYmFyLT5lbmFibGVkKCkgPyBDb2xv
cjo6bGlnaHRHcmF5IDogQ29sb3IoMHhGRkUwRTBFMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwog
fQogCi12b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3Qp
Cit2b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRo
dW1iUmVjdCkKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KHRodW1iUmVjdCwgQ29sb3I6OmRhcmtHcmF5LCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFy
VGhlbWVNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1l
TW9jay5oCmluZGV4IGUyNTQ4NDIyYTI4ZjVlNzIzZTQzNTNmOGY0NTc2NTI1M2NiNjg1YmIuLjYz
MzM4NDFhYjc5NmI5ZGMyMzNmM2Y2M2ViODAwYWJmYTdiMGJiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaApAQCAtMzYsMTUgKzM2
LDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xs
YmFyQ29udHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKTsKIAogcHJvdGVjdGVkOgotICAgIHZp
cnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikg
eyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNj
cm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgLypwYWludGluZyovID0gZmFsc2UpIHsgcmV0
dXJuIEludFJlY3QoKTsgfQotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChT
Y3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7IHJl
dHVybiBJbnRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJh
ciosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0
b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCAvKnBhaW50
aW5nKi8gPSBmYWxzZSkgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmlydHVhbCBJbnRSZWN0
IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwg
Ym9vbCAvKnBhaW50aW5nKi8gPSBmYWxzZSkgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmly
dHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRp
bmcgPSBmYWxzZSk7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5k
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNz
Q29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZp
cnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgY29uc3QgSW50UmVjdCYpOwogICAgIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wg
aXNNb2NrVGhlbWUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuY3BwCmluZGV4IGUzMjQzZWNmYTg5NzliOWE2
ODFlMTU5YmRlZTlhOWIxNTljNjc0M2MuLmQ0YjU4YjFiMGU1YWYxNzBmOTZlZjgzNjRiNjliNDg0
YTM2MjIyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJh
clRoZW1lUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRo
ZW1lUXQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIFNjcm9sbGJhclBhcnQgc2Nyb2xs
YmFyUGFydChjb25zdCBRU3R5bGU6OlN1YkNvbnRyb2wmIHNjKQogICAgIHJldHVybiBOb1BhcnQ7
CiB9CiAKLXN0YXRpYyBRU3R5bGVPcHRpb25TbGlkZXIqIHN0eWxlT3B0aW9uU2xpZGVyKFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBRV2lkZ2V0KiB3aWRnZXQgPSAwKQorc3RhdGljIFFTdHlsZU9wdGlv
blNsaWRlciogc3R5bGVPcHRpb25TbGlkZXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgUVdpZGdldCogd2lkZ2V0ID0gMCkKIHsKICAgICBzdGF0aWMgUVN0eWxlT3B0aW9uU2xpZGVy
IG9wdDsKICAgICBpZiAod2lkZ2V0KQpAQCAtMTU1LDcgKzE1NSw3IEBAIHN0YXRpYyBRU3R5bGVP
cHRpb25TbGlkZXIqIHN0eWxlT3B0aW9uU2xpZGVyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBRV2lk
Z2V0KiB3aWRnCiAgICAgcmV0dXJuICZvcHQ7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVRdDo6
cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZVF0Ojpw
YWludChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsKICAgICBpZiAoZ3Jh
cGhpY3NDb250ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgc2Nyb2xsYmFy
LT5pbnZhbGlkYXRlUmVjdChkYW1hZ2VSZWN0KTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIFNj
cm9sbGJhclRoZW1lUXQ6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udAogICAgIHJldHVybiB0cnVlOwogfQogCi1TY3JvbGxiYXJQYXJ0IFNj
cm9sbGJhclRoZW1lUXQ6OmhpdFRlc3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZ0KQorU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZVF0OjpoaXRU
ZXN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZ0KQogewogICAgIFFTdHlsZU9wdGlvblNsaWRlciogb3B0ID0gc3R5bGVPcHRpb25T
bGlkZXIoc2Nyb2xsYmFyKTsKICAgICBjb25zdCBRUG9pbnQgcG9zID0gc2Nyb2xsYmFyLT5jb252
ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpOwpAQCAtMjAyLDEzICsyMDIs
MTMgQEAgU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZVF0OjpoaXRUZXN0KFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXMKICAgICByZXR1cm4gc2Nyb2xsYmFyUGFydChz
Yyk7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVRdDo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3Jv
bGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhl
bWVRdDo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIC8vIE1pZGRsZSBjbGljayBjZW50ZXJzIHNs
aWRlciB0aHVtYiAoaWYgc3VwcG9ydGVkKS4KICAgICByZXR1cm4gc3R5bGUoKS0+c3R5bGVIaW50
KFFTdHlsZTo6U0hfU2Nyb2xsQmFyX01pZGRsZUNsaWNrQWJzb2x1dGVQb3NpdGlvbikgJiYgZXZ0
LmJ1dHRvbigpID09IE1pZGRsZUJ1dHRvbjsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVF0Ojpp
bnZhbGlkYXRlUGFydChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCkKK3ZvaWQg
U2Nyb2xsYmFyVGhlbWVRdDo6aW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCkKIHsKICAgICAvLyBGSVhNRTogRG8gbW9yZSBwcmVjaXNl
IGludmFsaWRhdGlvbi4KICAgICBzY3JvbGxiYXItPmludmFsaWRhdGUoKTsKQEAgLTIyNCw3ICsy
MjQsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVRdDo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJh
ckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogICAgIHJldHVybiBzdHlsZSgpLT5waXhlbE1ldHJp
YyhRU3R5bGU6OlBNX1Njcm9sbEJhckV4dGVudCwgJm8sIDApOwogfQogCi1pbnQgU2Nyb2xsYmFy
VGhlbWVRdDo6dGh1bWJQb3NpdGlvbihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxi
YXJUaGVtZVF0Ojp0aHVtYlBvc2l0aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIp
CiB7CiAgICAgaWYgKHNjcm9sbGJhci0+ZW5hYmxlZCgpKSB7CiAgICAgICAgIGZsb2F0IHBvcyA9
IChmbG9hdClzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSAqICh0cmFja0xlbmd0aChzY3JvbGxiYXIp
IC0gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSkgLyBzY3JvbGxiYXItPm1heGltdW0oKTsKQEAgLTIz
MywyMSArMjMzLDIxIEBAIGludCBTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYlBvc2l0aW9uKFNjcm9s
bGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiAwOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVR
dDo6dGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVR
dDo6dGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBR
U3R5bGVPcHRpb25TbGlkZXIqIG9wdCA9IHN0eWxlT3B0aW9uU2xpZGVyKHNjcm9sbGJhcik7CiAg
ICAgSW50UmVjdCB0aHVtYiA9IHN0eWxlKCktPnN1YkNvbnRyb2xSZWN0KFFTdHlsZTo6Q0NfU2Ny
b2xsQmFyLCBvcHQsIFFTdHlsZTo6U0NfU2Nyb2xsQmFyU2xpZGVyLCAwKTsKICAgICByZXR1cm4g
c2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyB0aHVtYi53
aWR0aCgpIDogdGh1bWIuaGVpZ2h0KCk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZVF0Ojp0cmFj
a1Bvc2l0aW9uKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lUXQ6OnRy
YWNrUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBRU3R5
bGVPcHRpb25TbGlkZXIqIG9wdCA9IHN0eWxlT3B0aW9uU2xpZGVyKHNjcm9sbGJhcik7CiAgICAg
SW50UmVjdCB0cmFjayA9IHN0eWxlKCktPnN1YkNvbnRyb2xSZWN0KFFTdHlsZTo6Q0NfU2Nyb2xs
QmFyLCBvcHQsIFFTdHlsZTo6U0NfU2Nyb2xsQmFyR3Jvb3ZlLCAwKTsKICAgICByZXR1cm4gc2Ny
b2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyB0cmFjay54KCkg
LSBzY3JvbGxiYXItPngoKSA6IHRyYWNrLnkoKSAtIHNjcm9sbGJhci0+eSgpOwogfQogCi1pbnQg
U2Nyb2xsYmFyVGhlbWVRdDo6dHJhY2tMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQg
U2Nyb2xsYmFyVGhlbWVRdDo6dHJhY2tMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhcikKIHsKICAgICBRU3R5bGVPcHRpb25TbGlkZXIqIG9wdCA9IHN0eWxlT3B0aW9uU2xpZGVy
KHNjcm9sbGJhcik7CiAgICAgSW50UmVjdCB0cmFjayA9IHN0eWxlKCktPnN1YkNvbnRyb2xSZWN0
KFFTdHlsZTo6Q0NfU2Nyb2xsQmFyLCBvcHQsIFFTdHlsZTo6U0NfU2Nyb2xsQmFyR3Jvb3ZlLCAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1l
UXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuaAppbmRl
eCBjZjQ4ODJkYTIwM2JiZjBmYjdjYzY5ZTdjM2UxYzFmZmRkODFmNWViLi4wMzM3YmY4MGNjZjY0
NmQxOGU4ZjA3YzRmZTVhY2JhM2FhOTk1MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5oCkBAIC00MCwxOSArNDAsMTkgQEAgY2xhc3MgU2Nyb2xs
YmFyVGhlbWVRdCA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZSB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+U2Nyb2xsYmFyVGhlbWVRdCgpOwogCi0gICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJh
ciosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZp
cnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9s
bENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29y
bmVyUmVjdCk7CiAKLSAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgaGl0VGVzdChTY3JvbGxiYXIq
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQg
aGl0VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
OwogCi0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9u
VGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQ
YXJ0KTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBTY3JvbGxiYXJQYXJ0KTsKIAotICAgIHZpcnR1YWwgaW50IHRodW1iUG9zaXRpb24oU2Ny
b2xsYmFyKik7Ci0gICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7Ci0gICAg
dmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0
cmFja0xlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNj
cm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJh
clRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqKTsKIAogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxi
YXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmNwcAppbmRleCAzNDNiYmIy
ODBlZDZhZjg0OGY1MWNjMDBlZDk4ZjMxZjdlMTdlMjQ4Li4xY2M1Mzg1ZTE4N2EyMmVhZjFiMDU1
ZTM0YmUwZmY2NDM4OTI5YjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHAKQEAgLTEwNCwxNCArMTA0LDE0IEBAIGludCBT
Y3JvbGxiYXJUaGVtZVNhZmFyaTo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xT
aXplIGNvbnRyb2xTaXplKQogICAgIHJldHVybiBjU2Nyb2xsYmFyVGhpY2tuZXNzW2NvbnRyb2xT
aXplXTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzQnV0dG9ucyhTY3JvbGxi
YXIqIHNjcm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Omhhc0J1dHRvbnMoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gc2Nyb2xsYmFyLT5l
bmFibGVkKCkgJiYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xs
YmFyID8gCiAgICAgICAgICAgICAgc2Nyb2xsYmFyLT53aWR0aCgpIDogCiAgICAgICAgICAgICAg
c2Nyb2xsYmFyLT5oZWlnaHQoKSkgPj0gMiAqIChjUmVhbEJ1dHRvbkxlbmd0aFtzY3JvbGxiYXIt
PmNvbnRyb2xTaXplKCldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJhci0+Y29udHJvbFNpemUo
KV0pOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpoYXNUaHVtYihTY3JvbGxiYXIq
IHNjcm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Omhhc1RodW1iKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZW5hYmxl
ZCgpICYmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/
IAogICAgICAgICAgICAgIHNjcm9sbGJhci0+d2lkdGgoKSA6IApAQCAtMTM0LDcgKzEzNCw3IEBA
IHN0YXRpYyBJbnRSZWN0IGJ1dHRvblJlcGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIGJ1dHRvblJl
Y3QsIFNjcm9sbGJhck9yaWVudGF0aW9uCiAgICAgcmV0dXJuIHBhaW50UmVjdDsKIH0KIAotSW50
UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykKK0ludFJlY3QgU2Nyb2xs
YmFyVGhlbWVTYWZhcmk6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykKIHsKICAgICBJbnRSZWN0
IHJlc3VsdDsKIApAQCAtMTUyLDcgKzE1Miw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZh
cmk6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6Zm9y
d2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwg
Ym9vbCBwYWludGluZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmZvcndhcmRCdXR0
b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFy
dCwgYm9vbCBwYWludGluZykKIHsKICAgICBJbnRSZWN0IHJlc3VsdDsKICAgICAKQEAgLTE4MSw3
ICsxODEsNyBAQCBzdGF0aWMgSW50UmVjdCB0cmFja1JlcGFpbnRSZWN0KGNvbnN0IEludFJlY3Qm
IHRyYWNrUmVjdCwgU2Nyb2xsYmFyT3JpZW50YXRpb24gbwogICAgIHJldHVybiBwYWludFJlY3Q7
CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnRyYWNrUmVjdChTY3JvbGxiYXIq
IHNjcm9sbGJhciwgYm9vbCBwYWludGluZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6
OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5n
KQogewogICAgIGlmIChwYWludGluZyB8fCAhaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAg
ICByZXR1cm4gc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKTsKQEAgLTE5MywzNiArMTkzLDM2IEBAIElu
dFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgYm9vbCBwYWludGluZykKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Ny
b2xsYmFyLT55KCkgKyBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0sIHRo
aWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIDIgKiBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJh
ci0+Y29udHJvbFNpemUoKV0pOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Om1pbmlt
dW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVNh
ZmFyaTo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIp
CiB7CiAgICAgcmV0dXJuIGNUaHVtYk1pbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCld
OwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpzaG91bGRDZW50ZXJPblRodW1iKFNj
cm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJU
aGVtZVNhZmFyaTo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIHJldHVybiBldnQuc2hpZnRLZXko
KSAmJiBldnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbjsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCit2
b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgdHJhY2tSZWN0KQogewogICAgIGlmICghU2FmYXJpVGhlbWVMaWJyYXJ5
KCkpCiAgICAgICAgIHJldHVybjsKICAgICBOU0NvbnRyb2xTaXplIHNpemUgPSBzY3JvbGxiYXIt
PmNvbnRyb2xTaXplKCkgPT0gU21hbGxTY3JvbGxiYXIgPyBOU1NtYWxsQ29udHJvbFNpemUgOiBO
U1JlZ3VsYXJDb250cm9sU2l6ZTsKICAgICBUaGVtZUNvbnRyb2xTdGF0ZSBzdGF0ZSA9IDA7Ci0g
ICAgaWYgKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSkKKyAgICBpZiAo
c2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAgICAgICAgIHN0YXRlIHw9IEFj
dGl2ZVN0YXRlOwogICAgIGlmIChoYXNCdXR0b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHN0YXRl
IHw9IEVuYWJsZWRTdGF0ZTsKICAgICBwYWludFRoZW1lUGFydChzY3JvbGxiYXItPm9yaWVudGF0
aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIgPyBWU2Nyb2xsVHJhY2tQYXJ0IDogSFNjcm9sbFRy
YWNrUGFydCwgZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgdHJhY2tSZWN0LCBz
aXplLCBzdGF0ZSk7IAogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludEJ1dHRv
bihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgU2Ny
b2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBi
dXR0b25SZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgaWYgKCFTYWZhcmlUaGVtZUxp
YnJhcnkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIE5TQ29udHJvbFNpemUgc2l6ZSA9IHNjcm9s
bGJhci0+Y29udHJvbFNpemUoKSA9PSBTbWFsbFNjcm9sbGJhciA/IE5TU21hbGxDb250cm9sU2l6
ZSA6IE5TUmVndWxhckNvbnRyb2xTaXplOwogICAgIFRoZW1lQ29udHJvbFN0YXRlIHN0YXRlID0g
MDsKLSAgICBpZiAoc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5pc0FjdGl2ZSgpKQorICAg
IGlmIChzY3JvbGxiYXItPmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSkKICAgICAgICAgc3RhdGUg
fD0gQWN0aXZlU3RhdGU7CiAgICAgaWYgKGhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkKICAgICAgICAg
c3RhdGUgfD0gRW5hYmxlZFN0YXRlOwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgdm9pZCBTY3JvbGxi
YXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIFNjcm9sbGIKICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uUmVjdCwgc2l6ZSwgc3Rh
dGUpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludFRodW1iKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50
UmVjdCYgdGh1bWJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUaHVtYihH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQogewogICAgIGlmICghU2FmYXJpVGhl
bWVMaWJyYXJ5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBOU0NvbnRyb2xTaXplIHNpemUgPSBz
Y3JvbGxiYXItPmNvbnRyb2xTaXplKCkgPT0gU21hbGxTY3JvbGxiYXIgPyBOU1NtYWxsQ29udHJv
bFNpemUgOiBOU1JlZ3VsYXJDb250cm9sU2l6ZTsKICAgICBUaGVtZUNvbnRyb2xTdGF0ZSBzdGF0
ZSA9IDA7Ci0gICAgaWYgKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSkK
KyAgICBpZiAoc2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAgICAgICAgIHN0
YXRlIHw9IEFjdGl2ZVN0YXRlOwogICAgIGlmIChoYXNUaHVtYihzY3JvbGxiYXIpKQogICAgICAg
ICBzdGF0ZSB8PSBFbmFibGVkU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5oCmluZGV4IGYwMzkzNzllYTQ0NzA4ZThiNWI3NWY5
NjA1NTMyZmUxMWQ2MjY1OTIuLmY0MjdiMTkwZmQ2NzY2NTIxNTY3NTY2Y2I2Y2JjNGRmZTQzZDk5
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVt
ZVNhZmFyaS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVt
ZVNhZmFyaS5oCkBAIC00MSwyMCArNDEsMjAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJvdGVjdGVk
OgotICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwg
Ym9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhT
Y3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxi
YXJUaGVtZUNsaWVudCopOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNj
cm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmly
dHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQs
IGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChT
Y3JvbGxiYXIqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBi
YWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wg
cGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZh
bHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKIAotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVt
Ykxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2Vu
dGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tC
YWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3Qg
SW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJh
clRoZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVt
ZVdpbi5jcHAKaW5kZXggZDM2MzQxMDY4NDg3ZmYxYjc4Njk3NjhlOWQ1ZjZiMmY0ODk4MWFhNS4u
NTY0NDI5N2Q3ZjI3MGM1MGM3YTI4ZWYzYjFlMjRhY2YxZDEyNzllNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwCkBAIC0xMzAsMTIg
KzEzMCwxMiBAQCBib29sIFNjcm9sbGJhclRoZW1lV2luOjppbnZhbGlkYXRlT25Nb3VzZUVudGVy
RXhpdCgpCiAgICAgcmV0dXJuIHJ1bm5pbmdWaXN0YTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVt
ZVdpbjo6aGFzVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1l
V2luOjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJl
dHVybiB0aHVtYkxlbmd0aChzY3JvbGxiYXIpID4gMDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJU
aGVtZVdpbjo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBh
cnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OmJhY2tCdXR0b25SZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9v
bCkKIHsKICAgICAvLyBXaW5kb3dzIGp1c3QgaGFzIHNpbmdsZSBhcnJvd3MuCiAgICAgaWYgKHBh
cnQgPT0gQmFja0J1dHRvbkVuZFBhcnQpCkBAIC0xNTQsNyArMTU0LDcgQEAgSW50UmVjdCBTY3Jv
bGxiYXJUaGVtZVdpbjo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9s
bGJhclBhcnQgcGEKICAgICAgICAgICAgICAgICAgICB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVp
Z2h0KCkgPCAyICogdGhpY2tuZXNzID8gc2Nyb2xsYmFyLT5oZWlnaHQoKSAvIDIgOiB0aGlja25l
c3MpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpmb3J3YXJkQnV0dG9uUmVjdChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBT
Y3JvbGxiYXJUaGVtZVdpbjo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIC8vIFdpbmRvd3Mg
anVzdCBoYXMgc2luZ2xlIGFycm93cy4KICAgICBpZiAocGFydCA9PSBGb3J3YXJkQnV0dG9uU3Rh
cnRQYXJ0KQpAQCAtMTc1LDcgKzE3NSw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OmZv
cndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAg
cmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpICsgc2Nyb2xsYmFy
LT5oZWlnaHQoKSAtIGgsIHRoaWNrbmVzcywgaCk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhl
bWVXaW46OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKK0ludFJlY3QgU2Ny
b2xsYmFyVGhlbWVXaW46OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBib29sKQogewogICAgIGludCB0aGlja25lc3MgPSBzY3JvbGxiYXJUaGlja25lc3MoKTsKICAg
ICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsK
QEAgLTE4OCwxMiArMTg4LDEyIEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OnRyYWNrUmVj
dChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxi
YXItPngoKSwgc2Nyb2xsYmFyLT55KCkgKyB0aGlja25lc3MsIHRoaWNrbmVzcywgc2Nyb2xsYmFy
LT5oZWlnaHQoKSAtIDIgKiB0aGlja25lc3MpOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lV2lu
OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAg
IHJldHVybiBldnQuc2hpZnRLZXkoKSAmJiBldnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbjsKIH0K
IAotYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBT
Y3JvbGxiYXJUaGVtZVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAg
ICAgLy8gRmluZCB0aGUgcmVjdCB3aXRoaW4gd2hpY2ggd2Ugc2hvdWxkbid0IHNuYXAsIGJ5IGV4
cGFuZGluZyB0aGUgdHJhY2sgcmVjdAogICAgIC8vIGluIGJvdGggZGltZW5zaW9ucy4KQEAgLTIx
MSwxNCArMjExLDE0IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9E
cmFnT3JpZ2luKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBQCiAgICAgcmV0dXJuICFyZWN0
LmNvbnRhaW5zKG1vdXNlUG9zaXRpb24pOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lV2luOjpw
YWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6
cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIEp1
c3QgYXNzdW1lIGEgZm9yd2FyZCB0cmFjayBwYXJ0LiAgV2Ugb25seSBwYWludCB0aGUgdHJhY2sg
YXMgYSBzaW5nbGUgcGllY2Ugd2hlbiB0aGVyZSBpcyBubyB0aHVtYi4KICAgICBpZiAoIWhhc1Ro
dW1iKHNjcm9sbGJhcikpCiAgICAgICAgIHBhaW50VHJhY2tQaWVjZShjb250ZXh0LCBzY3JvbGxi
YXIsIHJlY3QsIEZvcndhcmRUcmFja1BhcnQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lV2lu
OjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKK3Zv
aWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJl
Y3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCiB7CiAgICAgY2hlY2tBbmRJbml0U2Nyb2xsYmFy
VGhlbWUoKTsKIApAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBh
aW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2NyCiAj
ZW5kaWYKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRCdXR0b24oR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRCdXR0
b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgY2hl
Y2tBbmRJbml0U2Nyb2xsYmFyVGhlbWUoKTsKIApAQCAtMzM5LDcgKzMzOSw3IEBAIHN0YXRpYyBJ
bnRSZWN0IGdyaXBwZXJSZWN0KGludCB0aGlja25lc3MsIGNvbnN0IEludFJlY3QmIHRodW1iUmVj
dCkKICAgICAgICAgICAgICAgICAgICBncmlwcGVyVGhpY2tuZXNzLCBncmlwcGVyVGhpY2tuZXNz
KTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRHcmlwcGVyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBI
REMgaGRjLCBjb25zdCBJbnRSZWN0JiByZWN0KQorc3RhdGljIHZvaWQgcGFpbnRHcmlwcGVyKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7CiAgICAgaWYgKCFzY3JvbGxiYXJUaGVtZSkKICAgICAgICAgcmV0dXJuOyAgLy8gQ2xh
c3NpYyBsb29rIGhhcyBubyBncmlwcGVyLgpAQCAtMzU4LDcgKzM1OCw3IEBAIHN0YXRpYyB2b2lk
IHBhaW50R3JpcHBlcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgSERDIGhkYywgY29uc3QgSW50UmVj
dCYgcmVjdCkKICAgICBEcmF3VGhlbWVCYWNrZ3JvdW5kKHNjcm9sbGJhclRoZW1lLCBoZGMsIHNj
cm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gU1BfR1JJUFBF
UkhPUiA6IFNQX0dSSVBQRVJWRVJULCBzdGF0ZSwgJnRoZW1lUmVjdCwgMCk7CiB9CiAKLXZvaWQg
U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFy
VGhlbWVXaW46OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGNoZWNr
QW5kSW5pdFNjcm9sbGJhclRoZW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Njcm9sbGJhclRoZW1lV2luLmgKaW5kZXggY2QyZjE3NmRmZGM5NzM4MmMzNWJiNzczZjli
MWU4ZGFkMjEyNzZiNi4uODcwMjQwYzE2NTU4Y2YwZjYyNTc0MTk2ZWViNjlhYWE4MDZhN2EyNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2lu
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmgK
QEAgLTQyLDIwICs0MiwyMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGludmFsaWRhdGVP
bk1vdXNlRW50ZXJFeGl0KCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0
dG9ucyhTY3JvbGxiYXIqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1Ro
dW1iKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihT
Y3JvbGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25S
ZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0g
ICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJh
clBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNr
UmVjdChTY3JvbGxiYXIqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50
UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQs
IGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0
b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGlu
ZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqLCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVy
T25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCi0gICAgdmlydHVhbCB2
b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNz
Q29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwg
Y29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRo
dW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0
IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24o
R3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jiwg
U2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CiB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guY3BwCmluZGV4
IGM5MjQ5NzhhNTA1YWMzMWYxNDA1MWUzMDE4MzMwNjQyNTEzYzRhNTEuLmJhZGYzMTU1NDA1YTZh
NTEzNjYyMzI1YjkyMzU5ZGM4MTNhOTUyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3d4L1Njcm9sbGJhclRoZW1lV3guY3BwCkBAIC03MSwxOSArNzEsMTkgQEAgaW50IFNjcm9s
bGJhclRoZW1lV3g6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBzaXpl
KQogICAgIHJldHVybiB0aGlja25lc3M7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVXeDo6aGFz
VGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lV3g6Omhhc1Ro
dW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgLy8gVGhpcyBtZXRo
b2QgaXMganVzdCBjYWxsZWQgYXMgYSBwYWludC10aW1lIG9wdGltaXphdGlvbiB0byBzZWUgaWYK
ICAgICAvLyBwYWludGluZyB0aGUgdGh1bWIgY2FuIGJlIHNraXBwZWQuICBXZSBkb24ndCBoYXZl
IHRvIGJlIGV4YWN0IGhlcmUuCiAgICAgcmV0dXJuIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikgPiAw
OwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVXeDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJh
ciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lV3g6Om1pbmltdW1UaHVtYkxlbmd0aChT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiAyMDsKIH0KIAot
SW50U2l6ZSBTY3JvbGxiYXJUaGVtZVd4OjpidXR0b25TaXplKFNjcm9sbGJhciopIAorSW50U2l6
ZSBTY3JvbGxiYXJUaGVtZVd4OjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgCiB7
CiAjaWZkZWYgX19XWE1BQ19fCiAgICAgcmV0dXJuIEludFNpemUoMjAsMjApOwpAQCAtOTIsNyAr
OTIsNyBAQCBJbnRTaXplIFNjcm9sbGJhclRoZW1lV3g6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKikK
ICNlbmRpZgogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lV3g6OnNwbGl0VHJhY2soU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QsIEludFJl
Y3QmIGJlZm9yZVRodW1iUmVjdCwgSW50UmVjdCYgdGh1bWJSZWN0LCBJbnRSZWN0JiBhZnRlclRo
dW1iUmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVXeDo6c3BsaXRUcmFjayhTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0
LCBJbnRSZWN0JiBiZWZvcmVUaHVtYlJlY3QsIEludFJlY3QmIHRodW1iUmVjdCwgSW50UmVjdCYg
YWZ0ZXJUaHVtYlJlY3QpCiB7CiAgICAgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnNwbGl0VHJh
Y2soc2Nyb2xsYmFyLCB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0LCBiZWZvcmVUaHVtYlJlY3QsIHRo
dW1iUmVjdCwgYWZ0ZXJUaHVtYlJlY3QpOwogI2lmZGVmIF9fV1hNQUNfXwpAQCAtMTA5LDcgKzEw
OSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVXeDo6c3BsaXRUcmFjayhTY3JvbGxiYXIqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhCiAjZW5kaWYKIH0KIAotSW50UmVjdCBTY3Jv
bGxiYXJUaGVtZVd4OjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xs
YmFyUGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4OjpiYWNrQnV0dG9u
UmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQs
IGJvb2wpCiB7CiAgICAgLy8gRklYTUU6IEhhbmRsaW5nIHRoaXMgY2FzZSBpcyBuZWVkZWQgd2hl
biB0aGVyZSBhcmUgdHdvIHNldHMgb2YgYXJyb3cgYnV0dG9ucwogICAgIC8vIG9uIE1hYywgb25l
IGF0IHRoZSB0b3AgYW5kIG9uZSBhdCB0aGUgYm90dG9tLgpAQCAtMTMwLDcgKzEzMCw3IEBAIElu
dFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFyCiAgICAgcmV0dXJuIEludFJlY3QoeCwgeSwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojpmb3J3
YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBi
b29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAg
ICAgLy8gRklYTUU6IEhhbmRsaW5nIHRoaXMgY2FzZSBpcyBuZWVkZWQgd2hlbiB0aGVyZSBhcmUg
dHdvIHNldHMgb2YgYXJyb3cgYnV0dG9ucwogICAgIC8vIG9uIE1hYywgb25lIGF0IHRoZSB0b3Ag
YW5kIG9uZSBhdCB0aGUgYm90dG9tLgpAQCAtMTU1LDcgKzE1NSw3IEBAIEludFJlY3QgU2Nyb2xs
YmFyVGhlbWVXeDo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9s
bGJhclBhcnQKICAgICByZXR1cm4gSW50UmVjdCh4LCB5LCBzaXplLndpZHRoKCksIHNpemUuaGVp
Z2h0KCkpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OnRyYWNrUmVjdChTY3JvbGxi
YXIqIHNjcm9sbGJhciwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6dHJhY2tSZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgSW50U2l6ZSBi
cyA9IGJ1dHRvblNpemUoc2Nyb2xsYmFyKTsKICAgICBpbnQgdHJhY2tTdGFydCA9IDA7CkBAIC0x
NzksMTEgKzE3OSwxMSBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OnRyYWNrUmVjdChTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngo
KSwgc2Nyb2xsYmFyLT55KCkgKyB0cmFja1N0YXJ0LCB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVp
Z2h0KCkgLSAyICogYnMuaGVpZ2h0KCkpOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lV3g6OnBh
aW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIHJlY3QpCitib29sIFNjcm9sbGJhclRoZW1lV3g6OnBhaW50KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKICAgICB3eE9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gKHNjcm9sbGJh
ci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSA/IHd4SE9SSVpPTlRBTCA6
IHd4VkVSVElDQUw7CiAgICAgaW50IGZsYWdzID0gMDsKLSAgICBpZiAoc2Nyb2xsYmFyLT5zY3Jv
bGxhYmxlQXJlYSgpLT5pc0FjdGl2ZSgpKQorICAgIGlmIChzY3JvbGxiYXItPmlzU2Nyb2xsYWJs
ZUFyZWFBY3RpdmUoKSkKICAgICAgICAgZmxhZ3MgfD0gd3hDT05UUk9MX0ZPQ1VTRUQ7CiAgICAg
CiAgICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3d4L1Njcm9sbGJhclRoZW1lV3guaAppbmRleCA3NWFiMTc1YTNiYTYwNGZjZDc5NWFkMmVh
NDVlZGZjZjU4M2VlNTU4Li4zNzJhYWY5NjYyZjc0NWQ0ZWUwNzQ3ZWRmNWMxMWY5ZmM1YWQ4OTU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5oCkBA
IC0zNSwyMSArMzUsMjEgQEAgY2xhc3MgU2Nyb2xsYmFyVGhlbWVXeCA6IHB1YmxpYyBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhlbWVX
eCgpOwogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9s
U2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpOwotICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxi
YXIqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29s
IHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYpOwogICAgIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNj
cm9sbGJhciopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Ny
b2xsYmFyKik7CisgICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJh
clRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxi
YXIqKTsKKyAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVu
dCopOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNj
cm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0
IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRp
bmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBi
b29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVj
dChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBm
YWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2
aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzcGxpdFRyYWNrKFNjcm9sbGJhcios
IGNvbnN0IEludFJlY3QmIHRyYWNrLCBJbnRSZWN0JiBzdGFydFRyYWNrLCBJbnRSZWN0JiB0aHVt
YiwgSW50UmVjdCYgZW5kVHJhY2spOworICAgIHZpcnR1YWwgdm9pZCBzcGxpdFRyYWNrKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYgdHJhY2ssIEludFJlY3QmIHN0YXJ0VHJh
Y2ssIEludFJlY3QmIHRodW1iLCBJbnRSZWN0JiBlbmRUcmFjayk7CiAgICAgCi0gICAgdmlydHVh
bCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgaW50IG1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCmluZGV4IDgxMGM5OGZmMzY2OGFi
OTFjZGU5YzM1NzE4ZDZmMDRiMmY3NDY3MWIuLjdmZTJmYWM4YjhkNDk3NTRkOGVhYjIzZDQwNWIx
NjJiZTMzZGM3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
LmgKQEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZW5k
ZXJTY3JvbGxiYXJQYXJ0Kj4gbV9wYXJ0czsKIH07CiAKLWlubGluZSBSZW5kZXJTY3JvbGxiYXIq
IHRvUmVuZGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW5saW5lIFJlbmRlclNj
cm9sbGJhciogdG9SZW5kZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
cikKIHsKICAgICBBU1NFUlQoIXNjcm9sbGJhciB8fCBzY3JvbGxiYXItPmlzQ3VzdG9tU2Nyb2xs
YmFyKCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJTY3JvbGxiYXIqPihzY3JvbGxi
YXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clRoZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVt
ZS5jcHAKaW5kZXggODczMDlkNDRlNWFhNDUyNjk3OWFmZWJlNTEyNzhiNGU0NmE1ZTkxNy4uNDRl
MmFhNjMxZGMyODE1MDE3NGJjMjI1MjMwZThiNmFhYjdkMGQzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCkBAIC0yNiw2ICsyNiw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyVGhlbWUu
aCIKICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIKKyNpbmNsdWRlICJTY3JvbGxiYXJUaGVt
ZUNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzYsNyArMzcsNyBAQCBSZW5kZXJTY3JvbGxiYXJUaGVtZSogUmVuZGVyU2Ny
b2xsYmFyVGhlbWU6OnJlbmRlclNjcm9sbGJhclRoZW1lKCkKICAgICByZXR1cm4gJnRoZW1lOwog
fQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpidXR0b25TaXplc0Fsb25nVHJhY2tBeGlz
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBpbnQmIGJlZm9yZVNpemUsIGludCYgYWZ0ZXJTaXplKQor
dm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBpbnQmIGJlZm9yZVNpemUsIGludCYgYWZ0ZXJT
aXplKQogewogICAgIEludFJlY3QgZmlyc3RCdXR0b24gPSBiYWNrQnV0dG9uUmVjdChzY3JvbGxi
YXIsIEJhY2tCdXR0b25TdGFydFBhcnQpOwogICAgIEludFJlY3Qgc2Vjb25kQnV0dG9uID0gZm9y
d2FyZEJ1dHRvblJlY3Qoc2Nyb2xsYmFyLCBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0KTsKQEAgLTUx
LDcgKzUyLDcgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1Ry
YWNrQXhpcyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgaW50JgogICAgIH0KIH0KIAotYm9vbCBSZW5k
ZXJTY3JvbGxiYXJUaGVtZTo6aGFzQnV0dG9ucyhTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jvb2wg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICBpbnQgc3RhcnRTaXplOwogICAgIGludCBlbmRTaXplOwpAQCAtNTks
MjcgKzYwLDI3IEBAIGJvb2wgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Omhhc0J1dHRvbnMoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIChzdGFydFNpemUgKyBlbmRTaXplKSA8PSAoc2Ny
b2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBzY3JvbGxiYXIt
PndpZHRoKCkgOiBzY3JvbGxiYXItPmhlaWdodCgpKTsKIH0KIAotYm9vbCBSZW5kZXJTY3JvbGxi
YXJUaGVtZTo6aGFzVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFJlbmRlclNjcm9s
bGJhclRoZW1lOjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewog
ICAgIHJldHVybiB0cmFja0xlbmd0aChzY3JvbGxiYXIpIC0gdGh1bWJMZW5ndGgoc2Nyb2xsYmFy
KSA+PSAwOwogfQogCi1pbnQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1pbmltdW1UaHVtYkxlbmd0
aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6bWluaW11
bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0
dXJuIHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPm1pbmltdW1UaHVtYkxlbmd0aCgpOwog
fQogCi1JbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxi
YXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgYm9vbCkKK0ludFJlY3QgUmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCiB7CiAgICAgcmV0dXJuIHRv
UmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPmJ1dHRvblJlY3QocGFydFR5cGUpOwogfQogCi1J
bnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIq
IHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgYm9vbCkKK0ludFJlY3QgUmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCiB7CiAgICAgcmV0dXJuIHRv
UmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPmJ1dHRvblJlY3QocGFydFR5cGUpOwogfQogCi1J
bnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIGJvb2wpCitJbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCkKIHsKICAgICBpZiAoIWhhc0J1dHRvbnMo
c2Nyb2xsYmFyKSkKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7CkBAIC05
MSw3ICs5Miw3IEBAIEludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnRyYWNrUmVjdChTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKICAgICByZXR1cm4gdG9SZW5kZXJTY3JvbGxiYXIoc2Ny
b2xsYmFyKS0+dHJhY2tSZWN0KHN0YXJ0TGVuZ3RoLCBlbmRMZW5ndGgpOwogfQogCi1JbnRSZWN0
IFJlbmRlclNjcm9sbGJhclRoZW1lOjpjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQorSW50UmVjdCBSZW5kZXJT
Y3JvbGxiYXJUaGVtZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogeyAKICAgICBJbnRS
ZWN0IGJhY2tSZWN0ID0gdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+dHJhY2tQaWVjZVJl
Y3RXaXRoTWFyZ2lucyhCYWNrVHJhY2tQYXJ0LCByZWN0KTsKICAgICBJbnRSZWN0IGZvcndhcmRS
ZWN0ID0gdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+dHJhY2tQaWVjZVJlY3RXaXRoTWFy
Z2lucyhGb3J3YXJkVHJhY2tQYXJ0LCByZWN0KTsKQEAgLTExMiwyNyArMTEzLDI3IEBAIHZvaWQg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFw
aGljc0NvbnRleHQqIGNvbnRlCiAgICAgY29udGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29s
b3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxi
YXJUaGVtZTo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWlu
dFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJh
ciktPnBhaW50UGFydChjb250ZXh0LCBTY3JvbGxiYXJCR1BhcnQsIHNjcm9sbGJhci0+ZnJhbWVS
ZWN0KCkpOwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNrQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25z
dCBJbnRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja0Jh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIHRvUmVuZGVyU2Nyb2xsYmFy
KHNjcm9sbGJhciktPnBhaW50UGFydChjb250ZXh0LCBUcmFja0JHUGFydCwgcmVjdCk7CiB9CiAK
LXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBT
Y3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNr
UGllY2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAg
dG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+cGFpbnRQYXJ0KGNvbnRleHQsIHBhcnQsIHJl
Y3QpOwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludEJ1dHRvbihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWlu
dEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAg
ICB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5wYWludFBhcnQoY29udGV4dCwgcGFydCwg
cmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
cmVjdCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQogewogICAgIHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnBhaW50UGFy
dChjb250ZXh0LCBUaHVtYlBhcnQsIHJlY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaAppbmRleCA3MGMyNGE1ZWEyZWQ3OWJiOWY4ZmFk
MDIxMzdjNjM1NjlkOTk2M2M0Li5lYzkyYmRjOTM5M2FjYzZmMmRhNmExNzRmNzdiOWYzZWExNDFm
ZTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
VGhlbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhl
bWUuaApAQCAtNDYsMzUgKzQ2LDM1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJP
blRodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2
ZW50KSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2hvdWxkQ2VudGVyT25UaHVt
YihzY3JvbGxiYXIsIGV2ZW50KTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRo
dW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZlbnQpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zaG91bGRDZW50
ZXJPblRodW1iKHNjcm9sbGJhciwgZXZlbnQpOyB9CiAgICAgCiAgICAgdmlydHVhbCBkb3VibGUg
aW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRo
ZW1lKCktPmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpOyB9CiAgICAgdmlydHVhbCBkb3Vi
bGUgYXV0b3Njcm9sbFRpbWVyRGVsYXkoKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUo
KS0+YXV0b3Njcm9sbFRpbWVyRGVsYXkoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
U2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6
dGhlbWUoKS0+cmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQotICAgIHZpcnR1YWwgdm9p
ZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKSB7IHJldHVybiBTY3Jv
bGxiYXJUaGVtZTo6dGhlbWUoKS0+dW5yZWdpc3RlclNjcm9sbGJhcihzY3JvbGxiYXIpOyB9Cisg
ICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5yZWdpc3RlclNjcm9s
bGJhcihzY3JvbGxiYXIpOyB9CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6
OnRoZW1lKCktPnVucmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQogCi0gICAgdmlydHVh
bCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgaW50IG1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAgdm9pZCBidXR0
b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBpbnQmIGJlZm9yZVNp
emUsIGludCYgYWZ0ZXJTaXplKTsKKyAgICB2b2lkIGJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFm
dGVyU2l6ZSk7CiAgICAgCiAgICAgc3RhdGljIFJlbmRlclNjcm9sbGJhclRoZW1lKiByZW5kZXJT
Y3JvbGxiYXJUaGVtZSgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRv
bnMoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOwor
ICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAg
dmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0
dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9v
bCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJl
Y3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAg
ICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBm
YWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0
dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3Jv
bGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCB0
cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwog
ICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3ND
b250ZXh0KiwgU2Nyb2xsYmFyKik7ICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFj
a2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0g
ICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxi
YXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmlydHVhbCB2b2lkIHBh
aW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBT
Y3JvbGxiYXJQYXJ0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRl
eHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCopOyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3ND
b250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBj
b25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1
bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0
Jik7CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNl
cyhTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0
cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJ
bnRSZWN0Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128245</attachid>
            <date>2012-02-22 10:45:07 -0800</date>
            <delta_ts>2012-02-23 09:48:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78028-20120222134505.patch</filename>
            <type>text/plain</type>
            <size>131781</size>
            <attacher name="Peter Kotwicz">pkotwicz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTkwNGZmYTlmZThhMjRm
Y2Y4NDg2MmJjYmZjYmY0YTAwNWFiODE1OS4uMjIyNjM4ZmVmMjMzOTY1Zjg4YTU2NmQ4ODgwMjQ5
OWQ2ODIxNzgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2NCBAQAorMjAxMi0wMi0yMiAgUGV0
ZXIgS290d2ljeiAgPHBrb3R3aWN6QGdvb2dsZS5jb20+CisKKyAgICAgICAgRGVjb3VwbGUgc2Ny
b2xsYmFyIHBhaW50aW5nIGZyb20gU2Nyb2xsYmFyIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwMjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmdldFRpY2ttYXJr
cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUp
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5oOgorICAgICAgICAoU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6b3JpZW50YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmN1
cnJlbnRQb3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp2aXNpYmxlU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnRvdGFsU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXI6Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpjb250
cm9sU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmxpbmVTdGVwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFnZVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyOjpwcmVzc2VkUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmhvdmVy
ZWRQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXI6OngpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6d2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bG9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpy
b290KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZnJhbWVSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXI6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWU6OnVwZGF0ZUVuYWJsZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6
OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnVwZGF0ZVNjcm9s
bGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6aW52
YWxpZGF0ZVBhcnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjppbnZhbGlk
YXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkQ2VudGVy
T25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkU25hcEJh
Y2tUb0RyYWdPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnNob3Vs
ZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lOjp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Ojp0aHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dHJhY2tQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dHJhY2tMZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDbGllbnQ6On5TY3JvbGxiYXJUaGVtZUNsaWVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpoaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayk6CisgICAgICAgIChXZWJD
b3JlOjp1c2VkVG90YWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjp0aHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZTo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aCk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNj
cm9sbGJhckJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlOjpwYWludFRyYWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRpY2ttYXJrcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNl
cyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpoYXNUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpiYWNrQnV0dG9uUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpmb3J3YXJkQnV0
dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjp0cmFj
a1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRU
cmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bTo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21p
dW06Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bSk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50
U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNo
cm9taXVtQW5kcm9pZDo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YnV0dG9uU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6bWluaW11bVRodW1iTGVuZ3RoKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9p
ZC5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50
QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6
cGFpbnRUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGlu
dXg6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaDoKKyAgICAgICAgKFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50R2l2ZW5U
aWNrbWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3Np
Y1RoZW1lU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bjo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtV2luOjpidXR0b25TaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmg6CisgICAgICAgIChTY3JvbGxiYXJUaGVtZUNocm9t
aXVtV2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVFZmw6OnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lRWZsOjp1bnJlZ2lzdGVyU2Nyb2xsYmFy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaDoKKyAgICAgICAg
KFNjcm9sbGJhclRoZW1lRWZsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhl
bWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUd0azo6cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVHdGs6OnVucmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRoaWNrbmVzcyk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lR3RrOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lR3RrOjp0aHVtYlJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVHdGs6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpzaG91
bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpi
dXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjptaW5pbXVt
VGh1bWJMZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5o
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6Omhhc0J1dHRvbnMpOgorICAg
ICAgICAoU2Nyb2xsYmFyVGhlbWVHdGspOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxi
YXJUaGVtZUd0azIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0V2lkZ2V0Rm9yU2Nyb2xsYmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxi
YXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWlu
dFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRv
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRCdXR0b24pOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oOgorICAgICAgICAoU2Nyb2xs
YmFyVGhlbWVNYWMpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVN
YWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
TWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1dHRvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lTWFjOjpzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlRW5hYmxlZFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVNb2NrOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZU1vY2s6OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xs
YmFyVGhlbWVNb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6Omhh
c0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpoYXNUaHVt
Yik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OmJhY2tCdXR0b25SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6Zm9yd2FyZEJ1dHRvblJl
Y3QpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVNb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9TY3JvbGxiYXJUaGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlT3B0aW9uU2xp
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVRdDo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZVF0OjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lUXQ6OnRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lUXQ6OnRyYWNrUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVRdDo6dHJhY2tMZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1l
UXQuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lUXQpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZVNhZmFyaTo6aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZh
cmk6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2Fm
YXJpOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2Fm
YXJpOjptaW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVTYWZhcmk6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVTYWZhcmk6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUaHVtYik6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L1Njcm9sbGJhclRoZW1lU2FmYXJpLmg6CisgICAgICAgIChTY3JvbGxiYXJUaGVtZVNhZmFyaSk6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZVdpbjo6YmFja0J1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVXaW46OmZvcndhcmRCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lV2luOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVXaW46OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJD
b3JlOjpwYWludEdyaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46
OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5o
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46Omhhc0J1dHRvbnMpOgorICAg
ICAgICAoU2Nyb2xsYmFyVGhlbWVXaW4pOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJh
clRoZW1lV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzVGh1
bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6bWluaW11bVRodW1iTGVu
Z3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV3g6OmJ1dHRvblNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6c3BsaXRUcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4OjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVXeDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJh
clRoZW1lV3guaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lV3gpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzQnV0dG9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhci5oOgorICAgICAgICAoV2ViQ29yZTo6dG9SZW5kZXJTY3JvbGxiYXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzQnV0dG9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzVGh1bWIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1pbmltdW1UaHVtYkxlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YmFja0J1dHRvblJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmZvcndhcmRCdXR0b25SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVj
dFRvVHJhY2tQaWVjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJUaGVtZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xs
YmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNj
cm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFJlbmRlclNjcm9s
bGJhclRoZW1lKToKKwogMjAxMi0wMi0yMiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtleHBlcmltZW50YWxdIGFkZCBhIG1v
ZGUgdG8gZGlzcGxheSB0aW1lbGluZSBldmVudHMgYWxpZ25lZCBieSB0aGUgc3RhcnQgdGltZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDU4Y2FhYTFjOGNmNjBmYTYwYjA2YmMxZTE0M2JiNWVhOTZhYmEy
NzEuLjNhZDE4NWJiMWFiODViMzFjYzJkNWQ3NmEzYzkwYjU3MzEyZTE4OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTI5Miw2ICsyOTIsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGJhci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9T
Y3JvbGxiYXJUaGVtZUNsaWVudC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TZWFyY2hQb3B1
cE1lbnUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXggM2I5YzE5NWNmZjU1MzkxNjU1NjIwM2UyZjJjYzRm
ZTVkOGY5YTUxZS4uOGJmYjZhYzUyYWM5ODVkOWVmZjBkYjcxNTI5MTBmMTQ2ZGMxYWI3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC0xMTIsNiArMTEyLDk5IEBAIFNj
cm9sbGJhcjo6flNjcm9sbGJhcigpCiAgICAgbV90aGVtZS0+dW5yZWdpc3RlclNjcm9sbGJhcih0
aGlzKTsKIH0KIAordm9pZCBTY3JvbGxiYXI6OnNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiBy
ZWN0KQoreworICAgIC8vIEdldCBvdXIgd2luZG93IHJlc2l6ZXIgcmVjdCBhbmQgc2VlIGlmIHdl
IG92ZXJsYXAuICBBZGp1c3QgdG8gYXZvaWQgdGhlIG92ZXJsYXAKKyAgICAvLyBpZiBuZWNlc3Nh
cnkuCisgICAgSW50UmVjdCBhZGp1c3RlZFJlY3QocmVjdCk7CisgICAgYm9vbCBvdmVybGFwc1Jl
c2l6ZXIgPSBmYWxzZTsKKyAgICBTY3JvbGxWaWV3KiB2aWV3ID0gcGFyZW50KCk7CisgICAgaWYg
KHZpZXcgJiYgIXJlY3QuaXNFbXB0eSgpICYmICF2aWV3LT53aW5kb3dSZXNpemVyUmVjdCgpLmlz
RW1wdHkoKSkgeworICAgICAgICBJbnRSZWN0IHJlc2l6ZXJSZWN0ID0gdmlldy0+Y29udmVydEZy
b21Db250YWluaW5nV2luZG93KHZpZXctPndpbmRvd1Jlc2l6ZXJSZWN0KCkpOworICAgICAgICBp
ZiAocmVjdC5pbnRlcnNlY3RzKHJlc2l6ZXJSZWN0KSkgeworICAgICAgICAgICAgaWYgKG9yaWVu
dGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAgICAgICAgICAgICAgIGludCBv
dmVybGFwID0gcmVjdC5tYXhYKCkgLSByZXNpemVyUmVjdC54KCk7CisgICAgICAgICAgICAgICAg
aWYgKG92ZXJsYXAgPiAwICYmIHJlc2l6ZXJSZWN0Lm1heFgoKSA+PSByZWN0Lm1heFgoKSkgewor
ICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFJlY3Quc2V0V2lkdGgocmVjdC53aWR0aCgpIC0g
b3ZlcmxhcCk7CisgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBzUmVzaXplciA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
bnQgb3ZlcmxhcCA9IHJlY3QubWF4WSgpIC0gcmVzaXplclJlY3QueSgpOworICAgICAgICAgICAg
ICAgIGlmIChvdmVybGFwID4gMCAmJiByZXNpemVyUmVjdC5tYXhZKCkgPj0gcmVjdC5tYXhZKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgYWRqdXN0ZWRSZWN0LnNldEhlaWdodChyZWN0LmhlaWdo
dCgpIC0gb3ZlcmxhcCk7CisgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBzUmVzaXplciA9IHRy
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIGlmIChvdmVybGFwc1Jlc2l6ZXIgIT0gbV9vdmVybGFwc1Jlc2l6ZXIpIHsKKyAgICAgICAg
bV9vdmVybGFwc1Jlc2l6ZXIgPSBvdmVybGFwc1Jlc2l6ZXI7CisgICAgICAgIGlmICh2aWV3KQor
ICAgICAgICAgICAgdmlldy0+YWRqdXN0U2Nyb2xsYmFyc0F2b2lkaW5nUmVzaXplckNvdW50KG1f
b3ZlcmxhcHNSZXNpemVyID8gMSA6IC0xKTsKKyAgICB9CisKKyAgICBXaWRnZXQ6OnNldEZyYW1l
UmVjdChhZGp1c3RlZFJlY3QpOworfQorCit2b2lkIFNjcm9sbGJhcjo6aW52YWxpZGF0ZVJlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoc3VwcHJlc3NJbnZhbGlkYXRpb24oKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIG1f
c2Nyb2xsYWJsZUFyZWEtPmludmFsaWRhdGVTY3JvbGxiYXIodGhpcywgcmVjdCk7Cit9CisKK1Nj
cm9sbGJhck92ZXJsYXlTdHlsZSBTY3JvbGxiYXI6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEgPyBTY3JvbGxiYXJPdmVybGF5U3R5
bGVEZWZhdWx0IDogbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7Cit9
CisKK3ZvaWQgU2Nyb2xsYmFyOjpnZXRUaWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JiB0aWNrbWFy
a3MpIGNvbnN0Cit7CisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIG1fc2Nyb2xs
YWJsZUFyZWEtPmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOworfQorCitib29sIFNjcm9sbGJhcjo6
aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJs
ZUFyZWEgJiYgbV9zY3JvbGxhYmxlQXJlYS0+aXNBY3RpdmUoKTsKK30KKwordm9pZCBTY3JvbGxi
YXI6OnNldEhvdmVyZWRQYXJ0KFNjcm9sbGJhclBhcnQgcGFydCkKK3sKKyAgICBpZiAocGFydCA9
PSBtX2hvdmVyZWRQYXJ0KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoKG1faG92ZXJlZFBh
cnQgPT0gTm9QYXJ0IHx8IHBhcnQgPT0gTm9QYXJ0KSAmJiB0aGVtZSgpLT5pbnZhbGlkYXRlT25N
b3VzZUVudGVyRXhpdCgpKQorICAgICAgICBpbnZhbGlkYXRlKCk7ICAvLyBKdXN0IGludmFsaWRh
dGUgdGhlIHdob2xlIHNjcm9sbGJhciwgc2luY2UgdGhlIGJ1dHRvbnMgYXQgZWl0aGVyIGVuZCBj
aGFuZ2UgYW55d2F5LgorICAgIGVsc2UgaWYgKG1fcHJlc3NlZFBhcnQgPT0gTm9QYXJ0KSB7ICAv
LyBXaGVuIHRoZXJlJ3MgYSBwcmVzc2VkIHBhcnQsIHdlIGRvbid0IGRyYXcgYSBob3ZlcmVkIHN0
YXRlLCBzbyB0aGVyZSdzIG5vIHJlYXNvbiB0byBpbnZhbGlkYXRlLgorICAgICAgICB0aGVtZSgp
LT5pbnZhbGlkYXRlUGFydCh0aGlzLCBwYXJ0KTsKKyAgICAgICAgdGhlbWUoKS0+aW52YWxpZGF0
ZVBhcnQodGhpcywgbV9ob3ZlcmVkUGFydCk7CisgICAgfQorICAgIG1faG92ZXJlZFBhcnQgPSBw
YXJ0OworfQorCit2b2lkIFNjcm9sbGJhcjo6c2V0UHJlc3NlZFBhcnQoU2Nyb2xsYmFyUGFydCBw
YXJ0KQoreworICAgIGlmIChtX3ByZXNzZWRQYXJ0ICE9IE5vUGFydCkKKyAgICAgICAgdGhlbWUo
KS0+aW52YWxpZGF0ZVBhcnQodGhpcywgbV9wcmVzc2VkUGFydCk7CisgICAgbV9wcmVzc2VkUGFy
dCA9IHBhcnQ7CisgICAgaWYgKG1fcHJlc3NlZFBhcnQgIT0gTm9QYXJ0KQorICAgICAgICB0aGVt
ZSgpLT5pbnZhbGlkYXRlUGFydCh0aGlzLCBtX3ByZXNzZWRQYXJ0KTsKKyAgICBlbHNlIGlmICht
X2hvdmVyZWRQYXJ0ICE9IE5vUGFydCkgIC8vIFdoZW4gd2Ugbm8gbG9uZ2VyIGhhdmUgYSBwcmVz
c2VkIHBhcnQsIHdlIGNhbiBzdGFydCBkcmF3aW5nIGEgaG92ZXJlZCBzdGF0ZSBvbiB0aGUgaG92
ZXJlZCBwYXJ0LgorICAgICAgICB0aGVtZSgpLT5pbnZhbGlkYXRlUGFydCh0aGlzLCBtX2hvdmVy
ZWRQYXJ0KTsKK30KKwordm9pZCBTY3JvbGxiYXI6OnNldEVuYWJsZWQoYm9vbCBlKQoreyAKKyAg
ICBpZiAobV9lbmFibGVkID09IGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX2VuYWJsZWQgPSBl
OworICAgIHRoZW1lKCktPnVwZGF0ZUVuYWJsZWRTdGF0ZSh0aGlzKTsKKyAgICBpbnZhbGlkYXRl
KCk7Cit9CisKIHZvaWQgU2Nyb2xsYmFyOjpvZmZzZXREaWRDaGFuZ2UoKQogewogICAgIEFTU0VS
VChtX3Njcm9sbGFibGVBcmVhKTsKQEAgLTMwNCwzMSArMzk3LDYgQEAgdm9pZCBTY3JvbGxiYXI6
Om1vdmVUaHVtYihpbnQgcG9zLCBib29sIGRyYWdnaW5nRG9jdW1lbnQpCiAgICAgfQogfQogCi12
b2lkIFNjcm9sbGJhcjo6c2V0SG92ZXJlZFBhcnQoU2Nyb2xsYmFyUGFydCBwYXJ0KQotewotICAg
IGlmIChwYXJ0ID09IG1faG92ZXJlZFBhcnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICgo
bV9ob3ZlcmVkUGFydCA9PSBOb1BhcnQgfHwgcGFydCA9PSBOb1BhcnQpICYmIHRoZW1lKCktPmlu
dmFsaWRhdGVPbk1vdXNlRW50ZXJFeGl0KCkpCi0gICAgICAgIGludmFsaWRhdGUoKTsgIC8vIEp1
c3QgaW52YWxpZGF0ZSB0aGUgd2hvbGUgc2Nyb2xsYmFyLCBzaW5jZSB0aGUgYnV0dG9ucyBhdCBl
aXRoZXIgZW5kIGNoYW5nZSBhbnl3YXkuCi0gICAgZWxzZSBpZiAobV9wcmVzc2VkUGFydCA9PSBO
b1BhcnQpIHsgIC8vIFdoZW4gdGhlcmUncyBhIHByZXNzZWQgcGFydCwgd2UgZG9uJ3QgZHJhdyBh
IGhvdmVyZWQgc3RhdGUsIHNvIHRoZXJlJ3Mgbm8gcmVhc29uIHRvIGludmFsaWRhdGUuCi0gICAg
ICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0KHRoaXMsIHBhcnQpOwotICAgICAgICB0aGVtZSgp
LT5pbnZhbGlkYXRlUGFydCh0aGlzLCBtX2hvdmVyZWRQYXJ0KTsKLSAgICB9Ci0gICAgbV9ob3Zl
cmVkUGFydCA9IHBhcnQ7Ci19Ci0KLXZvaWQgU2Nyb2xsYmFyOjpzZXRQcmVzc2VkUGFydChTY3Jv
bGxiYXJQYXJ0IHBhcnQpCi17Ci0gICAgaWYgKG1fcHJlc3NlZFBhcnQgIT0gTm9QYXJ0KQotICAg
ICAgICB0aGVtZSgpLT5pbnZhbGlkYXRlUGFydCh0aGlzLCBtX3ByZXNzZWRQYXJ0KTsKLSAgICBt
X3ByZXNzZWRQYXJ0ID0gcGFydDsKLSAgICBpZiAobV9wcmVzc2VkUGFydCAhPSBOb1BhcnQpCi0g
ICAgICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0KHRoaXMsIG1fcHJlc3NlZFBhcnQpOwotICAg
IGVsc2UgaWYgKG1faG92ZXJlZFBhcnQgIT0gTm9QYXJ0KSAgLy8gV2hlbiB3ZSBubyBsb25nZXIg
aGF2ZSBhIHByZXNzZWQgcGFydCwgd2UgY2FuIHN0YXJ0IGRyYXdpbmcgYSBob3ZlcmVkIHN0YXRl
IG9uIHRoZSBob3ZlcmVkIHBhcnQuCi0gICAgICAgIHRoZW1lKCktPmludmFsaWRhdGVQYXJ0KHRo
aXMsIG1faG92ZXJlZFBhcnQpOwotfQotCiBib29sIFNjcm9sbGJhcjo6bW91c2VNb3ZlZChjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICBpZiAobV9wcmVzc2VkUGFydCA9PSBU
aHVtYlBhcnQpIHsKQEAgLTQzMiw0MCArNTAwLDYgQEAgYm9vbCBTY3JvbGxiYXI6Om1vdXNlRG93
bihjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBTY3JvbGxiYXI6OnNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAg
IC8vIEdldCBvdXIgd2luZG93IHJlc2l6ZXIgcmVjdCBhbmQgc2VlIGlmIHdlIG92ZXJsYXAuICBB
ZGp1c3QgdG8gYXZvaWQgdGhlIG92ZXJsYXAKLSAgICAvLyBpZiBuZWNlc3NhcnkuCi0gICAgSW50
UmVjdCBhZGp1c3RlZFJlY3QocmVjdCk7Ci0gICAgYm9vbCBvdmVybGFwc1Jlc2l6ZXIgPSBmYWxz
ZTsKLSAgICBTY3JvbGxWaWV3KiB2aWV3ID0gcGFyZW50KCk7Ci0gICAgaWYgKHZpZXcgJiYgIXJl
Y3QuaXNFbXB0eSgpICYmICF2aWV3LT53aW5kb3dSZXNpemVyUmVjdCgpLmlzRW1wdHkoKSkgewot
ICAgICAgICBJbnRSZWN0IHJlc2l6ZXJSZWN0ID0gdmlldy0+Y29udmVydEZyb21Db250YWluaW5n
V2luZG93KHZpZXctPndpbmRvd1Jlc2l6ZXJSZWN0KCkpOwotICAgICAgICBpZiAocmVjdC5pbnRl
cnNlY3RzKHJlc2l6ZXJSZWN0KSkgewotICAgICAgICAgICAgaWYgKG9yaWVudGF0aW9uKCkgPT0g
SG9yaXpvbnRhbFNjcm9sbGJhcikgewotICAgICAgICAgICAgICAgIGludCBvdmVybGFwID0gcmVj
dC5tYXhYKCkgLSByZXNpemVyUmVjdC54KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG92ZXJsYXAg
PiAwICYmIHJlc2l6ZXJSZWN0Lm1heFgoKSA+PSByZWN0Lm1heFgoKSkgewotICAgICAgICAgICAg
ICAgICAgICBhZGp1c3RlZFJlY3Quc2V0V2lkdGgocmVjdC53aWR0aCgpIC0gb3ZlcmxhcCk7Ci0g
ICAgICAgICAgICAgICAgICAgIG92ZXJsYXBzUmVzaXplciA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpbnQgb3ZlcmxhcCA9
IHJlY3QubWF4WSgpIC0gcmVzaXplclJlY3QueSgpOwotICAgICAgICAgICAgICAgIGlmIChvdmVy
bGFwID4gMCAmJiByZXNpemVyUmVjdC5tYXhZKCkgPj0gcmVjdC5tYXhZKCkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgYWRqdXN0ZWRSZWN0LnNldEhlaWdodChyZWN0LmhlaWdodCgpIC0gb3Zlcmxh
cCk7Ci0gICAgICAgICAgICAgICAgICAgIG92ZXJsYXBzUmVzaXplciA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChvdmVy
bGFwc1Jlc2l6ZXIgIT0gbV9vdmVybGFwc1Jlc2l6ZXIpIHsKLSAgICAgICAgbV9vdmVybGFwc1Jl
c2l6ZXIgPSBvdmVybGFwc1Jlc2l6ZXI7Ci0gICAgICAgIGlmICh2aWV3KQotICAgICAgICAgICAg
dmlldy0+YWRqdXN0U2Nyb2xsYmFyc0F2b2lkaW5nUmVzaXplckNvdW50KG1fb3ZlcmxhcHNSZXNp
emVyID8gMSA6IC0xKTsKLSAgICB9Ci0KLSAgICBXaWRnZXQ6OnNldEZyYW1lUmVjdChhZGp1c3Rl
ZFJlY3QpOwotfQotCiB2b2lkIFNjcm9sbGJhcjo6c2V0UGFyZW50KFNjcm9sbFZpZXcqIHBhcmVu
dFZpZXcpCiB7CiAgICAgaWYgKCFwYXJlbnRWaWV3ICYmIG1fb3ZlcmxhcHNSZXNpemVyICYmIHBh
cmVudCgpKQpAQCAtNDczLDE1ICs1MDcsNiBAQCB2b2lkIFNjcm9sbGJhcjo6c2V0UGFyZW50KFNj
cm9sbFZpZXcqIHBhcmVudFZpZXcpCiAgICAgV2lkZ2V0OjpzZXRQYXJlbnQocGFyZW50Vmlldyk7
CiB9CiAKLXZvaWQgU2Nyb2xsYmFyOjpzZXRFbmFibGVkKGJvb2wgZSkKLXsgCi0gICAgaWYgKG1f
ZW5hYmxlZCA9PSBlKQotICAgICAgICByZXR1cm47Ci0gICAgbV9lbmFibGVkID0gZTsKLSAgICB0
aGVtZSgpLT51cGRhdGVFbmFibGVkU3RhdGUodGhpcyk7Ci0gICAgaW52YWxpZGF0ZSgpOwotfQot
CiBib29sIFNjcm9sbGJhcjo6aXNPdmVybGF5U2Nyb2xsYmFyKCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV90aGVtZS0+dXNlc092ZXJsYXlTY3JvbGxiYXJzKCk7CkBAIC01MTEsMTUgKzUzNiw2IEBA
IEFYT2JqZWN0Q2FjaGUqIFNjcm9sbGJhcjo6YXhPYmplY3RDYWNoZSgpIGNvbnN0CiAgICAgcmV0
dXJuIGRvY3VtZW50LT5heE9iamVjdENhY2hlKCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyOjppbnZh
bGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQotewotICAgIGlmIChzdXBwcmVzc0ludmFs
aWRhdGlvbigpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9zY3JvbGxhYmxlQXJlYSkK
LSAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+aW52YWxpZGF0ZVNjcm9sbGJhcih0aGlzLCByZWN0
KTsKLX0KLQogSW50UmVjdCBTY3JvbGxiYXI6OmNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0
IEludFJlY3QmIGxvY2FsUmVjdCkgY29uc3QKIHsKICAgICBpZiAobV9zY3JvbGxhYmxlQXJlYSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKaW5kZXggMzlhYzI1NDY1ZDE0NTVhNTk5MmNk
MjVjMjIyOGRkMmI2NTM0YTYzZC4uMmE4MTcyMjgyYTE4MTBiMjQ1YWRjNjcxNzg2NzVmMWU4YTkx
YjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpZm5kZWYgU2Nyb2xsYmFyX2gKICNkZWZpbmUgU2Nyb2xsYmFyX2gKIAorI2luY2x1ZGUgIlNj
cm9sbGJhclRoZW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRl
ICJUaW1lci5oIgogI2luY2x1ZGUgIldpZGdldC5oIgpAQCAtNDAsMTMgKzQxLDU5IEBAIGNsYXNz
IFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwogY2xhc3MgU2Nyb2xs
YmFyVGhlbWU7CiAKLWNsYXNzIFNjcm9sbGJhciA6IHB1YmxpYyBXaWRnZXQgeworY2xhc3MgU2Ny
b2xsYmFyIDogcHVibGljIFdpZGdldCwKKyAgICAgICAgICAgICAgICAgIHB1YmxpYyBTY3JvbGxi
YXJUaGVtZUNsaWVudCB7CisKIHB1YmxpYzoKICAgICAvLyBNdXN0IGJlIGltcGxlbWVudGVkIGJ5
IHBsYXRmb3JtcyB0aGF0IGNhbid0IHNpbXBseSB1c2UgdGhlIFNjcm9sbGJhciBiYXNlIGNsYXNz
LiAgUmlnaHQgbm93IHRoZSBvbmx5IHBsYXRmb3JtIHRoYXQgaXMgbm90IHVzaW5nIHRoZSBiYXNl
IGNsYXNzIGlzIEdUSy4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JvbGxiYXI+IGNyZWF0ZU5h
dGl2ZVNjcm9sbGJhcihTY3JvbGxhYmxlQXJlYSosIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSBzaXplKTsKIAogICAgIHZpcnR1YWwgflNjcm9s
bGJhcigpOwogCisgICAgLy8gU2Nyb2xsYmFyVGhlbWVDbGllbnQgaW1wbGVtZW50YXRpb24uCisg
ICAgdmlydHVhbCBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6eCgpOyB9CisgICAgdmly
dHVhbCBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6eSgpOyB9CisgICAgdmlydHVhbCBp
bnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OndpZHRoKCk7IH0KKyAgICB2aXJ0dWFs
IGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OmhlaWdodCgpOyB9CisgICAgdmly
dHVhbCBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OnNpemUoKTsgfQorICAg
IHZpcnR1YWwgSW50UG9pbnQgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OmxvY2F0
aW9uKCk7IH0KKworICAgIHZpcnR1YWwgU2Nyb2xsVmlldyogcGFyZW50KCkgY29uc3QgeyByZXR1
cm4gV2lkZ2V0OjpwYXJlbnQoKTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsVmlldyogcm9vdCgpIGNv
bnN0IHsgcmV0dXJuIFdpZGdldDo6cm9vdCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJh
bWVSZWN0KGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgZnJhbWVSZWN0KCkg
Y29uc3QgeyByZXR1cm4gV2lkZ2V0OjpmcmFtZVJlY3QoKTsgfQorCisgICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGUoKSB7IFdpZGdldDo6aW52YWxpZGF0ZSgpOyB9CisgICAgdmlydHVhbCB2b2lk
IGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKTsKKworICAgIHZpcnR1YWwgU2Nyb2xsYmFy
T3ZlcmxheVN0eWxlIHNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIGNvbnN0OworICAgIHZpcnR1YWwg
dm9pZCBnZXRUaWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JikgY29uc3Q7CisgICAgdmlydHVhbCBi
b29sIGlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSBjb25zdDsKKworICAgIHZpcnR1YWwgSW50UG9p
bnQgY29udmVydEZyb21Db250YWluaW5nV2luZG93KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2lu
dCkgeyByZXR1cm4gV2lkZ2V0Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3cod2luZG93UG9p
bnQpOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21TY3JvbGxiYXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRp
b24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9CisKKyAgICB2aXJ0dWFsIGludCB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGxyb3VuZGYobV9jdXJyZW50UG9zKTsgfQorICAgIHZpcnR1
YWwgZmxvYXQgY3VycmVudFBvcygpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFBvczsgfQorICAg
IHZpcnR1YWwgaW50IHZpc2libGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlU2l6ZTsg
fQorICAgIHZpcnR1YWwgaW50IHRvdGFsU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXpl
OyB9CisgICAgdmlydHVhbCBpbnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXpl
IC0gbV92aXNpYmxlU2l6ZTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29u
dHJvbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xTaXplOyB9CisKKyAgICB2aXJ0dWFs
IGludCBsaW5lU3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZVN0ZXA7IH0KKyAgICB2aXJ0dWFs
IGludCBwYWdlU3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVN0ZXA7IH0KKworICAgIHZpcnR1
YWwgU2Nyb2xsYmFyUGFydCBwcmVzc2VkUGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc3NlZFBh
cnQ7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgaG92ZXJlZFBhcnQoKSBjb25zdCB7IHJl
dHVybiBtX2hvdmVyZWRQYXJ0OyB9CisgICAgdmlydHVhbCB2b2lkIHNldEhvdmVyZWRQYXJ0KFNj
cm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzc2VkUGFydChTY3JvbGxiYXJQ
YXJ0KTsKKworICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmFi
bGVkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCBlKTsKKwogICAgIC8vIENh
bGxlZCBieSB0aGUgU2Nyb2xsYWJsZUFyZWEgd2hlbiB0aGUgc2Nyb2xsIG9mZnNldCBjaGFuZ2Vz
LgogICAgIHZvaWQgb2Zmc2V0RGlkQ2hhbmdlKCk7CiAKQEAgLTU3LDM0ICsxMDQsMTUgQEAgcHVi
bGljOgogICAgIHZvaWQgZGlzY29ubmVjdEZyb21TY3JvbGxhYmxlQXJlYSgpIHsgbV9zY3JvbGxh
YmxlQXJlYSA9IDA7IH0KICAgICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEoKSBjb25z
dCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0
b21TY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIFNjcm9sbGJhck9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQotCi0g
ICAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbHJvdW5kZihtX2N1cnJlbnRQb3MpOyB9Ci0g
ICAgZmxvYXQgY3VycmVudFBvcygpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFBvczsgfQogICAg
IGludCBwcmVzc2VkUG9zKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzc2VkUG9zOyB9Ci0gICAgaW50
IHZpc2libGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlU2l6ZTsgfQotICAgIGludCB0
b3RhbFNpemUoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsU2l6ZTsgfQotICAgIGludCBtYXhpbXVt
KCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNpemUgLSBtX3Zpc2libGVTaXplOyB9ICAgICAgICAK
LSAgICBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udHJvbFNpemU7IH0KIAotICAgIGludCBsaW5lU3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlu
ZVN0ZXA7IH0KLSAgICBpbnQgcGFnZVN0ZXAoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VTdGVwOyB9
CiAgICAgZmxvYXQgcGl4ZWxTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9waXhlbFN0ZXA7IH0KIAot
ICAgIFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXNzZWRQ
YXJ0OyB9Ci0gICAgU2Nyb2xsYmFyUGFydCBob3ZlcmVkUGFydCgpIGNvbnN0IHsgcmV0dXJuIG1f
aG92ZXJlZFBhcnQ7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0SG92ZXJlZFBhcnQoU2Nyb2xsYmFy
UGFydCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFByZXNzZWRQYXJ0KFNjcm9sbGJhclBhcnQpOwot
CiAgICAgdm9pZCBzZXRTdGVwcyhpbnQgbGluZVN0ZXAsIGludCBwYWdlU3RlcCwgaW50IHBpeGVs
c1BlclN0ZXAgPSAxKTsKICAgICB2b2lkIHNldFByb3BvcnRpb24oaW50IHZpc2libGVTaXplLCBp
bnQgdG90YWxTaXplKTsKICAgICB2b2lkIHNldFByZXNzZWRQb3MoaW50IHApIHsgbV9wcmVzc2Vk
UG9zID0gcDsgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQq
LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKIAotICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wg
ZSk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QpOwogCiAgICAgdmlydHVhbCBib29sIGlzT3ZlcmxheVNjcm9sbGJhcigp
IGNvbnN0OwogICAgIGJvb2wgc2hvdWxkUGFydGljaXBhdGVJbkhpdFRlc3RpbmcoKTsKQEAgLTk3
LDcgKzEyNSw3IEBAIHB1YmxpYzoKICAgICBib29sIG1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50Jik7CiAgICAgdm9pZCBtb3VzZUVudGVyZWQoKTsKICAgICBib29sIG1vdXNlRXhp
dGVkKCk7Ci0gICAgCisKICAgICAvLyBVc2VkIGJ5IHNvbWUgcGxhdGZvcm0gc2Nyb2xsYmFycyB0
byBrbm93IHdoZW4gdGhleSd2ZSBiZWVuIHJlbGVhc2VkIGZyb20gY2FwdHVyZS4KICAgICBib29s
IG1vdXNlVXAoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKQEAgLTEwNiwxMCArMTM0LDcg
QEAgcHVibGljOgogICAgIFNjcm9sbGJhclRoZW1lKiB0aGVtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGhlbWU7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRQYXJlbnQoU2Nyb2xsVmlldyopOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVh
bCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKTsKLSAgICAKICAgICBib29sIHN1
cHByZXNzSW52YWxpZGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwcmVzc0ludmFsaWRhdGlv
bjsgfQogICAgIHZvaWQgc2V0U3VwcHJlc3NJbnZhbGlkYXRpb24oYm9vbCBzKSB7IG1fc3VwcHJl
c3NJbnZhbGlkYXRpb24gPSBzOyB9CiAKQEAgLTExNyw3ICsxNDIsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIEludFJlY3QgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYp
IGNvbnN0OwogICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNv
bnN0IEludFJlY3QmKSBjb25zdDsKLSAgICAKKwogICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVy
dFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKICAgICB2aXJ0dWFsIElu
dFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdDsK
IApAQCAtMTYwLDcgKzE4NSw3IEBAIHByb3RlY3RlZDoKIAogICAgIFRpbWVyPFNjcm9sbGJhcj4g
bV9zY3JvbGxUaW1lcjsKICAgICBib29sIG1fb3ZlcmxhcHNSZXNpemVyOwotICAgIAorCiAgICAg
Ym9vbCBtX3N1cHByZXNzSW52YWxpZGF0aW9uOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKaW5kZXggMmE4M2Q1Mzg1ZWFiYmNhY2ZmOGJlNTYzNDli
NGQxOWUzMmJiNmZjYy4uMTdlZjYzOGU2MDNiNDIxNjUyYTRkMGE5YjExZjkwNzQ3ZGE3NzA1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCkBAIC0zMyw3ICszMyw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKLWNs
YXNzIFNjcm9sbGJhcjsKK2NsYXNzIFNjcm9sbGJhclRoZW1lQ2xpZW50OwogY2xhc3MgU2Nyb2xs
VmlldzsKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgRU5BQkxFKFJVQkJF
Ul9CQU5ESU5HKQpAQCAtNDYsMTAgKzQ2LDEwIEBAIHB1YmxpYzoKICAgICBTY3JvbGxiYXJUaGVt
ZSgpIHsgfQogICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lKCkge307CiAKLSAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhciopIHsgfTsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyB9OwogCi0gICAg
dmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhciosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIC8qZGFtYWdlUmVjdCovKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgU2Ny
b2xsYmFyUGFydCBoaXRUZXN0KFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
IHsgcmV0dXJuIE5vUGFydDsgfQorICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIC8qZGFtYWdlUmVjdCov
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBoaXRUZXN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4g
Tm9QYXJ0OyB9CiAgICAgCiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9s
bGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcikgeyByZXR1cm4gMDsgfQogCkBAIC01
NywxMyArNTcsMTMgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJv
bFRpbnRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgdXNlc092
ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhciopIHsgfQorICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
KSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCB0aGVtZUNoYW5nZWQoKSB7fQogICAgIAogICAgIHZp
cnR1YWwgYm9vbCBpbnZhbGlkYXRlT25Nb3VzZUVudGVyRXhpdCgpIHsgcmV0dXJuIGZhbHNlOyB9
CiAKLSAgICB2b2lkIGludmFsaWRhdGVQYXJ0cyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xs
YmFyQ29udHJvbFBhcnRNYXNrIG1hc2spCisgICAgdm9pZCBpbnZhbGlkYXRlUGFydHMoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrIG1hc2sp
CiAgICAgewogICAgICAgICBpZiAobWFzayAmIEJhY2tCdXR0b25TdGFydFBhcnQpCiAgICAgICAg
ICAgICBpbnZhbGlkYXRlUGFydChzY3JvbGxiYXIsIEJhY2tCdXR0b25TdGFydFBhcnQpOwpAQCAt
ODEsNyArODEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBpbnZhbGlkYXRlUGFydChzY3JvbGxi
YXIsIEZvcndhcmRCdXR0b25FbmRQYXJ0KTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW52
YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCkge30KKyAgICB2aXJ0dWFsIHZv
aWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0KSB7
fQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIHsgZGVmYXVs
dFBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQsIGNvcm5lclJlY3QpOyB9CiAgICAgc3RhdGljIHZv
aWQgZGVmYXVsdFBhaW50U2Nyb2xsQ29ybmVyKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBjb250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBD
b2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOyB9CkBAIC05MywyMSArOTMsMjEgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRVcENvbnRlbnRTaGFkb3dMYXllcihHcmFwaGlj
c0xheWVyKikgeyB9CiAjZW5kaWYKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRo
dW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJh
ciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIHNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9sbGJhciosIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBp
bnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXIqKSB7IHJldHVybiAwOyB9IC8vIFRoZSBwb3NpdGlv
biBvZiB0aGUgdGh1bWIgcmVsYXRpdmUgdG8gdGhlIHRyYWNrLgotICAgIHZpcnR1YWwgaW50IHRo
dW1iTGVuZ3RoKFNjcm9sbGJhciopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIGxlbmd0aCBvZiB0aGUg
dGh1bWIgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIHNjcm9sbGJhci4KLSAgICB2aXJ0dWFsIGludCB0
cmFja1Bvc2l0aW9uKFNjcm9sbGJhciopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9m
IHRoZSB0cmFjayByZWxhdGl2ZSB0byB0aGUgc2Nyb2xsYmFyLgotICAgIHZpcnR1YWwgaW50IHRy
YWNrTGVuZ3RoKFNjcm9sbGJhciopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIGxlbmd0aCBvZiB0aGUg
dHJhY2sgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIHNjcm9sbGJhci4KKyAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZFNu
YXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJh
Z0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgaW50IHRodW1i
UG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiAwOyB9IC8vIFRoZSBwb3Np
dGlvbiBvZiB0aGUgdGh1bWIgcmVsYXRpdmUgdG8gdGhlIHRyYWNrLgorICAgIHZpcnR1YWwgaW50
IHRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4gMDsgfSAvLyBUaGUg
bGVuZ3RoIG9mIHRoZSB0aHVtYiBhbG9uZyB0aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLgorICAg
IHZpcnR1YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVy
biAwOyB9IC8vIFRoZSBwb3NpdGlvbiBvZiB0aGUgdHJhY2sgcmVsYXRpdmUgdG8gdGhlIHNjcm9s
bGJhci4KKyAgICB2aXJ0dWFsIGludCB0cmFja0xlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCop
IHsgcmV0dXJuIDA7IH0gLy8gVGhlIGxlbmd0aCBvZiB0aGUgdHJhY2sgYWxvbmcgdGhlIGF4aXMg
b2YgdGhlIHNjcm9sbGJhci4KIAogICAgIHZpcnR1YWwgaW50IG1heE92ZXJsYXBCZXR3ZWVuUGFn
ZXMoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpOyB9CiAKICAgICB2
aXJ0dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKSB7IHJldHVybiAwLjI1
OyB9CiAgICAgdmlydHVhbCBkb3VibGUgYXV0b3Njcm9sbFRpbWVyRGVsYXkoKSB7IHJldHVybiAw
LjA1OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKikg
e30KLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKSB7fQor
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCop
IHt9CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqKSB7fQogCiAgICAgdmlydHVhbCBib29sIGlzTW9ja1RoZW1lKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1l
Q2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM4ODI1MjdlOWU4YThhMzEwZDUzNWI2OWNkZjdjZjRhNTdm
ODUwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJh
clRoZW1lQ2xpZW50LmgKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2Nyb2xsYmFy
VGhlbWVDbGllbnRfaAorI2RlZmluZSBTY3JvbGxiYXJUaGVtZUNsaWVudF9oCisKKyNpbmNsdWRl
ICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgi
CisjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBT
Y3JvbGxWaWV3OworCitjbGFzcyBTY3JvbGxiYXJUaGVtZUNsaWVudCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+U2Nyb2xsYmFyVGhlbWVDbGllbnQoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBp
c0N1c3RvbVNjcm9sbGJhcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhck9yaWVu
dGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBpbnQgdmFsdWUo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50UG9zKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgaW50IHZpc2libGVTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50
IHRvdGFsU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBtYXhpbXVtKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUoKSBjb25z
dCA9IDA7CisKKyAgICB2aXJ0dWFsIGludCBsaW5lU3RlcCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGludCBwYWdlU3RlcCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFy
dCBwcmVzc2VkUGFydCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgaG92
ZXJlZFBhcnQoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sKSA9IDA7CisKKyAgICB2aXJ0
dWFsIGludCB4KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHkoKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBpbnQgd2lkdGgoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgaGVpZ2h0
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgSW50UG9pbnQgbG9jYXRpb24oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFNj
cm9sbFZpZXcqIHBhcmVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNjcm9sbFZpZXcqIHJv
b3QoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IElu
dFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGZyYW1lUmVjdCgpIGNvbnN0ID0gMDsK
KworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBp
bnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOworCisgICAgdmlydHVhbCBTY3JvbGxi
YXJPdmVybGF5U3R5bGUgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBnZXRUaWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JikgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgYm9vbCBpc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkgY29uc3QgPSAwOworCisgICAg
dmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coY29uc3QgSW50UG9p
bnQmIHdpbmRvd1BvaW50KSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBTY29sbGJhclRoZW1lQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAppbmRleCBmY2JmNDg0YzA5NTFiNWIw
YWZiOWJjN2I1ZmJjNTZjZmVjOWE5ODVlLi5lMjk2NjlmOGQ1YzlmNzczZDk3ZWJmYjNjZmQ0NmEy
NDFmN2FhMTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGUuY3BwCkBAIC0zMywxNSArMzMsMTQgQEAKICNpbmNsdWRlICJHcmFwaGlj
c0NvbnRleHQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1Nb3VzZUV2
ZW50LmgiCi0jaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCi0jaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEu
aCIKKyNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNsaWVudC5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9v
bCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
KQorYm9vbCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IElu
dFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgLy8gQ3JlYXRlIHRoZSBTY3JvbGxiYXJDb250cm9s
UGFydE1hc2sgYmFzZWQgb24gdGhlIGRhbWFnZVJlY3QKICAgICBTY3JvbGxiYXJDb250cm9sUGFy
dE1hc2sgc2Nyb2xsTWFzayA9IE5vUGFydDsKQEAgLTExNiw3ICsxMTUsNyBAQCBib29sIFNjcm9s
bGJhclRoZW1lQ29tcG9zaXRlOjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3ND
b250ZXh0KiBncmFwaAogICAgIHJldHVybiB0cnVlOwogfQogCi1TY3JvbGxiYXJQYXJ0IFNjcm9s
bGJhclRoZW1lQ29tcG9zaXRlOjpoaXRUZXN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK1Njcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OmhpdFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgU2Nyb2xsYmFyUGFydCByZXN1bHQgPSBOb1Bh
cnQ7CiAgICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKQEAgLTE1NSw3ICsxNTQsNyBAQCBT
Y3JvbGxiYXJQYXJ0IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpoaXRUZXN0KFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBjb25zdCBQbGF0ZgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhciogc2Nyb2xsYmFy
LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjppbnZh
bGlkYXRlUGFydChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0
IHBhcnQpCiB7CiAgICAgaWYgKHBhcnQgPT0gTm9QYXJ0KQogICAgICAgICByZXR1cm47CkBAIC0x
OTUsNyArMTk0LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aW52YWxpZGF0ZVBh
cnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICBzY3JvbGxiYXItPmlu
dmFsaWRhdGVSZWN0KHJlc3VsdCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6
OnNwbGl0VHJhY2soU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29uc3Ry
YWluZWRUcmFja1JlY3QsIEludFJlY3QmIGJlZm9yZVRodW1iUmVjdCwgSW50UmVjdCYgdGh1bWJS
ZWN0LCBJbnRSZWN0JiBhZnRlclRodW1iUmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3Np
dGU6OnNwbGl0VHJhY2soU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50
UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCwgSW50UmVjdCYgYmVmb3JlVGh1bWJSZWN0LCBJ
bnRSZWN0JiB0aHVtYlJlY3QsIEludFJlY3QmIGFmdGVyVGh1bWJSZWN0KQogewogICAgIC8vIFRo
aXMgZnVuY3Rpb24gd29uJ3QgZXZlbiBnZXQgY2FsbGVkIHVubGVzcyB3ZSdyZSBiaWcgZW5vdWdo
IHRvIGhhdmUgc29tZSBjb21iaW5hdGlvbiBvZiB0aGVzZSB0aHJlZSByZWN0cyB3aGVyZSBhdCBs
ZWFzdAogICAgIC8vIG9uZSBvZiB0aGVtIGlzIG5vbi1lbXB0eS4KQEAgLTIxNSw3ICsyMTQsNyBA
QCB2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxpdFRyYWNrKFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bgogCiAvLyBSZXR1cm5zIHRoZSBzaXplIHJlcHJlc2Vu
dGVkIGJ5IHRyYWNrIHRha2luZyBpbnRvIGFjY291bnQgc2Nyb2xsaW5nIHBhc3QKIC8vIHRoZSBl
bmQgb2YgdGhlIGRvY3VtZW50Lgotc3RhdGljIGZsb2F0IHVzZWRUb3RhbFNpemUoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIpCitzdGF0aWMgZmxvYXQgdXNlZFRvdGFsU2l6ZShTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyKQogewogICAgIGZsb2F0IG92ZXJoYW5nQXRTdGFydCA9IC1zY3JvbGxi
YXItPmN1cnJlbnRQb3MoKTsKICAgICBmbG9hdCBvdmVyaGFuZ0F0RW5kID0gc2Nyb2xsYmFyLT5j
dXJyZW50UG9zKCkgKyBzY3JvbGxiYXItPnZpc2libGVTaXplKCkgLSBzY3JvbGxiYXItPnRvdGFs
U2l6ZSgpOwpAQCAtMjIzLDcgKzIyMiw3IEBAIHN0YXRpYyBmbG9hdCB1c2VkVG90YWxTaXplKFNj
cm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiBzY3JvbGxiYXItPnRvdGFsU2l6ZSgpICsg
b3Zlcmhhbmc7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJQb3NpdGlv
bihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1
bWJQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChz
Y3JvbGxiYXItPmVuYWJsZWQoKSkgewogICAgICAgICBmbG9hdCBwb3MgPSBtYXgoMC4wZiwgc2Ny
b2xsYmFyLT5jdXJyZW50UG9zKCkpICogKHRyYWNrTGVuZ3RoKHNjcm9sbGJhcikgLSB0aHVtYkxl
bmd0aChzY3JvbGxiYXIpKSAvICh1c2VkVG90YWxTaXplKHNjcm9sbGJhcikgLSBzY3JvbGxiYXIt
PnZpc2libGVTaXplKCkpOwpAQCAtMjMyLDcgKzIzMSw3IEBAIGludCBTY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZTo6dGh1bWJQb3NpdGlvbihTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICByZXR1cm4g
MDsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYkxlbmd0aChTY3JvbGxi
YXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJMZW5ndGgo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoIXNjcm9sbGJhci0+
ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI0NiwxOCArMjQ1LDE4IEBAIGludCBT
Y3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
CiAgICAgcmV0dXJuIGxlbmd0aDsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpt
aW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGU6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyKQogewogICAgIHJldHVybiBzY3JvbGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLT5jb250
cm9sU2l6ZSgpKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja1Bvc2l0
aW9uKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0
cmFja1Bvc2l0aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgSW50
UmVjdCBjb25zdHJhaW5lZFRyYWNrUmVjdCA9IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVj
ZXMoc2Nyb2xsYmFyLCB0cmFja1JlY3Qoc2Nyb2xsYmFyKSk7CiAgICAgcmV0dXJuIChzY3JvbGxi
YXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgPyBjb25zdHJhaW5lZFRy
YWNrUmVjdC54KCkgLSBzY3JvbGxiYXItPngoKSA6IGNvbnN0cmFpbmVkVHJhY2tSZWN0LnkoKSAt
IHNjcm9sbGJhci0+eSgpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNr
TGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRl
Ojp0cmFja0xlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIElu
dFJlY3QgY29uc3RyYWluZWRUcmFja1JlY3QgPSBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGll
Y2VzKHNjcm9sbGJhciwgdHJhY2tSZWN0KHNjcm9sbGJhcikpOwogICAgIHJldHVybiAoc2Nyb2xs
YmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpID8gY29uc3RyYWluZWRU
cmFja1JlY3Qud2lkdGgoKSA6IGNvbnN0cmFpbmVkVHJhY2tSZWN0LmhlaWdodCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgKaW5kZXgg
MTFiM2JkNDcwMDE4N2ZmMTgyYjA0NWI0NTJjZGMyNGRhMzNlNzU5MC4uOGVkZDRiYmFjOTgwNDBk
MDNmYzRiMzBlZWIyMWFhOTk1ZTNkMmVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oCkBAIC0zMiw0MCArMzIsNDAgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSA6IHB1YmxpYyBT
Y3JvbGxiYXJUaGVtZSB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJh
ciosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7
CisgICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKIAotICAgIHZpcnR1
YWwgU2Nyb2xsYmFyUGFydCBoaXRUZXN0KFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYpOworICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBoaXRUZXN0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
aW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCB2
b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCk7
CiAKLSAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9sbGJhciopOwotICAgIHZpcnR1
YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgaW50IHRyYWNrUG9z
aXRpb24oU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFy
Kik7CisgICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCop
OworICAgIHZpcnR1YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Cisg
ICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAg
IHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4
dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludE92
ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3Qm
IGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdB
cmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVh
bCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKikgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBoYXNU
aHVtYihTY3JvbGxiYXIqKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJh
clRoZW1lQ2xpZW50KikgPSAwOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0
KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOwot
ICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxi
YXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpID0gMDsKLSAgICB2aXJ0dWFsIEludFJlY3Qg
dHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOworICAgIHZp
cnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9s
bGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOworICAgIHZpcnR1YWwgSW50UmVj
dCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQs
IGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1Jl
Y3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpID0gMDsKIAot
ICAgIHZpcnR1YWwgdm9pZCBzcGxpdFRyYWNrKFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmIHRy
YWNrLCBJbnRSZWN0JiBzdGFydFRyYWNrLCBJbnRSZWN0JiB0aHVtYiwgSW50UmVjdCYgZW5kVHJh
Y2spOworICAgIHZpcnR1YWwgdm9pZCBzcGxpdFRyYWNrKFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
Y29uc3QgSW50UmVjdCYgdHJhY2ssIEludFJlY3QmIHN0YXJ0VHJhY2ssIEludFJlY3QmIHRodW1i
LCBJbnRSZWN0JiBlbmRUcmFjayk7CiAgICAgCi0gICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1i
TGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChT
Y3JvbGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFy
QmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqKSB7fQotICAgIHZpcnR1YWwg
dm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBj
b25zdCBJbnRSZWN0Jikge30KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSB7
fQotICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxi
YXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkge30KLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jikg
e30KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIHt9CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xs
YmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopIHt9
CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIHt9CisgICAgdmlydHVhbCB2
b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSB7fQorICAgIHZpcnR1YWwgdm9pZCBw
YWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0
IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSB7fQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1i
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYp
IHt9CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIHt9CiAKLSAgICB2aXJ0dWFsIElu
dFJlY3QgY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0JiByZWN0KSB7IHJldHVybiByZWN0OyB9CisgICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0
cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJ
bnRSZWN0JiByZWN0KSB7IHJldHVybiByZWN0OyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0u
Y3BwCmluZGV4IGY4Y2IyODE1NDg2MWUwMWRhNzExMjQ5MjBjNjBkMDZhMzdlOWExODMuLjY4MmQ4
MmQ1YjMzNzkxOGIyNWQwOThiYTc3MTczNGU3OTE1MDVlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0u
Y3BwCkBAIC0zOSwxNCArMzksMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW06Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9v
bCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQogewogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGp1c3QgY2FsbGVkIGFzIGEgcGFp
bnQtdGltZSBvcHRpbWl6YXRpb24gdG8gc2VlIGlmCiAgICAgLy8gcGFpbnRpbmcgdGhlIHRodW1i
IGNhbiBiZSBza2lwcGVkLiAgV2UgZG9uJ3QgaGF2ZSB0byBiZSBleGFjdCBoZXJlLgogICAgIHJl
dHVybiB0aHVtYkxlbmd0aChzY3JvbGxiYXIpID4gMDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xs
YmFyUGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpiYWNr
QnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0
IHBhcnQsIGJvb2wpCiB7CiAgICAgLy8gV2luZG93cyBhbmQgTGludXgganVzdCBoYXZlIHNpbmds
ZSBhcnJvd3MuCiAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRvbkVuZFBhcnQpCkBAIC01Niw3ICs1
Niw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6YmFja0J1dHRvblJlY3QoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhCiAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xs
YmFyLT54KCksIHNjcm9sbGJhci0+eSgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwog
fQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OmZvcndhcmRCdXR0b25SZWN0KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNj
cm9sbGJhclRoZW1lQ2hyb21pdW06OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICAvLyBXaW5k
b3dzIGFuZCBMaW51eCBqdXN0IGhhdmUgc2luZ2xlIGFycm93cy4KICAgICBpZiAocGFydCA9PSBG
b3J3YXJkQnV0dG9uU3RhcnRQYXJ0KQpAQCAtNzQsNyArNzQsNyBAQCBJbnRSZWN0IFNjcm9sbGJh
clRoZW1lQ2hyb21pdW06OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBT
Y3JvbGxiYQogICAgIHJldHVybiBJbnRSZWN0KHgsIHksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6dHJhY2tSZWN0KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
Ojp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCkKIHsKICAg
ICBJbnRTaXplIGJzID0gYnV0dG9uU2l6ZShzY3JvbGxiYXIpOwogICAgIC8vIFRoZSBidXR0b25z
IGF0IHRoZSB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgc2Nyb2xsYmFyIGFyZSBzcXVhcmUsIHNvIHRo
ZQpAQCAtOTIsMTQgKzkyLDE0IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6dHJh
Y2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQogICAgIHJldHVybiBJbnRSZWN0KHNj
cm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIGJzLmhlaWdodCgpLCB0aGlja25lc3MsIHNj
cm9sbGJhci0+aGVpZ2h0KCkgLSAyICogYnMuaGVpZ2h0KCkpOwogfQogCi12b2lkIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW06OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCkKIHsKICAgICAvLyBKdXN0IGFzc3VtZSBhIGZvcndhcmQgdHJhY2sgcGFydC4gIFdl
IG9ubHkgcGFpbnQgdGhlIHRyYWNrIGFzIGEgc2luZ2xlIHBpZWNlIHdoZW4gdGhlcmUgaXMgbm8g
dGh1bWIuCiAgICAgaWYgKCFoYXNUaHVtYihzY3JvbGxiYXIpKQogICAgICAgICBwYWludFRyYWNr
UGllY2UoY29udGV4dCwgc2Nyb2xsYmFyLCByZWN0LCBGb3J3YXJkVHJhY2tQYXJ0KTsKIH0KIAot
dm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQor
dm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSAhPSBWZXJ0aWNh
bFNjcm9sbGJhcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBTY3JvbGxiYXIqCiAKICAgICAvLyBHZXQgdGhlIHRpY2ttYXJrcyBmb3IgdGhlIGZyYW1l
dmlldy4KICAgICBWZWN0b3I8SW50UmVjdD4gdGlja21hcmtzOwotICAgIHNjcm9sbGJhci0+c2Ny
b2xsYWJsZUFyZWEoKS0+Z2V0VGlja21hcmtzKHRpY2ttYXJrcyk7CisgICAgc2Nyb2xsYmFyLT5n
ZXRUaWNrbWFya3ModGlja21hcmtzKTsKICAgICBpZiAoIXRpY2ttYXJrcy5zaXplKCkpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oCmluZGV4IDExNzgxMjU2OWY2OWYyMDAzNzFi
YWMwZjlkYTg3YTdjMzJkZTRmYTUuLmNmNjcxZGQ5ODRjMDc5MDk5NWM2N2Q3ZDBmMThjNWI0YTZm
NmNmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmgKQEAgLTQxLDE3ICs0MSwxNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgLy8gV2luZG93cyBhbmQgTGludXguCiAgICAgY2xhc3MgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bSA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB7CiAgICAgcHJv
dGVjdGVkOgotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKSB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKTsK
KyAgICAgICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7
IHJldHVybiB0cnVlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJU
aGVtZUNsaWVudCopOwogCi0gICAgICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgICAg
ICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFy
UGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICAgICAgdmlydHVhbCBJbnRSZWN0IHRy
YWNrUmVjdChTY3JvbGxiYXIqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgICAgICB2aXJ0
dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxi
YXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgICAgICB2aXJ0dWFsIEludFJlY3Qg
Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBi
b29sIHBhaW50aW5nID0gZmFsc2UpOworICAgICAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKIAotICAgICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNr
bWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IEludFJlY3QmKTsKIAotICAgICAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6
ZShTY3JvbGxiYXIqKSA9IDA7CisgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNj
cm9sbGJhclRoZW1lQ2xpZW50KikgPSAwOwogICAgIH07CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcAppbmRleCAxZGJlZmE2NDljMDg5
NzJlYjFjMmIzN2I3NDc3MWIwZDYxYmVhNWFkLi5lMWU1NWExZmMxM2Q3OWMwZjllOGY0NzMwYmU4
OTc4MDk0YzFmNjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwCkBAIC01
Nyw3ICs1Nyw3IEBAIGludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6c2Nyb2xsYmFy
VGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyCiAgICAgcmV0dXJuIHNjcm9sbGJh
clRoaWNrbmVzc1ZhbHVlOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lk
OjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3Jv
bGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBh
aW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgLy8gUGFpbnQgYmxhY2sgYmFja2dyb3Vu
ZCBpbiBEdW1wUmVuZGVyVHJlZSwgb3RoZXJ3aXNlIHRoZSBwaXhlbHMgaW4gdGhlIHNjcm9sbGJh
ciBhcmVhIGRlcGVuZAogICAgIC8vIG9uIHRoZWlyIHByZXZpb3VzIHN0YXRlLCB3aGljaCBtYWtl
cyB0aGUgZHVtcGVkIHJlc3VsdCB1bmRldGVybWluZWQuCkBAIC02NSwxMiArNjUsMTIgQEAgdm9p
ZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5k
KEdyYXBoaWNzQ29udGV4dCogY28KICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3Qoc2Nyb2xsYmFy
LT5mcmFtZVJlY3QoKSwgQ29sb3I6OmJsYWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAot
Ym9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6c2hvdWxkQ2VudGVyT25UaHVtYihT
Y3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YnV0dG9uU2l6
ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKK0ludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFu
ZHJvaWQ6OmJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAg
ICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKQogICAg
ICAgICByZXR1cm4gSW50U2l6ZShzY3JvbGxiYXJUaGlja25lc3NWYWx1ZSwgYnV0dG9uTGVuZ3Ro
KTsKQEAgLTc4LDcgKzc4LDcgQEAgSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9p
ZDo6YnV0dG9uU2l6ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICByZXR1cm4gSW50U2l6ZShi
dXR0b25MZW5ndGgsIHNjcm9sbGJhclRoaWNrbmVzc1ZhbHVlKTsKIH0KIAotaW50IFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1BbmRyb2lkOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6Om1pbmltdW1UaHVtYkxl
bmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiAyICog
c2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtQW5kcm9pZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUFuZHJvaWQuaAppbmRleCBmMDdjOTAxNjc4NmNiMjRmODhkZmI5NGFlNGZj
MjE2ZmU2ZTcwYmZjLi5mM2RiODBlNTJmYmY1MGMxZGY2OGE5NDBlYTlkNDczZjJkYmYyODY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtQW5kcm9pZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmgKQEAgLTM1LDEwICszNSwxMCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xT
aXplKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBib29sIHNo
b3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7
Ci0gICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVh
bCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgdm9pZCBw
YWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgSW50
U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQg
bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAppbmRleCBlYzY4
NDA3ZTlkOGMzMmUzMGQzMTBkMmU1MDU4YzJkYTdkYmRlY2M2Li42YjRkYWZjMzczZjEwZDBhYTJk
NmU5NjYyYWJlNjNkZDVkYjY1ZTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHAK
QEAgLTUwLDcgKzUwLDcgQEAgaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6c2Nyb2xs
YmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2wKICAgICByZXR1cm4gc2Ny
b2xsYmFyU2l6ZS53aWR0aCgpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51
eDo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQordm9pZCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRl
eHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQogewogICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhl
bWVQYWludFN0YXRlIHN0YXRlID0gc2Nyb2xsYmFyLT5ob3ZlcmVkUGFydCgpID09IHBhcnRUeXBl
ID8gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZUhvdmVyIDogUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZU5v
cm1hbDsKICAgICBJbnRSZWN0IGFsaWduUmVjdCA9IHRyYWNrUmVjdChzY3JvbGxiYXIsIGZhbHNl
KTsKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBh
aW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIKICAgICAgICAgJmV4
dHJhUGFyYW1zKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50
QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1MaW51eDo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBw
YXJ0KQogewogICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYXJ0IHBhaW50UGFydDsKICAgICBQ
bGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0ZSA9IFBsYXRmb3JtU3VwcG9ydDo6
U3RhdGVOb3JtYWw7CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTGludXg6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2MK
ICAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBhaW50VGhlbWVQYXJ0KGdjLCBwYWludFBhcnQsIHN0YXRl
LCByZWN0LCAwKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50
VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUaHVt
YihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBj
b25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0
YXRlIHN0YXRlOwogCkBAIC0xMjAsMTIgKzEyMCwxMiBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1MaW51eDo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqIHNj
cgogICAgICAgICAwKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNo
b3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBl
dnQpCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6c2hvdWxkQ2VudGVyT25UaHVt
YihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQog
ewogICAgIHJldHVybiAoZXZ0LnNoaWZ0S2V5KCkgJiYgZXZ0LmJ1dHRvbigpID09IExlZnRCdXR0
b24pIHx8IChldnQuYnV0dG9uKCkgPT0gTWlkZGxlQnV0dG9uKTsKIH0KIAotSW50U2l6ZSBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTGludXg6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
CitJbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6YnV0dG9uU2l6ZShTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0
aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAgICAgSW50U2l6ZSBzaXplID0gUGxh
dGZvcm1TdXBwb3J0OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9s
bGJhclVwQXJyb3cpOwpAQCAtMTM3LDcgKzEzNyw3IEBAIEludFNpemUgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUxpbnV4OjpidXR0b25TaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVy
biBJbnRTaXplKHNjcm9sbGJhci0+d2lkdGgoKSA8IDIgKiBzaXplLndpZHRoKCkgPyBzY3JvbGxi
YXItPndpZHRoKCkgLyAyIDogc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIH0KIAotaW50
IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJh
ciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6bWluaW11bVRo
dW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKHNj
cm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgewogICAgICAgICBJ
bnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFydFNpemUoUGxhdGZvcm1T
dXBwb3J0OjpQYXJ0U2Nyb2xsYmFyVmVydGljYWxUaHVtYik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1M
aW51eC5oCmluZGV4IDhlODAyZTczNDFiNzc1YjU5NTVhZDBkZWMwYjhlZWQ1NmY3OTcyNzMuLjMz
MGQwM2ZiMDIzMjEzNGVjMmNhMjk0MTlmZGFiMjczNDk0NzU0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1MaW51eC5oCkBAIC0zOSwxMiArMzksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUp
OwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNl
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQ
YXJ0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3Qg
SW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3Jv
bGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICAgICAgdmlydHVhbCBJbnRT
aXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKik7Ci0gICAgICAgIHZpcnR1YWwgaW50IG1pbmltdW1U
aHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQ
aWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNj
cm9sbGJhclBhcnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAg
dmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICAgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRv
blNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICAgICAgdmlydHVhbCBpbnQgbWluaW11
bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAgICAgfTsKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCmluZGV4IDQxYTE5OGUzZjg0MjBj
ODQ4OTQ1ZmI4NDc0NGRkYjcwMDI0Y2Q2ZTUuLjRkMzQyNmJiNjIwNzk5YmEzZDkwODNiNmRjODk0
MWNhYjQ0MjZlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgKQEAgLTM2LDEyICszNiwxMiBA
QCBwdWJsaWM6CiAgICAgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYygpOwogICAgIHZpcnR1YWwg
flNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludChT
Y3JvbGxiYXIqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFn
ZVJlY3QpOworICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRS
ZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKICAg
ICAKIHByaXZhdGU6Ci0gICAgdm9pZCBwYWludEdpdmVuVGlja21hcmtzKEdyYXBoaWNzQ29udGV4
dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBjb25zdCBWZWN0b3I8SW50UmVjdD4mKTsK
KyAgICB2b2lkIHBhaW50R2l2ZW5UaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgVmVjdG9yPEludFJlY3Q+Jik7CiAK
ICAgICBSZWZQdHI8UGF0dGVybj4gbV9vdmVyaGFuZ1BhdHRlcm47CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1NYWMubW0KaW5kZXggNDU5YTU4YjA3NmY3MDA2ZjI3NzY1YjAyNDk3YTA5OTM1ZjgyM2Zi
Ny4uOWY3YTNmMzBkNzFhM2Q2Mzc2NDE1ZDAzZWVmOTEwNTcxZmNmYmNhMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjLm1tCkBAIC02MSwxMSArNjEsMTEgQEAgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bU1hYzo6flNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMoKQogewogfQogCi1zdGF0aWMgUGxhdGZv
cm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc2Nyb2xsYmFyU3RhdGVUb1RoZW1lU3RhdGUoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCitzdGF0aWMgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3Rh
dGUgc2Nyb2xsYmFyU3RhdGVUb1RoZW1lU3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhcikKIHsKICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm4g
UGxhdGZvcm1TdXBwb3J0OjpTdGF0ZURpc2FibGVkOwotICAgIGlmICghc2Nyb2xsYmFyLT5zY3Jv
bGxhYmxlQXJlYSgpLT5pc0FjdGl2ZSgpKQorICAgIGlmICghc2Nyb2xsYmFyLT5pc1Njcm9sbGFi
bGVBcmVhQWN0aXZlKCkpCiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlSW5h
Y3RpdmU7CiAgICAgaWYgKHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCiAg
ICAgICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlUHJlc3NlZDsKQEAgLTk0LDExICs5
NCwxMSBAQCBzdGF0aWMgdm9pZCBzY3JvbGxiYXJQYWludGVyUGFpbnRUcmFjayhTY3JvbGxiYXJQ
YWludGVyIHNjcm9sbGJhclBhaW50ZXIsIGJvb2wgZQogLy8gICAgIC0gZHJhd2luZyB1c2luZyBQ
bGF0Zm9ybVN1cHBvcnQgZnVuY3Rpb25zCiAvLyAgICAgLSBkcmF3aW5nIHRpY2ttYXJrcwogLy8g
ICAgIC0gU2tpYSBzcGVjaWZpYyBjaGFuZ2VzCi1ib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1N
YWM6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1N
YWM6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsKICAgICAvLyBHZXQgdGhl
IHRpY2ttYXJrcyBmb3IgdGhlIGZyYW1ldmlldy4KICAgICBWZWN0b3I8SW50UmVjdD4gdGlja21h
cmtzOwotICAgIHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+Z2V0VGlja21hcmtzKHRpY2tt
YXJrcyk7CisgICAgc2Nyb2xsYmFyLT5nZXRUaWNrbWFya3ModGlja21hcmtzKTsKIAogICAgIGlm
IChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkgewogICAgICAgICBmbG9hdCB2YWx1
ZSA9IDA7CkBAIC0xODgsNyArMTg4LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
OjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb24KICAgICBp
ZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQogICAgICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUg
PSBrVGhlbWVUcmFja0Rpc2FibGVkOwogICAgIGVsc2UKLSAgICAgICAgdHJhY2tJbmZvLmVuYWJs
ZVN0YXRlID0gc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5pc0FjdGl2ZSgpID8ga1RoZW1l
VHJhY2tBY3RpdmUgOiBrVGhlbWVUcmFja0luYWN0aXZlOworICAgICAgICB0cmFja0luZm8uZW5h
YmxlU3RhdGUgPSBzY3JvbGxiYXItPmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSA/IGtUaGVtZVRy
YWNrQWN0aXZlIDoga1RoZW1lVHJhY2tJbmFjdGl2ZTsKIAogICAgIGlmICghaGFzQnV0dG9ucyhz
Y3JvbGxiYXIpKQogICAgICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBrVGhlbWVUcmFja05v
dGhpbmdUb1Njcm9sbDsKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1NYWM6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNv
bgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6
OnBhaW50R2l2ZW5UaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIq
IHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgVmVjdG9yPEludFJlY3Q+JiB0
aWNrbWFya3MpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50R2l2ZW5UaWNr
bWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHRpY2tt
YXJrcykKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpICE9IFZlcnRpY2FsU2Ny
b2xsYmFyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwCmluZGV4
IGY0MzU4MzlkODIxODU2NGY4MDI3MjhkMzI4NTMyMGQxZTBjZGJhYzguLmEwODE5ODM0NzQ5MWRj
YzVkOGYwMjJhMTIyODg5MGQ2NTc3ZmUzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3Bw
CkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6aW52YWxp
ZGF0ZU9uTW91c2VFbnRlckV4aXQoKQogICAgIHJldHVybiB3aW5kb3dzVmVyc2lvbigpID49IFdp
bmRvd3NWaXN0YTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpzaG91bGRT
bmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnNob3VsZFNu
YXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIC8vIEZpbmQgdGhlIHJlY3Qgd2l0aGlu
IHdoaWNoIHdlIHNob3VsZG4ndCBzbmFwLCBieSBleHBhbmRpbmcgdGhlIHRyYWNrIHJlY3QKICAg
ICAvLyBpbiBib3RoIGRpbWVuc2lvbnMuCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsCiAgICAgcmV0dXJuICFyZWN0LmNvbnRhaW5zKG1vdXNlUG9zaXRpb24pOwogfQog
Ci12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VHJhY2tQaWVjZShHcmFwaGlj
c0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwg
U2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6
cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUp
CiB7CiAgICAgYm9vbCBob3J6ID0gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250
YWxTY3JvbGxiYXI7CiAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1XaW46OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIq
CiAgICAgICAgIGFsaWduUmVjdCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bjo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFy
UGFydCBwYXJ0KQogewogICAgIGJvb2wgaG9yeiA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9
PSBIb3Jpem9udGFsU2Nyb2xsYmFyOwogCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtV2luOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3Jv
bGxiYXIqIHNjcm8KICAgICAgICAgcmVjdCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bVdpbjo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bjo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGJvb2wgaG9yeiA9IHNjcm9s
bGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyOwogCkBAIC0xNTIsNyAr
MTUyLDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWludFRodW1iKEdyYXBo
aWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2Nyb2wKICAgICAgICAgcmVjdCk7CiB9CiAKLWlu
dCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZVN0YXRlKFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpIGNvbnN0CitpbnQgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBT
Y3JvbGxiYXJQYXJ0IHBhcnQpIGNvbnN0CiB7CiAgICAgLy8gV2hlbiBkcmFnZ2luZyB0aGUgdGh1
bWIsIGRyYXcgdGh1bWIgcHJlc3NlZCBhbmQgb3RoZXIgc2VnbWVudHMgbm9ybWFsCiAgICAgLy8g
cmVnYXJkbGVzcyBvZiB3aGVyZSB0aGUgY3Vyc29yIGFjdHVhbGx5IGlzLiAgU2VlIGFsc28gZm91
ciBwbGFjZXMgaW4KQEAgLTE3MSw3ICsxNzEsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bVdpbjo6Z2V0VGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydAog
ICAgIHJldHVybiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpID09IHBhcnQpID8gU0NSQlNfUFJF
U1NFRCA6IFNDUkJTX05PUk1BTDsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46
OmdldFRoZW1lQXJyb3dTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBw
YXJ0KSBjb25zdAoraW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldFRoZW1lQXJyb3dT
dGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQp
IGNvbnN0CiB7CiAgICAgLy8gV2UgY291bGQgdGFrZSBhZHZhbnRhZ2Ugb2Yga25vd2luZyB0aGUg
dmFsdWVzIGluIHRoZSBzdGF0ZSBlbnVtIHRvIHdyaXRlCiAgICAgLy8gc29tZSBzaW1wbGVyIGNv
ZGUsIGJ1dCB0cmVhdGluZyB0aGUgc3RhdGUgZW51bSBhcyBhIGJsYWNrIGJveCBzZWVtcwpAQCAt
MjIxLDcgKzIyMSw3IEBAIGludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFy
cm93U3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhCiAgICAgcmV0dXJuIChzY3Jv
bGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gcGFydCkgPyBBQlNfRE9XTlBSRVNTRUQgOiBBQlNfRE9X
Tk5PUk1BTDsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldENsYXNzaWNU
aGVtZVN0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpIGNvbnN0
CitpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3NpY1RoZW1lU3RhdGUoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KSBjb25zdAog
ewogICAgIC8vIFdoZW4gZHJhZ2dpbmcgdGhlIHRodW1iLCBkcmF3IHRoZSBidXR0b25zIG5vcm1h
bCBldmVuIHdoZW4gaG92ZXJlZC4KICAgICBpZiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpID09
IFRodW1iUGFydCkKQEAgLTIzNSwxMiArMjM1LDEyIEBAIGludCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtV2luOjpnZXRDbGFzc2ljVGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xs
CiAgICAgcmV0dXJuIChzY3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gcGFydCkgPyAoREZDU19Q
VVNIRUQgfCBERkNTX0ZMQVQpIDogMDsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
V2luOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpzaG91bGRDZW50ZXJP
blRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBl
dnQpCiB7CiAgICAgcmV0dXJuIGV2dC5zaGlmdEtleSgpICYmIGV2dC5idXR0b24oKSA9PSBMZWZ0
QnV0dG9uOwogfQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmJ1dHRvblNp
emUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitJbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1X
aW46OmJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICAv
LyBPdXIgZGVzaXJlZCByZWN0IGlzIGVzc2VudGlhbGx5IHRoaWNrbmVzcyBieSB0aGlja25lc3Mu
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1XaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uaAppbmRleCA2OWNmYTEzMWM1Y2IwNGU5YjUyMTBiNzY1
Y2ZiNDgxZThkZGNiMTM1Li5hYzg4ODFmOTNiNWRiMWFmZjQ2NzlhNjA2M2U3YmE3ZTg2ZjU1MWZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5oCkBAIC0zOCwxOSArMzgsMTkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhp
Y2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplKTsKICAgICAgICAgdmlydHVhbCBib29sIGludmFs
aWRhdGVPbk1vdXNlRW50ZXJFeGl0KCk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTbmFw
QmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsK
KyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKICAgICBwcm90ZWN0
ZWQ6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29u
c3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
aHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpOwotICAgICAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShT
Y3JvbGxiYXIqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGlj
c0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxi
YXJQYXJ0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4
dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVhbCBib29s
IHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmKTsKKyAgICAgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGludCBnZXRUaGVtZVN0
YXRlKFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQpIGNvbnN0OwotICAgICAgICBpbnQgZ2V0VGhl
bWVBcnJvd1N0YXRlKFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQpIGNvbnN0OwotICAgICAgICBp
bnQgZ2V0Q2xhc3NpY1RoZW1lU3RhdGUoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCkgY29uc3Q7
CisgICAgICAgIGludCBnZXRUaGVtZVN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xs
YmFyUGFydCkgY29uc3Q7CisgICAgICAgIGludCBnZXRUaGVtZUFycm93U3RhdGUoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0KSBjb25zdDsKKyAgICAgICAgaW50IGdldENsYXNz
aWNUaGVtZVN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCkgY29uc3Q7
CiAgICAgfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5jcHAKaW5kZXggNjJkZjAwNWQ2NzU3MWQx
NGFkMzk0MzYwZDU2YzQ5OGU0ZGY5MmJmYi4uMjQwYjUwMTQ3NzljMTgyZDE0MzkwYzNmOGMzOTM3
NzU3N2U5M2E4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9s
bGJhclRoZW1lRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xs
YmFyVGhlbWVFZmwuY3BwCkBAIC00OSwxMSArNDksMTEgQEAgaW50IFNjcm9sbGJhclRoZW1lRWZs
OjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiAg
ICAgcmV0dXJuIDA7IC8vIHdlIHBhaW50IG9uIHRvcAogfQogCi12b2lkIFNjcm9sbGJhclRoZW1l
RWZsOjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xs
YmFyVGhlbWVFZmw6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIpCiB7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVFZmw6OnVucmVnaXN0ZXJTY3JvbGxi
YXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lRWZsOjp1bnJlZ2lz
dGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmgKaW5kZXgg
MGZlMTY4ODFlMmU0NTZlNmUxMjMwMWFlZWY4NmMyNjViZDMzMjM0Yi4uZmM3MWNiZWQ4OTBhMWE2
NWE5YTAyYWQ4YTAzZDM4ZmRjOTlhZDNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmgKQEAgLTM5LDggKzM5LDggQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0g
UmVndWxhclNjcm9sbGJhcik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xs
YmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3Jv
bGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcik7CisgICAgdmlydHVhbCB2b2lk
IHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcik7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFy
VGhlbWVHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1l
R3RrLmNwcAppbmRleCBlOTkzNjRmMmE3ZmNhZjQ4ODgzMGI0NjhkZTFkMThhZDc1MDRlOTBmLi45
NGUzZmQ3NmY3ZmZjNTIzMGZjODQ3ZmY5ZmVjYWY0M2RjNDZmYTA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAKQEAgLTMzLDcgKzMz
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgSGFzaFNldDxTY3JvbGxiYXIq
PiogZ1Njcm9sbGJhcnM7CitzdGF0aWMgSGFzaFNldDxTY3JvbGxiYXJUaGVtZUNsaWVudCo+KiBn
U2Nyb2xsYmFyczsKIAogU2Nyb2xsYmFyVGhlbWUqIFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVt
ZSgpCiB7CkBAIC00NSwxNCArNDUsMTQgQEAgU2Nyb2xsYmFyVGhlbWVHdGs6On5TY3JvbGxiYXJU
aGVtZUd0aygpCiB7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnJlZ2lzdGVyU2Nyb2xs
YmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cmVnaXN0
ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAo
IWdTY3JvbGxiYXJzKQotICAgICAgICBnU2Nyb2xsYmFycyA9IG5ldyBIYXNoU2V0PFNjcm9sbGJh
cio+OworICAgICAgICBnU2Nyb2xsYmFycyA9IG5ldyBIYXNoU2V0PFNjcm9sbGJhclRoZW1lQ2xp
ZW50Kj47CiAgICAgZ1Njcm9sbGJhcnMtPmFkZChzY3JvbGxiYXIpOwogfQogCi12b2lkIFNjcm9s
bGJhclRoZW1lR3RrOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQor
dm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGdTY3JvbGxiYXJzLT5yZW1vdmUoc2Nyb2xsYmFy
KTsKICAgICBpZiAoZ1Njcm9sbGJhcnMtPmlzRW1wdHkoKSkgewpAQCAtNjksOSArNjksOSBAQCB2
b2lkIFNjcm9sbGJhclRoZW1lR3RrOjp1cGRhdGVTY3JvbGxiYXJzRnJhbWVUaGlja25lc3MoKQog
ICAgIC8vIFVwZGF0ZSB0aGUgdGhpY2tuZXNzIG9mIGV2ZXJ5IGludGVyaW9yIGZyYW1lIHNjcm9s
bGJhciB3aWRnZXQuIFRoZQogICAgIC8vIHBsYXRmb3JtLWluZGVwZW5kZW50IHNjcm9sbGJhciB0
aGVtIGNvZGUgaXNuJ3QgeWV0IHNtYXJ0IGVub3VnaCB0byBnZXQKICAgICAvLyB0aGlzIGluZm9y
bWF0aW9uIHdoZW4gaXQgcGFpbnRzLgotICAgIEhhc2hTZXQ8U2Nyb2xsYmFyKj46Oml0ZXJhdG9y
IGVuZCA9IGdTY3JvbGxiYXJzLT5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8U2Nyb2xsYmFyKj46
Oml0ZXJhdG9yIGl0ID0gZ1Njcm9sbGJhcnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewot
ICAgICAgICBTY3JvbGxiYXIqIHNjcm9sbGJhciA9ICgqaXQpOworICAgIEhhc2hTZXQ8U2Nyb2xs
YmFyVGhlbWVDbGllbnQqPjo6aXRlcmF0b3IgZW5kID0gZ1Njcm9sbGJhcnMtPmVuZCgpOworICAg
IGZvciAoSGFzaFNldDxTY3JvbGxiYXJUaGVtZUNsaWVudCo+OjppdGVyYXRvciBpdCA9IGdTY3Jv
bGxiYXJzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciA9ICgqaXQpOwogCiAgICAgICAgIC8vIFRvcC1sZXZlbCBzY3Jv
bGxiYXIgaS5lLiBzY3JvbGxiYXJzIHdobyBoYXZlIGEgcGFyZW50IFNjcm9sbFZpZXcKICAgICAg
ICAgLy8gd2l0aCBubyBwYXJlbnQgYXJlIG5hdGl2ZSwgYW5kIHRodXMgZG8gbm90IG5lZWQgdG8g
YmUgcmVzaXplZC4KQEAgLTg2LDE0ICs4NiwxNCBAQCB2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjp1
cGRhdGVTY3JvbGxiYXJzRnJhbWVUaGlja25lc3MoKQogICAgIH0KIH0KIAotYm9vbCBTY3JvbGxi
YXJUaGVtZUd0azo6aGFzVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJh
clRoZW1lR3RrOjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewog
ICAgIC8vIFRoaXMgbWV0aG9kIGlzIGp1c3QgY2FsbGVkIGFzIGEgcGFpbnQtdGltZSBvcHRpbWl6
YXRpb24gdG8gc2VlIGlmCiAgICAgLy8gcGFpbnRpbmcgdGhlIHRodW1iIGNhbiBiZSBza2lwcGVk
LiAgV2UgZG9uJ3QgaGF2ZSB0byBiZSBleGFjdCBoZXJlLgogICAgIHJldHVybiB0aHVtYkxlbmd0
aChzY3JvbGxiYXIpID4gMDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6YmFja0J1
dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkK
K0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICBpZiAo
cGFydCA9PSBCYWNrQnV0dG9uRW5kUGFydCAmJiAhbV9oYXNCYWNrQnV0dG9uRW5kUGFydCkKICAg
ICAgICAgcmV0dXJuIEludFJlY3QoKTsKQEAgLTExNCw3ICsxMTQsNyBAQCBJbnRSZWN0IFNjcm9s
bGJhclRoZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xs
YmFyUGFydCBwYQogICAgIHJldHVybiBJbnRSZWN0KHgsIHNjcm9sbGJhci0+eSgpICsgc2Nyb2xs
YmFyLT5oZWlnaHQoKSAtIG1fdHJvdWdoQm9yZGVyV2lkdGggLSAoMiAqIHNpemUuaGVpZ2h0KCkp
LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRo
ZW1lR3RrOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFy
UGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6Zm9yd2FyZEJ1dHRv
blJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0
LCBib29sKQogewogICAgIGlmIChwYXJ0ID09IEZvcndhcmRCdXR0b25TdGFydFBhcnQgJiYgIW1f
aGFzRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCkKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKQEAg
LTE0MCw3ICsxNDAsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjpmb3J3YXJkQnV0dG9u
UmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydAogICAgIHJldHVybiBJbnRS
ZWN0KHgsIHNjcm9sbGJhci0+eSgpICsgbV90cm91Z2hCb3JkZXJXaWR0aCArIHNpemUuaGVpZ2h0
KCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFy
VGhlbWVHdGs6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKK0ludFJlY3Qg
U2Nyb2xsYmFyVGhlbWVHdGs6OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBib29sKQogewogICAgIC8vIFRoZSBwYWRkaW5nIGFsb25nIHRoZSB0aHVtYiBtb3ZlbWVu
dCBheGlzIGluY2x1ZGVzIHRoZSB0cm91Z2ggYm9yZGVyCiAgICAgLy8gcGx1cyB0aGUgc2l6ZSBv
ZiBzdGVwcGVyIHNwYWNpbmcgKHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBzdGVwcGVyIGFuZApAQCAt
MTgwLDcgKzE4MCw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OnRyYWNrUmVjdChTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKICAgICAgICAgICAgICAgICAgICB0aGlja25lc3MsIHNj
cm9sbGJhci0+aGVpZ2h0KCkgLSAoMiAqIG1vdmVtZW50QXhpc1BhZGRpbmcpIC0gYnV0dG9uc1dp
ZHRoKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dGh1bWJSZWN0KFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KQorSW50
UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dGh1bWJSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QpCiB7CiAgICAg
SW50UmVjdCB0cmFja1JlY3QgPSBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKHNjcm9s
bGJhciwgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCk7CiAgICAgaW50IHRodW1iUG9zID0gdGh1bWJQ
b3NpdGlvbihzY3JvbGxiYXIpOwpAQCAtMTkxLDcgKzE5MSw3IEBAIEludFJlY3QgU2Nyb2xsYmFy
VGhlbWVHdGs6OnRodW1iUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
dW5jb25zCiAgICAgcmV0dXJuIEludFJlY3QodHJhY2tSZWN0LngoKSArICh0cmFja1JlY3Qud2lk
dGgoKSAtIG1fdGh1bWJGYXRuZXNzKSAvIDIsIHRyYWNrUmVjdC55KCkgKyB0aHVtYlBvcywgbV90
aHVtYkZhdG5lc3MsIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikpOwogfQogCi1ib29sIFNjcm9sbGJh
clRoZW1lR3RrOjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCitib29sIFNjcm9sbGJh
clRoZW1lR3RrOjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsK
ICAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTI2MCw3ICsyNjAsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lR3RrOjpw
YWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nvbgog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lR3RrOjpzaG91bGRDZW50
ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiti
b29sIFNjcm9sbGJhclRoZW1lR3RrOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICByZXR1cm4g
KGV2ZW50LnNoaWZ0S2V5KCkgJiYgZXZlbnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgfHwgKGV2
ZW50LmJ1dHRvbigpID09IE1pZGRsZUJ1dHRvbik7CiB9CkBAIC0yNzAsNyArMjcwLDcgQEAgaW50
IFNjcm9sbGJhclRoZW1lR3RrOjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNp
emUpCiAgICAgcmV0dXJuIG1fdGh1bWJGYXRuZXNzICsgKG1fdHJvdWdoQm9yZGVyV2lkdGggKiAy
KTsKIH0KIAotSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUd0azo6YnV0dG9uU2l6ZShTY3JvbGxiYXIq
IHNjcm9sbGJhcikKK0ludFNpemUgU2Nyb2xsYmFyVGhlbWVHdGs6OmJ1dHRvblNpemUoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRh
dGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKQogICAgICAgICByZXR1cm4gSW50U2l6ZShtX3Ro
dW1iRmF0bmVzcywgbV9zdGVwcGVyU2l6ZSk7CkBAIC0yNzksNyArMjc5LDcgQEAgSW50U2l6ZSBT
Y3JvbGxiYXJUaGVtZUd0azo6YnV0dG9uU2l6ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICBy
ZXR1cm4gSW50U2l6ZShtX3N0ZXBwZXJTaXplLCBtX3RodW1iRmF0bmVzcyk7CiB9CiAKLWludCBT
Y3JvbGxiYXJUaGVtZUd0azo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFy
KQoraW50IFNjcm9sbGJhclRoZW1lR3RrOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gbV9taW5UaHVtYkxlbmd0aDsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0
ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmgKaW5k
ZXggNDVlMDkzYjFlYzk3ZDFhZmFhMjRjNTgzMzE1NjY5MzAyZTg1Y2Q2My4uZTczZGYyODU1MDFi
NTgyNmRjMDU5YjgzYmZjM2Q5YTQxNzBkNGJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmgKQEAgLTM3LDI5ICszNywyOSBAQCBwdWJsaWM6
CiAgICAgU2Nyb2xsYmFyVGhlbWVHdGsoKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZUd0
aygpOwogCi0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKikgeyByZXR1cm4g
dHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKTsKLSAgICB2aXJ0
dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9v
bCk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNj
cm9sbGJhclBhcnQsIGJvb2wpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xs
YmFyKiwgYm9vbCk7Ci0gICAgSW50UmVjdCB0aHVtYlJlY3QoU2Nyb2xsYmFyKiwgY29uc3QgSW50
UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCk7Ci0gICAgYm9vbCBwYWludChTY3JvbGxiYXIq
LCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKLSAgICB2b2lk
IHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqKTsK
LSAgICB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJh
ciosIGNvbnN0IEludFJlY3QmKTsKLSAgICB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1
dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xs
YmFyUGFydCk7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFy
KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIGhhc0J1dHRv
bnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBi
b29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBJbnRSZWN0
IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9v
bCk7CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCk7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNr
UmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wpOworICAgIEludFJlY3QgdGh1bWJSZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNr
UmVjdCk7CisgICAgYm9vbCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZvaWQgcGFpbnRTY3JvbGxi
YXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Cisg
ICAgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2b2lkIHBhaW50VGh1bWIoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAg
dmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50Jik7CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9s
bGJhckNvbnRyb2xTaXplKTsKLSAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxi
YXIqKTsKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7Cisg
ICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAg
ICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsK
IAogICAgIC8vIFRPRE86IFRoZXNlIGFyZSB0aGUgZGVmYXVsdCBHVEsrIHZhbHVlcy4gQXQgc29t
ZSBwb2ludCB3ZSBzaG91bGQgcHVsbCB0aGVzZSBmcm9tIHRoZSB0aGVtZSBpdHNlbGYuCiAgICAg
dmlydHVhbCBkb3VibGUgaW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCkgeyByZXR1cm4gMC4y
MDsgfQogICAgIHZpcnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1lckRlbGF5KCkgeyByZXR1cm4g
MC4wMjsgfQogICAgIHZvaWQgdXBkYXRlVGhlbWVQcm9wZXJ0aWVzKCk7CiAgICAgdm9pZCB1cGRh
dGVTY3JvbGxiYXJzRnJhbWVUaGlja25lc3MoKTsKLSAgICB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFy
KFNjcm9sbGJhciopOwotICAgIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKTsK
KyAgICB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAg
dm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKIHByb3Rl
Y3RlZDoKICNpZm5kZWYgR1RLX0FQSV9WRVJTSU9OXzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMi5jcHAKaW5kZXggNzI5YmQxMjRkZTJiMjE4
NTQ5OTdiMTk4NzYzMGNkZjg5YmVhOTEwMy4uODY2YmI4YTFkMmY3MWFhODY0ZWE1N2VkMzAzZjEz
NjA3MmMxYzQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9s
bGJhclRoZW1lR3RrMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9s
bGJhclRoZW1lR3RrMi5jcHAKQEAgLTY2LDEzICs2NiwxMyBAQCB2b2lkIFNjcm9sbGJhclRoZW1l
R3RrOjp1cGRhdGVUaGVtZVByb3BlcnRpZXMoKQogICAgIHVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRo
aWNrbmVzcygpOwogfQogCi1zdGF0aWMgR3RrV2lkZ2V0KiBnZXRXaWRnZXRGb3JTY3JvbGxiYXIo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitzdGF0aWMgR3RrV2lkZ2V0KiBnZXRXaWRnZXRGb3JTY3Jv
bGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBSZW5kZXJUaGVt
ZUd0ayogdGhlbWUgPSBzdGF0aWNfY2FzdDxSZW5kZXJUaGVtZUd0ayo+KFJlbmRlclRoZW1lOjpk
ZWZhdWx0VGhlbWUoKS5nZXQoKSk7CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+b3JpZW50YXRpb24o
KSA9PSBWZXJ0aWNhbFNjcm9sbGJhciA/IHRoZW1lLT5ndGtWU2Nyb2xsYmFyKCkgOiB0aGVtZS0+
Z3RrSFNjcm9sbGJhcigpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNr
QmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFy
LCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFj
a0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIFBhaW50IHRoZSB0
cmFjayBiYWNrZ3JvdW5kLiBJZiB0aGUgdHJvdWdoLXVuZGVyLXN0ZXBwZXJzIHByb3BlcnR5IGlz
IHRydWUsIHRoaXMKICAgICAvLyBzaG91bGQgYmUgdGhlIGZ1bGwgc2l6ZSBvZiB0aGUgc2Nyb2xs
YmFyLCBidXQgaWYgaXMgZmFsc2UsIGl0IHNob3VsZCBvbmx5IGJlIHRoZQpAQCAtODcsNyArODcs
NyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhcgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1RLX1NUQVRFX0FDVElWRSwgR1RLX1NIQURPV19JTiwgInRyb3VnaCIpOwogfQogCi12b2lk
IFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVH
dGs6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgSW50UmVjdCBmdWxsU2Nyb2xs
YmFyUmVjdCA9IEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpLCBzY3JvbGxi
YXItPndpZHRoKCksIHNjcm9sbGJhci0+aGVpZ2h0KCkpOwogCkBAIC05Niw3ICs5Niw3IEBAIHZv
aWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFNjcm9sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtf
U1RBVEVfTk9STUFMLCBHVEtfU0hBRE9XX0lOLCAic2Nyb2xsZWRfd2luZG93Iik7CiB9CiAKLXZv
aWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xs
YmFyVGhlbWVHdGs6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIEd0
a1dpZGdldCogd2lkZ2V0ID0gZ2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKHNjcm9sbGJhcik7CiAgICAg
Z2Jvb2xlYW4gYWN0aXZhdGVTbGlkZXI7CkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBTY3JvbGxi
YXJUaGVtZUd0azo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJh
ciogc2Nyb2xsYmEKICAgICB3aWRnZXRDb250ZXh0Lmd0a1BhaW50U2xpZGVyKHNsaWRlclJlY3Qs
IHdpZGdldCwgc3RhdGVUeXBlLCBzaGFkb3dUeXBlLCAic2xpZGVyIiwgb3JpZW50YXRpb24pOwog
fQogCi12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3Jv
bGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRvbihHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAgICAvLyBUaGUgYnV0
dG9ucyB3aWxsIGJlIGRpc2FibGVkIGlmIHRoZSB0aHVtYiBpcyBhcyB0aGUgYXBwcm9wcmlhdGUg
ZXh0cmVtZS4KICAgICBHdGtTaGFkb3dUeXBlIHNoYWRvd1R5cGUgPSBHVEtfU0hBRE9XX09VVDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0
azMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMy5j
cHAKaW5kZXggNGMzM2U2NmRiOGZmZWZjM2Y0MjM0NmNhZDBlZWU2N2VlNmNkNDVmZS4uOTc0OWM1
NDNmM2RkZjZiMzE1ZWZmYjk4YTc1OWZmNWIwMDJkNzBjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMy5jcHAKQEAgLTcyLDcgKzcyLDcg
QEAgc3RhdGljIHZvaWQgYXBwbHlTY3JvbGxiYXJTdHlsZUNvbnRleHRDbGFzc2VzKEd0a1N0eWxl
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmEKICAgICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xh
c3MoY29udGV4dCwgb3JpZW50YXRpb24gPT0gVmVydGljYWxTY3JvbGxiYXIgPyAgR1RLX1NUWUxF
X0NMQVNTX1ZFUlRJQ0FMIDogR1RLX1NUWUxFX0NMQVNTX0hPUklaT05UQUwpOwogfQogCi12b2lk
IFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9p
ZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0
JiByZWN0KQogewogICAgIC8vIFBhaW50IHRoZSB0cmFjayBiYWNrZ3JvdW5kLiBJZiB0aGUgdHJv
dWdoLXVuZGVyLXN0ZXBwZXJzIHByb3BlcnR5IGlzIHRydWUsIHRoaXMKICAgICAvLyBzaG91bGQg
YmUgdGhlIGZ1bGwgc2l6ZSBvZiB0aGUgc2Nyb2xsYmFyLCBidXQgaWYgaXMgZmFsc2UsIGl0IHNo
b3VsZCBvbmx5IGJlIHRoZQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lR3Rr
OjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJh
cgogICAgIGd0a19zdHlsZV9jb250ZXh0X3Jlc3RvcmUobV9jb250ZXh0KTsKIH0KIAotdm9pZCBT
Y3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lR3Rr
OjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGd0a19zdHlsZV9jb250ZXh0X3Nh
dmUobV9jb250ZXh0KTsKIApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVH
dGs6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNj
cm9sCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShtX2NvbnRleHQpOwogfQogCi12b2lk
IFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJh
clRoZW1lR3RrOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBndGtf
c3R5bGVfY29udGV4dF9zYXZlKG1fY29udGV4dCk7CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lk
IFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyKiBzY3JvbGxiYQogICAgIGd0a19zdHlsZV9jb250ZXh0X3Jlc3RvcmUobV9jb250
ZXh0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRCdXR0b24oR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRCdXR0
b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgZ3Rr
X3N0eWxlX2NvbnRleHRfc2F2ZShtX2NvbnRleHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oCmluZGV4IDEzZDQ0YzIzZDNiMzM2MjM2ZmI2
NDA5OGZhODcwYWVjOGM3YjU2NTguLjk2MjlmNjA3NGY2MmNhYWI2NWE5MzlmNDc1MDcxOGE0MTI0
ZGNmOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJU
aGVtZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVt
ZU1hYy5oCkBAIC0zOSw0NiArMzksNDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBwcmVmZXJlbmNl
c0NoYW5nZWQoKTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xs
YmFyKik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXJUaGVt
ZUNsaWVudCopOwogCiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQotICAgIHZpcnR1YWwgYm9vbCBw
YWludChTY3JvbGxiYXIqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QpOworICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7
CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJD
b250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBz
dXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IGJvb2wgdXNlc092ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKICAg
ICB2aXJ0dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKTsKICAgICB2aXJ0
dWFsIGRvdWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpOwogCiAgICAgdmlydHVhbCBTY3JvbGxi
YXJCdXR0b25zUGxhY2VtZW50IGJ1dHRvbnNQbGFjZW1lbnQoKSBjb25zdDsKIAotICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
dW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0
ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5y
ZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAgdm9pZCBzZXRO
ZXdQYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciosIFNjcm9sbGJhclBhaW50ZXIpOwotICAg
IFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKKyAgICB2
b2lkIHNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3Jv
bGxiYXJQYWludGVyKTsKKyAgICBTY3JvbGxiYXJQYWludGVyIHBhaW50ZXJGb3JTY3JvbGxiYXIo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogICAgIHN0YXRpYyBib29sIGlzQ3VycmVudGx5RHJh
d2luZ0ludG9MYXllcigpOwogICAgIHN0YXRpYyB2b2lkIHNldElzQ3VycmVudGx5RHJhd2luZ0lu
dG9MYXllcihib29sKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25z
KFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZp
cnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAgdmlydHVh
bCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wg
cGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0
KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAg
dmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29sIHBhaW50aW5nID0gZmFs
c2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVh
bCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xs
YmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJh
Y2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKIAog
ICAgIHZpcnR1YWwgaW50IG1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSB7IHJldHVybiA0MDsgfQog
Ci0gICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZp
cnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogICAg
IAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYpOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGREcmFnRG9jdW1l
bnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRE
cmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpOwogICAgIGludCBzY3JvbGxiYXJQYXJ0VG9ISVByZXNzZWRTdGF0
ZShTY3JvbGxiYXJQYXJ0KTsKIAogI2lmICFQTEFURk9STShDSFJPTUlVTSkgJiYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KaW5kZXggY2M3NDgy
NDU3Nzg1MjkzZDFkNTc4Yjc4MmQ4MWMyN2ZhYmIyNTkyNC4uM2I5MDIxYWRlYTU1ZGM4YWZjZDY2
YmRkZjU1NzYxMjQwOWQ5OTdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpAQCAtNTAsNyArNTAsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIEhhc2hNYXA8U2Nyb2xs
YmFyKiwgUmV0YWluUHRyPFNjcm9sbGJhclBhaW50ZXI+ID4gU2Nyb2xsYmFyUGFpbnRlck1hcDsK
K3R5cGVkZWYgSGFzaE1hcDxTY3JvbGxiYXJUaGVtZUNsaWVudCosIFJldGFpblB0cjxTY3JvbGxi
YXJQYWludGVyPiA+IFNjcm9sbGJhclBhaW50ZXJNYXA7CiAKIHN0YXRpYyBTY3JvbGxiYXJQYWlu
dGVyTWFwKiBzY3JvbGxiYXJNYXAoKQogewpAQCAtMTYyLDcgKzE2Miw3IEBAIHN0YXRpYyB2b2lk
IHVwZGF0ZUFycm93UGxhY2VtZW50KCkKICAgICB9CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVN
YWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxi
YXJUaGVtZU1hYzo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhcikKIHsKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpIHsKICAg
ICAgICAgYm9vbCBpc0hvcml6b250YWwgPSBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9y
aXpvbnRhbFNjcm9sbGJhcjsKQEAgLTE3NSwxOSArMTc1LDE5IEBAIHZvaWQgU2Nyb2xsYmFyVGhl
bWVNYWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIH0KIH0K
IAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIq
IHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVucmVnaXN0ZXJTY3JvbGxiYXIo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBzY3JvbGxiYXJNYXAoKS0+
cmVtb3ZlKHNjcm9sbGJhcik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnNldE5ld1Bh
aW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhaW50ZXIg
bmV3UGFpbnRlcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnNldE5ld1BhaW50ZXJGb3JTY3Jv
bGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFpbnRlciBu
ZXdQYWludGVyKQogewogICAgIHNjcm9sbGJhck1hcCgpLT5zZXQoc2Nyb2xsYmFyLCBuZXdQYWlu
dGVyKTsKICAgICB1cGRhdGVFbmFibGVkU3RhdGUoc2Nyb2xsYmFyKTsKICAgICB1cGRhdGVTY3Jv
bGxiYXJPdmVybGF5U3R5bGUoc2Nyb2xsYmFyKTsKIH0KIAotU2Nyb2xsYmFyUGFpbnRlciBTY3Jv
bGxiYXJUaGVtZU1hYzo6cGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikK
K1Njcm9sbGJhclBhaW50ZXIgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50ZXJGb3JTY3JvbGxiYXIo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gc2Nyb2xsYmFy
TWFwKCktPmdldChzY3JvbGxiYXIpLmdldCgpOwogfQpAQCAtMjQ4LDEwICsyNDgsMTAgQEAgYm9v
bCBTY3JvbGxiYXJUaGVtZU1hYzo6dXNlc092ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVTY3Jv
bGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRo
ZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhcikKIHsKICAgICBTY3JvbGxiYXJQYWludGVyIHBhaW50ZXIgPSBwYWludGVyRm9y
U2Nyb2xsYmFyKHNjcm9sbGJhcik7Ci0gICAgc3dpdGNoIChzY3JvbGxiYXItPnNjcm9sbGFibGVB
cmVhKCktPnNjcm9sbGJhck92ZXJsYXlTdHlsZSgpKSB7CisgICAgc3dpdGNoIChzY3JvbGxiYXIt
PnNjcm9sbGJhck92ZXJsYXlTdHlsZSgpKSB7CiAgICAgY2FzZSBTY3JvbGxiYXJPdmVybGF5U3R5
bGVEZWZhdWx0OgogICAgICAgICBbcGFpbnRlciBzZXRLbm9iU3R5bGU6TlNTY3JvbGxlcktub2JT
dHlsZURlZmF1bHRdOwogICAgICAgICBicmVhazsKQEAgLTI3OSw3ICsyNzksNyBAQCBTY3JvbGxi
YXJCdXR0b25zUGxhY2VtZW50IFNjcm9sbGJhclRoZW1lTWFjOjpidXR0b25zUGxhY2VtZW50KCkg
Y29uc3QKICAgICByZXR1cm4gZ0J1dHRvblBsYWNlbWVudDsKIH0KIAotYm9vbCBTY3JvbGxiYXJU
aGVtZU1hYzo6aGFzQnV0dG9ucyhTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFy
VGhlbWVNYWM6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsK
ICAgICByZXR1cm4gc2Nyb2xsYmFyLT5lbmFibGVkKCkgJiYgYnV0dG9uc1BsYWNlbWVudCgpICE9
IFNjcm9sbGJhckJ1dHRvbnNOb25lCiAgICAgICAgICAgICAgJiYgKHNjcm9sbGJhci0+b3JpZW50
YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyCkBAIC0yODcsNyArMjg3LDcgQEAgYm9vbCBT
Y3JvbGxiYXJUaGVtZU1hYzo6aGFzQnV0dG9ucyhTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICAg
ICAgICAgICA6IHNjcm9sbGJhci0+aGVpZ2h0KCkpID49IDIgKiAoY1JlYWxCdXR0b25MZW5ndGhb
c2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSAtIGNCdXR0b25IaXRJbnNldFtzY3JvbGxiYXItPmNv
bnRyb2xTaXplKCldKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6aGFzVGh1bWIoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNUaHVtYihTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGludCBtaW5MZW5ndGhGb3JUaHVt
YjsKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpIHsKQEAgLTMxOSw3
ICszMTksNyBAQCBzdGF0aWMgSW50UmVjdCBidXR0b25SZXBhaW50UmVjdChjb25zdCBJbnRSZWN0
JiBidXR0b25SZWN0LCBTY3JvbGxiYXJPcmllbnRhdGlvbgogICAgIHJldHVybiBwYWludFJlY3Q7
CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCitJbnRSZWN0
IFNjcm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCiB7CiAgICAgSW50
UmVjdCByZXN1bHQ7CiAgICAgCkBAIC0zNTMsNyArMzUzLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJU
aGVtZU1hYzo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBh
cnQgcGEKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFj
Ojpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBw
YXJ0LCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1
dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBw
YXJ0LCBib29sIHBhaW50aW5nKQogewogICAgIEludFJlY3QgcmVzdWx0OwogICAgIApAQCAtMzkz
LDcgKzM5Myw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZvcndhcmRCdXR0b25SZWN0
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6dHJhY2tS
ZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcpCiB7CiAg
ICAgaWYgKHBhaW50aW5nIHx8ICFoYXNCdXR0b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHJldHVy
biBzY3JvbGxiYXItPmZyYW1lUmVjdCgpOwpAQCAtNDMwLDcgKzQzMCw3IEBAIEludFJlY3QgU2Ny
b2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCBwYWlu
dGluZykKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCkg
KyBzdGFydFdpZHRoLCB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSB0b3RhbFdpZHRo
KTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lTWFjOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVNYWM6Om1pbmltdW1UaHVtYkxlbmd0
aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChpc1Njcm9sbGJh
ck92ZXJsYXlBUElBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIFtzY3JvbGxiYXJNYXAoKS0+
Z2V0KHNjcm9sbGJhcikuZ2V0KCkga25vYk1pbkxlbmd0aF07CkBAIC00MzgsNyArNDM4LDcgQEAg
aW50IFNjcm9sbGJhclRoZW1lTWFjOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCiAgICAgICAgIHJldHVybiBjVGh1bWJNaW5MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9s
U2l6ZSgpXTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6c2hvdWxkQ2VudGVyT25UaHVt
YihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xs
YmFyVGhlbWVNYWM6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICBpZiAoZXZ0LmJ1dHRvbigpICE9
IExlZnRCdXR0b24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBi
b29sIFNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudAogICAgIHJldHVybiBldnQuYWx0S2V5KCk7CiB9CiAKLWJv
b2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNj
cm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCitib29sIFNjcm9sbGJh
clRoZW1lTWFjOjpzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiB7CiAgICAgcmV0dXJu
IGV2ZW50LmFsdEtleSgpOwogfQpAQCAtNDcwLDcgKzQ3MCw3IEBAIGludCBTY3JvbGxiYXJUaGVt
ZU1hYzo6c2Nyb2xsYmFyUGFydFRvSElQcmVzc2VkU3RhdGUoU2Nyb2xsYmFyUGFydCBwYXJ0KQog
ICAgIH0KIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlRW5hYmxlZFN0YXRlKFNj
cm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlRW5hYmxl
ZFN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKGlzU2Ny
b2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQogICAgICAgICBbc2Nyb2xsYmFyTWFwKCktPmdl
dChzY3JvbGxiYXIpLmdldCgpIHNldEVuYWJsZWQ6c2Nyb2xsYmFyLT5lbmFibGVkKCldOwpAQCAt
NDk5LDcgKzQ5OSw3IEBAIHN0YXRpYyB2b2lkIHNjcm9sbGJhclBhaW50ZXJQYWludChTY3JvbGxi
YXJQYWludGVyIHNjcm9sbGJhclBhaW50ZXIsIGJvb2wgZW5hYmxlCiB9CiAKICNpZiAhUExBVEZP
Uk0oQ0hST01JVU0pCi1ib29sIFNjcm9sbGJhclRoZW1lTWFjOjpwYWludChTY3JvbGxiYXIqIHNj
cm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VS
ZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1h
Z2VSZWN0KQogewogICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkgewog
ICAgICAgICBmbG9hdCB2YWx1ZSA9IDA7CkBAIC01NzAsNyArNTcwLDcgQEAgYm9vbCBTY3JvbGxi
YXJUaGVtZU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY28KICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQogICAgICAgICB0cmFj
a0luZm8uZW5hYmxlU3RhdGUgPSBrVGhlbWVUcmFja0Rpc2FibGVkOwogICAgIGVsc2UKLSAgICAg
ICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0gc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5p
c0FjdGl2ZSgpID8ga1RoZW1lVHJhY2tBY3RpdmUgOiBrVGhlbWVUcmFja0luYWN0aXZlOworICAg
ICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBzY3JvbGxiYXItPmlzU2Nyb2xsYWJsZUFyZWFB
Y3RpdmUoKSA/IGtUaGVtZVRyYWNrQWN0aXZlIDoga1RoZW1lVHJhY2tJbmFjdGl2ZTsKIAogICAg
IGlmIChoYXNUaHVtYihzY3JvbGxiYXIpKQogICAgICAgICB0cmFja0luZm8uYXR0cmlidXRlcyB8
PSBrVGhlbWVUcmFja1Nob3dUaHVtYjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAppbmRleCA1ZDJiYzNlYzA4OTc4ZTAzNzM3ZmJh
NzM5NWI4YjhjZTc0NjBkNDY0Li42ZGU5MWNjYjgxOTIxMDQwYzA4NDc4YzFlZTU2NzdkZGU0Mzc0
OTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRo
ZW1lTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJU
aGVtZU1vY2suY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIGludCBjU2Nyb2xsYmFyVGhpY2tuZXNzW10gPSB7IDE1LCAxMSB9OwogCi1JbnRSZWN0IFNj
cm9sbGJhclRoZW1lTW9jazo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQor
SW50UmVjdCBTY3JvbGxiYXJUaGVtZU1vY2s6OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBib29sKQogewogICAgIHJldHVybiBzY3JvbGxiYXItPmZyYW1lUmVjdCgp
OwogfQpAQCAtNDIsMTIgKzQyLDEyIEBAIGludCBTY3JvbGxiYXJUaGVtZU1vY2s6OnNjcm9sbGJh
clRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKICAgICByZXR1cm4g
Y1Njcm9sbGJhclRoaWNrbmVzc1tjb250cm9sU2l6ZV07CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhl
bWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCit2b2lkIFNjcm9s
bGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFj
a1JlY3QpCiB7CiAgICAgY29udGV4dC0+ZmlsbFJlY3QodHJhY2tSZWN0LCBzY3JvbGxiYXItPmVu
YWJsZWQoKSA/IENvbG9yOjpsaWdodEdyYXkgOiBDb2xvcigweEZGRTBFMEUwKSwgQ29sb3JTcGFj
ZURldmljZVJHQik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRodW1iKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHRodW1iUmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRodW1iKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgdGh1bWJSZWN0KQogewogICAgIGlmIChzY3JvbGxiYXItPmVuYWJsZWQoKSkK
ICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QodGh1bWJSZWN0LCBDb2xvcjo6ZGFya0dyYXksIENv
bG9yU3BhY2VEZXZpY2VSR0IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
U2Nyb2xsYmFyVGhlbWVNb2NrLmgKaW5kZXggZTI1NDg0MjJhMjhmNWU3MjNlNDM1M2Y4ZjQ1NzY1
MjUzY2I2ODViYi4uNjMzMzg0MWFiNzk2YjlkYzIzM2YzZjYzZWI4MDBhYmZhN2IwYmIwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5o
CkBAIC0zNiwxNSArMzYsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRo
aWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpOwogCiBwcm90
ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKikgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKikgeyByZXR1cm4g
dHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50
KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgYmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCAvKnBhaW50aW5nKi8g
PSBmYWxzZSkgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndh
cmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgLypwYWludGluZyov
ID0gZmFsc2UpIHsgcmV0dXJuIEludFJlY3QoKTsgfQotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFj
a1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIElu
dFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0
LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICB2
aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBT
Y3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7IHJldHVybiBJbnRSZWN0
KCk7IH0KKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
cmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVj
dCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9s
bGJhciosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgCiBwcml2YXRlOgogICAg
IHZpcnR1YWwgYm9vbCBpc01vY2tUaGVtZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAKaW5kZXggZTMy
NDNlY2ZhODk3OWI5YTY4MWUxNTliZGVlOWE5YjE1OWM2NzQzYy4uZDRiNThiMWIwZTVhZjE3MGY5
NmVmODM2NGI2OWI0ODRhMzYyMjI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0aWMgU2Nyb2xs
YmFyUGFydCBzY3JvbGxiYXJQYXJ0KGNvbnN0IFFTdHlsZTo6U3ViQ29udHJvbCYgc2MpCiAgICAg
cmV0dXJuIE5vUGFydDsKIH0KIAotc3RhdGljIFFTdHlsZU9wdGlvblNsaWRlciogc3R5bGVPcHRp
b25TbGlkZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFFXaWRnZXQqIHdpZGdldCA9IDApCitzdGF0
aWMgUVN0eWxlT3B0aW9uU2xpZGVyKiBzdHlsZU9wdGlvblNsaWRlcihTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyLCBRV2lkZ2V0KiB3aWRnZXQgPSAwKQogewogICAgIHN0YXRpYyBRU3R5
bGVPcHRpb25TbGlkZXIgb3B0OwogICAgIGlmICh3aWRnZXQpCkBAIC0xNTUsNyArMTU1LDcgQEAg
c3RhdGljIFFTdHlsZU9wdGlvblNsaWRlciogc3R5bGVPcHRpb25TbGlkZXIoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIFFXaWRnZXQqIHdpZGcKICAgICByZXR1cm4gJm9wdDsKIH0KIAotYm9vbCBTY3Jv
bGxiYXJUaGVtZVF0OjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCitib29sIFNjcm9s
bGJhclRoZW1lUXQ6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQog
ewogICAgIGlmIChncmFwaGljc0NvbnRleHQtPnVwZGF0aW5nQ29udHJvbFRpbnRzKCkpIHsKICAg
ICAgICBzY3JvbGxiYXItPmludmFsaWRhdGVSZWN0KGRhbWFnZVJlY3QpOwpAQCAtMTkzLDcgKzE5
Myw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVRdDo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVNj
cm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVRdDo6aGl0VGVzdChTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitTY3JvbGxiYXJQYXJ0IFNjcm9sbGJh
clRoZW1lUXQ6OmhpdFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgUVN0eWxlT3B0aW9uU2xpZGVyKiBvcHQg
PSBzdHlsZU9wdGlvblNsaWRlcihzY3JvbGxiYXIpOwogICAgIGNvbnN0IFFQb2ludCBwb3MgPSBz
Y3JvbGxiYXItPmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9zaXRpb24oKSk7CkBA
IC0yMDIsMTMgKzIwMiwxMyBAQCBTY3JvbGxiYXJQYXJ0IFNjcm9sbGJhclRoZW1lUXQ6OmhpdFRl
c3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91cwogICAgIHJldHVybiBz
Y3JvbGxiYXJQYXJ0KHNjKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVF0OjpzaG91bGRDZW50
ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9v
bCBTY3JvbGxiYXJUaGVtZVF0OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgLy8gTWlkZGxlIGNs
aWNrIGNlbnRlcnMgc2xpZGVyIHRodW1iIChpZiBzdXBwb3J0ZWQpLgogICAgIHJldHVybiBzdHls
ZSgpLT5zdHlsZUhpbnQoUVN0eWxlOjpTSF9TY3JvbGxCYXJfTWlkZGxlQ2xpY2tBYnNvbHV0ZVBv
c2l0aW9uKSAmJiBldnQuYnV0dG9uKCkgPT0gTWlkZGxlQnV0dG9uOwogfQogCi12b2lkIFNjcm9s
bGJhclRoZW1lUXQ6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxi
YXJQYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZVF0OjppbnZhbGlkYXRlUGFydChTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0KQogewogICAgIC8vIEZJWE1FOiBE
byBtb3JlIHByZWNpc2UgaW52YWxpZGF0aW9uLgogICAgIHNjcm9sbGJhci0+aW52YWxpZGF0ZSgp
OwpAQCAtMjI0LDcgKzIyNCw3IEBAIGludCBTY3JvbGxiYXJUaGVtZVF0OjpzY3JvbGxiYXJUaGlj
a25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiAgICAgcmV0dXJuIHN0eWxl
KCktPnBpeGVsTWV0cmljKFFTdHlsZTo6UE1fU2Nyb2xsQmFyRXh0ZW50LCAmbywgMCk7CiB9CiAK
LWludCBTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYlBvc2l0aW9uKFNjcm9sbGJhciogc2Nyb2xsYmFy
KQoraW50IFNjcm9sbGJhclRoZW1lUXQ6OnRodW1iUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5lbmFibGVkKCkpIHsKICAgICAg
ICAgZmxvYXQgcG9zID0gKGZsb2F0KXNjcm9sbGJhci0+Y3VycmVudFBvcygpICogKHRyYWNrTGVu
Z3RoKHNjcm9sbGJhcikgLSB0aHVtYkxlbmd0aChzY3JvbGxiYXIpKSAvIHNjcm9sbGJhci0+bWF4
aW11bSgpOwpAQCAtMjMzLDIxICsyMzMsMjEgQEAgaW50IFNjcm9sbGJhclRoZW1lUXQ6OnRodW1i
UG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBT
Y3JvbGxiYXJUaGVtZVF0Ojp0aHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBT
Y3JvbGxiYXJUaGVtZVF0Ojp0aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyKQogewogICAgIFFTdHlsZU9wdGlvblNsaWRlciogb3B0ID0gc3R5bGVPcHRpb25TbGlkZXIo
c2Nyb2xsYmFyKTsKICAgICBJbnRSZWN0IHRodW1iID0gc3R5bGUoKS0+c3ViQ29udHJvbFJlY3Qo
UVN0eWxlOjpDQ19TY3JvbGxCYXIsIG9wdCwgUVN0eWxlOjpTQ19TY3JvbGxCYXJTbGlkZXIsIDAp
OwogICAgIHJldHVybiBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9s
bGJhciA/IHRodW1iLndpZHRoKCkgOiB0aHVtYi5oZWlnaHQoKTsKIH0KIAotaW50IFNjcm9sbGJh
clRoZW1lUXQ6OnRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xs
YmFyVGhlbWVRdDo6dHJhY2tQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
KQogewogICAgIFFTdHlsZU9wdGlvblNsaWRlciogb3B0ID0gc3R5bGVPcHRpb25TbGlkZXIoc2Ny
b2xsYmFyKTsKICAgICBJbnRSZWN0IHRyYWNrID0gc3R5bGUoKS0+c3ViQ29udHJvbFJlY3QoUVN0
eWxlOjpDQ19TY3JvbGxCYXIsIG9wdCwgUVN0eWxlOjpTQ19TY3JvbGxCYXJHcm9vdmUsIDApOwog
ICAgIHJldHVybiBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJh
ciA/IHRyYWNrLngoKSAtIHNjcm9sbGJhci0+eCgpIDogdHJhY2sueSgpIC0gc2Nyb2xsYmFyLT55
KCk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZVF0Ojp0cmFja0xlbmd0aChTY3JvbGxiYXIqIHNj
cm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVF0Ojp0cmFja0xlbmd0aChTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIFFTdHlsZU9wdGlvblNsaWRlciogb3B0ID0gc3R5
bGVPcHRpb25TbGlkZXIoc2Nyb2xsYmFyKTsKICAgICBJbnRSZWN0IHRyYWNrID0gc3R5bGUoKS0+
c3ViQ29udHJvbFJlY3QoUVN0eWxlOjpDQ19TY3JvbGxCYXIsIG9wdCwgUVN0eWxlOjpTQ19TY3Jv
bGxCYXJHcm9vdmUsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQv
U2Nyb2xsYmFyVGhlbWVRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFy
VGhlbWVRdC5oCmluZGV4IGNmNDg4MmRhMjAzYmJmMGZiN2NjNjllN2MzZTFjMWZmZGQ4MWY1ZWIu
LjAzMzdiZjgwY2NmNjQ2ZDE4ZThmMDdjNGZlNWFjYmEzYWE5OTUyMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmgKQEAgLTQwLDE5ICs0MCwxOSBA
QCBjbGFzcyBTY3JvbGxiYXJUaGVtZVF0IDogcHVibGljIFNjcm9sbGJhclRoZW1lIHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZVF0KCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wg
cGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdl
UmVjdCk7CisgICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CiAgICAgdmlydHVhbCB2
b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKIAotICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBoaXRU
ZXN0KFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwg
U2Nyb2xsYmFyUGFydCBoaXRUZXN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihT
Y3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJh
ciosIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpOwogCi0gICAgdmlydHVhbCBpbnQgdGh1
bWJQb3NpdGlvbihTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0aHVtYkxlbmd0aChTY3Jv
bGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJhciopOwotICAg
IHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgaW50IHRo
dW1iUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCB0aHVt
Ykxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IHRyYWNrUG9z
aXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCB0cmFja0xlbmd0
aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhp
Y2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuY3Bw
CmluZGV4IDM0M2JiYjI4MGVkNmFmODQ4ZjUxY2MwMGVkOThmMzFmN2UxN2UyNDguLjFjYzUzODVl
MTg3YTIyZWFmMWIwNTVlMzRiZTBmZjY0Mzg5MjliM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmNwcApAQCAtMTA0LDE0ICsx
MDQsMTQgQEAgaW50IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpzY3JvbGxiYXJUaGlja25lc3MoU2Ny
b2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiAgICAgcmV0dXJuIGNTY3JvbGxiYXJUaGlj
a25lc3NbY29udHJvbFNpemVdOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpoYXNC
dXR0b25zKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6
aGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVy
biBzY3JvbGxiYXItPmVuYWJsZWQoKSAmJiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXIgPyAKICAgICAgICAgICAgICBzY3JvbGxiYXItPndpZHRoKCkgOiAK
ICAgICAgICAgICAgICBzY3JvbGxiYXItPmhlaWdodCgpKSA+PSAyICogKGNSZWFsQnV0dG9uTGVu
Z3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0gLSBjQnV0dG9uSGl0SW5zZXRbc2Nyb2xsYmFy
LT5jb250cm9sU2l6ZSgpXSk7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Omhhc1Ro
dW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFz
VGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gc2Ny
b2xsYmFyLT5lbmFibGVkKCkgJiYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9u
dGFsU2Nyb2xsYmFyID8gCiAgICAgICAgICAgICAgc2Nyb2xsYmFyLT53aWR0aCgpIDogCkBAIC0x
MzQsNyArMTM0LDcgQEAgc3RhdGljIEludFJlY3QgYnV0dG9uUmVwYWludFJlY3QoY29uc3QgSW50
UmVjdCYgYnV0dG9uUmVjdCwgU2Nyb2xsYmFyT3JpZW50YXRpb24KICAgICByZXR1cm4gcGFpbnRS
ZWN0OwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQor
SW50UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQog
ewogICAgIEludFJlY3QgcmVzdWx0OwogCkBAIC0xNTIsNyArMTUyLDcgQEAgSW50UmVjdCBTY3Jv
bGxiYXJUaGVtZVNhZmFyaTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNj
cm9sbGJhclBhcnQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRo
ZW1lU2FmYXJpOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xs
YmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFy
aTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Ny
b2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQogewogICAgIEludFJlY3QgcmVzdWx0Owog
ICAgIApAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyBJbnRSZWN0IHRyYWNrUmVwYWludFJlY3Qo
Y29uc3QgSW50UmVjdCYgdHJhY2tSZWN0LCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvCiAgICAgcmV0
dXJuIHBhaW50UmVjdDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6dHJhY2tS
ZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxi
YXJUaGVtZVNhZmFyaTo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIs
IGJvb2wgcGFpbnRpbmcpCiB7CiAgICAgaWYgKHBhaW50aW5nIHx8ICFoYXNCdXR0b25zKHNjcm9s
bGJhcikpCiAgICAgICAgIHJldHVybiBzY3JvbGxiYXItPmZyYW1lUmVjdCgpOwpAQCAtMTkzLDM2
ICsxOTMsMzYgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6dHJhY2tSZWN0KFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQogICAgIHJldHVybiBJbnRSZWN0KHNjcm9s
bGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIGNCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250
cm9sU2l6ZSgpXSwgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0gMiAqIGNCdXR0b25M
ZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNj
cm9sbGJhclRoZW1lU2FmYXJpOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gY1RodW1iTWluTGVuZ3RoW3Njcm9sbGJhci0+
Y29udHJvbFNpemUoKV07CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnNob3VsZENl
bnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiti
b29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgcmV0dXJu
IGV2dC5zaGlmdEtleSgpICYmIGV2dC5idXR0b24oKSA9PSBMZWZ0QnV0dG9uOwogfQogCi12b2lk
IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHRyYWNrUmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50VHJhY2tCYWNrZ3Jv
dW5kKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7CiAgICAgaWYgKCFTYWZh
cmlUaGVtZUxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIE5TQ29udHJvbFNpemUgc2l6
ZSA9IHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSA9PSBTbWFsbFNjcm9sbGJhciA/IE5TU21hbGxD
b250cm9sU2l6ZSA6IE5TUmVndWxhckNvbnRyb2xTaXplOwogICAgIFRoZW1lQ29udHJvbFN0YXRl
IHN0YXRlID0gMDsKLSAgICBpZiAoc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5pc0FjdGl2
ZSgpKQorICAgIGlmIChzY3JvbGxiYXItPmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSkKICAgICAg
ICAgc3RhdGUgfD0gQWN0aXZlU3RhdGU7CiAgICAgaWYgKGhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkK
ICAgICAgICAgc3RhdGUgfD0gRW5hYmxlZFN0YXRlOwogICAgIHBhaW50VGhlbWVQYXJ0KHNjcm9s
bGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhciA/IFZTY3JvbGxUcmFja1Bh
cnQgOiBIU2Nyb2xsVHJhY2tQYXJ0LCBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LCB0cmFja1JlY3QsIHNpemUsIHN0YXRlKTsgCiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZh
cmk6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgYnV0dG9uUmVjdCwgU2Nyb2xsYmFyUGFydCBw
YXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250
ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAgICBpZiAo
IVNhZmFyaVRoZW1lTGlicmFyeSgpKQogICAgICAgICByZXR1cm47CiAgICAgTlNDb250cm9sU2l6
ZSBzaXplID0gc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpID09IFNtYWxsU2Nyb2xsYmFyID8gTlNT
bWFsbENvbnRyb2xTaXplIDogTlNSZWd1bGFyQ29udHJvbFNpemU7CiAgICAgVGhlbWVDb250cm9s
U3RhdGUgc3RhdGUgPSAwOwotICAgIGlmIChzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlz
QWN0aXZlKCkpCisgICAgaWYgKHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQog
ICAgICAgICBzdGF0ZSB8PSBBY3RpdmVTdGF0ZTsKICAgICBpZiAoaGFzQnV0dG9ucyhzY3JvbGxi
YXIpKQogICAgICAgICBzdGF0ZSB8PSBFbmFibGVkU3RhdGU7CkBAIC0yMzYsMTMgKzIzNiwxMyBA
QCB2b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYgogICAgICAgICAgICAgICAgICAgICAgICBidXR0b25S
ZWN0LCBzaXplLCBzdGF0ZSk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50
VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJp
OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3QpCiB7CiAgICAg
aWYgKCFTYWZhcmlUaGVtZUxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIE5TQ29udHJv
bFNpemUgc2l6ZSA9IHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSA9PSBTbWFsbFNjcm9sbGJhciA/
IE5TU21hbGxDb250cm9sU2l6ZSA6IE5TUmVndWxhckNvbnRyb2xTaXplOwogICAgIFRoZW1lQ29u
dHJvbFN0YXRlIHN0YXRlID0gMDsKLSAgICBpZiAoc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgp
LT5pc0FjdGl2ZSgpKQorICAgIGlmIChzY3JvbGxiYXItPmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUo
KSkKICAgICAgICAgc3RhdGUgfD0gQWN0aXZlU3RhdGU7CiAgICAgaWYgKGhhc1RodW1iKHNjcm9s
bGJhcikpCiAgICAgICAgIHN0YXRlIHw9IEVuYWJsZWRTdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmgKaW5kZXggZjAzOTM3OWVh
NDQ3MDhlOGI1Yjc1Zjk2MDU1MzJmZTExZDYyNjU5Mi4uZjQyN2IxOTBmZDY3NjY1MjE1Njc1NjZj
YjZjYmM0ZGZlNDNkOTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Njcm9sbGJhclRoZW1lU2FmYXJpLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Njcm9sbGJhclRoZW1lU2FmYXJpLmgKQEAgLTQxLDIwICs0MSwyMCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKik7
Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgYm9v
bCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBib29sIGhh
c1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgYmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZh
bHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwg
U2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJl
Y3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmly
dHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xs
YmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgZm9y
d2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29s
IHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogCi0gICAgdmlydHVhbCBp
bnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgaW50IG1pbmlt
dW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogICAgIAotICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29u
c3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRl
eHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3Qg
SW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGlj
c0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBJbnRSZWN0Jik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Njcm9sbGJhclRoZW1lV2luLmNwcAppbmRleCBkMzYzNDEwNjg0ODdmZjFiNzg2OTc2OGU5ZDVm
NmIyZjQ4OTgxYWE1Li41NjQ0Mjk3ZDdmMjcwYzUwYzdhMjhlZjNiMWUyNGFjZjFkMTI3OWU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5j
cHAKQEAgLTEzMCwxMiArMTMwLDEyIEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVXaW46OmludmFsaWRh
dGVPbk1vdXNlRW50ZXJFeGl0KCkKICAgICByZXR1cm4gcnVubmluZ1Zpc3RhOwogfQogCi1ib29s
IFNjcm9sbGJhclRoZW1lV2luOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jvb2wg
U2Nyb2xsYmFyVGhlbWVXaW46Omhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIpCiB7CiAgICAgcmV0dXJuIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikgPiAwOwogfQogCi1JbnRS
ZWN0IFNjcm9sbGJhclRoZW1lV2luOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6
YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFy
UGFydCBwYXJ0LCBib29sKQogewogICAgIC8vIFdpbmRvd3MganVzdCBoYXMgc2luZ2xlIGFycm93
cy4KICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uRW5kUGFydCkKQEAgLTE1NCw3ICsxNTQsNyBA
QCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYQogICAgICAgICAgICAgICAgICAgIHRoaWNrbmVzcywg
c2Nyb2xsYmFyLT5oZWlnaHQoKSA8IDIgKiB0aGlja25lc3MgPyBzY3JvbGxiYXItPmhlaWdodCgp
IC8gMiA6IHRoaWNrbmVzcyk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OmZvcndh
cmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJv
b2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAg
ICAgLy8gV2luZG93cyBqdXN0IGhhcyBzaW5nbGUgYXJyb3dzLgogICAgIGlmIChwYXJ0ID09IEZv
cndhcmRCdXR0b25TdGFydFBhcnQpCkBAIC0xNzUsNyArMTc1LDcgQEAgSW50UmVjdCBTY3JvbGxi
YXJUaGVtZVdpbjo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9s
bGJhclBhcnQKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55
KCkgKyBzY3JvbGxiYXItPmhlaWdodCgpIC0gaCwgdGhpY2tuZXNzLCBoKTsKIH0KIAotSW50UmVj
dCBTY3JvbGxiYXJUaGVtZVdpbjo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29s
KQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgaW50IHRoaWNrbmVzcyA9IHNjcm9sbGJhclRo
aWNrbmVzcygpOwogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRh
bFNjcm9sbGJhcikgewpAQCAtMTg4LDEyICsxODgsMTIgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZVdpbjo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQogICAgIHJldHVybiBJ
bnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIHRoaWNrbmVzcywgdGhpY2tu
ZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0gMiAqIHRoaWNrbmVzcyk7CiB9CiAKLWJvb2wgU2Ny
b2xsYmFyVGhlbWVXaW46OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lV2luOjpzaG91bGRDZW50
ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldnQpCiB7CiAgICAgcmV0dXJuIGV2dC5zaGlmdEtleSgpICYmIGV2dC5idXR0b24oKSA9PSBM
ZWZ0QnV0dG9uOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lV2luOjpzaG91bGRTbmFwQmFja1Rv
RHJhZ09yaWdpbihTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lV2luOjpzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdp
bihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2dCkKIHsKICAgICAvLyBGaW5kIHRoZSByZWN0IHdpdGhpbiB3aGljaCB3ZSBzaG91bGRu
J3Qgc25hcCwgYnkgZXhwYW5kaW5nIHRoZSB0cmFjayByZWN0CiAgICAgLy8gaW4gYm90aCBkaW1l
bnNpb25zLgpAQCAtMjExLDE0ICsyMTEsMTQgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6c2hv
dWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFAKICAg
ICByZXR1cm4gIXJlY3QuY29udGFpbnMobW91c2VQb3NpdGlvbik7CiB9CiAKLXZvaWQgU2Nyb2xs
YmFyVGhlbWVXaW46OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9s
bGJhclRoZW1lV2luOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7CiAgICAgLy8gSnVzdCBhc3N1bWUgYSBmb3J3YXJkIHRyYWNrIHBhcnQuICBXZSBvbmx5IHBh
aW50IHRoZSB0cmFjayBhcyBhIHNpbmdsZSBwaWVjZSB3aGVuIHRoZXJlIGlzIG5vIHRodW1iLgog
ICAgIGlmICghaGFzVGh1bWIoc2Nyb2xsYmFyKSkKICAgICAgICAgcGFpbnRUcmFja1BpZWNlKGNv
bnRleHQsIHNjcm9sbGJhciwgcmVjdCwgRm9yd2FyZFRyYWNrUGFydCk7CiB9CiAKLXZvaWQgU2Ny
b2xsYmFyVGhlbWVXaW46OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0
IHBhcnRUeXBlKQordm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKIHsKICAgICBjaGVja0Fu
ZEluaXRTY3JvbGxiYXJUaGVtZSgpOwogCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBTY3JvbGxi
YXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Ny
b2xsYmFyKiBzY3IKICNlbmRpZgogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludEJ1
dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25z
dCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJhclRoZW1l
V2luOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFy
dCkKIHsKICAgICBjaGVja0FuZEluaXRTY3JvbGxiYXJUaGVtZSgpOwogCkBAIC0zMzksNyArMzM5
LDcgQEAgc3RhdGljIEludFJlY3QgZ3JpcHBlclJlY3QoaW50IHRoaWNrbmVzcywgY29uc3QgSW50
UmVjdCYgdGh1bWJSZWN0KQogICAgICAgICAgICAgICAgICAgIGdyaXBwZXJUaGlja25lc3MsIGdy
aXBwZXJUaGlja25lc3MpOwogfQogCi1zdGF0aWMgdm9pZCBwYWludEdyaXBwZXIoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIHJlY3QpCitzdGF0aWMgdm9pZCBw
YWludEdyaXBwZXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgSERDIGhkYywgY29u
c3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIXNjcm9sbGJhclRoZW1lKQogICAgICAgICBy
ZXR1cm47ICAvLyBDbGFzc2ljIGxvb2sgaGFzIG5vIGdyaXBwZXIuCkBAIC0zNTgsNyArMzU4LDcg
QEAgc3RhdGljIHZvaWQgcGFpbnRHcmlwcGVyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBIREMgaGRj
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIERyYXdUaGVtZUJhY2tncm91bmQoc2Nyb2xsYmFy
VGhlbWUsIGhkYywgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxi
YXIgPyBTUF9HUklQUEVSSE9SIDogU1BfR1JJUFBFUlZFUlQsIHN0YXRlLCAmdGhlbWVSZWN0LCAw
KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQor
dm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7CiAgICAgY2hlY2tBbmRJbml0U2Nyb2xsYmFyVGhlbWUoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uaAppbmRleCBjZDJmMTc2ZGZkYzk3
MzgyYzM1YmI3NzNmOWIxZThkYWQyMTI3NmI2Li44NzAyNDBjMTY1NThjZjBmNjI1NzQxOTZlZWI2
OWFhYTgwNmE3YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Ny
b2xsYmFyVGhlbWVXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xs
YmFyVGhlbWVXaW4uaApAQCAtNDIsMjAgKzQyLDIwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaW52YWxpZGF0ZU9uTW91c2VFbnRlckV4aXQoKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1
YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBib29sIGhhc0J1dHRv
bnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBi
b29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIEludFJl
Y3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGlu
ZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xs
YmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFs
IEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Cisg
ICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
U2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJl
Y3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0
LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3Qo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogCi0gICAgdmly
dHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50Jik7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2lu
KFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBCYWNrVG9EcmFnT3Jp
Z2luKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNr
UGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9s
bGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50
UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVt
YihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3Qm
KTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Njcm9s
bGJhclRoZW1lV3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhl
bWVXeC5jcHAKaW5kZXggYzkyNDk3OGE1MDVhYzMxZjE0MDUxZTMwMTgzMzA2NDI1MTNjNGE1MS4u
YmFkZjMxNTU0MDVhNmE1MTM2NjIzMjViOTIzNTlkYzgxM2E5NTI0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5jcHAKQEAgLTcxLDE5ICs3MSwx
OSBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVXeDo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNv
bnRyb2xTaXplIHNpemUpCiAgICAgcmV0dXJuIHRoaWNrbmVzczsKIH0KIAotYm9vbCBTY3JvbGxi
YXJUaGVtZVd4OjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFy
VGhlbWVXeDo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAg
ICAvLyBUaGlzIG1ldGhvZCBpcyBqdXN0IGNhbGxlZCBhcyBhIHBhaW50LXRpbWUgb3B0aW1pemF0
aW9uIHRvIHNlZSBpZgogICAgIC8vIHBhaW50aW5nIHRoZSB0aHVtYiBjYW4gYmUgc2tpcHBlZC4g
IFdlIGRvbid0IGhhdmUgdG8gYmUgZXhhY3QgaGVyZS4KICAgICByZXR1cm4gdGh1bWJMZW5ndGgo
c2Nyb2xsYmFyKSA+IDA7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZVd4OjptaW5pbXVtVGh1bWJM
ZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVXeDo6bWluaW11
bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0
dXJuIDIwOwogfQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lV3g6OmJ1dHRvblNpemUoU2Nyb2xs
YmFyKikgCitJbnRTaXplIFNjcm9sbGJhclRoZW1lV3g6OmJ1dHRvblNpemUoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqKSAKIHsKICNpZmRlZiBfX1dYTUFDX18KICAgICByZXR1cm4gSW50U2l6ZSgyMCwy
MCk7CkBAIC05Miw3ICs5Miw3IEBAIEludFNpemUgU2Nyb2xsYmFyVGhlbWVXeDo6YnV0dG9uU2l6
ZShTY3JvbGxiYXIqKQogI2VuZGlmCiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVXeDo6c3BsaXRU
cmFjayhTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRy
YWNrUmVjdCwgSW50UmVjdCYgYmVmb3JlVGh1bWJSZWN0LCBJbnRSZWN0JiB0aHVtYlJlY3QsIElu
dFJlY3QmIGFmdGVyVGh1bWJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZVd4OjpzcGxpdFRyYWNr
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29uc3Ry
YWluZWRUcmFja1JlY3QsIEludFJlY3QmIGJlZm9yZVRodW1iUmVjdCwgSW50UmVjdCYgdGh1bWJS
ZWN0LCBJbnRSZWN0JiBhZnRlclRodW1iUmVjdCkKIHsKICAgICBTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZTo6c3BsaXRUcmFjayhzY3JvbGxiYXIsIHVuY29uc3RyYWluZWRUcmFja1JlY3QsIGJlZm9y
ZVRodW1iUmVjdCwgdGh1bWJSZWN0LCBhZnRlclRodW1iUmVjdCk7CiAjaWZkZWYgX19XWE1BQ19f
CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZVd4OjpzcGxpdFRyYWNrKFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmEKICNlbmRpZgogfQog
Ci1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1l
V3g6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9s
bGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICAvLyBGSVhNRTogSGFuZGxpbmcgdGhpcyBjYXNl
IGlzIG5lZWRlZCB3aGVuIHRoZXJlIGFyZSB0d28gc2V0cyBvZiBhcnJvdyBidXR0b25zCiAgICAg
Ly8gb24gTWFjLCBvbmUgYXQgdGhlIHRvcCBhbmQgb25lIGF0IHRoZSBib3R0b20uCkBAIC0xMzAs
NyArMTMwLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4OjpiYWNrQnV0dG9uUmVjdChTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXIKICAgICByZXR1cm4gSW50UmVjdCh4
LCB5LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJh
clRoZW1lV3g6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxi
YXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OmZvcndhcmRCdXR0
b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFy
dCwgYm9vbCkKIHsKICAgICAvLyBGSVhNRTogSGFuZGxpbmcgdGhpcyBjYXNlIGlzIG5lZWRlZCB3
aGVuIHRoZXJlIGFyZSB0d28gc2V0cyBvZiBhcnJvdyBidXR0b25zCiAgICAgLy8gb24gTWFjLCBv
bmUgYXQgdGhlIHRvcCBhbmQgb25lIGF0IHRoZSBib3R0b20uCkBAIC0xNTUsNyArMTU1LDcgQEAg
SW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydAogICAgIHJldHVybiBJbnRSZWN0KHgsIHksIHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6dHJh
Y2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZVd4Ojp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCkKIHsK
ICAgICBJbnRTaXplIGJzID0gYnV0dG9uU2l6ZShzY3JvbGxiYXIpOwogICAgIGludCB0cmFja1N0
YXJ0ID0gMDsKQEAgLTE3OSwxMSArMTc5LDExIEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6
dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQogICAgIHJldHVybiBJbnRSZWN0
KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIHRyYWNrU3RhcnQsIHRoaWNrbmVzcywg
c2Nyb2xsYmFyLT5oZWlnaHQoKSAtIDIgKiBicy5oZWlnaHQoKSk7CiB9CiAKLWJvb2wgU2Nyb2xs
YmFyVGhlbWVXeDo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVXeDo6cGFp
bnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIHd4T3JpZW50YXRpb24gb3JpZW50YXRp
b24gPSAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpID8g
d3hIT1JJWk9OVEFMIDogd3hWRVJUSUNBTDsKICAgICBpbnQgZmxhZ3MgPSAwOwotICAgIGlmIChz
Y3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlzQWN0aXZlKCkpCisgICAgaWYgKHNjcm9sbGJh
ci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQogICAgICAgICBmbGFncyB8PSB3eENPTlRST0xf
Rk9DVVNFRDsKICAgICAKICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5oCmluZGV4IDc1YWIxNzVhM2Jh
NjA0ZmNkNzk1YWQyZWE0NWVkZmNmNTgzZWU1NTguLjM3MmFhZjk2NjJmNzQ1ZDRlZTA3NDdlZGY1
YzExZjlmYzVhZDg5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Nj
cm9sbGJhclRoZW1lV3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxi
YXJUaGVtZVd4LmgKQEAgLTM1LDIxICszNSwyMSBAQCBjbGFzcyBTY3JvbGxiYXJUaGVtZVd4IDog
cHVibGljIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5T
Y3JvbGxiYXJUaGVtZVd4KCk7CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNj
cm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcik7Ci0gICAgdmlydHVhbCBib29s
IHBhaW50KFNjcm9sbGJhciosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29s
IGhhc0J1dHRvbnMoU2Nyb2xsYmFyKikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBoYXNUaHVtYihTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3Jv
bGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFz
VGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0
b25TaXplKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9s
bGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3Qo
U2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2
aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFy
dCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0
KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0
IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9v
bCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJl
Y3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0g
ZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogCi0gICAgdmlydHVhbCB2b2lkIHNwbGl0VHJh
Y2soU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYgdHJhY2ssIEludFJlY3QmIHN0YXJ0VHJhY2ss
IEludFJlY3QmIHRodW1iLCBJbnRSZWN0JiBlbmRUcmFjayk7CisgICAgdmlydHVhbCB2b2lkIHNw
bGl0VHJhY2soU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiB0cmFjaywgSW50
UmVjdCYgc3RhcnRUcmFjaywgSW50UmVjdCYgdGh1bWIsIEludFJlY3QmIGVuZFRyYWNrKTsKICAg
ICAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7CisgICAg
dmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiB9
OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKaW5kZXgg
ODEwYzk4ZmYzNjY4YWI5MWNkZTljMzU3MThkNmYwNGIyZjc0NjcxYi4uN2ZlMmZhYzhiOGQ0OTc1
NGQ4ZWFiMjNkNDA1YjE2MmJlMzNkYzdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTY3JvbGxiYXIuaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8
dW5zaWduZWQsIFJlbmRlclNjcm9sbGJhclBhcnQqPiBtX3BhcnRzOwogfTsKIAotaW5saW5lIFJl
bmRlclNjcm9sbGJhciogdG9SZW5kZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitp
bmxpbmUgUmVuZGVyU2Nyb2xsYmFyKiB0b1JlbmRlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyKQogewogICAgIEFTU0VSVCghc2Nyb2xsYmFyIHx8IHNjcm9sbGJhci0+
aXNDdXN0b21TY3JvbGxiYXIoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlclNjcm9s
bGJhcio+KHNjcm9sbGJhcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhclRoZW1lLmNwcAppbmRleCA4NzMwOWQ0NGU1YWE0NTI2OTc5YWZlYmU1MTI3OGI0
ZTQ2YTVlOTE3Li40NGUyYWE2MzFkYzI4MTUwMTc0YmMyMjUyMzBlOGI2YWFiN2QwZDM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJT
Y3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhci5oIgorI2luY2x1ZGUg
IlNjcm9sbGJhclRoZW1lQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiw3ICszNyw3IEBAIFJlbmRlclNjcm9sbGJhclRo
ZW1lKiBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cmVuZGVyU2Nyb2xsYmFyVGhlbWUoKQogICAgIHJl
dHVybiAmdGhlbWU7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVz
QWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGludCYgYmVmb3JlU2l6ZSwgaW50
JiBhZnRlclNpemUpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpidXR0b25TaXplc0Fsb25n
VHJhY2tBeGlzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGludCYgYmVmb3JlU2l6
ZSwgaW50JiBhZnRlclNpemUpCiB7CiAgICAgSW50UmVjdCBmaXJzdEJ1dHRvbiA9IGJhY2tCdXR0
b25SZWN0KHNjcm9sbGJhciwgQmFja0J1dHRvblN0YXJ0UGFydCk7CiAgICAgSW50UmVjdCBzZWNv
bmRCdXR0b24gPSBmb3J3YXJkQnV0dG9uUmVjdChzY3JvbGxiYXIsIEZvcndhcmRCdXR0b25TdGFy
dFBhcnQpOwpAQCAtNTEsNyArNTIsNyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpidXR0
b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBpbnQmCiAgICAgfQog
fQogCi1ib29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQorYm9vbCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzQnV0dG9ucyhTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGludCBzdGFydFNpemU7CiAgICAgaW50IGVu
ZFNpemU7CkBAIC01OSwyNyArNjAsMjcgQEAgYm9vbCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFz
QnV0dG9ucyhTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICByZXR1cm4gKHN0YXJ0U2l6ZSArIGVu
ZFNpemUpIDw9IChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJh
ciA/IHNjcm9sbGJhci0+d2lkdGgoKSA6IHNjcm9sbGJhci0+aGVpZ2h0KCkpOwogfQogCi1ib29s
IFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jv
b2wgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Omhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHRyYWNrTGVuZ3RoKHNjcm9sbGJhcikgLSB0aHVtYkxl
bmd0aChzY3JvbGxiYXIpID49IDA7CiB9CiAKLWludCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6bWlu
aW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFJlbmRlclNjcm9sbGJh
clRoZW1lOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
cikKIHsKICAgICByZXR1cm4gdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+bWluaW11bVRo
dW1iTGVuZ3RoKCk7CiB9CiAKLUludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJhY2tCdXR0
b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29s
KQorSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgYm9vbCkKIHsK
ICAgICByZXR1cm4gdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+YnV0dG9uUmVjdChwYXJ0
VHlwZSk7CiB9CiAKLUludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmZvcndhcmRCdXR0b25S
ZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29sKQor
SW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgYm9vbCkKIHsK
ICAgICByZXR1cm4gdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+YnV0dG9uUmVjdChwYXJ0
VHlwZSk7CiB9CiAKLUludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnRyYWNrUmVjdChTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKK0ludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnRy
YWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sKQogewogICAgIGlm
ICghaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICByZXR1cm4gc2Nyb2xsYmFyLT5mcmFt
ZVJlY3QoKTsKQEAgLTkxLDcgKzkyLDcgQEAgSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQogICAgIHJldHVybiB0b1JlbmRl
clNjcm9sbGJhcihzY3JvbGxiYXIpLT50cmFja1JlY3Qoc3RhcnRMZW5ndGgsIGVuZExlbmd0aCk7
CiB9CiAKLUludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVjdFRv
VHJhY2tQaWVjZXMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCitJ
bnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjpjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGll
Y2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7IAogICAgIEludFJlY3QgYmFja1JlY3QgPSB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIp
LT50cmFja1BpZWNlUmVjdFdpdGhNYXJnaW5zKEJhY2tUcmFja1BhcnQsIHJlY3QpOwogICAgIElu
dFJlY3QgZm9yd2FyZFJlY3QgPSB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT50cmFja1Bp
ZWNlUmVjdFdpdGhNYXJnaW5zKEZvcndhcmRUcmFja1BhcnQsIHJlY3QpOwpAQCAtMTEyLDI3ICsx
MTMsMjcgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRTY3JvbGxDb3JuZXIoU2Ny
b2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGUKICAgICBjb250ZXh0LT5maWxsUmVjdChj
b3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogfQogCi12b2lk
IFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgUmVuZGVyU2Nyb2xs
YmFyVGhlbWU6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgdG9SZW5kZXJTY3Jv
bGxiYXIoc2Nyb2xsYmFyKS0+cGFpbnRQYXJ0KGNvbnRleHQsIFNjcm9sbGJhckJHUGFydCwgc2Ny
b2xsYmFyLT5mcmFtZVJlY3QoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBh
aW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1l
OjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgdG9S
ZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+cGFpbnRQYXJ0KGNvbnRleHQsIFRyYWNrQkdQYXJ0
LCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja1BpZWNl
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQg
cGFydCkKIHsKICAgICB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5wYWludFBhcnQoY29u
dGV4dCwgcGFydCwgcmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50
QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgUmVuZGVyU2Nyb2xs
YmFyVGhlbWU6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFy
dCBwYXJ0KQogewogICAgIHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnBhaW50UGFydChj
b250ZXh0LCBwYXJ0LCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFp
bnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBj
b25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUaHVt
YihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xs
YmFyKS0+cGFpbnRQYXJ0KGNvbnRleHQsIFRodW1iUGFydCwgcmVjdCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oCmluZGV4IDcwYzI0YTVl
YTJlZDc5YmI5ZjhmYWQwMjEzN2M2MzU2OWQ5OTYzYzQuLmVjOTJiZGM5MzkzYWNjNmYyZGE2YTE3
NGY3N2I5ZjNlYTE0MWZlNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTY3JvbGxiYXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJUaGVtZS5oCkBAIC00NiwzNSArNDYsMzUgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOwogCi0gICAgdmlydHVhbCBib29s
IHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgZXZlbnQpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zaG91
bGRDZW50ZXJPblRodW1iKHNjcm9sbGJhciwgZXZlbnQpOyB9CisgICAgdmlydHVhbCBib29sIHNo
b3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1l
KCktPnNob3VsZENlbnRlck9uVGh1bWIoc2Nyb2xsYmFyLCBldmVudCk7IH0KICAgICAKICAgICB2
aXJ0dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKSB7IHJldHVybiBTY3Jv
bGxiYXJUaGVtZTo6dGhlbWUoKS0+aW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KICAg
ICB2aXJ0dWFsIGRvdWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIFNjcm9sbGJh
clRoZW1lOjp0aGVtZSgpLT5hdXRvc2Nyb2xsVGltZXJEZWxheSgpOyB9CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpIHsgcmV0dXJuIFNj
cm9sbGJhclRoZW1lOjp0aGVtZSgpLT5yZWdpc3RlclNjcm9sbGJhcihzY3JvbGxiYXIpOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
IHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT51bnJlZ2lzdGVyU2Nyb2xsYmFyKHNj
cm9sbGJhcik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkt
PnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdp
c3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKSB7IHJldHVybiBT
Y3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+dW5yZWdpc3RlclNjcm9sbGJhcihzY3JvbGxiYXIpOyB9
CiAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7CisgICAg
dmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAK
LSAgICB2b2lkIGJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGludCYgYmVmb3JlU2l6ZSwgaW50JiBhZnRlclNpemUpOworICAgIHZvaWQgYnV0dG9uU2l6ZXNB
bG9uZ1RyYWNrQXhpcyhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBpbnQmIGJlZm9y
ZVNpemUsIGludCYgYWZ0ZXJTaXplKTsKICAgICAKICAgICBzdGF0aWMgUmVuZGVyU2Nyb2xsYmFy
VGhlbWUqIHJlbmRlclNjcm9sbGJhclRoZW1lKCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFs
IGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIo
U2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
KTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3Jv
bGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCBm
b3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5n
ID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9v
bCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3Qo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFs
c2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmly
dHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRp
bmcgPSBmYWxzZSk7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqKTsgICAgCi0gICAgdmlydHVhbCB2b2lk
IHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0
IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29u
c3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1i
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9s
bGJhclRoZW1lQ2xpZW50Kik7ICAgIAorICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCos
IGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBjb25zdHJhaW5UcmFja1Jl
Y3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFs
IEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128488</attachid>
            <date>2012-02-23 09:48:21 -0800</date>
            <delta_ts>2012-02-23 10:46:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78028-20120223124820.patch</filename>
            <type>text/plain</type>
            <size>127147</size>
            <attacher name="Peter Kotwicz">pkotwicz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTkwNGZmYTlmZThhMjRm
Y2Y4NDg2MmJjYmZjYmY0YTAwNWFiODE1OS4uMjIyNjM4ZmVmMjMzOTY1Zjg4YTU2NmQ4ODgwMjQ5
OWQ2ODIxNzgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2NCBAQAorMjAxMi0wMi0yMiAgUGV0
ZXIgS290d2ljeiAgPHBrb3R3aWN6QGdvb2dsZS5jb20+CisKKyAgICAgICAgRGVjb3VwbGUgc2Ny
b2xsYmFyIHBhaW50aW5nIGZyb20gU2Nyb2xsYmFyIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwMjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmdldFRpY2ttYXJr
cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUp
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5oOgorICAgICAgICAoU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6b3JpZW50YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmN1
cnJlbnRQb3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp2aXNpYmxlU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnRvdGFsU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXI6Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpjb250
cm9sU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmxpbmVTdGVwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFnZVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyOjpwcmVzc2VkUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmhvdmVy
ZWRQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXI6OngpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6d2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bG9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpy
b290KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZnJhbWVSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXI6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWU6OnVwZGF0ZUVuYWJsZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6
OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnVwZGF0ZVNjcm9s
bGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6aW52
YWxpZGF0ZVBhcnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjppbnZhbGlk
YXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkQ2VudGVy
T25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkU25hcEJh
Y2tUb0RyYWdPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnNob3Vs
ZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lOjp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Ojp0aHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dHJhY2tQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dHJhY2tMZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDbGllbnQ6On5TY3JvbGxiYXJUaGVtZUNsaWVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpoaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayk6CisgICAgICAgIChXZWJD
b3JlOjp1c2VkVG90YWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjp0aHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZTo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aCk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNj
cm9sbGJhckJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlOjpwYWludFRyYWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRpY2ttYXJrcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNl
cyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpoYXNUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpiYWNrQnV0dG9uUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpmb3J3YXJkQnV0
dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjp0cmFj
a1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRU
cmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bTo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21p
dW06Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bSk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50
U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNo
cm9taXVtQW5kcm9pZDo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YnV0dG9uU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6bWluaW11bVRodW1iTGVuZ3RoKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9p
ZC5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50
QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6
cGFpbnRUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGlu
dXg6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaDoKKyAgICAgICAgKFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50R2l2ZW5U
aWNrbWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3Np
Y1RoZW1lU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bjo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtV2luOjpidXR0b25TaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmg6CisgICAgICAgIChTY3JvbGxiYXJUaGVtZUNocm9t
aXVtV2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVFZmw6OnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lRWZsOjp1bnJlZ2lzdGVyU2Nyb2xsYmFy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaDoKKyAgICAgICAg
KFNjcm9sbGJhclRoZW1lRWZsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhl
bWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUd0azo6cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVHdGs6OnVucmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRoaWNrbmVzcyk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lR3RrOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lR3RrOjp0aHVtYlJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVHdGs6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpzaG91
bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpi
dXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjptaW5pbXVt
VGh1bWJMZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5o
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6Omhhc0J1dHRvbnMpOgorICAg
ICAgICAoU2Nyb2xsYmFyVGhlbWVHdGspOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxi
YXJUaGVtZUd0azIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0V2lkZ2V0Rm9yU2Nyb2xsYmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxi
YXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWlu
dFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRv
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRCdXR0b24pOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oOgorICAgICAgICAoU2Nyb2xs
YmFyVGhlbWVNYWMpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVN
YWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
TWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1dHRvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lTWFjOjpzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlRW5hYmxlZFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVNb2NrOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZU1vY2s6OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xs
YmFyVGhlbWVNb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6Omhh
c0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpoYXNUaHVt
Yik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OmJhY2tCdXR0b25SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6Zm9yd2FyZEJ1dHRvblJl
Y3QpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVNb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9TY3JvbGxiYXJUaGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlT3B0aW9uU2xp
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVRdDo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZVF0OjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lUXQ6OnRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lUXQ6OnRyYWNrUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVRdDo6dHJhY2tMZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1l
UXQuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lUXQpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZVNhZmFyaTo6aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZh
cmk6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2Fm
YXJpOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2Fm
YXJpOjptaW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVTYWZhcmk6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVTYWZhcmk6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUaHVtYik6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L1Njcm9sbGJhclRoZW1lU2FmYXJpLmg6CisgICAgICAgIChTY3JvbGxiYXJUaGVtZVNhZmFyaSk6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZVdpbjo6YmFja0J1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVXaW46OmZvcndhcmRCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lV2luOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVXaW46OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJD
b3JlOjpwYWludEdyaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46
OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5o
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46Omhhc0J1dHRvbnMpOgorICAg
ICAgICAoU2Nyb2xsYmFyVGhlbWVXaW4pOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJh
clRoZW1lV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzVGh1
bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6bWluaW11bVRodW1iTGVu
Z3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV3g6OmJ1dHRvblNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6c3BsaXRUcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4OjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVXeDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJh
clRoZW1lV3guaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lV3gpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzQnV0dG9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhci5oOgorICAgICAgICAoV2ViQ29yZTo6dG9SZW5kZXJTY3JvbGxiYXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzQnV0dG9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzVGh1bWIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1pbmltdW1UaHVtYkxlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YmFja0J1dHRvblJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmZvcndhcmRCdXR0b25SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVj
dFRvVHJhY2tQaWVjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJUaGVtZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xs
YmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNj
cm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFJlbmRlclNjcm9s
bGJhclRoZW1lKToKKwogMjAxMi0wMi0yMiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtleHBlcmltZW50YWxdIGFkZCBhIG1v
ZGUgdG8gZGlzcGxheSB0aW1lbGluZSBldmVudHMgYWxpZ25lZCBieSB0aGUgc3RhcnQgdGltZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDU4Y2FhYTFjOGNmNjBmYTYwYjA2YmMxZTE0M2JiNWVhOTZhYmEy
NzEuLjNhZDE4NWJiMWFiODViMzFjYzJkNWQ3NmEzYzkwYjU3MzEyZTE4OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTI5Miw2ICsyOTIsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGJhci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9T
Y3JvbGxiYXJUaGVtZUNsaWVudC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TZWFyY2hQb3B1
cE1lbnUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXggM2I5YzE5NWNmZjU1MzkxNjU1NjIwM2UyZjJjYzRm
ZTVkOGY5YTUxZS4uZTM5MjU0YzYxZmIyOWMxMTJlMWU5ZDY4MjBkZThhNjI5ZjRmNDFmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC0xMTIsNiArMTEyLDc5IEBAIFNj
cm9sbGJhcjo6flNjcm9sbGJhcigpCiAgICAgbV90aGVtZS0+dW5yZWdpc3RlclNjcm9sbGJhcih0
aGlzKTsKIH0KIAordm9pZCBTY3JvbGxiYXI6OnNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiBy
ZWN0KQoreworICAgIC8vIEdldCBvdXIgd2luZG93IHJlc2l6ZXIgcmVjdCBhbmQgc2VlIGlmIHdl
IG92ZXJsYXAuICBBZGp1c3QgdG8gYXZvaWQgdGhlIG92ZXJsYXAKKyAgICAvLyBpZiBuZWNlc3Nh
cnkuCisgICAgSW50UmVjdCBhZGp1c3RlZFJlY3QocmVjdCk7CisgICAgYm9vbCBvdmVybGFwc1Jl
c2l6ZXIgPSBmYWxzZTsKKyAgICBTY3JvbGxWaWV3KiB2aWV3ID0gcGFyZW50KCk7CisgICAgaWYg
KHZpZXcgJiYgIXJlY3QuaXNFbXB0eSgpICYmICF2aWV3LT53aW5kb3dSZXNpemVyUmVjdCgpLmlz
RW1wdHkoKSkgeworICAgICAgICBJbnRSZWN0IHJlc2l6ZXJSZWN0ID0gdmlldy0+Y29udmVydEZy
b21Db250YWluaW5nV2luZG93KHZpZXctPndpbmRvd1Jlc2l6ZXJSZWN0KCkpOworICAgICAgICBp
ZiAocmVjdC5pbnRlcnNlY3RzKHJlc2l6ZXJSZWN0KSkgeworICAgICAgICAgICAgaWYgKG9yaWVu
dGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAgICAgICAgICAgICAgIGludCBv
dmVybGFwID0gcmVjdC5tYXhYKCkgLSByZXNpemVyUmVjdC54KCk7CisgICAgICAgICAgICAgICAg
aWYgKG92ZXJsYXAgPiAwICYmIHJlc2l6ZXJSZWN0Lm1heFgoKSA+PSByZWN0Lm1heFgoKSkgewor
ICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFJlY3Quc2V0V2lkdGgocmVjdC53aWR0aCgpIC0g
b3ZlcmxhcCk7CisgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBzUmVzaXplciA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
bnQgb3ZlcmxhcCA9IHJlY3QubWF4WSgpIC0gcmVzaXplclJlY3QueSgpOworICAgICAgICAgICAg
ICAgIGlmIChvdmVybGFwID4gMCAmJiByZXNpemVyUmVjdC5tYXhZKCkgPj0gcmVjdC5tYXhZKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgYWRqdXN0ZWRSZWN0LnNldEhlaWdodChyZWN0LmhlaWdo
dCgpIC0gb3ZlcmxhcCk7CisgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBzUmVzaXplciA9IHRy
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIGlmIChvdmVybGFwc1Jlc2l6ZXIgIT0gbV9vdmVybGFwc1Jlc2l6ZXIpIHsKKyAgICAgICAg
bV9vdmVybGFwc1Jlc2l6ZXIgPSBvdmVybGFwc1Jlc2l6ZXI7CisgICAgICAgIGlmICh2aWV3KQor
ICAgICAgICAgICAgdmlldy0+YWRqdXN0U2Nyb2xsYmFyc0F2b2lkaW5nUmVzaXplckNvdW50KG1f
b3ZlcmxhcHNSZXNpemVyID8gMSA6IC0xKTsKKyAgICB9CisKKyAgICBXaWRnZXQ6OnNldEZyYW1l
UmVjdChhZGp1c3RlZFJlY3QpOworfQorCit2b2lkIFNjcm9sbGJhcjo6aW52YWxpZGF0ZVJlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoc3VwcHJlc3NJbnZhbGlkYXRpb24oKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIG1f
c2Nyb2xsYWJsZUFyZWEtPmludmFsaWRhdGVTY3JvbGxiYXIodGhpcywgcmVjdCk7Cit9CisKK1Nj
cm9sbGJhck92ZXJsYXlTdHlsZSBTY3JvbGxiYXI6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEgPyBTY3JvbGxiYXJPdmVybGF5U3R5
bGVEZWZhdWx0IDogbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7Cit9
CisKK3ZvaWQgU2Nyb2xsYmFyOjpnZXRUaWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JiB0aWNrbWFy
a3MpIGNvbnN0Cit7CisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIG1fc2Nyb2xs
YWJsZUFyZWEtPmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOworfQorCitib29sIFNjcm9sbGJhcjo6
aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJs
ZUFyZWEgJiYgbV9zY3JvbGxhYmxlQXJlYS0+aXNBY3RpdmUoKTsKK30KKworYm9vbCBTY3JvbGxi
YXI6OmlzU2Nyb2xsVmlld1Njcm9sbGJhcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhcmVudCgp
ICYmIHBhcmVudCgpLT5pc0ZyYW1lVmlldygpICYmIHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHBh
cmVudCgpKS0+aXNTY3JvbGxWaWV3U2Nyb2xsYmFyKHRoaXMpOworfQorCit2b2lkIFNjcm9sbGJh
cjo6c2V0RW5hYmxlZChib29sIGUpCit7IAorICAgIGlmIChtX2VuYWJsZWQgPT0gZSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fZW5hYmxlZCA9IGU7CisgICAgdGhlbWUoKS0+dXBkYXRlRW5hYmxl
ZFN0YXRlKHRoaXMpOworICAgIGludmFsaWRhdGUoKTsKK30KKwogdm9pZCBTY3JvbGxiYXI6Om9m
ZnNldERpZENoYW5nZSgpCiB7CiAgICAgQVNTRVJUKG1fc2Nyb2xsYWJsZUFyZWEpOwpAQCAtNDMy
LDQwICs1MDUsNiBAQCBib29sIFNjcm9sbGJhcjo6bW91c2VEb3duKGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZ0KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNjcm9sbGJhcjo6c2V0
RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgLy8gR2V0IG91ciB3aW5kb3cg
cmVzaXplciByZWN0IGFuZCBzZWUgaWYgd2Ugb3ZlcmxhcC4gIEFkanVzdCB0byBhdm9pZCB0aGUg
b3ZlcmxhcAotICAgIC8vIGlmIG5lY2Vzc2FyeS4KLSAgICBJbnRSZWN0IGFkanVzdGVkUmVjdChy
ZWN0KTsKLSAgICBib29sIG92ZXJsYXBzUmVzaXplciA9IGZhbHNlOwotICAgIFNjcm9sbFZpZXcq
IHZpZXcgPSBwYXJlbnQoKTsKLSAgICBpZiAodmlldyAmJiAhcmVjdC5pc0VtcHR5KCkgJiYgIXZp
ZXctPndpbmRvd1Jlc2l6ZXJSZWN0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEludFJlY3QgcmVz
aXplclJlY3QgPSB2aWV3LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3codmlldy0+d2luZG93
UmVzaXplclJlY3QoKSk7Ci0gICAgICAgIGlmIChyZWN0LmludGVyc2VjdHMocmVzaXplclJlY3Qp
KSB7Ci0gICAgICAgICAgICBpZiAob3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
KSB7Ci0gICAgICAgICAgICAgICAgaW50IG92ZXJsYXAgPSByZWN0Lm1heFgoKSAtIHJlc2l6ZXJS
ZWN0LngoKTsKLSAgICAgICAgICAgICAgICBpZiAob3ZlcmxhcCA+IDAgJiYgcmVzaXplclJlY3Qu
bWF4WCgpID49IHJlY3QubWF4WCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkanVzdGVkUmVj
dC5zZXRXaWR0aChyZWN0LndpZHRoKCkgLSBvdmVybGFwKTsKLSAgICAgICAgICAgICAgICAgICAg
b3ZlcmxhcHNSZXNpemVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIGludCBvdmVybGFwID0gcmVjdC5tYXhZKCkgLSByZXNp
emVyUmVjdC55KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG92ZXJsYXAgPiAwICYmIHJlc2l6ZXJS
ZWN0Lm1heFkoKSA+PSByZWN0Lm1heFkoKSkgewotICAgICAgICAgICAgICAgICAgICBhZGp1c3Rl
ZFJlY3Quc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLSBvdmVybGFwKTsKLSAgICAgICAgICAgICAg
ICAgICAgb3ZlcmxhcHNSZXNpemVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKG92ZXJsYXBzUmVzaXplciAhPSBtX292
ZXJsYXBzUmVzaXplcikgewotICAgICAgICBtX292ZXJsYXBzUmVzaXplciA9IG92ZXJsYXBzUmVz
aXplcjsKLSAgICAgICAgaWYgKHZpZXcpCi0gICAgICAgICAgICB2aWV3LT5hZGp1c3RTY3JvbGxi
YXJzQXZvaWRpbmdSZXNpemVyQ291bnQobV9vdmVybGFwc1Jlc2l6ZXIgPyAxIDogLTEpOwotICAg
IH0KLQotICAgIFdpZGdldDo6c2V0RnJhbWVSZWN0KGFkanVzdGVkUmVjdCk7Ci19Ci0KIHZvaWQg
U2Nyb2xsYmFyOjpzZXRQYXJlbnQoU2Nyb2xsVmlldyogcGFyZW50VmlldykKIHsKICAgICBpZiAo
IXBhcmVudFZpZXcgJiYgbV9vdmVybGFwc1Jlc2l6ZXIgJiYgcGFyZW50KCkpCkBAIC00NzMsMTUg
KzUxMiw2IEBAIHZvaWQgU2Nyb2xsYmFyOjpzZXRQYXJlbnQoU2Nyb2xsVmlldyogcGFyZW50Vmll
dykKICAgICBXaWRnZXQ6OnNldFBhcmVudChwYXJlbnRWaWV3KTsKIH0KIAotdm9pZCBTY3JvbGxi
YXI6OnNldEVuYWJsZWQoYm9vbCBlKQoteyAKLSAgICBpZiAobV9lbmFibGVkID09IGUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBtX2VuYWJsZWQgPSBlOwotICAgIHRoZW1lKCktPnVwZGF0ZUVuYWJs
ZWRTdGF0ZSh0aGlzKTsKLSAgICBpbnZhbGlkYXRlKCk7Ci19Ci0KIGJvb2wgU2Nyb2xsYmFyOjpp
c092ZXJsYXlTY3JvbGxiYXIoKSBjb25zdAogewogICAgIHJldHVybiBtX3RoZW1lLT51c2VzT3Zl
cmxheVNjcm9sbGJhcnMoKTsKQEAgLTUxMSwxNSArNTQxLDYgQEAgQVhPYmplY3RDYWNoZSogU2Ny
b2xsYmFyOjpheE9iamVjdENhY2hlKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQtPmF4T2Jq
ZWN0Q2FjaGUoKTsKIH0KIAotdm9pZCBTY3JvbGxiYXI6OmludmFsaWRhdGVSZWN0KGNvbnN0IElu
dFJlY3QmIHJlY3QpCi17Ci0gICAgaWYgKHN1cHByZXNzSW52YWxpZGF0aW9uKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChtX3Njcm9sbGFibGVBcmVhKQotICAgICAgICBtX3Njcm9sbGFi
bGVBcmVhLT5pbnZhbGlkYXRlU2Nyb2xsYmFyKHRoaXMsIHJlY3QpOwotfQotCiBJbnRSZWN0IFNj
cm9sbGJhcjo6Y29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYgbG9jYWxSZWN0
KSBjb25zdAogewogICAgIGlmIChtX3Njcm9sbGFibGVBcmVhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxiYXIuaAppbmRleCAzOWFjMjU0NjVkMTQ1NWE1OTkyY2QyNWMyMjI4ZGQyYjY1MzRhNjNk
Li45OWZkODQ2MWI3YWE3OTk5OTVhMWYzMjliZDMwMGU2NWY2M2YwYzg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXIuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBTY3JvbGxiYXJf
aAogI2RlZmluZSBTY3JvbGxiYXJfaAogCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDbGllbnQu
aCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVk
ZSAiV2lkZ2V0LmgiCkBAIC00MCwxMyArNDEsNjAgQEAgY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50
OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBTY3JvbGxiYXJUaGVtZTsKIAotY2xhc3Mg
U2Nyb2xsYmFyIDogcHVibGljIFdpZGdldCB7CitjbGFzcyBTY3JvbGxiYXIgOiBwdWJsaWMgV2lk
Z2V0LAorICAgICAgICAgICAgICAgICAgcHVibGljIFNjcm9sbGJhclRoZW1lQ2xpZW50IHsKKwog
cHVibGljOgogICAgIC8vIE11c3QgYmUgaW1wbGVtZW50ZWQgYnkgcGxhdGZvcm1zIHRoYXQgY2Fu
J3Qgc2ltcGx5IHVzZSB0aGUgU2Nyb2xsYmFyIGJhc2UgY2xhc3MuICBSaWdodCBub3cgdGhlIG9u
bHkgcGxhdGZvcm0gdGhhdCBpcyBub3QgdXNpbmcgdGhlIGJhc2UgY2xhc3MgaXMgR1RLLgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gY3JlYXRlTmF0aXZlU2Nyb2xsYmFyKFNjcm9s
bGFibGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbGJhckNv
bnRyb2xTaXplIHNpemUpOwogCiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyKCk7CiAKKyAgICAvLyBT
Y3JvbGxiYXJUaGVtZUNsaWVudCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIGludCB4KCkg
Y29uc3QgeyByZXR1cm4gV2lkZ2V0Ojp4KCk7IH0KKyAgICB2aXJ0dWFsIGludCB5KCkgY29uc3Qg
eyByZXR1cm4gV2lkZ2V0Ojp5KCk7IH0KKyAgICB2aXJ0dWFsIGludCB3aWR0aCgpIGNvbnN0IHsg
cmV0dXJuIFdpZGdldDo6d2lkdGgoKTsgfQorICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIFdpZGdldDo6aGVpZ2h0KCk7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6c2l6ZSgpOyB9CisgICAgdmlydHVhbCBJbnRQb2ludCBs
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6bG9jYXRpb24oKTsgfQorCisgICAgdmly
dHVhbCBTY3JvbGxWaWV3KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OnBhcmVudCgp
OyB9CisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiByb290KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0
Ojpyb290KCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVj
dCYpOworICAgIHZpcnR1YWwgSW50UmVjdCBmcmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBXaWRn
ZXQ6OmZyYW1lUmVjdCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIHsgV2lk
Z2V0OjppbnZhbGlkYXRlKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29u
c3QgSW50UmVjdCYpOworCisgICAgdmlydHVhbCBTY3JvbGxiYXJPdmVybGF5U3R5bGUgc2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGdldFRpY2ttYXJrcyhW
ZWN0b3I8SW50UmVjdD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxhYmxlQXJl
YUFjdGl2ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbFZpZXdTY3JvbGxiYXIo
KSBjb25zdDsKKworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nV2lu
ZG93KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkgeyByZXR1cm4gV2lkZ2V0Ojpjb252ZXJ0
RnJvbUNvbnRhaW5pbmdXaW5kb3cod2luZG93UG9pbnQpOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wg
aXNDdXN0b21TY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
U2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVu
dGF0aW9uOyB9CisKKyAgICB2aXJ0dWFsIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGxyb3Vu
ZGYobV9jdXJyZW50UG9zKTsgfQorICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFBvcygpIGNvbnN0
IHsgcmV0dXJuIG1fY3VycmVudFBvczsgfQorICAgIHZpcnR1YWwgaW50IHZpc2libGVTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV92aXNpYmxlU2l6ZTsgfQorICAgIHZpcnR1YWwgaW50IHRvdGFsU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplOyB9CisgICAgdmlydHVhbCBpbnQgbWF4aW11
bSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplIC0gbV92aXNpYmxlU2l6ZTsgfQorICAgIHZp
cnR1YWwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRyb2xTaXplOyB9CisKKyAgICB2aXJ0dWFsIGludCBsaW5lU3RlcCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGluZVN0ZXA7IH0KKyAgICB2aXJ0dWFsIGludCBwYWdlU3RlcCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZVN0ZXA7IH0KKworICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBwcmVzc2VkUGFy
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc3NlZFBhcnQ7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJh
clBhcnQgaG92ZXJlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX2hvdmVyZWRQYXJ0OyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc3R5bGVDaGFuZ2VkKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgZW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRF
bmFibGVkKGJvb2wgZSk7CisKICAgICAvLyBDYWxsZWQgYnkgdGhlIFNjcm9sbGFibGVBcmVhIHdo
ZW4gdGhlIHNjcm9sbCBvZmZzZXQgY2hhbmdlcy4KICAgICB2b2lkIG9mZnNldERpZENoYW5nZSgp
OwogCkBAIC01NywzNCArMTA1LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9t
U2Nyb2xsYWJsZUFyZWEoKSB7IG1fc2Nyb2xsYWJsZUFyZWEgPSAwOyB9CiAgICAgU2Nyb2xsYWJs
ZUFyZWEqIHNjcm9sbGFibGVBcmVhKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYTsg
fQogCi0gICAgdmlydHVhbCBib29sIGlzQ3VzdG9tU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fb3JpZW50YXRpb247IH0KLQotICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IGxyb3VuZGYobV9jdXJyZW50UG9zKTsgfQotICAgIGZsb2F0IGN1cnJlbnRQb3MoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRQb3M7IH0KICAgICBpbnQgcHJlc3NlZFBvcygpIGNvbnN0IHsgcmV0
dXJuIG1fcHJlc3NlZFBvczsgfQotICAgIGludCB2aXNpYmxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmlzaWJsZVNpemU7IH0KLSAgICBpbnQgdG90YWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV90
b3RhbFNpemU7IH0KLSAgICBpbnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXpl
IC0gbV92aXNpYmxlU2l6ZTsgfSAgICAgICAgCi0gICAgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29u
dHJvbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xTaXplOyB9CiAKLSAgICBpbnQgbGlu
ZVN0ZXAoKSBjb25zdCB7IHJldHVybiBtX2xpbmVTdGVwOyB9Ci0gICAgaW50IHBhZ2VTdGVwKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlU3RlcDsgfQogICAgIGZsb2F0IHBpeGVsU3RlcCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGl4ZWxTdGVwOyB9CiAKLSAgICBTY3JvbGxiYXJQYXJ0IHByZXNzZWRQYXJ0
KCkgY29uc3QgeyByZXR1cm4gbV9wcmVzc2VkUGFydDsgfQotICAgIFNjcm9sbGJhclBhcnQgaG92
ZXJlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX2hvdmVyZWRQYXJ0OyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldEhvdmVyZWRQYXJ0KFNjcm9sbGJhclBhcnQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQ
cmVzc2VkUGFydChTY3JvbGxiYXJQYXJ0KTsKIAogICAgIHZvaWQgc2V0U3RlcHMoaW50IGxpbmVT
dGVwLCBpbnQgcGFnZVN0ZXAsIGludCBwaXhlbHNQZXJTdGVwID0gMSk7CiAgICAgdm9pZCBzZXRQ
cm9wb3J0aW9uKGludCB2aXNpYmxlU2l6ZSwgaW50IHRvdGFsU2l6ZSk7CiAgICAgdm9pZCBzZXRQ
cmVzc2VkUG9zKGludCBwKSB7IG1fcHJlc3NlZFBvcyA9IHA7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7
CiAKLSAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sIGUpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKIAogICAgIHZpcnR1
YWwgYm9vbCBpc092ZXJsYXlTY3JvbGxiYXIoKSBjb25zdDsKICAgICBib29sIHNob3VsZFBhcnRp
Y2lwYXRlSW5IaXRUZXN0aW5nKCk7CkBAIC05Nyw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBtb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIHZvaWQgbW91c2VF
bnRlcmVkKCk7CiAgICAgYm9vbCBtb3VzZUV4aXRlZCgpOwotICAgIAorCiAgICAgLy8gVXNlZCBi
eSBzb21lIHBsYXRmb3JtIHNjcm9sbGJhcnMgdG8ga25vdyB3aGVuIHRoZXkndmUgYmVlbiByZWxl
YXNlZCBmcm9tIGNhcHR1cmUuCiAgICAgYm9vbCBtb3VzZVVwKGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYpOwogCkBAIC0xMDYsMTggKzEzOCwxMyBAQCBwdWJsaWM6CiAgICAgU2Nyb2xsYmFyVGhl
bWUqIHRoZW1lKCkgY29uc3QgeyByZXR1cm4gbV90aGVtZTsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHNldFBhcmVudChTY3JvbGxWaWV3Kik7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChj
b25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3Qg
SW50UmVjdCYpOwotICAgIAogICAgIGJvb2wgc3VwcHJlc3NJbnZhbGlkYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3N1cHByZXNzSW52YWxpZGF0aW9uOyB9CiAgICAgdm9pZCBzZXRTdXBwcmVzc0lu
dmFsaWRhdGlvbihib29sIHMpIHsgbV9zdXBwcmVzc0ludmFsaWRhdGlvbiA9IHM7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBzdHlsZUNoYW5nZWQoKSB7IH0KLQogICAgIHZpcnR1YWwgSW50UmVjdCBj
b252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAgICAgdmlydHVh
bCBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0
OwotICAgIAorCiAgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhj
b25zdCBJbnRQb2ludCYpIGNvbnN0OwogICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21D
b250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCkBAIC0xNjAsNyArMTg3LDcg
QEAgcHJvdGVjdGVkOgogCiAgICAgVGltZXI8U2Nyb2xsYmFyPiBtX3Njcm9sbFRpbWVyOwogICAg
IGJvb2wgbV9vdmVybGFwc1Jlc2l6ZXI7Ci0gICAgCisKICAgICBib29sIG1fc3VwcHJlc3NJbnZh
bGlkYXRpb247CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWUuaAppbmRleCAyYTgzZDUzODVlYWJiY2FjZmY4YmU1NjM0OWI0ZDE5ZTMyYmI2ZmNjLi4xN2Vm
NjM4ZTYwM2I0MjE2NTJhNGQwYTliMTFmOTA3NDdkYTc3MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwotY2xhc3MgU2Nyb2xsYmFyOworY2xh
c3MgU2Nyb2xsYmFyVGhlbWVDbGllbnQ7CiBjbGFzcyBTY3JvbGxWaWV3OwogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCkBAIC00Niwx
MCArNDYsMTAgQEAgcHVibGljOgogICAgIFNjcm9sbGJhclRoZW1lKCkgeyB9CiAgICAgdmlydHVh
bCB+U2Nyb2xsYmFyVGhlbWUoKSB7fTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVk
U3RhdGUoU2Nyb2xsYmFyKikgeyB9OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVkU3Rh
dGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IH07CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQo
U2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgLypkYW1hZ2VSZWN0
Ki8pIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3Qo
U2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gTm9QYXJ0OyB9
CisgICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgSW50UmVjdCYgLypkYW1hZ2VSZWN0Ki8pIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBOb1BhcnQ7IH0KICAgICAKICAg
ICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBS
ZWd1bGFyU2Nyb2xsYmFyKSB7IHJldHVybiAwOyB9CiAKQEAgLTU3LDEzICs1NywxMyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJP
dmVybGF5U3R5bGUoU2Nyb2xsYmFyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9s
bGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIHRoZW1lQ2hhbmdlZCgpIHt9CiAgICAgCiAgICAgdmlydHVhbCBib29sIGludmFsaWRh
dGVPbk1vdXNlRW50ZXJFeGl0KCkgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgaW52YWxp
ZGF0ZVBhcnRzKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJDb250cm9sUGFydE1hc2sg
bWFzaykKKyAgICB2b2lkIGludmFsaWRhdGVQYXJ0cyhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBTY3JvbGxiYXJDb250cm9sUGFydE1hc2sgbWFzaykKICAgICB7CiAgICAgICAgIGlm
IChtYXNrICYgQmFja0J1dHRvblN0YXJ0UGFydCkKICAgICAgICAgICAgIGludmFsaWRhdGVQYXJ0
KHNjcm9sbGJhciwgQmFja0J1dHRvblN0YXJ0UGFydCk7CkBAIC04MSw3ICs4MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGludmFsaWRhdGVQYXJ0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRvbkVu
ZFBhcnQpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxi
YXIqLCBTY3JvbGxiYXJQYXJ0KSB7fQorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIHt9CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIo
Y29udGV4dCwgY29ybmVyUmVjdCk7IH0KICAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJS
ZWN0KSB7IGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JT
cGFjZURldmljZVJHQik7IH0KQEAgLTkzLDIxICs5MywyMSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldFVwQ29udGVudFNoYWRvd0xheWVyKEdyYXBoaWNzTGF5ZXIqKSB7IH0KICNlbmRp
ZgogCi0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJh
Z0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNj
cm9sbGJhciopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0aHVtYiByZWxh
dGl2ZSB0byB0aGUgdHJhY2suCi0gICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFy
KikgeyByZXR1cm4gMDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0aHVtYiBhbG9uZyB0aGUgYXhp
cyBvZiB0aGUgc2Nyb2xsYmFyLgotICAgIHZpcnR1YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xs
YmFyKikgeyByZXR1cm4gMDsgfSAvLyBUaGUgcG9zaXRpb24gb2YgdGhlIHRyYWNrIHJlbGF0aXZl
IHRvIHRoZSBzY3JvbGxiYXIuCi0gICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFy
KikgeyByZXR1cm4gMDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0cmFjayBhbG9uZyB0aGUgYXhp
cyBvZiB0aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4o
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZU
aHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXJU
aGVtZUNsaWVudCopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0aHVtYiBy
ZWxhdGl2ZSB0byB0aGUgdHJhY2suCisgICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiAwOyB9IC8vIFRoZSBsZW5ndGggb2YgdGhlIHRodW1i
IGFsb25nIHRoZSBheGlzIG9mIHRoZSBzY3JvbGxiYXIuCisgICAgdmlydHVhbCBpbnQgdHJhY2tQ
b3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0
aW9uIG9mIHRoZSB0cmFjayByZWxhdGl2ZSB0byB0aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1YWwg
aW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4gMDsgfSAvLyBU
aGUgbGVuZ3RoIG9mIHRoZSB0cmFjayBhbG9uZyB0aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLgog
CiAgICAgdmlydHVhbCBpbnQgbWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpIHsgcmV0dXJuIHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7IH0KIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRp
YWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMjU7IH0KICAgICB2aXJ0dWFsIGRv
dWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMDU7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKSB7fQotICAgIHZpcnR1YWwgdm9p
ZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciopIHt9CisgICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikge30KKyAgICB2aXJ0dWFsIHZv
aWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHt9CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNNb2NrVGhlbWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAK
aW5kZXggZmNiZjQ4NGMwOTUxYjViMGFmYjliYzdiNWZiYzU2Y2ZlYzlhOTg1ZS4uZTI5NjY5Zjhk
NWM5Zjc3M2Q5N2ViZmIzY2ZkNDZhMjQxZjdhYTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcApAQCAtMzMsMTUgKzMzLDE0
IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgotI2luY2x1ZGUgIlNjcm9sbGJhci5oIgotI2lu
Y2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDbGllbnQu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBh
aW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQogewogICAgIC8vIENyZWF0
ZSB0aGUgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrIGJhc2VkIG9uIHRoZSBkYW1hZ2VSZWN0CiAg
ICAgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrIHNjcm9sbE1hc2sgPSBOb1BhcnQ7CkBAIC0xMTYs
NyArMTE1LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnQoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGgKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aGl0VGVzdChTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitTY3JvbGxiYXJQ
YXJ0IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpoaXRUZXN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIFNjcm9s
bGJhclBhcnQgcmVzdWx0ID0gTm9QYXJ0OwogICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkp
CkBAIC0xNTUsNyArMTU0LDcgQEAgU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6aGl0VGVzdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGYKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRlUGFy
dChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6aW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGlmIChwYXJ0ID09IE5vUGFydCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQ
YXJ0CiAgICAgc2Nyb2xsYmFyLT5pbnZhbGlkYXRlUmVjdChyZXN1bHQpOwogfQogCi12b2lkIFNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxpdFRyYWNrKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBj
b25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0LCBJbnRSZWN0JiBiZWZvcmVUaHVt
YlJlY3QsIEludFJlY3QmIHRodW1iUmVjdCwgSW50UmVjdCYgYWZ0ZXJUaHVtYlJlY3QpCit2b2lk
IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxpdFRyYWNrKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QsIEludFJl
Y3QmIGJlZm9yZVRodW1iUmVjdCwgSW50UmVjdCYgdGh1bWJSZWN0LCBJbnRSZWN0JiBhZnRlclRo
dW1iUmVjdCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHdvbid0IGV2ZW4gZ2V0IGNhbGxlZCB1
bmxlc3Mgd2UncmUgYmlnIGVub3VnaCB0byBoYXZlIHNvbWUgY29tYmluYXRpb24gb2YgdGhlc2Ug
dGhyZWUgcmVjdHMgd2hlcmUgYXQgbGVhc3QKICAgICAvLyBvbmUgb2YgdGhlbSBpcyBub24tZW1w
dHkuCkBAIC0yMTUsNyArMjE0LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3Bs
aXRUcmFjayhTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdW4KIAogLy8gUmV0
dXJucyB0aGUgc2l6ZSByZXByZXNlbnRlZCBieSB0cmFjayB0YWtpbmcgaW50byBhY2NvdW50IHNj
cm9sbGluZyBwYXN0CiAvLyB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudC4KLXN0YXRpYyBmbG9hdCB1
c2VkVG90YWxTaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorc3RhdGljIGZsb2F0IHVzZWRUb3Rh
bFNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBmbG9hdCBvdmVy
aGFuZ0F0U3RhcnQgPSAtc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCk7CiAgICAgZmxvYXQgb3Zlcmhh
bmdBdEVuZCA9IHNjcm9sbGJhci0+Y3VycmVudFBvcygpICsgc2Nyb2xsYmFyLT52aXNpYmxlU2l6
ZSgpIC0gc2Nyb2xsYmFyLT50b3RhbFNpemUoKTsKQEAgLTIyMyw3ICsyMjIsNyBAQCBzdGF0aWMg
ZmxvYXQgdXNlZFRvdGFsU2l6ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICByZXR1cm4gc2Ny
b2xsYmFyLT50b3RhbFNpemUoKSArIG92ZXJoYW5nOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnRodW1iUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5lbmFibGVkKCkpIHsKICAgICAgICAgZmxv
YXQgcG9zID0gbWF4KDAuMGYsIHNjcm9sbGJhci0+Y3VycmVudFBvcygpKSAqICh0cmFja0xlbmd0
aChzY3JvbGxiYXIpIC0gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSkgLyAodXNlZFRvdGFsU2l6ZShz
Y3JvbGxiYXIpIC0gc2Nyb2xsYmFyLT52aXNpYmxlU2l6ZSgpKTsKQEAgLTIzMiw3ICsyMzEsNyBA
QCBpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUG9zaXRpb24oU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6dGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7
CiAgICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0y
NDYsMTggKzI0NSwxOCBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iTGVuZ3Ro
KFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKLWludCBTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZTo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gc2Nyb2xsYmFyVGhp
Y2tuZXNzKHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZTo6dHJhY2tQb3NpdGlvbihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQogewogICAgIEludFJlY3QgY29uc3RyYWluZWRUcmFja1JlY3QgPSBjb25zdHJh
aW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKHNjcm9sbGJhciwgdHJhY2tSZWN0KHNjcm9sbGJhcikp
OwogICAgIHJldHVybiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3Jv
bGxiYXIpID8gY29uc3RyYWluZWRUcmFja1JlY3QueCgpIC0gc2Nyb2xsYmFyLT54KCkgOiBjb25z
dHJhaW5lZFRyYWNrUmVjdC55KCkgLSBzY3JvbGxiYXItPnkoKTsKIH0KIAotaW50IFNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBT
Y3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhcikKIHsKICAgICBJbnRSZWN0IGNvbnN0cmFpbmVkVHJhY2tSZWN0ID0gY29uc3Ry
YWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxiYXIsIHRyYWNrUmVjdChzY3JvbGxiYXIp
KTsKICAgICByZXR1cm4gKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Ny
b2xsYmFyKSA/IGNvbnN0cmFpbmVkVHJhY2tSZWN0LndpZHRoKCkgOiBjb25zdHJhaW5lZFRyYWNr
UmVjdC5oZWlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhclRoZW1lQ29tcG9zaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZS5oCmluZGV4IDExYjNiZDQ3MDAxODdmZjE4MmIwNDViNDUyY2RjMjRkYTMz
ZTc1OTAuLjhlZGQ0YmJhYzk4MDQwZDAzZmM0YjMwZWViMjFhYTk5NWUzZDJlZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaApAQCAt
MzIsNDAgKzMyLDQwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUgOiBwdWJsaWMgU2Nyb2xsYmFyVGhlbWUgewogcHVibGljOgotICAgIHZpcnR1
YWwgYm9vbCBwYWludChTY3JvbGxiYXIqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXJU
aGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFt
YWdlUmVjdCk7CiAKLSAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgaGl0VGVzdChTY3JvbGxiYXIq
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQg
aGl0VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
OwogCi0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJhciosIFNjcm9sbGJh
clBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXJUaGVtZUNs
aWVudCosIFNjcm9sbGJhclBhcnQpOwogCi0gICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihT
Y3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0aHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKLSAg
ICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgaW50
IHRyYWNrTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgaW50IHRodW1iUG9zaXRpb24o
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCB0aHVtYkxlbmd0aChTY3Jv
bGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCB0cmFja0xlbmd0aChTY3JvbGxiYXJU
aGVtZUNsaWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9s
bFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRS
ZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIAog
cHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopID0gMDsKIAotICAgIHZpcnR1YWwg
SW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBh
aW50aW5nID0gZmFsc2UpID0gMDsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJl
Y3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSA9IDA7
Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29sIHBhaW50aW5n
ID0gZmFsc2UpID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpID0g
MDsKKyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpID0gMDsKKyAgICB2
aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3BsaXRUcmFjayhTY3JvbGxi
YXIqLCBjb25zdCBJbnRSZWN0JiB0cmFjaywgSW50UmVjdCYgc3RhcnRUcmFjaywgSW50UmVjdCYg
dGh1bWIsIEludFJlY3QmIGVuZFRyYWNrKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3BsaXRUcmFjayhT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmIHRyYWNrLCBJbnRSZWN0JiBzdGFy
dFRyYWNrLCBJbnRSZWN0JiB0aHVtYiwgSW50UmVjdCYgZW5kVHJhY2spOwogICAgIAotICAgIHZp
cnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGlu
dCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyKikge30KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3ND
b250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIHt9Ci0gICAgdmlydHVhbCB2b2lk
IHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRS
ZWN0JiwgU2Nyb2xsYmFyUGFydCkge30KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQp
IHt9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyKiwgY29uc3QgSW50UmVjdCYpIHt9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtz
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSB7fQorICAgIHZp
cnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyVGhlbWVDbGllbnQqKSB7fQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmKSB7fQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkg
e30KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkge30KKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmKSB7fQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJr
cyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3Qm
KSB7fQogCi0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVj
ZXMoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYgcmVjdCkgeyByZXR1cm4gcmVjdDsgfQorICAg
IHZpcnR1YWwgSW50UmVjdCBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYgcmVjdCkgeyByZXR1cm4gcmVjdDsgfQogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcAppbmRleCBmOGNiMjgxNTQ4NjFlMDFkYTcxMTI0OTIw
YzYwZDA2YTM3ZTlhMTgzLi42ODJkODJkNWIzMzc5MThiMjVkMDk4YmE3NzE3MzRlNzkxNTA1ZTkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcApAQCAtMzksMTQgKzM5LDE0IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpoYXNUaHVtYihTY3Jv
bGxiYXIqIHNjcm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6aGFzVGh1bWIo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBp
cyBqdXN0IGNhbGxlZCBhcyBhIHBhaW50LXRpbWUgb3B0aW1pemF0aW9uIHRvIHNlZSBpZgogICAg
IC8vIHBhaW50aW5nIHRoZSB0aHVtYiBjYW4gYmUgc2tpcHBlZC4gIFdlIGRvbid0IGhhdmUgdG8g
YmUgZXhhY3QgaGVyZS4KICAgICByZXR1cm4gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+IDA7CiB9
CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6YmFja0J1dHRvblJlY3QoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIC8vIFdpbmRvd3MgYW5k
IExpbnV4IGp1c3QgaGF2ZSBzaW5nbGUgYXJyb3dzLgogICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0
b25FbmRQYXJ0KQpAQCAtNTYsNyArNTYsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21p
dW06OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYQogICAg
IHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSwgc2l6ZS53aWR0
aCgpLCBzaXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
Ojpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBw
YXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpmb3J3YXJkQnV0dG9u
UmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQs
IGJvb2wpCiB7CiAgICAgLy8gV2luZG93cyBhbmQgTGludXgganVzdCBoYXZlIHNpbmdsZSBhcnJv
d3MuCiAgICAgaWYgKHBhcnQgPT0gRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCkKQEAgLTc0LDcgKzc0
LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpmb3J3YXJkQnV0dG9uUmVjdChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmEKICAgICByZXR1cm4gSW50UmVjdCh4LCB5LCBz
aXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1l
Q2hyb21pdW06OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKK0ludFJlY3Qg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgSW50U2l6ZSBicyA9IGJ1dHRvblNpemUoc2Nyb2xsYmFy
KTsKICAgICAvLyBUaGUgYnV0dG9ucyBhdCB0aGUgdG9wIGFuZCBib3R0b20gb2YgdGhlIHNjcm9s
bGJhciBhcmUgc3F1YXJlLCBzbyB0aGUKQEAgLTkyLDE0ICs5MiwxNCBAQCBJbnRSZWN0IFNjcm9s
bGJhclRoZW1lQ2hyb21pdW06OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCkK
ICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCkgKyBicy5o
ZWlnaHQoKSwgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0gMiAqIGJzLmhlaWdodCgp
KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpwYWludFRyYWNrQmFja2dyb3Vu
ZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpwYWludFRyYWNrQmFj
a2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gSnVzdCBhc3N1bWUgYSBm
b3J3YXJkIHRyYWNrIHBhcnQuICBXZSBvbmx5IHBhaW50IHRoZSB0cmFjayBhcyBhIHNpbmdsZSBw
aWVjZSB3aGVuIHRoZXJlIGlzIG5vIHRodW1iLgogICAgIGlmICghaGFzVGh1bWIoc2Nyb2xsYmFy
KSkKICAgICAgICAgcGFpbnRUcmFja1BpZWNlKGNvbnRleHQsIHNjcm9sbGJhciwgcmVjdCwgRm9y
d2FyZFRyYWNrUGFydCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRU
aWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRU
aWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChzY3JvbGxiYXItPm9y
aWVudGF0aW9uKCkgIT0gVmVydGljYWxTY3JvbGxiYXIpCiAgICAgICAgIHJldHVybjsKQEAgLTEw
OSw3ICsxMDksNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VGlja21hcmtz
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKgogCiAgICAgLy8gR2V0IHRoZSB0
aWNrbWFya3MgZm9yIHRoZSBmcmFtZXZpZXcuCiAgICAgVmVjdG9yPEludFJlY3Q+IHRpY2ttYXJr
czsKLSAgICBzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmdldFRpY2ttYXJrcyh0aWNrbWFy
a3MpOworICAgIHNjcm9sbGJhci0+Z2V0VGlja21hcmtzKHRpY2ttYXJrcyk7CiAgICAgaWYgKCF0
aWNrbWFya3Muc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaAppbmRl
eCAxMTc4MTI1NjlmNjlmMjAwMzcxYmFjMGY5ZGE4N2E3YzMyZGU0ZmE1Li5jZjY3MWRkOTg0YzA3
OTA5OTVjNjdkN2QwZjE4YzViNGE2ZjZjZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oCkBAIC00MSwx
NyArNDEsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIFdpbmRvd3MgYW5kIExpbnV4
LgogICAgIGNsYXNzIFNjcm9sbGJhclRoZW1lQ2hyb21pdW0gOiBwdWJsaWMgU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUgewogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBib29sIGhhc0J1
dHRvbnMoU2Nyb2xsYmFyKikgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wg
aGFzVGh1bWIoU2Nyb2xsYmFyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNj
cm9sbGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJv
b2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgICAgICB2aXJ0dWFsIElu
dFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKTsKLSAgICAgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0
KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAg
ICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9
IGZhbHNlKTsKKyAgICAgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAg
ICAgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICAgICAgdmly
dHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRp
bmcgPSBmYWxzZSk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5k
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAg
dmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhcios
IGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3Jv
dW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVj
dCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICAgICAgdmly
dHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKikgPSAwOworICAgICAgICB2aXJ0dWFs
IEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopID0gMDsKICAgICB9Owog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5j
cHAKaW5kZXggMWRiZWZhNjQ5YzA4OTcyZWIxYzJiMzdiNzQ3NzFiMGQ2MWJlYTVhZC4uZTFlNTVh
MWZjMTNkNzljMGY5ZThmNDczMGJlODk3ODA5NGMxZjY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1BbmRyb2lkLmNwcApAQCAtNTcsNyArNTcsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bUFuZHJvaWQ6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250
cgogICAgIHJldHVybiBzY3JvbGxiYXJUaGlja25lc3NWYWx1ZTsKIH0KIAotdm9pZCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtQW5kcm9pZDo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1BbmRyb2lkOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIC8v
IFBhaW50IGJsYWNrIGJhY2tncm91bmQgaW4gRHVtcFJlbmRlclRyZWUsIG90aGVyd2lzZSB0aGUg
cGl4ZWxzIGluIHRoZSBzY3JvbGxiYXIgYXJlYSBkZXBlbmQKICAgICAvLyBvbiB0aGVpciBwcmV2
aW91cyBzdGF0ZSwgd2hpY2ggbWFrZXMgdGhlIGR1bXBlZCByZXN1bHQgdW5kZXRlcm1pbmVkLgpA
QCAtNjUsMTIgKzY1LDEyIEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBh
aW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvCiAgICAgICAgIGNvbnRl
eHQtPmZpbGxSZWN0KHNjcm9sbGJhci0+ZnJhbWVSZWN0KCksIENvbG9yOjpibGFjaywgQ29sb3JT
cGFjZURldmljZVJHQik7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6
OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpzaG91bGRDZW50ZXJP
blRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBl
dnQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bUFuZHJvaWQ6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitJbnRTaXplIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBW
ZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAgcmV0dXJuIEludFNpemUoc2Nyb2xsYmFyVGhpY2tu
ZXNzVmFsdWUsIGJ1dHRvbkxlbmd0aCk7CkBAIC03OCw3ICs3OCw3IEBAIEludFNpemUgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
CiAgICAgcmV0dXJuIEludFNpemUoYnV0dG9uTGVuZ3RoLCBzY3JvbGxiYXJUaGlja25lc3NWYWx1
ZSk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6bWluaW11bVRodW1i
TGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1B
bmRyb2lkOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
cikKIHsKICAgICByZXR1cm4gMiAqIHNjcm9sbGJhclRoaWNrbmVzcyhzY3JvbGxiYXItPmNvbnRy
b2xTaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmgKaW5kZXggZjA3Yzkw
MTY3ODZjYjI0Zjg4ZGZiOTRhZTRmYzIxNmZlNmU3MGJmYy4uZjNkYjgwZTUyZmJmNTBjMWRmNjhh
OTQwZWE5ZDQ3M2YyZGJmMjg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5oCkBA
IC0zNSwxMCArMzUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNr
bmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciop
OwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYpOwotICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNj
cm9sbGJhciopOwotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBib29sIHNob3VsZENl
bnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmKTsKKyAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVu
dCopOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNs
aWVudCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW1MaW51eC5jcHAKaW5kZXggZWM2ODQwN2U5ZDhjMzJlMzBkMzEwZDJlNTA1OGMyZGE3ZGJkZWNj
Ni4uNmI0ZGFmYzM3M2YxMGQwYWEyZDZlOTY2MmFiZTYzZGQ1ZGI2NWU3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxp
bnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtTGludXguY3BwCkBAIC01MCw3ICs1MCw3IEBAIGludCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTGludXg6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBj
b250cm9sCiAgICAgcmV0dXJuIHNjcm9sbGJhclNpemUud2lkdGgoKTsKIH0KIAotdm9pZCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQq
IGdjLCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFy
UGFydCBwYXJ0VHlwZSkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRy
YWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKIHsKICAg
ICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0ZSA9IHNjcm9sbGJhci0+aG92
ZXJlZFBhcnQoKSA9PSBwYXJ0VHlwZSA/IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVIb3ZlciA6IFBs
YXRmb3JtU3VwcG9ydDo6U3RhdGVOb3JtYWw7CiAgICAgSW50UmVjdCBhbGlnblJlY3QgPSB0cmFj
a1JlY3Qoc2Nyb2xsYmFyLCBmYWxzZSk7CkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywg
U2Nyb2xsYmFyCiAgICAgICAgICZleHRyYVBhcmFtcyk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQor
dm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29u
dGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1l
UGFydCBwYWludFBhcnQ7CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3Rh
dGUgPSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlTm9ybWFsOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHZv
aWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRl
eHQqIGdjLCBTY3JvbGxiYXIqIHNjCiAgICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFy
dChnYywgcGFpbnRQYXJ0LCBzdGF0ZSwgcmVjdCwgMCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTGludXg6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBQbGF0Zm9y
bVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0ZTsKIApAQCAtMTIwLDEyICsxMjAsMTIgQEAg
dm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3IKICAgICAgICAgMCk7CiB9CiAKLWJvb2wgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGlu
dXg6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4gKGV2dC5zaGlmdEtleSgpICYmIGV2
dC5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB8fCAoZXZ0LmJ1dHRvbigpID09IE1pZGRsZUJ1dHRv
bik7CiB9CiAKLUludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXpl
KFNjcm9sbGJhciogc2Nyb2xsYmFyKQorSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGlu
dXg6OmJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBp
ZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAg
ICAgIEludFNpemUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0
Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJVcEFycm93KTsKQEAgLTEzNyw3ICsxMzcsNyBAQCBJ
bnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6YnV0dG9uU2l6ZShTY3JvbGxiYXIq
IHNjcm9sbGJhcikKICAgICByZXR1cm4gSW50U2l6ZShzY3JvbGxiYXItPndpZHRoKCkgPCAyICog
c2l6ZS53aWR0aCgpID8gc2Nyb2xsYmFyLT53aWR0aCgpIC8gMiA6IHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6Om1pbmlt
dW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTGludXg6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyKQogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxT
Y3JvbGxiYXIpIHsKICAgICAgICAgSW50U2l6ZSBzaXplID0gUGxhdGZvcm1TdXBwb3J0OjpnZXRU
aGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhclZlcnRpY2FsVGh1bWIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaAppbmRleCA4ZTgwMmU3MzQxYjc3NWI1OTU1YWQw
ZGVjMGI4ZWVkNTZmNzk3MjczLi4zMzBkMDNmYjAyMzIxMzRlYzJjYTI5NDE5ZmRhYjI3MzQ5NDc1
NGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxi
YXJUaGVtZUNocm9taXVtTGludXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaApAQCAtMzksMTIgKzM5LDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNz
KFNjcm9sbGJhckNvbnRyb2xTaXplKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVh
bCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25z
dCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1
dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xs
YmFyUGFydCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4
dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIHNo
b3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7
Ci0gICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciopOwotICAgICAg
ICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgICAg
IHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAg
ICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCop
OwogICAgIH07CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMu
aAppbmRleCA0MWExOThlM2Y4NDIwYzg0ODk0NWZiODQ3NDRkZGI3MDAyNGNkNmU1Li40ZDM0MjZi
YjYyMDc5OWJhM2Q5MDgzYjZkYzg5NDFjYWI0NDI2ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1h
Yy5oCkBAIC0zNiwxMiArMzYsMTIgQEAgcHVibGljOgogICAgIFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1NYWMoKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKCk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIGRhbWFnZVJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhT
Y3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92
ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCk7CiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgcGFpbnRHaXZlblRp
Y2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgY29u
c3QgVmVjdG9yPEludFJlY3Q+Jik7CisgICAgdm9pZCBwYWludEdpdmVuVGlja21hcmtzKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0
IFZlY3RvcjxJbnRSZWN0PiYpOwogCiAgICAgUmVmUHRyPFBhdHRlcm4+IG1fb3ZlcmhhbmdQYXR0
ZXJuOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCmluZGV4IDQ1OWE1OGIwNzZmNzAwNmYy
Nzc2NWIwMjQ5N2EwOTkzNWY4MjNmYjcuLmQwMmI0MjEyNTY0NGI3ODMwY2UyZTBmYWViMzY3MzM2
MWY4ZGI5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQpAQCAtNjEsMTEgKzYxLDExIEBA
IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6On5TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKCkK
IHsKIH0KIAotc3RhdGljIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHNjcm9sbGJh
clN0YXRlVG9UaGVtZVN0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorc3RhdGljIFBsYXRmb3Jt
U3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRlKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKCFzY3JvbGxiYXItPmVuYWJs
ZWQoKSkKICAgICAgICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVEaXNhYmxlZDsKLSAg
ICBpZiAoIXNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSkKKyAgICBpZiAo
IXNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQogICAgICAgICByZXR1cm4gUGxh
dGZvcm1TdXBwb3J0OjpTdGF0ZUluYWN0aXZlOwogICAgIGlmIChzY3JvbGxiYXItPnByZXNzZWRQ
YXJ0KCkgPT0gVGh1bWJQYXJ0KQogICAgICAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpTdGF0
ZVByZXNzZWQ7CkBAIC05NCwxMSArOTQsMTEgQEAgc3RhdGljIHZvaWQgc2Nyb2xsYmFyUGFpbnRl
clBhaW50VHJhY2soU2Nyb2xsYmFyUGFpbnRlciBzY3JvbGxiYXJQYWludGVyLCBib29sIGUKIC8v
ICAgICAtIGRyYXdpbmcgdXNpbmcgUGxhdGZvcm1TdXBwb3J0IGZ1bmN0aW9ucwogLy8gICAgIC0g
ZHJhd2luZyB0aWNrbWFya3MKIC8vICAgICAtIFNraWEgc3BlY2lmaWMgY2hhbmdlcwotYm9vbCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQorYm9vbCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJl
Y3QpCiB7CiAgICAgLy8gR2V0IHRoZSB0aWNrbWFya3MgZm9yIHRoZSBmcmFtZXZpZXcuCiAgICAg
VmVjdG9yPEludFJlY3Q+IHRpY2ttYXJrczsKLSAgICBzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVh
KCktPmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOworICAgIHNjcm9sbGJhci0+Z2V0VGlja21hcmtz
KHRpY2ttYXJrcyk7CiAKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkp
IHsKICAgICAgICAgZmxvYXQgdmFsdWUgPSAwOwpAQCAtMTg4LDcgKzE4OCw3IEBAIGJvb2wgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBo
aWNzQ29udGV4dCogY29uCiAgICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAgICAg
dHJhY2tJbmZvLmVuYWJsZVN0YXRlID0ga1RoZW1lVHJhY2tEaXNhYmxlZDsKICAgICBlbHNlCi0g
ICAgICAgIHRyYWNrSW5mby5lbmFibGVTdGF0ZSA9IHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEo
KS0+aXNBY3RpdmUoKSA/IGtUaGVtZVRyYWNrQWN0aXZlIDoga1RoZW1lVHJhY2tJbmFjdGl2ZTsK
KyAgICAgICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0gc2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVB
cmVhQWN0aXZlKCkgPyBrVGhlbWVUcmFja0FjdGl2ZSA6IGtUaGVtZVRyYWNrSW5hY3RpdmU7CiAK
ICAgICBpZiAoIWhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkKICAgICAgICAgdHJhY2tJbmZvLmVuYWJs
ZVN0YXRlID0ga1RoZW1lVHJhY2tOb3RoaW5nVG9TY3JvbGw7CkBAIC0yNDMsNyArMjQzLDcgQEAg
Ym9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgR3JhcGhpY3NDb250ZXh0KiBjb24KICAgICBpZiAoaGFzVGh1bWIoc2Nyb2xsYmFyKSkgewog
ICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTY3JvbGxiYXJJbmZvIHNjcm9sbGJh
ckluZm87CiAgICAgICAgIHNjcm9sbGJhckluZm8ub3JpZW50YXRpb24gPSBzY3JvbGxiYXItPm9y
aWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IFBsYXRmb3JtU3VwcG9ydDo6U2Ny
b2xsYmFyT3JpZW50YXRpb25Ib3Jpem9udGFsIDogUGxhdGZvcm1TdXBwb3J0OjpTY3JvbGxiYXJP
cmllbnRhdGlvblZlcnRpY2FsOwotICAgICAgICBzY3JvbGxiYXJJbmZvLnBhcmVudCA9IHNjcm9s
bGJhci0+cGFyZW50KCkgJiYgc2Nyb2xsYmFyLT5wYXJlbnQoKS0+aXNGcmFtZVZpZXcoKSAmJiBz
dGF0aWNfY2FzdDxGcmFtZVZpZXcqPihzY3JvbGxiYXItPnBhcmVudCgpKS0+aXNTY3JvbGxWaWV3
U2Nyb2xsYmFyKHNjcm9sbGJhcikgPyBQbGF0Zm9ybVN1cHBvcnQ6OlNjcm9sbGJhclBhcmVudFNj
cm9sbFZpZXcgOiBQbGF0Zm9ybVN1cHBvcnQ6OlNjcm9sbGJhclBhcmVudFJlbmRlckxheWVyOwor
ICAgICAgICBzY3JvbGxiYXJJbmZvLnBhcmVudCA9IHNjcm9sbGJhci0+aXNTY3JvbGxWaWV3U2Ny
b2xsYmFyKCkgPyBQbGF0Zm9ybVN1cHBvcnQ6OlNjcm9sbGJhclBhcmVudFNjcm9sbFZpZXcgOiBQ
bGF0Zm9ybVN1cHBvcnQ6OlNjcm9sbGJhclBhcmVudFJlbmRlckxheWVyOwogICAgICAgICBzY3Jv
bGxiYXJJbmZvLm1heFZhbHVlID0gc2Nyb2xsYmFyLT5tYXhpbXVtKCk7CiAgICAgICAgIHNjcm9s
bGJhckluZm8uY3VycmVudFZhbHVlID0gc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCk7CiAgICAgICAg
IHNjcm9sbGJhckluZm8udmlzaWJsZVNpemUgPSBzY3JvbGxiYXItPnZpc2libGVTaXplKCk7CkBA
IC0yNjMsNyArMjYzLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb24KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludEdpdmVuVGlja21h
cmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgdGlja21hcmtzKQordm9pZCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludEdpdmVuVGlja21hcmtzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgVmVjdG9yPEludFJlY3Q+JiB0aWNrbWFya3MpCiB7CiAgICAgaWYg
KHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSAhPSBWZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcAppbmRleCBmNDM1ODM5ZDgyMTg1NjRm
ODAyNzI4ZDMyODUzMjBkMWUwY2RiYWM4Li5hMDgxOTgzNDc0OTFkY2M1ZDhmMDIyYTEyMjg4OTBk
NjU3N2ZlM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcApAQCAtNzMsNyArNzMsNyBA
QCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmludmFsaWRhdGVPbk1vdXNlRW50ZXJF
eGl0KCkKICAgICByZXR1cm4gd2luZG93c1ZlcnNpb24oKSA+PSBXaW5kb3dzVmlzdGE7CiB9CiAK
LWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmln
aW4oU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQor
Ym9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdp
bihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2dCkKIHsKICAgICAvLyBGaW5kIHRoZSByZWN0IHdpdGhpbiB3aGljaCB3ZSBzaG91bGRu
J3Qgc25hcCwgYnkgZXhwYW5kaW5nIHRoZSB0cmFjayByZWN0CiAgICAgLy8gaW4gYm90aCBkaW1l
bnNpb25zLgpAQCAtOTEsNyArOTEsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46
OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhciogc2Nyb2xsYmFyLAogICAgIHJl
dHVybiAhcmVjdC5jb250YWlucyhtb3VzZVBvc2l0aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtV2luOjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFy
dFR5cGUpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VHJhY2tQaWVjZShH
cmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25z
dCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQogewogICAgIGJvb2wgaG9y
eiA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyOwogCkBA
IC0xMTMsNyArMTEzLDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWludFRy
YWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKgogICAgICAgICBhbGlnblJl
Y3QpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50QnV0dG9uKEdy
YXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46
OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAg
ICBib29sIGhvcnogPSBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9s
bGJhcjsKIApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bjo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvCiAgICAg
ICAgIHJlY3QpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1
bWIoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIoR3Jh
cGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKICAgICBib29sIGhvcnogPSBzY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsKIApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBT
Y3JvbGxiYXIqIHNjcm9sCiAgICAgICAgIHJlY3QpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFy
UGFydCBwYXJ0KSBjb25zdAoraW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldFRoZW1l
U3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0
KSBjb25zdAogewogICAgIC8vIFdoZW4gZHJhZ2dpbmcgdGhlIHRodW1iLCBkcmF3IHRodW1iIHBy
ZXNzZWQgYW5kIG90aGVyIHNlZ21lbnRzIG5vcm1hbAogICAgIC8vIHJlZ2FyZGxlc3Mgb2Ygd2hl
cmUgdGhlIGN1cnNvciBhY3R1YWxseSBpcy4gIFNlZSBhbHNvIGZvdXIgcGxhY2VzIGluCkBAIC0x
NzEsNyArMTcxLDcgQEAgaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldFRoZW1lU3Rh
dGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gKHNjcm9s
bGJhci0+cHJlc3NlZFBhcnQoKSA9PSBwYXJ0KSA/IFNDUkJTX1BSRVNTRUQgOiBTQ1JCU19OT1JN
QUw7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3Rh
dGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29uc3QKK2ludCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3RhdGUoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KSBjb25zdAogewogICAgIC8v
IFdlIGNvdWxkIHRha2UgYWR2YW50YWdlIG9mIGtub3dpbmcgdGhlIHZhbHVlcyBpbiB0aGUgc3Rh
dGUgZW51bSB0byB3cml0ZQogICAgIC8vIHNvbWUgc2ltcGxlciBjb2RlLCBidXQgdHJlYXRpbmcg
dGhlIHN0YXRlIGVudW0gYXMgYSBibGFjayBib3ggc2VlbXMKQEAgLTIyMSw3ICsyMjEsNyBAQCBp
bnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVBcnJvd1N0YXRlKFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBTY3JvbGxiYQogICAgIHJldHVybiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFy
dCgpID09IHBhcnQpID8gQUJTX0RPV05QUkVTU0VEIDogQUJTX0RPV05OT1JNQUw7CiB9CiAKLWlu
dCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRDbGFzc2ljVGhlbWVTdGF0ZShTY3JvbGxi
YXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KSBjb25zdAoraW50IFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1XaW46OmdldENsYXNzaWNUaGVtZVN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29uc3QKIHsKICAgICAvLyBXaGVuIGRy
YWdnaW5nIHRoZSB0aHVtYiwgZHJhdyB0aGUgYnV0dG9ucyBub3JtYWwgZXZlbiB3aGVuIGhvdmVy
ZWQuCiAgICAgaWYgKHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCkBAIC0y
MzUsMTIgKzIzNSwxMiBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3Np
Y1RoZW1lU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbAogICAgIHJldHVybiAoc2Ny
b2xsYmFyLT5wcmVzc2VkUGFydCgpID09IHBhcnQpID8gKERGQ1NfUFVTSEVEIHwgREZDU19GTEFU
KSA6IDA7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkQ2VudGVy
T25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIHJldHVy
biBldnQuc2hpZnRLZXkoKSAmJiBldnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbjsKIH0KIAotSW50
U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpidXR0b25TaXplKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQorSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpidXR0b25TaXplKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgLy8gT3VyIGRlc2lyZWQgcmVj
dCBpcyBlc3NlbnRpYWxseSB0aGlja25lc3MgYnkgdGhpY2tuZXNzLgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2lu
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtV2luLmgKaW5kZXggNjljZmExMzFjNWNiMDRlOWI1MjEwYjc2NWNmYjQ4MWU4ZGRjYjEzNS4u
YWM4ODgxZjkzYjVkYjFhZmY0Njc5YTYwNjNlN2JhN2U4NmY1NTFmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1XaW4uaApAQCAtMzgsMTkgKzM4LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJD
b250cm9sU2l6ZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpbnZhbGlkYXRlT25Nb3VzZUVudGVy
RXhpdCgpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4o
U2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50
QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3Jv
bGxiYXJQYXJ0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
KTsKLSAgICAgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKik7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRo
dW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Cisg
ICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICBpbnQgZ2V0VGhlbWVTdGF0ZShTY3JvbGxiYXIqLCBT
Y3JvbGxiYXJQYXJ0KSBjb25zdDsKLSAgICAgICAgaW50IGdldFRoZW1lQXJyb3dTdGF0ZShTY3Jv
bGxiYXIqLCBTY3JvbGxiYXJQYXJ0KSBjb25zdDsKLSAgICAgICAgaW50IGdldENsYXNzaWNUaGVt
ZVN0YXRlKFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQpIGNvbnN0OworICAgICAgICBpbnQgZ2V0
VGhlbWVTdGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIGNvbnN0Owor
ICAgICAgICBpbnQgZ2V0VGhlbWVBcnJvd1N0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Ny
b2xsYmFyUGFydCkgY29uc3Q7CisgICAgICAgIGludCBnZXRDbGFzc2ljVGhlbWVTdGF0ZShTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIGNvbnN0OwogICAgIH07CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9TY3JvbGxiYXJUaGVtZUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Ny
b2xsYmFyVGhlbWVFZmwuY3BwCmluZGV4IDYyZGYwMDVkNjc1NzFkMTRhZDM5NDM2MGQ1NmM0OThl
NGRmOTJiZmIuLjI0MGI1MDE0Nzc5YzE4MmQxNDM5MGMzZjhjMzkzNzc1NzdlOTNhODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmNwcApA
QCAtNDksMTEgKzQ5LDExIEBAIGludCBTY3JvbGxiYXJUaGVtZUVmbDo6c2Nyb2xsYmFyVGhpY2tu
ZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogICAgIHJldHVybiAwOyAvLyB3
ZSBwYWludCBvbiB0b3AKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUVmbDo6cmVnaXN0ZXJTY3Jv
bGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lRWZsOjpyZWdp
c3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogfQogCi12
b2lkIFNjcm9sbGJhclRoZW1lRWZsOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUVmbDo6dW5yZWdpc3RlclNjcm9sbGJhcihTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5oCmluZGV4IDBmZTE2ODgxZTJlNDU2ZTZl
MTIzMDFhZWVmODZjMjY1YmQzMzIzNGIuLmZjNzFjYmVkODkwYTFhNjVhOWEwMmFkOGEwM2QzOGZk
Yzk5YWQzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxi
YXJUaGVtZUVmbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJU
aGVtZUVmbC5oCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgaW50IHNj
cm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIp
OwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xs
YmFyKTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNj
cm9sbGJhcik7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIpOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xs
YmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAKaW5kZXggZTk5
MzY0ZjJhN2ZjYWY0ODg4MzBiNDY4ZGUxZDE4YWQ3NTA0ZTkwZi4uOTRlM2ZkNzZmN2ZmYzUyMzBm
Yzg0N2ZmOWZlY2FmNDNkYzQ2ZmEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotc3RhdGljIEhhc2hTZXQ8U2Nyb2xsYmFyKj4qIGdTY3JvbGxiYXJzOwor
c3RhdGljIEhhc2hTZXQ8U2Nyb2xsYmFyVGhlbWVDbGllbnQqPiogZ1Njcm9sbGJhcnM7CiAKIFNj
cm9sbGJhclRoZW1lKiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQogewpAQCAtNDUsMTQg
KzQ1LDE0IEBAIFNjcm9sbGJhclRoZW1lR3RrOjp+U2Nyb2xsYmFyVGhlbWVHdGsoKQogewogfQog
Ci12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNj
cm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKCFnU2Nyb2xsYmFycykKLSAg
ICAgICAgZ1Njcm9sbGJhcnMgPSBuZXcgSGFzaFNldDxTY3JvbGxiYXIqPjsKKyAgICAgICAgZ1Nj
cm9sbGJhcnMgPSBuZXcgSGFzaFNldDxTY3JvbGxiYXJUaGVtZUNsaWVudCo+OwogICAgIGdTY3Jv
bGxiYXJzLT5hZGQoc2Nyb2xsYmFyKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dW5y
ZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhl
bWVHdGs6OnVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
cikKIHsKICAgICBnU2Nyb2xsYmFycy0+cmVtb3ZlKHNjcm9sbGJhcik7CiAgICAgaWYgKGdTY3Jv
bGxiYXJzLT5pc0VtcHR5KCkpIHsKQEAgLTY5LDkgKzY5LDkgQEAgdm9pZCBTY3JvbGxiYXJUaGVt
ZUd0azo6dXBkYXRlU2Nyb2xsYmFyc0ZyYW1lVGhpY2tuZXNzKCkKICAgICAvLyBVcGRhdGUgdGhl
IHRoaWNrbmVzcyBvZiBldmVyeSBpbnRlcmlvciBmcmFtZSBzY3JvbGxiYXIgd2lkZ2V0LiBUaGUK
ICAgICAvLyBwbGF0Zm9ybS1pbmRlcGVuZGVudCBzY3JvbGxiYXIgdGhlbSBjb2RlIGlzbid0IHll
dCBzbWFydCBlbm91Z2ggdG8gZ2V0CiAgICAgLy8gdGhpcyBpbmZvcm1hdGlvbiB3aGVuIGl0IHBh
aW50cy4KLSAgICBIYXNoU2V0PFNjcm9sbGJhcio+OjppdGVyYXRvciBlbmQgPSBnU2Nyb2xsYmFy
cy0+ZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFNjcm9sbGJhcio+OjppdGVyYXRvciBpdCA9IGdT
Y3JvbGxiYXJzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgU2Nyb2xsYmFy
KiBzY3JvbGxiYXIgPSAoKml0KTsKKyAgICBIYXNoU2V0PFNjcm9sbGJhclRoZW1lQ2xpZW50Kj46
Oml0ZXJhdG9yIGVuZCA9IGdTY3JvbGxiYXJzLT5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8U2Ny
b2xsYmFyVGhlbWVDbGllbnQqPjo6aXRlcmF0b3IgaXQgPSBnU2Nyb2xsYmFycy0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIgPSAoKml0KTsKIAogICAgICAgICAvLyBUb3AtbGV2ZWwgc2Nyb2xsYmFyIGkuZS4gc2Nyb2xs
YmFycyB3aG8gaGF2ZSBhIHBhcmVudCBTY3JvbGxWaWV3CiAgICAgICAgIC8vIHdpdGggbm8gcGFy
ZW50IGFyZSBuYXRpdmUsIGFuZCB0aHVzIGRvIG5vdCBuZWVkIHRvIGJlIHJlc2l6ZWQuCkBAIC04
NiwxNCArODYsMTQgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dXBkYXRlU2Nyb2xsYmFyc0Zy
YW1lVGhpY2tuZXNzKCkKICAgICB9CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6Omhhc1Ro
dW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6aGFzVGh1
bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICAvLyBUaGlzIG1ldGhv
ZCBpcyBqdXN0IGNhbGxlZCBhcyBhIHBhaW50LXRpbWUgb3B0aW1pemF0aW9uIHRvIHNlZSBpZgog
ICAgIC8vIHBhaW50aW5nIHRoZSB0aHVtYiBjYW4gYmUgc2tpcHBlZC4gIFdlIGRvbid0IGhhdmUg
dG8gYmUgZXhhY3QgaGVyZS4KICAgICByZXR1cm4gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+IDA7
CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJh
clRoZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRv
bkVuZFBhcnQgJiYgIW1faGFzQmFja0J1dHRvbkVuZFBhcnQpCiAgICAgICAgIHJldHVybiBJbnRS
ZWN0KCk7CkBAIC0xMTQsNyArMTE0LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6YmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGEKICAgICBy
ZXR1cm4gSW50UmVjdCh4LCBzY3JvbGxiYXItPnkoKSArIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSBt
X3Ryb3VnaEJvcmRlcldpZHRoIC0gKDIgKiBzaXplLmhlaWdodCgpKSwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6Zm9yd2FyZEJ1
dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkK
K0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICBp
ZiAocGFydCA9PSBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0ICYmICFtX2hhc0ZvcndhcmRCdXR0b25T
dGFydFBhcnQpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CkBAIC0xNDAsNyArMTQwLDcgQEAg
SW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gSW50UmVjdCh4LCBzY3JvbGxiYXIt
PnkoKSArIG1fdHJvdWdoQm9yZGVyV2lkdGggKyBzaXplLmhlaWdodCgpLCBzaXplLndpZHRoKCks
IHNpemUuaGVpZ2h0KCkpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0cmFja1Jl
Y3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3Rr
Ojp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCkKIHsKICAg
ICAvLyBUaGUgcGFkZGluZyBhbG9uZyB0aGUgdGh1bWIgbW92ZW1lbnQgYXhpcyBpbmNsdWRlcyB0
aGUgdHJvdWdoIGJvcmRlcgogICAgIC8vIHBsdXMgdGhlIHNpemUgb2Ygc3RlcHBlciBzcGFjaW5n
ICh0aGUgc3BhY2UgYmV0d2VlbiB0aGUgc3RlcHBlciBhbmQKQEAgLTE4MCw3ICsxODAsNyBAQCBJ
bnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGJvb2wpCiAgICAgICAgICAgICAgICAgICAgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgp
IC0gKDIgKiBtb3ZlbWVudEF4aXNQYWRkaW5nKSAtIGJ1dHRvbnNXaWR0aCk7CiB9CiAKLUludFJl
Y3QgU2Nyb2xsYmFyVGhlbWVHdGs6OnRodW1iUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhl
bWVHdGs6OnRodW1iUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KQogewogICAgIEludFJlY3QgdHJhY2tSZWN0
ID0gY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxiYXIsIHVuY29uc3RyYWlu
ZWRUcmFja1JlY3QpOwogICAgIGludCB0aHVtYlBvcyA9IHRodW1iUG9zaXRpb24oc2Nyb2xsYmFy
KTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0aHVtYlJl
Y3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29ucwogICAgIHJldHVy
biBJbnRSZWN0KHRyYWNrUmVjdC54KCkgKyAodHJhY2tSZWN0LndpZHRoKCkgLSBtX3RodW1iRmF0
bmVzcykgLyAyLCB0cmFja1JlY3QueSgpICsgdGh1bWJQb3MsIG1fdGh1bWJGYXRuZXNzLCB0aHVt
Ykxlbmd0aChzY3JvbGxiYXIpKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgaWYgKGdyYXBoaWNz
Q29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
NjAsNyArMjYwLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb24KICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxi
YXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQorYm9vbCBTY3JvbGxiYXJUaGVt
ZUd0azo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiB7CiAgICAgcmV0dXJuIChldmVudC5zaGlmdEtleSgp
ICYmIGV2ZW50LmJ1dHRvbigpID09IExlZnRCdXR0b24pIHx8IChldmVudC5idXR0b24oKSA9PSBN
aWRkbGVCdXR0b24pOwogfQpAQCAtMjcwLDcgKzI3MCw3IEBAIGludCBTY3JvbGxiYXJUaGVtZUd0
azo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplKQogICAgIHJldHVybiBt
X3RodW1iRmF0bmVzcyArIChtX3Ryb3VnaEJvcmRlcldpZHRoICogMik7CiB9CiAKLUludFNpemUg
U2Nyb2xsYmFyVGhlbWVHdGs6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitJbnRT
aXplIFNjcm9sbGJhclRoZW1lR3RrOjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNh
bFNjcm9sbGJhcikKICAgICAgICAgcmV0dXJuIEludFNpemUobV90aHVtYkZhdG5lc3MsIG1fc3Rl
cHBlclNpemUpOwpAQCAtMjc5LDcgKzI3OSw3IEBAIEludFNpemUgU2Nyb2xsYmFyVGhlbWVHdGs6
OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIEludFNpemUobV9z
dGVwcGVyU2l6ZSwgbV90aHVtYkZhdG5lc3MpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVHdGs6
Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJU
aGVtZUd0azo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIpCiB7CiAgICAgcmV0dXJuIG1fbWluVGh1bWJMZW5ndGg7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5oCmluZGV4IDQ1ZTA5M2IxZWM5N2Qx
YWZhYTI0YzU4MzMxNTY2OTMwMmU4NWNkNjMuLmU3M2RmMjg1NTAxYjU4MjZkYzA1OWI4M2JmYzNk
OWE0MTcwZDRiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3Jv
bGxiYXJUaGVtZUd0ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxi
YXJUaGVtZUd0ay5oCkBAIC0zNywyOSArMzcsMjkgQEAgcHVibGljOgogICAgIFNjcm9sbGJhclRo
ZW1lR3RrKCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhlbWVHdGsoKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tC
dXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wpOwotICAgIHZpcnR1YWwg
SW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29s
KTsKLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wpOwotICAg
IEludFJlY3QgdGh1bWJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWlu
ZWRUcmFja1JlY3QpOwotICAgIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7Ci0gICAgdm9pZCBwYWludFNjcm9sbGJhckJh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKik7Ci0gICAgdm9pZCBwYWludFRy
YWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0
Jik7Ci0gICAgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1l
Q2xpZW50KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3Jv
bGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wpOworICAgIHZpcnR1YWwg
SW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJh
clBhcnQsIGJvb2wpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBib29sKTsKKyAgICBJbnRSZWN0IHRodW1iUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QpOworICAgIGJvb2wg
cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRS
ZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZvaWQgcGFpbnRUcmFj
a0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBJbnRSZWN0Jik7CisgICAgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IElu
dFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25U
aHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwog
ICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7
Ci0gICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVh
bCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgSW50U2l6
ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgbWlu
aW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKICAgICAvLyBUT0RPOiBU
aGVzZSBhcmUgdGhlIGRlZmF1bHQgR1RLKyB2YWx1ZXMuIEF0IHNvbWUgcG9pbnQgd2Ugc2hvdWxk
IHB1bGwgdGhlc2UgZnJvbSB0aGUgdGhlbWUgaXRzZWxmLgogICAgIHZpcnR1YWwgZG91YmxlIGlu
aXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMjA7IH0KICAgICB2aXJ0dWFs
IGRvdWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMDI7IH0KICAgICB2b2lk
IHVwZGF0ZVRoZW1lUHJvcGVydGllcygpOwogICAgIHZvaWQgdXBkYXRlU2Nyb2xsYmFyc0ZyYW1l
VGhpY2tuZXNzKCk7Ci0gICAgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKLSAg
ICB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CisgICAgdm9pZCByZWdpc3Rl
clNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZvaWQgdW5yZWdpc3RlclNj
cm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiBwcm90ZWN0ZWQ6CiAjaWZuZGVmIEdU
S19BUElfVkVSU0lPTl8yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2Nyb2xsYmFyVGhlbWVHdGsyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3Jv
bGxiYXJUaGVtZUd0azIuY3BwCmluZGV4IDcyOWJkMTI0ZGUyYjIxODU0OTk3YjE5ODc2MzBjZGY4
OWJlYTkxMDMuLjg2NmJiOGExZDJmNzFhYTg2NGVhNTdlZDMwM2YxMzYwNzJjMWM0MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3Bw
CkBAIC02NiwxMyArNjYsMTMgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dXBkYXRlVGhlbWVQ
cm9wZXJ0aWVzKCkKICAgICB1cGRhdGVTY3JvbGxiYXJzRnJhbWVUaGlja25lc3MoKTsKIH0KIAot
c3RhdGljIEd0a1dpZGdldCogZ2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQorc3RhdGljIEd0a1dpZGdldCogZ2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgUmVuZGVyVGhlbWVHdGsqIHRoZW1lID0gc3Rh
dGljX2Nhc3Q8UmVuZGVyVGhlbWVHdGsqPihSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCkuZ2V0
KCkpOwogICAgIHJldHVybiBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3Jv
bGxiYXIgPyB0aGVtZS0+Z3RrVlNjcm9sbGJhcigpIDogdGhlbWUtPmd0a0hTY3JvbGxiYXIoKTsK
IH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
cmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBQYWludCB0aGUgdHJhY2sgYmFja2dyb3VuZC4g
SWYgdGhlIHRyb3VnaC11bmRlci1zdGVwcGVycyBwcm9wZXJ0eSBpcyB0cnVlLCB0aGlzCiAgICAg
Ly8gc2hvdWxkIGJlIHRoZSBmdWxsIHNpemUgb2YgdGhlIHNjcm9sbGJhciwgYnV0IGlmIGlzIGZh
bHNlLCBpdCBzaG91bGQgb25seSBiZSB0aGUKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTY3JvbGxi
YXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBTY3JvbGxiYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9BQ1RJ
VkUsIEdUS19TSEFET1dfSU4sICJ0cm91Z2giKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJh
ckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyKQogewogICAgIEludFJlY3QgZnVsbFNjcm9sbGJhclJlY3QgPSBJbnRSZWN0
KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSwgc2Nyb2xsYmFyLT53aWR0aCgpLCBzY3Jv
bGxiYXItPmhlaWdodCgpKTsKIApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1l
R3RrOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBT
Y3JvbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NUQVRFX05PUk1BTCwgR1RL
X1NIQURPV19JTiwgInNjcm9sbGVkX3dpbmRvdyIpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1l
R3RrOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBHdGtXaWRnZXQqIHdpZGdldCA9
IGdldFdpZGdldEZvclNjcm9sbGJhcihzY3JvbGxiYXIpOwogICAgIGdib29sZWFuIGFjdGl2YXRl
U2xpZGVyOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50
VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhCiAgICAg
d2lkZ2V0Q29udGV4dC5ndGtQYWludFNsaWRlcihzbGlkZXJSZWN0LCB3aWRnZXQsIHN0YXRlVHlw
ZSwgc2hhZG93VHlwZSwgInNsaWRlciIsIG9yaWVudGF0aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxi
YXJUaGVtZUd0azo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQor
dm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0
LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgLy8gVGhlIGJ1dHRvbnMgd2lsbCBiZSBkaXNh
YmxlZCBpZiB0aGUgdGh1bWIgaXMgYXMgdGhlIGFwcHJvcHJpYXRlIGV4dHJlbWUuCiAgICAgR3Rr
U2hhZG93VHlwZSBzaGFkb3dUeXBlID0gR1RLX1NIQURPV19PVVQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGszLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azMuY3BwCmluZGV4IDRjMzNlNjZk
YjhmZmVmYzNmNDIzNDZjYWQwZWVlNjdlZTZjZDQ1ZmUuLjk3NDljNTQzZjNkZGY2YjMxNWVmZmI5
OGE3NTlmZjViMDAyZDcwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9TY3JvbGxiYXJUaGVtZUd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9TY3JvbGxiYXJUaGVtZUd0azMuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyB2b2lkIGFw
cGx5U2Nyb2xsYmFyU3R5bGVDb250ZXh0Q2xhc3NlcyhHdGtTdHlsZUNvbnRleHQqIGNvbnRleHQs
IFNjcm9sbGJhCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfYWRkX2NsYXNzKGNvbnRleHQsIG9yaWVu
dGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gIEdUS19TVFlMRV9DTEFTU19WRVJUSUNBTCA6
IEdUS19TVFlMRV9DTEFTU19IT1JJWk9OVEFMKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVH
dGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAv
LyBQYWludCB0aGUgdHJhY2sgYmFja2dyb3VuZC4gSWYgdGhlIHRyb3VnaC11bmRlci1zdGVwcGVy
cyBwcm9wZXJ0eSBpcyB0cnVlLCB0aGlzCiAgICAgLy8gc2hvdWxkIGJlIHRoZSBmdWxsIHNpemUg
b2YgdGhlIHNjcm9sbGJhciwgYnV0IGlmIGlzIGZhbHNlLCBpdCBzaG91bGQgb25seSBiZSB0aGUK
QEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIKICAgICBndGtfc3R5bGVf
Y29udGV4dF9yZXN0b3JlKG1fY29udGV4dCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6
OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9s
bGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJC
YWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhcikKIHsKICAgICBndGtfc3R5bGVfY29udGV4dF9zYXZlKG1fY29udGV4dCk7CiAK
QEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJh
ckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbAogICAgIGd0a19zdHls
ZV9jb250ZXh0X3Jlc3RvcmUobV9jb250ZXh0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRU
aHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2F2
ZShtX2NvbnRleHQpOwogCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xs
YmEKICAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKG1fY29udGV4dCk7CiB9CiAKLXZvaWQg
U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQg
cGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGd0a19zdHlsZV9jb250ZXh0X3Nh
dmUobV9jb250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbGJhclRoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
YmFyVGhlbWVNYWMuaAppbmRleCAxM2Q0NGMyM2QzYjMzNjIzNmZiNjQwOThmYTg3MGFlYzhjN2I1
NjU4Li45NjI5ZjYwNzRmNjJjYWFiNjVhOTM5ZjQ3NTA3MThhNDEyNGRjZjhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaApAQCAtMzksNDYg
KzM5LDQ2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhciopOworICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogI2lm
ICFQTEFURk9STShDSFJPTUlVTSkKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwg
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwogI2VuZGlmCiAKICAgICB2
aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1
bGFyU2Nyb2xsYmFyKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGlu
dHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHVzZXNPdmVybGF5
U2Nyb2xsYmFycygpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJPdmVy
bGF5U3R5bGUoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbGJhck92
ZXJsYXlTdHlsZShTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiAgICAgdmlydHVhbCBkb3VibGUg
aW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCk7CiAgICAgdmlydHVhbCBkb3VibGUgYXV0b3Nj
cm9sbFRpbWVyRGVsYXkoKTsKIAogICAgIHZpcnR1YWwgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVu
dCBidXR0b25zUGxhY2VtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJT
Y3JvbGxiYXIoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxi
YXIoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9s
bGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZvaWQgc2V0TmV3UGFpbnRlckZvclNjcm9s
bGJhcihTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYWludGVyKTsKLSAgICBTY3JvbGxiYXJQYWludGVy
IHBhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CisgICAgdm9pZCBzZXROZXdQYWludGVy
Rm9yU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFpbnRlcik7Cisg
ICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xp
ZW50Kik7CiAKICAgICBzdGF0aWMgYm9vbCBpc0N1cnJlbnRseURyYXdpbmdJbnRvTGF5ZXIoKTsK
ICAgICBzdGF0aWMgdm9pZCBzZXRJc0N1cnJlbnRseURyYXdpbmdJbnRvTGF5ZXIoYm9vbCk7CiAK
IHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBib29sIGhh
c0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1
bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0
dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2Up
OwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3Jv
bGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0
cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFs
IEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQ
YXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJk
QnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFp
bnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CiAKICAgICB2aXJ0dWFsIGludCBt
YXhPdmVybGFwQmV0d2VlblBhZ2VzKCkgeyByZXR1cm4gNDA7IH0KIAotICAgIHZpcnR1YWwgaW50
IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVt
VGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKICAgICAKLSAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIo
U2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29s
IHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVh
ZE9mVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
KTsKICAgICBpbnQgc2Nyb2xsYmFyUGFydFRvSElQcmVzc2VkU3RhdGUoU2Nyb2xsYmFyUGFydCk7
CiAKICNpZiAhUExBVEZPUk0oQ0hST01JVU0pICYmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykgJiYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCmluZGV4IGNjNzQ4MjQ1Nzc4NTI5M2QxZDU3OGI3
ODJkODFjMjdmYWJiMjU5MjQuLjNiOTAyMWFkZWE1NWRjOGFmY2Q2NmJkZGY1NTc2MTI0MDlkOTk3
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVt
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVN
YWMubW0KQEAgLTUwLDcgKzUwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBIYXNoTWFwPFNjcm9sbGJhciosIFJldGFpblB0cjxT
Y3JvbGxiYXJQYWludGVyPiA+IFNjcm9sbGJhclBhaW50ZXJNYXA7Cit0eXBlZGVmIEhhc2hNYXA8
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFpbnRlcj4gPiBTY3Jv
bGxiYXJQYWludGVyTWFwOwogCiBzdGF0aWMgU2Nyb2xsYmFyUGFpbnRlck1hcCogc2Nyb2xsYmFy
TWFwKCkKIHsKQEAgLTE2Miw3ICsxNjIsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVBcnJvd1BsYWNl
bWVudCgpCiAgICAgfQogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpyZWdpc3RlclNjcm9s
bGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lz
dGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYg
KGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKSB7CiAgICAgICAgIGJvb2wgaXNIb3Jp
em9udGFsID0gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXI7
CkBAIC0xNzUsMTkgKzE3NSwxOSBAQCB2b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpyZWdpc3RlclNj
cm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICB9CiB9CiAKLXZvaWQgU2Nyb2xsYmFy
VGhlbWVNYWM6OnVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lk
IFNjcm9sbGJhclRoZW1lTWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgc2Nyb2xsYmFyTWFwKCktPnJlbW92ZShzY3JvbGxiYXIp
OwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFy
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYWludGVyIG5ld1BhaW50ZXIpCit2b2lk
IFNjcm9sbGJhclRoZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhaW50ZXIgbmV3UGFpbnRlcikKIHsKICAg
ICBzY3JvbGxiYXJNYXAoKS0+c2V0KHNjcm9sbGJhciwgbmV3UGFpbnRlcik7CiAgICAgdXBkYXRl
RW5hYmxlZFN0YXRlKHNjcm9sbGJhcik7CiAgICAgdXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
KHNjcm9sbGJhcik7CiB9CiAKLVNjcm9sbGJhclBhaW50ZXIgU2Nyb2xsYmFyVGhlbWVNYWM6OnBh
aW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitTY3JvbGxiYXJQYWludGVy
IFNjcm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNjcm9sbGJhck1hcCgpLT5nZXQoc2Nyb2xs
YmFyKS5nZXQoKTsKIH0KQEAgLTI0OCwxMCArMjQ4LDEwIEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVN
YWM6OnVzZXNPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxl
KFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlU2Ny
b2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAg
ICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVyID0gcGFpbnRlckZvclNjcm9sbGJhcihzY3JvbGxi
YXIpOwotICAgIHN3aXRjaCAoc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxiYXJP
dmVybGF5U3R5bGUoKSkgeworICAgIHN3aXRjaCAoc2Nyb2xsYmFyLT5zY3JvbGxiYXJPdmVybGF5
U3R5bGUoKSkgewogICAgIGNhc2UgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGVmYXVsdDoKICAgICAg
ICAgW3BhaW50ZXIgc2V0S25vYlN0eWxlOk5TU2Nyb2xsZXJLbm9iU3R5bGVEZWZhdWx0XTsKICAg
ICAgICAgYnJlYWs7CkBAIC0yNzksNyArMjc5LDcgQEAgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVu
dCBTY3JvbGxiYXJUaGVtZU1hYzo6YnV0dG9uc1BsYWNlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJu
IGdCdXR0b25QbGFjZW1lbnQ7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1dHRv
bnMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNCdXR0
b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNjcm9s
bGJhci0+ZW5hYmxlZCgpICYmIGJ1dHRvbnNQbGFjZW1lbnQoKSAhPSBTY3JvbGxiYXJCdXR0b25z
Tm9uZQogICAgICAgICAgICAgICYmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpv
bnRhbFNjcm9sbGJhcgpAQCAtMjg3LDcgKzI4Nyw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6
Omhhc0J1dHRvbnMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgICAgICAgICAgOiBzY3JvbGxi
YXItPmhlaWdodCgpKSA+PSAyICogKGNSZWFsQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJv
bFNpemUoKV0gLSBjQnV0dG9uSGl0SW5zZXRbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSk7CiB9
CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFy
KQorYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhcikKIHsKICAgICBpbnQgbWluTGVuZ3RoRm9yVGh1bWI7CiAgICAgaWYgKGlzU2Ny
b2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKSB7CkBAIC0zMTksNyArMzE5LDcgQEAgc3RhdGlj
IEludFJlY3QgYnV0dG9uUmVwYWludFJlY3QoY29uc3QgSW50UmVjdCYgYnV0dG9uUmVjdCwgU2Ny
b2xsYmFyT3JpZW50YXRpb24KICAgICByZXR1cm4gcGFpbnRSZWN0OwogfQogCi1JbnRSZWN0IFNj
cm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Ny
b2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1h
Yzo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xs
YmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQogewogICAgIEludFJlY3QgcmVzdWx0OwogICAg
IApAQCAtMzUzLDcgKzM1Myw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmJhY2tCdXR0
b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJl
Y3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGlu
ZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGlu
ZykKIHsKICAgICBJbnRSZWN0IHJlc3VsdDsKICAgICAKQEAgLTM5Myw3ICszOTMsNyBAQCBJbnRS
ZWN0IFNjcm9sbGJhclRoZW1lTWFjOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9s
bGJhciwgU2Nyb2xsYmFyUGFydAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUludFJlY3QgU2Ny
b2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCBwYWlu
dGluZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQogewogICAgIGlmIChwYWludGluZyB8
fCAhaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICByZXR1cm4gc2Nyb2xsYmFyLT5mcmFt
ZVJlY3QoKTsKQEAgLTQzMCw3ICs0MzAsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjp0
cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcpCiAgICAgcmV0dXJu
IEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpICsgc3RhcnRXaWR0aCwgdGhp
Y2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0gdG90YWxXaWR0aCk7CiB9CiAKLWludCBTY3Jv
bGxiYXJUaGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQor
aW50IFNjcm9sbGJhclRoZW1lTWFjOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxh
YmxlKCkpCiAgICAgICAgIHJldHVybiBbc2Nyb2xsYmFyTWFwKCktPmdldChzY3JvbGxiYXIpLmdl
dCgpIGtub2JNaW5MZW5ndGhdOwpAQCAtNDM4LDcgKzQzOCw3IEBAIGludCBTY3JvbGxiYXJUaGVt
ZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgICAgICBy
ZXR1cm4gY1RodW1iTWluTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV07CiB9CiAKLWJv
b2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lTWFjOjpzaG91
bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldnQpCiB7CiAgICAgaWYgKGV2dC5idXR0b24oKSAhPSBMZWZ0QnV0dG9uKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC00NDcsNyArNDQ3LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVt
ZU1hYzo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQKICAgICByZXR1cm4gZXZ0LmFsdEtleSgpOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1l
TWFjOjpzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQorYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6c2hvdWxk
RHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogewogICAgIHJldHVybiBldmVudC5hbHRLZXkoKTsK
IH0KQEAgLTQ3MCw3ICs0NzAsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVNYWM6OnNjcm9sbGJhclBh
cnRUb0hJUHJlc3NlZFN0YXRlKFNjcm9sbGJhclBhcnQgcGFydCkKICAgICB9CiB9CiAKLXZvaWQg
U2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJh
cikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElB
dmFpbGFibGUoKSkKICAgICAgICAgW3Njcm9sbGJhck1hcCgpLT5nZXQoc2Nyb2xsYmFyKS5nZXQo
KSBzZXRFbmFibGVkOnNjcm9sbGJhci0+ZW5hYmxlZCgpXTsKQEAgLTQ5OSw3ICs0OTksNyBAQCBz
dGF0aWMgdm9pZCBzY3JvbGxiYXJQYWludGVyUGFpbnQoU2Nyb2xsYmFyUGFpbnRlciBzY3JvbGxi
YXJQYWludGVyLCBib29sIGVuYWJsZQogfQogCiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQotYm9v
bCBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Nyb2xs
YmFyVGhlbWVNYWM6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsKICAgICBp
ZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpIHsKICAgICAgICAgZmxvYXQgdmFs
dWUgPSAwOwpAQCAtNTcwLDcgKzU3MCw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvCiAgICAg
aWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAgICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRl
ID0ga1RoZW1lVHJhY2tEaXNhYmxlZDsKICAgICBlbHNlCi0gICAgICAgIHRyYWNrSW5mby5lbmFi
bGVTdGF0ZSA9IHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSA/IGtUaGVt
ZVRyYWNrQWN0aXZlIDoga1RoZW1lVHJhY2tJbmFjdGl2ZTsKKyAgICAgICAgdHJhY2tJbmZvLmVu
YWJsZVN0YXRlID0gc2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkgPyBrVGhlbWVU
cmFja0FjdGl2ZSA6IGtUaGVtZVRyYWNrSW5hY3RpdmU7CiAKICAgICBpZiAoaGFzVGh1bWIoc2Ny
b2xsYmFyKSkKICAgICAgICAgdHJhY2tJbmZvLmF0dHJpYnV0ZXMgfD0ga1RoZW1lVHJhY2tTaG93
VGh1bWI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJh
clRoZW1lTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRo
ZW1lTW9jay5jcHAKaW5kZXggNWQyYmMzZWMwODk3OGUwMzczN2ZiYTczOTViOGI4Y2U3NDYwZDQ2
NC4uNmRlOTFjY2I4MTkyMTA0MGMwODQ3OGMxZWU1Njc3ZGRlNDM3NDk1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcApAQCAt
MzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbnQgY1Njcm9sbGJh
clRoaWNrbmVzc1tdID0geyAxNSwgMTEgfTsKIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1vY2s6
OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFy
VGhlbWVNb2NrOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9v
bCkKIHsKICAgICByZXR1cm4gc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKTsKIH0KQEAgLTQyLDEyICs0
MiwxMiBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xs
YmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiAgICAgcmV0dXJuIGNTY3JvbGxiYXJUaGlja25l
c3NbY29udHJvbFNpemVdOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFj
a0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgdHJhY2tSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBh
aW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdHJhY2tSZWN0KQogewogICAgIGNv
bnRleHQtPmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xsYmFyLT5lbmFibGVkKCkgPyBDb2xvcjo6
bGlnaHRHcmF5IDogQ29sb3IoMHhGRkUwRTBFMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogfQog
Ci12b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3QpCit2
b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRodW1i
UmVjdCkKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIGNvbnRleHQt
PmZpbGxSZWN0KHRodW1iUmVjdCwgQ29sb3I6OmRhcmtHcmF5LCBDb2xvclNwYWNlRGV2aWNlUkdC
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhl
bWVNb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9j
ay5oCmluZGV4IGUyNTQ4NDIyYTI4ZjVlNzIzZTQzNTNmOGY0NTc2NTI1M2NiNjg1YmIuLjYzMzM4
NDFhYjc5NmI5ZGMyMzNmM2Y2M2ViODAwYWJmYTdiMGJiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaApAQCAtMzYsMTUgKzM2LDE1
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFy
Q29udHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1
YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyBy
ZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9s
bGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgLypwYWludGluZyovID0gZmFsc2UpIHsgcmV0dXJu
IEludFJlY3QoKTsgfQotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3Jv
bGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7IHJldHVy
biBJbnRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhcios
IGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25S
ZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCAvKnBhaW50aW5n
Ki8gPSBmYWxzZSkgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmlydHVhbCBJbnRSZWN0IGZv
cndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9v
bCAvKnBhaW50aW5nKi8gPSBmYWxzZSkgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmlydHVh
bCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSk7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRS
ZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1
YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgSW50UmVjdCYpOwogICAgIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNN
b2NrVGhlbWUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuY3BwCmluZGV4IGUzMjQzZWNmYTg5NzliOWE2ODFl
MTU5YmRlZTlhOWIxNTljNjc0M2MuLmQ0YjU4YjFiMGU1YWYxNzBmOTZlZjgzNjRiNjliNDg0YTM2
MjIyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRo
ZW1lUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1l
UXQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIFNjcm9sbGJhclBhcnQgc2Nyb2xsYmFy
UGFydChjb25zdCBRU3R5bGU6OlN1YkNvbnRyb2wmIHNjKQogICAgIHJldHVybiBOb1BhcnQ7CiB9
CiAKLXN0YXRpYyBRU3R5bGVPcHRpb25TbGlkZXIqIHN0eWxlT3B0aW9uU2xpZGVyKFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBRV2lkZ2V0KiB3aWRnZXQgPSAwKQorc3RhdGljIFFTdHlsZU9wdGlvblNs
aWRlciogc3R5bGVPcHRpb25TbGlkZXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwg
UVdpZGdldCogd2lkZ2V0ID0gMCkKIHsKICAgICBzdGF0aWMgUVN0eWxlT3B0aW9uU2xpZGVyIG9w
dDsKICAgICBpZiAod2lkZ2V0KQpAQCAtMTU1LDcgKzE1NSw3IEBAIHN0YXRpYyBRU3R5bGVPcHRp
b25TbGlkZXIqIHN0eWxlT3B0aW9uU2xpZGVyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBRV2lkZ2V0
KiB3aWRnCiAgICAgcmV0dXJuICZvcHQ7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVRdDo6cGFp
bnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZVF0OjpwYWlu
dChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsKICAgICBpZiAoZ3JhcGhp
Y3NDb250ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgc2Nyb2xsYmFyLT5p
bnZhbGlkYXRlUmVjdChkYW1hZ2VSZWN0KTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIFNjcm9s
bGJhclRoZW1lUXQ6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udAogICAgIHJldHVybiB0cnVlOwogfQogCi1TY3JvbGxiYXJQYXJ0IFNjcm9s
bGJhclRoZW1lUXQ6OmhpdFRlc3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgZXZ0KQorU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZVF0OjpoaXRUZXN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZ0KQogewogICAgIFFTdHlsZU9wdGlvblNsaWRlciogb3B0ID0gc3R5bGVPcHRpb25TbGlk
ZXIoc2Nyb2xsYmFyKTsKICAgICBjb25zdCBRUG9pbnQgcG9zID0gc2Nyb2xsYmFyLT5jb252ZXJ0
RnJvbUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpOwpAQCAtMjAyLDEzICsyMDIsMTMg
QEAgU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZVF0OjpoaXRUZXN0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXMKICAgICByZXR1cm4gc2Nyb2xsYmFyUGFydChzYyk7
CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVRdDo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxi
YXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVR
dDo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIC8vIE1pZGRsZSBjbGljayBjZW50ZXJzIHNsaWRl
ciB0aHVtYiAoaWYgc3VwcG9ydGVkKS4KICAgICByZXR1cm4gc3R5bGUoKS0+c3R5bGVIaW50KFFT
dHlsZTo6U0hfU2Nyb2xsQmFyX01pZGRsZUNsaWNrQWJzb2x1dGVQb3NpdGlvbikgJiYgZXZ0LmJ1
dHRvbigpID09IE1pZGRsZUJ1dHRvbjsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVF0OjppbnZh
bGlkYXRlUGFydChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCkKK3ZvaWQgU2Ny
b2xsYmFyVGhlbWVRdDo6aW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgU2Nyb2xsYmFyUGFydCkKIHsKICAgICAvLyBGSVhNRTogRG8gbW9yZSBwcmVjaXNlIGlu
dmFsaWRhdGlvbi4KICAgICBzY3JvbGxiYXItPmludmFsaWRhdGUoKTsKQEAgLTIyNCw3ICsyMjQs
NyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVRdDo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNv
bnRyb2xTaXplIGNvbnRyb2xTaXplKQogICAgIHJldHVybiBzdHlsZSgpLT5waXhlbE1ldHJpYyhR
U3R5bGU6OlBNX1Njcm9sbEJhckV4dGVudCwgJm8sIDApOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhl
bWVRdDo6dGh1bWJQb3NpdGlvbihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJU
aGVtZVF0Ojp0aHVtYlBvc2l0aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7
CiAgICAgaWYgKHNjcm9sbGJhci0+ZW5hYmxlZCgpKSB7CiAgICAgICAgIGZsb2F0IHBvcyA9IChm
bG9hdClzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSAqICh0cmFja0xlbmd0aChzY3JvbGxiYXIpIC0g
dGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSkgLyBzY3JvbGxiYXItPm1heGltdW0oKTsKQEAgLTIzMywy
MSArMjMzLDIxIEBAIGludCBTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYlBvc2l0aW9uKFNjcm9sbGJh
ciogc2Nyb2xsYmFyKQogICAgIHJldHVybiAwOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVRdDo6
dGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVRdDo6
dGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBRU3R5
bGVPcHRpb25TbGlkZXIqIG9wdCA9IHN0eWxlT3B0aW9uU2xpZGVyKHNjcm9sbGJhcik7CiAgICAg
SW50UmVjdCB0aHVtYiA9IHN0eWxlKCktPnN1YkNvbnRyb2xSZWN0KFFTdHlsZTo6Q0NfU2Nyb2xs
QmFyLCBvcHQsIFFTdHlsZTo6U0NfU2Nyb2xsQmFyU2xpZGVyLCAwKTsKICAgICByZXR1cm4gc2Ny
b2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyB0aHVtYi53aWR0
aCgpIDogdGh1bWIuaGVpZ2h0KCk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZVF0Ojp0cmFja1Bv
c2l0aW9uKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lUXQ6OnRyYWNr
UG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBRU3R5bGVP
cHRpb25TbGlkZXIqIG9wdCA9IHN0eWxlT3B0aW9uU2xpZGVyKHNjcm9sbGJhcik7CiAgICAgSW50
UmVjdCB0cmFjayA9IHN0eWxlKCktPnN1YkNvbnRyb2xSZWN0KFFTdHlsZTo6Q0NfU2Nyb2xsQmFy
LCBvcHQsIFFTdHlsZTo6U0NfU2Nyb2xsQmFyR3Jvb3ZlLCAwKTsKICAgICByZXR1cm4gc2Nyb2xs
YmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyB0cmFjay54KCkgLSBz
Y3JvbGxiYXItPngoKSA6IHRyYWNrLnkoKSAtIHNjcm9sbGJhci0+eSgpOwogfQogCi1pbnQgU2Ny
b2xsYmFyVGhlbWVRdDo6dHJhY2tMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Ny
b2xsYmFyVGhlbWVRdDo6dHJhY2tMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
cikKIHsKICAgICBRU3R5bGVPcHRpb25TbGlkZXIqIG9wdCA9IHN0eWxlT3B0aW9uU2xpZGVyKHNj
cm9sbGJhcik7CiAgICAgSW50UmVjdCB0cmFjayA9IHN0eWxlKCktPnN1YkNvbnRyb2xSZWN0KFFT
dHlsZTo6Q0NfU2Nyb2xsQmFyLCBvcHQsIFFTdHlsZTo6U0NfU2Nyb2xsQmFyR3Jvb3ZlLCAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuaAppbmRleCBj
ZjQ4ODJkYTIwM2JiZjBmYjdjYzY5ZTdjM2UxYzFmZmRkODFmNWViLi4wMzM3YmY4MGNjZjY0NmQx
OGU4ZjA3YzRmZTVhY2JhM2FhOTk1MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvU2Nyb2xsYmFyVGhlbWVRdC5oCkBAIC00MCwxOSArNDAsMTkgQEAgY2xhc3MgU2Nyb2xsYmFy
VGhlbWVRdCA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+
U2Nyb2xsYmFyVGhlbWVRdCgpOwogCi0gICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhcios
IEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZpcnR1
YWwgYm9vbCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENv
cm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVy
UmVjdCk7CiAKLSAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgaGl0VGVzdChTY3JvbGxiYXIqLCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgaGl0
VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwog
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1
bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBTY3JvbGxiYXJQYXJ0KTsKIAotICAgIHZpcnR1YWwgaW50IHRodW1iUG9zaXRpb24oU2Nyb2xs
YmFyKik7Ci0gICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7Ci0gICAgdmly
dHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0cmFj
a0xlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9s
bGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJhclRo
ZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqKTsKIAogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJD
b250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmNwcAppbmRleCAzNDNiYmIyODBl
ZDZhZjg0OGY1MWNjMDBlZDk4ZjMxZjdlMTdlMjQ4Li4xY2M1Mzg1ZTE4N2EyMmVhZjFiMDU1ZTM0
YmUwZmY2NDM4OTI5YjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2Nyb2xsYmFyVGhlbWVTYWZhcmkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHAKQEAgLTEwNCwxNCArMTA0LDE0IEBAIGludCBTY3Jv
bGxiYXJUaGVtZVNhZmFyaTo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXpl
IGNvbnRyb2xTaXplKQogICAgIHJldHVybiBjU2Nyb2xsYmFyVGhpY2tuZXNzW2NvbnRyb2xTaXpl
XTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzQnV0dG9ucyhTY3JvbGxiYXIq
IHNjcm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Omhhc0J1dHRvbnMoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gc2Nyb2xsYmFyLT5lbmFi
bGVkKCkgJiYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
ID8gCiAgICAgICAgICAgICAgc2Nyb2xsYmFyLT53aWR0aCgpIDogCiAgICAgICAgICAgICAgc2Ny
b2xsYmFyLT5oZWlnaHQoKSkgPj0gMiAqIChjUmVhbEJ1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNv
bnRyb2xTaXplKCldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0p
OwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNj
cm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Omhhc1RodW1iKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZW5hYmxlZCgp
ICYmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IAog
ICAgICAgICAgICAgIHNjcm9sbGJhci0+d2lkdGgoKSA6IApAQCAtMTM0LDcgKzEzNCw3IEBAIHN0
YXRpYyBJbnRSZWN0IGJ1dHRvblJlcGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIGJ1dHRvblJlY3Qs
IFNjcm9sbGJhck9yaWVudGF0aW9uCiAgICAgcmV0dXJuIHBhaW50UmVjdDsKIH0KIAotSW50UmVj
dCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykKK0ludFJlY3QgU2Nyb2xsYmFy
VGhlbWVTYWZhcmk6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykKIHsKICAgICBJbnRSZWN0IHJl
c3VsdDsKIApAQCAtMTUyLDcgKzE1Miw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6
OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6Zm9yd2Fy
ZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9v
bCBwYWludGluZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmZvcndhcmRCdXR0b25S
ZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwg
Ym9vbCBwYWludGluZykKIHsKICAgICBJbnRSZWN0IHJlc3VsdDsKICAgICAKQEAgLTE4MSw3ICsx
ODEsNyBAQCBzdGF0aWMgSW50UmVjdCB0cmFja1JlcGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIHRy
YWNrUmVjdCwgU2Nyb2xsYmFyT3JpZW50YXRpb24gbwogICAgIHJldHVybiBwYWludFJlY3Q7CiB9
CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNj
cm9sbGJhciwgYm9vbCBwYWludGluZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnRy
YWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQog
ewogICAgIGlmIChwYWludGluZyB8fCAhaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICBy
ZXR1cm4gc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKTsKQEAgLTE5MywzNiArMTkzLDM2IEBAIEludFJl
Y3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwg
Ym9vbCBwYWludGluZykKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xs
YmFyLT55KCkgKyBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0sIHRoaWNr
bmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIDIgKiBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+
Y29udHJvbFNpemUoKV0pOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Om1pbmltdW1U
aHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVNhZmFy
aTo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7
CiAgICAgcmV0dXJuIGNUaHVtYk1pbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldOwog
fQogCi1ib29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9s
bGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIHJldHVybiBldnQuc2hpZnRLZXkoKSAm
JiBldnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbjsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVNh
ZmFyaTo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCit2b2lk
IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgdHJhY2tSZWN0KQogewogICAgIGlmICghU2FmYXJpVGhlbWVMaWJyYXJ5KCkp
CiAgICAgICAgIHJldHVybjsKICAgICBOU0NvbnRyb2xTaXplIHNpemUgPSBzY3JvbGxiYXItPmNv
bnRyb2xTaXplKCkgPT0gU21hbGxTY3JvbGxiYXIgPyBOU1NtYWxsQ29udHJvbFNpemUgOiBOU1Jl
Z3VsYXJDb250cm9sU2l6ZTsKICAgICBUaGVtZUNvbnRyb2xTdGF0ZSBzdGF0ZSA9IDA7Ci0gICAg
aWYgKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSkKKyAgICBpZiAoc2Ny
b2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAgICAgICAgIHN0YXRlIHw9IEFjdGl2
ZVN0YXRlOwogICAgIGlmIChoYXNCdXR0b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHN0YXRlIHw9
IEVuYWJsZWRTdGF0ZTsKICAgICBwYWludFRoZW1lUGFydChzY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gVmVydGljYWxTY3JvbGxiYXIgPyBWU2Nyb2xsVHJhY2tQYXJ0IDogSFNjcm9sbFRyYWNr
UGFydCwgZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgdHJhY2tSZWN0LCBzaXpl
LCBzdGF0ZSk7IAogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbihH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xs
YmFyVGhlbWVTYWZhcmk6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBidXR0
b25SZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgaWYgKCFTYWZhcmlUaGVtZUxpYnJh
cnkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIE5TQ29udHJvbFNpemUgc2l6ZSA9IHNjcm9sbGJh
ci0+Y29udHJvbFNpemUoKSA9PSBTbWFsbFNjcm9sbGJhciA/IE5TU21hbGxDb250cm9sU2l6ZSA6
IE5TUmVndWxhckNvbnRyb2xTaXplOwogICAgIFRoZW1lQ29udHJvbFN0YXRlIHN0YXRlID0gMDsK
LSAgICBpZiAoc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5pc0FjdGl2ZSgpKQorICAgIGlm
IChzY3JvbGxiYXItPmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSkKICAgICAgICAgc3RhdGUgfD0g
QWN0aXZlU3RhdGU7CiAgICAgaWYgKGhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkKICAgICAgICAgc3Rh
dGUgfD0gRW5hYmxlZFN0YXRlOwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgdm9pZCBTY3JvbGxiYXJU
aGVtZVNhZmFyaTo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQs
IFNjcm9sbGIKICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uUmVjdCwgc2l6ZSwgc3RhdGUp
OwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgdGh1bWJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUaHVtYihHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQogewogICAgIGlmICghU2FmYXJpVGhlbWVM
aWJyYXJ5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBOU0NvbnRyb2xTaXplIHNpemUgPSBzY3Jv
bGxiYXItPmNvbnRyb2xTaXplKCkgPT0gU21hbGxTY3JvbGxiYXIgPyBOU1NtYWxsQ29udHJvbFNp
emUgOiBOU1JlZ3VsYXJDb250cm9sU2l6ZTsKICAgICBUaGVtZUNvbnRyb2xTdGF0ZSBzdGF0ZSA9
IDA7Ci0gICAgaWYgKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSkKKyAg
ICBpZiAoc2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAgICAgICAgIHN0YXRl
IHw9IEFjdGl2ZVN0YXRlOwogICAgIGlmIChoYXNUaHVtYihzY3JvbGxiYXIpKQogICAgICAgICBz
dGF0ZSB8PSBFbmFibGVkU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5oCmluZGV4IGYwMzkzNzllYTQ0NzA4ZThiNWI3NWY5NjA1
NTMyZmUxMWQ2MjY1OTIuLmY0MjdiMTkwZmQ2NzY2NTIxNTY3NTY2Y2I2Y2JjNGRmZTQzZDk5Mjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNh
ZmFyaS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNh
ZmFyaS5oCkBAIC00MSwyMCArNDEsMjAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJvdGVjdGVkOgot
ICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgYm9v
bCBoYXNUaHVtYihTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3Jv
bGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJU
aGVtZUNsaWVudCopOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9s
bGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVh
bCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJv
b2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3Jv
bGxiYXIqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNr
QnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFp
bnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNl
KTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
Ym9vbCBwYWludGluZyA9IGZhbHNlKTsKIAotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxl
bmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqKTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVy
T25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwg
Y29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRo
dW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50
UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRo
ZW1lV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdp
bi5jcHAKaW5kZXggZDM2MzQxMDY4NDg3ZmYxYjc4Njk3NjhlOWQ1ZjZiMmY0ODk4MWFhNS4uNTY0
NDI5N2Q3ZjI3MGM1MGM3YTI4ZWYzYjFlMjRhY2YxZDEyNzllNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwCkBAIC0xMzAsMTIgKzEz
MCwxMiBAQCBib29sIFNjcm9sbGJhclRoZW1lV2luOjppbnZhbGlkYXRlT25Nb3VzZUVudGVyRXhp
dCgpCiAgICAgcmV0dXJuIHJ1bm5pbmdWaXN0YTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVdp
bjo6aGFzVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lV2lu
OjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVy
biB0aHVtYkxlbmd0aChzY3JvbGxiYXIpID4gMDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZVdpbjo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQg
cGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OmJhY2tCdXR0b25SZWN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkK
IHsKICAgICAvLyBXaW5kb3dzIGp1c3QgaGFzIHNpbmdsZSBhcnJvd3MuCiAgICAgaWYgKHBhcnQg
PT0gQmFja0J1dHRvbkVuZFBhcnQpCkBAIC0xNTQsNyArMTU0LDcgQEAgSW50UmVjdCBTY3JvbGxi
YXJUaGVtZVdpbjo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJh
clBhcnQgcGEKICAgICAgICAgICAgICAgICAgICB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0
KCkgPCAyICogdGhpY2tuZXNzID8gc2Nyb2xsYmFyLT5oZWlnaHQoKSAvIDIgOiB0aGlja25lc3Mp
OwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpmb3J3YXJkQnV0dG9uUmVjdChTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3Jv
bGxiYXJUaGVtZVdpbjo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIC8vIFdpbmRvd3MganVz
dCBoYXMgc2luZ2xlIGFycm93cy4KICAgICBpZiAocGFydCA9PSBGb3J3YXJkQnV0dG9uU3RhcnRQ
YXJ0KQpAQCAtMTc1LDcgKzE3NSw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OmZvcndh
cmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgcmV0
dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpICsgc2Nyb2xsYmFyLT5o
ZWlnaHQoKSAtIGgsIHRoaWNrbmVzcywgaCk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVX
aW46OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKK0ludFJlY3QgU2Nyb2xs
YmFyVGhlbWVXaW46OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBi
b29sKQogewogICAgIGludCB0aGlja25lc3MgPSBzY3JvbGxiYXJUaGlja25lc3MoKTsKICAgICBp
ZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKQEAg
LTE4OCwxMiArMTg4LDEyIEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OnRyYWNrUmVjdChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXIt
PngoKSwgc2Nyb2xsYmFyLT55KCkgKyB0aGlja25lc3MsIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5o
ZWlnaHQoKSAtIDIgKiB0aGlja25lc3MpOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lV2luOjpz
aG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIHJl
dHVybiBldnQuc2hpZnRLZXkoKSAmJiBldnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbjsKIH0KIAot
Ym9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBTY3Jv
bGxiYXJUaGVtZVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAg
Ly8gRmluZCB0aGUgcmVjdCB3aXRoaW4gd2hpY2ggd2Ugc2hvdWxkbid0IHNuYXAsIGJ5IGV4cGFu
ZGluZyB0aGUgdHJhY2sgcmVjdAogICAgIC8vIGluIGJvdGggZGltZW5zaW9ucy4KQEAgLTIxMSwx
NCArMjExLDE0IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9EcmFn
T3JpZ2luKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBQCiAgICAgcmV0dXJuICFyZWN0LmNv
bnRhaW5zKG1vdXNlUG9zaXRpb24pOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWlu
dFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFp
bnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIEp1c3Qg
YXNzdW1lIGEgZm9yd2FyZCB0cmFjayBwYXJ0LiAgV2Ugb25seSBwYWludCB0aGUgdHJhY2sgYXMg
YSBzaW5nbGUgcGllY2Ugd2hlbiB0aGVyZSBpcyBubyB0aHVtYi4KICAgICBpZiAoIWhhc1RodW1i
KHNjcm9sbGJhcikpCiAgICAgICAgIHBhaW50VHJhY2tQaWVjZShjb250ZXh0LCBzY3JvbGxiYXIs
IHJlY3QsIEZvcndhcmRUcmFja1BhcnQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lV2luOjpw
YWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKK3ZvaWQg
U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qs
IFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCiB7CiAgICAgY2hlY2tBbmRJbml0U2Nyb2xsYmFyVGhl
bWUoKTsKIApAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50
VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2NyCiAjZW5k
aWYKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwg
U2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRCdXR0b24o
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgY2hlY2tB
bmRJbml0U2Nyb2xsYmFyVGhlbWUoKTsKIApAQCAtMzM5LDcgKzMzOSw3IEBAIHN0YXRpYyBJbnRS
ZWN0IGdyaXBwZXJSZWN0KGludCB0aGlja25lc3MsIGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkK
ICAgICAgICAgICAgICAgICAgICBncmlwcGVyVGhpY2tuZXNzLCBncmlwcGVyVGhpY2tuZXNzKTsK
IH0KIAotc3RhdGljIHZvaWQgcGFpbnRHcmlwcGVyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBIREMg
aGRjLCBjb25zdCBJbnRSZWN0JiByZWN0KQorc3RhdGljIHZvaWQgcGFpbnRHcmlwcGVyKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7CiAgICAgaWYgKCFzY3JvbGxiYXJUaGVtZSkKICAgICAgICAgcmV0dXJuOyAgLy8gQ2xhc3Np
YyBsb29rIGhhcyBubyBncmlwcGVyLgpAQCAtMzU4LDcgKzM1OCw3IEBAIHN0YXRpYyB2b2lkIHBh
aW50R3JpcHBlcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgSERDIGhkYywgY29uc3QgSW50UmVjdCYg
cmVjdCkKICAgICBEcmF3VGhlbWVCYWNrZ3JvdW5kKHNjcm9sbGJhclRoZW1lLCBoZGMsIHNjcm9s
bGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gU1BfR1JJUFBFUkhP
UiA6IFNQX0dSSVBQRVJWRVJULCBzdGF0ZSwgJnRoZW1lUmVjdCwgMCk7CiB9CiAKLXZvaWQgU2Ny
b2xsYmFyVGhlbWVXaW46OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhl
bWVXaW46OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGNoZWNrQW5k
SW5pdFNjcm9sbGJhclRoZW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Njcm9sbGJhclRoZW1lV2luLmgKaW5kZXggY2QyZjE3NmRmZGM5NzM4MmMzNWJiNzczZjliMWU4
ZGFkMjEyNzZiNi4uODcwMjQwYzE2NTU4Y2YwZjYyNTc0MTk2ZWViNjlhYWE4MDZhN2EyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmgKQEAg
LTQyLDIwICs0MiwyMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGludmFsaWRhdGVPbk1v
dXNlRW50ZXJFeGl0KCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9u
cyhTY3JvbGxiYXIqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1i
KFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1l
Q2xpZW50KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3Jv
bGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0
KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAg
dmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBh
cnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVj
dChTY3JvbGxiYXIqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVj
dCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJv
b2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25S
ZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9
IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRD
ZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwotICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqLCBjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25U
aHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCi0gICAgdmlydHVhbCB2b2lk
IHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0
IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29u
c3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1i
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJh
Y2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IElu
dFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Ny
b2xsYmFyUGFydCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guY3BwCmluZGV4IGM5
MjQ5NzhhNTA1YWMzMWYxNDA1MWUzMDE4MzMwNjQyNTEzYzRhNTEuLmJhZGYzMTU1NDA1YTZhNTEz
NjYyMzI1YjkyMzU5ZGM4MTNhOTUyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3d4L1Njcm9sbGJhclRoZW1lV3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3d4L1Njcm9sbGJhclRoZW1lV3guY3BwCkBAIC03MSwxOSArNzEsMTkgQEAgaW50IFNjcm9sbGJh
clRoZW1lV3g6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBzaXplKQog
ICAgIHJldHVybiB0aGlja25lc3M7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVXeDo6aGFzVGh1
bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lV3g6Omhhc1RodW1i
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgLy8gVGhpcyBtZXRob2Qg
aXMganVzdCBjYWxsZWQgYXMgYSBwYWludC10aW1lIG9wdGltaXphdGlvbiB0byBzZWUgaWYKICAg
ICAvLyBwYWludGluZyB0aGUgdGh1bWIgY2FuIGJlIHNraXBwZWQuICBXZSBkb24ndCBoYXZlIHRv
IGJlIGV4YWN0IGhlcmUuCiAgICAgcmV0dXJuIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikgPiAwOwog
fQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVXeDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciog
c2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lV3g6Om1pbmltdW1UaHVtYkxlbmd0aChTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiAyMDsKIH0KIAotSW50
U2l6ZSBTY3JvbGxiYXJUaGVtZVd4OjpidXR0b25TaXplKFNjcm9sbGJhciopIAorSW50U2l6ZSBT
Y3JvbGxiYXJUaGVtZVd4OjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgCiB7CiAj
aWZkZWYgX19XWE1BQ19fCiAgICAgcmV0dXJuIEludFNpemUoMjAsMjApOwpAQCAtOTIsNyArOTIs
NyBAQCBJbnRTaXplIFNjcm9sbGJhclRoZW1lV3g6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKikKICNl
bmRpZgogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lV3g6OnNwbGl0VHJhY2soU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QsIEludFJlY3Qm
IGJlZm9yZVRodW1iUmVjdCwgSW50UmVjdCYgdGh1bWJSZWN0LCBJbnRSZWN0JiBhZnRlclRodW1i
UmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVXeDo6c3BsaXRUcmFjayhTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0LCBJ
bnRSZWN0JiBiZWZvcmVUaHVtYlJlY3QsIEludFJlY3QmIHRodW1iUmVjdCwgSW50UmVjdCYgYWZ0
ZXJUaHVtYlJlY3QpCiB7CiAgICAgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnNwbGl0VHJhY2so
c2Nyb2xsYmFyLCB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0LCBiZWZvcmVUaHVtYlJlY3QsIHRodW1i
UmVjdCwgYWZ0ZXJUaHVtYlJlY3QpOwogI2lmZGVmIF9fV1hNQUNfXwpAQCAtMTA5LDcgKzEwOSw3
IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVXeDo6c3BsaXRUcmFjayhTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhCiAjZW5kaWYKIH0KIAotSW50UmVjdCBTY3JvbGxi
YXJUaGVtZVd4OjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFy
UGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4OjpiYWNrQnV0dG9uUmVj
dChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJv
b2wpCiB7CiAgICAgLy8gRklYTUU6IEhhbmRsaW5nIHRoaXMgY2FzZSBpcyBuZWVkZWQgd2hlbiB0
aGVyZSBhcmUgdHdvIHNldHMgb2YgYXJyb3cgYnV0dG9ucwogICAgIC8vIG9uIE1hYywgb25lIGF0
IHRoZSB0b3AgYW5kIG9uZSBhdCB0aGUgYm90dG9tLgpAQCAtMTMwLDcgKzEzMCw3IEBAIEludFJl
Y3QgU2Nyb2xsYmFyVGhlbWVXeDo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IFNjcm9sbGJhclBhcnQgcGFyCiAgICAgcmV0dXJuIEludFJlY3QoeCwgeSwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojpmb3J3YXJk
QnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29s
KQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAgICAg
Ly8gRklYTUU6IEhhbmRsaW5nIHRoaXMgY2FzZSBpcyBuZWVkZWQgd2hlbiB0aGVyZSBhcmUgdHdv
IHNldHMgb2YgYXJyb3cgYnV0dG9ucwogICAgIC8vIG9uIE1hYywgb25lIGF0IHRoZSB0b3AgYW5k
IG9uZSBhdCB0aGUgYm90dG9tLgpAQCAtMTU1LDcgKzE1NSw3IEBAIEludFJlY3QgU2Nyb2xsYmFy
VGhlbWVXeDo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJh
clBhcnQKICAgICByZXR1cm4gSW50UmVjdCh4LCB5LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0
KCkpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OnRyYWNrUmVjdChTY3JvbGxiYXIq
IHNjcm9sbGJhciwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6dHJhY2tSZWN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgSW50U2l6ZSBicyA9
IGJ1dHRvblNpemUoc2Nyb2xsYmFyKTsKICAgICBpbnQgdHJhY2tTdGFydCA9IDA7CkBAIC0xNzks
MTEgKzE3OSwxMSBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OnRyYWNrUmVjdChTY3JvbGxi
YXIqIHNjcm9sbGJhciwgYm9vbCkKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwg
c2Nyb2xsYmFyLT55KCkgKyB0cmFja1N0YXJ0LCB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0
KCkgLSAyICogYnMuaGVpZ2h0KCkpOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lV3g6OnBhaW50
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCitib29sIFNjcm9sbGJhclRoZW1lV3g6OnBhaW50KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgcmVjdCkKIHsKICAgICB3eE9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gKHNjcm9sbGJhci0+
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSA/IHd4SE9SSVpPTlRBTCA6IHd4
VkVSVElDQUw7CiAgICAgaW50IGZsYWdzID0gMDsKLSAgICBpZiAoc2Nyb2xsYmFyLT5zY3JvbGxh
YmxlQXJlYSgpLT5pc0FjdGl2ZSgpKQorICAgIGlmIChzY3JvbGxiYXItPmlzU2Nyb2xsYWJsZUFy
ZWFBY3RpdmUoKSkKICAgICAgICAgZmxhZ3MgfD0gd3hDT05UUk9MX0ZPQ1VTRUQ7CiAgICAgCiAg
ICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3d4L1Njcm9sbGJhclRoZW1lV3guaAppbmRleCA3NWFiMTc1YTNiYTYwNGZjZDc5NWFkMmVhNDVl
ZGZjZjU4M2VlNTU4Li4zNzJhYWY5NjYyZjc0NWQ0ZWUwNzQ3ZWRmNWMxMWY5ZmM1YWQ4OTU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5oCkBAIC0z
NSwyMSArMzUsMjEgQEAgY2xhc3MgU2Nyb2xsYmFyVGhlbWVXeCA6IHB1YmxpYyBTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhlbWVXeCgp
OwogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6
ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpOwotICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXIq
LCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBh
aW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVj
dCYpOwogICAgIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9s
bGJhciopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xs
YmFyKik7CisgICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
KSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRo
ZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXIq
KTsKKyAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCop
OwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9s
bGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZv
cndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29s
IHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxz
ZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0
dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGlu
ZyA9IGZhbHNlKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzcGxpdFRyYWNrKFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmIHRyYWNrLCBJbnRSZWN0JiBzdGFydFRyYWNrLCBJbnRSZWN0JiB0aHVtYiwg
SW50UmVjdCYgZW5kVHJhY2spOworICAgIHZpcnR1YWwgdm9pZCBzcGxpdFRyYWNrKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYgdHJhY2ssIEludFJlY3QmIHN0YXJ0VHJhY2ss
IEludFJlY3QmIHRodW1iLCBJbnRSZWN0JiBlbmRUcmFjayk7CiAgICAgCi0gICAgdmlydHVhbCBp
bnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgaW50IG1pbmlt
dW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCmluZGV4IDgxMGM5OGZmMzY2OGFiOTFj
ZGU5YzM1NzE4ZDZmMDRiMmY3NDY3MWIuLjdmZTJmYWM4YjhkNDk3NTRkOGVhYjIzZDQwNWIxNjJi
ZTMzZGM3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgK
QEAgLTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZW5kZXJT
Y3JvbGxiYXJQYXJ0Kj4gbV9wYXJ0czsKIH07CiAKLWlubGluZSBSZW5kZXJTY3JvbGxiYXIqIHRv
UmVuZGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW5saW5lIFJlbmRlclNjcm9s
bGJhciogdG9SZW5kZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikK
IHsKICAgICBBU1NFUlQoIXNjcm9sbGJhciB8fCBzY3JvbGxiYXItPmlzQ3VzdG9tU2Nyb2xsYmFy
KCkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJTY3JvbGxiYXIqPihzY3JvbGxiYXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRo
ZW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5j
cHAKaW5kZXggODczMDlkNDRlNWFhNDUyNjk3OWFmZWJlNTEyNzhiNGU0NmE1ZTkxNy4uNDRlMmFh
NjMxZGMyODE1MDE3NGJjMjI1MjMwZThiNmFhYjdkMGQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaCIK
ICNpbmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIKKyNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNs
aWVudC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtMzYsNyArMzcsNyBAQCBSZW5kZXJTY3JvbGxiYXJUaGVtZSogUmVuZGVyU2Nyb2xs
YmFyVGhlbWU6OnJlbmRlclNjcm9sbGJhclRoZW1lKCkKICAgICByZXR1cm4gJnRoZW1lOwogfQog
Ci12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBpbnQmIGJlZm9yZVNpemUsIGludCYgYWZ0ZXJTaXplKQordm9p
ZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBpbnQmIGJlZm9yZVNpemUsIGludCYgYWZ0ZXJTaXpl
KQogewogICAgIEludFJlY3QgZmlyc3RCdXR0b24gPSBiYWNrQnV0dG9uUmVjdChzY3JvbGxiYXIs
IEJhY2tCdXR0b25TdGFydFBhcnQpOwogICAgIEludFJlY3Qgc2Vjb25kQnV0dG9uID0gZm9yd2Fy
ZEJ1dHRvblJlY3Qoc2Nyb2xsYmFyLCBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0KTsKQEAgLTUxLDcg
KzUyLDcgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNr
QXhpcyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgaW50JgogICAgIH0KIH0KIAotYm9vbCBSZW5kZXJT
Y3JvbGxiYXJUaGVtZTo6aGFzQnV0dG9ucyhTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jvb2wgUmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhcikKIHsKICAgICBpbnQgc3RhcnRTaXplOwogICAgIGludCBlbmRTaXplOwpAQCAtNTksMjcg
KzYwLDI3IEBAIGJvb2wgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Omhhc0J1dHRvbnMoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIChzdGFydFNpemUgKyBlbmRTaXplKSA8PSAoc2Nyb2xs
YmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBzY3JvbGxiYXItPndp
ZHRoKCkgOiBzY3JvbGxiYXItPmhlaWdodCgpKTsKIH0KIAotYm9vbCBSZW5kZXJTY3JvbGxiYXJU
aGVtZTo6aGFzVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFJlbmRlclNjcm9sbGJh
clRoZW1lOjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAg
IHJldHVybiB0cmFja0xlbmd0aChzY3JvbGxiYXIpIC0gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+
PSAwOwogfQogCi1pbnQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1pbmltdW1UaHVtYkxlbmd0aChT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6bWluaW11bVRo
dW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJu
IHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPm1pbmltdW1UaHVtYkxlbmd0aCgpOwogfQog
Ci1JbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIq
IHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgYm9vbCkKK0ludFJlY3QgUmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCiB7CiAgICAgcmV0dXJuIHRvUmVu
ZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPmJ1dHRvblJlY3QocGFydFR5cGUpOwogfQogCi1JbnRS
ZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgYm9vbCkKK0ludFJlY3QgUmVuZGVyU2Ny
b2xsYmFyVGhlbWU6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCiB7CiAgICAgcmV0dXJuIHRvUmVu
ZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPmJ1dHRvblJlY3QocGFydFR5cGUpOwogfQogCi1JbnRS
ZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGJvb2wpCitJbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCkKIHsKICAgICBpZiAoIWhhc0J1dHRvbnMoc2Ny
b2xsYmFyKSkKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7CkBAIC05MSw3
ICs5Miw3IEBAIEludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnRyYWNrUmVjdChTY3JvbGxi
YXIqIHNjcm9sbGJhciwgYm9vbCkKICAgICByZXR1cm4gdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xs
YmFyKS0+dHJhY2tSZWN0KHN0YXJ0TGVuZ3RoLCBlbmRMZW5ndGgpOwogfQogCi1JbnRSZWN0IFJl
bmRlclNjcm9sbGJhclRoZW1lOjpjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQorSW50UmVjdCBSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogeyAKICAgICBJbnRSZWN0
IGJhY2tSZWN0ID0gdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+dHJhY2tQaWVjZVJlY3RX
aXRoTWFyZ2lucyhCYWNrVHJhY2tQYXJ0LCByZWN0KTsKICAgICBJbnRSZWN0IGZvcndhcmRSZWN0
ID0gdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+dHJhY2tQaWVjZVJlY3RXaXRoTWFyZ2lu
cyhGb3J3YXJkVHJhY2tQYXJ0LCByZWN0KTsKQEAgLTExMiwyNyArMTEzLDI3IEBAIHZvaWQgUmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGlj
c0NvbnRleHQqIGNvbnRlCiAgICAgY29udGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6
OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJU
aGVtZTo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNj
cm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhcikt
PnBhaW50UGFydChjb250ZXh0LCBTY3JvbGxiYXJCR1BhcnQsIHNjcm9sbGJhci0+ZnJhbWVSZWN0
KCkpOwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNrQmFja2dyb3Vu
ZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIHRvUmVuZGVyU2Nyb2xsYmFyKHNj
cm9sbGJhciktPnBhaW50UGFydChjb250ZXh0LCBUcmFja0JHUGFydCwgcmVjdCk7CiB9CiAKLXZv
aWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3Jv
bGxiYXJQYXJ0IHBhcnQpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNrUGll
Y2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgdG9S
ZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+cGFpbnRQYXJ0KGNvbnRleHQsIHBhcnQsIHJlY3Qp
OwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludEJ1dHRvbihHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0
LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludEJ1
dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAgICB0
b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5wYWludFBhcnQoY29udGV4dCwgcGFydCwgcmVj
dCk7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0
JiByZWN0KQogewogICAgIHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnBhaW50UGFydChj
b250ZXh0LCBUaHVtYlBhcnQsIHJlY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaAppbmRleCA3MGMyNGE1ZWEyZWQ3OWJiOWY4ZmFkMDIx
MzdjNjM1NjlkOTk2M2M0Li5lYzkyYmRjOTM5M2FjYzZmMmRhNmExNzRmNzdiOWYzZWExNDFmZTYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhl
bWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUu
aApAQCAtNDYsMzUgKzQ2LDM1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludFNj
cm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBjb3JuZXJSZWN0KTsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRo
dW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50
KSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2hvdWxkQ2VudGVyT25UaHVtYihz
Y3JvbGxiYXIsIGV2ZW50KTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZlbnQpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zaG91bGRDZW50ZXJP
blRodW1iKHNjcm9sbGJhciwgZXZlbnQpOyB9CiAgICAgCiAgICAgdmlydHVhbCBkb3VibGUgaW5p
dGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1l
KCktPmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpOyB9CiAgICAgdmlydHVhbCBkb3VibGUg
YXV0b3Njcm9sbFRpbWVyRGVsYXkoKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+
YXV0b3Njcm9sbFRpbWVyRGVsYXkoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Ny
b2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhl
bWUoKS0+cmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQotICAgIHZpcnR1YWwgdm9pZCB1
bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKSB7IHJldHVybiBTY3JvbGxi
YXJUaGVtZTo6dGhlbWUoKS0+dW5yZWdpc3RlclNjcm9sbGJhcihzY3JvbGxiYXIpOyB9CisgICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5yZWdpc3RlclNjcm9sbGJh
cihzY3JvbGxiYXIpOyB9CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRo
ZW1lKCktPnVucmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQogCi0gICAgdmlydHVhbCBp
bnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgaW50IG1pbmlt
dW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAgdm9pZCBidXR0b25T
aXplc0Fsb25nVHJhY2tBeGlzKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBpbnQmIGJlZm9yZVNpemUs
IGludCYgYWZ0ZXJTaXplKTsKKyAgICB2b2lkIGJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVy
U2l6ZSk7CiAgICAgCiAgICAgc3RhdGljIFJlbmRlclNjcm9sbGJhclRoZW1lKiByZW5kZXJTY3Jv
bGxiYXJUaGVtZSgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMo
U2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOworICAg
IHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmly
dHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFs
IEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBw
YWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3Qo
U2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2
aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxz
ZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFs
IEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxi
YXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFj
a1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogICAg
IAotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyKik7ICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAg
dmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIq
LCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50
QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3Jv
bGxiYXJQYXJ0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Ny
b2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCop
OyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIo
R3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7
CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhT
Y3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFp
blRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128502</attachid>
            <date>2012-02-23 10:46:45 -0800</date>
            <delta_ts>2012-02-23 13:59:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78028-20120223134644.patch</filename>
            <type>text/plain</type>
            <size>130733</size>
            <attacher name="Peter Kotwicz">pkotwicz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTkwNGZmYTlmZThhMjRm
Y2Y4NDg2MmJjYmZjYmY0YTAwNWFiODE1OS4uMjIyNjM4ZmVmMjMzOTY1Zjg4YTU2NmQ4ODgwMjQ5
OWQ2ODIxNzgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2NCBAQAorMjAxMi0wMi0yMiAgUGV0
ZXIgS290d2ljeiAgPHBrb3R3aWN6QGdvb2dsZS5jb20+CisKKyAgICAgICAgRGVjb3VwbGUgc2Ny
b2xsYmFyIHBhaW50aW5nIGZyb20gU2Nyb2xsYmFyIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwMjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmdldFRpY2ttYXJr
cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUp
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5oOgorICAgICAgICAoU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6b3JpZW50YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmN1
cnJlbnRQb3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp2aXNpYmxlU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnRvdGFsU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXI6Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpjb250
cm9sU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmxpbmVTdGVwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFnZVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyOjpwcmVzc2VkUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmhvdmVy
ZWRQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXI6OngpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6d2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bG9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpy
b290KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZnJhbWVSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXI6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWU6OnVwZGF0ZUVuYWJsZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6
OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnVwZGF0ZVNjcm9s
bGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6aW52
YWxpZGF0ZVBhcnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjppbnZhbGlk
YXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkQ2VudGVy
T25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkU25hcEJh
Y2tUb0RyYWdPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnNob3Vs
ZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lOjp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Ojp0aHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dHJhY2tQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dHJhY2tMZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDbGllbnQ6On5TY3JvbGxiYXJUaGVtZUNsaWVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpoaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayk6CisgICAgICAgIChXZWJD
b3JlOjp1c2VkVG90YWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjp0aHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZTo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aCk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNj
cm9sbGJhckJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlOjpwYWludFRyYWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRpY2ttYXJrcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNl
cyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpoYXNUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpiYWNrQnV0dG9uUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpmb3J3YXJkQnV0
dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjp0cmFj
a1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRU
cmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bTo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21p
dW06Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bSk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50
U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNo
cm9taXVtQW5kcm9pZDo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YnV0dG9uU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6bWluaW11bVRodW1iTGVuZ3RoKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9p
ZC5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50
QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6
cGFpbnRUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGlu
dXg6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaDoKKyAgICAgICAgKFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50R2l2ZW5U
aWNrbWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3Np
Y1RoZW1lU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bjo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtV2luOjpidXR0b25TaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmg6CisgICAgICAgIChTY3JvbGxiYXJUaGVtZUNocm9t
aXVtV2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVFZmw6OnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lRWZsOjp1bnJlZ2lzdGVyU2Nyb2xsYmFy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaDoKKyAgICAgICAg
KFNjcm9sbGJhclRoZW1lRWZsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhl
bWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUd0azo6cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVHdGs6OnVucmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRoaWNrbmVzcyk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lR3RrOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lR3RrOjp0aHVtYlJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVHdGs6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpzaG91
bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpi
dXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjptaW5pbXVt
VGh1bWJMZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5o
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6Omhhc0J1dHRvbnMpOgorICAg
ICAgICAoU2Nyb2xsYmFyVGhlbWVHdGspOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxi
YXJUaGVtZUd0azIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0V2lkZ2V0Rm9yU2Nyb2xsYmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxi
YXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWlu
dFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRv
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRCdXR0b24pOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oOgorICAgICAgICAoU2Nyb2xs
YmFyVGhlbWVNYWMpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVN
YWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
TWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1dHRvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lTWFjOjpzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlRW5hYmxlZFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVNb2NrOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZU1vY2s6OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xs
YmFyVGhlbWVNb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6Omhh
c0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpoYXNUaHVt
Yik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OmJhY2tCdXR0b25SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6Zm9yd2FyZEJ1dHRvblJl
Y3QpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVNb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9TY3JvbGxiYXJUaGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlT3B0aW9uU2xp
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVRdDo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZVF0OjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lUXQ6OnRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lUXQ6OnRyYWNrUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVRdDo6dHJhY2tMZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1l
UXQuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lUXQpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZVNhZmFyaTo6aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZh
cmk6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2Fm
YXJpOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2Fm
YXJpOjptaW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVTYWZhcmk6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVTYWZhcmk6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUaHVtYik6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L1Njcm9sbGJhclRoZW1lU2FmYXJpLmg6CisgICAgICAgIChTY3JvbGxiYXJUaGVtZVNhZmFyaSk6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZVdpbjo6YmFja0J1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVXaW46OmZvcndhcmRCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lV2luOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVXaW46OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJD
b3JlOjpwYWludEdyaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46
OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5o
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46Omhhc0J1dHRvbnMpOgorICAg
ICAgICAoU2Nyb2xsYmFyVGhlbWVXaW4pOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJh
clRoZW1lV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzVGh1
bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6bWluaW11bVRodW1iTGVu
Z3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV3g6OmJ1dHRvblNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6c3BsaXRUcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4OjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVXeDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJh
clRoZW1lV3guaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lV3gpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzQnV0dG9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhci5oOgorICAgICAgICAoV2ViQ29yZTo6dG9SZW5kZXJTY3JvbGxiYXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzQnV0dG9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzVGh1bWIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1pbmltdW1UaHVtYkxlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YmFja0J1dHRvblJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmZvcndhcmRCdXR0b25SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVj
dFRvVHJhY2tQaWVjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJUaGVtZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xs
YmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNj
cm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFJlbmRlclNjcm9s
bGJhclRoZW1lKToKKwogMjAxMi0wMi0yMiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtleHBlcmltZW50YWxdIGFkZCBhIG1v
ZGUgdG8gZGlzcGxheSB0aW1lbGluZSBldmVudHMgYWxpZ25lZCBieSB0aGUgc3RhcnQgdGltZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDU4Y2FhYTFjOGNmNjBmYTYwYjA2YmMxZTE0M2JiNWVhOTZhYmEy
NzEuLjNhZDE4NWJiMWFiODViMzFjYzJkNWQ3NmEzYzkwYjU3MzEyZTE4OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTI5Miw2ICsyOTIsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGJhci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9T
Y3JvbGxiYXJUaGVtZUNsaWVudC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TZWFyY2hQb3B1
cE1lbnUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXggM2I5YzE5NWNmZjU1MzkxNjU1NjIwM2UyZjJjYzRm
ZTVkOGY5YTUxZS4uZTM5MjU0YzYxZmIyOWMxMTJlMWU5ZDY4MjBkZThhNjI5ZjRmNDFmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC0xMTIsNiArMTEyLDc5IEBAIFNj
cm9sbGJhcjo6flNjcm9sbGJhcigpCiAgICAgbV90aGVtZS0+dW5yZWdpc3RlclNjcm9sbGJhcih0
aGlzKTsKIH0KIAordm9pZCBTY3JvbGxiYXI6OnNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiBy
ZWN0KQoreworICAgIC8vIEdldCBvdXIgd2luZG93IHJlc2l6ZXIgcmVjdCBhbmQgc2VlIGlmIHdl
IG92ZXJsYXAuICBBZGp1c3QgdG8gYXZvaWQgdGhlIG92ZXJsYXAKKyAgICAvLyBpZiBuZWNlc3Nh
cnkuCisgICAgSW50UmVjdCBhZGp1c3RlZFJlY3QocmVjdCk7CisgICAgYm9vbCBvdmVybGFwc1Jl
c2l6ZXIgPSBmYWxzZTsKKyAgICBTY3JvbGxWaWV3KiB2aWV3ID0gcGFyZW50KCk7CisgICAgaWYg
KHZpZXcgJiYgIXJlY3QuaXNFbXB0eSgpICYmICF2aWV3LT53aW5kb3dSZXNpemVyUmVjdCgpLmlz
RW1wdHkoKSkgeworICAgICAgICBJbnRSZWN0IHJlc2l6ZXJSZWN0ID0gdmlldy0+Y29udmVydEZy
b21Db250YWluaW5nV2luZG93KHZpZXctPndpbmRvd1Jlc2l6ZXJSZWN0KCkpOworICAgICAgICBp
ZiAocmVjdC5pbnRlcnNlY3RzKHJlc2l6ZXJSZWN0KSkgeworICAgICAgICAgICAgaWYgKG9yaWVu
dGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAgICAgICAgICAgICAgIGludCBv
dmVybGFwID0gcmVjdC5tYXhYKCkgLSByZXNpemVyUmVjdC54KCk7CisgICAgICAgICAgICAgICAg
aWYgKG92ZXJsYXAgPiAwICYmIHJlc2l6ZXJSZWN0Lm1heFgoKSA+PSByZWN0Lm1heFgoKSkgewor
ICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFJlY3Quc2V0V2lkdGgocmVjdC53aWR0aCgpIC0g
b3ZlcmxhcCk7CisgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBzUmVzaXplciA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBp
bnQgb3ZlcmxhcCA9IHJlY3QubWF4WSgpIC0gcmVzaXplclJlY3QueSgpOworICAgICAgICAgICAg
ICAgIGlmIChvdmVybGFwID4gMCAmJiByZXNpemVyUmVjdC5tYXhZKCkgPj0gcmVjdC5tYXhZKCkp
IHsKKyAgICAgICAgICAgICAgICAgICAgYWRqdXN0ZWRSZWN0LnNldEhlaWdodChyZWN0LmhlaWdo
dCgpIC0gb3ZlcmxhcCk7CisgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBzUmVzaXplciA9IHRy
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIGlmIChvdmVybGFwc1Jlc2l6ZXIgIT0gbV9vdmVybGFwc1Jlc2l6ZXIpIHsKKyAgICAgICAg
bV9vdmVybGFwc1Jlc2l6ZXIgPSBvdmVybGFwc1Jlc2l6ZXI7CisgICAgICAgIGlmICh2aWV3KQor
ICAgICAgICAgICAgdmlldy0+YWRqdXN0U2Nyb2xsYmFyc0F2b2lkaW5nUmVzaXplckNvdW50KG1f
b3ZlcmxhcHNSZXNpemVyID8gMSA6IC0xKTsKKyAgICB9CisKKyAgICBXaWRnZXQ6OnNldEZyYW1l
UmVjdChhZGp1c3RlZFJlY3QpOworfQorCit2b2lkIFNjcm9sbGJhcjo6aW52YWxpZGF0ZVJlY3Qo
Y29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoc3VwcHJlc3NJbnZhbGlkYXRpb24oKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIG1f
c2Nyb2xsYWJsZUFyZWEtPmludmFsaWRhdGVTY3JvbGxiYXIodGhpcywgcmVjdCk7Cit9CisKK1Nj
cm9sbGJhck92ZXJsYXlTdHlsZSBTY3JvbGxiYXI6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEgPyBTY3JvbGxiYXJPdmVybGF5U3R5
bGVEZWZhdWx0IDogbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7Cit9
CisKK3ZvaWQgU2Nyb2xsYmFyOjpnZXRUaWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JiB0aWNrbWFy
a3MpIGNvbnN0Cit7CisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIG1fc2Nyb2xs
YWJsZUFyZWEtPmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOworfQorCitib29sIFNjcm9sbGJhcjo6
aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJs
ZUFyZWEgJiYgbV9zY3JvbGxhYmxlQXJlYS0+aXNBY3RpdmUoKTsKK30KKworYm9vbCBTY3JvbGxi
YXI6OmlzU2Nyb2xsVmlld1Njcm9sbGJhcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhcmVudCgp
ICYmIHBhcmVudCgpLT5pc0ZyYW1lVmlldygpICYmIHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHBh
cmVudCgpKS0+aXNTY3JvbGxWaWV3U2Nyb2xsYmFyKHRoaXMpOworfQorCit2b2lkIFNjcm9sbGJh
cjo6c2V0RW5hYmxlZChib29sIGUpCit7IAorICAgIGlmIChtX2VuYWJsZWQgPT0gZSkKKyAgICAg
ICAgcmV0dXJuOworICAgIG1fZW5hYmxlZCA9IGU7CisgICAgdGhlbWUoKS0+dXBkYXRlRW5hYmxl
ZFN0YXRlKHRoaXMpOworICAgIGludmFsaWRhdGUoKTsKK30KKwogdm9pZCBTY3JvbGxiYXI6Om9m
ZnNldERpZENoYW5nZSgpCiB7CiAgICAgQVNTRVJUKG1fc2Nyb2xsYWJsZUFyZWEpOwpAQCAtNDMy
LDQwICs1MDUsNiBAQCBib29sIFNjcm9sbGJhcjo6bW91c2VEb3duKGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZ0KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNjcm9sbGJhcjo6c2V0
RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgLy8gR2V0IG91ciB3aW5kb3cg
cmVzaXplciByZWN0IGFuZCBzZWUgaWYgd2Ugb3ZlcmxhcC4gIEFkanVzdCB0byBhdm9pZCB0aGUg
b3ZlcmxhcAotICAgIC8vIGlmIG5lY2Vzc2FyeS4KLSAgICBJbnRSZWN0IGFkanVzdGVkUmVjdChy
ZWN0KTsKLSAgICBib29sIG92ZXJsYXBzUmVzaXplciA9IGZhbHNlOwotICAgIFNjcm9sbFZpZXcq
IHZpZXcgPSBwYXJlbnQoKTsKLSAgICBpZiAodmlldyAmJiAhcmVjdC5pc0VtcHR5KCkgJiYgIXZp
ZXctPndpbmRvd1Jlc2l6ZXJSZWN0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEludFJlY3QgcmVz
aXplclJlY3QgPSB2aWV3LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3codmlldy0+d2luZG93
UmVzaXplclJlY3QoKSk7Ci0gICAgICAgIGlmIChyZWN0LmludGVyc2VjdHMocmVzaXplclJlY3Qp
KSB7Ci0gICAgICAgICAgICBpZiAob3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
KSB7Ci0gICAgICAgICAgICAgICAgaW50IG92ZXJsYXAgPSByZWN0Lm1heFgoKSAtIHJlc2l6ZXJS
ZWN0LngoKTsKLSAgICAgICAgICAgICAgICBpZiAob3ZlcmxhcCA+IDAgJiYgcmVzaXplclJlY3Qu
bWF4WCgpID49IHJlY3QubWF4WCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkanVzdGVkUmVj
dC5zZXRXaWR0aChyZWN0LndpZHRoKCkgLSBvdmVybGFwKTsKLSAgICAgICAgICAgICAgICAgICAg
b3ZlcmxhcHNSZXNpemVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgIGludCBvdmVybGFwID0gcmVjdC5tYXhZKCkgLSByZXNp
emVyUmVjdC55KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG92ZXJsYXAgPiAwICYmIHJlc2l6ZXJS
ZWN0Lm1heFkoKSA+PSByZWN0Lm1heFkoKSkgewotICAgICAgICAgICAgICAgICAgICBhZGp1c3Rl
ZFJlY3Quc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLSBvdmVybGFwKTsKLSAgICAgICAgICAgICAg
ICAgICAgb3ZlcmxhcHNSZXNpemVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKG92ZXJsYXBzUmVzaXplciAhPSBtX292
ZXJsYXBzUmVzaXplcikgewotICAgICAgICBtX292ZXJsYXBzUmVzaXplciA9IG92ZXJsYXBzUmVz
aXplcjsKLSAgICAgICAgaWYgKHZpZXcpCi0gICAgICAgICAgICB2aWV3LT5hZGp1c3RTY3JvbGxi
YXJzQXZvaWRpbmdSZXNpemVyQ291bnQobV9vdmVybGFwc1Jlc2l6ZXIgPyAxIDogLTEpOwotICAg
IH0KLQotICAgIFdpZGdldDo6c2V0RnJhbWVSZWN0KGFkanVzdGVkUmVjdCk7Ci19Ci0KIHZvaWQg
U2Nyb2xsYmFyOjpzZXRQYXJlbnQoU2Nyb2xsVmlldyogcGFyZW50VmlldykKIHsKICAgICBpZiAo
IXBhcmVudFZpZXcgJiYgbV9vdmVybGFwc1Jlc2l6ZXIgJiYgcGFyZW50KCkpCkBAIC00NzMsMTUg
KzUxMiw2IEBAIHZvaWQgU2Nyb2xsYmFyOjpzZXRQYXJlbnQoU2Nyb2xsVmlldyogcGFyZW50Vmll
dykKICAgICBXaWRnZXQ6OnNldFBhcmVudChwYXJlbnRWaWV3KTsKIH0KIAotdm9pZCBTY3JvbGxi
YXI6OnNldEVuYWJsZWQoYm9vbCBlKQoteyAKLSAgICBpZiAobV9lbmFibGVkID09IGUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBtX2VuYWJsZWQgPSBlOwotICAgIHRoZW1lKCktPnVwZGF0ZUVuYWJs
ZWRTdGF0ZSh0aGlzKTsKLSAgICBpbnZhbGlkYXRlKCk7Ci19Ci0KIGJvb2wgU2Nyb2xsYmFyOjpp
c092ZXJsYXlTY3JvbGxiYXIoKSBjb25zdAogewogICAgIHJldHVybiBtX3RoZW1lLT51c2VzT3Zl
cmxheVNjcm9sbGJhcnMoKTsKQEAgLTUxMSwxNSArNTQxLDYgQEAgQVhPYmplY3RDYWNoZSogU2Ny
b2xsYmFyOjpheE9iamVjdENhY2hlKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQtPmF4T2Jq
ZWN0Q2FjaGUoKTsKIH0KIAotdm9pZCBTY3JvbGxiYXI6OmludmFsaWRhdGVSZWN0KGNvbnN0IElu
dFJlY3QmIHJlY3QpCi17Ci0gICAgaWYgKHN1cHByZXNzSW52YWxpZGF0aW9uKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChtX3Njcm9sbGFibGVBcmVhKQotICAgICAgICBtX3Njcm9sbGFi
bGVBcmVhLT5pbnZhbGlkYXRlU2Nyb2xsYmFyKHRoaXMsIHJlY3QpOwotfQotCiBJbnRSZWN0IFNj
cm9sbGJhcjo6Y29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYgbG9jYWxSZWN0
KSBjb25zdAogewogICAgIGlmIChtX3Njcm9sbGFibGVBcmVhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxiYXIuaAppbmRleCAzOWFjMjU0NjVkMTQ1NWE1OTkyY2QyNWMyMjI4ZGQyYjY1MzRhNjNk
Li45OWZkODQ2MWI3YWE3OTk5OTVhMWYzMjliZDMwMGU2NWY2M2YwYzg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXIuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBTY3JvbGxiYXJf
aAogI2RlZmluZSBTY3JvbGxiYXJfaAogCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDbGllbnQu
aCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVk
ZSAiV2lkZ2V0LmgiCkBAIC00MCwxMyArNDEsNjAgQEAgY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50
OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBTY3JvbGxiYXJUaGVtZTsKIAotY2xhc3Mg
U2Nyb2xsYmFyIDogcHVibGljIFdpZGdldCB7CitjbGFzcyBTY3JvbGxiYXIgOiBwdWJsaWMgV2lk
Z2V0LAorICAgICAgICAgICAgICAgICAgcHVibGljIFNjcm9sbGJhclRoZW1lQ2xpZW50IHsKKwog
cHVibGljOgogICAgIC8vIE11c3QgYmUgaW1wbGVtZW50ZWQgYnkgcGxhdGZvcm1zIHRoYXQgY2Fu
J3Qgc2ltcGx5IHVzZSB0aGUgU2Nyb2xsYmFyIGJhc2UgY2xhc3MuICBSaWdodCBub3cgdGhlIG9u
bHkgcGxhdGZvcm0gdGhhdCBpcyBub3QgdXNpbmcgdGhlIGJhc2UgY2xhc3MgaXMgR1RLLgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gY3JlYXRlTmF0aXZlU2Nyb2xsYmFyKFNjcm9s
bGFibGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbGJhckNv
bnRyb2xTaXplIHNpemUpOwogCiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyKCk7CiAKKyAgICAvLyBT
Y3JvbGxiYXJUaGVtZUNsaWVudCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIGludCB4KCkg
Y29uc3QgeyByZXR1cm4gV2lkZ2V0Ojp4KCk7IH0KKyAgICB2aXJ0dWFsIGludCB5KCkgY29uc3Qg
eyByZXR1cm4gV2lkZ2V0Ojp5KCk7IH0KKyAgICB2aXJ0dWFsIGludCB3aWR0aCgpIGNvbnN0IHsg
cmV0dXJuIFdpZGdldDo6d2lkdGgoKTsgfQorICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIFdpZGdldDo6aGVpZ2h0KCk7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6c2l6ZSgpOyB9CisgICAgdmlydHVhbCBJbnRQb2ludCBs
b2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6bG9jYXRpb24oKTsgfQorCisgICAgdmly
dHVhbCBTY3JvbGxWaWV3KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OnBhcmVudCgp
OyB9CisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiByb290KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0
Ojpyb290KCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVj
dCYpOworICAgIHZpcnR1YWwgSW50UmVjdCBmcmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBXaWRn
ZXQ6OmZyYW1lUmVjdCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIHsgV2lk
Z2V0OjppbnZhbGlkYXRlKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29u
c3QgSW50UmVjdCYpOworCisgICAgdmlydHVhbCBTY3JvbGxiYXJPdmVybGF5U3R5bGUgc2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGdldFRpY2ttYXJrcyhW
ZWN0b3I8SW50UmVjdD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxhYmxlQXJl
YUFjdGl2ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbFZpZXdTY3JvbGxiYXIo
KSBjb25zdDsKKworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nV2lu
ZG93KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkgeyByZXR1cm4gV2lkZ2V0Ojpjb252ZXJ0
RnJvbUNvbnRhaW5pbmdXaW5kb3cod2luZG93UG9pbnQpOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wg
aXNDdXN0b21TY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwg
U2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVu
dGF0aW9uOyB9CisKKyAgICB2aXJ0dWFsIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGxyb3Vu
ZGYobV9jdXJyZW50UG9zKTsgfQorICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFBvcygpIGNvbnN0
IHsgcmV0dXJuIG1fY3VycmVudFBvczsgfQorICAgIHZpcnR1YWwgaW50IHZpc2libGVTaXplKCkg
Y29uc3QgeyByZXR1cm4gbV92aXNpYmxlU2l6ZTsgfQorICAgIHZpcnR1YWwgaW50IHRvdGFsU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplOyB9CisgICAgdmlydHVhbCBpbnQgbWF4aW11
bSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplIC0gbV92aXNpYmxlU2l6ZTsgfQorICAgIHZp
cnR1YWwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUoKSBjb25zdCB7IHJldHVybiBt
X2NvbnRyb2xTaXplOyB9CisKKyAgICB2aXJ0dWFsIGludCBsaW5lU3RlcCgpIGNvbnN0IHsgcmV0
dXJuIG1fbGluZVN0ZXA7IH0KKyAgICB2aXJ0dWFsIGludCBwYWdlU3RlcCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZVN0ZXA7IH0KKworICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBwcmVzc2VkUGFy
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc3NlZFBhcnQ7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJh
clBhcnQgaG92ZXJlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX2hvdmVyZWRQYXJ0OyB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc3R5bGVDaGFuZ2VkKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgZW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRF
bmFibGVkKGJvb2wgZSk7CisKICAgICAvLyBDYWxsZWQgYnkgdGhlIFNjcm9sbGFibGVBcmVhIHdo
ZW4gdGhlIHNjcm9sbCBvZmZzZXQgY2hhbmdlcy4KICAgICB2b2lkIG9mZnNldERpZENoYW5nZSgp
OwogCkBAIC01NywzNCArMTA1LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9t
U2Nyb2xsYWJsZUFyZWEoKSB7IG1fc2Nyb2xsYWJsZUFyZWEgPSAwOyB9CiAgICAgU2Nyb2xsYWJs
ZUFyZWEqIHNjcm9sbGFibGVBcmVhKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYTsg
fQogCi0gICAgdmlydHVhbCBib29sIGlzQ3VzdG9tU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KLSAgICBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fb3JpZW50YXRpb247IH0KLQotICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJu
IGxyb3VuZGYobV9jdXJyZW50UG9zKTsgfQotICAgIGZsb2F0IGN1cnJlbnRQb3MoKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRQb3M7IH0KICAgICBpbnQgcHJlc3NlZFBvcygpIGNvbnN0IHsgcmV0
dXJuIG1fcHJlc3NlZFBvczsgfQotICAgIGludCB2aXNpYmxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdmlzaWJsZVNpemU7IH0KLSAgICBpbnQgdG90YWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV90
b3RhbFNpemU7IH0KLSAgICBpbnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXpl
IC0gbV92aXNpYmxlU2l6ZTsgfSAgICAgICAgCi0gICAgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29u
dHJvbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xTaXplOyB9CiAKLSAgICBpbnQgbGlu
ZVN0ZXAoKSBjb25zdCB7IHJldHVybiBtX2xpbmVTdGVwOyB9Ci0gICAgaW50IHBhZ2VTdGVwKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlU3RlcDsgfQogICAgIGZsb2F0IHBpeGVsU3RlcCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGl4ZWxTdGVwOyB9CiAKLSAgICBTY3JvbGxiYXJQYXJ0IHByZXNzZWRQYXJ0
KCkgY29uc3QgeyByZXR1cm4gbV9wcmVzc2VkUGFydDsgfQotICAgIFNjcm9sbGJhclBhcnQgaG92
ZXJlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX2hvdmVyZWRQYXJ0OyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldEhvdmVyZWRQYXJ0KFNjcm9sbGJhclBhcnQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQ
cmVzc2VkUGFydChTY3JvbGxiYXJQYXJ0KTsKIAogICAgIHZvaWQgc2V0U3RlcHMoaW50IGxpbmVT
dGVwLCBpbnQgcGFnZVN0ZXAsIGludCBwaXhlbHNQZXJTdGVwID0gMSk7CiAgICAgdm9pZCBzZXRQ
cm9wb3J0aW9uKGludCB2aXNpYmxlU2l6ZSwgaW50IHRvdGFsU2l6ZSk7CiAgICAgdm9pZCBzZXRQ
cmVzc2VkUG9zKGludCBwKSB7IG1fcHJlc3NlZFBvcyA9IHA7IH0KLSAgICAKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7
CiAKLSAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sIGUpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKIAogICAgIHZpcnR1
YWwgYm9vbCBpc092ZXJsYXlTY3JvbGxiYXIoKSBjb25zdDsKICAgICBib29sIHNob3VsZFBhcnRp
Y2lwYXRlSW5IaXRUZXN0aW5nKCk7CkBAIC05Nyw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBtb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIHZvaWQgbW91c2VF
bnRlcmVkKCk7CiAgICAgYm9vbCBtb3VzZUV4aXRlZCgpOwotICAgIAorCiAgICAgLy8gVXNlZCBi
eSBzb21lIHBsYXRmb3JtIHNjcm9sbGJhcnMgdG8ga25vdyB3aGVuIHRoZXkndmUgYmVlbiByZWxl
YXNlZCBmcm9tIGNhcHR1cmUuCiAgICAgYm9vbCBtb3VzZVVwKGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYpOwogCkBAIC0xMDYsMTggKzEzOCwxMyBAQCBwdWJsaWM6CiAgICAgU2Nyb2xsYmFyVGhl
bWUqIHRoZW1lKCkgY29uc3QgeyByZXR1cm4gbV90aGVtZTsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHNldFBhcmVudChTY3JvbGxWaWV3Kik7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChj
b25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3Qg
SW50UmVjdCYpOwotICAgIAogICAgIGJvb2wgc3VwcHJlc3NJbnZhbGlkYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3N1cHByZXNzSW52YWxpZGF0aW9uOyB9CiAgICAgdm9pZCBzZXRTdXBwcmVzc0lu
dmFsaWRhdGlvbihib29sIHMpIHsgbV9zdXBwcmVzc0ludmFsaWRhdGlvbiA9IHM7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBzdHlsZUNoYW5nZWQoKSB7IH0KLQogICAgIHZpcnR1YWwgSW50UmVjdCBj
b252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAgICAgdmlydHVh
bCBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0
OwotICAgIAorCiAgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhj
b25zdCBJbnRQb2ludCYpIGNvbnN0OwogICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21D
b250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCkBAIC0xNjAsNyArMTg3LDcg
QEAgcHJvdGVjdGVkOgogCiAgICAgVGltZXI8U2Nyb2xsYmFyPiBtX3Njcm9sbFRpbWVyOwogICAg
IGJvb2wgbV9vdmVybGFwc1Jlc2l6ZXI7Ci0gICAgCisKICAgICBib29sIG1fc3VwcHJlc3NJbnZh
bGlkYXRpb247CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWUuaAppbmRleCAyYTgzZDUzODVlYWJiY2FjZmY4YmU1NjM0OWI0ZDE5ZTMyYmI2ZmNjLi4xN2Vm
NjM4ZTYwM2I0MjE2NTJhNGQwYTliMTFmOTA3NDdkYTc3MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwotY2xhc3MgU2Nyb2xsYmFyOworY2xh
c3MgU2Nyb2xsYmFyVGhlbWVDbGllbnQ7CiBjbGFzcyBTY3JvbGxWaWV3OwogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCkBAIC00Niwx
MCArNDYsMTAgQEAgcHVibGljOgogICAgIFNjcm9sbGJhclRoZW1lKCkgeyB9CiAgICAgdmlydHVh
bCB+U2Nyb2xsYmFyVGhlbWUoKSB7fTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVk
U3RhdGUoU2Nyb2xsYmFyKikgeyB9OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVkU3Rh
dGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IH07CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQo
U2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgLypkYW1hZ2VSZWN0
Ki8pIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3Qo
U2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gTm9QYXJ0OyB9
CisgICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3ND
b250ZXh0KiwgY29uc3QgSW50UmVjdCYgLypkYW1hZ2VSZWN0Ki8pIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBOb1BhcnQ7IH0KICAgICAKICAg
ICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBS
ZWd1bGFyU2Nyb2xsYmFyKSB7IHJldHVybiAwOyB9CiAKQEAgLTU3LDEzICs1NywxMyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJP
dmVybGF5U3R5bGUoU2Nyb2xsYmFyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9s
bGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgfQogCiAgICAgdmlydHVh
bCB2b2lkIHRoZW1lQ2hhbmdlZCgpIHt9CiAgICAgCiAgICAgdmlydHVhbCBib29sIGludmFsaWRh
dGVPbk1vdXNlRW50ZXJFeGl0KCkgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgaW52YWxp
ZGF0ZVBhcnRzKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJDb250cm9sUGFydE1hc2sg
bWFzaykKKyAgICB2b2lkIGludmFsaWRhdGVQYXJ0cyhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBTY3JvbGxiYXJDb250cm9sUGFydE1hc2sgbWFzaykKICAgICB7CiAgICAgICAgIGlm
IChtYXNrICYgQmFja0J1dHRvblN0YXJ0UGFydCkKICAgICAgICAgICAgIGludmFsaWRhdGVQYXJ0
KHNjcm9sbGJhciwgQmFja0J1dHRvblN0YXJ0UGFydCk7CkBAIC04MSw3ICs4MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGludmFsaWRhdGVQYXJ0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRvbkVu
ZFBhcnQpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxi
YXIqLCBTY3JvbGxiYXJQYXJ0KSB7fQorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIHt9CiAKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIo
Y29udGV4dCwgY29ybmVyUmVjdCk7IH0KICAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3Jv
bGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJS
ZWN0KSB7IGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JT
cGFjZURldmljZVJHQik7IH0KQEAgLTkzLDIxICs5MywyMSBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldFVwQ29udGVudFNoYWRvd0xheWVyKEdyYXBoaWNzTGF5ZXIqKSB7IH0KICNlbmRp
ZgogCi0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJh
Z0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNj
cm9sbGJhciopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0aHVtYiByZWxh
dGl2ZSB0byB0aGUgdHJhY2suCi0gICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFy
KikgeyByZXR1cm4gMDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0aHVtYiBhbG9uZyB0aGUgYXhp
cyBvZiB0aGUgc2Nyb2xsYmFyLgotICAgIHZpcnR1YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xs
YmFyKikgeyByZXR1cm4gMDsgfSAvLyBUaGUgcG9zaXRpb24gb2YgdGhlIHRyYWNrIHJlbGF0aXZl
IHRvIHRoZSBzY3JvbGxiYXIuCi0gICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFy
KikgeyByZXR1cm4gMDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0cmFjayBhbG9uZyB0aGUgYXhp
cyBvZiB0aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4o
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVy
biBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZU
aHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXJU
aGVtZUNsaWVudCopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0aHVtYiBy
ZWxhdGl2ZSB0byB0aGUgdHJhY2suCisgICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiAwOyB9IC8vIFRoZSBsZW5ndGggb2YgdGhlIHRodW1i
IGFsb25nIHRoZSBheGlzIG9mIHRoZSBzY3JvbGxiYXIuCisgICAgdmlydHVhbCBpbnQgdHJhY2tQ
b3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0
aW9uIG9mIHRoZSB0cmFjayByZWxhdGl2ZSB0byB0aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1YWwg
aW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4gMDsgfSAvLyBU
aGUgbGVuZ3RoIG9mIHRoZSB0cmFjayBhbG9uZyB0aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLgog
CiAgICAgdmlydHVhbCBpbnQgbWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpIHsgcmV0dXJuIHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7IH0KIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRp
YWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMjU7IH0KICAgICB2aXJ0dWFsIGRv
dWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMDU7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKSB7fQotICAgIHZpcnR1YWwgdm9p
ZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciopIHt9CisgICAgdmlydHVhbCB2b2lkIHJl
Z2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikge30KKyAgICB2aXJ0dWFsIHZv
aWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHt9CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNNb2NrVGhlbWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42Y2RhNDJmNTA1MmUzNGU0YmQ2ZDFhYTdkODM2ZWMzNjc1OTRlZjI4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaApAQCAt
MCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JvbGxiYXJUaGVtZUNsaWVudF9oCisjZGVm
aW5lIFNjcm9sbGJhclRoZW1lQ2xpZW50X2gKKworI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5j
bHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJTY3JvbGxU
eXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbFZpZXc7CisKK2NsYXNz
IFNjcm9sbGJhclRoZW1lQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TY3JvbGxiYXJU
aGVtZUNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCBpbnQgeCgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGludCB5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHdpZHRoKCkgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIElu
dFNpemUgc2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFBvaW50IGxvY2F0aW9uKCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiBwYXJlbnQoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiByb290KCkgY29uc3QgPSAwOworCisgICAgdmlydHVh
bCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgSW50
UmVjdCBmcmFtZVJlY3QoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0
ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYp
ID0gMDsKKworICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHNjcm9sbGJhck92ZXJs
YXlTdHlsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3Rv
cjxJbnRSZWN0PiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxhYmxlQXJl
YUFjdGl2ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxWaWV3U2Nyb2xs
YmFyKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRh
aW5pbmdXaW5kb3coY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSA9IDA7CisKKyAgICB2aXJ0
dWFsIGJvb2wgaXNDdXN0b21TY3JvbGxiYXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTY3Jv
bGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwg
aW50IHZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFBvcygpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIGludCB0b3RhbFNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgbWF4aW11
bSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xT
aXplKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBpbnQgbGluZVN0ZXAoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBpbnQgcGFnZVN0ZXAoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFNj
cm9sbGJhclBhcnQgcHJlc3NlZFBhcnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTY3JvbGxi
YXJQYXJ0IGhvdmVyZWRQYXJ0KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHN0eWxl
Q2hhbmdlZCgpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpID0gMDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjb2xsYmFyVGhlbWVDbGllbnRfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCmluZGV4
IGZjYmY0ODRjMDk1MWI1YjBhZmI5YmM3YjVmYmM1NmNmZWM5YTk4NWUuLmUyOTY2OWY4ZDVjOWY3
NzNkOTdlYmZiM2NmZDQ2YTI0MWY3YWExOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKQEAgLTMzLDE1ICszMywxNCBAQAog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKLSNpbmNsdWRlICJTY3JvbGxiYXIuaCIKLSNpbmNsdWRl
ICJTY3JvbGxhYmxlQXJlYS5oIgorI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2xpZW50LmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1ib29sIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludChTY3JvbGxi
YXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IElu
dFJlY3QmIGRhbWFnZVJlY3QpCitib29sIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludChT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsKICAgICAvLyBDcmVhdGUgdGhl
IFNjcm9sbGJhckNvbnRyb2xQYXJ0TWFzayBiYXNlZCBvbiB0aGUgZGFtYWdlUmVjdAogICAgIFNj
cm9sbGJhckNvbnRyb2xQYXJ0TWFzayBzY3JvbGxNYXNrID0gTm9QYXJ0OwpAQCAtMTE2LDcgKzEx
NSw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVNj
cm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OmhpdFRlc3QoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorU2Nyb2xsYmFyUGFydCBT
Y3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aGl0VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICBTY3JvbGxiYXJQ
YXJ0IHJlc3VsdCA9IE5vUGFydDsKICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQpAQCAt
MTU1LDcgKzE1NCw3IEBAIFNjcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6Omhp
dFRlc3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aW52YWxpZGF0ZVBhcnQoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGU6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAgICBpZiAocGFydCA9PSBOb1BhcnQpCiAgICAg
ICAgIHJldHVybjsKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjppbnZhbGlkYXRlUGFydChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydAog
ICAgIHNjcm9sbGJhci0+aW52YWxpZGF0ZVJlY3QocmVzdWx0KTsKIH0KIAotdm9pZCBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCwgSW50UmVjdCYgYmVmb3JlVGh1bWJSZWN0
LCBJbnRSZWN0JiB0aHVtYlJlY3QsIEludFJlY3QmIGFmdGVyVGh1bWJSZWN0KQordm9pZCBTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0LCBJbnRSZWN0JiBi
ZWZvcmVUaHVtYlJlY3QsIEludFJlY3QmIHRodW1iUmVjdCwgSW50UmVjdCYgYWZ0ZXJUaHVtYlJl
Y3QpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiB3b24ndCBldmVuIGdldCBjYWxsZWQgdW5sZXNz
IHdlJ3JlIGJpZyBlbm91Z2ggdG8gaGF2ZSBzb21lIGNvbWJpbmF0aW9uIG9mIHRoZXNlIHRocmVl
IHJlY3RzIHdoZXJlIGF0IGxlYXN0CiAgICAgLy8gb25lIG9mIHRoZW0gaXMgbm9uLWVtcHR5LgpA
QCAtMjE1LDcgKzIxNCw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnNwbGl0VHJh
Y2soU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuCiAKIC8vIFJldHVybnMg
dGhlIHNpemUgcmVwcmVzZW50ZWQgYnkgdHJhY2sgdGFraW5nIGludG8gYWNjb3VudCBzY3JvbGxp
bmcgcGFzdAogLy8gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuCi1zdGF0aWMgZmxvYXQgdXNlZFRv
dGFsU2l6ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3N0YXRpYyBmbG9hdCB1c2VkVG90YWxTaXpl
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgZmxvYXQgb3ZlcmhhbmdB
dFN0YXJ0ID0gLXNjcm9sbGJhci0+Y3VycmVudFBvcygpOwogICAgIGZsb2F0IG92ZXJoYW5nQXRF
bmQgPSBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSArIHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKSAt
IHNjcm9sbGJhci0+dG90YWxTaXplKCk7CkBAIC0yMjMsNyArMjIyLDcgQEAgc3RhdGljIGZsb2F0
IHVzZWRUb3RhbFNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIHNjcm9sbGJh
ci0+dG90YWxTaXplKCkgKyBvdmVyaGFuZzsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjp0aHVtYlBvc2l0aW9uKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlOjp0aHVtYlBvc2l0aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+ZW5hYmxlZCgpKSB7CiAgICAgICAgIGZsb2F0IHBv
cyA9IG1heCgwLjBmLCBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSkgKiAodHJhY2tMZW5ndGgoc2Ny
b2xsYmFyKSAtIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikpIC8gKHVzZWRUb3RhbFNpemUoc2Nyb2xs
YmFyKSAtIHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKSk7CkBAIC0yMzIsNyArMjMxLDcgQEAgaW50
IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYlBvc2l0aW9uKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQogICAgIHJldHVybiAwOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRo
dW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjp0aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAg
IGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjQ2LDE4
ICsyNDUsMTggQEAgaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYkxlbmd0aChTY3Jv
bGxiYXIqIHNjcm9sbGJhcikKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCi1pbnQgU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGU6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikK
K2ludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNjcm9sbGJhclRoaWNrbmVz
cyhzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OnRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGU6OnRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhcikKIHsKICAgICBJbnRSZWN0IGNvbnN0cmFpbmVkVHJhY2tSZWN0ID0gY29uc3RyYWluVHJh
Y2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxiYXIsIHRyYWNrUmVjdChzY3JvbGxiYXIpKTsKICAg
ICByZXR1cm4gKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
KSA/IGNvbnN0cmFpbmVkVHJhY2tSZWN0LngoKSAtIHNjcm9sbGJhci0+eCgpIDogY29uc3RyYWlu
ZWRUcmFja1JlY3QueSgpIC0gc2Nyb2xsYmFyLT55KCk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZTo6dHJhY2tMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIpCiB7CiAgICAgSW50UmVjdCBjb25zdHJhaW5lZFRyYWNrUmVjdCA9IGNvbnN0cmFpblRy
YWNrUmVjdFRvVHJhY2tQaWVjZXMoc2Nyb2xsYmFyLCB0cmFja1JlY3Qoc2Nyb2xsYmFyKSk7CiAg
ICAgcmV0dXJuIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJh
cikgPyBjb25zdHJhaW5lZFRyYWNrUmVjdC53aWR0aCgpIDogY29uc3RyYWluZWRUcmFja1JlY3Qu
aGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGUuaAppbmRleCAxMWIzYmQ0NzAwMTg3ZmYxODJiMDQ1YjQ1MmNkYzI0ZGEzM2U3NTkw
Li44ZWRkNGJiYWM5ODA0MGQwM2ZjNGIzMGVlYjIxYWE5OTVlM2QyZWUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgKQEAgLTMyLDQw
ICszMiw0MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlIDogcHVibGljIFNjcm9sbGJhclRoZW1lIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIGJv
b2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJl
Y3QpOwogCi0gICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyKiwgY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRl
c3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBTY3JvbGxiYXJQYXJ0KTsKIAotICAgIHZpcnR1YWwgaW50IHRodW1iUG9zaXRpb24oU2Nyb2xs
YmFyKik7Ci0gICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7Ci0gICAgdmly
dHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0cmFj
a0xlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9s
bGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJhclRo
ZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3
KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYg
dmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAKIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKSA9IDA7Ci0gICAg
dmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSA9IDA7CiAKLSAgICB2aXJ0dWFsIEludFJl
Y3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGlu
ZyA9IGZhbHNlKSA9IDA7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNj
cm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOwotICAg
IHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZh
bHNlKSA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSA9IDA7Cisg
ICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSA9IDA7CisgICAgdmlydHVh
bCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNwbGl0VHJhY2soU2Nyb2xsYmFyKiwg
Y29uc3QgSW50UmVjdCYgdHJhY2ssIEludFJlY3QmIHN0YXJ0VHJhY2ssIEludFJlY3QmIHRodW1i
LCBJbnRSZWN0JiBlbmRUcmFjayk7CisgICAgdmlydHVhbCB2b2lkIHNwbGl0VHJhY2soU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiB0cmFjaywgSW50UmVjdCYgc3RhcnRUcmFj
aywgSW50UmVjdCYgdGh1bWIsIEludFJlY3QmIGVuZFRyYWNrKTsKICAgICAKLSAgICB2aXJ0dWFs
IGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBpbnQgbWlu
aW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciop
IHt9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4
dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSB7fQotICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYs
IFNjcm9sbGJhclBhcnQpIHt9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNz
Q29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSB7fQot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhcios
IGNvbnN0IEludFJlY3QmKSB7fQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jikge30KKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJh
clRoZW1lQ2xpZW50Kikge30KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQo
R3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jikg
e30KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIHt9Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIHt9CisgICAgdmlydHVh
bCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBJbnRSZWN0Jikge30KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jikge30K
IAotICAgIHZpcnR1YWwgSW50UmVjdCBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNj
cm9sbGJhciosIGNvbnN0IEludFJlY3QmIHJlY3QpIHsgcmV0dXJuIHJlY3Q7IH0KKyAgICB2aXJ0
dWFsIEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGNvbnN0IEludFJlY3QmIHJlY3QpIHsgcmV0dXJuIHJlY3Q7IH0KIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bS5jcHAKaW5kZXggZjhjYjI4MTU0ODYxZTAxZGE3MTEyNDkyMGM2MGQw
NmEzN2U5YTE4My4uNjgyZDgyZDViMzM3OTE4YjI1ZDA5OGJhNzcxNzM0ZTc5MTUwNWU5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bS5jcHAKQEAgLTM5LDE0ICszOSwxNCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6aGFzVGh1bWIoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06Omhhc1RodW1iKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgaXMganVz
dCBjYWxsZWQgYXMgYSBwYWludC10aW1lIG9wdGltaXphdGlvbiB0byBzZWUgaWYKICAgICAvLyBw
YWludGluZyB0aGUgdGh1bWIgY2FuIGJlIHNraXBwZWQuICBXZSBkb24ndCBoYXZlIHRvIGJlIGV4
YWN0IGhlcmUuCiAgICAgcmV0dXJuIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikgPiAwOwogfQogCi1J
bnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW06OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICAvLyBXaW5kb3dzIGFuZCBMaW51
eCBqdXN0IGhhdmUgc2luZ2xlIGFycm93cy4KICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uRW5k
UGFydCkKQEAgLTU2LDcgKzU2LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpi
YWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGEKICAgICByZXR1
cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCksIHNpemUud2lkdGgoKSwg
c2l6ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6Zm9y
d2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwg
Ym9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6Zm9yd2FyZEJ1dHRvblJlY3Qo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29s
KQogewogICAgIC8vIFdpbmRvd3MgYW5kIExpbnV4IGp1c3QgaGF2ZSBzaW5nbGUgYXJyb3dzLgog
ICAgIGlmIChwYXJ0ID09IEZvcndhcmRCdXR0b25TdGFydFBhcnQpCkBAIC03NCw3ICs3NCw3IEBA
IEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhCiAgICAgcmV0dXJuIEludFJlY3QoeCwgeSwgc2l6ZS53
aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJbnRSZWN0IFNjcm9s
bGJhclRoZW1lQ2hyb21pdW06OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBib29sKQogewogICAgIEludFNpemUgYnMgPSBidXR0b25TaXplKHNjcm9sbGJhcik7CiAg
ICAgLy8gVGhlIGJ1dHRvbnMgYXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIHRoZSBzY3JvbGxiYXIg
YXJlIHNxdWFyZSwgc28gdGhlCkBAIC05MiwxNCArOTIsMTQgQEAgSW50UmVjdCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCiAgICAg
cmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpICsgYnMuaGVpZ2h0
KCksIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIDIgKiBicy5oZWlnaHQoKSk7CiB9
CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUcmFja0JhY2tncm91bmQoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUcmFja0JhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIEp1c3QgYXNzdW1lIGEgZm9yd2Fy
ZCB0cmFjayBwYXJ0LiAgV2Ugb25seSBwYWludCB0aGUgdHJhY2sgYXMgYSBzaW5nbGUgcGllY2Ug
d2hlbiB0aGVyZSBpcyBubyB0aHVtYi4KICAgICBpZiAoIWhhc1RodW1iKHNjcm9sbGJhcikpCiAg
ICAgICAgIHBhaW50VHJhY2tQaWVjZShjb250ZXh0LCBzY3JvbGxiYXIsIHJlY3QsIEZvcndhcmRU
cmFja1BhcnQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VGlja21h
cmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VGlja21h
cmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRh
dGlvbigpICE9IFZlcnRpY2FsU2Nyb2xsYmFyKQogICAgICAgICByZXR1cm47CkBAIC0xMDksNyAr
MTA5LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpwYWludFRpY2ttYXJrcyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhcioKIAogICAgIC8vIEdldCB0aGUgdGlja21h
cmtzIGZvciB0aGUgZnJhbWV2aWV3LgogICAgIFZlY3RvcjxJbnRSZWN0PiB0aWNrbWFya3M7Ci0g
ICAgc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5nZXRUaWNrbWFya3ModGlja21hcmtzKTsK
KyAgICBzY3JvbGxiYXItPmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOwogICAgIGlmICghdGlja21h
cmtzLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmgKaW5kZXggMTE3
ODEyNTY5ZjY5ZjIwMDM3MWJhYzBmOWRhODdhN2MzMmRlNGZhNS4uY2Y2NzFkZDk4NGMwNzkwOTk1
YzY3ZDdkMGYxOGM1YjRhNmY2Y2ZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaApAQCAtNDEsMTcgKzQx
LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBXaW5kb3dzIGFuZCBMaW51eC4KICAg
ICBjbGFzcyBTY3JvbGxiYXJUaGVtZUNocm9taXVtIDogcHVibGljIFNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlIHsKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25z
KFNjcm9sbGJhciopIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGhhc1Ro
dW1iKFNjcm9sbGJhciopOworICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxi
YXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBib29sIGhh
c1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICAgICAgdmlydHVhbCBJbnRSZWN0
IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSk7Ci0gICAgICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3Jv
bGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgICAgICB2
aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxz
ZSk7CisgICAgICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgICAg
IHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCos
IFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgICAgIHZpcnR1YWwg
SW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0g
ZmFsc2UpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25z
dCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChH
cmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgICAgIHZpcnR1YWwg
SW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciopID0gMDsKKyAgICAgICAgdmlydHVhbCBJbnRT
aXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSA9IDA7CiAgICAgfTsKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwCmlu
ZGV4IDFkYmVmYTY0OWMwODk3MmViMWMyYjM3Yjc0NzcxYjBkNjFiZWE1YWQuLmUxZTU1YTFmYzEz
ZDc5YzBmOWU4ZjQ3MzBiZTg5NzgwOTRjMWY2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
QW5kcm9pZC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1B
bmRyb2lkOjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHIKICAg
ICByZXR1cm4gc2Nyb2xsYmFyVGhpY2tuZXNzVmFsdWU7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtQW5kcm9pZDo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICAvLyBQYWlu
dCBibGFjayBiYWNrZ3JvdW5kIGluIER1bXBSZW5kZXJUcmVlLCBvdGhlcndpc2UgdGhlIHBpeGVs
cyBpbiB0aGUgc2Nyb2xsYmFyIGFyZWEgZGVwZW5kCiAgICAgLy8gb24gdGhlaXIgcHJldmlvdXMg
c3RhdGUsIHdoaWNoIG1ha2VzIHRoZSBkdW1wZWQgcmVzdWx0IHVuZGV0ZXJtaW5lZC4KQEAgLTY1
LDEyICs2NSwxMiBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpwYWludFNj
cm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjbwogICAgICAgICBjb250ZXh0LT5m
aWxsUmVjdChzY3JvbGxiYXItPmZyYW1lUmVjdCgpLCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VE
ZXZpY2VSR0IpOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpzaG91
bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0
KQorYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6c2hvdWxkQ2VudGVyT25UaHVt
YihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQog
ewogICAgIHJldHVybiB0cnVlOwogfQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1B
bmRyb2lkOjpidXR0b25TaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorSW50U2l6ZSBTY3JvbGxi
YXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGlj
YWxTY3JvbGxiYXIpCiAgICAgICAgIHJldHVybiBJbnRTaXplKHNjcm9sbGJhclRoaWNrbmVzc1Zh
bHVlLCBidXR0b25MZW5ndGgpOwpAQCAtNzgsNyArNzgsNyBAQCBJbnRTaXplIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1BbmRyb2lkOjpidXR0b25TaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAg
IHJldHVybiBJbnRTaXplKGJ1dHRvbkxlbmd0aCwgc2Nyb2xsYmFyVGhpY2tuZXNzVmFsdWUpOwog
fQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6Om1pbmltdW1UaHVtYkxlbmd0
aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9p
ZDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7
CiAgICAgcmV0dXJuIDIgKiBzY3JvbGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLT5jb250cm9sU2l6
ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5oCmluZGV4IGYwN2M5MDE2Nzg2
Y2IyNGY4OGRmYjk0YWU0ZmMyMTZmZTZlNzBiZmMuLmYzZGI4MGU1MmZiZjUwYzFkZjY4YTk0MGVh
OWQ0NzNmMmRiZjI4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuaApAQCAtMzUs
MTAgKzM1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3Mo
U2Nyb2xsYmFyQ29udHJvbFNpemUpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHBh
aW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxi
YXIqKTsKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJP
blRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7
CisgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsK
KyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGlu
dXguY3BwCmluZGV4IGVjNjg0MDdlOWQ4YzMyZTMwZDMxMGQyZTUwNThjMmRhN2RiZGVjYzYuLjZi
NGRhZmMzNzNmMTBkMGFhMmQ2ZTk2NjJhYmU2M2RkNWRiNjVlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUxpbnV4LmNwcApAQCAtNTAsNyArNTAsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bUxpbnV4OjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJv
bAogICAgIHJldHVybiBzY3JvbGxiYXJTaXplLndpZHRoKCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywg
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQg
cGFydFR5cGUpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUcmFja1Bp
ZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCiB7CiAgICAgUGxh
dGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGUgPSBzY3JvbGxiYXItPmhvdmVyZWRQ
YXJ0KCkgPT0gcGFydFR5cGUgPyBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlSG92ZXIgOiBQbGF0Zm9y
bVN1cHBvcnQ6OlN0YXRlTm9ybWFsOwogICAgIEludFJlY3QgYWxpZ25SZWN0ID0gdHJhY2tSZWN0
KHNjcm9sbGJhciwgZmFsc2UpOwpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1MaW51eDo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9s
bGJhcgogICAgICAgICAmZXh0cmFQYXJhbXMpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1MaW51eDo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQq
IGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0
LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhcnQg
cGFpbnRQYXJ0OwogICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHN0YXRlID0g
UGxhdGZvcm1TdXBwb3J0OjpTdGF0ZU5vcm1hbDsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBn
YywgU2Nyb2xsYmFyKiBzYwogICAgIFBsYXRmb3JtU3VwcG9ydDo6cGFpbnRUaGVtZVBhcnQoZ2Ms
IHBhaW50UGFydCwgc3RhdGUsIHJlY3QsIDApOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1MaW51eDo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgUGxhdGZvcm1TdXBw
b3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGU7CiAKQEAgLTEyMCwxMiArMTIwLDEyIEBAIHZvaWQg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCog
Z2MsIFNjcm9sbGJhciogc2NyCiAgICAgICAgIDApOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1MaW51eDo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4Ojpz
aG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldnQpCiB7CiAgICAgcmV0dXJuIChldnQuc2hpZnRLZXkoKSAmJiBldnQuYnV0
dG9uKCkgPT0gTGVmdEJ1dHRvbikgfHwgKGV2dC5idXR0b24oKSA9PSBNaWRkbGVCdXR0b24pOwog
fQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6YnV0dG9uU2l6ZShTY3Jv
bGxiYXIqIHNjcm9sbGJhcikKK0ludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4Ojpi
dXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKHNj
cm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgewogICAgICAgICBJ
bnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFydFNpemUoUGxhdGZvcm1T
dXBwb3J0OjpQYXJ0U2Nyb2xsYmFyVXBBcnJvdyk7CkBAIC0xMzcsNyArMTM3LDcgQEAgSW50U2l6
ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCiAgICAgcmV0dXJuIEludFNpemUoc2Nyb2xsYmFyLT53aWR0aCgpIDwgMiAqIHNpemUu
d2lkdGgoKSA/IHNjcm9sbGJhci0+d2lkdGgoKSAvIDIgOiBzaXplLndpZHRoKCksIHNpemUuaGVp
Z2h0KCkpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjptaW5pbXVtVGh1
bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUxpbnV4OjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
cikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xs
YmFyKSB7CiAgICAgICAgIEludFNpemUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQ
YXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1l
Q2hyb21pdW1MaW51eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgKaW5kZXggOGU4MDJlNzM0MWI3NzViNTk1NWFkMGRlYzBi
OGVlZDU2Zjc5NzI3My4uMzMwZDAzZmIwMjMyMTM0ZWMyY2EyOTQxOWZkYWIyNzM0OTQ3NTRkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgKQEAgLTM5LDEyICszOSwxMiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3Jv
bGxiYXJDb250cm9sU2l6ZSk7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50
UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24o
R3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBh
cnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRD
ZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwotICAg
ICAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXIqKTsKLSAgICAgICAgdmly
dHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBj
b25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50
UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgICAgICB2aXJ0
dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgICAgICB2
aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKICAg
ICB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgKaW5k
ZXggNDFhMTk4ZTNmODQyMGM4NDg5NDVmYjg0NzQ0ZGRiNzAwMjRjZDZlNS4uNGQzNDI2YmI2MjA3
OTliYTNkOTA4M2I2ZGM4OTQxY2FiNDQyNmVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaApA
QCAtMzYsMTIgKzM2LDEyIEBAIHB1YmxpYzoKICAgICBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
KCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYygpOwogCi0gICAgdmly
dHVhbCBib29sIHBhaW50KFNjcm9sbGJhciosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CisgICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xs
VmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFu
Z0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QpOwogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIHBhaW50R2l2ZW5UaWNrbWFy
a3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFZl
Y3RvcjxJbnRSZWN0PiYpOworICAgIHZvaWQgcGFpbnRHaXZlblRpY2ttYXJrcyhHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBjb25zdCBWZWN0
b3I8SW50UmVjdD4mKTsKIAogICAgIFJlZlB0cjxQYXR0ZXJuPiBtX292ZXJoYW5nUGF0dGVybjsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxi
YXJUaGVtZUNocm9taXVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQppbmRleCA0NTlhNThiMDc2ZjcwMDZmMjc3NjVi
MDI0OTdhMDk5MzVmODIzZmI3Li5kMDJiNDIxMjU2NDRiNzgzMGNlMmUwZmFlYjM2NzMzNjFmOGRi
OTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxi
YXJUaGVtZUNocm9taXVtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KQEAgLTYxLDExICs2MSwxMSBAQCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjOjp+U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYygpCiB7CiB9
CiAKLXN0YXRpYyBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzY3JvbGxiYXJTdGF0
ZVRvVGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3N0YXRpYyBQbGF0Zm9ybVN1cHBv
cnQ6OlRoZW1lUGFpbnRTdGF0ZSBzY3JvbGxiYXJTdGF0ZVRvVGhlbWVTdGF0ZShTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkp
CiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlRGlzYWJsZWQ7Ci0gICAgaWYg
KCFzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlzQWN0aXZlKCkpCisgICAgaWYgKCFzY3Jv
bGxiYXItPmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuIFBsYXRmb3Jt
U3VwcG9ydDo6U3RhdGVJbmFjdGl2ZTsKICAgICBpZiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgp
ID09IFRodW1iUGFydCkKICAgICAgICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVQcmVz
c2VkOwpAQCAtOTQsMTEgKzk0LDExIEBAIHN0YXRpYyB2b2lkIHNjcm9sbGJhclBhaW50ZXJQYWlu
dFRyYWNrKFNjcm9sbGJhclBhaW50ZXIgc2Nyb2xsYmFyUGFpbnRlciwgYm9vbCBlCiAvLyAgICAg
LSBkcmF3aW5nIHVzaW5nIFBsYXRmb3JtU3VwcG9ydCBmdW5jdGlvbnMKIC8vICAgICAtIGRyYXdp
bmcgdGlja21hcmtzCiAvLyAgICAgLSBTa2lhIHNwZWNpZmljIGNoYW5nZXMKLWJvb2wgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQog
ewogICAgIC8vIEdldCB0aGUgdGlja21hcmtzIGZvciB0aGUgZnJhbWV2aWV3LgogICAgIFZlY3Rv
cjxJbnRSZWN0PiB0aWNrbWFya3M7Ci0gICAgc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5n
ZXRUaWNrbWFya3ModGlja21hcmtzKTsKKyAgICBzY3JvbGxiYXItPmdldFRpY2ttYXJrcyh0aWNr
bWFya3MpOwogCiAgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKSB7CiAg
ICAgICAgIGZsb2F0IHZhbHVlID0gMDsKQEAgLTE4OCw3ICsxODgsNyBAQCBib29sIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0Nv
bnRleHQqIGNvbgogICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIHRyYWNr
SW5mby5lbmFibGVTdGF0ZSA9IGtUaGVtZVRyYWNrRGlzYWJsZWQ7CiAgICAgZWxzZQotICAgICAg
ICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlz
QWN0aXZlKCkgPyBrVGhlbWVUcmFja0FjdGl2ZSA6IGtUaGVtZVRyYWNrSW5hY3RpdmU7CisgICAg
ICAgIHRyYWNrSW5mby5lbmFibGVTdGF0ZSA9IHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFj
dGl2ZSgpID8ga1RoZW1lVHJhY2tBY3RpdmUgOiBrVGhlbWVUcmFja0luYWN0aXZlOwogCiAgICAg
aWYgKCFoYXNCdXR0b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHRyYWNrSW5mby5lbmFibGVTdGF0
ZSA9IGtUaGVtZVRyYWNrTm90aGluZ1RvU2Nyb2xsOwpAQCAtMjQzLDcgKzI0Myw3IEBAIGJvb2wg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdy
YXBoaWNzQ29udGV4dCogY29uCiAgICAgaWYgKGhhc1RodW1iKHNjcm9sbGJhcikpIHsKICAgICAg
ICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U2Nyb2xsYmFySW5mbyBzY3JvbGxiYXJJbmZv
OwogICAgICAgICBzY3JvbGxiYXJJbmZvLm9yaWVudGF0aW9uID0gc2Nyb2xsYmFyLT5vcmllbnRh
dGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBQbGF0Zm9ybVN1cHBvcnQ6OlNjcm9sbGJh
ck9yaWVudGF0aW9uSG9yaXpvbnRhbCA6IFBsYXRmb3JtU3VwcG9ydDo6U2Nyb2xsYmFyT3JpZW50
YXRpb25WZXJ0aWNhbDsKLSAgICAgICAgc2Nyb2xsYmFySW5mby5wYXJlbnQgPSBzY3JvbGxiYXIt
PnBhcmVudCgpICYmIHNjcm9sbGJhci0+cGFyZW50KCktPmlzRnJhbWVWaWV3KCkgJiYgc3RhdGlj
X2Nhc3Q8RnJhbWVWaWV3Kj4oc2Nyb2xsYmFyLT5wYXJlbnQoKSktPmlzU2Nyb2xsVmlld1Njcm9s
bGJhcihzY3JvbGxiYXIpID8gUGxhdGZvcm1TdXBwb3J0OjpTY3JvbGxiYXJQYXJlbnRTY3JvbGxW
aWV3IDogUGxhdGZvcm1TdXBwb3J0OjpTY3JvbGxiYXJQYXJlbnRSZW5kZXJMYXllcjsKKyAgICAg
ICAgc2Nyb2xsYmFySW5mby5wYXJlbnQgPSBzY3JvbGxiYXItPmlzU2Nyb2xsVmlld1Njcm9sbGJh
cigpID8gUGxhdGZvcm1TdXBwb3J0OjpTY3JvbGxiYXJQYXJlbnRTY3JvbGxWaWV3IDogUGxhdGZv
cm1TdXBwb3J0OjpTY3JvbGxiYXJQYXJlbnRSZW5kZXJMYXllcjsKICAgICAgICAgc2Nyb2xsYmFy
SW5mby5tYXhWYWx1ZSA9IHNjcm9sbGJhci0+bWF4aW11bSgpOwogICAgICAgICBzY3JvbGxiYXJJ
bmZvLmN1cnJlbnRWYWx1ZSA9IHNjcm9sbGJhci0+Y3VycmVudFBvcygpOwogICAgICAgICBzY3Jv
bGxiYXJJbmZvLnZpc2libGVTaXplID0gc2Nyb2xsYmFyLT52aXNpYmxlU2l6ZSgpOwpAQCAtMjYz
LDcgKzI2Myw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogY29uCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRHaXZlblRpY2ttYXJrcyhH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRS
ZWN0JiByZWN0LCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHRpY2ttYXJrcykKK3ZvaWQgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRHaXZlblRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHJlY3QsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgdGlja21hcmtzKQogewogICAgIGlmIChzY3Jv
bGxiYXItPm9yaWVudGF0aW9uKCkgIT0gVmVydGljYWxTY3JvbGxiYXIpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAKaW5kZXggZjQzNTgzOWQ4MjE4NTY0ZjgwMjcy
OGQzMjg1MzIwZDFlMGNkYmFjOC4uYTA4MTk4MzQ3NDkxZGNjNWQ4ZjAyMmExMjI4ODkwZDY1Nzdm
ZTNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAKQEAgLTczLDcgKzczLDcgQEAgYm9v
bCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjppbnZhbGlkYXRlT25Nb3VzZUVudGVyRXhpdCgp
CiAgICAgcmV0dXJuIHdpbmRvd3NWZXJzaW9uKCkgPj0gV2luZG93c1Zpc3RhOwogfQogCi1ib29s
IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBl
dnQpCiB7CiAgICAgLy8gRmluZCB0aGUgcmVjdCB3aXRoaW4gd2hpY2ggd2Ugc2hvdWxkbid0IHNu
YXAsIGJ5IGV4cGFuZGluZyB0aGUgdHJhY2sgcmVjdAogICAgIC8vIGluIGJvdGggZGltZW5zaW9u
cy4KQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpzaG91
bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqIHNjcm9sbGJhciwKICAgICByZXR1cm4g
IXJlY3QuY29udGFpbnMobW91c2VQb3NpdGlvbik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBl
KQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWludFRyYWNrUGllY2UoR3JhcGhp
Y3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50
UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKIHsKICAgICBib29sIGhvcnogPSBz
Y3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsKIApAQCAtMTEz
LDcgKzExMyw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUcmFja1Bp
ZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhcioKICAgICAgICAgYWxpZ25SZWN0KTsK
IH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWludEJ1dHRvbihHcmFwaGlj
c0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwg
U2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWlu
dEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgYm9v
bCBob3J6ID0gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXI7
CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBh
aW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2NybwogICAgICAgICBy
ZWN0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWludFRodW1iKEdy
YXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWludFRodW1iKEdyYXBoaWNz
Q29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCiB7CiAgICAgYm9vbCBob3J6ID0gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09
IEhvcml6b250YWxTY3JvbGxiYXI7CiAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xs
YmFyKiBzY3JvbAogICAgICAgICByZWN0KTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1XaW46OmdldFRoZW1lU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQg
cGFydCkgY29uc3QKK2ludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZVN0YXRl
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29u
c3QKIHsKICAgICAvLyBXaGVuIGRyYWdnaW5nIHRoZSB0aHVtYiwgZHJhdyB0aHVtYiBwcmVzc2Vk
IGFuZCBvdGhlciBzZWdtZW50cyBub3JtYWwKICAgICAvLyByZWdhcmRsZXNzIG9mIHdoZXJlIHRo
ZSBjdXJzb3IgYWN0dWFsbHkgaXMuICBTZWUgYWxzbyBmb3VyIHBsYWNlcyBpbgpAQCAtMTcxLDcg
KzE3MSw3IEBAIGludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZVN0YXRlKFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgcmV0dXJuIChzY3JvbGxiYXIt
PnByZXNzZWRQYXJ0KCkgPT0gcGFydCkgPyBTQ1JCU19QUkVTU0VEIDogU0NSQlNfTk9STUFMOwog
fQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVBcnJvd1N0YXRlKFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpIGNvbnN0CitpbnQgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVBcnJvd1N0YXRlKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29uc3QKIHsKICAgICAvLyBXZSBj
b3VsZCB0YWtlIGFkdmFudGFnZSBvZiBrbm93aW5nIHRoZSB2YWx1ZXMgaW4gdGhlIHN0YXRlIGVu
dW0gdG8gd3JpdGUKICAgICAvLyBzb21lIHNpbXBsZXIgY29kZSwgYnV0IHRyZWF0aW5nIHRoZSBz
dGF0ZSBlbnVtIGFzIGEgYmxhY2sgYm94IHNlZW1zCkBAIC0yMjEsNyArMjIxLDcgQEAgaW50IFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldFRoZW1lQXJyb3dTdGF0ZShTY3JvbGxiYXIqIHNj
cm9sbGJhciwgU2Nyb2xsYmEKICAgICByZXR1cm4gKHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSA9
PSBwYXJ0KSA/IEFCU19ET1dOUFJFU1NFRCA6IEFCU19ET1dOTk9STUFMOwogfQogCi1pbnQgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3NpY1RoZW1lU3RhdGUoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29uc3QKK2ludCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtV2luOjpnZXRDbGFzc2ljVGhlbWVTdGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpIGNvbnN0CiB7CiAgICAgLy8gV2hlbiBkcmFnZ2lu
ZyB0aGUgdGh1bWIsIGRyYXcgdGhlIGJ1dHRvbnMgbm9ybWFsIGV2ZW4gd2hlbiBob3ZlcmVkLgog
ICAgIGlmIChzY3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0KQpAQCAtMjM1LDEy
ICsyMzUsMTIgQEAgaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldENsYXNzaWNUaGVt
ZVN0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGwKICAgICByZXR1cm4gKHNjcm9sbGJh
ci0+cHJlc3NlZFBhcnQoKSA9PSBwYXJ0KSA/IChERkNTX1BVU0hFRCB8IERGQ1NfRkxBVCkgOiAw
OwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnNob3VsZENlbnRlck9uVGh1
bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1XaW46OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4gZXZ0
LnNoaWZ0S2V5KCkgJiYgZXZ0LmJ1dHRvbigpID09IExlZnRCdXR0b247CiB9CiAKLUludFNpemUg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6YnV0dG9uU2l6ZShTY3JvbGxiYXIqIHNjcm9sbGJh
cikKK0ludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6YnV0dG9uU2l6ZShTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIC8vIE91ciBkZXNpcmVkIHJlY3QgaXMg
ZXNzZW50aWFsbHkgdGhpY2tuZXNzIGJ5IHRoaWNrbmVzcy4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bi5oCmluZGV4IDY5Y2ZhMTMxYzVjYjA0ZTliNTIxMGI3NjVjZmI0ODFlOGRkY2IxMzUuLmFjODg4
MWY5M2I1ZGIxYWZmNDY3OWE2MDYzZTdiYTdlODZmNTUxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
V2luLmgKQEAgLTM4LDE5ICszOCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJv
bFNpemUpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaW52YWxpZGF0ZU9uTW91c2VFbnRlckV4aXQo
KTsKLSAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9s
bGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCB2
b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRv
bihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFy
UGFydCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIHNob3Vs
ZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0g
ICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciopOworICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgICAg
ICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgaW50IGdldFRoZW1lU3RhdGUoU2Nyb2xsYmFyKiwgU2Nyb2xs
YmFyUGFydCkgY29uc3Q7Ci0gICAgICAgIGludCBnZXRUaGVtZUFycm93U3RhdGUoU2Nyb2xsYmFy
KiwgU2Nyb2xsYmFyUGFydCkgY29uc3Q7Ci0gICAgICAgIGludCBnZXRDbGFzc2ljVGhlbWVTdGF0
ZShTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0KSBjb25zdDsKKyAgICAgICAgaW50IGdldFRoZW1l
U3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0KSBjb25zdDsKKyAgICAg
ICAgaW50IGdldFRoZW1lQXJyb3dTdGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJh
clBhcnQpIGNvbnN0OworICAgICAgICBpbnQgZ2V0Q2xhc3NpY1RoZW1lU3RhdGUoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0KSBjb25zdDsKICAgICB9OwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Ny
b2xsYmFyVGhlbWVFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJh
clRoZW1lRWZsLmNwcAppbmRleCA2MmRmMDA1ZDY3NTcxZDE0YWQzOTQzNjBkNTZjNDk4ZTRkZjky
YmZiLi4yNDBiNTAxNDc3OWMxODJkMTQzOTBjM2Y4YzM5Mzc3NTc3ZTkzYTgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5jcHAKQEAgLTQ5
LDExICs0OSwxMSBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVFZmw6OnNjcm9sbGJhclRoaWNrbmVzcyhT
Y3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKICAgICByZXR1cm4gMDsgLy8gd2UgcGFp
bnQgb24gdG9wCiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVFZmw6OnJlZ2lzdGVyU2Nyb2xsYmFy
KFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUVmbDo6cmVnaXN0ZXJT
Y3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKIH0KIAotdm9pZCBT
Y3JvbGxiYXJUaGVtZUVmbDo6dW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJh
cikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVFZmw6OnVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaAppbmRleCAwZmUxNjg4MWUyZTQ1NmU2ZTEyMzAx
YWVlZjg2YzI2NWJkMzMyMzRiLi5mYzcxY2JlZDg5MGExYTY1YTlhMDJhZDhhMDNkMzhmZGM5OWFk
M2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhl
bWVFZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVF
ZmwuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGludCBzY3JvbGxi
YXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcik7
Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIpOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyKTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwCmluZGV4IGU5OTM2NGYy
YTdmY2FmNDg4ODMwYjQ2OGRlMWQxOGFkNzUwNGU5MGYuLjk0ZTNmZDc2ZjdmZmM1MjMwZmM4NDdm
ZjlmZWNhZjQzZGM0NmZhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Njcm9sbGJhclRoZW1lR3RrLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0YXRpYyBIYXNoU2V0PFNjcm9sbGJhcio+KiBnU2Nyb2xsYmFyczsKK3N0YXRp
YyBIYXNoU2V0PFNjcm9sbGJhclRoZW1lQ2xpZW50Kj4qIGdTY3JvbGxiYXJzOwogCiBTY3JvbGxi
YXJUaGVtZSogU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkKIHsKQEAgLTQ1LDE0ICs0NSwx
NCBAQCBTY3JvbGxiYXJUaGVtZUd0azo6flNjcm9sbGJhclRoZW1lR3RrKCkKIHsKIH0KIAotdm9p
ZCBTY3JvbGxiYXJUaGVtZUd0azo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmICghZ1Njcm9sbGJhcnMpCi0gICAgICAg
IGdTY3JvbGxiYXJzID0gbmV3IEhhc2hTZXQ8U2Nyb2xsYmFyKj47CisgICAgICAgIGdTY3JvbGxi
YXJzID0gbmV3IEhhc2hTZXQ8U2Nyb2xsYmFyVGhlbWVDbGllbnQqPjsKICAgICBnU2Nyb2xsYmFy
cy0+YWRkKHNjcm9sbGJhcik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnVucmVnaXN0
ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lR3Rr
Ojp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7
CiAgICAgZ1Njcm9sbGJhcnMtPnJlbW92ZShzY3JvbGxiYXIpOwogICAgIGlmIChnU2Nyb2xsYmFy
cy0+aXNFbXB0eSgpKSB7CkBAIC02OSw5ICs2OSw5IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6
OnVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRoaWNrbmVzcygpCiAgICAgLy8gVXBkYXRlIHRoZSB0aGlj
a25lc3Mgb2YgZXZlcnkgaW50ZXJpb3IgZnJhbWUgc2Nyb2xsYmFyIHdpZGdldC4gVGhlCiAgICAg
Ly8gcGxhdGZvcm0taW5kZXBlbmRlbnQgc2Nyb2xsYmFyIHRoZW0gY29kZSBpc24ndCB5ZXQgc21h
cnQgZW5vdWdoIHRvIGdldAogICAgIC8vIHRoaXMgaW5mb3JtYXRpb24gd2hlbiBpdCBwYWludHMu
Ci0gICAgSGFzaFNldDxTY3JvbGxiYXIqPjo6aXRlcmF0b3IgZW5kID0gZ1Njcm9sbGJhcnMtPmVu
ZCgpOwotICAgIGZvciAoSGFzaFNldDxTY3JvbGxiYXIqPjo6aXRlcmF0b3IgaXQgPSBnU2Nyb2xs
YmFycy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFNjcm9sbGJhciogc2Ny
b2xsYmFyID0gKCppdCk7CisgICAgSGFzaFNldDxTY3JvbGxiYXJUaGVtZUNsaWVudCo+OjppdGVy
YXRvciBlbmQgPSBnU2Nyb2xsYmFycy0+ZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PFNjcm9sbGJh
clRoZW1lQ2xpZW50Kj46Oml0ZXJhdG9yIGl0ID0gZ1Njcm9sbGJhcnMtPmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgeworICAgICAgICBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyID0g
KCppdCk7CiAKICAgICAgICAgLy8gVG9wLWxldmVsIHNjcm9sbGJhciBpLmUuIHNjcm9sbGJhcnMg
d2hvIGhhdmUgYSBwYXJlbnQgU2Nyb2xsVmlldwogICAgICAgICAvLyB3aXRoIG5vIHBhcmVudCBh
cmUgbmF0aXZlLCBhbmQgdGh1cyBkbyBub3QgbmVlZCB0byBiZSByZXNpemVkLgpAQCAtODYsMTQg
Kzg2LDE0IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRo
aWNrbmVzcygpCiAgICAgfQogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lR3RrOjpoYXNUaHVtYihT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6Omhhc1RodW1iKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgaXMg
anVzdCBjYWxsZWQgYXMgYSBwYWludC10aW1lIG9wdGltaXphdGlvbiB0byBzZWUgaWYKICAgICAv
LyBwYWludGluZyB0aGUgdGh1bWIgY2FuIGJlIHNraXBwZWQuICBXZSBkb24ndCBoYXZlIHRvIGJl
IGV4YWN0IGhlcmUuCiAgICAgcmV0dXJuIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikgPiAwOwogfQog
Ci1JbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZUd0azo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Ny
b2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0b25FbmRQ
YXJ0ICYmICFtX2hhc0JhY2tCdXR0b25FbmRQYXJ0KQogICAgICAgICByZXR1cm4gSW50UmVjdCgp
OwpAQCAtMTE0LDcgKzExNCw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tCdXR0
b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhCiAgICAgcmV0dXJu
IEludFJlY3QoeCwgc2Nyb2xsYmFyLT55KCkgKyBzY3JvbGxiYXItPmhlaWdodCgpIC0gbV90cm91
Z2hCb3JkZXJXaWR0aCAtICgyICogc2l6ZS5oZWlnaHQoKSksIHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0b25S
ZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRS
ZWN0IFNjcm9sbGJhclRoZW1lR3RrOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAgICAgaWYgKHBh
cnQgPT0gRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCAmJiAhbV9oYXNGb3J3YXJkQnV0dG9uU3RhcnRQ
YXJ0KQogICAgICAgICByZXR1cm4gSW50UmVjdCgpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIEludFJl
Y3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgcmV0dXJuIEludFJlY3QoeCwgc2Nyb2xsYmFyLT55KCkg
KyBtX3Ryb3VnaEJvcmRlcldpZHRoICsgc2l6ZS5oZWlnaHQoKSwgc2l6ZS53aWR0aCgpLCBzaXpl
LmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tSZWN0KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dHJh
Y2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgLy8g
VGhlIHBhZGRpbmcgYWxvbmcgdGhlIHRodW1iIG1vdmVtZW50IGF4aXMgaW5jbHVkZXMgdGhlIHRy
b3VnaCBib3JkZXIKICAgICAvLyBwbHVzIHRoZSBzaXplIG9mIHN0ZXBwZXIgc3BhY2luZyAodGhl
IHNwYWNlIGJldHdlZW4gdGhlIHN0ZXBwZXIgYW5kCkBAIC0xODAsNyArMTgwLDcgQEAgSW50UmVj
dCBTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29s
KQogICAgICAgICAgICAgICAgICAgIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtICgy
ICogbW92ZW1lbnRBeGlzUGFkZGluZykgLSBidXR0b25zV2lkdGgpOwogfQogCi1JbnRSZWN0IFNj
cm9sbGJhclRoZW1lR3RrOjp0aHVtYlJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3Rr
Ojp0aHVtYlJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCkKIHsKICAgICBJbnRSZWN0IHRyYWNrUmVjdCA9IGNv
bnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoc2Nyb2xsYmFyLCB1bmNvbnN0cmFpbmVkVHJh
Y2tSZWN0KTsKICAgICBpbnQgdGh1bWJQb3MgPSB0aHVtYlBvc2l0aW9uKHNjcm9sbGJhcik7CkBA
IC0xOTEsNyArMTkxLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dGh1bWJSZWN0KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnMKICAgICByZXR1cm4gSW50
UmVjdCh0cmFja1JlY3QueCgpICsgKHRyYWNrUmVjdC53aWR0aCgpIC0gbV90aHVtYkZhdG5lc3Mp
IC8gMiwgdHJhY2tSZWN0LnkoKSArIHRodW1iUG9zLCBtX3RodW1iRmF0bmVzcywgdGh1bWJMZW5n
dGgoc2Nyb2xsYmFyKSk7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3Qg
SW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQogewogICAgIGlmIChncmFwaGljc0NvbnRl
eHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYwLDcg
KzI2MCw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6
OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIGV2ZW50KQogewogICAgIHJldHVybiAoZXZlbnQuc2hpZnRLZXkoKSAmJiBl
dmVudC5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB8fCAoZXZlbnQuYnV0dG9uKCkgPT0gTWlkZGxl
QnV0dG9uKTsKIH0KQEAgLTI3MCw3ICsyNzAsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVHdGs6OnNj
cm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSkKICAgICByZXR1cm4gbV90aHVt
YkZhdG5lc3MgKyAobV90cm91Z2hCb3JkZXJXaWR0aCAqIDIpOwogfQogCi1JbnRTaXplIFNjcm9s
bGJhclRoZW1lR3RrOjpidXR0b25TaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorSW50U2l6ZSBT
Y3JvbGxiYXJUaGVtZUd0azo6YnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyKQogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3Jv
bGxiYXIpCiAgICAgICAgIHJldHVybiBJbnRTaXplKG1fdGh1bWJGYXRuZXNzLCBtX3N0ZXBwZXJT
aXplKTsKQEAgLTI3OSw3ICsyNzksNyBAQCBJbnRTaXplIFNjcm9sbGJhclRoZW1lR3RrOjpidXR0
b25TaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiBJbnRTaXplKG1fc3RlcHBl
clNpemUsIG1fdGh1bWJGYXRuZXNzKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lR3RrOjptaW5p
bXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVH
dGs6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQog
ewogICAgIHJldHVybiBtX21pblRodW1iTGVuZ3RoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuaAppbmRleCA0NWUwOTNiMWVjOTdkMWFmYWEy
NGM1ODMzMTU2NjkzMDJlODVjZDYzLi5lNzNkZjI4NTUwMWI1ODI2ZGMwNTliODNiZmMzZDlhNDE3
MGQ0YmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFy
VGhlbWVHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhl
bWVHdGsuaApAQCAtMzcsMjkgKzM3LDI5IEBAIHB1YmxpYzoKICAgICBTY3JvbGxiYXJUaGVtZUd0
aygpOwogICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lR3RrKCk7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBi
b29sIGhhc1RodW1iKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9u
UmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sKTsKLSAgICB2aXJ0dWFsIEludFJl
Y3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCk7Ci0g
ICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29sKTsKLSAgICBJbnRS
ZWN0IHRodW1iUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJh
Y2tSZWN0KTsKLSAgICBib29sIHBhaW50KFNjcm9sbGJhciosIEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwotICAgIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3Jv
dW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciopOwotICAgIHZvaWQgcGFpbnRUcmFja0Jh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwot
ICAgIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVu
dCopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sKTsKKyAgICB2aXJ0dWFsIEludFJl
Y3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0
LCBib29sKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgYm9vbCk7CisgICAgSW50UmVjdCB0aHVtYlJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KTsKKyAgICBib29sIHBhaW50
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYg
ZGFtYWdlUmVjdCk7CisgICAgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3ND
b250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2b2lkIHBhaW50VHJhY2tCYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50
UmVjdCYpOworICAgIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0
b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0
JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAgICB2
aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUpOwotICAg
IHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgaW50
IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIEludFNpemUgYnV0
dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1U
aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiAgICAgLy8gVE9ETzogVGhlc2Ug
YXJlIHRoZSBkZWZhdWx0IEdUSysgdmFsdWVzLiBBdCBzb21lIHBvaW50IHdlIHNob3VsZCBwdWxs
IHRoZXNlIGZyb20gdGhlIHRoZW1lIGl0c2VsZi4KICAgICB2aXJ0dWFsIGRvdWJsZSBpbml0aWFs
QXV0b3Njcm9sbFRpbWVyRGVsYXkoKSB7IHJldHVybiAwLjIwOyB9CiAgICAgdmlydHVhbCBkb3Vi
bGUgYXV0b3Njcm9sbFRpbWVyRGVsYXkoKSB7IHJldHVybiAwLjAyOyB9CiAgICAgdm9pZCB1cGRh
dGVUaGVtZVByb3BlcnRpZXMoKTsKICAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRoaWNr
bmVzcygpOwotICAgIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKik7Ci0gICAgdm9p
ZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciopOworICAgIHZvaWQgcmVnaXN0ZXJTY3Jv
bGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTY3JvbGxi
YXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogcHJvdGVjdGVkOgogI2lmbmRlZiBHVEtfQVBJ
X1ZFUlNJT05fMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9s
bGJhclRoZW1lR3RrMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFy
VGhlbWVHdGsyLmNwcAppbmRleCA3MjliZDEyNGRlMmIyMTg1NDk5N2IxOTg3NjMwY2RmODliZWE5
MTAzLi44NjZiYjhhMWQyZjcxYWE4NjRlYTU3ZWQzMDNmMTM2MDcyYzFjNDI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsyLmNwcApAQCAt
NjYsMTMgKzY2LDEzIEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVRoZW1lUHJvcGVy
dGllcygpCiAgICAgdXBkYXRlU2Nyb2xsYmFyc0ZyYW1lVGhpY2tuZXNzKCk7CiB9CiAKLXN0YXRp
YyBHdGtXaWRnZXQqIGdldFdpZGdldEZvclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikK
K3N0YXRpYyBHdGtXaWRnZXQqIGdldFdpZGdldEZvclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyKQogewogICAgIFJlbmRlclRoZW1lR3RrKiB0aGVtZSA9IHN0YXRpY19j
YXN0PFJlbmRlclRoZW1lR3RrKj4oUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLmdldCgpKTsK
ICAgICByZXR1cm4gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFy
ID8gdGhlbWUtPmd0a1ZTY3JvbGxiYXIoKSA6IHRoZW1lLT5ndGtIU2Nyb2xsYmFyKCk7CiB9CiAK
LXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qp
Cit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gUGFpbnQgdGhlIHRyYWNrIGJhY2tncm91bmQuIElmIHRo
ZSB0cm91Z2gtdW5kZXItc3RlcHBlcnMgcHJvcGVydHkgaXMgdHJ1ZSwgdGhpcwogICAgIC8vIHNo
b3VsZCBiZSB0aGUgZnVsbCBzaXplIG9mIHRoZSBzY3JvbGxiYXIsIGJ1dCBpZiBpcyBmYWxzZSwg
aXQgc2hvdWxkIG9ubHkgYmUgdGhlCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhl
bWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Ny
b2xsYmFyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RBVEVfQUNUSVZFLCBH
VEtfU0hBRE9XX0lOLCAidHJvdWdoIik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBh
aW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJh
ciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICBJbnRSZWN0IGZ1bGxTY3JvbGxiYXJSZWN0ID0gSW50UmVjdChzY3Jv
bGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCksIHNjcm9sbGJhci0+d2lkdGgoKSwgc2Nyb2xsYmFy
LT5oZWlnaHQoKSk7CiAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6
cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2wK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JNQUwsIEdUS19TSEFE
T1dfSU4sICJzY3JvbGxlZF93aW5kb3ciKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6
cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFy
LCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVt
YihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBnZXRX
aWRnZXRGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKICAgICBnYm9vbGVhbiBhY3RpdmF0ZVNsaWRl
cjsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1i
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYQogICAgIHdpZGdl
dENvbnRleHQuZ3RrUGFpbnRTbGlkZXIoc2xpZGVyUmVjdCwgd2lkZ2V0LCBzdGF0ZVR5cGUsIHNo
YWRvd1R5cGUsICJzbGlkZXIiLCBvcmllbnRhdGlvbik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhl
bWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQg
U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Ny
b2xsYmFyUGFydCBwYXJ0KQogewogICAgIC8vIFRoZSBidXR0b25zIHdpbGwgYmUgZGlzYWJsZWQg
aWYgdGhlIHRodW1iIGlzIGFzIHRoZSBhcHByb3ByaWF0ZSBleHRyZW1lLgogICAgIEd0a1NoYWRv
d1R5cGUgc2hhZG93VHlwZSA9IEdUS19TSEFET1dfT1VUOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGszLmNwcAppbmRleCA0YzMzZTY2ZGI4ZmZl
ZmMzZjQyMzQ2Y2FkMGVlZTY3ZWU2Y2Q0NWZlLi45NzQ5YzU0M2YzZGRmNmIzMTVlZmZiOThhNzU5
ZmY1YjAwMmQ3MGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Ny
b2xsYmFyVGhlbWVHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Ny
b2xsYmFyVGhlbWVHdGszLmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVNj
cm9sbGJhclN0eWxlQ29udGV4dENsYXNzZXMoR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0LCBTY3Jv
bGxiYQogICAgIGd0a19zdHlsZV9jb250ZXh0X2FkZF9jbGFzcyhjb250ZXh0LCBvcmllbnRhdGlv
biA9PSBWZXJ0aWNhbFNjcm9sbGJhciA/ICBHVEtfU1RZTEVfQ0xBU1NfVkVSVElDQUwgOiBHVEtf
U1RZTEVfQ0xBU1NfSE9SSVpPTlRBTCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBh
aW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpw
YWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gUGFp
bnQgdGhlIHRyYWNrIGJhY2tncm91bmQuIElmIHRoZSB0cm91Z2gtdW5kZXItc3RlcHBlcnMgcHJv
cGVydHkgaXMgdHJ1ZSwgdGhpcwogICAgIC8vIHNob3VsZCBiZSB0aGUgZnVsbCBzaXplIG9mIHRo
ZSBzY3JvbGxiYXIsIGJ1dCBpZiBpcyBmYWxzZSwgaXQgc2hvdWxkIG9ubHkgYmUgdGhlCkBAIC05
NCw3ICs5NCw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5k
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyCiAgICAgZ3RrX3N0eWxlX2NvbnRl
eHRfcmVzdG9yZShtX2NvbnRleHQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWlu
dFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIq
IHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIpCiB7CiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2F2ZShtX2NvbnRleHQpOwogCkBAIC0x
MDUsNyArMTA1LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2wKICAgICBndGtfc3R5bGVfY29u
dGV4dF9yZXN0b3JlKG1fY29udGV4dCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBh
aW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VGh1bWIo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGd0a19zdHlsZV9jb250ZXh0X3NhdmUobV9j
b250ZXh0KTsKIApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBh
aW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhCiAg
ICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShtX2NvbnRleHQpOwogfQogCi12b2lkIFNjcm9s
bGJhclRoZW1lR3RrOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQp
Cit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJl
Y3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAgICBndGtfc3R5bGVfY29udGV4dF9zYXZlKG1f
Y29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3Jv
bGxiYXJUaGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRo
ZW1lTWFjLmgKaW5kZXggMTNkNDRjMjNkM2IzMzYyMzZmYjY0MDk4ZmE4NzBhZWM4YzdiNTY1OC4u
OTYyOWY2MDc0ZjYyY2FhYjY1YTkzOWY0NzUwNzE4YTQxMjRkY2Y4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmgKQEAgLTM5LDQ2ICszOSw0
NiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByZWZlcmVuY2VzQ2hhbmdlZCgpOwogCi0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKICNpZiAhUExB
VEZPUk0oQ0hST01JVU0pCi0gICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhciosIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CisgICAgdmly
dHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKICNlbmRpZgogCiAgICAgdmlydHVh
bCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNj
cm9sbGJhcik7CiAgICAgCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1c2VzT3ZlcmxheVNjcm9s
bGJhcnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJPdmVybGF5
U3R5bGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRp
YWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpOwogICAgIHZpcnR1YWwgZG91YmxlIGF1dG9zY3JvbGxU
aW1lckRlbGF5KCk7CiAKICAgICB2aXJ0dWFsIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgYnV0
dG9uc1BsYWNlbWVudCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xs
YmFyKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNj
cm9sbGJhciopOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJU
aGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9s
bGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2b2lkIHNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIo
U2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFpbnRlcik7Ci0gICAgU2Nyb2xsYmFyUGFpbnRlciBwYWlu
dGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciopOworICAgIHZvaWQgc2V0TmV3UGFpbnRlckZvclNj
cm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhaW50ZXIpOworICAgIFNj
cm9sbGJhclBhaW50ZXIgcGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCop
OwogCiAgICAgc3RhdGljIGJvb2wgaXNDdXJyZW50bHlEcmF3aW5nSW50b0xheWVyKCk7CiAgICAg
c3RhdGljIHZvaWQgc2V0SXNDdXJyZW50bHlEcmF3aW5nSW50b0xheWVyKGJvb2wpOwogCiBwcm90
ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKik7Ci0gICAgdmly
dHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0
b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNj
cm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJl
Y3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAg
ICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFy
UGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tS
ZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRS
ZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwg
Ym9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRv
blJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5n
ID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogCiAgICAgdmlydHVhbCBpbnQgbWF4T3Zl
cmxhcEJldHdlZW5QYWdlcygpIHsgcmV0dXJuIDQwOyB9CiAKLSAgICB2aXJ0dWFsIGludCBtaW5p
bXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1i
TGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAgICAgCi0gICAgdmlydHVhbCBib29sIHNo
b3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7
Ci0gICAgdmlydHVhbCBib29sIHNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9s
bGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRo
dW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAg
ICAgaW50IHNjcm9sbGJhclBhcnRUb0hJUHJlc3NlZFN0YXRlKFNjcm9sbGJhclBhcnQpOwogCiAj
aWYgIVBMQVRGT1JNKENIUk9NSVVNKSAmJiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYm
IEVOQUJMRShSVUJCRVJfQkFORElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TY3JvbGxiYXJUaGVtZU1hYy5tbQppbmRleCBjYzc0ODI0NTc3ODUyOTNkMWQ1NzhiNzgyZDgx
YzI3ZmFiYjI1OTI0Li4zYjkwMjFhZGVhNTVkYzhhZmNkNjZiZGRmNTU3NjEyNDA5ZDk5N2FiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1t
CkBAIC01MCw3ICs1MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXR5cGVkZWYgSGFzaE1hcDxTY3JvbGxiYXIqLCBSZXRhaW5QdHI8U2Nyb2xs
YmFyUGFpbnRlcj4gPiBTY3JvbGxiYXJQYWludGVyTWFwOwordHlwZWRlZiBIYXNoTWFwPFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgUmV0YWluUHRyPFNjcm9sbGJhclBhaW50ZXI+ID4gU2Nyb2xsYmFy
UGFpbnRlck1hcDsKIAogc3RhdGljIFNjcm9sbGJhclBhaW50ZXJNYXAqIHNjcm9sbGJhck1hcCgp
CiB7CkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJyb3dQbGFjZW1lbnQo
KQogICAgIH0KIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6cmVnaXN0ZXJTY3JvbGxiYXIo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpyZWdpc3RlclNj
cm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChpc1Nj
cm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkgewogICAgICAgICBib29sIGlzSG9yaXpvbnRh
bCA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyOwpAQCAt
MTc1LDE5ICsxNzUsMTkgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6cmVnaXN0ZXJTY3JvbGxi
YXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgfQogfQogCi12b2lkIFNjcm9sbGJhclRoZW1l
TWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3Jv
bGxiYXJUaGVtZU1hYzo6dW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQogewogICAgIHNjcm9sbGJhck1hcCgpLT5yZW1vdmUoc2Nyb2xsYmFyKTsKIH0K
IAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6c2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcihTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFpbnRlciBuZXdQYWludGVyKQordm9pZCBTY3Jv
bGxiYXJUaGVtZU1hYzo6c2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYWludGVyIG5ld1BhaW50ZXIpCiB7CiAgICAgc2Ny
b2xsYmFyTWFwKCktPnNldChzY3JvbGxiYXIsIG5ld1BhaW50ZXIpOwogICAgIHVwZGF0ZUVuYWJs
ZWRTdGF0ZShzY3JvbGxiYXIpOwogICAgIHVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShzY3Jv
bGxiYXIpOwogfQogCi1TY3JvbGxiYXJQYWludGVyIFNjcm9sbGJhclRoZW1lTWFjOjpwYWludGVy
Rm9yU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorU2Nyb2xsYmFyUGFpbnRlciBTY3Jv
bGxiYXJUaGVtZU1hYzo6cGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQogewogICAgIHJldHVybiBzY3JvbGxiYXJNYXAoKS0+Z2V0KHNjcm9sbGJhciku
Z2V0KCk7CiB9CkBAIC0yNDgsMTAgKzI0OCwxMCBAQCBib29sIFNjcm9sbGJhclRoZW1lTWFjOjp1
c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3Jv
bGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZVNjcm9sbGJh
ck92ZXJsYXlTdHlsZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIFNj
cm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHBhaW50ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsK
LSAgICBzd2l0Y2ggKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKCkpIHsKKyAgICBzd2l0Y2ggKHNjcm9sbGJhci0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxl
KCkpIHsKICAgICBjYXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZURlZmF1bHQ6CiAgICAgICAgIFtw
YWludGVyIHNldEtub2JTdHlsZTpOU1Njcm9sbGVyS25vYlN0eWxlRGVmYXVsdF07CiAgICAgICAg
IGJyZWFrOwpAQCAtMjc5LDcgKzI3OSw3IEBAIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgU2Ny
b2xsYmFyVGhlbWVNYWM6OmJ1dHRvbnNQbGFjZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBnQnV0
dG9uUGxhY2VtZW50OwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNCdXR0b25zKFNj
cm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6aGFzQnV0dG9ucyhT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiBzY3JvbGxiYXIt
PmVuYWJsZWQoKSAmJiBidXR0b25zUGxhY2VtZW50KCkgIT0gU2Nyb2xsYmFyQnV0dG9uc05vbmUK
ICAgICAgICAgICAgICAmJiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxT
Y3JvbGxiYXIKQEAgLTI4Nyw3ICsyODcsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNC
dXR0b25zKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgICAgICAgICAgIDogc2Nyb2xsYmFyLT5o
ZWlnaHQoKSkgPj0gMiAqIChjUmVhbEJ1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXpl
KCldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0pOwogfQogCi1i
b29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jv
b2wgU2Nyb2xsYmFyVGhlbWVNYWM6Omhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIpCiB7CiAgICAgaW50IG1pbkxlbmd0aEZvclRodW1iOwogICAgIGlmIChpc1Njcm9sbGJh
ck92ZXJsYXlBUElBdmFpbGFibGUoKSkgewpAQCAtMzE5LDcgKzMxOSw3IEBAIHN0YXRpYyBJbnRS
ZWN0IGJ1dHRvblJlcGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJh
ck9yaWVudGF0aW9uCiAgICAgcmV0dXJuIHBhaW50UmVjdDsKIH0KIAotSW50UmVjdCBTY3JvbGxi
YXJUaGVtZU1hYzo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJh
clBhcnQgcGFydCwgYm9vbCBwYWludGluZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmJh
Y2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBh
cnQgcGFydCwgYm9vbCBwYWludGluZykKIHsKICAgICBJbnRSZWN0IHJlc3VsdDsKICAgICAKQEAg
LTM1Myw3ICszNTMsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVj
dChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZvcndhcmRCdXR0b25SZWN0KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCitJ
bnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCiB7
CiAgICAgSW50UmVjdCByZXN1bHQ7CiAgICAgCkBAIC0zOTMsNyArMzkzLDcgQEAgSW50UmVjdCBT
Y3JvbGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbnRSZWN0IFNjcm9sbGJh
clRoZW1lTWFjOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcp
CitJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhciwgYm9vbCBwYWludGluZykKIHsKICAgICBpZiAocGFpbnRpbmcgfHwgIWhh
c0J1dHRvbnMoc2Nyb2xsYmFyKSkKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZnJhbWVSZWN0
KCk7CkBAIC00MzAsNyArNDMwLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6dHJhY2tS
ZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQogICAgIHJldHVybiBJbnRS
ZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIHN0YXJ0V2lkdGgsIHRoaWNrbmVz
cywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIHRvdGFsV2lkdGgpOwogfQogCi1pbnQgU2Nyb2xsYmFy
VGhlbWVNYWM6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBT
Y3JvbGxiYXJUaGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgp
KQogICAgICAgICByZXR1cm4gW3Njcm9sbGJhck1hcCgpLT5nZXQoc2Nyb2xsYmFyKS5nZXQoKSBr
bm9iTWluTGVuZ3RoXTsKQEAgLTQzOCw3ICs0MzgsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVNYWM6
Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICAgICAgcmV0dXJu
IGNUaHVtYk1pbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldOwogfQogCi1ib29sIFNj
cm9sbGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6c2hvdWxkQ2Vu
dGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZ0KQogewogICAgIGlmIChldnQuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbikKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6
OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
CiAgICAgcmV0dXJuIGV2dC5hbHRLZXkoKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6
c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnNob3VsZERyYWdE
b2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICByZXR1cm4gZXZlbnQuYWx0S2V5KCk7CiB9CkBA
IC00NzAsNyArNDcwLDcgQEAgaW50IFNjcm9sbGJhclRoZW1lTWFjOjpzY3JvbGxiYXJQYXJ0VG9I
SVByZXNzZWRTdGF0ZShTY3JvbGxiYXJQYXJ0IHBhcnQpCiAgICAgfQogfQogCi12b2lkIFNjcm9s
bGJhclRoZW1lTWFjOjp1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2
b2lkIFNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxh
YmxlKCkpCiAgICAgICAgIFtzY3JvbGxiYXJNYXAoKS0+Z2V0KHNjcm9sbGJhcikuZ2V0KCkgc2V0
RW5hYmxlZDpzY3JvbGxiYXItPmVuYWJsZWQoKV07CkBAIC00OTksNyArNDk5LDcgQEAgc3RhdGlj
IHZvaWQgc2Nyb2xsYmFyUGFpbnRlclBhaW50KFNjcm9sbGJhclBhaW50ZXIgc2Nyb2xsYmFyUGFp
bnRlciwgYm9vbCBlbmFibGUKIH0KIAogI2lmICFQTEFURk9STShDSFJPTUlVTSkKLWJvb2wgU2Ny
b2xsYmFyVGhlbWVNYWM6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCitib29sIFNjcm9sbGJhclRo
ZW1lTWFjOjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgaWYgKGlz
U2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKSB7CiAgICAgICAgIGZsb2F0IHZhbHVlID0g
MDsKQEAgLTU3MCw3ICs1NzAsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lTWFjOjpwYWludChTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjbwogICAgIGlmICgh
c2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIHRyYWNrSW5mby5lbmFibGVTdGF0ZSA9IGtU
aGVtZVRyYWNrRGlzYWJsZWQ7CiAgICAgZWxzZQotICAgICAgICB0cmFja0luZm8uZW5hYmxlU3Rh
dGUgPSBzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlzQWN0aXZlKCkgPyBrVGhlbWVUcmFj
a0FjdGl2ZSA6IGtUaGVtZVRyYWNrSW5hY3RpdmU7CisgICAgICAgIHRyYWNrSW5mby5lbmFibGVT
dGF0ZSA9IHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpID8ga1RoZW1lVHJhY2tB
Y3RpdmUgOiBrVGhlbWVUcmFja0luYWN0aXZlOwogCiAgICAgaWYgKGhhc1RodW1iKHNjcm9sbGJh
cikpCiAgICAgICAgIHRyYWNrSW5mby5hdHRyaWJ1dGVzIHw9IGtUaGVtZVRyYWNrU2hvd1RodW1i
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVt
ZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1v
Y2suY3BwCmluZGV4IDVkMmJjM2VjMDg5NzhlMDM3MzdmYmE3Mzk1YjhiOGNlNzQ2MGQ0NjQuLjZk
ZTkxY2NiODE5MjEwNDBjMDg0NzhjMWVlNTY3N2RkZTQzNzQ5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKQEAgLTMyLDcg
KzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgaW50IGNTY3JvbGxiYXJUaGlj
a25lc3NbXSA9IHsgMTUsIDExIH07CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVNb2NrOjp0cmFj
a1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1l
TW9jazo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7
CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7CiB9CkBAIC00MiwxMiArNDIsMTIg
QEAgaW50IFNjcm9sbGJhclRoZW1lTW9jazo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNv
bnRyb2xTaXplIGNvbnRyb2xTaXplKQogICAgIHJldHVybiBjU2Nyb2xsYmFyVGhpY2tuZXNzW2Nv
bnRyb2xTaXplXTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tCYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIHRyYWNrUmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRy
YWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRyYWNrUmVjdCkKIHsKICAgICBjb250ZXh0
LT5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci0+ZW5hYmxlZCgpID8gQ29sb3I6OmxpZ2h0
R3JheSA6IENvbG9yKDB4RkZFMEUwRTApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAotdm9p
ZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQordm9pZCBT
Y3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3Qp
CiB7CiAgICAgaWYgKHNjcm9sbGJhci0+ZW5hYmxlZCgpKQogICAgICAgICBjb250ZXh0LT5maWxs
UmVjdCh0aHVtYlJlY3QsIENvbG9yOjpkYXJrR3JheSwgQ29sb3JTcGFjZURldmljZVJHQik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9j
ay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaApp
bmRleCBlMjU0ODQyMmEyOGY1ZTcyM2U0MzUzZjhmNDU3NjUyNTNjYjY4NWJiLi42MzMzODQxYWI3
OTZiOWRjMjMzZjNmNjNlYjgwMGFiZmE3YjBiYjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmgKQEAgLTM2LDE1ICszNiwxNSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRy
b2xTaXplID0gUmVndWxhclNjcm9sbGJhcik7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJv
b2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBi
b29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJu
IHRydWU7IH0KIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIq
LCBTY3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7IHJldHVybiBJbnRS
ZWN0KCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFy
KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCAvKnBhaW50aW5nKi8gPSBmYWxzZSkgeyByZXR1cm4gSW50
UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29s
IHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgLypwYWludGluZyovID0g
ZmFsc2UpIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJk
QnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgLypw
YWludGluZyovID0gZmFsc2UpIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIHZpcnR1YWwgSW50
UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFs
c2UpOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGlj
c0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lk
IHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYp
OworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IEludFJlY3QmKTsKICAgICAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzTW9ja1Ro
ZW1lKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9TY3JvbGxiYXJUaGVtZVF0LmNwcAppbmRleCBlMzI0M2VjZmE4OTc5YjlhNjgxZTE1OWJk
ZWU5YTliMTU5YzY3NDNjLi5kNGI1OGIxYjBlNWFmMTcwZjk2ZWY4MzY0YjY5YjQ4NGEzNjIyMjU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmNw
cApAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBTY3JvbGxiYXJQYXJ0IHNjcm9sbGJhclBhcnQo
Y29uc3QgUVN0eWxlOjpTdWJDb250cm9sJiBzYykKICAgICByZXR1cm4gTm9QYXJ0OwogfQogCi1z
dGF0aWMgUVN0eWxlT3B0aW9uU2xpZGVyKiBzdHlsZU9wdGlvblNsaWRlcihTY3JvbGxiYXIqIHNj
cm9sbGJhciwgUVdpZGdldCogd2lkZ2V0ID0gMCkKK3N0YXRpYyBRU3R5bGVPcHRpb25TbGlkZXIq
IHN0eWxlT3B0aW9uU2xpZGVyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFFXaWRn
ZXQqIHdpZGdldCA9IDApCiB7CiAgICAgc3RhdGljIFFTdHlsZU9wdGlvblNsaWRlciBvcHQ7CiAg
ICAgaWYgKHdpZGdldCkKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgUVN0eWxlT3B0aW9uU2xp
ZGVyKiBzdHlsZU9wdGlvblNsaWRlcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgUVdpZGdldCogd2lk
ZwogICAgIHJldHVybiAmb3B0OwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lUXQ6OnBhaW50KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVRdDo6cGFpbnQoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgaWYgKGdyYXBoaWNzQ29u
dGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSkgewogICAgICAgIHNjcm9sbGJhci0+aW52YWxp
ZGF0ZVJlY3QoZGFtYWdlUmVjdCk7CkBAIC0xOTMsNyArMTkzLDcgQEAgYm9vbCBTY3JvbGxiYXJU
aGVtZVF0OjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFw
aGljc0NvbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJU
aGVtZVF0OjpoaXRUZXN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGV2dCkKK1Njcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVRdDo6aGl0VGVzdChTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2
dCkKIHsKICAgICBRU3R5bGVPcHRpb25TbGlkZXIqIG9wdCA9IHN0eWxlT3B0aW9uU2xpZGVyKHNj
cm9sbGJhcik7CiAgICAgY29uc3QgUVBvaW50IHBvcyA9IHNjcm9sbGJhci0+Y29udmVydEZyb21D
b250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigpKTsKQEAgLTIwMiwxMyArMjAyLDEzIEBAIFNj
cm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVRdDo6aGl0VGVzdChTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgY29uc3QgUGxhdGZvcm1Nb3VzCiAgICAgcmV0dXJuIHNjcm9sbGJhclBhcnQoc2MpOwogfQog
Ci1ib29sIFNjcm9sbGJhclRoZW1lUXQ6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lUXQ6OnNo
b3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2dCkKIHsKICAgICAvLyBNaWRkbGUgY2xpY2sgY2VudGVycyBzbGlkZXIgdGh1
bWIgKGlmIHN1cHBvcnRlZCkuCiAgICAgcmV0dXJuIHN0eWxlKCktPnN0eWxlSGludChRU3R5bGU6
OlNIX1Njcm9sbEJhcl9NaWRkbGVDbGlja0Fic29sdXRlUG9zaXRpb24pICYmIGV2dC5idXR0b24o
KSA9PSBNaWRkbGVCdXR0b247CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVRdDo6aW52YWxpZGF0
ZVBhcnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQpCit2b2lkIFNjcm9sbGJh
clRoZW1lUXQ6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIs
IFNjcm9sbGJhclBhcnQpCiB7CiAgICAgLy8gRklYTUU6IERvIG1vcmUgcHJlY2lzZSBpbnZhbGlk
YXRpb24uCiAgICAgc2Nyb2xsYmFyLT5pbnZhbGlkYXRlKCk7CkBAIC0yMjQsNyArMjI0LDcgQEAg
aW50IFNjcm9sbGJhclRoZW1lUXQ6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9s
U2l6ZSBjb250cm9sU2l6ZSkKICAgICByZXR1cm4gc3R5bGUoKS0+cGl4ZWxNZXRyaWMoUVN0eWxl
OjpQTV9TY3JvbGxCYXJFeHRlbnQsICZvLCAwKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lUXQ6
OnRodW1iUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVR
dDo6dGh1bWJQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAg
IGlmIChzY3JvbGxiYXItPmVuYWJsZWQoKSkgewogICAgICAgICBmbG9hdCBwb3MgPSAoZmxvYXQp
c2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgKiAodHJhY2tMZW5ndGgoc2Nyb2xsYmFyKSAtIHRodW1i
TGVuZ3RoKHNjcm9sbGJhcikpIC8gc2Nyb2xsYmFyLT5tYXhpbXVtKCk7CkBAIC0yMzMsMjEgKzIz
MywyMSBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVRdDo6dGh1bWJQb3NpdGlvbihTY3JvbGxiYXIqIHNj
cm9sbGJhcikKICAgICByZXR1cm4gMDsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lUXQ6OnRodW1i
TGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lUXQ6OnRodW1i
TGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgUVN0eWxlT3B0
aW9uU2xpZGVyKiBvcHQgPSBzdHlsZU9wdGlvblNsaWRlcihzY3JvbGxiYXIpOwogICAgIEludFJl
Y3QgdGh1bWIgPSBzdHlsZSgpLT5zdWJDb250cm9sUmVjdChRU3R5bGU6OkNDX1Njcm9sbEJhciwg
b3B0LCBRU3R5bGU6OlNDX1Njcm9sbEJhclNsaWRlciwgMCk7CiAgICAgcmV0dXJuIHNjcm9sbGJh
ci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gdGh1bWIud2lkdGgoKSA6
IHRodW1iLmhlaWdodCgpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVRdDo6dHJhY2tQb3NpdGlv
bihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVF0Ojp0cmFja1Bvc2l0
aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgUVN0eWxlT3B0aW9u
U2xpZGVyKiBvcHQgPSBzdHlsZU9wdGlvblNsaWRlcihzY3JvbGxiYXIpOwogICAgIEludFJlY3Qg
dHJhY2sgPSBzdHlsZSgpLT5zdWJDb250cm9sUmVjdChRU3R5bGU6OkNDX1Njcm9sbEJhciwgb3B0
LCBRU3R5bGU6OlNDX1Njcm9sbEJhckdyb292ZSwgMCk7CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gdHJhY2sueCgpIC0gc2Nyb2xs
YmFyLT54KCkgOiB0cmFjay55KCkgLSBzY3JvbGxiYXItPnkoKTsKIH0KIAotaW50IFNjcm9sbGJh
clRoZW1lUXQ6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJh
clRoZW1lUXQ6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7
CiAgICAgUVN0eWxlT3B0aW9uU2xpZGVyKiBvcHQgPSBzdHlsZU9wdGlvblNsaWRlcihzY3JvbGxi
YXIpOwogICAgIEludFJlY3QgdHJhY2sgPSBzdHlsZSgpLT5zdWJDb250cm9sUmVjdChRU3R5bGU6
OkNDX1Njcm9sbEJhciwgb3B0LCBRU3R5bGU6OlNDX1Njcm9sbEJhckdyb292ZSwgMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmgKaW5kZXggY2Y0ODgy
ZGEyMDNiYmYwZmI3Y2M2OWU3YzNlMWMxZmZkZDgxZjVlYi4uMDMzN2JmODBjY2Y2NDZkMThlOGYw
N2M0ZmU1YWNiYTNhYTk5NTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvU2Nyb2xsYmFyVGhlbWVRdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Nj
cm9sbGJhclRoZW1lUXQuaApAQCAtNDAsMTkgKzQwLDE5IEBAIGNsYXNzIFNjcm9sbGJhclRoZW1l
UXQgOiBwdWJsaWMgU2Nyb2xsYmFyVGhlbWUgewogcHVibGljOgogICAgIHZpcnR1YWwgflNjcm9s
bGJhclRoZW1lUXQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXIqLCBHcmFw
aGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2aXJ0dWFsIGJv
b2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJ
bnRSZWN0JiBkYW1hZ2VSZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIo
U2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3Qp
OwogCi0gICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyKiwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3Qo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAotICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCk7Cisg
ICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Ny
b2xsYmFyUGFydCk7CiAKLSAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9sbGJhciop
OwotICAgIHZpcnR1YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwg
aW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBpbnQgdHJhY2tMZW5n
dGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXJU
aGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1l
Q2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNs
aWVudCopOworICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50
Kik7CiAKICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJv
bFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHAKaW5kZXggMzQzYmJiMjgwZWQ2YWY4
NDhmNTFjYzAwZWQ5OGYzMWY3ZTE3ZTI0OC4uMWNjNTM4NWUxODdhMjJlYWYxYjA1NWUzNGJlMGZm
NjQzODkyOWIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9s
bGJhclRoZW1lU2FmYXJpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Ny
b2xsYmFyVGhlbWVTYWZhcmkuY3BwCkBAIC0xMDQsMTQgKzEwNCwxNCBAQCBpbnQgU2Nyb2xsYmFy
VGhlbWVTYWZhcmk6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250
cm9sU2l6ZSkKICAgICByZXR1cm4gY1Njcm9sbGJhclRoaWNrbmVzc1tjb250cm9sU2l6ZV07CiB9
CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpoYXNCdXR0b25zKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZW5hYmxlZCgp
ICYmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IAog
ICAgICAgICAgICAgIHNjcm9sbGJhci0+d2lkdGgoKSA6IAogICAgICAgICAgICAgIHNjcm9sbGJh
ci0+aGVpZ2h0KCkpID49IDIgKiAoY1JlYWxCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9s
U2l6ZSgpXSAtIGNCdXR0b25IaXRJbnNldFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldKTsKIH0K
IAotYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIpCitib29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiBzY3JvbGxiYXItPmVuYWJsZWQoKSAmJiAo
c2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyAKICAgICAg
ICAgICAgICBzY3JvbGxiYXItPndpZHRoKCkgOiAKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMg
SW50UmVjdCBidXR0b25SZXBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBidXR0b25SZWN0LCBTY3Jv
bGxiYXJPcmllbnRhdGlvbgogICAgIHJldHVybiBwYWludFJlY3Q7CiB9CiAKLUludFJlY3QgU2Ny
b2xsYmFyVGhlbWVTYWZhcmk6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBT
Y3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1l
U2FmYXJpOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBT
Y3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCiB7CiAgICAgSW50UmVjdCByZXN1bHQ7
CiAKQEAgLTE1Miw3ICsxNTIsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpiYWNr
QnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydAogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmZvcndhcmRCdXR0
b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFp
bnRpbmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpmb3J3YXJkQnV0dG9uUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wg
cGFpbnRpbmcpCiB7CiAgICAgSW50UmVjdCByZXN1bHQ7CiAgICAgCkBAIC0xODEsNyArMTgxLDcg
QEAgc3RhdGljIEludFJlY3QgdHJhY2tSZXBhaW50UmVjdChjb25zdCBJbnRSZWN0JiB0cmFja1Jl
Y3QsIFNjcm9sbGJhck9yaWVudGF0aW9uIG8KICAgICByZXR1cm4gcGFpbnRSZWN0OwogfQogCi1J
bnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIGJvb2wgcGFpbnRpbmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjp0cmFja1Jl
Y3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCBwYWludGluZykKIHsKICAg
ICBpZiAocGFpbnRpbmcgfHwgIWhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkKICAgICAgICAgcmV0dXJu
IHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7CkBAIC0xOTMsMzYgKzE5MywzNiBAQCBJbnRSZWN0IFNj
cm9sbGJhclRoZW1lU2FmYXJpOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wg
cGFpbnRpbmcpCiAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+
eSgpICsgY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldLCB0aGlja25lc3Ms
IHNjcm9sbGJhci0+aGVpZ2h0KCkgLSAyICogY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRy
b2xTaXplKCldKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lU2FmYXJpOjptaW5pbXVtVGh1bWJM
ZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Om1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAg
IHJldHVybiBjVGh1bWJNaW5MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXTsKIH0KIAot
Ym9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIq
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVTYWZh
cmk6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4gZXZ0LnNoaWZ0S2V5KCkgJiYgZXZ0
LmJ1dHRvbigpID09IExlZnRCdXR0b247CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6
OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdHJhY2tSZWN0KQordm9pZCBTY3Jv
bGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHRyYWNrUmVjdCkKIHsKICAgICBpZiAoIVNhZmFyaVRoZW1lTGlicmFyeSgpKQogICAg
ICAgICByZXR1cm47CiAgICAgTlNDb250cm9sU2l6ZSBzaXplID0gc2Nyb2xsYmFyLT5jb250cm9s
U2l6ZSgpID09IFNtYWxsU2Nyb2xsYmFyID8gTlNTbWFsbENvbnRyb2xTaXplIDogTlNSZWd1bGFy
Q29udHJvbFNpemU7CiAgICAgVGhlbWVDb250cm9sU3RhdGUgc3RhdGUgPSAwOwotICAgIGlmIChz
Y3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlzQWN0aXZlKCkpCisgICAgaWYgKHNjcm9sbGJh
ci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQogICAgICAgICBzdGF0ZSB8PSBBY3RpdmVTdGF0
ZTsKICAgICBpZiAoaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICBzdGF0ZSB8PSBFbmFi
bGVkU3RhdGU7CiAgICAgcGFpbnRUaGVtZVBhcnQoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09
IFZlcnRpY2FsU2Nyb2xsYmFyID8gVlNjcm9sbFRyYWNrUGFydCA6IEhTY3JvbGxUcmFja1BhcnQs
IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHRyYWNrUmVjdCwgc2l6ZSwgc3Rh
dGUpOyAKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0b24oR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiBidXR0b25SZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJhclRo
ZW1lU2FmYXJpOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgYnV0dG9uUmVj
dCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGlmICghU2FmYXJpVGhlbWVMaWJyYXJ5KCkp
CiAgICAgICAgIHJldHVybjsKICAgICBOU0NvbnRyb2xTaXplIHNpemUgPSBzY3JvbGxiYXItPmNv
bnRyb2xTaXplKCkgPT0gU21hbGxTY3JvbGxiYXIgPyBOU1NtYWxsQ29udHJvbFNpemUgOiBOU1Jl
Z3VsYXJDb250cm9sU2l6ZTsKICAgICBUaGVtZUNvbnRyb2xTdGF0ZSBzdGF0ZSA9IDA7Ci0gICAg
aWYgKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSkKKyAgICBpZiAoc2Ny
b2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAgICAgICAgIHN0YXRlIHw9IEFjdGl2
ZVN0YXRlOwogICAgIGlmIChoYXNCdXR0b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHN0YXRlIHw9
IEVuYWJsZWRTdGF0ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVT
YWZhcmk6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBTY3Jv
bGxiCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblJlY3QsIHNpemUsIHN0YXRlKTsKIH0K
IAotdm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRo
dW1iUmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50VGh1bWIoR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKIHsKICAgICBpZiAoIVNhZmFyaVRoZW1lTGlicmFy
eSgpKQogICAgICAgICByZXR1cm47CiAgICAgTlNDb250cm9sU2l6ZSBzaXplID0gc2Nyb2xsYmFy
LT5jb250cm9sU2l6ZSgpID09IFNtYWxsU2Nyb2xsYmFyID8gTlNTbWFsbENvbnRyb2xTaXplIDog
TlNSZWd1bGFyQ29udHJvbFNpemU7CiAgICAgVGhlbWVDb250cm9sU3RhdGUgc3RhdGUgPSAwOwot
ICAgIGlmIChzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlzQWN0aXZlKCkpCisgICAgaWYg
KHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQogICAgICAgICBzdGF0ZSB8PSBB
Y3RpdmVTdGF0ZTsKICAgICBpZiAoaGFzVGh1bWIoc2Nyb2xsYmFyKSkKICAgICAgICAgc3RhdGUg
fD0gRW5hYmxlZFN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1Njcm9sbGJhclRoZW1lU2FmYXJpLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Ny
b2xsYmFyVGhlbWVTYWZhcmkuaAppbmRleCBmMDM5Mzc5ZWE0NDcwOGU4YjViNzVmOTYwNTUzMmZl
MTFkNjI2NTkyLi5mNDI3YjE5MGZkNjc2NjUyMTU2NzU2NmNiNmNiYzRkZmU0M2Q5OTI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmku
aApAQCAtNDEsMjAgKzQxLDIwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHND
b250cm9sVGludHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHByb3RlY3RlZDoKLSAgICB2
aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFz
VGh1bWIoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIq
LCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50
UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBh
aW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFy
KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRv
blJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5n
ID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxi
YXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Cisg
ICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wg
cGFpbnRpbmcgPSBmYWxzZSk7CiAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgo
U2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJh
clRoZW1lQ2xpZW50Kik7CiAgICAgCi0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1
bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBi
b29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3Vu
ZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0
IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihH
cmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRv
bihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3Qm
LCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3Bw
CmluZGV4IGQzNjM0MTA2ODQ4N2ZmMWI3ODY5NzY4ZTlkNWY2YjJmNDg5ODFhYTUuLjU2NDQyOTdk
N2YyNzBjNTBjN2EyOGVmM2IxZTI0YWNmMWQxMjc5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcApAQCAtMTMwLDEyICsxMzAsMTIg
QEAgYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6aW52YWxpZGF0ZU9uTW91c2VFbnRlckV4aXQoKQog
ICAgIHJldHVybiBydW5uaW5nVmlzdGE7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVXaW46Omhh
c1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6aGFz
VGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gdGh1
bWJMZW5ndGgoc2Nyb2xsYmFyKSA+IDA7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46
OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQs
IGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAg
ICAgLy8gV2luZG93cyBqdXN0IGhhcyBzaW5nbGUgYXJyb3dzLgogICAgIGlmIChwYXJ0ID09IEJh
Y2tCdXR0b25FbmRQYXJ0KQpAQCAtMTU0LDcgKzE1NCw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhl
bWVXaW46OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0
IHBhCiAgICAgICAgICAgICAgICAgICAgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIDwg
MiAqIHRoaWNrbmVzcyA/IHNjcm9sbGJhci0+aGVpZ2h0KCkgLyAyIDogdGhpY2tuZXNzKTsKIH0K
IAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFy
VGhlbWVXaW46OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICAvLyBXaW5kb3dzIGp1c3QgaGFz
IHNpbmdsZSBhcnJvd3MuCiAgICAgaWYgKHBhcnQgPT0gRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCkK
QEAgLTE3NSw3ICsxNzUsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpmb3J3YXJkQnV0
dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydAogICAgIHJldHVybiBJ
bnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIHNjcm9sbGJhci0+aGVpZ2h0
KCkgLSBoLCB0aGlja25lc3MsIGgpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjp0
cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRo
ZW1lV2luOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCkK
IHsKICAgICBpbnQgdGhpY2tuZXNzID0gc2Nyb2xsYmFyVGhpY2tuZXNzKCk7CiAgICAgaWYgKHNj
cm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CkBAIC0xODgs
MTIgKzE4OCwxMiBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjp0cmFja1JlY3QoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIGJvb2wpCiAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCks
IHNjcm9sbGJhci0+eSgpICsgdGhpY2tuZXNzLCB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0
KCkgLSAyICogdGhpY2tuZXNzKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6c2hvdWxk
Q2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkK
K2Jvb2wgU2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4g
ZXZ0LnNoaWZ0S2V5KCkgJiYgZXZ0LmJ1dHRvbigpID09IExlZnRCdXR0b247CiB9CiAKLWJvb2wg
U2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFy
VGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIC8vIEZp
bmQgdGhlIHJlY3Qgd2l0aGluIHdoaWNoIHdlIHNob3VsZG4ndCBzbmFwLCBieSBleHBhbmRpbmcg
dGhlIHRyYWNrIHJlY3QKICAgICAvLyBpbiBib3RoIGRpbWVuc2lvbnMuCkBAIC0yMTEsMTQgKzIx
MSwxNCBAQCBib29sIFNjcm9sbGJhclRoZW1lV2luOjpzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdp
bihTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUAogICAgIHJldHVybiAhcmVjdC5jb250YWlu
cyhtb3VzZVBvc2l0aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFj
a0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VHJh
Y2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBKdXN0IGFzc3Vt
ZSBhIGZvcndhcmQgdHJhY2sgcGFydC4gIFdlIG9ubHkgcGFpbnQgdGhlIHRyYWNrIGFzIGEgc2lu
Z2xlIHBpZWNlIHdoZW4gdGhlcmUgaXMgbm8gdGh1bWIuCiAgICAgaWYgKCFoYXNUaHVtYihzY3Jv
bGxiYXIpKQogICAgICAgICBwYWludFRyYWNrUGllY2UoY29udGV4dCwgc2Nyb2xsYmFyLCByZWN0
LCBGb3J3YXJkVHJhY2tQYXJ0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRU
cmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCit2b2lkIFNjcm9s
bGJhclRoZW1lV2luOjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3Jv
bGxiYXJQYXJ0IHBhcnRUeXBlKQogewogICAgIGNoZWNrQW5kSW5pdFNjcm9sbGJhclRoZW1lKCk7
CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNr
UGllY2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcgogI2VuZGlmCiB9
CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9s
bGJhclBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50QnV0dG9uKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGNoZWNrQW5kSW5p
dFNjcm9sbGJhclRoZW1lKCk7CiAKQEAgLTMzOSw3ICszMzksNyBAQCBzdGF0aWMgSW50UmVjdCBn
cmlwcGVyUmVjdChpbnQgdGhpY2tuZXNzLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3QpCiAgICAg
ICAgICAgICAgICAgICAgZ3JpcHBlclRoaWNrbmVzcywgZ3JpcHBlclRoaWNrbmVzcyk7CiB9CiAK
LXN0YXRpYyB2b2lkIHBhaW50R3JpcHBlcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgSERDIGhkYywg
Y29uc3QgSW50UmVjdCYgcmVjdCkKK3N0YXRpYyB2b2lkIHBhaW50R3JpcHBlcihTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBIREMgaGRjLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewog
ICAgIGlmICghc2Nyb2xsYmFyVGhlbWUpCiAgICAgICAgIHJldHVybjsgIC8vIENsYXNzaWMgbG9v
ayBoYXMgbm8gZ3JpcHBlci4KQEAgLTM1OCw3ICszNTgsNyBAQCBzdGF0aWMgdm9pZCBwYWludEdy
aXBwZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiAgICAgRHJhd1RoZW1lQmFja2dyb3VuZChzY3JvbGxiYXJUaGVtZSwgaGRjLCBzY3JvbGxiYXIt
Pm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IFNQX0dSSVBQRVJIT1IgOiBT
UF9HUklQUEVSVkVSVCwgc3RhdGUsICZ0aGVtZVJlY3QsIDApOwogfQogCi12b2lkIFNjcm9sbGJh
clRoZW1lV2luOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lV2lu
OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBjaGVja0FuZEluaXRT
Y3JvbGxiYXJUaGVtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2Nyb2xsYmFyVGhlbWVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3Jv
bGxiYXJUaGVtZVdpbi5oCmluZGV4IGNkMmYxNzZkZmRjOTczODJjMzViYjc3M2Y5YjFlOGRhZDIx
Mjc2YjYuLjg3MDI0MGMxNjU1OGNmMGY2MjU3NDE5NmVlYjY5YWFhODA2YTdhMjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oCkBAIC00Miwy
MCArNDIsMjAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpbnZhbGlkYXRlT25Nb3VzZUVu
dGVyRXhpdCgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Ny
b2xsYmFyKikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3Jv
bGxiYXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVu
dCopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3Jv
bGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1
YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBi
b29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Ny
b2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBh
aW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxz
ZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCos
IGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVy
T25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRS
ZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGll
Y2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0
JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNz
Q29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJh
clBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmNwcAppbmRleCBjOTI0OTc4
YTUwNWFjMzFmMTQwNTFlMzAxODMzMDY0MjUxM2M0YTUxLi5iYWRmMzE1NTQwNWE2YTUxMzY2MjMy
NWI5MjM1OWRjODEzYTk1MjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
eC9TY3JvbGxiYXJUaGVtZVd4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9T
Y3JvbGxiYXJUaGVtZVd4LmNwcApAQCAtNzEsMTkgKzcxLDE5IEBAIGludCBTY3JvbGxiYXJUaGVt
ZVd4OjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgc2l6ZSkKICAgICBy
ZXR1cm4gdGhpY2tuZXNzOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lV3g6Omhhc1RodW1iKFNj
cm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZVd4OjpoYXNUaHVtYihTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGp1
c3QgY2FsbGVkIGFzIGEgcGFpbnQtdGltZSBvcHRpbWl6YXRpb24gdG8gc2VlIGlmCiAgICAgLy8g
cGFpbnRpbmcgdGhlIHRodW1iIGNhbiBiZSBza2lwcGVkLiAgV2UgZG9uJ3QgaGF2ZSB0byBiZSBl
eGFjdCBoZXJlLgogICAgIHJldHVybiB0aHVtYkxlbmd0aChzY3JvbGxiYXIpID4gMDsKIH0KIAot
aW50IFNjcm9sbGJhclRoZW1lV3g6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9s
bGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVd4OjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gMjA7CiB9CiAKLUludFNpemUg
U2Nyb2xsYmFyVGhlbWVXeDo6YnV0dG9uU2l6ZShTY3JvbGxiYXIqKSAKK0ludFNpemUgU2Nyb2xs
YmFyVGhlbWVXeDo6YnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopIAogewogI2lmZGVm
IF9fV1hNQUNfXwogICAgIHJldHVybiBJbnRTaXplKDIwLDIwKTsKQEAgLTkyLDcgKzkyLDcgQEAg
SW50U2l6ZSBTY3JvbGxiYXJUaGVtZVd4OjpidXR0b25TaXplKFNjcm9sbGJhciopCiAjZW5kaWYK
IH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVd4OjpzcGxpdFRyYWNrKFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0LCBJbnRSZWN0JiBiZWZv
cmVUaHVtYlJlY3QsIEludFJlY3QmIHRodW1iUmVjdCwgSW50UmVjdCYgYWZ0ZXJUaHVtYlJlY3Qp
Cit2b2lkIFNjcm9sbGJhclRoZW1lV3g6OnNwbGl0VHJhY2soU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCwgSW50UmVj
dCYgYmVmb3JlVGh1bWJSZWN0LCBJbnRSZWN0JiB0aHVtYlJlY3QsIEludFJlY3QmIGFmdGVyVGh1
bWJSZWN0KQogewogICAgIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxpdFRyYWNrKHNjcm9s
bGJhciwgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCwgYmVmb3JlVGh1bWJSZWN0LCB0aHVtYlJlY3Qs
IGFmdGVyVGh1bWJSZWN0KTsKICNpZmRlZiBfX1dYTUFDX18KQEAgLTEwOSw3ICsxMDksNyBAQCB2
b2lkIFNjcm9sbGJhclRoZW1lV3g6OnNwbGl0VHJhY2soU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIHVuY29uc3RyYQogI2VuZGlmCiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhl
bWVXeDo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQg
cGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6YmFja0J1dHRvblJlY3QoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQog
ewogICAgIC8vIEZJWE1FOiBIYW5kbGluZyB0aGlzIGNhc2UgaXMgbmVlZGVkIHdoZW4gdGhlcmUg
YXJlIHR3byBzZXRzIG9mIGFycm93IGJ1dHRvbnMKICAgICAvLyBvbiBNYWMsIG9uZSBhdCB0aGUg
dG9wIGFuZCBvbmUgYXQgdGhlIGJvdHRvbS4KQEAgLTEzMCw3ICsxMzAsNyBAQCBJbnRSZWN0IFNj
cm9sbGJhclRoZW1lV3g6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3Jv
bGxiYXJQYXJ0IHBhcgogICAgIHJldHVybiBJbnRSZWN0KHgsIHksIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6Zm9yd2FyZEJ1dHRv
blJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKK0lu
dFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIC8vIEZJ
WE1FOiBIYW5kbGluZyB0aGlzIGNhc2UgaXMgbmVlZGVkIHdoZW4gdGhlcmUgYXJlIHR3byBzZXRz
IG9mIGFycm93IGJ1dHRvbnMKICAgICAvLyBvbiBNYWMsIG9uZSBhdCB0aGUgdG9wIGFuZCBvbmUg
YXQgdGhlIGJvdHRvbS4KQEAgLTE1NSw3ICsxNTUsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1l
V3g6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0
CiAgICAgcmV0dXJuIEludFJlY3QoeCwgeSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsK
IH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OnRyYWNrUmVjdChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sKQogewogICAgIEludFNpemUgYnMgPSBidXR0
b25TaXplKHNjcm9sbGJhcik7CiAgICAgaW50IHRyYWNrU3RhcnQgPSAwOwpAQCAtMTc5LDExICsx
NzksMTEgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIGJvb2wpCiAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9s
bGJhci0+eSgpICsgdHJhY2tTdGFydCwgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0g
MiAqIGJzLmhlaWdodCgpKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVd4OjpwYWludChTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiByZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZVd4OjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7CiAgICAgd3hPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IChzY3JvbGxiYXItPm9yaWVu
dGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgPyB3eEhPUklaT05UQUwgOiB3eFZFUlRJ
Q0FMOwogICAgIGludCBmbGFncyA9IDA7Ci0gICAgaWYgKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFy
ZWEoKS0+aXNBY3RpdmUoKSkKKyAgICBpZiAoc2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0
aXZlKCkpCiAgICAgICAgIGZsYWdzIHw9IHd4Q09OVFJPTF9GT0NVU0VEOwogICAgIAogICAgIGlm
ICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9T
Y3JvbGxiYXJUaGVtZVd4LmgKaW5kZXggNzVhYjE3NWEzYmE2MDRmY2Q3OTVhZDJlYTQ1ZWRmY2Y1
ODNlZTU1OC4uMzcyYWFmOTY2MmY3NDVkNGVlMDc0N2VkZjVjMTFmOWZjNWFkODk1OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guaApAQCAtMzUsMjEg
KzM1LDIxIEBAIGNsYXNzIFNjcm9sbGJhclRoZW1lV3ggOiBwdWJsaWMgU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGUgewogcHVibGljOgogICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lV3goKTsKICAg
ICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBS
ZWd1bGFyU2Nyb2xsYmFyKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3Jh
cGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludChT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsK
ICAgICAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIq
KSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciop
OworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNs
aWVudCopOwogCi0gICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKik7Cisg
ICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAot
ICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQ
YXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJk
QnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFs
c2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwor
ICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJ
bnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRpbmcgPSBm
YWxzZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3BsaXRUcmFjayhTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0JiB0cmFjaywgSW50UmVjdCYgc3RhcnRUcmFjaywgSW50UmVjdCYgdGh1bWIsIEludFJl
Y3QmIGVuZFRyYWNrKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3BsaXRUcmFjayhTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGNvbnN0IEludFJlY3QmIHRyYWNrLCBJbnRSZWN0JiBzdGFydFRyYWNrLCBJbnRS
ZWN0JiB0aHVtYiwgSW50UmVjdCYgZW5kVHJhY2spOwogICAgIAotICAgIHZpcnR1YWwgaW50IG1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1
bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaAppbmRleCA4MTBjOThmZjM2NjhhYjkxY2RlOWMz
NTcxOGQ2ZjA0YjJmNzQ2NzFiLi43ZmUyZmFjOGI4ZDQ5NzU0ZDhlYWIyM2Q0MDViMTYyYmUzM2Rj
N2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCkBAIC04
NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmVuZGVyU2Nyb2xs
YmFyUGFydCo+IG1fcGFydHM7CiB9OwogCi1pbmxpbmUgUmVuZGVyU2Nyb2xsYmFyKiB0b1JlbmRl
clNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2lubGluZSBSZW5kZXJTY3JvbGxiYXIq
IHRvUmVuZGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAg
ICAgQVNTRVJUKCFzY3JvbGxiYXIgfHwgc2Nyb2xsYmFyLT5pc0N1c3RvbVNjcm9sbGJhcigpKTsK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyU2Nyb2xsYmFyKj4oc2Nyb2xsYmFyKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCmlu
ZGV4IDg3MzA5ZDQ0ZTVhYTQ1MjY5NzlhZmViZTUxMjc4YjRlNDZhNWU5MTcuLjQ0ZTJhYTYzMWRj
MjgxNTAxNzRiYzIyNTIzMGU4YjZhYWI3ZDBkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhclRoZW1lLmgiCiAjaW5j
bHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDbGllbnQu
aCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTM2LDcgKzM3LDcgQEAgUmVuZGVyU2Nyb2xsYmFyVGhlbWUqIFJlbmRlclNjcm9sbGJhclRo
ZW1lOjpyZW5kZXJTY3JvbGxiYXJUaGVtZSgpCiAgICAgcmV0dXJuICZ0aGVtZTsKIH0KIAotdm9p
ZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhTY3JvbGxi
YXIqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSkKK3ZvaWQgUmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSkKIHsK
ICAgICBJbnRSZWN0IGZpcnN0QnV0dG9uID0gYmFja0J1dHRvblJlY3Qoc2Nyb2xsYmFyLCBCYWNr
QnV0dG9uU3RhcnRQYXJ0KTsKICAgICBJbnRSZWN0IHNlY29uZEJ1dHRvbiA9IGZvcndhcmRCdXR0
b25SZWN0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCk7CkBAIC01MSw3ICs1Miw3
IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGludCYKICAgICB9CiB9CiAKLWJvb2wgUmVuZGVyU2Nyb2xs
YmFyVGhlbWU6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFJlbmRlclNj
cm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIp
CiB7CiAgICAgaW50IHN0YXJ0U2l6ZTsKICAgICBpbnQgZW5kU2l6ZTsKQEAgLTU5LDI3ICs2MCwy
NyBAQCBib29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQogICAgIHJldHVybiAoc3RhcnRTaXplICsgZW5kU2l6ZSkgPD0gKHNjcm9sbGJhci0+
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gc2Nyb2xsYmFyLT53aWR0aCgp
IDogc2Nyb2xsYmFyLT5oZWlnaHQoKSk7CiB9CiAKLWJvb2wgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6
Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBSZW5kZXJTY3JvbGxiYXJUaGVt
ZTo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1
cm4gdHJhY2tMZW5ndGgoc2Nyb2xsYmFyKSAtIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikgPj0gMDsK
IH0KIAotaW50IFJlbmRlclNjcm9sbGJhclRoZW1lOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIpCitpbnQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1pbmltdW1UaHVtYkxl
bmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiB0b1Jl
bmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5taW5pbXVtVGh1bWJMZW5ndGgoKTsKIH0KIAotSW50
UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCitJbnRSZWN0IFJlbmRlclNjcm9s
bGJhclRoZW1lOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29sKQogewogICAgIHJldHVybiB0b1JlbmRlclNj
cm9sbGJhcihzY3JvbGxiYXIpLT5idXR0b25SZWN0KHBhcnRUeXBlKTsKIH0KIAotSW50UmVjdCBS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCitJbnRSZWN0IFJlbmRlclNjcm9sbGJh
clRoZW1lOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29sKQogewogICAgIHJldHVybiB0b1JlbmRlclNj
cm9sbGJhcihzY3JvbGxiYXIpLT5idXR0b25SZWN0KHBhcnRUeXBlKTsKIH0KIAotSW50UmVjdCBS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29s
KQorSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgaWYgKCFoYXNCdXR0b25zKHNjcm9sbGJh
cikpCiAgICAgICAgIHJldHVybiBzY3JvbGxiYXItPmZyYW1lUmVjdCgpOwpAQCAtOTEsNyArOTIs
NyBAQCBJbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIGJvb2wpCiAgICAgcmV0dXJuIHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhcikt
PnRyYWNrUmVjdChzdGFydExlbmd0aCwgZW5kTGVuZ3RoKTsKIH0KIAotSW50UmVjdCBSZW5kZXJT
Y3JvbGxiYXJUaGVtZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXIq
IHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK0ludFJlY3QgUmVuZGVyU2Nyb2xsYmFy
VGhlbWU6OmNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsgCiAgICAgSW50UmVjdCBiYWNr
UmVjdCA9IHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnRyYWNrUGllY2VSZWN0V2l0aE1h
cmdpbnMoQmFja1RyYWNrUGFydCwgcmVjdCk7CiAgICAgSW50UmVjdCBmb3J3YXJkUmVjdCA9IHRv
UmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnRyYWNrUGllY2VSZWN0V2l0aE1hcmdpbnMoRm9y
d2FyZFRyYWNrUGFydCwgcmVjdCk7CkBAIC0xMTIsMjcgKzExMywyNyBAQCB2b2lkIFJlbmRlclNj
cm9sbGJhclRoZW1lOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250
ZXh0KiBjb250ZQogICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0
ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9s
bGJhciogc2Nyb2xsYmFyKQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRTY3JvbGxi
YXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhcikKIHsKICAgICB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5wYWlu
dFBhcnQoY29udGV4dCwgU2Nyb2xsYmFyQkdQYXJ0LCBzY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsK
IH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tncm91bmQoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tCYWNrZ3JvdW5k
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxi
YXIpLT5wYWludFBhcnQoY29udGV4dCwgVHJhY2tCR1BhcnQsIHJlY3QpOwogfQogCi12b2lkIFJl
bmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFy
UGFydCBwYXJ0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja1BpZWNlKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIHRvUmVuZGVy
U2Nyb2xsYmFyKHNjcm9sbGJhciktPnBhaW50UGFydChjb250ZXh0LCBwYXJ0LCByZWN0KTsKIH0K
IAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Ny
b2xsYmFyUGFydCBwYXJ0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24o
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgdG9SZW5k
ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+cGFpbnRQYXJ0KGNvbnRleHQsIHBhcnQsIHJlY3QpOwog
fQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2
b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKICAgICB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5wYWludFBhcnQoY29udGV4
dCwgVGh1bWJQYXJ0LCByZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggNzBjMjRhNWVhMmVkNzliYjlmOGZhZDAyMTM3YzYz
NTY5ZDk5NjNjNC4uZWM5MmJkYzkzOTNhY2M2ZjJkYTZhMTc0Zjc3YjlmM2VhMTQxZmU2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKQEAg
LTQ2LDM1ICs0NiwzNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxD
b3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVj
dCYgY29ybmVyUmVjdCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgeyBy
ZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNob3VsZENlbnRlck9uVGh1bWIoc2Nyb2xs
YmFyLCBldmVudCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2
ZW50KSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2hvdWxkQ2VudGVyT25UaHVt
YihzY3JvbGxiYXIsIGV2ZW50KTsgfQogICAgIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxB
dXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5p
bml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKTsgfQogICAgIHZpcnR1YWwgZG91YmxlIGF1dG9z
Y3JvbGxUaW1lckRlbGF5KCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPmF1dG9z
Y3JvbGxUaW1lckRlbGF5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJh
cihTY3JvbGxiYXIqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkt
PnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdp
c3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFyVGhl
bWU6OnRoZW1lKCktPnVucmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQorICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
KSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cmVnaXN0ZXJTY3JvbGxiYXIoc2Ny
b2xsYmFyKTsgfQorICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgp
LT51bnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KIAotICAgIHZpcnR1YWwgaW50IG1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1
bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZvaWQgYnV0dG9uU2l6ZXNB
bG9uZ1RyYWNrQXhpcyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQm
IGFmdGVyU2l6ZSk7CisgICAgdm9pZCBidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGludCYgYmVmb3JlU2l6ZSwgaW50JiBhZnRlclNpemUp
OwogICAgIAogICAgIHN0YXRpYyBSZW5kZXJTY3JvbGxiYXJUaGVtZSogcmVuZGVyU2Nyb2xsYmFy
VGhlbWUoKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9s
bGJhciopOwotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKTsKKyAgICB2aXJ0
dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwg
Ym9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAgdmlydHVhbCBJbnRS
ZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRp
bmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9s
bGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVh
bCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwor
ICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCos
IFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRS
ZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFy
dCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKICAgICAKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhciopOyAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQo
R3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1
YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29u
c3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRv
bihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFy
UGFydCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJh
ckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsgICAg
CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50
UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwogCi0g
ICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xs
YmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgSW50UmVjdCBjb25zdHJhaW5UcmFj
a1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYp
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128552</attachid>
            <date>2012-02-23 13:59:11 -0800</date>
            <delta_ts>2012-02-23 16:54:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78028-20120223165910.patch</filename>
            <type>text/plain</type>
            <size>137804</size>
            <attacher name="Peter Kotwicz">pkotwicz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTkwNGZmYTlmZThhMjRm
Y2Y4NDg2MmJjYmZjYmY0YTAwNWFiODE1OS4uMjIyNjM4ZmVmMjMzOTY1Zjg4YTU2NmQ4ODgwMjQ5
OWQ2ODIxNzgwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2NCBAQAorMjAxMi0wMi0yMiAgUGV0
ZXIgS290d2ljeiAgPHBrb3R3aWN6QGdvb2dsZS5jb20+CisKKyAgICAgICAgRGVjb3VwbGUgc2Ny
b2xsYmFyIHBhaW50aW5nIGZyb20gU2Nyb2xsYmFyIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwMjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmdldFRpY2ttYXJr
cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUp
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5oOgorICAgICAgICAoU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6b3JpZW50YXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmN1
cnJlbnRQb3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp2aXNpYmxlU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnRvdGFsU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXI6Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpjb250
cm9sU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmxpbmVTdGVwKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFnZVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyOjpwcmVzc2VkUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmhvdmVy
ZWRQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXI6OngpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp5
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6d2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bG9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpy
b290KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZnJhbWVSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXI6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWU6OnVwZGF0ZUVuYWJsZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6
OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnVwZGF0ZVNjcm9s
bGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6aW52
YWxpZGF0ZVBhcnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjppbnZhbGlk
YXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkQ2VudGVy
T25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkU25hcEJh
Y2tUb0RyYWdPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnNob3Vs
ZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lOjp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Ojp0aHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dHJhY2tQ
b3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dHJhY2tMZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDbGllbnQ6On5TY3JvbGxiYXJUaGVtZUNsaWVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpoaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayk6CisgICAgICAgIChXZWJD
b3JlOjp1c2VkVG90YWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjp0aHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZTo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aCk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNj
cm9sbGJhckJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlOjpwYWludFRyYWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRpY2ttYXJrcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNl
cyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpoYXNUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpiYWNrQnV0dG9uUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpmb3J3YXJkQnV0
dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjp0cmFj
a1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRU
cmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bTo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21p
dW06Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bSk6CisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50
U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNo
cm9taXVtQW5kcm9pZDo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YnV0dG9uU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6bWluaW11bVRodW1iTGVuZ3RoKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9p
ZC5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQpOgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50
QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6
cGFpbnRUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGlu
dXg6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaDoKKyAgICAgICAgKFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50R2l2ZW5U
aWNrbWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3Np
Y1RoZW1lU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bjo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtV2luOjpidXR0b25TaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmg6CisgICAgICAgIChTY3JvbGxiYXJUaGVtZUNocm9t
aXVtV2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVFZmw6OnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lRWZsOjp1bnJlZ2lzdGVyU2Nyb2xsYmFy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaDoKKyAgICAgICAg
KFNjcm9sbGJhclRoZW1lRWZsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhl
bWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUd0azo6cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVHdGs6OnVucmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRoaWNrbmVzcyk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lR3RrOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lR3RrOjp0aHVtYlJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVHdGs6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpzaG91
bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpi
dXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjptaW5pbXVt
VGh1bWJMZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5o
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6Omhhc0J1dHRvbnMpOgorICAg
ICAgICAoU2Nyb2xsYmFyVGhlbWVHdGspOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxi
YXJUaGVtZUd0azIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0V2lkZ2V0Rm9yU2Nyb2xsYmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxi
YXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWlu
dFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRv
bik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dy
b3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRCdXR0b24pOgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oOgorICAgICAgICAoU2Nyb2xs
YmFyVGhlbWVNYWMpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVN
YWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
TWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1dHRvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lTWFjOjpzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlRW5hYmxlZFN0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxhdGZv
cm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVNb2NrOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZU1vY2s6OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xs
YmFyVGhlbWVNb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6Omhh
c0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpoYXNUaHVt
Yik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OmJhY2tCdXR0b25SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6Zm9yd2FyZEJ1dHRvblJl
Y3QpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVNb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9x
dC9TY3JvbGxiYXJUaGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlT3B0aW9uU2xp
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnBhaW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVRdDo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZVF0OjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lUXQ6OnRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lUXQ6OnRyYWNrUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVRdDo6dHJhY2tMZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1l
UXQuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lUXQpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZVNhZmFyaTo6aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZh
cmk6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2Fm
YXJpOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2Fm
YXJpOjptaW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVTYWZhcmk6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVTYWZhcmk6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUaHVtYik6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L1Njcm9sbGJhclRoZW1lU2FmYXJpLmg6CisgICAgICAgIChTY3JvbGxiYXJUaGVtZVNhZmFyaSk6
CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZVdpbjo6YmFja0J1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVXaW46OmZvcndhcmRCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lV2luOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVXaW46OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJD
b3JlOjpwYWludEdyaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46
OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5o
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46Omhhc0J1dHRvbnMpOgorICAg
ICAgICAoU2Nyb2xsYmFyVGhlbWVXaW4pOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJh
clRoZW1lV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzVGh1
bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6bWluaW11bVRodW1iTGVu
Z3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV3g6OmJ1dHRvblNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6c3BsaXRUcmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4OjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVXeDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJh
clRoZW1lV3guaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lV3gpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzQnV0dG9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNjcm9sbGJhci5oOgorICAgICAgICAoV2ViQ29yZTo6dG9SZW5kZXJTY3JvbGxiYXIpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzQnV0dG9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzVGh1bWIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1pbmltdW1UaHVtYkxlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YmFja0J1dHRvblJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmZvcndhcmRCdXR0b25SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVj
dFRvVHJhY2tQaWVjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJUaGVtZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xs
YmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNj
cm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFJlbmRlclNjcm9s
bGJhclRoZW1lKToKKwogMjAxMi0wMi0yMiAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtleHBlcmltZW50YWxdIGFkZCBhIG1v
ZGUgdG8gZGlzcGxheSB0aW1lbGluZSBldmVudHMgYWxpZ25lZCBieSB0aGUgc3RhcnQgdGltZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IDU4Y2FhYTFjOGNmNjBmYTYwYjA2YmMxZTE0M2JiNWVhOTZhYmEy
NzEuLjNhZDE4NWJiMWFiODViMzFjYzJkNWQ3NmEzYzkwYjU3MzEyZTE4OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTI5Miw2ICsyOTIsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGFi
bGVBcmVhLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGJhci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9T
Y3JvbGxiYXJUaGVtZUNsaWVudC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TZWFyY2hQb3B1
cE1lbnUuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJiN2Q3Njc5
NGUzMGJlNjU4YTZjZjIxNzdmOGRmZTQwNjRiZjRmMzEuLjAxYzBkZWFmYjM5OTRmMTQzZDJhNTFl
YmI1Y2Q5MDc3Y2Q1NWFjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU4OTMsNiArNTg5Myw3IEBACiAJCUU0QzI3OTU5MENG
OTc0MTkwMEU5N0I5OCAvKiBSZW5kZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTRDMjc5NTcwQ0Y5NzQxOTAwRTk3Qjk4IC8qIFJlbmRlck1l
ZGlhLmggKi87IH07CiAJCUU0RDY4Nzc3MEVEN0FFM0QwMDZFQTk3OCAvKiBQdXJnZWFibGVCdWZm
ZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTRENjg3NzYwRUQ3QUUzRDAwNkVBOTc4IC8qIFB1cmdlYWJsZUJ1ZmZlck1hYy5jcHAgKi87IH07
CiAJCUU0RDY4Nzc5MEVEN0FFNEYwMDZFQTk3OCAvKiBQdXJnZWFibGVCdWZmZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0RDY4Nzc4MEVEN0FFNEYw
MDZFQTk3OCAvKiBQdXJnZWFibGVCdWZmZXIuaCAqLzsgfTsKKwkJRUI0OURCOEYxNEY0NkU4QjAw
MjI5OUQ5IC8qIElEQlRyYWNpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEVCNDlEQjhFMTRGNDZFOEIwMDIyOTlEOSAvKiBJREJUcmFjaW5nLmggKi87
IH07CiAJCUVEMkJBODNDMDlBMjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUQyQkE4M0IwOUEyNEI5
MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRUQ1MDFEQzYwQjI0OUYyOTAwQUUxOEQ5IC8qIEVkaXRv
ck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVE
NTAxREM1MEIyNDlGMjkwMEFFMThEOSAvKiBFZGl0b3JNYWMubW0gKi87IH07CiAJCUVERTNBNTAw
MEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRURFM0E0RkYwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFj
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEy
NTgyLDYgKzEyNTgzLDcgQEAKIAkJQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VF
dmVudERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFn
ZUV2ZW50RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNUY3NjVC
NDE0RTFENDE0MDA2Qzg5OUIgLyogUGFzdGVib2FyZFN0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBhc3RlYm9hcmRTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDNUY3NjVCQTE0RTFFQ0Y0MDA2Qzg5OUIgLyogUGxhdGZvcm1QYXN0ZWJv
YXJkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZv
cm1QYXN0ZWJvYXJkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjkxNjE0
NzE0RjZFQkE3MDA0NjM3NUMgLyogU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsYmFyVGhlbWVDbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzZENzRBRDMwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVj
dGlvbkxpc3RMZXZlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2RpZnlT
ZWxlY3Rpb25MaXN0TGV2ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZENzRB
RTMwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkYwOEZCOTE0MzBGRThGMDA2ODU4
NDkgLyogTXV0YXRpb25SZWNvcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTXV0YXRpb25SZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTI2MzYsNiArMTI2MzgsNyBAQAogCQlDRTA1N0ZBMzEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNFMDU3RkE0MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRNYXJrZXJDb250
cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNTRGRDM3MTAxNkQ5QTYw
MDhCNDRDOCAvKiBTY3JpcHRTb3VyY2VQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHRTb3VyY2VQcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDRTVDQjFCMzE0RURBQjZGMDBCQjI3OTUgLyogRXZlbnRTZW5kZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRTZW5kZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0VBMzk0OUExMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXRO
b2RlTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdGF0aWNI
YXNoU2V0Tm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUEzOTQ5
QjExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5vZGVMaXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpY0hhc2hTZXROb2RlTGlzdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRUNDRkMzQTE0MTk3M0Q1MDAyQTBBQzEgLyogRGVjb2RlRXNj
YXBlU2VxdWVuY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERlY29kZUVz
Y2FwZVNlcXVlbmNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI5MzMsNiAr
MTI5MzYsNyBAQAogCQlFNEMyNzk1NzBDRjk3NDE5MDBFOTdCOTggLyogUmVuZGVyTWVkaWEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWVkaWEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRENjg3NzYwRUQ3QUUzRDAwNkVBOTc4IC8qIFB1cmdlYWJs
ZUJ1ZmZlck1hYy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQdXJn
ZWFibGVCdWZmZXJNYWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEQ2ODc3
ODBFRDdBRTRGMDA2RUE5NzggLyogUHVyZ2VhYmxlQnVmZmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFB1cmdlYWJsZUJ1ZmZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFQjQ5REI4RTE0RjQ2RThCMDAyMjk5RDkgLyogSURCVHJhY2luZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJUcmFjaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUVEMkJBODNCMDlBMjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudE1hcmtlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFRDUwMURDNTBCMjQ5RjI5MDBBRTE4RDkgLyogRWRp
dG9yTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEVkaXRv
ck1hYy5tbTsgcGF0aCA9IG1hYy9FZGl0b3JNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUVERTNBNEZGMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb2xvck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTM4NzQsNiArMTM4NzgsNyBAQAogCQkxQUU4MkVDOTBDQUFFMTc3MDAyMjM3QUUg
Lyogc3RvcmFnZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJ
CQkJRUI0OURCOEUxNEY0NkU4QjAwMjI5OUQ5IC8qIElEQlRyYWNpbmcuaCAqLywKIAkJCQlCNUI1
REM2NzExOUJCM0Q1MDAyQTg3OTAgLyogQWJzdHJhY3REYXRhYmFzZS5jcHAgKi8sCiAJCQkJQjVC
NURDNjgxMTlCQjNENTAwMkE4NzkwIC8qIEFic3RyYWN0RGF0YWJhc2UuaCAqLywKIAkJCQk1MTQx
ODVFRDBDRDY1RjA0MDA3NjNDOTkgLyogQ2hhbmdlVmVyc2lvbldyYXBwZXIuY3BwICovLApAQCAt
MTk5MTcsNiArMTk5MjIsNyBAQAogCQkJCUJDQUE5MEMyMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3Jv
bGxiYXIuY3BwICovLAogCQkJCUJDN0IyQUY4MDQ1MDgyNDEwMEE4MDAwRiAvKiBTY3JvbGxiYXIu
aCAqLywKIAkJCQkwRkU3MTQxNTE0MjE4OUZDMDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWUuY3Bw
ICovLAorCQkJCUM2OTE2MTQ3MTRGNkVCQTcwMDQ2Mzc1QyAvKiBTY3JvbGxiYXJUaGVtZUNsaWVu
dC5oICovLAogCQkJCUJDOEI4NTRBMEU3QzdGNTYwMEFCNjk4NCAvKiBTY3JvbGxiYXJUaGVtZS5o
ICovLAogCQkJCUJDMTQwMjg4MEU4MzY4MDgwMDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZS5jcHAgKi8sCiAJCQkJQkMxNDAyODkwRTgzNjgwODAwMzE5NzE3IC8qIFNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlLmggKi8sCkBAIC0yMDY5Niw2ICsyMDcwMiw3IEBACiAJCQkJOTM5ODg1QzEw
OEI3RTNEMTAwRTcwN0M0IC8qIEV2ZW50TmFtZXMuY3BwICovLAogCQkJCTkzOTg4NUMyMDhCN0Uz
RDEwMEU3MDdDNCAvKiBFdmVudE5hbWVzLmggKi8sCiAJCQkJOEY2NzU2MTkxMjg4QjE3QjAwNDdB
Q0EzIC8qIEV2ZW50UXVldWUuaCAqLywKKwkJCQlDRTVDQjFCMzE0RURBQjZGMDBCQjI3OTUgLyog
RXZlbnRTZW5kZXIuaCAqLywKIAkJCQlFMTJFREJFOTBCMzA4RTBCMDAyNzA0QjYgLyogRXZlbnRU
YXJnZXQuY3BwICovLAogCQkJCUUxMkVEQjdBMEIzMDhBNzgwMDI3MDRCNiAvKiBFdmVudFRhcmdl
dC5oICovLAogCQkJCTg1QUZBNzQyMEFBRjI5ODQwMEU4NDMwNSAvKiBFdmVudFRhcmdldC5pZGwg
Ki8sCkBAIC0yNDMzMiw2ICsyNDMzOSw3IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5
IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5
QzAwQzEzMzc5IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENTM3MzUzMTM3
QjY1MTgwMDAwOERDRSAvKiBaZXJvUG9sZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRUI0OURCOEYx
NEY0NkU4QjAwMjI5OUQ5IC8qIElEQlRyYWNpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKaW5kZXggM2I5YzE5NWNmZjU1MzkxNjU1NjIwM2UyZjJj
YzRmZTVkOGY5YTUxZS4uZTM5MjU0YzYxZmIyOWMxMTJlMWU5ZDY4MjBkZThhNjI5ZjRmNDFmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC0xMTIsNiArMTEyLDc5IEBA
IFNjcm9sbGJhcjo6flNjcm9sbGJhcigpCiAgICAgbV90aGVtZS0+dW5yZWdpc3RlclNjcm9sbGJh
cih0aGlzKTsKIH0KIAordm9pZCBTY3JvbGxiYXI6OnNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0
JiByZWN0KQoreworICAgIC8vIEdldCBvdXIgd2luZG93IHJlc2l6ZXIgcmVjdCBhbmQgc2VlIGlm
IHdlIG92ZXJsYXAuICBBZGp1c3QgdG8gYXZvaWQgdGhlIG92ZXJsYXAKKyAgICAvLyBpZiBuZWNl
c3NhcnkuCisgICAgSW50UmVjdCBhZGp1c3RlZFJlY3QocmVjdCk7CisgICAgYm9vbCBvdmVybGFw
c1Jlc2l6ZXIgPSBmYWxzZTsKKyAgICBTY3JvbGxWaWV3KiB2aWV3ID0gcGFyZW50KCk7CisgICAg
aWYgKHZpZXcgJiYgIXJlY3QuaXNFbXB0eSgpICYmICF2aWV3LT53aW5kb3dSZXNpemVyUmVjdCgp
LmlzRW1wdHkoKSkgeworICAgICAgICBJbnRSZWN0IHJlc2l6ZXJSZWN0ID0gdmlldy0+Y29udmVy
dEZyb21Db250YWluaW5nV2luZG93KHZpZXctPndpbmRvd1Jlc2l6ZXJSZWN0KCkpOworICAgICAg
ICBpZiAocmVjdC5pbnRlcnNlY3RzKHJlc2l6ZXJSZWN0KSkgeworICAgICAgICAgICAgaWYgKG9y
aWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAgICAgICAgICAgICAgIGlu
dCBvdmVybGFwID0gcmVjdC5tYXhYKCkgLSByZXNpemVyUmVjdC54KCk7CisgICAgICAgICAgICAg
ICAgaWYgKG92ZXJsYXAgPiAwICYmIHJlc2l6ZXJSZWN0Lm1heFgoKSA+PSByZWN0Lm1heFgoKSkg
eworICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFJlY3Quc2V0V2lkdGgocmVjdC53aWR0aCgp
IC0gb3ZlcmxhcCk7CisgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBzUmVzaXplciA9IHRydWU7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBpbnQgb3ZlcmxhcCA9IHJlY3QubWF4WSgpIC0gcmVzaXplclJlY3QueSgpOworICAgICAgICAg
ICAgICAgIGlmIChvdmVybGFwID4gMCAmJiByZXNpemVyUmVjdC5tYXhZKCkgPj0gcmVjdC5tYXhZ
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRqdXN0ZWRSZWN0LnNldEhlaWdodChyZWN0Lmhl
aWdodCgpIC0gb3ZlcmxhcCk7CisgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBzUmVzaXplciA9
IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIGlmIChvdmVybGFwc1Jlc2l6ZXIgIT0gbV9vdmVybGFwc1Jlc2l6ZXIpIHsKKyAgICAg
ICAgbV9vdmVybGFwc1Jlc2l6ZXIgPSBvdmVybGFwc1Jlc2l6ZXI7CisgICAgICAgIGlmICh2aWV3
KQorICAgICAgICAgICAgdmlldy0+YWRqdXN0U2Nyb2xsYmFyc0F2b2lkaW5nUmVzaXplckNvdW50
KG1fb3ZlcmxhcHNSZXNpemVyID8gMSA6IC0xKTsKKyAgICB9CisKKyAgICBXaWRnZXQ6OnNldEZy
YW1lUmVjdChhZGp1c3RlZFJlY3QpOworfQorCit2b2lkIFNjcm9sbGJhcjo6aW52YWxpZGF0ZVJl
Y3QoY29uc3QgSW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoc3VwcHJlc3NJbnZhbGlkYXRpb24o
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCisgICAgICAg
IG1fc2Nyb2xsYWJsZUFyZWEtPmludmFsaWRhdGVTY3JvbGxiYXIodGhpcywgcmVjdCk7Cit9CisK
K1Njcm9sbGJhck92ZXJsYXlTdHlsZSBTY3JvbGxiYXI6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEgPyBTY3JvbGxiYXJPdmVybGF5
U3R5bGVEZWZhdWx0IDogbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7
Cit9CisKK3ZvaWQgU2Nyb2xsYmFyOjpnZXRUaWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JiB0aWNr
bWFya3MpIGNvbnN0Cit7CisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIG1fc2Ny
b2xsYWJsZUFyZWEtPmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOworfQorCitib29sIFNjcm9sbGJh
cjo6aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xs
YWJsZUFyZWEgJiYgbV9zY3JvbGxhYmxlQXJlYS0+aXNBY3RpdmUoKTsKK30KKworYm9vbCBTY3Jv
bGxiYXI6OmlzU2Nyb2xsVmlld1Njcm9sbGJhcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhcmVu
dCgpICYmIHBhcmVudCgpLT5pc0ZyYW1lVmlldygpICYmIHN0YXRpY19jYXN0PEZyYW1lVmlldyo+
KHBhcmVudCgpKS0+aXNTY3JvbGxWaWV3U2Nyb2xsYmFyKHRoaXMpOworfQorCit2b2lkIFNjcm9s
bGJhcjo6c2V0RW5hYmxlZChib29sIGUpCit7IAorICAgIGlmIChtX2VuYWJsZWQgPT0gZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fZW5hYmxlZCA9IGU7CisgICAgdGhlbWUoKS0+dXBkYXRlRW5h
YmxlZFN0YXRlKHRoaXMpOworICAgIGludmFsaWRhdGUoKTsKK30KKwogdm9pZCBTY3JvbGxiYXI6
Om9mZnNldERpZENoYW5nZSgpCiB7CiAgICAgQVNTRVJUKG1fc2Nyb2xsYWJsZUFyZWEpOwpAQCAt
NDMyLDQwICs1MDUsNiBAQCBib29sIFNjcm9sbGJhcjo6bW91c2VEb3duKGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgZXZ0KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNjcm9sbGJhcjo6
c2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgLy8gR2V0IG91ciB3aW5k
b3cgcmVzaXplciByZWN0IGFuZCBzZWUgaWYgd2Ugb3ZlcmxhcC4gIEFkanVzdCB0byBhdm9pZCB0
aGUgb3ZlcmxhcAotICAgIC8vIGlmIG5lY2Vzc2FyeS4KLSAgICBJbnRSZWN0IGFkanVzdGVkUmVj
dChyZWN0KTsKLSAgICBib29sIG92ZXJsYXBzUmVzaXplciA9IGZhbHNlOwotICAgIFNjcm9sbFZp
ZXcqIHZpZXcgPSBwYXJlbnQoKTsKLSAgICBpZiAodmlldyAmJiAhcmVjdC5pc0VtcHR5KCkgJiYg
IXZpZXctPndpbmRvd1Jlc2l6ZXJSZWN0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEludFJlY3Qg
cmVzaXplclJlY3QgPSB2aWV3LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3codmlldy0+d2lu
ZG93UmVzaXplclJlY3QoKSk7Ci0gICAgICAgIGlmIChyZWN0LmludGVyc2VjdHMocmVzaXplclJl
Y3QpKSB7Ci0gICAgICAgICAgICBpZiAob3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xs
YmFyKSB7Ci0gICAgICAgICAgICAgICAgaW50IG92ZXJsYXAgPSByZWN0Lm1heFgoKSAtIHJlc2l6
ZXJSZWN0LngoKTsKLSAgICAgICAgICAgICAgICBpZiAob3ZlcmxhcCA+IDAgJiYgcmVzaXplclJl
Y3QubWF4WCgpID49IHJlY3QubWF4WCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkanVzdGVk
UmVjdC5zZXRXaWR0aChyZWN0LndpZHRoKCkgLSBvdmVybGFwKTsKLSAgICAgICAgICAgICAgICAg
ICAgb3ZlcmxhcHNSZXNpemVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGludCBvdmVybGFwID0gcmVjdC5tYXhZKCkgLSBy
ZXNpemVyUmVjdC55KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG92ZXJsYXAgPiAwICYmIHJlc2l6
ZXJSZWN0Lm1heFkoKSA+PSByZWN0Lm1heFkoKSkgewotICAgICAgICAgICAgICAgICAgICBhZGp1
c3RlZFJlY3Quc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLSBvdmVybGFwKTsKLSAgICAgICAgICAg
ICAgICAgICAgb3ZlcmxhcHNSZXNpemVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKG92ZXJsYXBzUmVzaXplciAhPSBt
X292ZXJsYXBzUmVzaXplcikgewotICAgICAgICBtX292ZXJsYXBzUmVzaXplciA9IG92ZXJsYXBz
UmVzaXplcjsKLSAgICAgICAgaWYgKHZpZXcpCi0gICAgICAgICAgICB2aWV3LT5hZGp1c3RTY3Jv
bGxiYXJzQXZvaWRpbmdSZXNpemVyQ291bnQobV9vdmVybGFwc1Jlc2l6ZXIgPyAxIDogLTEpOwot
ICAgIH0KLQotICAgIFdpZGdldDo6c2V0RnJhbWVSZWN0KGFkanVzdGVkUmVjdCk7Ci19Ci0KIHZv
aWQgU2Nyb2xsYmFyOjpzZXRQYXJlbnQoU2Nyb2xsVmlldyogcGFyZW50VmlldykKIHsKICAgICBp
ZiAoIXBhcmVudFZpZXcgJiYgbV9vdmVybGFwc1Jlc2l6ZXIgJiYgcGFyZW50KCkpCkBAIC00NzMs
MTUgKzUxMiw2IEBAIHZvaWQgU2Nyb2xsYmFyOjpzZXRQYXJlbnQoU2Nyb2xsVmlldyogcGFyZW50
VmlldykKICAgICBXaWRnZXQ6OnNldFBhcmVudChwYXJlbnRWaWV3KTsKIH0KIAotdm9pZCBTY3Jv
bGxiYXI6OnNldEVuYWJsZWQoYm9vbCBlKQoteyAKLSAgICBpZiAobV9lbmFibGVkID09IGUpCi0g
ICAgICAgIHJldHVybjsKLSAgICBtX2VuYWJsZWQgPSBlOwotICAgIHRoZW1lKCktPnVwZGF0ZUVu
YWJsZWRTdGF0ZSh0aGlzKTsKLSAgICBpbnZhbGlkYXRlKCk7Ci19Ci0KIGJvb2wgU2Nyb2xsYmFy
Ojppc092ZXJsYXlTY3JvbGxiYXIoKSBjb25zdAogewogICAgIHJldHVybiBtX3RoZW1lLT51c2Vz
T3ZlcmxheVNjcm9sbGJhcnMoKTsKQEAgLTUxMSwxNSArNTQxLDYgQEAgQVhPYmplY3RDYWNoZSog
U2Nyb2xsYmFyOjpheE9iamVjdENhY2hlKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQtPmF4
T2JqZWN0Q2FjaGUoKTsKIH0KIAotdm9pZCBTY3JvbGxiYXI6OmludmFsaWRhdGVSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCi17Ci0gICAgaWYgKHN1cHByZXNzSW52YWxpZGF0aW9uKCkpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIGlmIChtX3Njcm9sbGFibGVBcmVhKQotICAgICAgICBtX3Njcm9s
bGFibGVBcmVhLT5pbnZhbGlkYXRlU2Nyb2xsYmFyKHRoaXMsIHJlY3QpOwotfQotCiBJbnRSZWN0
IFNjcm9sbGJhcjo6Y29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYgbG9jYWxS
ZWN0KSBjb25zdAogewogICAgIGlmIChtX3Njcm9sbGFibGVBcmVhKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXIuaAppbmRleCAzOWFjMjU0NjVkMTQ1NWE1OTkyY2QyNWMyMjI4ZGQyYjY1MzRh
NjNkLi45OWZkODQ2MWI3YWE3OTk5OTVhMWYzMjliZDMwMGU2NWY2M2YwYzg5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBTY3JvbGxi
YXJfaAogI2RlZmluZSBTY3JvbGxiYXJfaAogCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDbGll
bnQuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5j
bHVkZSAiV2lkZ2V0LmgiCkBAIC00MCwxMyArNDEsNjAgQEAgY2xhc3MgUGxhdGZvcm1Nb3VzZUV2
ZW50OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBTY3JvbGxiYXJUaGVtZTsKIAotY2xh
c3MgU2Nyb2xsYmFyIDogcHVibGljIFdpZGdldCB7CitjbGFzcyBTY3JvbGxiYXIgOiBwdWJsaWMg
V2lkZ2V0LAorICAgICAgICAgICAgICAgICAgcHVibGljIFNjcm9sbGJhclRoZW1lQ2xpZW50IHsK
KwogcHVibGljOgogICAgIC8vIE11c3QgYmUgaW1wbGVtZW50ZWQgYnkgcGxhdGZvcm1zIHRoYXQg
Y2FuJ3Qgc2ltcGx5IHVzZSB0aGUgU2Nyb2xsYmFyIGJhc2UgY2xhc3MuICBSaWdodCBub3cgdGhl
IG9ubHkgcGxhdGZvcm0gdGhhdCBpcyBub3QgdXNpbmcgdGhlIGJhc2UgY2xhc3MgaXMgR1RLLgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gY3JlYXRlTmF0aXZlU2Nyb2xsYmFyKFNj
cm9sbGFibGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbGJh
ckNvbnRyb2xTaXplIHNpemUpOwogCiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyKCk7CiAKKyAgICAv
LyBTY3JvbGxiYXJUaGVtZUNsaWVudCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIGludCB4
KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0Ojp4KCk7IH0KKyAgICB2aXJ0dWFsIGludCB5KCkgY29u
c3QgeyByZXR1cm4gV2lkZ2V0Ojp5KCk7IH0KKyAgICB2aXJ0dWFsIGludCB3aWR0aCgpIGNvbnN0
IHsgcmV0dXJuIFdpZGdldDo6d2lkdGgoKTsgfQorICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIFdpZGdldDo6aGVpZ2h0KCk7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6c2l6ZSgpOyB9CisgICAgdmlydHVhbCBJbnRQb2lu
dCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6bG9jYXRpb24oKTsgfQorCisgICAg
dmlydHVhbCBTY3JvbGxWaWV3KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OnBhcmVu
dCgpOyB9CisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiByb290KCkgY29uc3QgeyByZXR1cm4gV2lk
Z2V0Ojpyb290KCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50
UmVjdCYpOworICAgIHZpcnR1YWwgSW50UmVjdCBmcmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBX
aWRnZXQ6OmZyYW1lUmVjdCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIHsg
V2lkZ2V0OjppbnZhbGlkYXRlKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3Qo
Y29uc3QgSW50UmVjdCYpOworCisgICAgdmlydHVhbCBTY3JvbGxiYXJPdmVybGF5U3R5bGUgc2Ny
b2xsYmFyT3ZlcmxheVN0eWxlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGdldFRpY2ttYXJr
cyhWZWN0b3I8SW50UmVjdD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxhYmxl
QXJlYUFjdGl2ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbFZpZXdTY3JvbGxi
YXIoKSBjb25zdDsKKworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5n
V2luZG93KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkgeyByZXR1cm4gV2lkZ2V0Ojpjb252
ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3cod2luZG93UG9pbnQpOyB9CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNDdXN0b21TY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29y
aWVudGF0aW9uOyB9CisKKyAgICB2aXJ0dWFsIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGxy
b3VuZGYobV9jdXJyZW50UG9zKTsgfQorICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFBvcygpIGNv
bnN0IHsgcmV0dXJuIG1fY3VycmVudFBvczsgfQorICAgIHZpcnR1YWwgaW50IHZpc2libGVTaXpl
KCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlU2l6ZTsgfQorICAgIHZpcnR1YWwgaW50IHRvdGFs
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplOyB9CisgICAgdmlydHVhbCBpbnQgbWF4
aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplIC0gbV92aXNpYmxlU2l6ZTsgfQorICAg
IHZpcnR1YWwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUoKSBjb25zdCB7IHJldHVy
biBtX2NvbnRyb2xTaXplOyB9CisKKyAgICB2aXJ0dWFsIGludCBsaW5lU3RlcCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGluZVN0ZXA7IH0KKyAgICB2aXJ0dWFsIGludCBwYWdlU3RlcCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZVN0ZXA7IH0KKworICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBwcmVzc2Vk
UGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc3NlZFBhcnQ7IH0KKyAgICB2aXJ0dWFsIFNjcm9s
bGJhclBhcnQgaG92ZXJlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX2hvdmVyZWRQYXJ0OyB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVDaGFuZ2VkKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wg
ZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRFbmFibGVkKGJvb2wgZSk7CisKICAgICAvLyBDYWxsZWQgYnkgdGhlIFNjcm9sbGFibGVBcmVh
IHdoZW4gdGhlIHNjcm9sbCBvZmZzZXQgY2hhbmdlcy4KICAgICB2b2lkIG9mZnNldERpZENoYW5n
ZSgpOwogCkBAIC01NywzNCArMTA1LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3RG
cm9tU2Nyb2xsYWJsZUFyZWEoKSB7IG1fc2Nyb2xsYWJsZUFyZWEgPSAwOyB9CiAgICAgU2Nyb2xs
YWJsZUFyZWEqIHNjcm9sbGFibGVBcmVhKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJl
YTsgfQogCi0gICAgdmlydHVhbCBib29sIGlzQ3VzdG9tU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KLQotICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIGxyb3VuZGYobV9jdXJyZW50UG9zKTsgfQotICAgIGZsb2F0IGN1cnJlbnRQb3MoKSBjb25z
dCB7IHJldHVybiBtX2N1cnJlbnRQb3M7IH0KICAgICBpbnQgcHJlc3NlZFBvcygpIGNvbnN0IHsg
cmV0dXJuIG1fcHJlc3NlZFBvczsgfQotICAgIGludCB2aXNpYmxlU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmlzaWJsZVNpemU7IH0KLSAgICBpbnQgdG90YWxTaXplKCkgY29uc3QgeyByZXR1cm4g
bV90b3RhbFNpemU7IH0KLSAgICBpbnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxT
aXplIC0gbV92aXNpYmxlU2l6ZTsgfSAgICAgICAgCi0gICAgU2Nyb2xsYmFyQ29udHJvbFNpemUg
Y29udHJvbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xTaXplOyB9CiAKLSAgICBpbnQg
bGluZVN0ZXAoKSBjb25zdCB7IHJldHVybiBtX2xpbmVTdGVwOyB9Ci0gICAgaW50IHBhZ2VTdGVw
KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlU3RlcDsgfQogICAgIGZsb2F0IHBpeGVsU3RlcCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGl4ZWxTdGVwOyB9CiAKLSAgICBTY3JvbGxiYXJQYXJ0IHByZXNzZWRQ
YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9wcmVzc2VkUGFydDsgfQotICAgIFNjcm9sbGJhclBhcnQg
aG92ZXJlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX2hvdmVyZWRQYXJ0OyB9CiAgICAgdmlydHVh
bCB2b2lkIHNldEhvdmVyZWRQYXJ0KFNjcm9sbGJhclBhcnQpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRQcmVzc2VkUGFydChTY3JvbGxiYXJQYXJ0KTsKIAogICAgIHZvaWQgc2V0U3RlcHMoaW50IGxp
bmVTdGVwLCBpbnQgcGFnZVN0ZXAsIGludCBwaXhlbHNQZXJTdGVwID0gMSk7CiAgICAgdm9pZCBz
ZXRQcm9wb3J0aW9uKGludCB2aXNpYmxlU2l6ZSwgaW50IHRvdGFsU2l6ZSk7CiAgICAgdm9pZCBz
ZXRQcmVzc2VkUG9zKGludCBwKSB7IG1fcHJlc3NlZFBvcyA9IHA7IH0KLSAgICAKLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVj
dCk7CiAKLSAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sIGUpOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKIAogICAgIHZp
cnR1YWwgYm9vbCBpc092ZXJsYXlTY3JvbGxiYXIoKSBjb25zdDsKICAgICBib29sIHNob3VsZFBh
cnRpY2lwYXRlSW5IaXRUZXN0aW5nKCk7CkBAIC05Nyw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBtb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIHZvaWQgbW91
c2VFbnRlcmVkKCk7CiAgICAgYm9vbCBtb3VzZUV4aXRlZCgpOwotICAgIAorCiAgICAgLy8gVXNl
ZCBieSBzb21lIHBsYXRmb3JtIHNjcm9sbGJhcnMgdG8ga25vdyB3aGVuIHRoZXkndmUgYmVlbiBy
ZWxlYXNlZCBmcm9tIGNhcHR1cmUuCiAgICAgYm9vbCBtb3VzZVVwKGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYpOwogCkBAIC0xMDYsMTggKzEzOCwxMyBAQCBwdWJsaWM6CiAgICAgU2Nyb2xsYmFy
VGhlbWUqIHRoZW1lKCkgY29uc3QgeyByZXR1cm4gbV90aGVtZTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIHNldFBhcmVudChTY3JvbGxWaWV3Kik7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVj
dChjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29u
c3QgSW50UmVjdCYpOwotICAgIAogICAgIGJvb2wgc3VwcHJlc3NJbnZhbGlkYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3N1cHByZXNzSW52YWxpZGF0aW9uOyB9CiAgICAgdm9pZCBzZXRTdXBwcmVz
c0ludmFsaWRhdGlvbihib29sIHMpIHsgbV9zdXBwcmVzc0ludmFsaWRhdGlvbiA9IHM7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBzdHlsZUNoYW5nZWQoKSB7IH0KLQogICAgIHZpcnR1YWwgSW50UmVj
dCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAgICAgdmly
dHVhbCBJbnRSZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNv
bnN0OwotICAgIAorCiAgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0VG9Db250YWluaW5nVmll
dyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZy
b21Db250YWluaW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCkBAIC0xNjAsNyArMTg3
LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgVGltZXI8U2Nyb2xsYmFyPiBtX3Njcm9sbFRpbWVyOwog
ICAgIGJvb2wgbV9vdmVybGFwc1Jlc2l6ZXI7Ci0gICAgCisKICAgICBib29sIG1fc3VwcHJlc3NJ
bnZhbGlkYXRpb247CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWUuaAppbmRleCAyYTgzZDUzODVlYWJiY2FjZmY4YmU1NjM0OWI0ZDE5ZTMyYmI2ZmNjLi4x
N2VmNjM4ZTYwM2I0MjE2NTJhNGQwYTliMTFmOTA3NDdkYTc3MDU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwotY2xhc3MgU2Nyb2xsYmFyOwor
Y2xhc3MgU2Nyb2xsYmFyVGhlbWVDbGllbnQ7CiBjbGFzcyBTY3JvbGxWaWV3OwogCiAjaWYgVVNF
KEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCkBAIC00
NiwxMCArNDYsMTAgQEAgcHVibGljOgogICAgIFNjcm9sbGJhclRoZW1lKCkgeyB9CiAgICAgdmly
dHVhbCB+U2Nyb2xsYmFyVGhlbWUoKSB7fTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFi
bGVkU3RhdGUoU2Nyb2xsYmFyKikgeyB9OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVk
U3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IH07CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFp
bnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgLypkYW1hZ2VS
ZWN0Ki8pIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRl
c3QoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gTm9QYXJ0
OyB9CisgICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgLypkYW1hZ2VSZWN0Ki8pIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBOb1BhcnQ7IH0KICAgICAK
ICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUg
PSBSZWd1bGFyU2Nyb2xsYmFyKSB7IHJldHVybiAwOyB9CiAKQEAgLTU3LDEzICs1NywxMyBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxi
YXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNj
cm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgfQogCiAgICAgdmly
dHVhbCB2b2lkIHRoZW1lQ2hhbmdlZCgpIHt9CiAgICAgCiAgICAgdmlydHVhbCBib29sIGludmFs
aWRhdGVPbk1vdXNlRW50ZXJFeGl0KCkgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgaW52
YWxpZGF0ZVBhcnRzKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJDb250cm9sUGFydE1h
c2sgbWFzaykKKyAgICB2b2lkIGludmFsaWRhdGVQYXJ0cyhTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBTY3JvbGxiYXJDb250cm9sUGFydE1hc2sgbWFzaykKICAgICB7CiAgICAgICAg
IGlmIChtYXNrICYgQmFja0J1dHRvblN0YXJ0UGFydCkKICAgICAgICAgICAgIGludmFsaWRhdGVQ
YXJ0KHNjcm9sbGJhciwgQmFja0J1dHRvblN0YXJ0UGFydCk7CkBAIC04MSw3ICs4MSw3IEBAIHB1
YmxpYzoKICAgICAgICAgICAgIGludmFsaWRhdGVQYXJ0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRv
bkVuZFBhcnQpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3Jv
bGxiYXIqLCBTY3JvbGxiYXJQYXJ0KSB7fQorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFy
dChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIHt9CiAKICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0UGFpbnRTY3JvbGxDb3Ju
ZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KICAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRT
Y3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3Ju
ZXJSZWN0KSB7IGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29s
b3JTcGFjZURldmljZVJHQik7IH0KQEAgLTkzLDIxICs5MywyMSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldFVwQ29udGVudFNoYWRvd0xheWVyKEdyYXBoaWNzTGF5ZXIqKSB7IH0KICNl
bmRpZgogCi0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
RHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9u
KFNjcm9sbGJhciopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0aHVtYiBy
ZWxhdGl2ZSB0byB0aGUgdHJhY2suCi0gICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xs
YmFyKikgeyByZXR1cm4gMDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0aHVtYiBhbG9uZyB0aGUg
YXhpcyBvZiB0aGUgc2Nyb2xsYmFyLgotICAgIHZpcnR1YWwgaW50IHRyYWNrUG9zaXRpb24oU2Ny
b2xsYmFyKikgeyByZXR1cm4gMDsgfSAvLyBUaGUgcG9zaXRpb24gb2YgdGhlIHRyYWNrIHJlbGF0
aXZlIHRvIHRoZSBzY3JvbGxiYXIuCi0gICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xs
YmFyKikgeyByZXR1cm4gMDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0cmFjayBhbG9uZyB0aGUg
YXhpcyBvZiB0aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRo
dW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmln
aW4oU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFk
T2ZUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxi
YXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0aHVt
YiByZWxhdGl2ZSB0byB0aGUgdHJhY2suCisgICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiAwOyB9IC8vIFRoZSBsZW5ndGggb2YgdGhlIHRo
dW1iIGFsb25nIHRoZSBheGlzIG9mIHRoZSBzY3JvbGxiYXIuCisgICAgdmlydHVhbCBpbnQgdHJh
Y2tQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBv
c2l0aW9uIG9mIHRoZSB0cmFjayByZWxhdGl2ZSB0byB0aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1
YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4gMDsgfSAv
LyBUaGUgbGVuZ3RoIG9mIHRoZSB0cmFjayBhbG9uZyB0aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFy
LgogCiAgICAgdmlydHVhbCBpbnQgbWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpIHsgcmV0dXJuIHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7IH0KIAogICAgIHZpcnR1YWwgZG91YmxlIGlu
aXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMjU7IH0KICAgICB2aXJ0dWFs
IGRvdWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMDU7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKSB7fQotICAgIHZpcnR1YWwg
dm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciopIHt9CisgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikge30KKyAgICB2aXJ0dWFs
IHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHt9CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNNb2NrVGhlbWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi42Y2RhNDJmNTA1MmUzNGU0YmQ2ZDFhYTdkODM2ZWMzNjc1OTRlZjI4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaApA
QCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JvbGxiYXJUaGVtZUNsaWVudF9oCisj
ZGVmaW5lIFNjcm9sbGJhclRoZW1lQ2xpZW50X2gKKworI2luY2x1ZGUgIkludFBvaW50LmgiCisj
aW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJTY3Jv
bGxUeXBlcy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbFZpZXc7CisKK2Ns
YXNzIFNjcm9sbGJhclRoZW1lQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TY3JvbGxi
YXJUaGVtZUNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCBpbnQgeCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGludCB5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHdpZHRoKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IEludFNpemUgc2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFBvaW50IGxvY2F0aW9u
KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiBwYXJlbnQoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiByb290KCkgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwg
SW50UmVjdCBmcmFtZVJlY3QoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxp
ZGF0ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVj
dCYpID0gMDsKKworICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHNjcm9sbGJhck92
ZXJsYXlTdHlsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZl
Y3RvcjxJbnRSZWN0PiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxhYmxl
QXJlYUFjdGl2ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxWaWV3U2Ny
b2xsYmFyKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNv
bnRhaW5pbmdXaW5kb3coY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSA9IDA7CisKKyAgICB2
aXJ0dWFsIGJvb2wgaXNDdXN0b21TY3JvbGxiYXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBT
Y3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1
YWwgaW50IHZhbHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFBvcygp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlU2l6ZSgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIGludCB0b3RhbFNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgbWF4
aW11bSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRy
b2xTaXplKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBpbnQgbGluZVN0ZXAoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBpbnQgcGFnZVN0ZXAoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFs
IFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTY3Jv
bGxiYXJQYXJ0IGhvdmVyZWRQYXJ0KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHN0
eWxlQ2hhbmdlZCgpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpID0gMDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjb2xsYmFyVGhlbWVDbGllbnRfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCmlu
ZGV4IGZjYmY0ODRjMDk1MWI1YjBhZmI5YmM3YjVmYmM1NmNmZWM5YTk4NWUuLmUyOTY2OWY4ZDVj
OWY3NzNkOTdlYmZiM2NmZDQ2YTI0MWY3YWExOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKQEAgLTMzLDE1ICszMywxNCBA
QAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKLSNpbmNsdWRlICJTY3JvbGxiYXIuaCIKLSNpbmNs
dWRlICJTY3JvbGxhYmxlQXJlYS5oIgorI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1ib29sIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludChTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRhbWFnZVJlY3QpCitib29sIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWlu
dChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsKICAgICAvLyBDcmVhdGUg
dGhlIFNjcm9sbGJhckNvbnRyb2xQYXJ0TWFzayBiYXNlZCBvbiB0aGUgZGFtYWdlUmVjdAogICAg
IFNjcm9sbGJhckNvbnRyb2xQYXJ0TWFzayBzY3JvbGxNYXNrID0gTm9QYXJ0OwpAQCAtMTE2LDcg
KzExNSw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LVNjcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OmhpdFRlc3QoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorU2Nyb2xsYmFyUGFy
dCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aGl0VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICBTY3JvbGxi
YXJQYXJ0IHJlc3VsdCA9IE5vUGFydDsKICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQpA
QCAtMTU1LDcgKzE1NCw3IEBAIFNjcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6
OmhpdFRlc3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aW52YWxpZGF0ZVBhcnQo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGU6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAgICBpZiAocGFydCA9PSBOb1BhcnQpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjppbnZhbGlkYXRlUGFydChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFy
dAogICAgIHNjcm9sbGJhci0+aW52YWxpZGF0ZVJlY3QocmVzdWx0KTsKIH0KIAotdm9pZCBTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCwgSW50UmVjdCYgYmVmb3JlVGh1bWJS
ZWN0LCBJbnRSZWN0JiB0aHVtYlJlY3QsIEludFJlY3QmIGFmdGVyVGh1bWJSZWN0KQordm9pZCBT
Y3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0LCBJbnRSZWN0
JiBiZWZvcmVUaHVtYlJlY3QsIEludFJlY3QmIHRodW1iUmVjdCwgSW50UmVjdCYgYWZ0ZXJUaHVt
YlJlY3QpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiB3b24ndCBldmVuIGdldCBjYWxsZWQgdW5s
ZXNzIHdlJ3JlIGJpZyBlbm91Z2ggdG8gaGF2ZSBzb21lIGNvbWJpbmF0aW9uIG9mIHRoZXNlIHRo
cmVlIHJlY3RzIHdoZXJlIGF0IGxlYXN0CiAgICAgLy8gb25lIG9mIHRoZW0gaXMgbm9uLWVtcHR5
LgpAQCAtMjE1LDcgKzIxNCw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnNwbGl0
VHJhY2soU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuCiAKIC8vIFJldHVy
bnMgdGhlIHNpemUgcmVwcmVzZW50ZWQgYnkgdHJhY2sgdGFraW5nIGludG8gYWNjb3VudCBzY3Jv
bGxpbmcgcGFzdAogLy8gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuCi1zdGF0aWMgZmxvYXQgdXNl
ZFRvdGFsU2l6ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3N0YXRpYyBmbG9hdCB1c2VkVG90YWxT
aXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgZmxvYXQgb3Zlcmhh
bmdBdFN0YXJ0ID0gLXNjcm9sbGJhci0+Y3VycmVudFBvcygpOwogICAgIGZsb2F0IG92ZXJoYW5n
QXRFbmQgPSBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSArIHNjcm9sbGJhci0+dmlzaWJsZVNpemUo
KSAtIHNjcm9sbGJhci0+dG90YWxTaXplKCk7CkBAIC0yMjMsNyArMjIyLDcgQEAgc3RhdGljIGZs
b2F0IHVzZWRUb3RhbFNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIHNjcm9s
bGJhci0+dG90YWxTaXplKCkgKyBvdmVyaGFuZzsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjp0aHVtYlBvc2l0aW9uKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlOjp0aHVtYlBvc2l0aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+ZW5hYmxlZCgpKSB7CiAgICAgICAgIGZsb2F0
IHBvcyA9IG1heCgwLjBmLCBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSkgKiAodHJhY2tMZW5ndGgo
c2Nyb2xsYmFyKSAtIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikpIC8gKHVzZWRUb3RhbFNpemUoc2Ny
b2xsYmFyKSAtIHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKSk7CkBAIC0yMzIsNyArMjMxLDcgQEAg
aW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYlBvc2l0aW9uKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQogICAgIHJldHVybiAwOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6
OnRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjp0aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewog
ICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjQ2
LDE4ICsyNDUsMTggQEAgaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYkxlbmd0aChT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICByZXR1cm4gbGVuZ3RoOwogfQogCi1pbnQgU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGU6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJh
cikKK2ludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNjcm9sbGJhclRoaWNr
bmVzcyhzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICBJbnRSZWN0IGNvbnN0cmFpbmVkVHJhY2tSZWN0ID0gY29uc3RyYWlu
VHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxiYXIsIHRyYWNrUmVjdChzY3JvbGxiYXIpKTsK
ICAgICByZXR1cm4gKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xs
YmFyKSA/IGNvbnN0cmFpbmVkVHJhY2tSZWN0LngoKSAtIHNjcm9sbGJhci0+eCgpIDogY29uc3Ry
YWluZWRUcmFja1JlY3QueSgpIC0gc2Nyb2xsYmFyLT55KCk7CiB9CiAKLWludCBTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6dHJhY2tMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIpCiB7CiAgICAgSW50UmVjdCBjb25zdHJhaW5lZFRyYWNrUmVjdCA9IGNvbnN0cmFp
blRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoc2Nyb2xsYmFyLCB0cmFja1JlY3Qoc2Nyb2xsYmFyKSk7
CiAgICAgcmV0dXJuIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9s
bGJhcikgPyBjb25zdHJhaW5lZFRyYWNrUmVjdC53aWR0aCgpIDogY29uc3RyYWluZWRUcmFja1Jl
Y3QuaGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuaAppbmRleCAxMWIzYmQ0NzAwMTg3ZmYxODJiMDQ1YjQ1MmNkYzI0ZGEzM2U3
NTkwLi44ZWRkNGJiYWM5ODA0MGQwM2ZjNGIzMGVlYjIxYWE5OTVlM2QyZWUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgKQEAgLTMy
LDQwICszMiw0MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlIDogcHVibGljIFNjcm9sbGJhclRoZW1lIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFs
IGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFn
ZVJlY3QpOwogCi0gICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyKiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhp
dFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQ
YXJ0KTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBTY3JvbGxiYXJQYXJ0KTsKIAotICAgIHZpcnR1YWwgaW50IHRodW1iUG9zaXRpb24oU2Ny
b2xsYmFyKik7Ci0gICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7Ci0gICAg
dmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0
cmFja0xlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNj
cm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJh
clRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihTY3JvbGxW
aWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CiAgICAg
dmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVj
dCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAKIHBy
b3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKSA9IDA7Ci0g
ICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSA9IDA7CiAKLSAgICB2aXJ0dWFsIElu
dFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKSA9IDA7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0
KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOwot
ICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9
IGZhbHNlKSA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSA9IDA7
CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSA9IDA7CisgICAgdmly
dHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRp
bmcgPSBmYWxzZSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNwbGl0VHJhY2soU2Nyb2xsYmFy
KiwgY29uc3QgSW50UmVjdCYgdHJhY2ssIEludFJlY3QmIHN0YXJ0VHJhY2ssIEludFJlY3QmIHRo
dW1iLCBJbnRSZWN0JiBlbmRUcmFjayk7CisgICAgdmlydHVhbCB2b2lkIHNwbGl0VHJhY2soU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiB0cmFjaywgSW50UmVjdCYgc3RhcnRU
cmFjaywgSW50UmVjdCYgdGh1bWIsIEludFJlY3QmIGVuZFRyYWNrKTsKICAgICAKLSAgICB2aXJ0
dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBpbnQg
bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJh
ciopIHt9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSB7fQotICAgIHZpcnR1YWwgdm9pZCBw
YWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVj
dCYsIFNjcm9sbGJhclBhcnQpIHt9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSB7
fQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJh
ciosIGNvbnN0IEludFJlY3QmKSB7fQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhH
cmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jikge30KKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9s
bGJhclRoZW1lQ2xpZW50Kikge30KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0
Jikge30KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIHt9
CisgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIHt9CisgICAgdmly
dHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBJbnRSZWN0Jikge30KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3Mo
R3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jikg
e30KIAotICAgIHZpcnR1YWwgSW50UmVjdCBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2Vz
KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmIHJlY3QpIHsgcmV0dXJuIHJlY3Q7IH0KKyAgICB2
aXJ0dWFsIEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmIHJlY3QpIHsgcmV0dXJuIHJlY3Q7IH0KIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAKaW5kZXggZjhjYjI4MTU0ODYxZTAxZGE3MTEyNDkyMGM2
MGQwNmEzN2U5YTE4My4uNjgyZDgyZDViMzM3OTE4YjI1ZDA5OGJhNzcxNzM0ZTc5MTUwNWU5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAKQEAgLTM5LDE0ICszOSwxNCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6aGFzVGh1bWIoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06Omhhc1RodW1iKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgaXMg
anVzdCBjYWxsZWQgYXMgYSBwYWludC10aW1lIG9wdGltaXphdGlvbiB0byBzZWUgaWYKICAgICAv
LyBwYWludGluZyB0aGUgdGh1bWIgY2FuIGJlIHNraXBwZWQuICBXZSBkb24ndCBoYXZlIHRvIGJl
IGV4YWN0IGhlcmUuCiAgICAgcmV0dXJuIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikgPiAwOwogfQog
Ci1JbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJh
clRoZW1lQ2hyb21pdW06OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICAvLyBXaW5kb3dzIGFuZCBM
aW51eCBqdXN0IGhhdmUgc2luZ2xlIGFycm93cy4KICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9u
RW5kUGFydCkKQEAgLTU2LDcgKzU2LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
OjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGEKICAgICBy
ZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCksIHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6
Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFy
dCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6Zm9yd2FyZEJ1dHRvblJl
Y3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBi
b29sKQogewogICAgIC8vIFdpbmRvd3MgYW5kIExpbnV4IGp1c3QgaGF2ZSBzaW5nbGUgYXJyb3dz
LgogICAgIGlmIChwYXJ0ID09IEZvcndhcmRCdXR0b25TdGFydFBhcnQpCkBAIC03NCw3ICs3NCw3
IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhCiAgICAgcmV0dXJuIEludFJlY3QoeCwgeSwgc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJbnRSZWN0IFNj
cm9sbGJhclRoZW1lQ2hyb21pdW06OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBib29sKQogewogICAgIEludFNpemUgYnMgPSBidXR0b25TaXplKHNjcm9sbGJhcik7
CiAgICAgLy8gVGhlIGJ1dHRvbnMgYXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIHRoZSBzY3JvbGxi
YXIgYXJlIHNxdWFyZSwgc28gdGhlCkBAIC05MiwxNCArOTIsMTQgQEAgSW50UmVjdCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCiAg
ICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpICsgYnMuaGVp
Z2h0KCksIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIDIgKiBicy5oZWlnaHQoKSk7
CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUcmFja0JhY2tncm91bmQo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50
UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUcmFja0JhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIEp1c3QgYXNzdW1lIGEgZm9y
d2FyZCB0cmFjayBwYXJ0LiAgV2Ugb25seSBwYWludCB0aGUgdHJhY2sgYXMgYSBzaW5nbGUgcGll
Y2Ugd2hlbiB0aGVyZSBpcyBubyB0aHVtYi4KICAgICBpZiAoIWhhc1RodW1iKHNjcm9sbGJhcikp
CiAgICAgICAgIHBhaW50VHJhY2tQaWVjZShjb250ZXh0LCBzY3JvbGxiYXIsIHJlY3QsIEZvcndh
cmRUcmFja1BhcnQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VGlj
a21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VGlj
a21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmll
bnRhdGlvbigpICE9IFZlcnRpY2FsU2Nyb2xsYmFyKQogICAgICAgICByZXR1cm47CkBAIC0xMDks
NyArMTA5LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpwYWludFRpY2ttYXJrcyhH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhcioKIAogICAgIC8vIEdldCB0aGUgdGlj
a21hcmtzIGZvciB0aGUgZnJhbWV2aWV3LgogICAgIFZlY3RvcjxJbnRSZWN0PiB0aWNrbWFya3M7
Ci0gICAgc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5nZXRUaWNrbWFya3ModGlja21hcmtz
KTsKKyAgICBzY3JvbGxiYXItPmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOwogICAgIGlmICghdGlj
a21hcmtzLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmgKaW5kZXgg
MTE3ODEyNTY5ZjY5ZjIwMDM3MWJhYzBmOWRhODdhN2MzMmRlNGZhNS4uY2Y2NzFkZDk4NGMwNzkw
OTk1YzY3ZDdkMGYxOGM1YjRhNmY2Y2ZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaApAQCAtNDEsMTcg
KzQxLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBXaW5kb3dzIGFuZCBMaW51eC4K
ICAgICBjbGFzcyBTY3JvbGxiYXJUaGVtZUNocm9taXVtIDogcHVibGljIFNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlIHsKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0
b25zKFNjcm9sbGJhciopIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBib29sIGhh
c1RodW1iKFNjcm9sbGJhciopOworICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3Jv
bGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBib29s
IGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICAgICAgdmlydHVhbCBJbnRS
ZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRp
bmcgPSBmYWxzZSk7Ci0gICAgICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChT
Y3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgICAg
ICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBm
YWxzZSk7CisgICAgICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAg
ICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgICAgIHZpcnR1
YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5n
ID0gZmFsc2UpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChH
cmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBj
b25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3Vu
ZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3Qm
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgICAgIHZpcnR1
YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciopID0gMDsKKyAgICAgICAgdmlydHVhbCBJ
bnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSA9IDA7CiAgICAgfTsKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3Bw
CmluZGV4IDFkYmVmYTY0OWMwODk3MmViMWMyYjM3Yjc0NzcxYjBkNjFiZWE1YWQuLmUxZTU1YTFm
YzEzZDc5YzBmOWU4ZjQ3MzBiZTg5NzgwOTRjMWY2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtQW5kcm9pZC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1BbmRyb2lkOjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHIK
ICAgICByZXR1cm4gc2Nyb2xsYmFyVGhpY2tuZXNzVmFsdWU7CiB9CiAKLXZvaWQgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtQW5kcm9pZDo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICAvLyBQ
YWludCBibGFjayBiYWNrZ3JvdW5kIGluIER1bXBSZW5kZXJUcmVlLCBvdGhlcndpc2UgdGhlIHBp
eGVscyBpbiB0aGUgc2Nyb2xsYmFyIGFyZWEgZGVwZW5kCiAgICAgLy8gb24gdGhlaXIgcHJldmlv
dXMgc3RhdGUsIHdoaWNoIG1ha2VzIHRoZSBkdW1wZWQgcmVzdWx0IHVuZGV0ZXJtaW5lZC4KQEAg
LTY1LDEyICs2NSwxMiBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpwYWlu
dFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjbwogICAgICAgICBjb250ZXh0
LT5maWxsUmVjdChzY3JvbGxiYXItPmZyYW1lUmVjdCgpLCBDb2xvcjo6YmxhY2ssIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpz
aG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6c2hvdWxkQ2VudGVyT25U
aHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1BbmRyb2lkOjpidXR0b25TaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorSW50U2l6ZSBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyKQogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVy
dGljYWxTY3JvbGxiYXIpCiAgICAgICAgIHJldHVybiBJbnRTaXplKHNjcm9sbGJhclRoaWNrbmVz
c1ZhbHVlLCBidXR0b25MZW5ndGgpOwpAQCAtNzgsNyArNzgsNyBAQCBJbnRTaXplIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1BbmRyb2lkOjpidXR0b25TaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQog
ICAgIHJldHVybiBJbnRTaXplKGJ1dHRvbkxlbmd0aCwgc2Nyb2xsYmFyVGhpY2tuZXNzVmFsdWUp
OwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6Om1pbmltdW1UaHVtYkxl
bmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5k
cm9pZDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIp
CiB7CiAgICAgcmV0dXJuIDIgKiBzY3JvbGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLT5jb250cm9s
U2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5oCmluZGV4IGYwN2M5MDE2
Nzg2Y2IyNGY4OGRmYjk0YWU0ZmMyMTZmZTZlNzBiZmMuLmYzZGI4MGU1MmZiZjUwYzFkZjY4YTk0
MGVhOWQ0NzNmMmRiZjI4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuaApAQCAt
MzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25l
c3MoU2Nyb2xsYmFyQ29udHJvbFNpemUpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lk
IHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqKTsK
LSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3Jv
bGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7
CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRl
eHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50
ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
Jik7CisgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
KTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
TGludXguY3BwCmluZGV4IGVjNjg0MDdlOWQ4YzMyZTMwZDMxMGQyZTUwNThjMmRhN2RiZGVjYzYu
LjZiNGRhZmMzNzNmMTBkMGFhMmQ2ZTk2NjJhYmU2M2RkNWRiNjVlN2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4LmNwcApAQCAtNTAsNyArNTAsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUxpbnV4OjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29u
dHJvbAogICAgIHJldHVybiBzY3JvbGxiYXJTaXplLndpZHRoKCk7CiB9CiAKLXZvaWQgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBn
YywgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBh
cnQgcGFydFR5cGUpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUcmFj
a1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCiB7CiAgICAg
UGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGUgPSBzY3JvbGxiYXItPmhvdmVy
ZWRQYXJ0KCkgPT0gcGFydFR5cGUgPyBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlSG92ZXIgOiBQbGF0
Zm9ybVN1cHBvcnQ6OlN0YXRlTm9ybWFsOwogICAgIEludFJlY3QgYWxpZ25SZWN0ID0gdHJhY2tS
ZWN0KHNjcm9sbGJhciwgZmFsc2UpOwpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNj
cm9sbGJhcgogICAgICAgICAmZXh0cmFQYXJhbXMpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3Zv
aWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRl
eHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBh
cnQgcGFpbnRQYXJ0OwogICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHN0YXRl
ID0gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZU5vcm1hbDsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lk
IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0
KiBnYywgU2Nyb2xsYmFyKiBzYwogICAgIFBsYXRmb3JtU3VwcG9ydDo6cGFpbnRUaGVtZVBhcnQo
Z2MsIHBhaW50UGFydCwgc3RhdGUsIHJlY3QsIDApOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1MaW51eDo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIq
IHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgUGxhdGZvcm1T
dXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGU7CiAKQEAgLTEyMCwxMiArMTIwLDEyIEBAIHZv
aWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4
dCogZ2MsIFNjcm9sbGJhciogc2NyCiAgICAgICAgIDApOwogfQogCi1ib29sIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1MaW51eDo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4
OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgcmV0dXJuIChldnQuc2hpZnRLZXkoKSAmJiBldnQu
YnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgfHwgKGV2dC5idXR0b24oKSA9PSBNaWRkbGVCdXR0b24p
OwogfQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6YnV0dG9uU2l6ZShT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKK0ludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4
OjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYg
KHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgewogICAgICAg
ICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFydFNpemUoUGxhdGZv
cm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyVXBBcnJvdyk7CkBAIC0xMzcsNyArMTM3LDcgQEAgSW50
U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIpCiAgICAgcmV0dXJuIEludFNpemUoc2Nyb2xsYmFyLT53aWR0aCgpIDwgMiAqIHNp
emUud2lkdGgoKSA/IHNjcm9sbGJhci0+d2lkdGgoKSAvIDIgOiBzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjptaW5pbXVt
VGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bUxpbnV4OjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Ny
b2xsYmFyKSB7CiAgICAgICAgIEludFNpemUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhl
bWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1iKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW1MaW51eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgKaW5kZXggOGU4MDJlNzM0MWI3NzViNTk1NWFkMGRl
YzBiOGVlZDU2Zjc5NzI3My4uMzMwZDAzZmIwMjMyMTM0ZWMyY2EyOTQxOWZkYWIyNzM0OTQ3NTRk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgKQEAgLTM5LDEyICszOSwxMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhT
Y3JvbGxiYXJDb250cm9sU2l6ZSk7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3Qg
SW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0
b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJh
clBhcnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwot
ICAgICAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXIqKTsKLSAgICAgICAg
dmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBw
YWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3Qg
SW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgICAgICB2
aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgICAg
ICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsK
ICAgICB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgK
aW5kZXggNDFhMTk4ZTNmODQyMGM4NDg5NDVmYjg0NzQ0ZGRiNzAwMjRjZDZlNS4uNGQzNDI2YmI2
MjA3OTliYTNkOTA4M2I2ZGM4OTQxY2FiNDQyNmVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMu
aApAQCAtMzYsMTIgKzM2LDEyIEBAIHB1YmxpYzoKICAgICBTY3JvbGxiYXJUaGVtZUNocm9taXVt
TWFjKCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYygpOwogCi0gICAg
dmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhciosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CisgICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBkYW1hZ2VSZWN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoU2Ny
b2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVy
aGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRS
ZWN0JiBkaXJ0eVJlY3QpOwogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIHBhaW50R2l2ZW5UaWNr
bWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0
IFZlY3RvcjxJbnRSZWN0PiYpOworICAgIHZvaWQgcGFpbnRHaXZlblRpY2ttYXJrcyhHcmFwaGlj
c0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBjb25zdCBW
ZWN0b3I8SW50UmVjdD4mKTsKIAogICAgIFJlZlB0cjxQYXR0ZXJuPiBtX292ZXJoYW5nUGF0dGVy
bjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQppbmRleCA0NTlhNThiMDc2ZjcwMDZmMjc3
NjViMDI0OTdhMDk5MzVmODIzZmI3Li5kMDJiNDIxMjU2NDRiNzgzMGNlMmUwZmFlYjM2NzMzNjFm
OGRiOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KQEAgLTYxLDExICs2MSwxMSBAQCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjp+U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYygpCiB7
CiB9CiAKLXN0YXRpYyBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzY3JvbGxiYXJT
dGF0ZVRvVGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3N0YXRpYyBQbGF0Zm9ybVN1
cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzY3JvbGxiYXJTdGF0ZVRvVGhlbWVTdGF0ZShTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVk
KCkpCiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlRGlzYWJsZWQ7Ci0gICAg
aWYgKCFzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlzQWN0aXZlKCkpCisgICAgaWYgKCFz
Y3JvbGxiYXItPmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuIFBsYXRm
b3JtU3VwcG9ydDo6U3RhdGVJbmFjdGl2ZTsKICAgICBpZiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFy
dCgpID09IFRodW1iUGFydCkKICAgICAgICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVQ
cmVzc2VkOwpAQCAtOTQsMTEgKzk0LDExIEBAIHN0YXRpYyB2b2lkIHNjcm9sbGJhclBhaW50ZXJQ
YWludFRyYWNrKFNjcm9sbGJhclBhaW50ZXIgc2Nyb2xsYmFyUGFpbnRlciwgYm9vbCBlCiAvLyAg
ICAgLSBkcmF3aW5nIHVzaW5nIFBsYXRmb3JtU3VwcG9ydCBmdW5jdGlvbnMKIC8vICAgICAtIGRy
YXdpbmcgdGlja21hcmtzCiAvLyAgICAgLSBTa2lhIHNwZWNpZmljIGNoYW5nZXMKLWJvb2wgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
KQogewogICAgIC8vIEdldCB0aGUgdGlja21hcmtzIGZvciB0aGUgZnJhbWV2aWV3LgogICAgIFZl
Y3RvcjxJbnRSZWN0PiB0aWNrbWFya3M7Ci0gICAgc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgp
LT5nZXRUaWNrbWFya3ModGlja21hcmtzKTsKKyAgICBzY3JvbGxiYXItPmdldFRpY2ttYXJrcyh0
aWNrbWFya3MpOwogCiAgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKSB7
CiAgICAgICAgIGZsb2F0IHZhbHVlID0gMDsKQEAgLTE4OCw3ICsxODgsNyBAQCBib29sIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGlj
c0NvbnRleHQqIGNvbgogICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIHRy
YWNrSW5mby5lbmFibGVTdGF0ZSA9IGtUaGVtZVRyYWNrRGlzYWJsZWQ7CiAgICAgZWxzZQotICAg
ICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCkt
PmlzQWN0aXZlKCkgPyBrVGhlbWVUcmFja0FjdGl2ZSA6IGtUaGVtZVRyYWNrSW5hY3RpdmU7Cisg
ICAgICAgIHRyYWNrSW5mby5lbmFibGVTdGF0ZSA9IHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJl
YUFjdGl2ZSgpID8ga1RoZW1lVHJhY2tBY3RpdmUgOiBrVGhlbWVUcmFja0luYWN0aXZlOwogCiAg
ICAgaWYgKCFoYXNCdXR0b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHRyYWNrSW5mby5lbmFibGVT
dGF0ZSA9IGtUaGVtZVRyYWNrTm90aGluZ1RvU2Nyb2xsOwpAQCAtMjQzLDcgKzI0Myw3IEBAIGJv
b2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IEdyYXBoaWNzQ29udGV4dCogY29uCiAgICAgaWYgKGhhc1RodW1iKHNjcm9sbGJhcikpIHsKICAg
ICAgICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U2Nyb2xsYmFySW5mbyBzY3JvbGxiYXJJ
bmZvOwogICAgICAgICBzY3JvbGxiYXJJbmZvLm9yaWVudGF0aW9uID0gc2Nyb2xsYmFyLT5vcmll
bnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBQbGF0Zm9ybVN1cHBvcnQ6OlNjcm9s
bGJhck9yaWVudGF0aW9uSG9yaXpvbnRhbCA6IFBsYXRmb3JtU3VwcG9ydDo6U2Nyb2xsYmFyT3Jp
ZW50YXRpb25WZXJ0aWNhbDsKLSAgICAgICAgc2Nyb2xsYmFySW5mby5wYXJlbnQgPSBzY3JvbGxi
YXItPnBhcmVudCgpICYmIHNjcm9sbGJhci0+cGFyZW50KCktPmlzRnJhbWVWaWV3KCkgJiYgc3Rh
dGljX2Nhc3Q8RnJhbWVWaWV3Kj4oc2Nyb2xsYmFyLT5wYXJlbnQoKSktPmlzU2Nyb2xsVmlld1Nj
cm9sbGJhcihzY3JvbGxiYXIpID8gUGxhdGZvcm1TdXBwb3J0OjpTY3JvbGxiYXJQYXJlbnRTY3Jv
bGxWaWV3IDogUGxhdGZvcm1TdXBwb3J0OjpTY3JvbGxiYXJQYXJlbnRSZW5kZXJMYXllcjsKKyAg
ICAgICAgc2Nyb2xsYmFySW5mby5wYXJlbnQgPSBzY3JvbGxiYXItPmlzU2Nyb2xsVmlld1Njcm9s
bGJhcigpID8gUGxhdGZvcm1TdXBwb3J0OjpTY3JvbGxiYXJQYXJlbnRTY3JvbGxWaWV3IDogUGxh
dGZvcm1TdXBwb3J0OjpTY3JvbGxiYXJQYXJlbnRSZW5kZXJMYXllcjsKICAgICAgICAgc2Nyb2xs
YmFySW5mby5tYXhWYWx1ZSA9IHNjcm9sbGJhci0+bWF4aW11bSgpOwogICAgICAgICBzY3JvbGxi
YXJJbmZvLmN1cnJlbnRWYWx1ZSA9IHNjcm9sbGJhci0+Y3VycmVudFBvcygpOwogICAgICAgICBz
Y3JvbGxiYXJJbmZvLnZpc2libGVTaXplID0gc2Nyb2xsYmFyLT52aXNpYmxlU2l6ZSgpOwpAQCAt
MjYzLDcgKzI2Myw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogY29uCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRHaXZlblRpY2ttYXJr
cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHRpY2ttYXJrcykKK3ZvaWQgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRHaXZlblRpY2ttYXJrcyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHJlY3QsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgdGlja21hcmtzKQogewogICAgIGlmIChz
Y3JvbGxiYXItPm9yaWVudGF0aW9uKCkgIT0gVmVydGljYWxTY3JvbGxiYXIpCiAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAKaW5kZXggZjQzNTgzOWQ4MjE4NTY0Zjgw
MjcyOGQzMjg1MzIwZDFlMGNkYmFjOC4uYTA4MTk4MzQ3NDkxZGNjNWQ4ZjAyMmExMjI4ODkwZDY1
NzdmZTNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAKQEAgLTczLDcgKzczLDcgQEAg
Ym9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjppbnZhbGlkYXRlT25Nb3VzZUVudGVyRXhp
dCgpCiAgICAgcmV0dXJuIHdpbmRvd3NWZXJzaW9uKCkgPj0gV2luZG93c1Zpc3RhOwogfQogCi1i
b29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2lu
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jv
b2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4o
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldnQpCiB7CiAgICAgLy8gRmluZCB0aGUgcmVjdCB3aXRoaW4gd2hpY2ggd2Ugc2hvdWxkbid0
IHNuYXAsIGJ5IGV4cGFuZGluZyB0aGUgdHJhY2sgcmVjdAogICAgIC8vIGluIGJvdGggZGltZW5z
aW9ucy4KQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpz
aG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqIHNjcm9sbGJhciwKICAgICByZXR1
cm4gIXJlY3QuY29udGFpbnMobW91c2VQb3NpdGlvbik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnRU
eXBlKQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWludFRyYWNrUGllY2UoR3Jh
cGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKIHsKICAgICBib29sIGhvcnog
PSBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsKIApAQCAt
MTEzLDcgKzExMyw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUcmFj
a1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhcioKICAgICAgICAgYWxpZ25SZWN0
KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWludEJ1dHRvbihHcmFw
aGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpw
YWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAg
Ym9vbCBob3J6ID0gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxi
YXI7CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46
OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2NybwogICAgICAg
ICByZWN0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWludFRodW1i
KEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0
JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWludFRodW1iKEdyYXBo
aWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiB7CiAgICAgYm9vbCBob3J6ID0gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigp
ID09IEhvcml6b250YWxTY3JvbGxiYXI7CiAKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lkIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Ny
b2xsYmFyKiBzY3JvbAogICAgICAgICByZWN0KTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1XaW46OmdldFRoZW1lU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBh
cnQgcGFydCkgY29uc3QKK2ludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZVN0
YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkg
Y29uc3QKIHsKICAgICAvLyBXaGVuIGRyYWdnaW5nIHRoZSB0aHVtYiwgZHJhdyB0aHVtYiBwcmVz
c2VkIGFuZCBvdGhlciBzZWdtZW50cyBub3JtYWwKICAgICAvLyByZWdhcmRsZXNzIG9mIHdoZXJl
IHRoZSBjdXJzb3IgYWN0dWFsbHkgaXMuICBTZWUgYWxzbyBmb3VyIHBsYWNlcyBpbgpAQCAtMTcx
LDcgKzE3MSw3IEBAIGludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZVN0YXRl
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgcmV0dXJuIChzY3JvbGxi
YXItPnByZXNzZWRQYXJ0KCkgPT0gcGFydCkgPyBTQ1JCU19QUkVTU0VEIDogU0NSQlNfTk9STUFM
OwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVBcnJvd1N0YXRl
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpIGNvbnN0CitpbnQgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVBcnJvd1N0YXRlKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29uc3QKIHsKICAgICAvLyBX
ZSBjb3VsZCB0YWtlIGFkdmFudGFnZSBvZiBrbm93aW5nIHRoZSB2YWx1ZXMgaW4gdGhlIHN0YXRl
IGVudW0gdG8gd3JpdGUKICAgICAvLyBzb21lIHNpbXBsZXIgY29kZSwgYnV0IHRyZWF0aW5nIHRo
ZSBzdGF0ZSBlbnVtIGFzIGEgYmxhY2sgYm94IHNlZW1zCkBAIC0yMjEsNyArMjIxLDcgQEAgaW50
IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldFRoZW1lQXJyb3dTdGF0ZShTY3JvbGxiYXIq
IHNjcm9sbGJhciwgU2Nyb2xsYmEKICAgICByZXR1cm4gKHNjcm9sbGJhci0+cHJlc3NlZFBhcnQo
KSA9PSBwYXJ0KSA/IEFCU19ET1dOUFJFU1NFRCA6IEFCU19ET1dOTk9STUFMOwogfQogCi1pbnQg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3NpY1RoZW1lU3RhdGUoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29uc3QKK2ludCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtV2luOjpnZXRDbGFzc2ljVGhlbWVTdGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpIGNvbnN0CiB7CiAgICAgLy8gV2hlbiBkcmFn
Z2luZyB0aGUgdGh1bWIsIGRyYXcgdGhlIGJ1dHRvbnMgbm9ybWFsIGV2ZW4gd2hlbiBob3ZlcmVk
LgogICAgIGlmIChzY3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0KQpAQCAtMjM1
LDEyICsyMzUsMTIgQEAgaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldENsYXNzaWNU
aGVtZVN0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGwKICAgICByZXR1cm4gKHNjcm9s
bGJhci0+cHJlc3NlZFBhcnQoKSA9PSBwYXJ0KSA/IChERkNTX1BVU0hFRCB8IERGQ1NfRkxBVCkg
OiAwOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnNob3VsZENlbnRlck9u
VGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4g
ZXZ0LnNoaWZ0S2V5KCkgJiYgZXZ0LmJ1dHRvbigpID09IExlZnRCdXR0b247CiB9CiAKLUludFNp
emUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6YnV0dG9uU2l6ZShTY3JvbGxiYXIqIHNjcm9s
bGJhcikKK0ludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6YnV0dG9uU2l6ZShTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIC8vIE91ciBkZXNpcmVkIHJlY3Qg
aXMgZXNzZW50aWFsbHkgdGhpY2tuZXNzIGJ5IHRoaWNrbmVzcy4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bVdpbi5oCmluZGV4IDY5Y2ZhMTMxYzVjYjA0ZTliNTIxMGI3NjVjZmI0ODFlOGRkY2IxMzUuLmFj
ODg4MWY5M2I1ZGIxYWZmNDY3OWE2MDYzZTdiYTdlODZmNTUxZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtV2luLmgKQEAgLTM4LDE5ICszOCwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHVi
bGljOgogICAgICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29u
dHJvbFNpemUpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaW52YWxpZGF0ZU9uTW91c2VFbnRlckV4
aXQoKTsKLSAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNj
cm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVh
bCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25z
dCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1
dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xs
YmFyUGFydCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4
dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIHNo
b3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7
Ci0gICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciopOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
Y29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVt
YihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAg
ICAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopOwog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgaW50IGdldFRoZW1lU3RhdGUoU2Nyb2xsYmFyKiwgU2Ny
b2xsYmFyUGFydCkgY29uc3Q7Ci0gICAgICAgIGludCBnZXRUaGVtZUFycm93U3RhdGUoU2Nyb2xs
YmFyKiwgU2Nyb2xsYmFyUGFydCkgY29uc3Q7Ci0gICAgICAgIGludCBnZXRDbGFzc2ljVGhlbWVT
dGF0ZShTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0KSBjb25zdDsKKyAgICAgICAgaW50IGdldFRo
ZW1lU3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0KSBjb25zdDsKKyAg
ICAgICAgaW50IGdldFRoZW1lQXJyb3dTdGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9s
bGJhclBhcnQpIGNvbnN0OworICAgICAgICBpbnQgZ2V0Q2xhc3NpY1RoZW1lU3RhdGUoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0KSBjb25zdDsKICAgICB9OwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
U2Nyb2xsYmFyVGhlbWVFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9s
bGJhclRoZW1lRWZsLmNwcAppbmRleCA2MmRmMDA1ZDY3NTcxZDE0YWQzOTQzNjBkNTZjNDk4ZTRk
ZjkyYmZiLi4yNDBiNTAxNDc3OWMxODJkMTQzOTBjM2Y4YzM5Mzc3NTc3ZTkzYTgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5jcHAKQEAg
LTQ5LDExICs0OSwxMSBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVFZmw6OnNjcm9sbGJhclRoaWNrbmVz
cyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKICAgICByZXR1cm4gMDsgLy8gd2Ug
cGFpbnQgb24gdG9wCiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVFZmw6OnJlZ2lzdGVyU2Nyb2xs
YmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUVmbDo6cmVnaXN0
ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKIH0KIAotdm9p
ZCBTY3JvbGxiYXJUaGVtZUVmbDo6dW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9s
bGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVFZmw6OnVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaAppbmRleCAwZmUxNjg4MWUyZTQ1NmU2ZTEy
MzAxYWVlZjg2YzI2NWJkMzMyMzRiLi5mYzcxY2JlZDg5MGExYTY1YTlhMDJhZDhhMDNkMzhmZGM5
OWFkM2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFy
VGhlbWVFZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhl
bWVFZmwuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGludCBzY3Jv
bGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKTsK
IAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJh
cik7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyKTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJh
cihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwCmluZGV4IGU5OTM2
NGYyYTdmY2FmNDg4ODMwYjQ2OGRlMWQxOGFkNzUwNGU5MGYuLjk0ZTNmZDc2ZjdmZmM1MjMwZmM4
NDdmZjlmZWNhZjQzZGM0NmZhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBIYXNoU2V0PFNjcm9sbGJhcio+KiBnU2Nyb2xsYmFyczsKK3N0
YXRpYyBIYXNoU2V0PFNjcm9sbGJhclRoZW1lQ2xpZW50Kj4qIGdTY3JvbGxiYXJzOwogCiBTY3Jv
bGxiYXJUaGVtZSogU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkKIHsKQEAgLTQ1LDE0ICs0
NSwxNCBAQCBTY3JvbGxiYXJUaGVtZUd0azo6flNjcm9sbGJhclRoZW1lR3RrKCkKIHsKIH0KIAot
dm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmICghZ1Njcm9sbGJhcnMpCi0gICAg
ICAgIGdTY3JvbGxiYXJzID0gbmV3IEhhc2hTZXQ8U2Nyb2xsYmFyKj47CisgICAgICAgIGdTY3Jv
bGxiYXJzID0gbmV3IEhhc2hTZXQ8U2Nyb2xsYmFyVGhlbWVDbGllbnQqPjsKICAgICBnU2Nyb2xs
YmFycy0+YWRkKHNjcm9sbGJhcik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnVucmVn
aXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1l
R3RrOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIp
CiB7CiAgICAgZ1Njcm9sbGJhcnMtPnJlbW92ZShzY3JvbGxiYXIpOwogICAgIGlmIChnU2Nyb2xs
YmFycy0+aXNFbXB0eSgpKSB7CkBAIC02OSw5ICs2OSw5IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVH
dGs6OnVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRoaWNrbmVzcygpCiAgICAgLy8gVXBkYXRlIHRoZSB0
aGlja25lc3Mgb2YgZXZlcnkgaW50ZXJpb3IgZnJhbWUgc2Nyb2xsYmFyIHdpZGdldC4gVGhlCiAg
ICAgLy8gcGxhdGZvcm0taW5kZXBlbmRlbnQgc2Nyb2xsYmFyIHRoZW0gY29kZSBpc24ndCB5ZXQg
c21hcnQgZW5vdWdoIHRvIGdldAogICAgIC8vIHRoaXMgaW5mb3JtYXRpb24gd2hlbiBpdCBwYWlu
dHMuCi0gICAgSGFzaFNldDxTY3JvbGxiYXIqPjo6aXRlcmF0b3IgZW5kID0gZ1Njcm9sbGJhcnMt
PmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxTY3JvbGxiYXIqPjo6aXRlcmF0b3IgaXQgPSBnU2Ny
b2xsYmFycy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFNjcm9sbGJhciog
c2Nyb2xsYmFyID0gKCppdCk7CisgICAgSGFzaFNldDxTY3JvbGxiYXJUaGVtZUNsaWVudCo+Ojpp
dGVyYXRvciBlbmQgPSBnU2Nyb2xsYmFycy0+ZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PFNjcm9s
bGJhclRoZW1lQ2xpZW50Kj46Oml0ZXJhdG9yIGl0ID0gZ1Njcm9sbGJhcnMtPmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgeworICAgICAgICBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
ID0gKCppdCk7CiAKICAgICAgICAgLy8gVG9wLWxldmVsIHNjcm9sbGJhciBpLmUuIHNjcm9sbGJh
cnMgd2hvIGhhdmUgYSBwYXJlbnQgU2Nyb2xsVmlldwogICAgICAgICAvLyB3aXRoIG5vIHBhcmVu
dCBhcmUgbmF0aXZlLCBhbmQgdGh1cyBkbyBub3QgbmVlZCB0byBiZSByZXNpemVkLgpAQCAtODYs
MTQgKzg2LDE0IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVNjcm9sbGJhcnNGcmFt
ZVRoaWNrbmVzcygpCiAgICAgfQogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lR3RrOjpoYXNUaHVt
YihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6Omhhc1RodW1i
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgLy8gVGhpcyBtZXRob2Qg
aXMganVzdCBjYWxsZWQgYXMgYSBwYWludC10aW1lIG9wdGltaXphdGlvbiB0byBzZWUgaWYKICAg
ICAvLyBwYWludGluZyB0aGUgdGh1bWIgY2FuIGJlIHNraXBwZWQuICBXZSBkb24ndCBoYXZlIHRv
IGJlIGV4YWN0IGhlcmUuCiAgICAgcmV0dXJuIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikgPiAwOwog
fQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIq
IHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJU
aGVtZUd0azo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwg
U2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0b25F
bmRQYXJ0ICYmICFtX2hhc0JhY2tCdXR0b25FbmRQYXJ0KQogICAgICAgICByZXR1cm4gSW50UmVj
dCgpOwpAQCAtMTE0LDcgKzExNCw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tC
dXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhCiAgICAgcmV0
dXJuIEludFJlY3QoeCwgc2Nyb2xsYmFyLT55KCkgKyBzY3JvbGxiYXItPmhlaWdodCgpIC0gbV90
cm91Z2hCb3JkZXJXaWR0aCAtICgyICogc2l6ZS5oZWlnaHQoKSksIHNpemUud2lkdGgoKSwgc2l6
ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0
b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJ
bnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAgICAgaWYg
KHBhcnQgPT0gRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCAmJiAhbV9oYXNGb3J3YXJkQnV0dG9uU3Rh
cnRQYXJ0KQogICAgICAgICByZXR1cm4gSW50UmVjdCgpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIElu
dFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgcmV0dXJuIEludFJlY3QoeCwgc2Nyb2xsYmFyLT55
KCkgKyBtX3Ryb3VnaEJvcmRlcldpZHRoICsgc2l6ZS5oZWlnaHQoKSwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tSZWN0
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6
dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAg
Ly8gVGhlIHBhZGRpbmcgYWxvbmcgdGhlIHRodW1iIG1vdmVtZW50IGF4aXMgaW5jbHVkZXMgdGhl
IHRyb3VnaCBib3JkZXIKICAgICAvLyBwbHVzIHRoZSBzaXplIG9mIHN0ZXBwZXIgc3BhY2luZyAo
dGhlIHNwYWNlIGJldHdlZW4gdGhlIHN0ZXBwZXIgYW5kCkBAIC0xODAsNyArMTgwLDcgQEAgSW50
UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBi
b29sKQogICAgICAgICAgICAgICAgICAgIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAt
ICgyICogbW92ZW1lbnRBeGlzUGFkZGluZykgLSBidXR0b25zV2lkdGgpOwogfQogCi1JbnRSZWN0
IFNjcm9sbGJhclRoZW1lR3RrOjp0aHVtYlJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1l
R3RrOjp0aHVtYlJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50
UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCkKIHsKICAgICBJbnRSZWN0IHRyYWNrUmVjdCA9
IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoc2Nyb2xsYmFyLCB1bmNvbnN0cmFpbmVk
VHJhY2tSZWN0KTsKICAgICBpbnQgdGh1bWJQb3MgPSB0aHVtYlBvc2l0aW9uKHNjcm9sbGJhcik7
CkBAIC0xOTEsNyArMTkxLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dGh1bWJSZWN0
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnMKICAgICByZXR1cm4g
SW50UmVjdCh0cmFja1JlY3QueCgpICsgKHRyYWNrUmVjdC53aWR0aCgpIC0gbV90aHVtYkZhdG5l
c3MpIC8gMiwgdHJhY2tSZWN0LnkoKSArIHRodW1iUG9zLCBtX3RodW1iRmF0bmVzcywgdGh1bWJM
ZW5ndGgoc2Nyb2xsYmFyKSk7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQogewogICAgIGlmIChncmFwaGljc0Nv
bnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYw
LDcgKzI2MCw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29uCiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFy
KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVH
dGs6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogewogICAgIHJldHVybiAoZXZlbnQuc2hpZnRLZXkoKSAm
JiBldmVudC5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB8fCAoZXZlbnQuYnV0dG9uKCkgPT0gTWlk
ZGxlQnV0dG9uKTsKIH0KQEAgLTI3MCw3ICsyNzAsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVHdGs6
OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSkKICAgICByZXR1cm4gbV90
aHVtYkZhdG5lc3MgKyAobV90cm91Z2hCb3JkZXJXaWR0aCAqIDIpOwogfQogCi1JbnRTaXplIFNj
cm9sbGJhclRoZW1lR3RrOjpidXR0b25TaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorSW50U2l6
ZSBTY3JvbGxiYXJUaGVtZUd0azo6YnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyKQogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxT
Y3JvbGxiYXIpCiAgICAgICAgIHJldHVybiBJbnRTaXplKG1fdGh1bWJGYXRuZXNzLCBtX3N0ZXBw
ZXJTaXplKTsKQEAgLTI3OSw3ICsyNzksNyBAQCBJbnRTaXplIFNjcm9sbGJhclRoZW1lR3RrOjpi
dXR0b25TaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiBJbnRTaXplKG1fc3Rl
cHBlclNpemUsIG1fdGh1bWJGYXRuZXNzKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lR3RrOjpt
aW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhl
bWVHdGs6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
KQogewogICAgIHJldHVybiBtX21pblRodW1iTGVuZ3RoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuaAppbmRleCA0NWUwOTNiMWVjOTdkMWFm
YWEyNGM1ODMzMTU2NjkzMDJlODVjZDYzLi5lNzNkZjI4NTUwMWI1ODI2ZGMwNTliODNiZmMzZDlh
NDE3MGQ0YmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xs
YmFyVGhlbWVHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFy
VGhlbWVHdGsuaApAQCAtMzcsMjkgKzM3LDI5IEBAIHB1YmxpYzoKICAgICBTY3JvbGxiYXJUaGVt
ZUd0aygpOwogICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lR3RrKCk7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVh
bCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0
dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sKTsKLSAgICB2aXJ0dWFsIElu
dFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCk7
Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29sKTsKLSAgICBJ
bnRSZWN0IHRodW1iUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVk
VHJhY2tSZWN0KTsKLSAgICBib29sIHBhaW50KFNjcm9sbGJhciosIEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwotICAgIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciopOwotICAgIHZvaWQgcGFpbnRUcmFj
a0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYp
OwotICAgIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25z
dCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4
dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNs
aWVudCopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sKTsKKyAgICB2aXJ0dWFsIElu
dFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQ
YXJ0LCBib29sKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgYm9vbCk7CisgICAgSW50UmVjdCB0aHVtYlJlY3QoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KTsKKyAgICBib29sIHBh
aW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVj
dCYgZGFtYWdlUmVjdCk7CisgICAgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2b2lkIHBhaW50VHJhY2tC
YWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3Qg
SW50UmVjdCYpOworICAgIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRC
dXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1
bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAg
ICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUpOwot
ICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwg
aW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIEludFNpemUg
YnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IG1pbmlt
dW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiAgICAgLy8gVE9ETzogVGhl
c2UgYXJlIHRoZSBkZWZhdWx0IEdUSysgdmFsdWVzLiBBdCBzb21lIHBvaW50IHdlIHNob3VsZCBw
dWxsIHRoZXNlIGZyb20gdGhlIHRoZW1lIGl0c2VsZi4KICAgICB2aXJ0dWFsIGRvdWJsZSBpbml0
aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKSB7IHJldHVybiAwLjIwOyB9CiAgICAgdmlydHVhbCBk
b3VibGUgYXV0b3Njcm9sbFRpbWVyRGVsYXkoKSB7IHJldHVybiAwLjAyOyB9CiAgICAgdm9pZCB1
cGRhdGVUaGVtZVByb3BlcnRpZXMoKTsKICAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRo
aWNrbmVzcygpOwotICAgIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKik7Ci0gICAg
dm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciopOworICAgIHZvaWQgcmVnaXN0ZXJT
Y3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTY3Jv
bGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogcHJvdGVjdGVkOgogI2lmbmRlZiBHVEtf
QVBJX1ZFUlNJT05fMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Nj
cm9sbGJhclRoZW1lR3RrMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xs
YmFyVGhlbWVHdGsyLmNwcAppbmRleCA3MjliZDEyNGRlMmIyMTg1NDk5N2IxOTg3NjMwY2RmODli
ZWE5MTAzLi44NjZiYjhhMWQyZjcxYWE4NjRlYTU3ZWQzMDNmMTM2MDcyYzFjNDI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsyLmNwcApA
QCAtNjYsMTMgKzY2LDEzIEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVRoZW1lUHJv
cGVydGllcygpCiAgICAgdXBkYXRlU2Nyb2xsYmFyc0ZyYW1lVGhpY2tuZXNzKCk7CiB9CiAKLXN0
YXRpYyBHdGtXaWRnZXQqIGdldFdpZGdldEZvclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJh
cikKK3N0YXRpYyBHdGtXaWRnZXQqIGdldFdpZGdldEZvclNjcm9sbGJhcihTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIFJlbmRlclRoZW1lR3RrKiB0aGVtZSA9IHN0YXRp
Y19jYXN0PFJlbmRlclRoZW1lR3RrKj4oUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLmdldCgp
KTsKICAgICByZXR1cm4gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xs
YmFyID8gdGhlbWUtPmd0a1ZTY3JvbGxiYXIoKSA6IHRoZW1lLT5ndGtIU2Nyb2xsYmFyKCk7CiB9
CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gUGFpbnQgdGhlIHRyYWNrIGJhY2tncm91bmQuIElm
IHRoZSB0cm91Z2gtdW5kZXItc3RlcHBlcnMgcHJvcGVydHkgaXMgdHJ1ZSwgdGhpcwogICAgIC8v
IHNob3VsZCBiZSB0aGUgZnVsbCBzaXplIG9mIHRoZSBzY3JvbGxiYXIsIGJ1dCBpZiBpcyBmYWxz
ZSwgaXQgc2hvdWxkIG9ubHkgYmUgdGhlCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgU2Nyb2xsYmFy
VGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RBVEVfQUNUSVZF
LCBHVEtfU0hBRE9XX0lOLCAidHJvdWdoIik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6
OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9s
bGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJC
YWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhcikKIHsKICAgICBJbnRSZWN0IGZ1bGxTY3JvbGxiYXJSZWN0ID0gSW50UmVjdChz
Y3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCksIHNjcm9sbGJhci0+d2lkdGgoKSwgc2Nyb2xs
YmFyLT5oZWlnaHQoKSk7CiAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Ny
b2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JNQUwsIEdUS19T
SEFET1dfSU4sICJzY3JvbGxlZF93aW5kb3ciKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRU
aHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBn
ZXRXaWRnZXRGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKICAgICBnYm9vbGVhbiBhY3RpdmF0ZVNs
aWRlcjsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRo
dW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYQogICAgIHdp
ZGdldENvbnRleHQuZ3RrUGFpbnRTbGlkZXIoc2xpZGVyUmVjdCwgd2lkZ2V0LCBzdGF0ZVR5cGUs
IHNoYWRvd1R5cGUsICJzbGlkZXIiLCBvcmllbnRhdGlvbik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFy
VGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3Zv
aWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwg
U2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIC8vIFRoZSBidXR0b25zIHdpbGwgYmUgZGlzYWJs
ZWQgaWYgdGhlIHRodW1iIGlzIGFzIHRoZSBhcHByb3ByaWF0ZSBleHRyZW1lLgogICAgIEd0a1No
YWRvd1R5cGUgc2hhZG93VHlwZSA9IEdUS19TSEFET1dfT1VUOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGszLmNwcAppbmRleCA0YzMzZTY2ZGI4
ZmZlZmMzZjQyMzQ2Y2FkMGVlZTY3ZWU2Y2Q0NWZlLi45NzQ5YzU0M2YzZGRmNmIzMTVlZmZiOThh
NzU5ZmY1YjAwMmQ3MGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2Nyb2xsYmFyVGhlbWVHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2Nyb2xsYmFyVGhlbWVHdGszLmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCBhcHBs
eVNjcm9sbGJhclN0eWxlQ29udGV4dENsYXNzZXMoR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0LCBT
Y3JvbGxiYQogICAgIGd0a19zdHlsZV9jb250ZXh0X2FkZF9jbGFzcyhjb250ZXh0LCBvcmllbnRh
dGlvbiA9PSBWZXJ0aWNhbFNjcm9sbGJhciA/ICBHVEtfU1RZTEVfQ0xBU1NfVkVSVElDQUwgOiBH
VEtfU1RZTEVfQ0xBU1NfSE9SSVpPTlRBTCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6
OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lR3Rr
OjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8g
UGFpbnQgdGhlIHRyYWNrIGJhY2tncm91bmQuIElmIHRoZSB0cm91Z2gtdW5kZXItc3RlcHBlcnMg
cHJvcGVydHkgaXMgdHJ1ZSwgdGhpcwogICAgIC8vIHNob3VsZCBiZSB0aGUgZnVsbCBzaXplIG9m
IHRoZSBzY3JvbGxiYXIsIGJ1dCBpZiBpcyBmYWxzZSwgaXQgc2hvdWxkIG9ubHkgYmUgdGhlCkBA
IC05NCw3ICs5NCw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3Jv
dW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyCiAgICAgZ3RrX3N0eWxlX2Nv
bnRleHRfcmVzdG9yZShtX2NvbnRleHQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpw
YWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxi
YXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFj
a2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIpCiB7CiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2F2ZShtX2NvbnRleHQpOwogCkBA
IC0xMDUsNyArMTA1LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJC
YWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2wKICAgICBndGtfc3R5bGVf
Y29udGV4dF9yZXN0b3JlKG1fY29udGV4dCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6
OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VGh1
bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGd0a19zdHlsZV9jb250ZXh0X3NhdmUo
bV9jb250ZXh0KTsKIApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6
OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJh
CiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShtX2NvbnRleHQpOwogfQogCi12b2lkIFNj
cm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBh
cnQpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAgICBndGtfc3R5bGVfY29udGV4dF9zYXZl
KG1fY29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxiYXJUaGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJh
clRoZW1lTWFjLmgKaW5kZXggMTNkNDRjMjNkM2IzMzYyMzZmYjY0MDk4ZmE4NzBhZWM4YzdiNTY1
OC4uOTYyOWY2MDc0ZjYyY2FhYjY1YTkzOWY0NzUwNzE4YTQxMjRkY2Y4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmgKQEAgLTM5LDQ2ICsz
OSw0NiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByZWZlcmVuY2VzQ2hhbmdlZCgpOwogCi0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKICNpZiAh
UExBVEZPUk0oQ0hST01JVU0pCi0gICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhciosIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CisgICAg
dmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKICNlbmRpZgogCiAgICAgdmly
dHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxh
clNjcm9sbGJhcik7CiAgICAgCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRz
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1c2VzT3ZlcmxheVNj
cm9sbGJhcnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJPdmVy
bGF5U3R5bGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogICAgIHZpcnR1YWwgZG91YmxlIGlu
aXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpOwogICAgIHZpcnR1YWwgZG91YmxlIGF1dG9zY3Jv
bGxUaW1lckRlbGF5KCk7CiAKICAgICB2aXJ0dWFsIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQg
YnV0dG9uc1BsYWNlbWVudCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Ny
b2xsYmFyKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFy
KFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxi
YXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNj
cm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2b2lkIHNldE5ld1BhaW50ZXJGb3JTY3JvbGxi
YXIoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFpbnRlcik7Ci0gICAgU2Nyb2xsYmFyUGFpbnRlciBw
YWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciopOworICAgIHZvaWQgc2V0TmV3UGFpbnRlckZv
clNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhaW50ZXIpOworICAg
IFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVu
dCopOwogCiAgICAgc3RhdGljIGJvb2wgaXNDdXJyZW50bHlEcmF3aW5nSW50b0xheWVyKCk7CiAg
ICAgc3RhdGljIHZvaWQgc2V0SXNDdXJyZW50bHlEcmF3aW5nSW50b0xheWVyKGJvb2wpOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKik7Ci0gICAg
dmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgYm9vbCBoYXNC
dXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBib29sIGhhc1RodW1i
KFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRv
blJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsK
LSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xs
YmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgdHJh
Y2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJ
bnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFy
dCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1
dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50
aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogCiAgICAgdmlydHVhbCBpbnQgbWF4
T3ZlcmxhcEJldHdlZW5QYWdlcygpIHsgcmV0dXJuIDQwOyB9CiAKLSAgICB2aXJ0dWFsIGludCBt
aW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRo
dW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAgICAgCi0gICAgdmlydHVhbCBib29s
IHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
Jik7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNj
cm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNob3VsZERyYWdEb2N1bWVudEluc3RlYWRP
ZlRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7
CiAgICAgaW50IHNjcm9sbGJhclBhcnRUb0hJUHJlc3NlZFN0YXRlKFNjcm9sbGJhclBhcnQpOwog
CiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKSAmJiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
ICYmIEVOQUJMRShSVUJCRVJfQkFORElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQppbmRleCBjYzc0ODI0NTc3ODUyOTNkMWQ1NzhiNzgy
ZDgxYzI3ZmFiYjI1OTI0Li4zYjkwMjFhZGVhNTVkYzhhZmNkNjZiZGRmNTU3NjEyNDA5ZDk5N2Fi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFj
Lm1tCkBAIC01MCw3ICs1MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgSGFzaE1hcDxTY3JvbGxiYXIqLCBSZXRhaW5QdHI8U2Ny
b2xsYmFyUGFpbnRlcj4gPiBTY3JvbGxiYXJQYWludGVyTWFwOwordHlwZWRlZiBIYXNoTWFwPFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgUmV0YWluUHRyPFNjcm9sbGJhclBhaW50ZXI+ID4gU2Nyb2xs
YmFyUGFpbnRlck1hcDsKIAogc3RhdGljIFNjcm9sbGJhclBhaW50ZXJNYXAqIHNjcm9sbGJhck1h
cCgpCiB7CkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJyb3dQbGFjZW1l
bnQoKQogICAgIH0KIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6cmVnaXN0ZXJTY3JvbGxi
YXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpyZWdpc3Rl
clNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChp
c1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkgewogICAgICAgICBib29sIGlzSG9yaXpv
bnRhbCA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyOwpA
QCAtMTc1LDE5ICsxNzUsMTkgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6cmVnaXN0ZXJTY3Jv
bGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgfQogfQogCi12b2lkIFNjcm9sbGJhclRo
ZW1lTWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBT
Y3JvbGxiYXJUaGVtZU1hYzo6dW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyKQogewogICAgIHNjcm9sbGJhck1hcCgpLT5yZW1vdmUoc2Nyb2xsYmFyKTsK
IH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6c2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcihT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFpbnRlciBuZXdQYWludGVyKQordm9pZCBT
Y3JvbGxiYXJUaGVtZU1hYzo6c2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYWludGVyIG5ld1BhaW50ZXIpCiB7CiAgICAg
c2Nyb2xsYmFyTWFwKCktPnNldChzY3JvbGxiYXIsIG5ld1BhaW50ZXIpOwogICAgIHVwZGF0ZUVu
YWJsZWRTdGF0ZShzY3JvbGxiYXIpOwogICAgIHVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShz
Y3JvbGxiYXIpOwogfQogCi1TY3JvbGxiYXJQYWludGVyIFNjcm9sbGJhclRoZW1lTWFjOjpwYWlu
dGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorU2Nyb2xsYmFyUGFpbnRlciBT
Y3JvbGxiYXJUaGVtZU1hYzo6cGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiBzY3JvbGxiYXJNYXAoKS0+Z2V0KHNjcm9sbGJh
cikuZ2V0KCk7CiB9CkBAIC0yNDgsMTAgKzI0OCwxMCBAQCBib29sIFNjcm9sbGJhclRoZW1lTWFj
Ojp1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZVNjcm9s
bGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAg
IFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHBhaW50ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFy
KTsKLSAgICBzd2l0Y2ggKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsYmFyT3Zl
cmxheVN0eWxlKCkpIHsKKyAgICBzd2l0Y2ggKHNjcm9sbGJhci0+c2Nyb2xsYmFyT3ZlcmxheVN0
eWxlKCkpIHsKICAgICBjYXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZURlZmF1bHQ6CiAgICAgICAg
IFtwYWludGVyIHNldEtub2JTdHlsZTpOU1Njcm9sbGVyS25vYlN0eWxlRGVmYXVsdF07CiAgICAg
ICAgIGJyZWFrOwpAQCAtMjc5LDcgKzI3OSw3IEBAIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQg
U2Nyb2xsYmFyVGhlbWVNYWM6OmJ1dHRvbnNQbGFjZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBn
QnV0dG9uUGxhY2VtZW50OwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNCdXR0b25z
KFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6aGFzQnV0dG9u
cyhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiBzY3JvbGxi
YXItPmVuYWJsZWQoKSAmJiBidXR0b25zUGxhY2VtZW50KCkgIT0gU2Nyb2xsYmFyQnV0dG9uc05v
bmUKICAgICAgICAgICAgICAmJiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250
YWxTY3JvbGxiYXIKQEAgLTI4Nyw3ICsyODcsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lTWFjOjpo
YXNCdXR0b25zKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgICAgICAgICAgIDogc2Nyb2xsYmFy
LT5oZWlnaHQoKSkgPj0gMiAqIChjUmVhbEJ1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xT
aXplKCldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0pOwogfQog
Ci1ib29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikK
K2Jvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6Omhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIpCiB7CiAgICAgaW50IG1pbkxlbmd0aEZvclRodW1iOwogICAgIGlmIChpc1Njcm9s
bGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkgewpAQCAtMzE5LDcgKzMxOSw3IEBAIHN0YXRpYyBJ
bnRSZWN0IGJ1dHRvblJlcGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9s
bGJhck9yaWVudGF0aW9uCiAgICAgcmV0dXJuIHBhaW50UmVjdDsKIH0KIAotSW50UmVjdCBTY3Jv
bGxiYXJUaGVtZU1hYzo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9s
bGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6
OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJh
clBhcnQgcGFydCwgYm9vbCBwYWludGluZykKIHsKICAgICBJbnRSZWN0IHJlc3VsdDsKICAgICAK
QEAgLTM1Myw3ICszNTMsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9u
UmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYQogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZvcndhcmRCdXR0b25SZWN0
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcp
CitJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcp
CiB7CiAgICAgSW50UmVjdCByZXN1bHQ7CiAgICAgCkBAIC0zOTMsNyArMzkzLDcgQEAgSW50UmVj
dCBTY3JvbGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbnRSZWN0IFNjcm9s
bGJhclRoZW1lTWFjOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRp
bmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhciwgYm9vbCBwYWludGluZykKIHsKICAgICBpZiAocGFpbnRpbmcgfHwg
IWhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZnJhbWVS
ZWN0KCk7CkBAIC00MzAsNyArNDMwLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6dHJh
Y2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQogICAgIHJldHVybiBJ
bnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIHN0YXJ0V2lkdGgsIHRoaWNr
bmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIHRvdGFsV2lkdGgpOwogfQogCi1pbnQgU2Nyb2xs
YmFyVGhlbWVNYWM6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2lu
dCBTY3JvbGxiYXJUaGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJs
ZSgpKQogICAgICAgICByZXR1cm4gW3Njcm9sbGJhck1hcCgpLT5nZXQoc2Nyb2xsYmFyKS5nZXQo
KSBrbm9iTWluTGVuZ3RoXTsKQEAgLTQzOCw3ICs0MzgsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVN
YWM6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICAgICAgcmV0
dXJuIGNUaHVtYk1pbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldOwogfQogCi1ib29s
IFNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6c2hvdWxk
Q2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZ0KQogewogICAgIGlmIChldnQuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVN
YWM6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50CiAgICAgcmV0dXJuIGV2dC5hbHRLZXkoKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZU1h
Yzo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnNob3VsZERy
YWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICByZXR1cm4gZXZlbnQuYWx0S2V5KCk7CiB9
CkBAIC00NzAsNyArNDcwLDcgQEAgaW50IFNjcm9sbGJhclRoZW1lTWFjOjpzY3JvbGxiYXJQYXJ0
VG9ISVByZXNzZWRTdGF0ZShTY3JvbGxiYXJQYXJ0IHBhcnQpCiAgICAgfQogfQogCi12b2lkIFNj
cm9sbGJhclRoZW1lTWFjOjp1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
Cit2b2lkIFNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZh
aWxhYmxlKCkpCiAgICAgICAgIFtzY3JvbGxiYXJNYXAoKS0+Z2V0KHNjcm9sbGJhcikuZ2V0KCkg
c2V0RW5hYmxlZDpzY3JvbGxiYXItPmVuYWJsZWQoKV07CkBAIC00OTksNyArNDk5LDcgQEAgc3Rh
dGljIHZvaWQgc2Nyb2xsYmFyUGFpbnRlclBhaW50KFNjcm9sbGJhclBhaW50ZXIgc2Nyb2xsYmFy
UGFpbnRlciwgYm9vbCBlbmFibGUKIH0KIAogI2lmICFQTEFURk9STShDSFJPTUlVTSkKLWJvb2wg
U2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCitib29sIFNjcm9sbGJh
clRoZW1lTWFjOjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgaWYg
KGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKSB7CiAgICAgICAgIGZsb2F0IHZhbHVl
ID0gMDsKQEAgLTU3MCw3ICs1NzAsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lTWFjOjpwYWludChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjbwogICAgIGlm
ICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIHRyYWNrSW5mby5lbmFibGVTdGF0ZSA9
IGtUaGVtZVRyYWNrRGlzYWJsZWQ7CiAgICAgZWxzZQotICAgICAgICB0cmFja0luZm8uZW5hYmxl
U3RhdGUgPSBzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlzQWN0aXZlKCkgPyBrVGhlbWVU
cmFja0FjdGl2ZSA6IGtUaGVtZVRyYWNrSW5hY3RpdmU7CisgICAgICAgIHRyYWNrSW5mby5lbmFi
bGVTdGF0ZSA9IHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpID8ga1RoZW1lVHJh
Y2tBY3RpdmUgOiBrVGhlbWVUcmFja0luYWN0aXZlOwogCiAgICAgaWYgKGhhc1RodW1iKHNjcm9s
bGJhcikpCiAgICAgICAgIHRyYWNrSW5mby5hdHRyaWJ1dGVzIHw9IGtUaGVtZVRyYWNrU2hvd1Ro
dW1iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJU
aGVtZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVt
ZU1vY2suY3BwCmluZGV4IDVkMmJjM2VjMDg5NzhlMDM3MzdmYmE3Mzk1YjhiOGNlNzQ2MGQ0NjQu
LjZkZTkxY2NiODE5MjEwNDBjMDg0NzhjMWVlNTY3N2RkZTQzNzQ5NWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKQEAgLTMy
LDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgaW50IGNTY3JvbGxiYXJU
aGlja25lc3NbXSA9IHsgMTUsIDExIH07CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVNb2NrOjp0
cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRo
ZW1lTW9jazo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wp
CiB7CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7CiB9CkBAIC00MiwxMiArNDIs
MTIgQEAgaW50IFNjcm9sbGJhclRoZW1lTW9jazo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJh
ckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogICAgIHJldHVybiBjU2Nyb2xsYmFyVGhpY2tuZXNz
W2NvbnRyb2xTaXplXTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tC
YWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHRyYWNrUmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWlu
dFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRyYWNrUmVjdCkKIHsKICAgICBjb250
ZXh0LT5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci0+ZW5hYmxlZCgpID8gQ29sb3I6Omxp
Z2h0R3JheSA6IENvbG9yKDB4RkZFMEUwRTApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAot
dm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQordm9p
ZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJl
Y3QpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+ZW5hYmxlZCgpKQogICAgICAgICBjb250ZXh0LT5m
aWxsUmVjdCh0aHVtYlJlY3QsIENvbG9yOjpkYXJrR3JheSwgQ29sb3JTcGFjZURldmljZVJHQik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1l
TW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2su
aAppbmRleCBlMjU0ODQyMmEyOGY1ZTcyM2U0MzUzZjhmNDU3NjUyNTNjYjY4NWJiLi42MzMzODQx
YWI3OTZiOWRjMjMzZjNmNjNlYjgwMGFiZmE3YjBiYjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmgKQEAgLTM2LDE1ICszNiwxNSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNv
bnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcik7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFs
IGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1
YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVh
bCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0
dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxi
YXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7IHJldHVybiBJ
bnRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xs
YmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCAvKnBhaW50aW5nKi8gPSBmYWxzZSkgeyByZXR1cm4g
SW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBi
b29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVj
dChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgLypwYWludGluZyov
ID0gZmFsc2UpIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3
YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wg
LypwYWludGluZyovID0gZmFsc2UpIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIHZpcnR1YWwg
SW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0g
ZmFsc2UpOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2
b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVj
dCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRl
eHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCos
IGNvbnN0IEludFJlY3QmKTsKICAgICAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzTW9j
a1RoZW1lKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmNwcAppbmRleCBlMzI0M2VjZmE4OTc5YjlhNjgxZTE1
OWJkZWU5YTliMTU5YzY3NDNjLi5kNGI1OGIxYjBlNWFmMTcwZjk2ZWY4MzY0YjY5YjQ4NGEzNjIy
MjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVt
ZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0
LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBTY3JvbGxiYXJQYXJ0IHNjcm9sbGJhclBh
cnQoY29uc3QgUVN0eWxlOjpTdWJDb250cm9sJiBzYykKICAgICByZXR1cm4gTm9QYXJ0OwogfQog
Ci1zdGF0aWMgUVN0eWxlT3B0aW9uU2xpZGVyKiBzdHlsZU9wdGlvblNsaWRlcihTY3JvbGxiYXIq
IHNjcm9sbGJhciwgUVdpZGdldCogd2lkZ2V0ID0gMCkKK3N0YXRpYyBRU3R5bGVPcHRpb25TbGlk
ZXIqIHN0eWxlT3B0aW9uU2xpZGVyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFFX
aWRnZXQqIHdpZGdldCA9IDApCiB7CiAgICAgc3RhdGljIFFTdHlsZU9wdGlvblNsaWRlciBvcHQ7
CiAgICAgaWYgKHdpZGdldCkKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgUVN0eWxlT3B0aW9u
U2xpZGVyKiBzdHlsZU9wdGlvblNsaWRlcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgUVdpZGdldCog
d2lkZwogICAgIHJldHVybiAmb3B0OwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lUXQ6OnBhaW50
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwg
Y29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVRdDo6cGFpbnQo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgaWYgKGdyYXBoaWNz
Q29udGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSkgewogICAgICAgIHNjcm9sbGJhci0+aW52
YWxpZGF0ZVJlY3QoZGFtYWdlUmVjdCk7CkBAIC0xOTMsNyArMTkzLDcgQEAgYm9vbCBTY3JvbGxi
YXJUaGVtZVF0OjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU2Nyb2xsYmFyUGFydCBTY3JvbGxi
YXJUaGVtZVF0OjpoaXRUZXN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2dCkKK1Njcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVRdDo6aGl0VGVzdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2dCkKIHsKICAgICBRU3R5bGVPcHRpb25TbGlkZXIqIG9wdCA9IHN0eWxlT3B0aW9uU2xpZGVy
KHNjcm9sbGJhcik7CiAgICAgY29uc3QgUVBvaW50IHBvcyA9IHNjcm9sbGJhci0+Y29udmVydEZy
b21Db250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigpKTsKQEAgLTIwMiwxMyArMjAyLDEzIEBA
IFNjcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVRdDo6aGl0VGVzdChTY3JvbGxiYXIqIHNjcm9s
bGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzCiAgICAgcmV0dXJuIHNjcm9sbGJhclBhcnQoc2MpOwog
fQogCi1ib29sIFNjcm9sbGJhclRoZW1lUXQ6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFy
KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lUXQ6
OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICAvLyBNaWRkbGUgY2xpY2sgY2VudGVycyBzbGlkZXIg
dGh1bWIgKGlmIHN1cHBvcnRlZCkuCiAgICAgcmV0dXJuIHN0eWxlKCktPnN0eWxlSGludChRU3R5
bGU6OlNIX1Njcm9sbEJhcl9NaWRkbGVDbGlja0Fic29sdXRlUG9zaXRpb24pICYmIGV2dC5idXR0
b24oKSA9PSBNaWRkbGVCdXR0b247CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVRdDo6aW52YWxp
ZGF0ZVBhcnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQpCit2b2lkIFNjcm9s
bGJhclRoZW1lUXQ6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQpCiB7CiAgICAgLy8gRklYTUU6IERvIG1vcmUgcHJlY2lzZSBpbnZh
bGlkYXRpb24uCiAgICAgc2Nyb2xsYmFyLT5pbnZhbGlkYXRlKCk7CkBAIC0yMjQsNyArMjI0LDcg
QEAgaW50IFNjcm9sbGJhclRoZW1lUXQ6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250
cm9sU2l6ZSBjb250cm9sU2l6ZSkKICAgICByZXR1cm4gc3R5bGUoKS0+cGl4ZWxNZXRyaWMoUVN0
eWxlOjpQTV9TY3JvbGxCYXJFeHRlbnQsICZvLCAwKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1l
UXQ6OnRodW1iUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhl
bWVRdDo6dGh1bWJQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewog
ICAgIGlmIChzY3JvbGxiYXItPmVuYWJsZWQoKSkgewogICAgICAgICBmbG9hdCBwb3MgPSAoZmxv
YXQpc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgKiAodHJhY2tMZW5ndGgoc2Nyb2xsYmFyKSAtIHRo
dW1iTGVuZ3RoKHNjcm9sbGJhcikpIC8gc2Nyb2xsYmFyLT5tYXhpbXVtKCk7CkBAIC0yMzMsMjEg
KzIzMywyMSBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVRdDo6dGh1bWJQb3NpdGlvbihTY3JvbGxiYXIq
IHNjcm9sbGJhcikKICAgICByZXR1cm4gMDsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lUXQ6OnRo
dW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lUXQ6OnRo
dW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgUVN0eWxl
T3B0aW9uU2xpZGVyKiBvcHQgPSBzdHlsZU9wdGlvblNsaWRlcihzY3JvbGxiYXIpOwogICAgIElu
dFJlY3QgdGh1bWIgPSBzdHlsZSgpLT5zdWJDb250cm9sUmVjdChRU3R5bGU6OkNDX1Njcm9sbEJh
ciwgb3B0LCBRU3R5bGU6OlNDX1Njcm9sbEJhclNsaWRlciwgMCk7CiAgICAgcmV0dXJuIHNjcm9s
bGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gdGh1bWIud2lkdGgo
KSA6IHRodW1iLmhlaWdodCgpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVRdDo6dHJhY2tQb3Np
dGlvbihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVF0Ojp0cmFja1Bv
c2l0aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgUVN0eWxlT3B0
aW9uU2xpZGVyKiBvcHQgPSBzdHlsZU9wdGlvblNsaWRlcihzY3JvbGxiYXIpOwogICAgIEludFJl
Y3QgdHJhY2sgPSBzdHlsZSgpLT5zdWJDb250cm9sUmVjdChRU3R5bGU6OkNDX1Njcm9sbEJhciwg
b3B0LCBRU3R5bGU6OlNDX1Njcm9sbEJhckdyb292ZSwgMCk7CiAgICAgcmV0dXJuIHNjcm9sbGJh
ci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gdHJhY2sueCgpIC0gc2Ny
b2xsYmFyLT54KCkgOiB0cmFjay55KCkgLSBzY3JvbGxiYXItPnkoKTsKIH0KIAotaW50IFNjcm9s
bGJhclRoZW1lUXQ6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9s
bGJhclRoZW1lUXQ6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIp
CiB7CiAgICAgUVN0eWxlT3B0aW9uU2xpZGVyKiBvcHQgPSBzdHlsZU9wdGlvblNsaWRlcihzY3Jv
bGxiYXIpOwogICAgIEludFJlY3QgdHJhY2sgPSBzdHlsZSgpLT5zdWJDb250cm9sUmVjdChRU3R5
bGU6OkNDX1Njcm9sbEJhciwgb3B0LCBRU3R5bGU6OlNDX1Njcm9sbEJhckdyb292ZSwgMCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmgKaW5kZXggY2Y0
ODgyZGEyMDNiYmYwZmI3Y2M2OWU3YzNlMWMxZmZkZDgxZjVlYi4uMDMzN2JmODBjY2Y2NDZkMThl
OGYwN2M0ZmU1YWNiYTNhYTk5NTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0
L1Njcm9sbGJhclRoZW1lUXQuaApAQCAtNDAsMTkgKzQwLDE5IEBAIGNsYXNzIFNjcm9sbGJhclRo
ZW1lUXQgOiBwdWJsaWMgU2Nyb2xsYmFyVGhlbWUgewogcHVibGljOgogICAgIHZpcnR1YWwgflNj
cm9sbGJhclRoZW1lUXQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXIqLCBH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2aXJ0dWFs
IGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3Ju
ZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJl
Y3QpOwogCi0gICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyKiwgY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRl
c3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCk7
CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
U2Nyb2xsYmFyUGFydCk7CiAKLSAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9sbGJh
ciopOwotICAgIHZpcnR1YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhciopOwotICAgIHZpcnR1
YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBpbnQgdHJhY2tM
ZW5ndGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxi
YXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhclRo
ZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3JvbGxiYXJUaGVt
ZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xp
ZW50Kik7CiAKICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29u
dHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHAKaW5kZXggMzQzYmJiMjgwZWQ2
YWY4NDhmNTFjYzAwZWQ5OGYzMWY3ZTE3ZTI0OC4uMWNjNTM4NWUxODdhMjJlYWYxYjA1NWUzNGJl
MGZmNjQzODkyOWIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Nj
cm9sbGJhclRoZW1lU2FmYXJpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2Nyb2xsYmFyVGhlbWVTYWZhcmkuY3BwCkBAIC0xMDQsMTQgKzEwNCwxNCBAQCBpbnQgU2Nyb2xs
YmFyVGhlbWVTYWZhcmk6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBj
b250cm9sU2l6ZSkKICAgICByZXR1cm4gY1Njcm9sbGJhclRoaWNrbmVzc1tjb250cm9sU2l6ZV07
CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpoYXNCdXR0b25zKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZW5hYmxl
ZCgpICYmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/
IAogICAgICAgICAgICAgIHNjcm9sbGJhci0+d2lkdGgoKSA6IAogICAgICAgICAgICAgIHNjcm9s
bGJhci0+aGVpZ2h0KCkpID49IDIgKiAoY1JlYWxCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250
cm9sU2l6ZSgpXSAtIGNCdXR0b25IaXRJbnNldFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldKTsK
IH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzVGh1bWIoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpoYXNUaHVtYihTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiBzY3JvbGxiYXItPmVuYWJsZWQoKSAm
JiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyAKICAg
ICAgICAgICAgICBzY3JvbGxiYXItPndpZHRoKCkgOiAKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0
aWMgSW50UmVjdCBidXR0b25SZXBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBidXR0b25SZWN0LCBT
Y3JvbGxiYXJPcmllbnRhdGlvbgogICAgIHJldHVybiBwYWludFJlY3Q7CiB9CiAKLUludFJlY3Qg
U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFy
LCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCitJbnRSZWN0IFNjcm9sbGJhclRo
ZW1lU2FmYXJpOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCiB7CiAgICAgSW50UmVjdCByZXN1
bHQ7CiAKQEAgLTE1Miw3ICsxNTIsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpi
YWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmZvcndhcmRC
dXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wg
cGFpbnRpbmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpmb3J3YXJkQnV0dG9uUmVj
dChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJv
b2wgcGFpbnRpbmcpCiB7CiAgICAgSW50UmVjdCByZXN1bHQ7CiAgICAgCkBAIC0xODEsNyArMTgx
LDcgQEAgc3RhdGljIEludFJlY3QgdHJhY2tSZXBhaW50UmVjdChjb25zdCBJbnRSZWN0JiB0cmFj
a1JlY3QsIFNjcm9sbGJhck9yaWVudGF0aW9uIG8KICAgICByZXR1cm4gcGFpbnRSZWN0OwogfQog
Ci1JbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIGJvb2wgcGFpbnRpbmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjp0cmFj
a1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCBwYWludGluZykKIHsK
ICAgICBpZiAocGFpbnRpbmcgfHwgIWhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkKICAgICAgICAgcmV0
dXJuIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7CkBAIC0xOTMsMzYgKzE5MywzNiBAQCBJbnRSZWN0
IFNjcm9sbGJhclRoZW1lU2FmYXJpOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJv
b2wgcGFpbnRpbmcpCiAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJh
ci0+eSgpICsgY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldLCB0aGlja25l
c3MsIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSAyICogY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNv
bnRyb2xTaXplKCldKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lU2FmYXJpOjptaW5pbXVtVGh1
bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6
Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewog
ICAgIHJldHVybiBjVGh1bWJNaW5MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXTsKIH0K
IAotYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxi
YXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVT
YWZhcmk6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4gZXZ0LnNoaWZ0S2V5KCkgJiYg
ZXZ0LmJ1dHRvbigpID09IExlZnRCdXR0b247CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZh
cmk6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdHJhY2tSZWN0KQordm9pZCBT
Y3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHRyYWNrUmVjdCkKIHsKICAgICBpZiAoIVNhZmFyaVRoZW1lTGlicmFyeSgpKQog
ICAgICAgICByZXR1cm47CiAgICAgTlNDb250cm9sU2l6ZSBzaXplID0gc2Nyb2xsYmFyLT5jb250
cm9sU2l6ZSgpID09IFNtYWxsU2Nyb2xsYmFyID8gTlNTbWFsbENvbnRyb2xTaXplIDogTlNSZWd1
bGFyQ29udHJvbFNpemU7CiAgICAgVGhlbWVDb250cm9sU3RhdGUgc3RhdGUgPSAwOwotICAgIGlm
IChzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlzQWN0aXZlKCkpCisgICAgaWYgKHNjcm9s
bGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQogICAgICAgICBzdGF0ZSB8PSBBY3RpdmVT
dGF0ZTsKICAgICBpZiAoaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICBzdGF0ZSB8PSBF
bmFibGVkU3RhdGU7CiAgICAgcGFpbnRUaGVtZVBhcnQoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigp
ID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gVlNjcm9sbFRyYWNrUGFydCA6IEhTY3JvbGxUcmFja1Bh
cnQsIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHRyYWNrUmVjdCwgc2l6ZSwg
c3RhdGUpOyAKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0b24oR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25z
dCBJbnRSZWN0JiBidXR0b25SZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJh
clRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgYnV0dG9u
UmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGlmICghU2FmYXJpVGhlbWVMaWJyYXJ5
KCkpCiAgICAgICAgIHJldHVybjsKICAgICBOU0NvbnRyb2xTaXplIHNpemUgPSBzY3JvbGxiYXIt
PmNvbnRyb2xTaXplKCkgPT0gU21hbGxTY3JvbGxiYXIgPyBOU1NtYWxsQ29udHJvbFNpemUgOiBO
U1JlZ3VsYXJDb250cm9sU2l6ZTsKICAgICBUaGVtZUNvbnRyb2xTdGF0ZSBzdGF0ZSA9IDA7Ci0g
ICAgaWYgKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSkKKyAgICBpZiAo
c2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAgICAgICAgIHN0YXRlIHw9IEFj
dGl2ZVN0YXRlOwogICAgIGlmIChoYXNCdXR0b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHN0YXRl
IHw9IEVuYWJsZWRTdGF0ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHZvaWQgU2Nyb2xsYmFyVGhl
bWVTYWZhcmk6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBT
Y3JvbGxiCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblJlY3QsIHNpemUsIHN0YXRlKTsK
IH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHRodW1iUmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50VGh1bWIoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKIHsKICAgICBpZiAoIVNhZmFyaVRoZW1lTGli
cmFyeSgpKQogICAgICAgICByZXR1cm47CiAgICAgTlNDb250cm9sU2l6ZSBzaXplID0gc2Nyb2xs
YmFyLT5jb250cm9sU2l6ZSgpID09IFNtYWxsU2Nyb2xsYmFyID8gTlNTbWFsbENvbnRyb2xTaXpl
IDogTlNSZWd1bGFyQ29udHJvbFNpemU7CiAgICAgVGhlbWVDb250cm9sU3RhdGUgc3RhdGUgPSAw
OwotICAgIGlmIChzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlzQWN0aXZlKCkpCisgICAg
aWYgKHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQogICAgICAgICBzdGF0ZSB8
PSBBY3RpdmVTdGF0ZTsKICAgICBpZiAoaGFzVGh1bWIoc2Nyb2xsYmFyKSkKICAgICAgICAgc3Rh
dGUgfD0gRW5hYmxlZFN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
U2Nyb2xsYmFyVGhlbWVTYWZhcmkuaAppbmRleCBmMDM5Mzc5ZWE0NDcwOGU4YjViNzVmOTYwNTUz
MmZlMTFkNjI2NTkyLi5mNDI3YjE5MGZkNjc2NjUyMTU2NzU2NmNiNmNiYzRkZmU0M2Q5OTI4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZh
cmkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZh
cmkuaApAQCAtNDEsMjAgKzQxLDIwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9y
dHNDb250cm9sVGludHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHByb3RlY3RlZDoKLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGJvb2wg
aGFzVGh1bWIoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxi
YXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwg
SW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29s
IHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xs
YmFyKiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1
dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50
aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7
CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJv
b2wgcGFpbnRpbmcgPSBmYWxzZSk7CiAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5n
dGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9s
bGJhclRoZW1lQ2xpZW50Kik7CiAgICAgCi0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9u
VGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVh
bCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAg
dmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVt
YihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmly
dHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1
dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGlj
c0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVt
ZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4u
Y3BwCmluZGV4IGQzNjM0MTA2ODQ4N2ZmMWI3ODY5NzY4ZTlkNWY2YjJmNDg5ODFhYTUuLjU2NDQy
OTdkN2YyNzBjNTBjN2EyOGVmM2IxZTI0YWNmMWQxMjc5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcApAQCAtMTMwLDEyICsxMzAs
MTIgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6aW52YWxpZGF0ZU9uTW91c2VFbnRlckV4aXQo
KQogICAgIHJldHVybiBydW5uaW5nVmlzdGE7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVXaW46
Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6
aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4g
dGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+IDA7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVX
aW46OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBh
cnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpiYWNrQnV0dG9uUmVjdChTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7
CiAgICAgLy8gV2luZG93cyBqdXN0IGhhcyBzaW5nbGUgYXJyb3dzLgogICAgIGlmIChwYXJ0ID09
IEJhY2tCdXR0b25FbmRQYXJ0KQpAQCAtMTU0LDcgKzE1NCw3IEBAIEludFJlY3QgU2Nyb2xsYmFy
VGhlbWVXaW46OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQ
YXJ0IHBhCiAgICAgICAgICAgICAgICAgICAgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgp
IDwgMiAqIHRoaWNrbmVzcyA/IHNjcm9sbGJhci0+aGVpZ2h0KCkgLyAyIDogdGhpY2tuZXNzKTsK
IH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xs
YmFyVGhlbWVXaW46OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICAvLyBXaW5kb3dzIGp1c3Qg
aGFzIHNpbmdsZSBhcnJvd3MuCiAgICAgaWYgKHBhcnQgPT0gRm9yd2FyZEJ1dHRvblN0YXJ0UGFy
dCkKQEAgLTE3NSw3ICsxNzUsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpmb3J3YXJk
QnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydAogICAgIHJldHVy
biBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIHNjcm9sbGJhci0+aGVp
Z2h0KCkgLSBoLCB0aGlja25lc3MsIGgpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV2lu
Ojp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJh
clRoZW1lV2luOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9v
bCkKIHsKICAgICBpbnQgdGhpY2tuZXNzID0gc2Nyb2xsYmFyVGhpY2tuZXNzKCk7CiAgICAgaWYg
KHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CkBAIC0x
ODgsMTIgKzE4OCwxMiBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjp0cmFja1JlY3QoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCiAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54
KCksIHNjcm9sbGJhci0+eSgpICsgdGhpY2tuZXNzLCB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVp
Z2h0KCkgLSAyICogdGhpY2tuZXNzKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6c2hv
dWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2
dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICByZXR1
cm4gZXZ0LnNoaWZ0S2V5KCkgJiYgZXZ0LmJ1dHRvbigpID09IExlZnRCdXR0b247CiB9CiAKLWJv
b2wgU2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xs
YmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIC8v
IEZpbmQgdGhlIHJlY3Qgd2l0aGluIHdoaWNoIHdlIHNob3VsZG4ndCBzbmFwLCBieSBleHBhbmRp
bmcgdGhlIHRyYWNrIHJlY3QKICAgICAvLyBpbiBib3RoIGRpbWVuc2lvbnMuCkBAIC0yMTEsMTQg
KzIxMSwxNCBAQCBib29sIFNjcm9sbGJhclRoZW1lV2luOjpzaG91bGRTbmFwQmFja1RvRHJhZ09y
aWdpbihTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUAogICAgIHJldHVybiAhcmVjdC5jb250
YWlucyhtb3VzZVBvc2l0aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRU
cmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50
VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBKdXN0IGFz
c3VtZSBhIGZvcndhcmQgdHJhY2sgcGFydC4gIFdlIG9ubHkgcGFpbnQgdGhlIHRyYWNrIGFzIGEg
c2luZ2xlIHBpZWNlIHdoZW4gdGhlcmUgaXMgbm8gdGh1bWIuCiAgICAgaWYgKCFoYXNUaHVtYihz
Y3JvbGxiYXIpKQogICAgICAgICBwYWludFRyYWNrUGllY2UoY29udGV4dCwgc2Nyb2xsYmFyLCBy
ZWN0LCBGb3J3YXJkVHJhY2tQYXJ0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFp
bnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCit2b2lkIFNj
cm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBT
Y3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQogewogICAgIGNoZWNrQW5kSW5pdFNjcm9sbGJhclRoZW1l
KCk7CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRy
YWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcgogI2VuZGlm
CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNj
cm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50QnV0dG9uKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGNoZWNrQW5k
SW5pdFNjcm9sbGJhclRoZW1lKCk7CiAKQEAgLTMzOSw3ICszMzksNyBAQCBzdGF0aWMgSW50UmVj
dCBncmlwcGVyUmVjdChpbnQgdGhpY2tuZXNzLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3QpCiAg
ICAgICAgICAgICAgICAgICAgZ3JpcHBlclRoaWNrbmVzcywgZ3JpcHBlclRoaWNrbmVzcyk7CiB9
CiAKLXN0YXRpYyB2b2lkIHBhaW50R3JpcHBlcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgSERDIGhk
YywgY29uc3QgSW50UmVjdCYgcmVjdCkKK3N0YXRpYyB2b2lkIHBhaW50R3JpcHBlcihTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBIREMgaGRjLCBjb25zdCBJbnRSZWN0JiByZWN0KQog
ewogICAgIGlmICghc2Nyb2xsYmFyVGhlbWUpCiAgICAgICAgIHJldHVybjsgIC8vIENsYXNzaWMg
bG9vayBoYXMgbm8gZ3JpcHBlci4KQEAgLTM1OCw3ICszNTgsNyBAQCBzdGF0aWMgdm9pZCBwYWlu
dEdyaXBwZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiAgICAgRHJhd1RoZW1lQmFja2dyb3VuZChzY3JvbGxiYXJUaGVtZSwgaGRjLCBzY3JvbGxi
YXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IFNQX0dSSVBQRVJIT1Ig
OiBTUF9HUklQUEVSVkVSVCwgc3RhdGUsICZ0aGVtZVJlY3QsIDApOwogfQogCi12b2lkIFNjcm9s
bGJhclRoZW1lV2luOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1l
V2luOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBjaGVja0FuZElu
aXRTY3JvbGxiYXJUaGVtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
Y3JvbGxiYXJUaGVtZVdpbi5oCmluZGV4IGNkMmYxNzZkZmRjOTczODJjMzViYjc3M2Y5YjFlOGRh
ZDIxMjc2YjYuLjg3MDI0MGMxNjU1OGNmMGY2MjU3NDE5NmVlYjY5YWFhODA2YTdhMjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oCkBAIC00
MiwyMCArNDIsMjAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpbnZhbGlkYXRlT25Nb3Vz
ZUVudGVyRXhpdCgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMo
U2Nyb2xsYmFyKikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihT
Y3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNs
aWVudCopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZp
cnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0
LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3Qo
U2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3Qg
YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29s
IHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVj
dChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBm
YWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2Vu
dGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1
bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBw
YWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRl
eHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0
IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihH
cmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNr
UGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9s
bGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmNwcAppbmRleCBjOTI0
OTc4YTUwNWFjMzFmMTQwNTFlMzAxODMzMDY0MjUxM2M0YTUxLi5iYWRmMzE1NTQwNWE2YTUxMzY2
MjMyNWI5MjM1OWRjODEzYTk1MjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93eC9TY3JvbGxiYXJUaGVtZVd4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
eC9TY3JvbGxiYXJUaGVtZVd4LmNwcApAQCAtNzEsMTkgKzcxLDE5IEBAIGludCBTY3JvbGxiYXJU
aGVtZVd4OjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgc2l6ZSkKICAg
ICByZXR1cm4gdGhpY2tuZXNzOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lV3g6Omhhc1RodW1i
KFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZVd4OjpoYXNUaHVtYihT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIC8vIFRoaXMgbWV0aG9kIGlz
IGp1c3QgY2FsbGVkIGFzIGEgcGFpbnQtdGltZSBvcHRpbWl6YXRpb24gdG8gc2VlIGlmCiAgICAg
Ly8gcGFpbnRpbmcgdGhlIHRodW1iIGNhbiBiZSBza2lwcGVkLiAgV2UgZG9uJ3QgaGF2ZSB0byBi
ZSBleGFjdCBoZXJlLgogICAgIHJldHVybiB0aHVtYkxlbmd0aChzY3JvbGxiYXIpID4gMDsKIH0K
IAotaW50IFNjcm9sbGJhclRoZW1lV3g6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNj
cm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVd4OjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gMjA7CiB9CiAKLUludFNp
emUgU2Nyb2xsYmFyVGhlbWVXeDo6YnV0dG9uU2l6ZShTY3JvbGxiYXIqKSAKK0ludFNpemUgU2Ny
b2xsYmFyVGhlbWVXeDo6YnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopIAogewogI2lm
ZGVmIF9fV1hNQUNfXwogICAgIHJldHVybiBJbnRTaXplKDIwLDIwKTsKQEAgLTkyLDcgKzkyLDcg
QEAgSW50U2l6ZSBTY3JvbGxiYXJUaGVtZVd4OjpidXR0b25TaXplKFNjcm9sbGJhciopCiAjZW5k
aWYKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVd4OjpzcGxpdFRyYWNrKFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0LCBJbnRSZWN0JiBi
ZWZvcmVUaHVtYlJlY3QsIEludFJlY3QmIHRodW1iUmVjdCwgSW50UmVjdCYgYWZ0ZXJUaHVtYlJl
Y3QpCit2b2lkIFNjcm9sbGJhclRoZW1lV3g6OnNwbGl0VHJhY2soU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCwgSW50
UmVjdCYgYmVmb3JlVGh1bWJSZWN0LCBJbnRSZWN0JiB0aHVtYlJlY3QsIEludFJlY3QmIGFmdGVy
VGh1bWJSZWN0KQogewogICAgIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxpdFRyYWNrKHNj
cm9sbGJhciwgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCwgYmVmb3JlVGh1bWJSZWN0LCB0aHVtYlJl
Y3QsIGFmdGVyVGh1bWJSZWN0KTsKICNpZmRlZiBfX1dYTUFDX18KQEAgLTEwOSw3ICsxMDksNyBA
QCB2b2lkIFNjcm9sbGJhclRoZW1lV3g6OnNwbGl0VHJhY2soU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHVuY29uc3RyYQogI2VuZGlmCiB9CiAKLUludFJlY3QgU2Nyb2xsYmFy
VGhlbWVXeDo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBh
cnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6YmFja0J1dHRvblJlY3Qo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29s
KQogewogICAgIC8vIEZJWE1FOiBIYW5kbGluZyB0aGlzIGNhc2UgaXMgbmVlZGVkIHdoZW4gdGhl
cmUgYXJlIHR3byBzZXRzIG9mIGFycm93IGJ1dHRvbnMKICAgICAvLyBvbiBNYWMsIG9uZSBhdCB0
aGUgdG9wIGFuZCBvbmUgYXQgdGhlIGJvdHRvbS4KQEAgLTEzMCw3ICsxMzAsNyBAQCBJbnRSZWN0
IFNjcm9sbGJhclRoZW1lV3g6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBT
Y3JvbGxiYXJQYXJ0IHBhcgogICAgIHJldHVybiBJbnRSZWN0KHgsIHksIHNpemUud2lkdGgoKSwg
c2l6ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6Zm9yd2FyZEJ1
dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkK
K0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIC8v
IEZJWE1FOiBIYW5kbGluZyB0aGlzIGNhc2UgaXMgbmVlZGVkIHdoZW4gdGhlcmUgYXJlIHR3byBz
ZXRzIG9mIGFycm93IGJ1dHRvbnMKICAgICAvLyBvbiBNYWMsIG9uZSBhdCB0aGUgdG9wIGFuZCBv
bmUgYXQgdGhlIGJvdHRvbS4KQEAgLTE1NSw3ICsxNTUsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRo
ZW1lV3g6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQ
YXJ0CiAgICAgcmV0dXJuIEludFJlY3QoeCwgeSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgp
KTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OnRyYWNrUmVjdChTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sKQogewogICAgIEludFNpemUgYnMgPSBi
dXR0b25TaXplKHNjcm9sbGJhcik7CiAgICAgaW50IHRyYWNrU3RhcnQgPSAwOwpAQCAtMTc5LDEx
ICsxNzksMTEgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIGJvb2wpCiAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNj
cm9sbGJhci0+eSgpICsgdHJhY2tTdGFydCwgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgp
IC0gMiAqIGJzLmhlaWdodCgpKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVd4OjpwYWludChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiByZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZVd4OjpwYWludChTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IHJlY3QpCiB7CiAgICAgd3hPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IChzY3JvbGxiYXItPm9y
aWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgPyB3eEhPUklaT05UQUwgOiB3eFZF
UlRJQ0FMOwogICAgIGludCBmbGFncyA9IDA7Ci0gICAgaWYgKHNjcm9sbGJhci0+c2Nyb2xsYWJs
ZUFyZWEoKS0+aXNBY3RpdmUoKSkKKyAgICBpZiAoc2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVBcmVh
QWN0aXZlKCkpCiAgICAgICAgIGZsYWdzIHw9IHd4Q09OVFJPTF9GT0NVU0VEOwogICAgIAogICAg
IGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
eC9TY3JvbGxiYXJUaGVtZVd4LmgKaW5kZXggNzVhYjE3NWEzYmE2MDRmY2Q3OTVhZDJlYTQ1ZWRm
Y2Y1ODNlZTU1OC4uMzcyYWFmOTY2MmY3NDVkNGVlMDc0N2VkZjVjMTFmOWZjNWFkODk1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guaApAQCAtMzUs
MjEgKzM1LDIxIEBAIGNsYXNzIFNjcm9sbGJhclRoZW1lV3ggOiBwdWJsaWMgU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUgewogcHVibGljOgogICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lV3goKTsK
ICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUg
PSBSZWd1bGFyU2Nyb2xsYmFyKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwg
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWlu
dChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3Qm
KTsKICAgICAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxi
YXIqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJh
ciopOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVt
ZUNsaWVudCopOwogCi0gICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKik7
CisgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsK
IAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxi
YXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3
YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0g
ZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBw
YWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2Up
OworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVh
bCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3BsaXRUcmFjayhTY3JvbGxiYXIqLCBjb25z
dCBJbnRSZWN0JiB0cmFjaywgSW50UmVjdCYgc3RhcnRUcmFjaywgSW50UmVjdCYgdGh1bWIsIElu
dFJlY3QmIGVuZFRyYWNrKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3BsaXRUcmFjayhTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmIHRyYWNrLCBJbnRSZWN0JiBzdGFydFRyYWNrLCBJ
bnRSZWN0JiB0aHVtYiwgSW50UmVjdCYgZW5kVHJhY2spOwogICAgIAotICAgIHZpcnR1YWwgaW50
IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVt
VGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaAppbmRleCA4MTBjOThmZjM2NjhhYjkxY2Rl
OWMzNTcxOGQ2ZjA0YjJmNzQ2NzFiLi43ZmUyZmFjOGI4ZDQ5NzU0ZDhlYWIyM2Q0MDViMTYyYmUz
M2RjN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCkBA
IC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmVuZGVyU2Ny
b2xsYmFyUGFydCo+IG1fcGFydHM7CiB9OwogCi1pbmxpbmUgUmVuZGVyU2Nyb2xsYmFyKiB0b1Jl
bmRlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2lubGluZSBSZW5kZXJTY3JvbGxi
YXIqIHRvUmVuZGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7
CiAgICAgQVNTRVJUKCFzY3JvbGxiYXIgfHwgc2Nyb2xsYmFyLT5pc0N1c3RvbVNjcm9sbGJhcigp
KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyU2Nyb2xsYmFyKj4oc2Nyb2xsYmFyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVt
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3Bw
CmluZGV4IDg3MzA5ZDQ0ZTVhYTQ1MjY5NzlhZmViZTUxMjc4YjRlNDZhNWU5MTcuLjQ0ZTJhYTYz
MWRjMjgxNTAxNzRiYzIyNTIzMGU4YjZhYWI3ZDBkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcApAQCAtMjYsNiArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhclRoZW1lLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDbGll
bnQuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTM2LDcgKzM3LDcgQEAgUmVuZGVyU2Nyb2xsYmFyVGhlbWUqIFJlbmRlclNjcm9sbGJh
clRoZW1lOjpyZW5kZXJTY3JvbGxiYXJUaGVtZSgpCiAgICAgcmV0dXJuICZ0aGVtZTsKIH0KIAot
dm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSkKK3ZvaWQg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSkK
IHsKICAgICBJbnRSZWN0IGZpcnN0QnV0dG9uID0gYmFja0J1dHRvblJlY3Qoc2Nyb2xsYmFyLCBC
YWNrQnV0dG9uU3RhcnRQYXJ0KTsKICAgICBJbnRSZWN0IHNlY29uZEJ1dHRvbiA9IGZvcndhcmRC
dXR0b25SZWN0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCk7CkBAIC01MSw3ICs1
Miw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4
aXMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGludCYKICAgICB9CiB9CiAKLWJvb2wgUmVuZGVyU2Ny
b2xsYmFyVGhlbWU6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFJlbmRl
clNjcm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIpCiB7CiAgICAgaW50IHN0YXJ0U2l6ZTsKICAgICBpbnQgZW5kU2l6ZTsKQEAgLTU5LDI3ICs2
MCwyNyBAQCBib29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKFNjcm9sbGJhciog
c2Nyb2xsYmFyKQogICAgIHJldHVybiAoc3RhcnRTaXplICsgZW5kU2l6ZSkgPD0gKHNjcm9sbGJh
ci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gc2Nyb2xsYmFyLT53aWR0
aCgpIDogc2Nyb2xsYmFyLT5oZWlnaHQoKSk7CiB9CiAKLWJvb2wgUmVuZGVyU2Nyb2xsYmFyVGhl
bWU6Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBSZW5kZXJTY3JvbGxiYXJU
aGVtZTo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBy
ZXR1cm4gdHJhY2tMZW5ndGgoc2Nyb2xsYmFyKSAtIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikgPj0g
MDsKIH0KIAotaW50IFJlbmRlclNjcm9sbGJhclRoZW1lOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1pbmltdW1UaHVt
Ykxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiB0
b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5taW5pbXVtVGh1bWJMZW5ndGgoKTsKIH0KIAot
SW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCitJbnRSZWN0IFJlbmRlclNj
cm9sbGJhclRoZW1lOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29sKQogewogICAgIHJldHVybiB0b1JlbmRl
clNjcm9sbGJhcihzY3JvbGxiYXIpLT5idXR0b25SZWN0KHBhcnRUeXBlKTsKIH0KIAotSW50UmVj
dCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCitJbnRSZWN0IFJlbmRlclNjcm9s
bGJhclRoZW1lOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29sKQogewogICAgIHJldHVybiB0b1JlbmRl
clNjcm9sbGJhcihzY3JvbGxiYXIpLT5idXR0b25SZWN0KHBhcnRUeXBlKTsKIH0KIAotSW50UmVj
dCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBi
b29sKQorSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6dHJhY2tSZWN0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgaWYgKCFoYXNCdXR0b25zKHNjcm9s
bGJhcikpCiAgICAgICAgIHJldHVybiBzY3JvbGxiYXItPmZyYW1lUmVjdCgpOwpAQCAtOTEsNyAr
OTIsNyBAQCBJbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIGJvb2wpCiAgICAgcmV0dXJuIHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJh
ciktPnRyYWNrUmVjdChzdGFydExlbmd0aCwgZW5kTGVuZ3RoKTsKIH0KIAotSW50UmVjdCBSZW5k
ZXJTY3JvbGxiYXJUaGVtZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK0ludFJlY3QgUmVuZGVyU2Nyb2xs
YmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsgCiAgICAgSW50UmVjdCBi
YWNrUmVjdCA9IHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnRyYWNrUGllY2VSZWN0V2l0
aE1hcmdpbnMoQmFja1RyYWNrUGFydCwgcmVjdCk7CiAgICAgSW50UmVjdCBmb3J3YXJkUmVjdCA9
IHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnRyYWNrUGllY2VSZWN0V2l0aE1hcmdpbnMo
Rm9yd2FyZFRyYWNrUGFydCwgcmVjdCk7CkBAIC0xMTIsMjcgKzExMywyNyBAQCB2b2lkIFJlbmRl
clNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3ND
b250ZXh0KiBjb250ZQogICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3
aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNj
cm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRTY3Jv
bGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhcikKIHsKICAgICB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5w
YWludFBhcnQoY29udGV4dCwgU2Nyb2xsYmFyQkdQYXJ0LCBzY3JvbGxiYXItPmZyYW1lUmVjdCgp
KTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tncm91bmQo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50
UmVjdCYgcmVjdCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tCYWNrZ3Jv
dW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICB0b1JlbmRlclNjcm9sbGJhcihzY3Jv
bGxiYXIpLT5wYWludFBhcnQoY29udGV4dCwgVHJhY2tCR1BhcnQsIHJlY3QpOwogfQogCi12b2lk
IFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xs
YmFyUGFydCBwYXJ0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja1BpZWNl
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIHRvUmVu
ZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnBhaW50UGFydChjb250ZXh0LCBwYXJ0LCByZWN0KTsK
IH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwg
U2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0
b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgdG9S
ZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+cGFpbnRQYXJ0KGNvbnRleHQsIHBhcnQsIHJlY3Qp
OwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qp
Cit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsKICAgICB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5wYWludFBhcnQoY29u
dGV4dCwgVGh1bWJQYXJ0LCByZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggNzBjMjRhNWVhMmVkNzliYjlmOGZhZDAyMTM3
YzYzNTY5ZDk5NjNjNC4uZWM5MmJkYzkzOTNhY2M2ZjJkYTZhMTc0Zjc3YjlmM2VhMTQxZmU2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgK
QEAgLTQ2LDM1ICs0NiwzNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3Jv
bGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50
UmVjdCYgY29ybmVyUmVjdCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVt
YihTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkg
eyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNob3VsZENlbnRlck9uVGh1bWIoc2Ny
b2xsYmFyLCBldmVudCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50KSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2hvdWxkQ2VudGVyT25U
aHVtYihzY3JvbGxiYXIsIGV2ZW50KTsgfQogICAgIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRp
YWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgp
LT5pbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKTsgfQogICAgIHZpcnR1YWwgZG91YmxlIGF1
dG9zY3JvbGxUaW1lckRlbGF5KCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPmF1
dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9s
bGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1l
KCktPnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdW5y
ZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFy
VGhlbWU6OnRoZW1lKCktPnVucmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQorICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cmVnaXN0ZXJTY3JvbGxiYXIo
c2Nyb2xsYmFyKTsgfQorICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVt
ZSgpLT51bnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KIAotICAgIHZpcnR1YWwgaW50
IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVt
VGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZvaWQgYnV0dG9uU2l6
ZXNBbG9uZ1RyYWNrQXhpcyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBp
bnQmIGFmdGVyU2l6ZSk7CisgICAgdm9pZCBidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGludCYgYmVmb3JlU2l6ZSwgaW50JiBhZnRlclNp
emUpOwogICAgIAogICAgIHN0YXRpYyBSZW5kZXJTY3JvbGxiYXJUaGVtZSogcmVuZGVyU2Nyb2xs
YmFyVGhlbWUoKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNj
cm9sbGJhciopOwotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKTsKKyAgICB2
aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1
YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAgdmlydHVhbCBJ
bnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFp
bnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNj
cm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmly
dHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29sIHBhaW50aW5nID0gZmFsc2Up
OworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJ
bnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFy
UGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tS
ZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKICAgICAK
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4
dCosIFNjcm9sbGJhciopOyAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZp
cnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwg
Y29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1
dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xs
YmFyUGFydCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9s
bGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsg
ICAgCisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4
dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwg
dm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3Qg
SW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwog
Ci0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Ny
b2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgSW50UmVjdCBjb25zdHJhaW5U
cmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVj
dCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128605</attachid>
            <date>2012-02-23 16:54:58 -0800</date>
            <delta_ts>2012-02-24 15:51:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78028-20120223195457.patch</filename>
            <type>text/plain</type>
            <size>133129</size>
            <attacher name="Peter Kotwicz">pkotwicz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQxYzM5NDNlODZjOWEz
ZDViNjdhOWM3NmIxN2IwYjc3MzhkMmU4MS4uZWUzNmQxNjMyOTQzMDUzODk2YjM1OTBhNzkzMzJj
OTQwZjdhYWNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3MSBAQAorMjAxMi0wMi0yMyAgUGV0
ZXIgS290d2ljeiAgPHBrb3R3aWN6QGdvb2dsZS5jb20+CisKKyAgICAgICAgRGVjb3VwbGUgc2Ny
b2xsYmFyIHBhaW50aW5nIGZyb20gU2Nyb2xsYmFyIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwMjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhcjo6c2V0RnJhbWVSZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjppbnZhbGlkYXRlUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXI6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXI6OmdldFRpY2ttYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6
OmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpp
c1Njcm9sbFZpZXdTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzZXRF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAgICAgKFNjcm9s
bGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OngpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjp5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6d2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bG9jYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjpyb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZnJhbWVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6aW52YWxpZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXI6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmlzQ3VzdG9tU2Nyb2xsYmFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhcjo6b3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmN1cnJlbnRQb3MpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp2aXNpYmxlU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXI6OnRvdGFsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6
Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpjb250cm9sU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmxpbmVTdGVwKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhcjo6cGFnZVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpwcmVz
c2VkUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmhvdmVyZWRQYXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6c3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhcjo6ZW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWU6OnVwZGF0ZUVuYWJsZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OmhpdFRlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6aW52YWxpZGF0ZVBhcnRz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjppbnZhbGlkYXRlUGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkQ2VudGVyT25UaHVtYik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmln
aW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnNob3VsZERyYWdEb2N1bWVu
dEluc3RlYWRPZlRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp0aHVt
YlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp0aHVtYkxlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dHJhY2tQb3NpdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dHJhY2tMZW5ndGgpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDbGllbnQ6On5TY3JvbGxiYXJUaGVtZUNsaWVudCk6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlOjpoaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjp1c2VkVG90
YWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVt
YlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0
aHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6
bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjp0cmFja1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjp0cmFja0xlbmd0aCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNjcm9sbGJhckJhY2tn
cm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50
VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjpwYWludFRyYWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjpwYWludFRpY2ttYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpoYXNUaHVtYik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpmb3J3YXJkQnV0dG9uUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjp0cmFja1JlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUcmFja0JhY2tncm91
bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUaWNr
bWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW06Omhhc0J1dHRv
bnMpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50U2Nyb2xsYmFyQmFj
a2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9p
ZDo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtQW5kcm9pZDo6YnV0dG9uU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNocm9taXVtQW5kcm9pZDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5oOgorICAgICAg
ICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQpOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50QnV0dG9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNob3VsZENl
bnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxp
bnV4OjpidXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21p
dW1MaW51eDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1MaW51eCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hYy5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyk6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50R2l2ZW5UaWNrbWFya3MpOgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkU25h
cEJhY2tUb0RyYWdPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bVdpbjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1XaW46OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3NpY1RoZW1lU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkQ2Vu
dGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtV2lu
OjpidXR0b25TaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtV2luLmg6CisgICAgICAgIChTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVFZmw6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lRWZsOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaDoKKyAgICAgICAgKFNjcm9sbGJhclRo
ZW1lRWZsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6
cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6
OnVucmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVH
dGs6OnVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUd0azo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lR3RrOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZUd0azo6dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3Rr
Ojp0aHVtYlJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpzaG91bGRDZW50ZXJPblRo
dW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpidXR0b25TaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjptaW5pbXVtVGh1bWJMZW5ndGgp
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5oOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xs
YmFyVGhlbWVHdGspOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1iKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRvbik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRCdXR0b24pOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVNYWMp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVy
U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp1bnJlZ2lz
dGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzZXRO
ZXdQYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
TWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVNYWM6Omhhc1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
TWFjOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1h
Yzo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVN
YWM6OnRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6bWlu
aW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpz
aG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFj
OjpzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlRW5hYmxlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3Jv
bGxiYXJUaGVtZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2Nr
Ojp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWlu
dFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6
OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2Nr
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6Omhhc0J1dHRvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpoYXNUaHVtYik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAg
ICAoU2Nyb2xsYmFyVGhlbWVNb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9TY3JvbGxiYXJU
aGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlT3B0aW9uU2xpZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lUXQ6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVRdDo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZVF0OjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZVF0Ojp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
UXQ6OnRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnRy
YWNrUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVRdDo6dHJhY2tM
ZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuaDoKKyAgICAg
ICAgKFNjcm9sbGJhclRoZW1lUXQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJU
aGVtZVNhZmFyaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6
aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFz
VGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmJhY2tCdXR0
b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpmb3J3YXJk
QnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6dHJh
Y2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjptaW5pbXVt
VGh1bWJMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnNo
b3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZh
cmk6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6cGFpbnRUaHVtYik6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRo
ZW1lU2FmYXJpLmg6CisgICAgICAgIChTY3JvbGxiYXJUaGVtZVNhZmFyaSk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lV2luOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZVdpbjo6YmFja0J1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVXaW46OmZvcndhcmRCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lV2luOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46
OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVX
aW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lV2luOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lV2luOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpwYWludEdy
aXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VGh1bWIp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xs
YmFyVGhlbWVXaW4pOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzVGh1bWIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV3g6OmJ1dHRvblNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6c3BsaXRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZVd4OjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVXeDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guaDoK
KyAgICAgICAgKFNjcm9sbGJhclRoZW1lV3gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVXeDo6aGFzQnV0dG9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
ci5oOgorICAgICAgICAoV2ViQ29yZTo6dG9SZW5kZXJTY3JvbGxiYXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1pbmltdW1UaHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YmFja0J1dHRvblJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmZvcndhcmRCdXR0b25SZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVj
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xs
YmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFy
VGhlbWU6OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxi
YXJUaGVtZTo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFy
VGhlbWU6OnBhaW50VGh1bWIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJU
aGVtZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnNob3VsZENl
bnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJl
Z2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1l
Ojp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFJlbmRlclNjcm9sbGJhclRoZW1lKToK
KwogMjAxMi0wMi0yMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gTm90aWZ5IGNvbXBvc2l0b3Igb2Ygd2hlZWwgZXZlbnQgcmVnaXN0
cmF0aW9uIHZpYSBTY3JvbGxpbmdDb29yZGluYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDlkZGY5
MTVmNGVhYzAwNGVlZTY4NTgyYTI4MjE3MzM1YmIzY2E1NjIuLjFkMmZjMzc5MjMyNmFjOWU2M2Nj
MTgyYjMzZDczYmY3YzAyNzYxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI5Miw2ICsyOTIsNyBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL1Njcm9sbGJhci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZhMzEzMjdiOWM3NzRkZTEzMzExNTA1ZjA3YTAxYTE2
NjFhMDM0YzguLjAxYzBkZWFmYjM5OTRmMTQzZDJhNTFlYmI1Y2Q5MDc3Y2Q1NWFjZGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEyNTgzLDYgKzEyNTgzLDcgQEAKIAkJQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8qIFN0b3Jh
Z2VFdmVudERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNUY3
NjVCNDE0RTFENDE0MDA2Qzg5OUIgLyogUGFzdGVib2FyZFN0cmF0ZWd5LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhc3RlYm9hcmRTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDNUY3NjVCQTE0RTFFQ0Y0MDA2Qzg5OUIgLyogUGxhdGZvcm1QYXN0
ZWJvYXJkTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxh
dGZvcm1QYXN0ZWJvYXJkTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDNjkx
NjE0NzE0RjZFQkE3MDA0NjM3NUMgLyogU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsYmFyVGhlbWVDbGllbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZENzRBRDMwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNl
bGVjdGlvbkxpc3RMZXZlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2Rp
ZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZE
NzRBRTMwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2
ZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkYwOEZCOTE0MzBGRThGMDA2
ODU4NDkgLyogTXV0YXRpb25SZWNvcmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTXV0YXRpb25SZWNvcmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTk5MjEsNiArMTk5MjIsNyBAQAogCQkJCUJDQUE5MEMyMEE3RUJBNjAwMDhCMTIyOSAvKiBT
Y3JvbGxiYXIuY3BwICovLAogCQkJCUJDN0IyQUY4MDQ1MDgyNDEwMEE4MDAwRiAvKiBTY3JvbGxi
YXIuaCAqLywKIAkJCQkwRkU3MTQxNTE0MjE4OUZDMDBEQjMzQkEgLyogU2Nyb2xsYmFyVGhlbWUu
Y3BwICovLAorCQkJCUM2OTE2MTQ3MTRGNkVCQTcwMDQ2Mzc1QyAvKiBTY3JvbGxiYXJUaGVtZUNs
aWVudC5oICovLAogCQkJCUJDOEI4NTRBMEU3QzdGNTYwMEFCNjk4NCAvKiBTY3JvbGxiYXJUaGVt
ZS5oICovLAogCQkJCUJDMTQwMjg4MEU4MzY4MDgwMDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZS5jcHAgKi8sCiAJCQkJQkMxNDAyODkwRTgzNjgwODAwMzE5NzE3IC8qIFNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlLmggKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcApp
bmRleCAzYjljMTk1Y2ZmNTUzOTE2NTU2MjAzZTJmMmNjNGZlNWQ4ZjlhNTFlLi5lMzkyNTRjNjFm
YjI5YzExMmUxZTlkNjgyMGRlOGE2MjlmNGY0MWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGJhci5jcHAKQEAgLTExMiw2ICsxMTIsNzkgQEAgU2Nyb2xsYmFyOjp+U2Nyb2xsYmFyKCkK
ICAgICBtX3RoZW1lLT51bnJlZ2lzdGVyU2Nyb2xsYmFyKHRoaXMpOwogfQogCit2b2lkIFNjcm9s
bGJhcjo6c2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgLy8gR2V0IG91
ciB3aW5kb3cgcmVzaXplciByZWN0IGFuZCBzZWUgaWYgd2Ugb3ZlcmxhcC4gIEFkanVzdCB0byBh
dm9pZCB0aGUgb3ZlcmxhcAorICAgIC8vIGlmIG5lY2Vzc2FyeS4KKyAgICBJbnRSZWN0IGFkanVz
dGVkUmVjdChyZWN0KTsKKyAgICBib29sIG92ZXJsYXBzUmVzaXplciA9IGZhbHNlOworICAgIFNj
cm9sbFZpZXcqIHZpZXcgPSBwYXJlbnQoKTsKKyAgICBpZiAodmlldyAmJiAhcmVjdC5pc0VtcHR5
KCkgJiYgIXZpZXctPndpbmRvd1Jlc2l6ZXJSZWN0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgIElu
dFJlY3QgcmVzaXplclJlY3QgPSB2aWV3LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3codmll
dy0+d2luZG93UmVzaXplclJlY3QoKSk7CisgICAgICAgIGlmIChyZWN0LmludGVyc2VjdHMocmVz
aXplclJlY3QpKSB7CisgICAgICAgICAgICBpZiAob3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFs
U2Nyb2xsYmFyKSB7CisgICAgICAgICAgICAgICAgaW50IG92ZXJsYXAgPSByZWN0Lm1heFgoKSAt
IHJlc2l6ZXJSZWN0LngoKTsKKyAgICAgICAgICAgICAgICBpZiAob3ZlcmxhcCA+IDAgJiYgcmVz
aXplclJlY3QubWF4WCgpID49IHJlY3QubWF4WCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGFk
anVzdGVkUmVjdC5zZXRXaWR0aChyZWN0LndpZHRoKCkgLSBvdmVybGFwKTsKKyAgICAgICAgICAg
ICAgICAgICAgb3ZlcmxhcHNSZXNpemVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGludCBvdmVybGFwID0gcmVjdC5tYXhZ
KCkgLSByZXNpemVyUmVjdC55KCk7CisgICAgICAgICAgICAgICAgaWYgKG92ZXJsYXAgPiAwICYm
IHJlc2l6ZXJSZWN0Lm1heFkoKSA+PSByZWN0Lm1heFkoKSkgeworICAgICAgICAgICAgICAgICAg
ICBhZGp1c3RlZFJlY3Quc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLSBvdmVybGFwKTsKKyAgICAg
ICAgICAgICAgICAgICAgb3ZlcmxhcHNSZXNpemVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG92ZXJsYXBzUmVzaXpl
ciAhPSBtX292ZXJsYXBzUmVzaXplcikgeworICAgICAgICBtX292ZXJsYXBzUmVzaXplciA9IG92
ZXJsYXBzUmVzaXplcjsKKyAgICAgICAgaWYgKHZpZXcpCisgICAgICAgICAgICB2aWV3LT5hZGp1
c3RTY3JvbGxiYXJzQXZvaWRpbmdSZXNpemVyQ291bnQobV9vdmVybGFwc1Jlc2l6ZXIgPyAxIDog
LTEpOworICAgIH0KKworICAgIFdpZGdldDo6c2V0RnJhbWVSZWN0KGFkanVzdGVkUmVjdCk7Cit9
CisKK3ZvaWQgU2Nyb2xsYmFyOjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQor
eworICAgIGlmIChzdXBwcmVzc0ludmFsaWRhdGlvbigpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAobV9zY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+aW52YWxp
ZGF0ZVNjcm9sbGJhcih0aGlzLCByZWN0KTsKK30KKworU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIFNj
cm9sbGJhcjo6c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9z
Y3JvbGxhYmxlQXJlYSA/IFNjcm9sbGJhck92ZXJsYXlTdHlsZURlZmF1bHQgOiBtX3Njcm9sbGFi
bGVBcmVhLT5zY3JvbGxiYXJPdmVybGF5U3R5bGUoKTsKK30KKwordm9pZCBTY3JvbGxiYXI6Omdl
dFRpY2ttYXJrcyhWZWN0b3I8SW50UmVjdD4mIHRpY2ttYXJrcykgY29uc3QKK3sKKyAgICBpZiAo
bV9zY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+Z2V0VGlja21hcmtz
KHRpY2ttYXJrcyk7Cit9CisKK2Jvb2wgU2Nyb2xsYmFyOjppc1Njcm9sbGFibGVBcmVhQWN0aXZl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYSAmJiBtX3Njcm9sbGFibGVB
cmVhLT5pc0FjdGl2ZSgpOworfQorCitib29sIFNjcm9sbGJhcjo6aXNTY3JvbGxWaWV3U2Nyb2xs
YmFyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGFyZW50KCkgJiYgcGFyZW50KCktPmlzRnJhbWVW
aWV3KCkgJiYgc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4ocGFyZW50KCkpLT5pc1Njcm9sbFZpZXdT
Y3JvbGxiYXIodGhpcyk7Cit9CisKK3ZvaWQgU2Nyb2xsYmFyOjpzZXRFbmFibGVkKGJvb2wgZSkK
K3sgCisgICAgaWYgKG1fZW5hYmxlZCA9PSBlKQorICAgICAgICByZXR1cm47CisgICAgbV9lbmFi
bGVkID0gZTsKKyAgICB0aGVtZSgpLT51cGRhdGVFbmFibGVkU3RhdGUodGhpcyk7CisgICAgaW52
YWxpZGF0ZSgpOworfQorCiB2b2lkIFNjcm9sbGJhcjo6b2Zmc2V0RGlkQ2hhbmdlKCkKIHsKICAg
ICBBU1NFUlQobV9zY3JvbGxhYmxlQXJlYSk7CkBAIC00MzIsNDAgKzUwNSw2IEBAIGJvb2wgU2Ny
b2xsYmFyOjptb3VzZURvd24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyOjpzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVj
dCYgcmVjdCkKLXsKLSAgICAvLyBHZXQgb3VyIHdpbmRvdyByZXNpemVyIHJlY3QgYW5kIHNlZSBp
ZiB3ZSBvdmVybGFwLiAgQWRqdXN0IHRvIGF2b2lkIHRoZSBvdmVybGFwCi0gICAgLy8gaWYgbmVj
ZXNzYXJ5LgotICAgIEludFJlY3QgYWRqdXN0ZWRSZWN0KHJlY3QpOwotICAgIGJvb2wgb3Zlcmxh
cHNSZXNpemVyID0gZmFsc2U7Ci0gICAgU2Nyb2xsVmlldyogdmlldyA9IHBhcmVudCgpOwotICAg
IGlmICh2aWV3ICYmICFyZWN0LmlzRW1wdHkoKSAmJiAhdmlldy0+d2luZG93UmVzaXplclJlY3Qo
KS5pc0VtcHR5KCkpIHsKLSAgICAgICAgSW50UmVjdCByZXNpemVyUmVjdCA9IHZpZXctPmNvbnZl
cnRGcm9tQ29udGFpbmluZ1dpbmRvdyh2aWV3LT53aW5kb3dSZXNpemVyUmVjdCgpKTsKLSAgICAg
ICAgaWYgKHJlY3QuaW50ZXJzZWN0cyhyZXNpemVyUmVjdCkpIHsKLSAgICAgICAgICAgIGlmIChv
cmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKLSAgICAgICAgICAgICAgICBp
bnQgb3ZlcmxhcCA9IHJlY3QubWF4WCgpIC0gcmVzaXplclJlY3QueCgpOwotICAgICAgICAgICAg
ICAgIGlmIChvdmVybGFwID4gMCAmJiByZXNpemVyUmVjdC5tYXhYKCkgPj0gcmVjdC5tYXhYKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgYWRqdXN0ZWRSZWN0LnNldFdpZHRoKHJlY3Qud2lkdGgo
KSAtIG92ZXJsYXApOwotICAgICAgICAgICAgICAgICAgICBvdmVybGFwc1Jlc2l6ZXIgPSB0cnVl
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgaW50IG92ZXJsYXAgPSByZWN0Lm1heFkoKSAtIHJlc2l6ZXJSZWN0LnkoKTsKLSAgICAgICAg
ICAgICAgICBpZiAob3ZlcmxhcCA+IDAgJiYgcmVzaXplclJlY3QubWF4WSgpID49IHJlY3QubWF4
WSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkanVzdGVkUmVjdC5zZXRIZWlnaHQocmVjdC5o
ZWlnaHQoKSAtIG92ZXJsYXApOwotICAgICAgICAgICAgICAgICAgICBvdmVybGFwc1Jlc2l6ZXIg
PSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLSAgICBpZiAob3ZlcmxhcHNSZXNpemVyICE9IG1fb3ZlcmxhcHNSZXNpemVyKSB7Ci0gICAg
ICAgIG1fb3ZlcmxhcHNSZXNpemVyID0gb3ZlcmxhcHNSZXNpemVyOwotICAgICAgICBpZiAodmll
dykKLSAgICAgICAgICAgIHZpZXctPmFkanVzdFNjcm9sbGJhcnNBdm9pZGluZ1Jlc2l6ZXJDb3Vu
dChtX292ZXJsYXBzUmVzaXplciA/IDEgOiAtMSk7Ci0gICAgfQotCi0gICAgV2lkZ2V0OjpzZXRG
cmFtZVJlY3QoYWRqdXN0ZWRSZWN0KTsKLX0KLQogdm9pZCBTY3JvbGxiYXI6OnNldFBhcmVudChT
Y3JvbGxWaWV3KiBwYXJlbnRWaWV3KQogewogICAgIGlmICghcGFyZW50VmlldyAmJiBtX292ZXJs
YXBzUmVzaXplciAmJiBwYXJlbnQoKSkKQEAgLTQ3MywxNSArNTEyLDYgQEAgdm9pZCBTY3JvbGxi
YXI6OnNldFBhcmVudChTY3JvbGxWaWV3KiBwYXJlbnRWaWV3KQogICAgIFdpZGdldDo6c2V0UGFy
ZW50KHBhcmVudFZpZXcpOwogfQogCi12b2lkIFNjcm9sbGJhcjo6c2V0RW5hYmxlZChib29sIGUp
Ci17IAotICAgIGlmIChtX2VuYWJsZWQgPT0gZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fZW5h
YmxlZCA9IGU7Ci0gICAgdGhlbWUoKS0+dXBkYXRlRW5hYmxlZFN0YXRlKHRoaXMpOwotICAgIGlu
dmFsaWRhdGUoKTsKLX0KLQogYm9vbCBTY3JvbGxiYXI6OmlzT3ZlcmxheVNjcm9sbGJhcigpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fdGhlbWUtPnVzZXNPdmVybGF5U2Nyb2xsYmFycygpOwpAQCAt
NTExLDE1ICs1NDEsNiBAQCBBWE9iamVjdENhY2hlKiBTY3JvbGxiYXI6OmF4T2JqZWN0Q2FjaGUo
KSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpOwogfQogCi12b2lk
IFNjcm9sbGJhcjo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICBp
ZiAoc3VwcHJlc3NJbnZhbGlkYXRpb24oKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1f
c2Nyb2xsYWJsZUFyZWEpCi0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPmludmFsaWRhdGVTY3Jv
bGxiYXIodGhpcywgcmVjdCk7Ci19Ci0KIEludFJlY3QgU2Nyb2xsYmFyOjpjb252ZXJ0VG9Db250
YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JiBsb2NhbFJlY3QpIGNvbnN0CiB7CiAgICAgaWYgKG1f
c2Nyb2xsYWJsZUFyZWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4IDM5YWMy
NTQ2NWQxNDU1YTU5OTJjZDI1YzIyMjhkZDJiNjUzNGE2M2QuLjk5ZmQ4NDYxYjdhYTc5OTk5NWEx
ZjMyOWJkMzAwZTY1ZjYzZjBjODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFNjcm9sbGJhcl9oCiAjZGVmaW5lIFNjcm9sbGJhcl9o
CiAKKyNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNsaWVudC5oIgogI2luY2x1ZGUgIlNjcm9sbFR5
cGVzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKQEAgLTQwLDEz
ICs0MSw2MCBAQCBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiBjbGFzcyBTY3JvbGxhYmxlQXJl
YTsKIGNsYXNzIFNjcm9sbGJhclRoZW1lOwogCi1jbGFzcyBTY3JvbGxiYXIgOiBwdWJsaWMgV2lk
Z2V0IHsKK2NsYXNzIFNjcm9sbGJhciA6IHB1YmxpYyBXaWRnZXQsCisgICAgICAgICAgICAgICAg
ICBwdWJsaWMgU2Nyb2xsYmFyVGhlbWVDbGllbnQgeworCiBwdWJsaWM6CiAgICAgLy8gTXVzdCBi
ZSBpbXBsZW1lbnRlZCBieSBwbGF0Zm9ybXMgdGhhdCBjYW4ndCBzaW1wbHkgdXNlIHRoZSBTY3Jv
bGxiYXIgYmFzZSBjbGFzcy4gIFJpZ2h0IG5vdyB0aGUgb25seSBwbGF0Zm9ybSB0aGF0IGlzIG5v
dCB1c2luZyB0aGUgYmFzZSBjbGFzcyBpcyBHVEsuCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2Ny
b2xsYmFyPiBjcmVhdGVOYXRpdmVTY3JvbGxiYXIoU2Nyb2xsYWJsZUFyZWEqLCBTY3JvbGxiYXJP
cmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemUgc2l6ZSk7CiAKICAg
ICB2aXJ0dWFsIH5TY3JvbGxiYXIoKTsKIAorICAgIC8vIFNjcm9sbGJhclRoZW1lQ2xpZW50IGlt
cGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgaW50IHgoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6
OngoKTsgfQorICAgIHZpcnR1YWwgaW50IHkoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OnkoKTsg
fQorICAgIHZpcnR1YWwgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0Ojp3aWR0aCgp
OyB9CisgICAgdmlydHVhbCBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0OjpoZWln
aHQoKTsgfQorICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0
OjpzaXplKCk7IH0KKyAgICB2aXJ0dWFsIEludFBvaW50IGxvY2F0aW9uKCkgY29uc3QgeyByZXR1
cm4gV2lkZ2V0Ojpsb2NhdGlvbigpOyB9CisKKyAgICB2aXJ0dWFsIFNjcm9sbFZpZXcqIHBhcmVu
dCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6cGFyZW50KCk7IH0KKyAgICB2aXJ0dWFsIFNjcm9s
bFZpZXcqIHJvb3QoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OnJvb3QoKTsgfQorCisgICAgdmly
dHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBJbnRS
ZWN0IGZyYW1lUmVjdCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6ZnJhbWVSZWN0KCk7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgeyBXaWRnZXQ6OmludmFsaWRhdGUoKTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0Jik7CisKKyAgICB2
aXJ0dWFsIFNjcm9sbGJhck92ZXJsYXlTdHlsZSBzY3JvbGxiYXJPdmVybGF5U3R5bGUoKSBjb25z
dDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3RvcjxJbnRSZWN0PiYpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGlzU2Nyb2xsVmlld1Njcm9sbGJhcigpIGNvbnN0OworCisgICAgdmlydHVh
bCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coY29uc3QgSW50UG9pbnQmIHdp
bmRvd1BvaW50KSB7IHJldHVybiBXaWRnZXQ6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyh3
aW5kb3dQb2ludCk7IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc0N1c3RvbVNjcm9sbGJhcigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXJPcmllbnRhdGlvbiBv
cmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KKworICAgIHZpcnR1
YWwgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbHJvdW5kZihtX2N1cnJlbnRQb3MpOyB9Cisg
ICAgdmlydHVhbCBmbG9hdCBjdXJyZW50UG9zKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50UG9z
OyB9CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2li
bGVTaXplOyB9CisgICAgdmlydHVhbCBpbnQgdG90YWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV90
b3RhbFNpemU7IH0KKyAgICB2aXJ0dWFsIGludCBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV90
b3RhbFNpemUgLSBtX3Zpc2libGVTaXplOyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXJDb250cm9s
U2l6ZSBjb250cm9sU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbFNpemU7IH0KKworICAg
IHZpcnR1YWwgaW50IGxpbmVTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9saW5lU3RlcDsgfQorICAg
IHZpcnR1YWwgaW50IHBhZ2VTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlU3RlcDsgfQorCisg
ICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IHByZXNzZWRQYXJ0KCkgY29uc3QgeyByZXR1cm4gbV9w
cmVzc2VkUGFydDsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBob3ZlcmVkUGFydCgpIGNv
bnN0IHsgcmV0dXJuIG1faG92ZXJlZFBhcnQ7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzdHlsZUNo
YW5nZWQoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9lbmFibGVkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQoYm9vbCBlKTsKKwogICAg
IC8vIENhbGxlZCBieSB0aGUgU2Nyb2xsYWJsZUFyZWEgd2hlbiB0aGUgc2Nyb2xsIG9mZnNldCBj
aGFuZ2VzLgogICAgIHZvaWQgb2Zmc2V0RGlkQ2hhbmdlKCk7CiAKQEAgLTU3LDM0ICsxMDUsMTgg
QEAgcHVibGljOgogICAgIHZvaWQgZGlzY29ubmVjdEZyb21TY3JvbGxhYmxlQXJlYSgpIHsgbV9z
Y3JvbGxhYmxlQXJlYSA9IDA7IH0KICAgICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEo
KSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wg
aXNDdXN0b21TY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIFNjcm9sbGJh
ck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsg
fQotCi0gICAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbHJvdW5kZihtX2N1cnJlbnRQb3Mp
OyB9Ci0gICAgZmxvYXQgY3VycmVudFBvcygpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFBvczsg
fQogICAgIGludCBwcmVzc2VkUG9zKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzc2VkUG9zOyB9Ci0g
ICAgaW50IHZpc2libGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlU2l6ZTsgfQotICAg
IGludCB0b3RhbFNpemUoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsU2l6ZTsgfQotICAgIGludCBt
YXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNpemUgLSBtX3Zpc2libGVTaXplOyB9ICAg
ICAgICAKLSAgICBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29udHJvbFNpemU7IH0KIAotICAgIGludCBsaW5lU3RlcCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGluZVN0ZXA7IH0KLSAgICBpbnQgcGFnZVN0ZXAoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VT
dGVwOyB9CiAgICAgZmxvYXQgcGl4ZWxTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9waXhlbFN0ZXA7
IH0KIAotICAgIFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX3By
ZXNzZWRQYXJ0OyB9Ci0gICAgU2Nyb2xsYmFyUGFydCBob3ZlcmVkUGFydCgpIGNvbnN0IHsgcmV0
dXJuIG1faG92ZXJlZFBhcnQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SG92ZXJlZFBhcnQoU2Ny
b2xsYmFyUGFydCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFByZXNzZWRQYXJ0KFNjcm9sbGJhclBh
cnQpOwogCiAgICAgdm9pZCBzZXRTdGVwcyhpbnQgbGluZVN0ZXAsIGludCBwYWdlU3RlcCwgaW50
IHBpeGVsc1BlclN0ZXAgPSAxKTsKICAgICB2b2lkIHNldFByb3BvcnRpb24oaW50IHZpc2libGVT
aXplLCBpbnQgdG90YWxTaXplKTsKICAgICB2b2lkIHNldFByZXNzZWRQb3MoaW50IHApIHsgbV9w
cmVzc2VkUG9zID0gcDsgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKIAotICAgIGJvb2wgZW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVk
KGJvb2wgZSk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEludFJlY3QmIGRhbWFnZVJlY3QpOwogCiAgICAgdmlydHVhbCBib29sIGlzT3ZlcmxheVNjcm9s
bGJhcigpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkUGFydGljaXBhdGVJbkhpdFRlc3RpbmcoKTsK
QEAgLTk3LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICBib29sIG1vdXNlTW92ZWQoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50Jik7CiAgICAgdm9pZCBtb3VzZUVudGVyZWQoKTsKICAgICBib29sIG1v
dXNlRXhpdGVkKCk7Ci0gICAgCisKICAgICAvLyBVc2VkIGJ5IHNvbWUgcGxhdGZvcm0gc2Nyb2xs
YmFycyB0byBrbm93IHdoZW4gdGhleSd2ZSBiZWVuIHJlbGVhc2VkIGZyb20gY2FwdHVyZS4KICAg
ICBib29sIG1vdXNlVXAoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKQEAgLTEwNiwxOCAr
MTM4LDEzIEBAIHB1YmxpYzoKICAgICBTY3JvbGxiYXJUaGVtZSogdGhlbWUoKSBjb25zdCB7IHJl
dHVybiBtX3RoZW1lOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50KFNjcm9sbFZpZXcq
KTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0Jik7Ci0gICAgCiAgICAg
Ym9vbCBzdXBwcmVzc0ludmFsaWRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3NJbnZh
bGlkYXRpb247IH0KICAgICB2b2lkIHNldFN1cHByZXNzSW52YWxpZGF0aW9uKGJvb2wgcykgeyBt
X3N1cHByZXNzSW52YWxpZGF0aW9uID0gczsgfQogCi0gICAgdmlydHVhbCB2b2lkIHN0eWxlQ2hh
bmdlZCgpIHsgfQotCiAgICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3
KGNvbnN0IEludFJlY3QmKSBjb25zdDsKICAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21D
b250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgCisKICAgICB2aXJ0dWFs
IEludFBvaW50IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Q7
CiAgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IElu
dFBvaW50JikgY29uc3Q7CiAKQEAgLTE2MCw3ICsxODcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBU
aW1lcjxTY3JvbGxiYXI+IG1fc2Nyb2xsVGltZXI7CiAgICAgYm9vbCBtX292ZXJsYXBzUmVzaXpl
cjsKLSAgICAKKwogICAgIGJvb2wgbV9zdXBwcmVzc0ludmFsaWRhdGlvbjsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCmluZGV4IDJhODNkNTM4NWVh
YmJjYWNmZjhiZTU2MzQ5YjRkMTllMzJiYjZmY2MuLjE3ZWY2MzhlNjAzYjQyMTY1MmE0ZDBhOWIx
MWY5MDc0N2RhNzcwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUu
aApAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQbGF0Zm9y
bU1vdXNlRXZlbnQ7Ci1jbGFzcyBTY3JvbGxiYXI7CitjbGFzcyBTY3JvbGxiYXJUaGVtZUNsaWVu
dDsKIGNsYXNzIFNjcm9sbFZpZXc7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
ICYmIEVOQUJMRShSVUJCRVJfQkFORElORykKQEAgLTQ2LDEwICs0NiwxMCBAQCBwdWJsaWM6CiAg
ICAgU2Nyb2xsYmFyVGhlbWUoKSB7IH0KICAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZSgpIHt9
OwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXIqKSB7IH07
CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVu
dCopIHsgfTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXIqLCBHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0JiAvKmRhbWFnZVJlY3QqLykgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgaGl0VGVzdChTY3JvbGxiYXIqLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBOb1BhcnQ7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFp
bnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
JiAvKmRhbWFnZVJlY3QqLykgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJh
clBhcnQgaGl0VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYpIHsgcmV0dXJuIE5vUGFydDsgfQogICAgIAogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJh
clRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpIHsgcmV0
dXJuIDA7IH0KIApAQCAtNTcsMTMgKzU3LDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9v
bCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIHVzZXNPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXIq
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9s
bGJhclRoZW1lQ2xpZW50KikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2VkKCkg
e30KICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaW52YWxpZGF0ZU9uTW91c2VFbnRlckV4aXQoKSB7
IHJldHVybiBmYWxzZTsgfQogCi0gICAgdm9pZCBpbnZhbGlkYXRlUGFydHMoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIFNjcm9sbGJhckNvbnRyb2xQYXJ0TWFzayBtYXNrKQorICAgIHZvaWQgaW52YWxp
ZGF0ZVBhcnRzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhckNvbnRy
b2xQYXJ0TWFzayBtYXNrKQogICAgIHsKICAgICAgICAgaWYgKG1hc2sgJiBCYWNrQnV0dG9uU3Rh
cnRQYXJ0KQogICAgICAgICAgICAgaW52YWxpZGF0ZVBhcnQoc2Nyb2xsYmFyLCBCYWNrQnV0dG9u
U3RhcnRQYXJ0KTsKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgaW52YWxp
ZGF0ZVBhcnQoc2Nyb2xsYmFyLCBGb3J3YXJkQnV0dG9uRW5kUGFydCk7CiAgICAgfQogCi0gICAg
dmlydHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQpIHt9
CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
U2Nyb2xsYmFyUGFydCkge30KIAogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihT
Y3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3Ju
ZXJSZWN0KSB7IGRlZmF1bHRQYWludFNjcm9sbENvcm5lcihjb250ZXh0LCBjb3JuZXJSZWN0KTsg
fQogICAgIHN0YXRpYyB2b2lkIGRlZmF1bHRQYWludFNjcm9sbENvcm5lcihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpIHsgY29udGV4dC0+ZmlsbFJl
Y3QoY29ybmVyUmVjdCwgQ29sb3I6OndoaXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsgfQpAQCAt
OTMsMjEgKzkzLDIxIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VXBDb250ZW50U2hh
ZG93TGF5ZXIoR3JhcGhpY3NMYXllciopIHsgfQogI2VuZGlmCiAKLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
KSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTbmFwQmFja1RvRHJh
Z09yaWdpbihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBm
YWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVt
YihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxzZTsg
fQotICAgIHZpcnR1YWwgaW50IHRodW1iUG9zaXRpb24oU2Nyb2xsYmFyKikgeyByZXR1cm4gMDsg
fSAvLyBUaGUgcG9zaXRpb24gb2YgdGhlIHRodW1iIHJlbGF0aXZlIHRvIHRoZSB0cmFjay4KLSAg
ICB2aXJ0dWFsIGludCB0aHVtYkxlbmd0aChTY3JvbGxiYXIqKSB7IHJldHVybiAwOyB9IC8vIFRo
ZSBsZW5ndGggb2YgdGhlIHRodW1iIGFsb25nIHRoZSBheGlzIG9mIHRoZSBzY3JvbGxiYXIuCi0g
ICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3JvbGxiYXIqKSB7IHJldHVybiAwOyB9IC8v
IFRoZSBwb3NpdGlvbiBvZiB0aGUgdHJhY2sgcmVsYXRpdmUgdG8gdGhlIHNjcm9sbGJhci4KLSAg
ICB2aXJ0dWFsIGludCB0cmFja0xlbmd0aChTY3JvbGxiYXIqKSB7IHJldHVybiAwOyB9IC8vIFRo
ZSBsZW5ndGggb2YgdGhlIHRyYWNrIGFsb25nIHRoZSBheGlzIG9mIHRoZSBzY3JvbGxiYXIuCisg
ICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXJUaGVtZUNsaWVudCos
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBib29sIHNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2
aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4g
MDsgfSAvLyBUaGUgcG9zaXRpb24gb2YgdGhlIHRodW1iIHJlbGF0aXZlIHRvIHRoZSB0cmFjay4K
KyAgICB2aXJ0dWFsIGludCB0aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0
dXJuIDA7IH0gLy8gVGhlIGxlbmd0aCBvZiB0aGUgdGh1bWIgYWxvbmcgdGhlIGF4aXMgb2YgdGhl
IHNjcm9sbGJhci4KKyAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJhclRoZW1l
Q2xpZW50KikgeyByZXR1cm4gMDsgfSAvLyBUaGUgcG9zaXRpb24gb2YgdGhlIHRyYWNrIHJlbGF0
aXZlIHRvIHRoZSBzY3JvbGxiYXIuCisgICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiAwOyB9IC8vIFRoZSBsZW5ndGggb2YgdGhlIHRyYWNr
IGFsb25nIHRoZSBheGlzIG9mIHRoZSBzY3JvbGxiYXIuCiAKICAgICB2aXJ0dWFsIGludCBtYXhP
dmVybGFwQmV0d2VlblBhZ2VzKCkgeyByZXR1cm4gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ+Ojpt
YXgoKTsgfQogCiAgICAgdmlydHVhbCBkb3VibGUgaW5pdGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5
KCkgeyByZXR1cm4gMC4yNTsgfQogICAgIHZpcnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1lckRl
bGF5KCkgeyByZXR1cm4gMC4wNTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xs
YmFyKFNjcm9sbGJhciopIHt9Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIo
U2Nyb2xsYmFyKikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKSB7fQorICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFy
KFNjcm9sbGJhclRoZW1lQ2xpZW50Kikge30KIAogICAgIHZpcnR1YWwgYm9vbCBpc01vY2tUaGVt
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZjZGE0MmY1MDUyZTM0ZTRiZDZk
MWFhN2Q4MzZlYzM2NzU5NGVmMjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFNjcm9sbGJhclRoZW1lQ2xpZW50X2gKKyNkZWZpbmUgU2Nyb2xsYmFyVGhlbWVDbGll
bnRfaAorCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5j
bHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCisjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgU2Nyb2xsVmlldzsKKworY2xhc3MgU2Nyb2xsYmFyVGhlbWVDbGllbnQg
eworcHVibGljOgorICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lQ2xpZW50KCkgeyB9CisKKyAg
ICB2aXJ0dWFsIGludCB4KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHkoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBpbnQgd2lkdGgoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQg
aGVpZ2h0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgSW50UG9pbnQgbG9jYXRpb24oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0
dWFsIFNjcm9sbFZpZXcqIHBhcmVudCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNjcm9sbFZp
ZXcqIHJvb3QoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNv
bnN0IEludFJlY3QmKSA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGZyYW1lUmVjdCgpIGNvbnN0
ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOworCisgICAgdmlydHVhbCBT
Y3JvbGxiYXJPdmVybGF5U3R5bGUgc2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRUaWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JikgY29uc3QgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbFZpZXdTY3JvbGxiYXIoKSBjb25zdCA9IDA7CisKKyAg
ICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhjb25zdCBJbnRQ
b2ludCYgd2luZG93UG9pbnQpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBpc0N1c3RvbVNjcm9s
bGJhcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBpbnQgdmFsdWUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50UG9zKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
aW50IHZpc2libGVTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHRvdGFsU2l6ZSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBtYXhpbXVtKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUoKSBjb25zdCA9IDA7CisKKyAg
ICB2aXJ0dWFsIGludCBsaW5lU3RlcCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBwYWdl
U3RlcCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBwcmVzc2VkUGFy
dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgaG92ZXJlZFBhcnQoKSBj
b25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVDaGFuZ2VkKCkgPSAwOworCisgICAg
dmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEVu
YWJsZWQoYm9vbCkgPSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gU2NvbGxiYXJUaGVtZUNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKaW5kZXggNjJmZDVlNWQyYzUwZWY5YjM1YjQx
NzU0ZDA5YmJiMGUxZTZiZTM4ZS4uOWQ4MzM3NDJmOTJlZWJkNzBlMGFjYzE2ZWUzNzg0YjNjMjMx
NTc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1l
Q29tcG9zaXRlLmNwcApAQCAtMzMsMTUgKzMzLDE0IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5o
IgotI2luY2x1ZGUgIlNjcm9sbGJhci5oIgotI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCisj
aW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jv
b2wgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBkYW1hZ2VSZWN0KQogewogICAgIC8vIENyZWF0ZSB0aGUgU2Nyb2xsYmFyQ29udHJvbFBhcnRN
YXNrIGJhc2VkIG9uIHRoZSBkYW1hZ2VSZWN0CiAgICAgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNr
IHNjcm9sbE1hc2sgPSBOb1BhcnQ7CkBAIC0xMTYsNyArMTE1LDcgQEAgYm9vbCBTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4
dCogZ3JhcGgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6aGl0VGVzdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldnQpCitTY3JvbGxiYXJQYXJ0IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRl
OjpoaXRUZXN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgZXZ0KQogewogICAgIFNjcm9sbGJhclBhcnQgcmVzdWx0ID0gTm9QYXJ0Owog
ICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCkBAIC0xNTUsNyArMTU0LDcgQEAgU2Nyb2xs
YmFyUGFydCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aGl0VGVzdChTY3JvbGxiYXIqIHNjcm9s
bGJhciwgY29uc3QgUGxhdGYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRlUGFydChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Ny
b2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aW52YWxpZGF0
ZVBhcnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0
KQogewogICAgIGlmIChwYXJ0ID09IE5vUGFydCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk1LDcg
KzE5NCw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OmludmFsaWRhdGVQYXJ0KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgc2Nyb2xsYmFyLT5pbnZhbGlk
YXRlUmVjdChyZXN1bHQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxp
dFRyYWNrKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVk
VHJhY2tSZWN0LCBJbnRSZWN0JiBiZWZvcmVUaHVtYlJlY3QsIEludFJlY3QmIHRodW1iUmVjdCwg
SW50UmVjdCYgYWZ0ZXJUaHVtYlJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpz
cGxpdFRyYWNrKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHVuY29uc3RyYWluZWRUcmFja1JlY3QsIEludFJlY3QmIGJlZm9yZVRodW1iUmVjdCwgSW50UmVj
dCYgdGh1bWJSZWN0LCBJbnRSZWN0JiBhZnRlclRodW1iUmVjdCkKIHsKICAgICAvLyBUaGlzIGZ1
bmN0aW9uIHdvbid0IGV2ZW4gZ2V0IGNhbGxlZCB1bmxlc3Mgd2UncmUgYmlnIGVub3VnaCB0byBo
YXZlIHNvbWUgY29tYmluYXRpb24gb2YgdGhlc2UgdGhyZWUgcmVjdHMgd2hlcmUgYXQgbGVhc3QK
ICAgICAvLyBvbmUgb2YgdGhlbSBpcyBub24tZW1wdHkuCkBAIC0yMTUsNyArMjE0LDcgQEAgdm9p
ZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgdW4KIAogLy8gUmV0dXJucyB0aGUgc2l6ZSByZXByZXNlbnRlZCBi
eSB0cmFjayB0YWtpbmcgaW50byBhY2NvdW50IHNjcm9sbGluZyBwYXN0CiAvLyB0aGUgZW5kIG9m
IHRoZSBkb2N1bWVudC4KLXN0YXRpYyBmbG9hdCB1c2VkVG90YWxTaXplKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQorc3RhdGljIGZsb2F0IHVzZWRUb3RhbFNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhcikKIHsKICAgICBmbG9hdCBvdmVyaGFuZ0F0U3RhcnQgPSAtc2Nyb2xsYmFyLT5j
dXJyZW50UG9zKCk7CiAgICAgZmxvYXQgb3ZlcmhhbmdBdEVuZCA9IHNjcm9sbGJhci0+Y3VycmVu
dFBvcygpICsgc2Nyb2xsYmFyLT52aXNpYmxlU2l6ZSgpIC0gc2Nyb2xsYmFyLT50b3RhbFNpemUo
KTsKQEAgLTIyMyw3ICsyMjIsNyBAQCBzdGF0aWMgZmxvYXQgdXNlZFRvdGFsU2l6ZShTY3JvbGxi
YXIqIHNjcm9sbGJhcikKICAgICByZXR1cm4gc2Nyb2xsYmFyLT50b3RhbFNpemUoKSArIG92ZXJo
YW5nOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUG9zaXRpb24oU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUG9z
aXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xs
YmFyLT5lbmFibGVkKCkpIHsKICAgICAgICAgZmxvYXQgc2l6ZSA9IHVzZWRUb3RhbFNpemUoc2Ny
b2xsYmFyKSAtIHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKTsKQEAgLTIzNiw3ICsyMzUsNyBAQCBp
bnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6
dGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OnRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAg
ICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNTAs
MTggKzI0OSwxOCBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iTGVuZ3RoKFNj
cm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKLWludCBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFy
KQoraW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gc2Nyb2xsYmFyVGhpY2tu
ZXNzKHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZTo6dHJhY2tQb3NpdGlvbihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyKQogewogICAgIEludFJlY3QgY29uc3RyYWluZWRUcmFja1JlY3QgPSBjb25zdHJhaW5U
cmFja1JlY3RUb1RyYWNrUGllY2VzKHNjcm9sbGJhciwgdHJhY2tSZWN0KHNjcm9sbGJhcikpOwog
ICAgIHJldHVybiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxi
YXIpID8gY29uc3RyYWluZWRUcmFja1JlY3QueCgpIC0gc2Nyb2xsYmFyLT54KCkgOiBjb25zdHJh
aW5lZFRyYWNrUmVjdC55KCkgLSBzY3JvbGxiYXItPnkoKTsKIH0KIAotaW50IFNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICBJbnRSZWN0IGNvbnN0cmFpbmVkVHJhY2tSZWN0ID0gY29uc3RyYWlu
VHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxiYXIsIHRyYWNrUmVjdChzY3JvbGxiYXIpKTsK
ICAgICByZXR1cm4gKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xs
YmFyKSA/IGNvbnN0cmFpbmVkVHJhY2tSZWN0LndpZHRoKCkgOiBjb25zdHJhaW5lZFRyYWNrUmVj
dC5oZWlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJh
clRoZW1lQ29tcG9zaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5oCmluZGV4IDExYjNiZDQ3MDAxODdmZjE4MmIwNDViNDUyY2RjMjRkYTMzZTc1
OTAuLjhlZGQ0YmJhYzk4MDQwZDAzZmM0YjMwZWViMjFhYTk5NWUzZDJlZTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaApAQCAtMzIs
NDAgKzMyLDQwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGUgOiBwdWJsaWMgU2Nyb2xsYmFyVGhlbWUgewogcHVibGljOgotICAgIHZpcnR1YWwg
Ym9vbCBwYWludChTY3JvbGxiYXIqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdl
UmVjdCk7CiAKLSAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgaGl0VGVzdChTY3JvbGxiYXIqLCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgaGl0
VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwog
Ci0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJhciosIFNjcm9sbGJhclBh
cnQpOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIFNjcm9sbGJhclBhcnQpOwogCi0gICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3Jv
bGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0aHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKLSAgICB2
aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgaW50IHRy
YWNrTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgaW50IHRodW1iUG9zaXRpb24oU2Ny
b2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCB0aHVtYkxlbmd0aChTY3JvbGxi
YXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCB0cmFja0xlbmd0aChTY3JvbGxiYXJUaGVt
ZUNsaWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZp
ZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0
JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKIAogcHJv
dGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopID0gMDsKLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKikgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopID0gMDsKIAotICAgIHZpcnR1YWwgSW50
UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50
aW5nID0gZmFsc2UpID0gMDsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3Qo
U2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSA9IDA7Ci0g
ICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29sIHBhaW50aW5nID0g
ZmFsc2UpID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpID0gMDsK
KyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpID0gMDsKKyAgICB2aXJ0
dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGlu
ZyA9IGZhbHNlKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3BsaXRUcmFjayhTY3JvbGxiYXIq
LCBjb25zdCBJbnRSZWN0JiB0cmFjaywgSW50UmVjdCYgc3RhcnRUcmFjaywgSW50UmVjdCYgdGh1
bWIsIEludFJlY3QmIGVuZFRyYWNrKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3BsaXRUcmFjayhTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmIHRyYWNrLCBJbnRSZWN0JiBzdGFydFRy
YWNrLCBJbnRSZWN0JiB0aHVtYiwgSW50UmVjdCYgZW5kVHJhY2spOwogICAgIAotICAgIHZpcnR1
YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCBt
aW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
Kikge30KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIHt9Ci0gICAgdmlydHVhbCB2b2lkIHBh
aW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0
JiwgU2Nyb2xsYmFyUGFydCkge30KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIHt9
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
KiwgY29uc3QgSW50UmVjdCYpIHt9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSB7fQorICAgIHZpcnR1
YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKSB7fQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3Vu
ZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3Qm
KSB7fQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkge30K
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkge30KKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IEludFJlY3QmKSB7fQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhH
cmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSB7
fQogCi0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMo
U2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYgcmVjdCkgeyByZXR1cm4gcmVjdDsgfQorICAgIHZp
cnR1YWwgSW50UmVjdCBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYgcmVjdCkgeyByZXR1cm4gcmVjdDsgfQogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtLmNwcAppbmRleCBmOGNiMjgxNTQ4NjFlMDFkYTcxMTI0OTIwYzYw
ZDA2YTM3ZTlhMTgzLi42ODJkODJkNWIzMzc5MThiMjVkMDk4YmE3NzE3MzRlNzkxNTA1ZTkxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtLmNwcApAQCAtMzksMTQgKzM5LDE0IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpoYXNUaHVtYihTY3JvbGxi
YXIqIHNjcm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6aGFzVGh1bWIoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBq
dXN0IGNhbGxlZCBhcyBhIHBhaW50LXRpbWUgb3B0aW1pemF0aW9uIHRvIHNlZSBpZgogICAgIC8v
IHBhaW50aW5nIHRoZSB0aHVtYiBjYW4gYmUgc2tpcHBlZC4gIFdlIGRvbid0IGhhdmUgdG8gYmUg
ZXhhY3QgaGVyZS4KICAgICByZXR1cm4gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+IDA7CiB9CiAK
LUludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIC8vIFdpbmRvd3MgYW5kIExp
bnV4IGp1c3QgaGF2ZSBzaW5nbGUgYXJyb3dzLgogICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0b25F
bmRQYXJ0KQpAQCAtNTYsNyArNTYsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06
OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYQogICAgIHJl
dHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpm
b3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0
LCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpmb3J3YXJkQnV0dG9uUmVj
dChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJv
b2wpCiB7CiAgICAgLy8gV2luZG93cyBhbmQgTGludXgganVzdCBoYXZlIHNpbmdsZSBhcnJvd3Mu
CiAgICAgaWYgKHBhcnQgPT0gRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCkKQEAgLTc0LDcgKzc0LDcg
QEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpmb3J3YXJkQnV0dG9uUmVjdChTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmEKICAgICByZXR1cm4gSW50UmVjdCh4LCB5LCBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hy
b21pdW06OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKK0ludFJlY3QgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bTo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIGJvb2wpCiB7CiAgICAgSW50U2l6ZSBicyA9IGJ1dHRvblNpemUoc2Nyb2xsYmFyKTsK
ICAgICAvLyBUaGUgYnV0dG9ucyBhdCB0aGUgdG9wIGFuZCBib3R0b20gb2YgdGhlIHNjcm9sbGJh
ciBhcmUgc3F1YXJlLCBzbyB0aGUKQEAgLTkyLDE0ICs5MiwxNCBAQCBJbnRSZWN0IFNjcm9sbGJh
clRoZW1lQ2hyb21pdW06OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKICAg
ICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCkgKyBicy5oZWln
aHQoKSwgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0gMiAqIGJzLmhlaWdodCgpKTsK
IH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpwYWludFRyYWNrQmFja2dyb3VuZChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpwYWludFRyYWNrQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gSnVzdCBhc3N1bWUgYSBmb3J3
YXJkIHRyYWNrIHBhcnQuICBXZSBvbmx5IHBhaW50IHRoZSB0cmFjayBhcyBhIHNpbmdsZSBwaWVj
ZSB3aGVuIHRoZXJlIGlzIG5vIHRodW1iLgogICAgIGlmICghaGFzVGh1bWIoc2Nyb2xsYmFyKSkK
ICAgICAgICAgcGFpbnRUcmFja1BpZWNlKGNvbnRleHQsIHNjcm9sbGJhciwgcmVjdCwgRm9yd2Fy
ZFRyYWNrUGFydCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUaWNr
bWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUaWNr
bWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVu
dGF0aW9uKCkgIT0gVmVydGljYWxTY3JvbGxiYXIpCiAgICAgICAgIHJldHVybjsKQEAgLTEwOSw3
ICsxMDksNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VGlja21hcmtzKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKgogCiAgICAgLy8gR2V0IHRoZSB0aWNr
bWFya3MgZm9yIHRoZSBmcmFtZXZpZXcuCiAgICAgVmVjdG9yPEludFJlY3Q+IHRpY2ttYXJrczsK
LSAgICBzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmdldFRpY2ttYXJrcyh0aWNrbWFya3Mp
OworICAgIHNjcm9sbGJhci0+Z2V0VGlja21hcmtzKHRpY2ttYXJrcyk7CiAgICAgaWYgKCF0aWNr
bWFya3Muc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaAppbmRleCAx
MTc4MTI1NjlmNjlmMjAwMzcxYmFjMGY5ZGE4N2E3YzMyZGU0ZmE1Li5jZjY3MWRkOTg0YzA3OTA5
OTVjNjdkN2QwZjE4YzViNGE2ZjZjZmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oCkBAIC00MSwxNyAr
NDEsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIFdpbmRvd3MgYW5kIExpbnV4Lgog
ICAgIGNsYXNzIFNjcm9sbGJhclRoZW1lQ2hyb21pdW0gOiBwdWJsaWMgU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGUgewogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCBib29sIGhhc0J1dHRv
bnMoU2Nyb2xsYmFyKikgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFz
VGh1bWIoU2Nyb2xsYmFyKik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9s
bGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wg
aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgICAgICB2aXJ0dWFsIEludFJl
Y3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGlu
ZyA9IGZhbHNlKTsKLSAgICAgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNj
cm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgICAg
IHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZh
bHNlKTsKKyAgICAgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICAg
ICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICAgICAgdmlydHVh
bCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5k
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICAgICAgdmlydHVh
bCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKikgPSAwOworICAgICAgICB2aXJ0dWFsIElu
dFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopID0gMDsKICAgICB9OwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHAK
aW5kZXggMWRiZWZhNjQ5YzA4OTcyZWIxYzJiMzdiNzQ3NzFiMGQ2MWJlYTVhZC4uZTFlNTVhMWZj
MTNkNzljMGY5ZThmNDczMGJlODk3ODA5NGMxZjY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW1BbmRyb2lkLmNwcApAQCAtNTcsNyArNTcsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUFuZHJvaWQ6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cgog
ICAgIHJldHVybiBzY3JvbGxiYXJUaGlja25lc3NWYWx1ZTsKIH0KIAotdm9pZCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtQW5kcm9pZDo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1BbmRyb2lkOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIC8vIFBh
aW50IGJsYWNrIGJhY2tncm91bmQgaW4gRHVtcFJlbmRlclRyZWUsIG90aGVyd2lzZSB0aGUgcGl4
ZWxzIGluIHRoZSBzY3JvbGxiYXIgYXJlYSBkZXBlbmQKICAgICAvLyBvbiB0aGVpciBwcmV2aW91
cyBzdGF0ZSwgd2hpY2ggbWFrZXMgdGhlIGR1bXBlZCByZXN1bHQgdW5kZXRlcm1pbmVkLgpAQCAt
NjUsMTIgKzY1LDEyIEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50
U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvCiAgICAgICAgIGNvbnRleHQt
PmZpbGxSZWN0KHNjcm9sbGJhci0+ZnJhbWVSZWN0KCksIENvbG9yOjpibGFjaywgQ29sb3JTcGFj
ZURldmljZVJHQik7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnNo
b3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBl
dnQpCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpzaG91bGRDZW50ZXJPblRo
dW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQp
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUFuZHJvaWQ6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitJbnRTaXplIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0
aWNhbFNjcm9sbGJhcikKICAgICAgICAgcmV0dXJuIEludFNpemUoc2Nyb2xsYmFyVGhpY2tuZXNz
VmFsdWUsIGJ1dHRvbkxlbmd0aCk7CkBAIC03OCw3ICs3OCw3IEBAIEludFNpemUgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUFuZHJvaWQ6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAg
ICAgcmV0dXJuIEludFNpemUoYnV0dG9uTGVuZ3RoLCBzY3JvbGxiYXJUaGlja25lc3NWYWx1ZSk7
CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6bWluaW11bVRodW1iTGVu
Z3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRy
b2lkOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikK
IHsKICAgICByZXR1cm4gMiAqIHNjcm9sbGJhclRoaWNrbmVzcyhzY3JvbGxiYXItPmNvbnRyb2xT
aXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmgKaW5kZXggZjA3YzkwMTY3
ODZjYjI0Zjg4ZGZiOTRhZTRmYzIxNmZlNmU3MGJmYy4uZjNkYjgwZTUyZmJmNTBjMWRmNjhhOTQw
ZWE5ZDQ3M2YyZGJmMjg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5oCkBAIC0z
NSwxMCArMzUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVz
cyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciopOwot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpOwotICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9s
bGJhciopOwotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4
dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRl
ck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
KTsKKyAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCop
OworICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVu
dCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1M
aW51eC5jcHAKaW5kZXggZWM2ODQwN2U5ZDhjMzJlMzBkMzEwZDJlNTA1OGMyZGE3ZGJkZWNjNi4u
NmI0ZGFmYzM3M2YxMGQwYWEyZDZlOTY2MmFiZTYzZGQ1ZGI2NWU3YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtTGludXguY3BwCkBAIC01MCw3ICs1MCw3IEBAIGludCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTGludXg6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250
cm9sCiAgICAgcmV0dXJuIHNjcm9sbGJhclNpemUud2lkdGgoKTsKIH0KIAotdm9pZCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGdj
LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFy
dCBwYXJ0VHlwZSkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRyYWNr
UGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKIHsKICAgICBQ
bGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0ZSA9IHNjcm9sbGJhci0+aG92ZXJl
ZFBhcnQoKSA9PSBwYXJ0VHlwZSA/IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVIb3ZlciA6IFBsYXRm
b3JtU3VwcG9ydDo6U3RhdGVOb3JtYWw7CiAgICAgSW50UmVjdCBhbGlnblJlY3QgPSB0cmFja1Jl
Y3Qoc2Nyb2xsYmFyLCBmYWxzZSk7CkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4OjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Ny
b2xsYmFyCiAgICAgICAgICZleHRyYVBhcmFtcyk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIq
IHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9p
ZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4
dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJl
Y3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFy
dCBwYWludFBhcnQ7CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGUg
PSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlTm9ybWFsOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQq
IGdjLCBTY3JvbGxiYXIqIHNjCiAgICAgUGxhdGZvcm1TdXBwb3J0OjpwYWludFRoZW1lUGFydChn
YywgcGFpbnRQYXJ0LCBzdGF0ZSwgcmVjdCwgMCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTGludXg6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBQbGF0Zm9ybVN1
cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0ZTsKIApAQCAtMTIwLDEyICsxMjAsMTIgQEAgdm9p
ZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0
KiBnYywgU2Nyb2xsYmFyKiBzY3IKICAgICAgICAgMCk7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6
OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4gKGV2dC5zaGlmdEtleSgpICYmIGV2dC5i
dXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB8fCAoZXZ0LmJ1dHRvbigpID09IE1pZGRsZUJ1dHRvbik7
CiB9CiAKLUludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXplKFNj
cm9sbGJhciogc2Nyb2xsYmFyKQorSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6
OmJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAo
c2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAgICAg
IEludFNpemUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9y
bVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJVcEFycm93KTsKQEAgLTEzNyw3ICsxMzcsNyBAQCBJbnRT
aXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6YnV0dG9uU2l6ZShTY3JvbGxiYXIqIHNj
cm9sbGJhcikKICAgICByZXR1cm4gSW50U2l6ZShzY3JvbGxiYXItPndpZHRoKCkgPCAyICogc2l6
ZS53aWR0aCgpID8gc2Nyb2xsYmFyLT53aWR0aCgpIC8gMiA6IHNpemUud2lkdGgoKSwgc2l6ZS5o
ZWlnaHQoKSk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6Om1pbmltdW1U
aHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTGludXg6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyKQogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3Jv
bGxiYXIpIHsKICAgICAgICAgSW50U2l6ZSBzaXplID0gUGxhdGZvcm1TdXBwb3J0OjpnZXRUaGVt
ZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhclZlcnRpY2FsVGh1bWIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtTGludXguaAppbmRleCA4ZTgwMmU3MzQxYjc3NWI1OTU1YWQwZGVj
MGI4ZWVkNTZmNzk3MjczLi4zMzBkMDNmYjAyMzIxMzRlYzJjYTI5NDE5ZmRhYjI3MzQ5NDc1NGRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtTGludXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaApAQCAtMzksMTIgKzM5LDEyIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNj
cm9sbGJhckNvbnRyb2xTaXplKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCB2
b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRv
bihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFy
UGFydCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCBib29sIHNob3Vs
ZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0g
ICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciopOwotICAgICAgICB2
aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCos
IGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBh
aW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgICAgIHZp
cnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgICAg
IHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwog
ICAgIH07CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaApp
bmRleCA0MWExOThlM2Y4NDIwYzg0ODk0NWZiODQ3NDRkZGI3MDAyNGNkNmU1Li40ZDM0MjZiYjYy
MDc5OWJhM2Q5MDgzYjZkYzg5NDFjYWI0NDI2ZWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5o
CkBAIC0zNiwxMiArMzYsMTIgQEAgcHVibGljOgogICAgIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1N
YWMoKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKCk7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3Jv
bGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJo
YW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJl
Y3QmIGRpcnR5UmVjdCk7CiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgcGFpbnRHaXZlblRpY2tt
YXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgY29uc3Qg
VmVjdG9yPEludFJlY3Q+Jik7CisgICAgdm9pZCBwYWludEdpdmVuVGlja21hcmtzKEdyYXBoaWNz
Q29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IFZl
Y3RvcjxJbnRSZWN0PiYpOwogCiAgICAgUmVmUHRyPFBhdHRlcm4+IG1fb3ZlcmhhbmdQYXR0ZXJu
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCmluZGV4IDQ1OWE1OGIwNzZmNzAwNmYyNzc2
NWIwMjQ5N2EwOTkzNWY4MjNmYjcuLmQwMmI0MjEyNTY0NGI3ODMwY2UyZTBmYWViMzY3MzM2MWY4
ZGI5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQpAQCAtNjEsMTEgKzYxLDExIEBAIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6On5TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKCkKIHsK
IH0KIAotc3RhdGljIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHNjcm9sbGJhclN0
YXRlVG9UaGVtZVN0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorc3RhdGljIFBsYXRmb3JtU3Vw
cG9ydDo6VGhlbWVQYWludFN0YXRlIHNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRlKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVEaXNhYmxlZDsKLSAgICBp
ZiAoIXNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSkKKyAgICBpZiAoIXNj
cm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQogICAgICAgICByZXR1cm4gUGxhdGZv
cm1TdXBwb3J0OjpTdGF0ZUluYWN0aXZlOwogICAgIGlmIChzY3JvbGxiYXItPnByZXNzZWRQYXJ0
KCkgPT0gVGh1bWJQYXJ0KQogICAgICAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZVBy
ZXNzZWQ7CkBAIC05NCwxMSArOTQsMTEgQEAgc3RhdGljIHZvaWQgc2Nyb2xsYmFyUGFpbnRlclBh
aW50VHJhY2soU2Nyb2xsYmFyUGFpbnRlciBzY3JvbGxiYXJQYWludGVyLCBib29sIGUKIC8vICAg
ICAtIGRyYXdpbmcgdXNpbmcgUGxhdGZvcm1TdXBwb3J0IGZ1bmN0aW9ucwogLy8gICAgIC0gZHJh
d2luZyB0aWNrbWFya3MKIC8vICAgICAtIFNraWEgc3BlY2lmaWMgY2hhbmdlcwotYm9vbCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQorYm9vbCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3Qp
CiB7CiAgICAgLy8gR2V0IHRoZSB0aWNrbWFya3MgZm9yIHRoZSBmcmFtZXZpZXcuCiAgICAgVmVj
dG9yPEludFJlY3Q+IHRpY2ttYXJrczsKLSAgICBzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCkt
PmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOworICAgIHNjcm9sbGJhci0+Z2V0VGlja21hcmtzKHRp
Y2ttYXJrcyk7CiAKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpIHsK
ICAgICAgICAgZmxvYXQgdmFsdWUgPSAwOwpAQCAtMTg4LDcgKzE4OCw3IEBAIGJvb2wgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNz
Q29udGV4dCogY29uCiAgICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAgICAgdHJh
Y2tJbmZvLmVuYWJsZVN0YXRlID0ga1RoZW1lVHJhY2tEaXNhYmxlZDsKICAgICBlbHNlCi0gICAg
ICAgIHRyYWNrSW5mby5lbmFibGVTdGF0ZSA9IHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+
aXNBY3RpdmUoKSA/IGtUaGVtZVRyYWNrQWN0aXZlIDoga1RoZW1lVHJhY2tJbmFjdGl2ZTsKKyAg
ICAgICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0gc2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVBcmVh
QWN0aXZlKCkgPyBrVGhlbWVUcmFja0FjdGl2ZSA6IGtUaGVtZVRyYWNrSW5hY3RpdmU7CiAKICAg
ICBpZiAoIWhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkKICAgICAgICAgdHJhY2tJbmZvLmVuYWJsZVN0
YXRlID0ga1RoZW1lVHJhY2tOb3RoaW5nVG9TY3JvbGw7CkBAIC0yNDMsNyArMjQzLDcgQEAgYm9v
bCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwg
R3JhcGhpY3NDb250ZXh0KiBjb24KICAgICBpZiAoaGFzVGh1bWIoc2Nyb2xsYmFyKSkgewogICAg
ICAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTY3JvbGxiYXJJbmZvIHNjcm9sbGJhcklu
Zm87CiAgICAgICAgIHNjcm9sbGJhckluZm8ub3JpZW50YXRpb24gPSBzY3JvbGxiYXItPm9yaWVu
dGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IFBsYXRmb3JtU3VwcG9ydDo6U2Nyb2xs
YmFyT3JpZW50YXRpb25Ib3Jpem9udGFsIDogUGxhdGZvcm1TdXBwb3J0OjpTY3JvbGxiYXJPcmll
bnRhdGlvblZlcnRpY2FsOwotICAgICAgICBzY3JvbGxiYXJJbmZvLnBhcmVudCA9IHNjcm9sbGJh
ci0+cGFyZW50KCkgJiYgc2Nyb2xsYmFyLT5wYXJlbnQoKS0+aXNGcmFtZVZpZXcoKSAmJiBzdGF0
aWNfY2FzdDxGcmFtZVZpZXcqPihzY3JvbGxiYXItPnBhcmVudCgpKS0+aXNTY3JvbGxWaWV3U2Ny
b2xsYmFyKHNjcm9sbGJhcikgPyBQbGF0Zm9ybVN1cHBvcnQ6OlNjcm9sbGJhclBhcmVudFNjcm9s
bFZpZXcgOiBQbGF0Zm9ybVN1cHBvcnQ6OlNjcm9sbGJhclBhcmVudFJlbmRlckxheWVyOworICAg
ICAgICBzY3JvbGxiYXJJbmZvLnBhcmVudCA9IHNjcm9sbGJhci0+aXNTY3JvbGxWaWV3U2Nyb2xs
YmFyKCkgPyBQbGF0Zm9ybVN1cHBvcnQ6OlNjcm9sbGJhclBhcmVudFNjcm9sbFZpZXcgOiBQbGF0
Zm9ybVN1cHBvcnQ6OlNjcm9sbGJhclBhcmVudFJlbmRlckxheWVyOwogICAgICAgICBzY3JvbGxi
YXJJbmZvLm1heFZhbHVlID0gc2Nyb2xsYmFyLT5tYXhpbXVtKCk7CiAgICAgICAgIHNjcm9sbGJh
ckluZm8uY3VycmVudFZhbHVlID0gc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCk7CiAgICAgICAgIHNj
cm9sbGJhckluZm8udmlzaWJsZVNpemUgPSBzY3JvbGxiYXItPnZpc2libGVTaXplKCk7CkBAIC0y
NjMsNyArMjYzLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb24KICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludEdpdmVuVGlja21hcmtz
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgdGlja21hcmtzKQordm9pZCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludEdpdmVuVGlja21hcmtzKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCwgY29uc3QgVmVjdG9yPEludFJlY3Q+JiB0aWNrbWFya3MpCiB7CiAgICAgaWYgKHNj
cm9sbGJhci0+b3JpZW50YXRpb24oKSAhPSBWZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcAppbmRleCBmNDM1ODM5ZDgyMTg1NjRmODAy
NzI4ZDMyODUzMjBkMWUwY2RiYWM4Li5hMDgxOTgzNDc0OTFkY2M1ZDhmMDIyYTEyMjg4OTBkNjU3
N2ZlM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcApAQCAtNzMsNyArNzMsNyBAQCBi
b29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmludmFsaWRhdGVPbk1vdXNlRW50ZXJFeGl0
KCkKICAgICByZXR1cm4gd2luZG93c1ZlcnNpb24oKSA+PSBXaW5kb3dzVmlzdGE7CiB9CiAKLWJv
b2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4o
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9v
bCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2dCkKIHsKICAgICAvLyBGaW5kIHRoZSByZWN0IHdpdGhpbiB3aGljaCB3ZSBzaG91bGRuJ3Qg
c25hcCwgYnkgZXhwYW5kaW5nIHRoZSB0cmFjayByZWN0CiAgICAgLy8gaW4gYm90aCBkaW1lbnNp
b25zLgpAQCAtOTEsNyArOTEsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnNo
b3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhciogc2Nyb2xsYmFyLAogICAgIHJldHVy
biAhcmVjdC5jb250YWlucyhtb3VzZVBvc2l0aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtV2luOjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5
cGUpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VHJhY2tQaWVjZShHcmFw
aGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQogewogICAgIGJvb2wgaG9yeiA9
IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyOwogCkBAIC0x
MTMsNyArMTEzLDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWludFRyYWNr
UGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKgogICAgICAgICBhbGlnblJlY3Qp
OwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50QnV0dG9uKEdyYXBo
aWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0
LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBh
aW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAgICBi
b29sIGhvcnogPSBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJh
cjsKIApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6
cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvCiAgICAgICAg
IHJlY3QpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIo
R3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIoR3JhcGhp
Y3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKICAgICBib29sIGhvcnogPSBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkg
PT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsKIApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3Jv
bGxiYXIqIHNjcm9sCiAgICAgICAgIHJlY3QpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFy
dCBwYXJ0KSBjb25zdAoraW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldFRoZW1lU3Rh
dGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KSBj
b25zdAogewogICAgIC8vIFdoZW4gZHJhZ2dpbmcgdGhlIHRodW1iLCBkcmF3IHRodW1iIHByZXNz
ZWQgYW5kIG90aGVyIHNlZ21lbnRzIG5vcm1hbAogICAgIC8vIHJlZ2FyZGxlc3Mgb2Ygd2hlcmUg
dGhlIGN1cnNvciBhY3R1YWxseSBpcy4gIFNlZSBhbHNvIGZvdXIgcGxhY2VzIGluCkBAIC0xNzEs
NyArMTcxLDcgQEAgaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldFRoZW1lU3RhdGUo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gKHNjcm9sbGJh
ci0+cHJlc3NlZFBhcnQoKSA9PSBwYXJ0KSA/IFNDUkJTX1BSRVNTRUQgOiBTQ1JCU19OT1JNQUw7
CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3RhdGUo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29uc3QKK2ludCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3RhdGUoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KSBjb25zdAogewogICAgIC8vIFdl
IGNvdWxkIHRha2UgYWR2YW50YWdlIG9mIGtub3dpbmcgdGhlIHZhbHVlcyBpbiB0aGUgc3RhdGUg
ZW51bSB0byB3cml0ZQogICAgIC8vIHNvbWUgc2ltcGxlciBjb2RlLCBidXQgdHJlYXRpbmcgdGhl
IHN0YXRlIGVudW0gYXMgYSBibGFjayBib3ggc2VlbXMKQEAgLTIyMSw3ICsyMjEsNyBAQCBpbnQg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVBcnJvd1N0YXRlKFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBTY3JvbGxiYQogICAgIHJldHVybiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgp
ID09IHBhcnQpID8gQUJTX0RPV05QUkVTU0VEIDogQUJTX0RPV05OT1JNQUw7CiB9CiAKLWludCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRDbGFzc2ljVGhlbWVTdGF0ZShTY3JvbGxiYXIq
IHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KSBjb25zdAoraW50IFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1XaW46OmdldENsYXNzaWNUaGVtZVN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29uc3QKIHsKICAgICAvLyBXaGVuIGRyYWdn
aW5nIHRoZSB0aHVtYiwgZHJhdyB0aGUgYnV0dG9ucyBub3JtYWwgZXZlbiB3aGVuIGhvdmVyZWQu
CiAgICAgaWYgKHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCkBAIC0yMzUs
MTIgKzIzNSwxMiBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3NpY1Ro
ZW1lU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbAogICAgIHJldHVybiAoc2Nyb2xs
YmFyLT5wcmVzc2VkUGFydCgpID09IHBhcnQpID8gKERGQ1NfUFVTSEVEIHwgREZDU19GTEFUKSA6
IDA7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkQ2VudGVyT25U
aHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIHJldHVybiBl
dnQuc2hpZnRLZXkoKSAmJiBldnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbjsKIH0KIAotSW50U2l6
ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpidXR0b25TaXplKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQorSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpidXR0b25TaXplKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgLy8gT3VyIGRlc2lyZWQgcmVjdCBp
cyBlc3NlbnRpYWxseSB0aGlja25lc3MgYnkgdGhpY2tuZXNzLgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
V2luLmgKaW5kZXggNjljZmExMzFjNWNiMDRlOWI1MjEwYjc2NWNmYjQ4MWU4ZGRjYjEzNS4uYWM4
ODgxZjkzYjVkYjFhZmY0Njc5YTYwNjNlN2JhN2U4NmY1NTFmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW1XaW4uaApAQCAtMzgsMTkgKzM4LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250
cm9sU2l6ZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpbnZhbGlkYXRlT25Nb3VzZUVudGVyRXhp
dCgpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Ny
b2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0
IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0
dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxi
YXJQYXJ0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsK
LSAgICAgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKik7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBj
b25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAg
ICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBpbnQgZ2V0VGhlbWVTdGF0ZShTY3JvbGxiYXIqLCBTY3Jv
bGxiYXJQYXJ0KSBjb25zdDsKLSAgICAgICAgaW50IGdldFRoZW1lQXJyb3dTdGF0ZShTY3JvbGxi
YXIqLCBTY3JvbGxiYXJQYXJ0KSBjb25zdDsKLSAgICAgICAgaW50IGdldENsYXNzaWNUaGVtZVN0
YXRlKFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQpIGNvbnN0OworICAgICAgICBpbnQgZ2V0VGhl
bWVTdGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIGNvbnN0OworICAg
ICAgICBpbnQgZ2V0VGhlbWVBcnJvd1N0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xs
YmFyUGFydCkgY29uc3Q7CisgICAgICAgIGludCBnZXRDbGFzc2ljVGhlbWVTdGF0ZShTY3JvbGxi
YXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIGNvbnN0OwogICAgIH07CiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9T
Y3JvbGxiYXJUaGVtZUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xs
YmFyVGhlbWVFZmwuY3BwCmluZGV4IDYyZGYwMDVkNjc1NzFkMTRhZDM5NDM2MGQ1NmM0OThlNGRm
OTJiZmIuLjI0MGI1MDE0Nzc5YzE4MmQxNDM5MGMzZjhjMzkzNzc1NzdlOTNhODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmNwcApAQCAt
NDksMTEgKzQ5LDExIEBAIGludCBTY3JvbGxiYXJUaGVtZUVmbDo6c2Nyb2xsYmFyVGhpY2tuZXNz
KFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogICAgIHJldHVybiAwOyAvLyB3ZSBw
YWludCBvbiB0b3AKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUVmbDo6cmVnaXN0ZXJTY3JvbGxi
YXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lRWZsOjpyZWdpc3Rl
clNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogfQogCi12b2lk
IFNjcm9sbGJhclRoZW1lRWZsOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUVmbDo6dW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5oCmluZGV4IDBmZTE2ODgxZTJlNDU2ZTZlMTIz
MDFhZWVmODZjMjY1YmQzMzIzNGIuLmZjNzFjYmVkODkwYTFhNjVhOWEwMmFkOGEwM2QzOGZkYzk5
YWQzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJU
aGVtZUVmbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVt
ZUVmbC5oCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgaW50IHNjcm9s
bGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpOwog
Ci0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFy
KTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9s
bGJhcik7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIpOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFy
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAKaW5kZXggZTk5MzY0
ZjJhN2ZjYWY0ODg4MzBiNDY4ZGUxZDE4YWQ3NTA0ZTkwZi4uOTRlM2ZkNzZmN2ZmYzUyMzBmYzg0
N2ZmOWZlY2FmNDNkYzQ2ZmEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RhdGljIEhhc2hTZXQ8U2Nyb2xsYmFyKj4qIGdTY3JvbGxiYXJzOworc3Rh
dGljIEhhc2hTZXQ8U2Nyb2xsYmFyVGhlbWVDbGllbnQqPiogZ1Njcm9sbGJhcnM7CiAKIFNjcm9s
bGJhclRoZW1lKiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQogewpAQCAtNDUsMTQgKzQ1
LDE0IEBAIFNjcm9sbGJhclRoZW1lR3RrOjp+U2Nyb2xsYmFyVGhlbWVHdGsoKQogewogfQogCi12
b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9s
bGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKCFnU2Nyb2xsYmFycykKLSAgICAg
ICAgZ1Njcm9sbGJhcnMgPSBuZXcgSGFzaFNldDxTY3JvbGxiYXIqPjsKKyAgICAgICAgZ1Njcm9s
bGJhcnMgPSBuZXcgSGFzaFNldDxTY3JvbGxiYXJUaGVtZUNsaWVudCo+OwogICAgIGdTY3JvbGxi
YXJzLT5hZGQoc2Nyb2xsYmFyKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dW5yZWdp
c3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVH
dGs6OnVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikK
IHsKICAgICBnU2Nyb2xsYmFycy0+cmVtb3ZlKHNjcm9sbGJhcik7CiAgICAgaWYgKGdTY3JvbGxi
YXJzLT5pc0VtcHR5KCkpIHsKQEAgLTY5LDkgKzY5LDkgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6dXBkYXRlU2Nyb2xsYmFyc0ZyYW1lVGhpY2tuZXNzKCkKICAgICAvLyBVcGRhdGUgdGhlIHRo
aWNrbmVzcyBvZiBldmVyeSBpbnRlcmlvciBmcmFtZSBzY3JvbGxiYXIgd2lkZ2V0LiBUaGUKICAg
ICAvLyBwbGF0Zm9ybS1pbmRlcGVuZGVudCBzY3JvbGxiYXIgdGhlbSBjb2RlIGlzbid0IHlldCBz
bWFydCBlbm91Z2ggdG8gZ2V0CiAgICAgLy8gdGhpcyBpbmZvcm1hdGlvbiB3aGVuIGl0IHBhaW50
cy4KLSAgICBIYXNoU2V0PFNjcm9sbGJhcio+OjppdGVyYXRvciBlbmQgPSBnU2Nyb2xsYmFycy0+
ZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFNjcm9sbGJhcio+OjppdGVyYXRvciBpdCA9IGdTY3Jv
bGxiYXJzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIgPSAoKml0KTsKKyAgICBIYXNoU2V0PFNjcm9sbGJhclRoZW1lQ2xpZW50Kj46Oml0
ZXJhdG9yIGVuZCA9IGdTY3JvbGxiYXJzLT5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8U2Nyb2xs
YmFyVGhlbWVDbGllbnQqPjo6aXRlcmF0b3IgaXQgPSBnU2Nyb2xsYmFycy0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7CisgICAgICAgIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIg
PSAoKml0KTsKIAogICAgICAgICAvLyBUb3AtbGV2ZWwgc2Nyb2xsYmFyIGkuZS4gc2Nyb2xsYmFy
cyB3aG8gaGF2ZSBhIHBhcmVudCBTY3JvbGxWaWV3CiAgICAgICAgIC8vIHdpdGggbm8gcGFyZW50
IGFyZSBuYXRpdmUsIGFuZCB0aHVzIGRvIG5vdCBuZWVkIHRvIGJlIHJlc2l6ZWQuCkBAIC04Niwx
NCArODYsMTQgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dXBkYXRlU2Nyb2xsYmFyc0ZyYW1l
VGhpY2tuZXNzKCkKICAgICB9CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6Omhhc1RodW1i
KFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6aGFzVGh1bWIo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBp
cyBqdXN0IGNhbGxlZCBhcyBhIHBhaW50LXRpbWUgb3B0aW1pemF0aW9uIHRvIHNlZSBpZgogICAg
IC8vIHBhaW50aW5nIHRoZSB0aHVtYiBjYW4gYmUgc2tpcHBlZC4gIFdlIGRvbid0IGhhdmUgdG8g
YmUgZXhhY3QgaGVyZS4KICAgICByZXR1cm4gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+IDA7CiB9
CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRo
ZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBT
Y3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRvbkVu
ZFBhcnQgJiYgIW1faGFzQmFja0J1dHRvbkVuZFBhcnQpCiAgICAgICAgIHJldHVybiBJbnRSZWN0
KCk7CkBAIC0xMTQsNyArMTE0LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6YmFja0J1
dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGEKICAgICByZXR1
cm4gSW50UmVjdCh4LCBzY3JvbGxiYXItPnkoKSArIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSBtX3Ry
b3VnaEJvcmRlcldpZHRoIC0gKDIgKiBzaXplLmhlaWdodCgpKSwgc2l6ZS53aWR0aCgpLCBzaXpl
LmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6Zm9yd2FyZEJ1dHRv
blJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKK0lu
dFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICBpZiAo
cGFydCA9PSBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0ICYmICFtX2hhc0ZvcndhcmRCdXR0b25TdGFy
dFBhcnQpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CkBAIC0xNDAsNyArMTQwLDcgQEAgSW50
UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gSW50UmVjdCh4LCBzY3JvbGxiYXItPnko
KSArIG1fdHJvdWdoQm9yZGVyV2lkdGggKyBzaXplLmhlaWdodCgpLCBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0cmFja1JlY3Qo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0
cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCkKIHsKICAgICAv
LyBUaGUgcGFkZGluZyBhbG9uZyB0aGUgdGh1bWIgbW92ZW1lbnQgYXhpcyBpbmNsdWRlcyB0aGUg
dHJvdWdoIGJvcmRlcgogICAgIC8vIHBsdXMgdGhlIHNpemUgb2Ygc3RlcHBlciBzcGFjaW5nICh0
aGUgc3BhY2UgYmV0d2VlbiB0aGUgc3RlcHBlciBhbmQKQEAgLTE4MCw3ICsxODAsNyBAQCBJbnRS
ZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJv
b2wpCiAgICAgICAgICAgICAgICAgICAgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0g
KDIgKiBtb3ZlbWVudEF4aXNQYWRkaW5nKSAtIGJ1dHRvbnNXaWR0aCk7CiB9CiAKLUludFJlY3Qg
U2Nyb2xsYmFyVGhlbWVHdGs6OnRodW1iUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVH
dGs6OnRodW1iUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRS
ZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KQogewogICAgIEludFJlY3QgdHJhY2tSZWN0ID0g
Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxiYXIsIHVuY29uc3RyYWluZWRU
cmFja1JlY3QpOwogICAgIGludCB0aHVtYlBvcyA9IHRodW1iUG9zaXRpb24oc2Nyb2xsYmFyKTsK
QEAgLTE5MSw3ICsxOTEsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0aHVtYlJlY3Qo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29ucwogICAgIHJldHVybiBJ
bnRSZWN0KHRyYWNrUmVjdC54KCkgKyAodHJhY2tSZWN0LndpZHRoKCkgLSBtX3RodW1iRmF0bmVz
cykgLyAyLCB0cmFja1JlY3QueSgpICsgdGh1bWJQb3MsIG1fdGh1bWJGYXRuZXNzLCB0aHVtYkxl
bmd0aChzY3JvbGxiYXIpKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgaWYgKGdyYXBoaWNzQ29u
dGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjAs
NyArMjYwLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb24KICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIq
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQorYm9vbCBTY3JvbGxiYXJUaGVtZUd0
azo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZlbnQpCiB7CiAgICAgcmV0dXJuIChldmVudC5zaGlmdEtleSgpICYm
IGV2ZW50LmJ1dHRvbigpID09IExlZnRCdXR0b24pIHx8IChldmVudC5idXR0b24oKSA9PSBNaWRk
bGVCdXR0b24pOwogfQpAQCAtMjcwLDcgKzI3MCw3IEBAIGludCBTY3JvbGxiYXJUaGVtZUd0azo6
c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplKQogICAgIHJldHVybiBtX3Ro
dW1iRmF0bmVzcyArIChtX3Ryb3VnaEJvcmRlcldpZHRoICogMik7CiB9CiAKLUludFNpemUgU2Ny
b2xsYmFyVGhlbWVHdGs6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitJbnRTaXpl
IFNjcm9sbGJhclRoZW1lR3RrOjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNj
cm9sbGJhcikKICAgICAgICAgcmV0dXJuIEludFNpemUobV90aHVtYkZhdG5lc3MsIG1fc3RlcHBl
clNpemUpOwpAQCAtMjc5LDcgKzI3OSw3IEBAIEludFNpemUgU2Nyb2xsYmFyVGhlbWVHdGs6OmJ1
dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIEludFNpemUobV9zdGVw
cGVyU2l6ZSwgbV90aHVtYkZhdG5lc3MpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVHdGs6Om1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVt
ZUd0azo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIp
CiB7CiAgICAgcmV0dXJuIG1fbWluVGh1bWJMZW5ndGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5oCmluZGV4IDQ1ZTA5M2IxZWM5N2QxYWZh
YTI0YzU4MzMxNTY2OTMwMmU4NWNkNjMuLmU3M2RmMjg1NTAxYjU4MjZkYzA1OWI4M2JmYzNkOWE0
MTcwZDRiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxi
YXJUaGVtZUd0ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJU
aGVtZUd0ay5oCkBAIC0zNywyOSArMzcsMjkgQEAgcHVibGljOgogICAgIFNjcm9sbGJhclRoZW1l
R3RrKCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhlbWVHdGsoKTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0
b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wpOwotICAgIHZpcnR1YWwgSW50
UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sKTsK
LSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wpOwotICAgIElu
dFJlY3QgdGh1bWJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRU
cmFja1JlY3QpOwotICAgIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7Ci0gICAgdm9pZCBwYWludFNjcm9sbGJhckJhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKik7Ci0gICAgdm9pZCBwYWludFRyYWNr
QmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7
Ci0gICAgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0
IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxi
YXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wpOworICAgIHZpcnR1YWwgSW50
UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBh
cnQsIGJvb2wpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBib29sKTsKKyAgICBJbnRSZWN0IHRodW1iUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QpOworICAgIGJvb2wgcGFp
bnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
JiBkYW1hZ2VSZWN0KTsKKyAgICB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGlj
c0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZvaWQgcGFpbnRUcmFja0Jh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1
dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVt
YihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAg
IHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7Ci0g
ICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBp
bnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgSW50U2l6ZSBi
dXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgbWluaW11
bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKICAgICAvLyBUT0RPOiBUaGVz
ZSBhcmUgdGhlIGRlZmF1bHQgR1RLKyB2YWx1ZXMuIEF0IHNvbWUgcG9pbnQgd2Ugc2hvdWxkIHB1
bGwgdGhlc2UgZnJvbSB0aGUgdGhlbWUgaXRzZWxmLgogICAgIHZpcnR1YWwgZG91YmxlIGluaXRp
YWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMjA7IH0KICAgICB2aXJ0dWFsIGRv
dWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMDI7IH0KICAgICB2b2lkIHVw
ZGF0ZVRoZW1lUHJvcGVydGllcygpOwogICAgIHZvaWQgdXBkYXRlU2Nyb2xsYmFyc0ZyYW1lVGhp
Y2tuZXNzKCk7Ci0gICAgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKLSAgICB2
b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CisgICAgdm9pZCByZWdpc3RlclNj
cm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZvaWQgdW5yZWdpc3RlclNjcm9s
bGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiBwcm90ZWN0ZWQ6CiAjaWZuZGVmIEdUS19B
UElfVkVSU0lPTl8yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Ny
b2xsYmFyVGhlbWVHdGsyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxi
YXJUaGVtZUd0azIuY3BwCmluZGV4IDcyOWJkMTI0ZGUyYjIxODU0OTk3YjE5ODc2MzBjZGY4OWJl
YTkxMDMuLjg2NmJiOGExZDJmNzFhYTg2NGVhNTdlZDMwM2YxMzYwNzJjMWM0MjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwCkBA
IC02NiwxMyArNjYsMTMgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dXBkYXRlVGhlbWVQcm9w
ZXJ0aWVzKCkKICAgICB1cGRhdGVTY3JvbGxiYXJzRnJhbWVUaGlja25lc3MoKTsKIH0KIAotc3Rh
dGljIEd0a1dpZGdldCogZ2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFy
KQorc3RhdGljIEd0a1dpZGdldCogZ2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgUmVuZGVyVGhlbWVHdGsqIHRoZW1lID0gc3RhdGlj
X2Nhc3Q8UmVuZGVyVGhlbWVHdGsqPihSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCkuZ2V0KCkp
OwogICAgIHJldHVybiBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxi
YXIgPyB0aGVtZS0+Z3RrVlNjcm9sbGJhcigpIDogdGhlbWUtPmd0a0hTY3JvbGxiYXIoKTsKIH0K
IAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBQYWludCB0aGUgdHJhY2sgYmFja2dyb3VuZC4gSWYg
dGhlIHRyb3VnaC11bmRlci1zdGVwcGVycyBwcm9wZXJ0eSBpcyB0cnVlLCB0aGlzCiAgICAgLy8g
c2hvdWxkIGJlIHRoZSBmdWxsIHNpemUgb2YgdGhlIHNjcm9sbGJhciwgYnV0IGlmIGlzIGZhbHNl
LCBpdCBzaG91bGQgb25seSBiZSB0aGUKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTY3JvbGxiYXJU
aGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBT
Y3JvbGxiYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9BQ1RJVkUs
IEdUS19TSEFET1dfSU4sICJ0cm91Z2giKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6
cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xs
YmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJhckJh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQogewogICAgIEludFJlY3QgZnVsbFNjcm9sbGJhclJlY3QgPSBJbnRSZWN0KHNj
cm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSwgc2Nyb2xsYmFyLT53aWR0aCgpLCBzY3JvbGxi
YXItPmhlaWdodCgpKTsKIApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lR3Rr
OjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3Jv
bAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NUQVRFX05PUk1BTCwgR1RLX1NI
QURPV19JTiwgInNjcm9sbGVkX3dpbmRvdyIpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lR3Rr
OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRo
dW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBHdGtXaWRnZXQqIHdpZGdldCA9IGdl
dFdpZGdldEZvclNjcm9sbGJhcihzY3JvbGxiYXIpOwogICAgIGdib29sZWFuIGFjdGl2YXRlU2xp
ZGVyOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VGh1
bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhCiAgICAgd2lk
Z2V0Q29udGV4dC5ndGtQYWludFNsaWRlcihzbGlkZXJSZWN0LCB3aWRnZXQsIHN0YXRlVHlwZSwg
c2hhZG93VHlwZSwgInNsaWRlciIsIG9yaWVudGF0aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJU
aGVtZUd0azo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIq
IHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9p
ZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBT
Y3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgLy8gVGhlIGJ1dHRvbnMgd2lsbCBiZSBkaXNhYmxl
ZCBpZiB0aGUgdGh1bWIgaXMgYXMgdGhlIGFwcHJvcHJpYXRlIGV4dHJlbWUuCiAgICAgR3RrU2hh
ZG93VHlwZSBzaGFkb3dUeXBlID0gR1RLX1NIQURPV19PVVQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGszLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azMuY3BwCmluZGV4IDRjMzNlNjZkYjhm
ZmVmYzNmNDIzNDZjYWQwZWVlNjdlZTZjZDQ1ZmUuLjk3NDljNTQzZjNkZGY2YjMxNWVmZmI5OGE3
NTlmZjViMDAyZDcwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9T
Y3JvbGxiYXJUaGVtZUd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9T
Y3JvbGxiYXJUaGVtZUd0azMuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5
U2Nyb2xsYmFyU3R5bGVDb250ZXh0Q2xhc3NlcyhHdGtTdHlsZUNvbnRleHQqIGNvbnRleHQsIFNj
cm9sbGJhCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfYWRkX2NsYXNzKGNvbnRleHQsIG9yaWVudGF0
aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gIEdUS19TVFlMRV9DTEFTU19WRVJUSUNBTCA6IEdU
S19TVFlMRV9DTEFTU19IT1JJWk9OVEFMKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6
cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIq
IHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6
OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBQ
YWludCB0aGUgdHJhY2sgYmFja2dyb3VuZC4gSWYgdGhlIHRyb3VnaC11bmRlci1zdGVwcGVycyBw
cm9wZXJ0eSBpcyB0cnVlLCB0aGlzCiAgICAgLy8gc2hvdWxkIGJlIHRoZSBmdWxsIHNpemUgb2Yg
dGhlIHNjcm9sbGJhciwgYnV0IGlmIGlzIGZhbHNlLCBpdCBzaG91bGQgb25seSBiZSB0aGUKQEAg
LTk0LDcgKzk0LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIKICAgICBndGtfc3R5bGVfY29u
dGV4dF9yZXN0b3JlKG1fY29udGV4dCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBh
aW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJh
ciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICBndGtfc3R5bGVfY29udGV4dF9zYXZlKG1fY29udGV4dCk7CiAKQEAg
LTEwNSw3ICsxMDUsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJhckJh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbAogICAgIGd0a19zdHlsZV9j
b250ZXh0X3Jlc3RvcmUobV9jb250ZXh0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6
cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFy
LCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVt
YihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2F2ZSht
X2NvbnRleHQpOwogCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6
cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmEK
ICAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKG1fY29udGV4dCk7CiB9CiAKLXZvaWQgU2Ny
b2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFy
dCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
cmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGd0a19zdHlsZV9jb250ZXh0X3NhdmUo
bV9jb250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbGJhclRoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFy
VGhlbWVNYWMuaAppbmRleCAxM2Q0NGMyM2QzYjMzNjIzNmZiNjQwOThmYTg3MGFlYzhjN2I1NjU4
Li45NjI5ZjYwNzRmNjJjYWFiNjVhOTM5ZjQ3NTA3MThhNDEyNGRjZjhhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaApAQCAtMzksNDYgKzM5
LDQ2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogI2lmICFQ
TEFURk9STShDSFJPTUlVTSkKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2
aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwogI2VuZGlmCiAKICAgICB2aXJ0
dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1bGFy
U2Nyb2xsYmFyKTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMo
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHVzZXNPdmVybGF5U2Ny
b2xsYmFycygpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJPdmVybGF5
U3R5bGUoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbGJhck92ZXJs
YXlTdHlsZShTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiAgICAgdmlydHVhbCBkb3VibGUgaW5p
dGlhbEF1dG9zY3JvbGxUaW1lckRlbGF5KCk7CiAgICAgdmlydHVhbCBkb3VibGUgYXV0b3Njcm9s
bFRpbWVyRGVsYXkoKTsKIAogICAgIHZpcnR1YWwgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBi
dXR0b25zUGxhY2VtZW50KCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3Jv
bGxiYXIoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIo
U2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJh
clRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZvaWQgc2V0TmV3UGFpbnRlckZvclNjcm9sbGJh
cihTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYWludGVyKTsKLSAgICBTY3JvbGxiYXJQYWludGVyIHBh
aW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CisgICAgdm9pZCBzZXROZXdQYWludGVyRm9y
U2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFpbnRlcik7CisgICAg
U2Nyb2xsYmFyUGFpbnRlciBwYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50
Kik7CiAKICAgICBzdGF0aWMgYm9vbCBpc0N1cnJlbnRseURyYXdpbmdJbnRvTGF5ZXIoKTsKICAg
ICBzdGF0aWMgdm9pZCBzZXRJc0N1cnJlbnRseURyYXdpbmdJbnRvTGF5ZXIoYm9vbCk7CiAKIHBy
b3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKTsKLSAgICB2
aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBib29sIGhhc0J1
dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9u
UmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwot
ICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxi
YXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFj
a1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIElu
dFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0
LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0
dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRp
bmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CiAKICAgICB2aXJ0dWFsIGludCBtYXhP
dmVybGFwQmV0d2VlblBhZ2VzKCkgeyByZXR1cm4gNDA7IH0KIAotICAgIHZpcnR1YWwgaW50IG1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1
bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
KTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Ny
b2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNo
b3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9m
VGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsK
ICAgICBpbnQgc2Nyb2xsYmFyUGFydFRvSElQcmVzc2VkU3RhdGUoU2Nyb2xsYmFyUGFydCk7CiAK
ICNpZiAhUExBVEZPUk0oQ0hST01JVU0pICYmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykg
JiYgRU5BQkxFKFJVQkJFUl9CQU5ESU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCmluZGV4IGNjNzQ4MjQ1Nzc4NTI5M2QxZDU3OGI3ODJk
ODFjMjdmYWJiMjU5MjQuLjNiOTAyMWFkZWE1NWRjOGFmY2Q2NmJkZGY1NTc2MTI0MDlkOTk3YWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMu
bW0KQEAgLTUwLDcgKzUwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBIYXNoTWFwPFNjcm9sbGJhciosIFJldGFpblB0cjxTY3Jv
bGxiYXJQYWludGVyPiA+IFNjcm9sbGJhclBhaW50ZXJNYXA7Cit0eXBlZGVmIEhhc2hNYXA8U2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFpbnRlcj4gPiBTY3JvbGxi
YXJQYWludGVyTWFwOwogCiBzdGF0aWMgU2Nyb2xsYmFyUGFpbnRlck1hcCogc2Nyb2xsYmFyTWFw
KCkKIHsKQEAgLTE2Miw3ICsxNjIsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVBcnJvd1BsYWNlbWVu
dCgpCiAgICAgfQogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpyZWdpc3RlclNjcm9sbGJh
cihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVy
U2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKGlz
U2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKSB7CiAgICAgICAgIGJvb2wgaXNIb3Jpem9u
dGFsID0gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXI7CkBA
IC0xNzUsMTkgKzE3NSwxOSBAQCB2b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpyZWdpc3RlclNjcm9s
bGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICB9CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhl
bWVNYWM6OnVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNj
cm9sbGJhclRoZW1lTWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIpCiB7CiAgICAgc2Nyb2xsYmFyTWFwKCktPnJlbW92ZShzY3JvbGxiYXIpOwog
fQogCi12b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYWludGVyIG5ld1BhaW50ZXIpCit2b2lkIFNj
cm9sbGJhclRoZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhaW50ZXIgbmV3UGFpbnRlcikKIHsKICAgICBz
Y3JvbGxiYXJNYXAoKS0+c2V0KHNjcm9sbGJhciwgbmV3UGFpbnRlcik7CiAgICAgdXBkYXRlRW5h
YmxlZFN0YXRlKHNjcm9sbGJhcik7CiAgICAgdXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHNj
cm9sbGJhcik7CiB9CiAKLVNjcm9sbGJhclBhaW50ZXIgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50
ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitTY3JvbGxiYXJQYWludGVyIFNj
cm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNjcm9sbGJhck1hcCgpLT5nZXQoc2Nyb2xsYmFy
KS5nZXQoKTsKIH0KQEAgLTI0OCwxMCArMjQ4LDEwIEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6
OnVzZXNPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNj
cm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlU2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAg
U2Nyb2xsYmFyUGFpbnRlciBwYWludGVyID0gcGFpbnRlckZvclNjcm9sbGJhcihzY3JvbGxiYXIp
OwotICAgIHN3aXRjaCAoc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5zY3JvbGxiYXJPdmVy
bGF5U3R5bGUoKSkgeworICAgIHN3aXRjaCAoc2Nyb2xsYmFyLT5zY3JvbGxiYXJPdmVybGF5U3R5
bGUoKSkgewogICAgIGNhc2UgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlRGVmYXVsdDoKICAgICAgICAg
W3BhaW50ZXIgc2V0S25vYlN0eWxlOk5TU2Nyb2xsZXJLbm9iU3R5bGVEZWZhdWx0XTsKICAgICAg
ICAgYnJlYWs7CkBAIC0yNzksNyArMjc5LDcgQEAgU2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBT
Y3JvbGxiYXJUaGVtZU1hYzo6YnV0dG9uc1BsYWNlbWVudCgpIGNvbnN0CiAgICAgcmV0dXJuIGdC
dXR0b25QbGFjZW1lbnQ7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1dHRvbnMo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNCdXR0b25z
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNjcm9sbGJh
ci0+ZW5hYmxlZCgpICYmIGJ1dHRvbnNQbGFjZW1lbnQoKSAhPSBTY3JvbGxiYXJCdXR0b25zTm9u
ZQogICAgICAgICAgICAgICYmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRh
bFNjcm9sbGJhcgpAQCAtMjg3LDcgKzI4Nyw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6Omhh
c0J1dHRvbnMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgICAgICAgICAgOiBzY3JvbGxiYXIt
PmhlaWdodCgpKSA+PSAyICogKGNSZWFsQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNp
emUoKV0gLSBjQnV0dG9uSGl0SW5zZXRbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSk7CiB9CiAK
LWJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQor
Ym9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICBpbnQgbWluTGVuZ3RoRm9yVGh1bWI7CiAgICAgaWYgKGlzU2Nyb2xs
YmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKSB7CkBAIC0zMTksNyArMzE5LDcgQEAgc3RhdGljIElu
dFJlY3QgYnV0dG9uUmVwYWludFJlY3QoY29uc3QgSW50UmVjdCYgYnV0dG9uUmVjdCwgU2Nyb2xs
YmFyT3JpZW50YXRpb24KICAgICByZXR1cm4gcGFpbnRSZWN0OwogfQogCi1JbnRSZWN0IFNjcm9s
bGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xs
YmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6
YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFy
UGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQogewogICAgIEludFJlY3QgcmVzdWx0OwogICAgIApA
QCAtMzUzLDcgKzM1Myw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmJhY2tCdXR0b25S
ZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3Qo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykK
K0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykK
IHsKICAgICBJbnRSZWN0IHJlc3VsdDsKICAgICAKQEAgLTM5Myw3ICszOTMsNyBAQCBJbnRSZWN0
IFNjcm9sbGJhclRoZW1lTWFjOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgU2Nyb2xsYmFyUGFydAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUludFJlY3QgU2Nyb2xs
YmFyVGhlbWVNYWM6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCBwYWludGlu
ZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQogewogICAgIGlmIChwYWludGluZyB8fCAh
aGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICByZXR1cm4gc2Nyb2xsYmFyLT5mcmFtZVJl
Y3QoKTsKQEAgLTQzMCw3ICs0MzAsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjp0cmFj
a1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcpCiAgICAgcmV0dXJuIElu
dFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpICsgc3RhcnRXaWR0aCwgdGhpY2tu
ZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0gdG90YWxXaWR0aCk7CiB9CiAKLWludCBTY3JvbGxi
YXJUaGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50
IFNjcm9sbGJhclRoZW1lTWFjOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxl
KCkpCiAgICAgICAgIHJldHVybiBbc2Nyb2xsYmFyTWFwKCktPmdldChzY3JvbGxiYXIpLmdldCgp
IGtub2JNaW5MZW5ndGhdOwpAQCAtNDM4LDcgKzQzOCw3IEBAIGludCBTY3JvbGxiYXJUaGVtZU1h
Yzo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgICAgICByZXR1
cm4gY1RodW1iTWluTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV07CiB9CiAKLWJvb2wg
U2Nyb2xsYmFyVGhlbWVNYWM6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGRD
ZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBldnQpCiB7CiAgICAgaWYgKGV2dC5idXR0b24oKSAhPSBMZWZ0QnV0dG9uKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC00NDcsNyArNDQ3LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZU1h
Yzo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQKICAgICByZXR1cm4gZXZ0LmFsdEtleSgpOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lTWFj
OjpzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQorYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6c2hvdWxkRHJh
Z0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogewogICAgIHJldHVybiBldmVudC5hbHRLZXkoKTsKIH0K
QEAgLTQ3MCw3ICs0NzAsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVNYWM6OnNjcm9sbGJhclBhcnRU
b0hJUHJlc3NlZFN0YXRlKFNjcm9sbGJhclBhcnQgcGFydCkKICAgICB9CiB9CiAKLXZvaWQgU2Ny
b2xsYmFyVGhlbWVNYWM6OnVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikK
K3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFp
bGFibGUoKSkKICAgICAgICAgW3Njcm9sbGJhck1hcCgpLT5nZXQoc2Nyb2xsYmFyKS5nZXQoKSBz
ZXRFbmFibGVkOnNjcm9sbGJhci0+ZW5hYmxlZCgpXTsKQEAgLTQ5OSw3ICs0OTksNyBAQCBzdGF0
aWMgdm9pZCBzY3JvbGxiYXJQYWludGVyUGFpbnQoU2Nyb2xsYmFyUGFpbnRlciBzY3JvbGxiYXJQ
YWludGVyLCBib29sIGVuYWJsZQogfQogCiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKQotYm9vbCBT
Y3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Nyb2xsYmFy
VGhlbWVNYWM6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsKICAgICBpZiAo
aXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpIHsKICAgICAgICAgZmxvYXQgdmFsdWUg
PSAwOwpAQCAtNTcwLDcgKzU3MCw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvCiAgICAgaWYg
KCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAgICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0g
a1RoZW1lVHJhY2tEaXNhYmxlZDsKICAgICBlbHNlCi0gICAgICAgIHRyYWNrSW5mby5lbmFibGVT
dGF0ZSA9IHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSA/IGtUaGVtZVRy
YWNrQWN0aXZlIDoga1RoZW1lVHJhY2tJbmFjdGl2ZTsKKyAgICAgICAgdHJhY2tJbmZvLmVuYWJs
ZVN0YXRlID0gc2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkgPyBrVGhlbWVUcmFj
a0FjdGl2ZSA6IGtUaGVtZVRyYWNrSW5hY3RpdmU7CiAKICAgICBpZiAoaGFzVGh1bWIoc2Nyb2xs
YmFyKSkKICAgICAgICAgdHJhY2tJbmZvLmF0dHJpYnV0ZXMgfD0ga1RoZW1lVHJhY2tTaG93VGh1
bWI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRo
ZW1lTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1l
TW9jay5jcHAKaW5kZXggNWQyYmMzZWMwODk3OGUwMzczN2ZiYTczOTViOGI4Y2U3NDYwZDQ2NC4u
NmRlOTFjY2I4MTkyMTA0MGMwODQ3OGMxZWU1Njc3ZGRlNDM3NDk1ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcApAQCAtMzIs
NyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbnQgY1Njcm9sbGJhclRo
aWNrbmVzc1tdID0geyAxNSwgMTEgfTsKIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1vY2s6OnRy
YWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhl
bWVNb2NrOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCkK
IHsKICAgICByZXR1cm4gc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKTsKIH0KQEAgLTQyLDEyICs0Miwx
MiBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFy
Q29udHJvbFNpemUgY29udHJvbFNpemUpCiAgICAgcmV0dXJuIGNTY3JvbGxiYXJUaGlja25lc3Nb
Y29udHJvbFNpemVdOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0Jh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgdHJhY2tSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50
VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdHJhY2tSZWN0KQogewogICAgIGNvbnRl
eHQtPmZpbGxSZWN0KHRyYWNrUmVjdCwgc2Nyb2xsYmFyLT5lbmFibGVkKCkgPyBDb2xvcjo6bGln
aHRHcmF5IDogQ29sb3IoMHhGRkUwRTBFMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogfQogCi12
b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3QpCit2b2lk
IFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRodW1iUmVj
dCkKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIGNvbnRleHQtPmZp
bGxSZWN0KHRodW1iUmVjdCwgQ29sb3I6OmRhcmtHcmF5LCBDb2xvclNwYWNlRGV2aWNlUkdCKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVN
b2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5o
CmluZGV4IGUyNTQ4NDIyYTI4ZjVlNzIzZTQzNTNmOGY0NTc2NTI1M2NiNjg1YmIuLjYzMzM4NDFh
Yjc5NmI5ZGMyMzNmM2Y2M2ViODAwYWJmYTdiMGJiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaApAQCAtMzYsMTUgKzM2LDE1IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29u
dHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwg
Ym9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIGZhbHNlOyB9
CisgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyByZXR1
cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJh
ciosIFNjcm9sbGJhclBhcnQsIGJvb2wgLypwYWludGluZyovID0gZmFsc2UpIHsgcmV0dXJuIElu
dFJlY3QoKTsgfQotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxi
YXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7IHJldHVybiBJ
bnRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJv
b2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCAvKnBhaW50aW5nKi8g
PSBmYWxzZSkgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndh
cmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCAv
KnBhaW50aW5nKi8gPSBmYWxzZSkgeyByZXR1cm4gSW50UmVjdCgpOyB9CisgICAgdmlydHVhbCBJ
bnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRpbmcgPSBm
YWxzZSk7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0
Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4
dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwg
dm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
Y29uc3QgSW50UmVjdCYpOwogICAgIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNNb2Nr
VGhlbWUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuY3BwCmluZGV4IGUzMjQzZWNmYTg5NzliOWE2ODFlMTU5
YmRlZTlhOWIxNTljNjc0M2MuLmQ0YjU4YjFiMGU1YWYxNzBmOTZlZjgzNjRiNjliNDg0YTM2MjIy
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1l
UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQu
Y3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIFNjcm9sbGJhclBhcnQgc2Nyb2xsYmFyUGFy
dChjb25zdCBRU3R5bGU6OlN1YkNvbnRyb2wmIHNjKQogICAgIHJldHVybiBOb1BhcnQ7CiB9CiAK
LXN0YXRpYyBRU3R5bGVPcHRpb25TbGlkZXIqIHN0eWxlT3B0aW9uU2xpZGVyKFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBRV2lkZ2V0KiB3aWRnZXQgPSAwKQorc3RhdGljIFFTdHlsZU9wdGlvblNsaWRl
ciogc3R5bGVPcHRpb25TbGlkZXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgUVdp
ZGdldCogd2lkZ2V0ID0gMCkKIHsKICAgICBzdGF0aWMgUVN0eWxlT3B0aW9uU2xpZGVyIG9wdDsK
ICAgICBpZiAod2lkZ2V0KQpAQCAtMTU1LDcgKzE1NSw3IEBAIHN0YXRpYyBRU3R5bGVPcHRpb25T
bGlkZXIqIHN0eWxlT3B0aW9uU2xpZGVyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBRV2lkZ2V0KiB3
aWRnCiAgICAgcmV0dXJuICZvcHQ7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVRdDo6cGFpbnQo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZVF0OjpwYWludChT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsKICAgICBpZiAoZ3JhcGhpY3ND
b250ZXh0LT51cGRhdGluZ0NvbnRyb2xUaW50cygpKSB7CiAgICAgICAgc2Nyb2xsYmFyLT5pbnZh
bGlkYXRlUmVjdChkYW1hZ2VSZWN0KTsKQEAgLTE5Myw3ICsxOTMsNyBAQCBib29sIFNjcm9sbGJh
clRoZW1lUXQ6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udAogICAgIHJldHVybiB0cnVlOwogfQogCi1TY3JvbGxiYXJQYXJ0IFNjcm9sbGJh
clRoZW1lUXQ6OmhpdFRlc3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZ0KQorU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZVF0OjpoaXRUZXN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZ0KQogewogICAgIFFTdHlsZU9wdGlvblNsaWRlciogb3B0ID0gc3R5bGVPcHRpb25TbGlkZXIo
c2Nyb2xsYmFyKTsKICAgICBjb25zdCBRUG9pbnQgcG9zID0gc2Nyb2xsYmFyLT5jb252ZXJ0RnJv
bUNvbnRhaW5pbmdXaW5kb3coZXZ0LnBvc2l0aW9uKCkpOwpAQCAtMjAyLDEzICsyMDIsMTMgQEAg
U2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZVF0OjpoaXRUZXN0KFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBjb25zdCBQbGF0Zm9ybU1vdXMKICAgICByZXR1cm4gc2Nyb2xsYmFyUGFydChzYyk7CiB9
CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVRdDo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIq
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVRdDo6
c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgZXZ0KQogewogICAgIC8vIE1pZGRsZSBjbGljayBjZW50ZXJzIHNsaWRlciB0
aHVtYiAoaWYgc3VwcG9ydGVkKS4KICAgICByZXR1cm4gc3R5bGUoKS0+c3R5bGVIaW50KFFTdHls
ZTo6U0hfU2Nyb2xsQmFyX01pZGRsZUNsaWNrQWJzb2x1dGVQb3NpdGlvbikgJiYgZXZ0LmJ1dHRv
bigpID09IE1pZGRsZUJ1dHRvbjsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVF0OjppbnZhbGlk
YXRlUGFydChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCkKK3ZvaWQgU2Nyb2xs
YmFyVGhlbWVRdDo6aW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgU2Nyb2xsYmFyUGFydCkKIHsKICAgICAvLyBGSVhNRTogRG8gbW9yZSBwcmVjaXNlIGludmFs
aWRhdGlvbi4KICAgICBzY3JvbGxiYXItPmludmFsaWRhdGUoKTsKQEAgLTIyNCw3ICsyMjQsNyBA
QCBpbnQgU2Nyb2xsYmFyVGhlbWVRdDo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRy
b2xTaXplIGNvbnRyb2xTaXplKQogICAgIHJldHVybiBzdHlsZSgpLT5waXhlbE1ldHJpYyhRU3R5
bGU6OlBNX1Njcm9sbEJhckV4dGVudCwgJm8sIDApOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVR
dDo6dGh1bWJQb3NpdGlvbihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVt
ZVF0Ojp0aHVtYlBvc2l0aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAg
ICAgaWYgKHNjcm9sbGJhci0+ZW5hYmxlZCgpKSB7CiAgICAgICAgIGZsb2F0IHBvcyA9IChmbG9h
dClzY3JvbGxiYXItPmN1cnJlbnRQb3MoKSAqICh0cmFja0xlbmd0aChzY3JvbGxiYXIpIC0gdGh1
bWJMZW5ndGgoc2Nyb2xsYmFyKSkgLyBzY3JvbGxiYXItPm1heGltdW0oKTsKQEAgLTIzMywyMSAr
MjMzLDIxIEBAIGludCBTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYlBvc2l0aW9uKFNjcm9sbGJhciog
c2Nyb2xsYmFyKQogICAgIHJldHVybiAwOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVRdDo6dGh1
bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVRdDo6dGh1
bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBRU3R5bGVP
cHRpb25TbGlkZXIqIG9wdCA9IHN0eWxlT3B0aW9uU2xpZGVyKHNjcm9sbGJhcik7CiAgICAgSW50
UmVjdCB0aHVtYiA9IHN0eWxlKCktPnN1YkNvbnRyb2xSZWN0KFFTdHlsZTo6Q0NfU2Nyb2xsQmFy
LCBvcHQsIFFTdHlsZTo6U0NfU2Nyb2xsQmFyU2xpZGVyLCAwKTsKICAgICByZXR1cm4gc2Nyb2xs
YmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyB0aHVtYi53aWR0aCgp
IDogdGh1bWIuaGVpZ2h0KCk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZVF0Ojp0cmFja1Bvc2l0
aW9uKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lUXQ6OnRyYWNrUG9z
aXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBRU3R5bGVPcHRp
b25TbGlkZXIqIG9wdCA9IHN0eWxlT3B0aW9uU2xpZGVyKHNjcm9sbGJhcik7CiAgICAgSW50UmVj
dCB0cmFjayA9IHN0eWxlKCktPnN1YkNvbnRyb2xSZWN0KFFTdHlsZTo6Q0NfU2Nyb2xsQmFyLCBv
cHQsIFFTdHlsZTo6U0NfU2Nyb2xsQmFyR3Jvb3ZlLCAwKTsKICAgICByZXR1cm4gc2Nyb2xsYmFy
LT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyB0cmFjay54KCkgLSBzY3Jv
bGxiYXItPngoKSA6IHRyYWNrLnkoKSAtIHNjcm9sbGJhci0+eSgpOwogfQogCi1pbnQgU2Nyb2xs
YmFyVGhlbWVRdDo6dHJhY2tMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xs
YmFyVGhlbWVRdDo6dHJhY2tMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikK
IHsKICAgICBRU3R5bGVPcHRpb25TbGlkZXIqIG9wdCA9IHN0eWxlT3B0aW9uU2xpZGVyKHNjcm9s
bGJhcik7CiAgICAgSW50UmVjdCB0cmFjayA9IHN0eWxlKCktPnN1YkNvbnRyb2xSZWN0KFFTdHls
ZTo6Q0NfU2Nyb2xsQmFyLCBvcHQsIFFTdHlsZTo6U0NfU2Nyb2xsQmFyR3Jvb3ZlLCAwKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuaAppbmRleCBjZjQ4
ODJkYTIwM2JiZjBmYjdjYzY5ZTdjM2UxYzFmZmRkODFmNWViLi4wMzM3YmY4MGNjZjY0NmQxOGU4
ZjA3YzRmZTVhY2JhM2FhOTk1MjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9TY3JvbGxiYXJUaGVtZVF0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQv
U2Nyb2xsYmFyVGhlbWVRdC5oCkBAIC00MCwxOSArNDAsMTkgQEAgY2xhc3MgU2Nyb2xsYmFyVGhl
bWVRdCA6IHB1YmxpYyBTY3JvbGxiYXJUaGVtZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2Ny
b2xsYmFyVGhlbWVRdCgpOwogCi0gICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhciosIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZpcnR1YWwg
Ym9vbCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEludFJlY3QmIGRhbWFnZVJlY3QpOwogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5l
cihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVj
dCk7CiAKLSAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgaGl0VGVzdChTY3JvbGxiYXIqLCBjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgaGl0VGVz
dChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCi0g
ICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0KTsK
KyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBT
Y3JvbGxiYXJQYXJ0KTsKIAotICAgIHZpcnR1YWwgaW50IHRodW1iUG9zaXRpb24oU2Nyb2xsYmFy
Kik7Ci0gICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVh
bCBpbnQgdHJhY2tQb3NpdGlvbihTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0cmFja0xl
bmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9sbGJh
clRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJhclRoZW1l
Q2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqKTsKIAogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250
cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmNwcAppbmRleCAzNDNiYmIyODBlZDZh
Zjg0OGY1MWNjMDBlZDk4ZjMxZjdlMTdlMjQ4Li4xY2M1Mzg1ZTE4N2EyMmVhZjFiMDU1ZTM0YmUw
ZmY2NDM4OTI5YjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Ny
b2xsYmFyVGhlbWVTYWZhcmkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
Y3JvbGxiYXJUaGVtZVNhZmFyaS5jcHAKQEAgLTEwNCwxNCArMTA0LDE0IEBAIGludCBTY3JvbGxi
YXJUaGVtZVNhZmFyaTo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNv
bnRyb2xTaXplKQogICAgIHJldHVybiBjU2Nyb2xsYmFyVGhpY2tuZXNzW2NvbnRyb2xTaXplXTsK
IH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzQnV0dG9ucyhTY3JvbGxiYXIqIHNj
cm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Omhhc0J1dHRvbnMoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gc2Nyb2xsYmFyLT5lbmFibGVk
KCkgJiYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8g
CiAgICAgICAgICAgICAgc2Nyb2xsYmFyLT53aWR0aCgpIDogCiAgICAgICAgICAgICAgc2Nyb2xs
YmFyLT5oZWlnaHQoKSkgPj0gMiAqIChjUmVhbEJ1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRy
b2xTaXplKCldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0pOwog
fQogCi1ib29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9s
bGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Omhhc1RodW1iKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZW5hYmxlZCgpICYm
IChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IAogICAg
ICAgICAgICAgIHNjcm9sbGJhci0+d2lkdGgoKSA6IApAQCAtMTM0LDcgKzEzNCw3IEBAIHN0YXRp
YyBJbnRSZWN0IGJ1dHRvblJlcGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNj
cm9sbGJhck9yaWVudGF0aW9uCiAgICAgcmV0dXJuIHBhaW50UmVjdDsKIH0KIAotSW50UmVjdCBT
Y3JvbGxiYXJUaGVtZVNhZmFyaTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhl
bWVTYWZhcmk6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIs
IFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykKIHsKICAgICBJbnRSZWN0IHJlc3Vs
dDsKIApAQCAtMTUyLDcgKzE1Miw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmJh
Y2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6Zm9yd2FyZEJ1
dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBw
YWludGluZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmZvcndhcmRCdXR0b25SZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9v
bCBwYWludGluZykKIHsKICAgICBJbnRSZWN0IHJlc3VsdDsKICAgICAKQEAgLTE4MSw3ICsxODEs
NyBAQCBzdGF0aWMgSW50UmVjdCB0cmFja1JlcGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIHRyYWNr
UmVjdCwgU2Nyb2xsYmFyT3JpZW50YXRpb24gbwogICAgIHJldHVybiBwYWludFJlY3Q7CiB9CiAK
LUludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9s
bGJhciwgYm9vbCBwYWludGluZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnRyYWNr
UmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQogewog
ICAgIGlmIChwYWludGluZyB8fCAhaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICByZXR1
cm4gc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKTsKQEAgLTE5MywzNiArMTkzLDM2IEBAIEludFJlY3Qg
U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9v
bCBwYWludGluZykKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFy
LT55KCkgKyBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0sIHRoaWNrbmVz
cywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIDIgKiBjQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29u
dHJvbFNpemUoKV0pOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Om1pbmltdW1UaHVt
Ykxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6
bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAg
ICAgcmV0dXJuIGNUaHVtYk1pbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldOwogfQog
Ci1ib29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJh
ciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZVNh
ZmFyaTo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIHJldHVybiBldnQuc2hpZnRLZXkoKSAmJiBl
dnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbjsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFy
aTo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQs
IFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCit2b2lkIFNj
cm9sbGJhclRoZW1lU2FmYXJpOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgdHJhY2tSZWN0KQogewogICAgIGlmICghU2FmYXJpVGhlbWVMaWJyYXJ5KCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBOU0NvbnRyb2xTaXplIHNpemUgPSBzY3JvbGxiYXItPmNvbnRy
b2xTaXplKCkgPT0gU21hbGxTY3JvbGxiYXIgPyBOU1NtYWxsQ29udHJvbFNpemUgOiBOU1JlZ3Vs
YXJDb250cm9sU2l6ZTsKICAgICBUaGVtZUNvbnRyb2xTdGF0ZSBzdGF0ZSA9IDA7Ci0gICAgaWYg
KHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSkKKyAgICBpZiAoc2Nyb2xs
YmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAgICAgICAgIHN0YXRlIHw9IEFjdGl2ZVN0
YXRlOwogICAgIGlmIChoYXNCdXR0b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHN0YXRlIHw9IEVu
YWJsZWRTdGF0ZTsKICAgICBwYWludFRoZW1lUGFydChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkg
PT0gVmVydGljYWxTY3JvbGxiYXIgPyBWU2Nyb2xsVHJhY2tQYXJ0IDogSFNjcm9sbFRyYWNrUGFy
dCwgZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgdHJhY2tSZWN0LCBzaXplLCBz
dGF0ZSk7IAogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbihHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFy
VGhlbWVTYWZhcmk6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBidXR0b25S
ZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgaWYgKCFTYWZhcmlUaGVtZUxpYnJhcnko
KSkKICAgICAgICAgcmV0dXJuOwogICAgIE5TQ29udHJvbFNpemUgc2l6ZSA9IHNjcm9sbGJhci0+
Y29udHJvbFNpemUoKSA9PSBTbWFsbFNjcm9sbGJhciA/IE5TU21hbGxDb250cm9sU2l6ZSA6IE5T
UmVndWxhckNvbnRyb2xTaXplOwogICAgIFRoZW1lQ29udHJvbFN0YXRlIHN0YXRlID0gMDsKLSAg
ICBpZiAoc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5pc0FjdGl2ZSgpKQorICAgIGlmIChz
Y3JvbGxiYXItPmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSkKICAgICAgICAgc3RhdGUgfD0gQWN0
aXZlU3RhdGU7CiAgICAgaWYgKGhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkKICAgICAgICAgc3RhdGUg
fD0gRW5hYmxlZFN0YXRlOwpAQCAtMjM2LDEzICsyMzYsMTMgQEAgdm9pZCBTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNj
cm9sbGIKICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uUmVjdCwgc2l6ZSwgc3RhdGUpOwog
fQogCi12b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4
dCogZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
dGh1bWJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUaHVtYihHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQogewogICAgIGlmICghU2FmYXJpVGhlbWVMaWJy
YXJ5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBOU0NvbnRyb2xTaXplIHNpemUgPSBzY3JvbGxi
YXItPmNvbnRyb2xTaXplKCkgPT0gU21hbGxTY3JvbGxiYXIgPyBOU1NtYWxsQ29udHJvbFNpemUg
OiBOU1JlZ3VsYXJDb250cm9sU2l6ZTsKICAgICBUaGVtZUNvbnRyb2xTdGF0ZSBzdGF0ZSA9IDA7
Ci0gICAgaWYgKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSkKKyAgICBp
ZiAoc2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAgICAgICAgIHN0YXRlIHw9
IEFjdGl2ZVN0YXRlOwogICAgIGlmIChoYXNUaHVtYihzY3JvbGxiYXIpKQogICAgICAgICBzdGF0
ZSB8PSBFbmFibGVkU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
Y3JvbGxiYXJUaGVtZVNhZmFyaS5oCmluZGV4IGYwMzkzNzllYTQ0NzA4ZThiNWI3NWY5NjA1NTMy
ZmUxMWQ2MjY1OTIuLmY0MjdiMTkwZmQ2NzY2NTIxNTY3NTY2Y2I2Y2JjNGRmZTQzZDk5MjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFy
aS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFy
aS5oCkBAIC00MSwyMCArNDEsMjAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgYm9vbCBo
YXNUaHVtYihTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxi
YXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVt
ZUNsaWVudCopOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJh
ciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJ
bnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wg
cGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxi
YXIqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0
dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRp
bmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsK
KyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9v
bCBwYWludGluZyA9IGZhbHNlKTsKIAotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0
aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKTsKICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25U
aHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3Jv
dW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29u
c3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1i
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0
dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVj
dCYsIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNz
Q29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwogfTsKIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1l
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5j
cHAKaW5kZXggZDM2MzQxMDY4NDg3ZmYxYjc4Njk3NjhlOWQ1ZjZiMmY0ODk4MWFhNS4uNTY0NDI5
N2Q3ZjI3MGM1MGM3YTI4ZWYzYjFlMjRhY2YxZDEyNzllNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwCkBAIC0xMzAsMTIgKzEzMCwx
MiBAQCBib29sIFNjcm9sbGJhclRoZW1lV2luOjppbnZhbGlkYXRlT25Nb3VzZUVudGVyRXhpdCgp
CiAgICAgcmV0dXJuIHJ1bm5pbmdWaXN0YTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6
aGFzVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lV2luOjpo
YXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiB0
aHVtYkxlbmd0aChzY3JvbGxiYXIpID4gMDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVdp
bjo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFy
dCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OmJhY2tCdXR0b25SZWN0KFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsK
ICAgICAvLyBXaW5kb3dzIGp1c3QgaGFzIHNpbmdsZSBhcnJvd3MuCiAgICAgaWYgKHBhcnQgPT0g
QmFja0J1dHRvbkVuZFBhcnQpCkBAIC0xNTQsNyArMTU0LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJU
aGVtZVdpbjo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBh
cnQgcGEKICAgICAgICAgICAgICAgICAgICB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0KCkg
PCAyICogdGhpY2tuZXNzID8gc2Nyb2xsYmFyLT5oZWlnaHQoKSAvIDIgOiB0aGlja25lc3MpOwog
fQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxi
YXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxi
YXJUaGVtZVdpbjo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIC8vIFdpbmRvd3MganVzdCBo
YXMgc2luZ2xlIGFycm93cy4KICAgICBpZiAocGFydCA9PSBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0
KQpAQCAtMTc1LDcgKzE3NSw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OmZvcndhcmRC
dXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgcmV0dXJu
IEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpICsgc2Nyb2xsYmFyLT5oZWln
aHQoKSAtIGgsIHRoaWNrbmVzcywgaCk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46
OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFy
VGhlbWVXaW46OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29s
KQogewogICAgIGludCB0aGlja25lc3MgPSBzY3JvbGxiYXJUaGlja25lc3MoKTsKICAgICBpZiAo
c2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKQEAgLTE4
OCwxMiArMTg4LDEyIEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OnRyYWNrUmVjdChTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngo
KSwgc2Nyb2xsYmFyLT55KCkgKyB0aGlja25lc3MsIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWln
aHQoKSAtIDIgKiB0aGlja25lc3MpOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lV2luOjpzaG91
bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0
KQorYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIHJldHVy
biBldnQuc2hpZnRLZXkoKSAmJiBldnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbjsKIH0KIAotYm9v
bCBTY3JvbGxiYXJUaGVtZVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBTY3JvbGxi
YXJUaGVtZVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgLy8g
RmluZCB0aGUgcmVjdCB3aXRoaW4gd2hpY2ggd2Ugc2hvdWxkbid0IHNuYXAsIGJ5IGV4cGFuZGlu
ZyB0aGUgdHJhY2sgcmVjdAogICAgIC8vIGluIGJvdGggZGltZW5zaW9ucy4KQEAgLTIxMSwxNCAr
MjExLDE0IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3Jp
Z2luKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBQCiAgICAgcmV0dXJuICFyZWN0LmNvbnRh
aW5zKG1vdXNlUG9zaXRpb24pOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRy
YWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRU
cmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIEp1c3QgYXNz
dW1lIGEgZm9yd2FyZCB0cmFjayBwYXJ0LiAgV2Ugb25seSBwYWludCB0aGUgdHJhY2sgYXMgYSBz
aW5nbGUgcGllY2Ugd2hlbiB0aGVyZSBpcyBubyB0aHVtYi4KICAgICBpZiAoIWhhc1RodW1iKHNj
cm9sbGJhcikpCiAgICAgICAgIHBhaW50VHJhY2tQaWVjZShjb250ZXh0LCBzY3JvbGxiYXIsIHJl
Y3QsIEZvcndhcmRUcmFja1BhcnQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWlu
dFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKK3ZvaWQgU2Ny
b2xsYmFyVGhlbWVXaW46OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNj
cm9sbGJhclBhcnQgcGFydFR5cGUpCiB7CiAgICAgY2hlY2tBbmRJbml0U2Nyb2xsYmFyVGhlbWUo
KTsKIApAQCAtMjc2LDcgKzI3Niw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VHJh
Y2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2NyCiAjZW5kaWYK
IH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Ny
b2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRCdXR0b24oR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBj
b25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgY2hlY2tBbmRJ
bml0U2Nyb2xsYmFyVGhlbWUoKTsKIApAQCAtMzM5LDcgKzMzOSw3IEBAIHN0YXRpYyBJbnRSZWN0
IGdyaXBwZXJSZWN0KGludCB0aGlja25lc3MsIGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKICAg
ICAgICAgICAgICAgICAgICBncmlwcGVyVGhpY2tuZXNzLCBncmlwcGVyVGhpY2tuZXNzKTsKIH0K
IAotc3RhdGljIHZvaWQgcGFpbnRHcmlwcGVyKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBIREMgaGRj
LCBjb25zdCBJbnRSZWN0JiByZWN0KQorc3RhdGljIHZvaWQgcGFpbnRHcmlwcGVyKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7
CiAgICAgaWYgKCFzY3JvbGxiYXJUaGVtZSkKICAgICAgICAgcmV0dXJuOyAgLy8gQ2xhc3NpYyBs
b29rIGhhcyBubyBncmlwcGVyLgpAQCAtMzU4LDcgKzM1OCw3IEBAIHN0YXRpYyB2b2lkIHBhaW50
R3JpcHBlcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgSERDIGhkYywgY29uc3QgSW50UmVjdCYgcmVj
dCkKICAgICBEcmF3VGhlbWVCYWNrZ3JvdW5kKHNjcm9sbGJhclRoZW1lLCBoZGMsIHNjcm9sbGJh
ci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gU1BfR1JJUFBFUkhPUiA6
IFNQX0dSSVBQRVJWRVJULCBzdGF0ZSwgJnRoZW1lUmVjdCwgMCk7CiB9CiAKLXZvaWQgU2Nyb2xs
YmFyVGhlbWVXaW46OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVX
aW46OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGNoZWNrQW5kSW5p
dFNjcm9sbGJhclRoZW1lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Nj
cm9sbGJhclRoZW1lV2luLmgKaW5kZXggY2QyZjE3NmRmZGM5NzM4MmMzNWJiNzczZjliMWU4ZGFk
MjEyNzZiNi4uODcwMjQwYzE2NTU4Y2YwZjYyNTc0MTk2ZWViNjlhYWE4MDZhN2EyNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmgKQEAgLTQy
LDIwICs0MiwyMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGludmFsaWRhdGVPbk1vdXNl
RW50ZXJFeGl0KCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhT
Y3JvbGxiYXIqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNj
cm9sbGJhciopOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxi
YXJUaGVtZUNsaWVudCopOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNj
cm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmly
dHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQs
IGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChT
Y3JvbGxiYXIqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBi
YWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wg
cGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZh
bHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50
ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwotICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVt
YihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIHBh
aW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4
dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3Qg
SW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQ
aWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xs
YmFyUGFydCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guY3BwCmluZGV4IGM5MjQ5
NzhhNTA1YWMzMWYxNDA1MWUzMDE4MzMwNjQyNTEzYzRhNTEuLmJhZGYzMTU1NDA1YTZhNTEzNjYy
MzI1YjkyMzU5ZGM4MTNhOTUyNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3d4L1Njcm9sbGJhclRoZW1lV3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4
L1Njcm9sbGJhclRoZW1lV3guY3BwCkBAIC03MSwxOSArNzEsMTkgQEAgaW50IFNjcm9sbGJhclRo
ZW1lV3g6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBzaXplKQogICAg
IHJldHVybiB0aGlja25lc3M7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVXeDo6aGFzVGh1bWIo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lV3g6Omhhc1RodW1iKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgaXMg
anVzdCBjYWxsZWQgYXMgYSBwYWludC10aW1lIG9wdGltaXphdGlvbiB0byBzZWUgaWYKICAgICAv
LyBwYWludGluZyB0aGUgdGh1bWIgY2FuIGJlIHNraXBwZWQuICBXZSBkb24ndCBoYXZlIHRvIGJl
IGV4YWN0IGhlcmUuCiAgICAgcmV0dXJuIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikgPiAwOwogfQog
Ci1pbnQgU2Nyb2xsYmFyVGhlbWVXeDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lV3g6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiAyMDsKIH0KIAotSW50U2l6
ZSBTY3JvbGxiYXJUaGVtZVd4OjpidXR0b25TaXplKFNjcm9sbGJhciopIAorSW50U2l6ZSBTY3Jv
bGxiYXJUaGVtZVd4OjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgCiB7CiAjaWZk
ZWYgX19XWE1BQ19fCiAgICAgcmV0dXJuIEludFNpemUoMjAsMjApOwpAQCAtOTIsNyArOTIsNyBA
QCBJbnRTaXplIFNjcm9sbGJhclRoZW1lV3g6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKikKICNlbmRp
ZgogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lV3g6OnNwbGl0VHJhY2soU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QsIEludFJlY3QmIGJl
Zm9yZVRodW1iUmVjdCwgSW50UmVjdCYgdGh1bWJSZWN0LCBJbnRSZWN0JiBhZnRlclRodW1iUmVj
dCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVXeDo6c3BsaXRUcmFjayhTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0LCBJbnRS
ZWN0JiBiZWZvcmVUaHVtYlJlY3QsIEludFJlY3QmIHRodW1iUmVjdCwgSW50UmVjdCYgYWZ0ZXJU
aHVtYlJlY3QpCiB7CiAgICAgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnNwbGl0VHJhY2soc2Ny
b2xsYmFyLCB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0LCBiZWZvcmVUaHVtYlJlY3QsIHRodW1iUmVj
dCwgYWZ0ZXJUaHVtYlJlY3QpOwogI2lmZGVmIF9fV1hNQUNfXwpAQCAtMTA5LDcgKzEwOSw3IEBA
IHZvaWQgU2Nyb2xsYmFyVGhlbWVXeDo6c3BsaXRUcmFjayhTY3JvbGxiYXIqIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgdW5jb25zdHJhCiAjZW5kaWYKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJU
aGVtZVd4OjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFy
dCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4OjpiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wp
CiB7CiAgICAgLy8gRklYTUU6IEhhbmRsaW5nIHRoaXMgY2FzZSBpcyBuZWVkZWQgd2hlbiB0aGVy
ZSBhcmUgdHdvIHNldHMgb2YgYXJyb3cgYnV0dG9ucwogICAgIC8vIG9uIE1hYywgb25lIGF0IHRo
ZSB0b3AgYW5kIG9uZSBhdCB0aGUgYm90dG9tLgpAQCAtMTMwLDcgKzEzMCw3IEBAIEludFJlY3Qg
U2Nyb2xsYmFyVGhlbWVXeDo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNj
cm9sbGJhclBhcnQgcGFyCiAgICAgcmV0dXJuIEludFJlY3QoeCwgeSwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0
dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQor
SW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAgICAgLy8g
RklYTUU6IEhhbmRsaW5nIHRoaXMgY2FzZSBpcyBuZWVkZWQgd2hlbiB0aGVyZSBhcmUgdHdvIHNl
dHMgb2YgYXJyb3cgYnV0dG9ucwogICAgIC8vIG9uIE1hYywgb25lIGF0IHRoZSB0b3AgYW5kIG9u
ZSBhdCB0aGUgYm90dG9tLgpAQCAtMTU1LDcgKzE1NSw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhl
bWVXeDo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBh
cnQKICAgICByZXR1cm4gSW50UmVjdCh4LCB5LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkp
OwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNj
cm9sbGJhciwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6dHJhY2tSZWN0KFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgSW50U2l6ZSBicyA9IGJ1
dHRvblNpemUoc2Nyb2xsYmFyKTsKICAgICBpbnQgdHJhY2tTdGFydCA9IDA7CkBAIC0xNzksMTEg
KzE3OSwxMSBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OnRyYWNrUmVjdChTY3JvbGxiYXIq
IHNjcm9sbGJhciwgYm9vbCkKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Ny
b2xsYmFyLT55KCkgKyB0cmFja1N0YXJ0LCB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0KCkg
LSAyICogYnMuaGVpZ2h0KCkpOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lV3g6OnBhaW50KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCitib29sIFNjcm9sbGJhclRoZW1lV3g6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsKICAgICB3eE9yaWVudGF0aW9uIG9yaWVudGF0aW9uID0gKHNjcm9sbGJhci0+b3Jp
ZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSA/IHd4SE9SSVpPTlRBTCA6IHd4VkVS
VElDQUw7CiAgICAgaW50IGZsYWdzID0gMDsKLSAgICBpZiAoc2Nyb2xsYmFyLT5zY3JvbGxhYmxl
QXJlYSgpLT5pc0FjdGl2ZSgpKQorICAgIGlmIChzY3JvbGxiYXItPmlzU2Nyb2xsYWJsZUFyZWFB
Y3RpdmUoKSkKICAgICAgICAgZmxhZ3MgfD0gd3hDT05UUk9MX0ZPQ1VTRUQ7CiAgICAgCiAgICAg
aWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4
L1Njcm9sbGJhclRoZW1lV3guaAppbmRleCA3NWFiMTc1YTNiYTYwNGZjZDc5NWFkMmVhNDVlZGZj
ZjU4M2VlNTU4Li4zNzJhYWY5NjYyZjc0NWQ0ZWUwNzQ3ZWRmNWMxMWY5ZmM1YWQ4OTU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5oCkBAIC0zNSwy
MSArMzUsMjEgQEAgY2xhc3MgU2Nyb2xsYmFyVGhlbWVXeCA6IHB1YmxpYyBTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhlbWVXeCgpOwog
ICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9
IFJlZ3VsYXJTY3JvbGxiYXIpOwotICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXIqLCBH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBib29sIHBhaW50
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYp
OwogICAgIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJh
ciopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFy
Kik7CisgICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7
IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1l
Q2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXIqKTsK
KyAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopOwog
Ci0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJh
clBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndh
cmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBm
YWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29sIHBh
aW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7
CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFs
IEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9
IGZhbHNlKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzcGxpdFRyYWNrKFNjcm9sbGJhciosIGNvbnN0
IEludFJlY3QmIHRyYWNrLCBJbnRSZWN0JiBzdGFydFRyYWNrLCBJbnRSZWN0JiB0aHVtYiwgSW50
UmVjdCYgZW5kVHJhY2spOworICAgIHZpcnR1YWwgdm9pZCBzcGxpdFRyYWNrKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYgdHJhY2ssIEludFJlY3QmIHN0YXJ0VHJhY2ssIElu
dFJlY3QmIHRodW1iLCBJbnRSZWN0JiBlbmRUcmFjayk7CiAgICAgCi0gICAgdmlydHVhbCBpbnQg
bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1U
aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCmluZGV4IDgxMGM5OGZmMzY2OGFiOTFjZGU5
YzM1NzE4ZDZmMDRiMmY3NDY3MWIuLjdmZTJmYWM4YjhkNDk3NTRkOGVhYjIzZDQwNWIxNjJiZTMz
ZGM3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKQEAg
LTg1LDcgKzg1LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoTWFwPHVuc2lnbmVkLCBSZW5kZXJTY3Jv
bGxiYXJQYXJ0Kj4gbV9wYXJ0czsKIH07CiAKLWlubGluZSBSZW5kZXJTY3JvbGxiYXIqIHRvUmVu
ZGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW5saW5lIFJlbmRlclNjcm9sbGJh
ciogdG9SZW5kZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsK
ICAgICBBU1NFUlQoIXNjcm9sbGJhciB8fCBzY3JvbGxiYXItPmlzQ3VzdG9tU2Nyb2xsYmFyKCkp
OwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJTY3JvbGxiYXIqPihzY3JvbGxiYXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAK
aW5kZXggODczMDlkNDRlNWFhNDUyNjk3OWFmZWJlNTEyNzhiNGU0NmE1ZTkxNy4uNDRlMmFhNjMx
ZGMyODE1MDE3NGJjMjI1MjMwZThiNmFhYjdkMGQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaCIKICNp
bmNsdWRlICJSZW5kZXJTY3JvbGxiYXIuaCIKKyNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNsaWVu
dC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzYsNyArMzcsNyBAQCBSZW5kZXJTY3JvbGxiYXJUaGVtZSogUmVuZGVyU2Nyb2xsYmFy
VGhlbWU6OnJlbmRlclNjcm9sbGJhclRoZW1lKCkKICAgICByZXR1cm4gJnRoZW1lOwogfQogCi12
b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBpbnQmIGJlZm9yZVNpemUsIGludCYgYWZ0ZXJTaXplKQordm9pZCBS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBpbnQmIGJlZm9yZVNpemUsIGludCYgYWZ0ZXJTaXplKQog
ewogICAgIEludFJlY3QgZmlyc3RCdXR0b24gPSBiYWNrQnV0dG9uUmVjdChzY3JvbGxiYXIsIEJh
Y2tCdXR0b25TdGFydFBhcnQpOwogICAgIEludFJlY3Qgc2Vjb25kQnV0dG9uID0gZm9yd2FyZEJ1
dHRvblJlY3Qoc2Nyb2xsYmFyLCBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0KTsKQEAgLTUxLDcgKzUy
LDcgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhp
cyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgaW50JgogICAgIH0KIH0KIAotYm9vbCBSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6aGFzQnV0dG9ucyhTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jvb2wgUmVuZGVy
U2Nyb2xsYmFyVGhlbWU6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
cikKIHsKICAgICBpbnQgc3RhcnRTaXplOwogICAgIGludCBlbmRTaXplOwpAQCAtNTksMjcgKzYw
LDI3IEBAIGJvb2wgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIpCiAgICAgcmV0dXJuIChzdGFydFNpemUgKyBlbmRTaXplKSA8PSAoc2Nyb2xsYmFy
LT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBzY3JvbGxiYXItPndpZHRo
KCkgOiBzY3JvbGxiYXItPmhlaWdodCgpKTsKIH0KIAotYm9vbCBSZW5kZXJTY3JvbGxiYXJUaGVt
ZTo6aGFzVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFJlbmRlclNjcm9sbGJhclRo
ZW1lOjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJl
dHVybiB0cmFja0xlbmd0aChzY3JvbGxiYXIpIC0gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+PSAw
OwogfQogCi1pbnQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1pbmltdW1UaHVtYkxlbmd0aChTY3Jv
bGxiYXIqIHNjcm9sbGJhcikKK2ludCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6bWluaW11bVRodW1i
TGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHRv
UmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPm1pbmltdW1UaHVtYkxlbmd0aCgpOwogfQogCi1J
bnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgYm9vbCkKK0ludFJlY3QgUmVuZGVyU2Ny
b2xsYmFyVGhlbWU6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCiB7CiAgICAgcmV0dXJuIHRvUmVuZGVy
U2Nyb2xsYmFyKHNjcm9sbGJhciktPmJ1dHRvblJlY3QocGFydFR5cGUpOwogfQogCi1JbnRSZWN0
IFJlbmRlclNjcm9sbGJhclRoZW1lOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9s
bGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSwgYm9vbCkKK0ludFJlY3QgUmVuZGVyU2Nyb2xs
YmFyVGhlbWU6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCiB7CiAgICAgcmV0dXJuIHRvUmVuZGVy
U2Nyb2xsYmFyKHNjcm9sbGJhciktPmJ1dHRvblJlY3QocGFydFR5cGUpOwogfQogCi1JbnRSZWN0
IFJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJv
b2wpCitJbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCkKIHsKICAgICBpZiAoIWhhc0J1dHRvbnMoc2Nyb2xs
YmFyKSkKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7CkBAIC05MSw3ICs5
Miw3IEBAIEludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnRyYWNrUmVjdChTY3JvbGxiYXIq
IHNjcm9sbGJhciwgYm9vbCkKICAgICByZXR1cm4gdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFy
KS0+dHJhY2tSZWN0KHN0YXJ0TGVuZ3RoLCBlbmRMZW5ndGgpOwogfQogCi1JbnRSZWN0IFJlbmRl
clNjcm9sbGJhclRoZW1lOjpjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQorSW50UmVjdCBSZW5kZXJTY3JvbGxi
YXJUaGVtZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogeyAKICAgICBJbnRSZWN0IGJh
Y2tSZWN0ID0gdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+dHJhY2tQaWVjZVJlY3RXaXRo
TWFyZ2lucyhCYWNrVHJhY2tQYXJ0LCByZWN0KTsKICAgICBJbnRSZWN0IGZvcndhcmRSZWN0ID0g
dG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+dHJhY2tQaWVjZVJlY3RXaXRoTWFyZ2lucyhG
b3J3YXJkVHJhY2tQYXJ0LCByZWN0KTsKQEAgLTExMiwyNyArMTEzLDI3IEBAIHZvaWQgUmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0Nv
bnRleHQqIGNvbnRlCiAgICAgY29udGV4dC0+ZmlsbFJlY3QoY29ybmVyUmVjdCwgQ29sb3I6Ondo
aXRlLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVt
ZTo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9s
bGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyKQogewogICAgIHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnBh
aW50UGFydChjb250ZXh0LCBTY3JvbGxiYXJCR1BhcnQsIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCkp
OwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNrQmFja2dyb3VuZChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9s
bGJhciktPnBhaW50UGFydChjb250ZXh0LCBUcmFja0JHUGFydCwgcmVjdCk7CiB9CiAKLXZvaWQg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxi
YXJQYXJ0IHBhcnQpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNrUGllY2Uo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgdG9SZW5k
ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+cGFpbnRQYXJ0KGNvbnRleHQsIHBhcnQsIHJlY3QpOwog
fQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBT
Y3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludEJ1dHRv
bihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAgICB0b1Jl
bmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5wYWludFBhcnQoY29udGV4dCwgcGFydCwgcmVjdCk7
CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
K3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogewogICAgIHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnBhaW50UGFydChjb250
ZXh0LCBUaHVtYlBhcnQsIHJlY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyVGhlbWUuaAppbmRleCA3MGMyNGE1ZWEyZWQ3OWJiOWY4ZmFkMDIxMzdj
NjM1NjlkOTk2M2M0Li5lYzkyYmRjOTM5M2FjYzZmMmRhNmExNzRmNzdiOWYzZWExNDFmZTYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaApA
QCAtNDYsMzUgKzQ2LDM1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9s
bENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBjb3JuZXJSZWN0KTsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSB7
IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2hvdWxkQ2VudGVyT25UaHVtYihzY3Jv
bGxiYXIsIGV2ZW50KTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZlbnQpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5zaG91bGRDZW50ZXJPblRo
dW1iKHNjcm9sbGJhciwgZXZlbnQpOyB9CiAgICAgCiAgICAgdmlydHVhbCBkb3VibGUgaW5pdGlh
bEF1dG9zY3JvbGxUaW1lckRlbGF5KCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkt
PmluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpOyB9CiAgICAgdmlydHVhbCBkb3VibGUgYXV0
b3Njcm9sbFRpbWVyRGVsYXkoKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+YXV0
b3Njcm9sbFRpbWVyRGVsYXkoKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xs
YmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUo
KS0+cmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQotICAgIHZpcnR1YWwgdm9pZCB1bnJl
Z2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKSB7IHJldHVybiBTY3JvbGxiYXJU
aGVtZTo6dGhlbWUoKS0+dW5yZWdpc3RlclNjcm9sbGJhcihzY3JvbGxiYXIpOyB9CisgICAgdmly
dHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5yZWdpc3RlclNjcm9sbGJhcihz
Y3JvbGxiYXIpOyB9CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1l
KCktPnVucmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQogCi0gICAgdmlydHVhbCBpbnQg
bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1U
aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAgdm9pZCBidXR0b25TaXpl
c0Fsb25nVHJhY2tBeGlzKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBpbnQmIGJlZm9yZVNpemUsIGlu
dCYgYWZ0ZXJTaXplKTsKKyAgICB2b2lkIGJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6
ZSk7CiAgICAgCiAgICAgc3RhdGljIFJlbmRlclNjcm9sbGJhclRoZW1lKiByZW5kZXJTY3JvbGxi
YXJUaGVtZSgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Ny
b2xsYmFyKik7Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOworICAgIHZp
cnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVh
bCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIElu
dFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Ny
b2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0
dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7
CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIElu
dFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQ
YXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1Jl
Y3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogICAgIAot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyKik7ICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3Vu
ZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmly
dHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBj
b25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0
dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxi
YXJQYXJ0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xs
YmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopOyAg
ICAKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJ
bnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CiAK
LSAgICB2aXJ0dWFsIEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3Jv
bGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRy
YWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0
Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128821</attachid>
            <date>2012-02-24 15:51:41 -0800</date>
            <delta_ts>2012-02-25 13:29:15 -0800</delta_ts>
            <desc>Should make patch build with Safari</desc>
            <filename>bug-78028-20120224185140.patch</filename>
            <type>text/plain</type>
            <size>134855</size>
            <attacher name="Peter Kotwicz">pkotwicz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQxYzM5NDNlODZjOWEz
ZDViNjdhOWM3NmIxN2IwYjc3MzhkMmU4MS4uZWUzNmQxNjMyOTQzMDUzODk2YjM1OTBhNzkzMzJj
OTQwZjdhYWNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3MSBAQAorMjAxMi0wMi0yMyAgUGV0
ZXIgS290d2ljeiAgPHBrb3R3aWN6QGdvb2dsZS5jb20+CisKKyAgICAgICAgRGVjb3VwbGUgc2Ny
b2xsYmFyIHBhaW50aW5nIGZyb20gU2Nyb2xsYmFyIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwMjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhcjo6c2V0RnJhbWVSZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjppbnZhbGlkYXRlUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXI6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXI6OmdldFRpY2ttYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6
OmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpp
c1Njcm9sbFZpZXdTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzZXRF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAgICAgKFNjcm9s
bGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OngpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjp5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6d2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bG9jYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjpyb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZnJhbWVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6aW52YWxpZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXI6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmlzQ3VzdG9tU2Nyb2xsYmFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhcjo6b3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmN1cnJlbnRQb3MpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp2aXNpYmxlU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXI6OnRvdGFsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6
Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpjb250cm9sU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmxpbmVTdGVwKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhcjo6cGFnZVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpwcmVz
c2VkUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmhvdmVyZWRQYXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6c3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhcjo6ZW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWU6OnVwZGF0ZUVuYWJsZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OmhpdFRlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6aW52YWxpZGF0ZVBhcnRz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjppbnZhbGlkYXRlUGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkQ2VudGVyT25UaHVtYik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmln
aW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnNob3VsZERyYWdEb2N1bWVu
dEluc3RlYWRPZlRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp0aHVt
YlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp0aHVtYkxlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dHJhY2tQb3NpdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dHJhY2tMZW5ndGgpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDbGllbnQ6On5TY3JvbGxiYXJUaGVtZUNsaWVudCk6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlOjpoaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjp1c2VkVG90
YWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVt
YlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0
aHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6
bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjp0cmFja1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjp0cmFja0xlbmd0aCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNjcm9sbGJhckJhY2tn
cm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50
VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjpwYWludFRyYWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjpwYWludFRpY2ttYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpoYXNUaHVtYik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpmb3J3YXJkQnV0dG9uUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjp0cmFja1JlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUcmFja0JhY2tncm91
bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUaWNr
bWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW06Omhhc0J1dHRv
bnMpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50U2Nyb2xsYmFyQmFj
a2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9p
ZDo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtQW5kcm9pZDo6YnV0dG9uU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNocm9taXVtQW5kcm9pZDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5oOgorICAgICAg
ICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQpOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50QnV0dG9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNob3VsZENl
bnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxp
bnV4OjpidXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21p
dW1MaW51eDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1MaW51eCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hYy5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyk6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50R2l2ZW5UaWNrbWFya3MpOgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkU25h
cEJhY2tUb0RyYWdPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bVdpbjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1XaW46OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3NpY1RoZW1lU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkQ2Vu
dGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtV2lu
OjpidXR0b25TaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtV2luLmg6CisgICAgICAgIChTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVFZmw6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lRWZsOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaDoKKyAgICAgICAgKFNjcm9sbGJhclRo
ZW1lRWZsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6
cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6
OnVucmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVH
dGs6OnVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUd0azo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lR3RrOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZUd0azo6dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3Rr
Ojp0aHVtYlJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpzaG91bGRDZW50ZXJPblRo
dW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpidXR0b25TaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjptaW5pbXVtVGh1bWJMZW5ndGgp
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5oOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xs
YmFyVGhlbWVHdGspOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1iKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRvbik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRCdXR0b24pOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVNYWMp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVy
U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp1bnJlZ2lz
dGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzZXRO
ZXdQYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
TWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVNYWM6Omhhc1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
TWFjOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1h
Yzo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVN
YWM6OnRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6bWlu
aW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpz
aG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFj
OjpzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlRW5hYmxlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3Jv
bGxiYXJUaGVtZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2Nr
Ojp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWlu
dFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6
OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2Nr
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6Omhhc0J1dHRvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpoYXNUaHVtYik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAg
ICAoU2Nyb2xsYmFyVGhlbWVNb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9TY3JvbGxiYXJU
aGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlT3B0aW9uU2xpZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lUXQ6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVRdDo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZVF0OjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZVF0Ojp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
UXQ6OnRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnRy
YWNrUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVRdDo6dHJhY2tM
ZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuaDoKKyAgICAg
ICAgKFNjcm9sbGJhclRoZW1lUXQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJU
aGVtZVNhZmFyaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6
aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFz
VGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmJhY2tCdXR0
b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpmb3J3YXJk
QnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6dHJh
Y2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjptaW5pbXVt
VGh1bWJMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnNo
b3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZh
cmk6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6cGFpbnRUaHVtYik6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRo
ZW1lU2FmYXJpLmg6CisgICAgICAgIChTY3JvbGxiYXJUaGVtZVNhZmFyaSk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lV2luOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZVdpbjo6YmFja0J1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVXaW46OmZvcndhcmRCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lV2luOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46
OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVX
aW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lV2luOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lV2luOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpwYWludEdy
aXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VGh1bWIp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xs
YmFyVGhlbWVXaW4pOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzVGh1bWIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV3g6OmJ1dHRvblNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6c3BsaXRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZVd4OjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVXeDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guaDoK
KyAgICAgICAgKFNjcm9sbGJhclRoZW1lV3gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVXeDo6aGFzQnV0dG9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
ci5oOgorICAgICAgICAoV2ViQ29yZTo6dG9SZW5kZXJTY3JvbGxiYXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1pbmltdW1UaHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YmFja0J1dHRvblJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmZvcndhcmRCdXR0b25SZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVj
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xs
YmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFy
VGhlbWU6OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxi
YXJUaGVtZTo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFy
VGhlbWU6OnBhaW50VGh1bWIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJU
aGVtZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnNob3VsZENl
bnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJl
Z2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1l
Ojp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFJlbmRlclNjcm9sbGJhclRoZW1lKToK
KwogMjAxMi0wMi0yMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gTm90aWZ5IGNvbXBvc2l0b3Igb2Ygd2hlZWwgZXZlbnQgcmVnaXN0
cmF0aW9uIHZpYSBTY3JvbGxpbmdDb29yZGluYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDlkZGY5
MTVmNGVhYzAwNGVlZTY4NTgyYTI4MjE3MzM1YmIzY2E1NjIuLjFkMmZjMzc5MjMyNmFjOWU2M2Nj
MTgyYjMzZDczYmY3YzAyNzYxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI5Miw2ICsyOTIsNyBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL1Njcm9sbGJhci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZhMzEzMjdiOWM3NzRkZTEzMzExNTA1ZjA3YTAxYTE2
NjFhMDM0YzguLmYwNjMxMDkwOGI5NWIxMTRjZGRiZmZkNzg0ODAwNzMwMTdjNWE4ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTU2MDAsNiArNTYwMCw3IEBACiAJCUM1RDRBQTdBMTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1l
dHJpY3NNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM1RDRBQTc4MTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNUU5QjY3NzEwNjk3RTEz
MDBDN0JCMUEgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUU5QjY3NjEwNjk3RTEzMDBDN0JCMUEgLyog
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgKi87IH07CiAJCUM1RUJERDg0MTA1RURERUMwMDU2
ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFn
ZUV2ZW50RGlzcGF0Y2hlci5oICovOyB9OworCQlDNkIzMUIyRTE0Rjg0MUZCMDA4OUYyM0YgLyog
U2Nyb2xsYmFyVGhlbWVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM2OTE2MTQ3MTRGNkVCQTcwMDQ2Mzc1QyAvKiBTY3JvbGxiYXJUaGVtZUNs
aWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUM2RDc0QUQ1MDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RDc0QUQzMDlB
QTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAqLzsgfTsKIAkJQzZE
NzRBRTQwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3NEFFMzA5QUEy
OTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLzsgfTsKIAkJQzZG
MDhGQkMxNDMwRkU4RjAwNjg1ODQ5IC8qIE11dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjA4RkI5MTQzMEZFOEYwMDY4NTg0
OSAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi87IH07CkBAIC0xMjU4Myw2ICsxMjU4NCw3IEBACiAJ
CUM1RUJERDgxMTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzVGNzY1QjQxNEUxRDQxNDAwNkM4OTlCIC8q
IFBhc3RlYm9hcmRTdHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
YXN0ZWJvYXJkU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzVGNzY1
QkExNEUxRUNGNDAwNkM4OTlCIC8qIFBsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtUGFzdGVib2FyZE1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY5MTYxNDcxNEY2RUJBNzAwNDYzNzVDIC8q
IFNjcm9sbGJhclRoZW1lQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjcm9sbGJhclRoZW1lQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2
RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RDc0QUUzMDlBQTI5MEEwMDBCMEE1MiAv
KiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzZGMDhGQjkxNDMwRkU4RjAwNjg1ODQ5IC8qIE11dGF0aW9uUmVjb3Jk
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE11dGF0aW9uUmVjb3Jk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5OTIxLDYgKzE5OTIzLDcgQEAK
IAkJCQlCQ0FBOTBDMjBBN0VCQTYwMDA4QjEyMjkgLyogU2Nyb2xsYmFyLmNwcCAqLywKIAkJCQlC
QzdCMkFGODA0NTA4MjQxMDBBODAwMEYgLyogU2Nyb2xsYmFyLmggKi8sCiAJCQkJMEZFNzE0MTUx
NDIxODlGQzAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lLmNwcCAqLywKKwkJCQlDNjkxNjE0NzE0
RjZFQkE3MDA0NjM3NUMgLyogU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCAqLywKIAkJCQlCQzhCODU0
QTBFN0M3RjU2MDBBQjY5ODQgLyogU2Nyb2xsYmFyVGhlbWUuaCAqLywKIAkJCQlCQzE0MDI4ODBF
ODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwICovLAogCQkJCUJD
MTQwMjg5MEU4MzY4MDgwMDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oICovLApA
QCAtMjM2OTEsNiArMjM2OTQsNyBAQAogCQkJCUNBM0JGNjdFMTBEOTlCQUUwMEU2Q0U1MyAvKiBT
Y3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBRTFGQTcxMjkzOURCNzAwNENC
MDI2IC8qIFNjcm9sbEFuaW1hdG9yTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTlCODA4
MjQ1RTU5MDAxRTlBQkMgLyogU2Nyb2xsYmFyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDNkIzMUIy
RTE0Rjg0MUZCMDA4OUYyM0YgLyogU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDOEI4NTRCMEU3QzdGNTYwMEFCNjk4NCAvKiBTY3JvbGxiYXJUaGVtZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMxNDAyOEIwRTgzNjgwODAwMzE5NzE3IC8qIFNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhCODUzRTBFN0M3RjExMDBBQjY5ODQg
LyogU2Nyb2xsYmFyVGhlbWVNYWMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhci5jcHAKaW5kZXggM2I5YzE5NWNmZjU1MzkxNjU1NjIwM2UyZjJjYzRmZTVkOGY5
YTUxZS4uZTM5MjU0YzYxZmIyOWMxMTJlMWU5ZDY4MjBkZThhNjI5ZjRmNDFmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC0xMTIsNiArMTEyLDc5IEBAIFNjcm9sbGJh
cjo6flNjcm9sbGJhcigpCiAgICAgbV90aGVtZS0+dW5yZWdpc3RlclNjcm9sbGJhcih0aGlzKTsK
IH0KIAordm9pZCBTY3JvbGxiYXI6OnNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQor
eworICAgIC8vIEdldCBvdXIgd2luZG93IHJlc2l6ZXIgcmVjdCBhbmQgc2VlIGlmIHdlIG92ZXJs
YXAuICBBZGp1c3QgdG8gYXZvaWQgdGhlIG92ZXJsYXAKKyAgICAvLyBpZiBuZWNlc3NhcnkuCisg
ICAgSW50UmVjdCBhZGp1c3RlZFJlY3QocmVjdCk7CisgICAgYm9vbCBvdmVybGFwc1Jlc2l6ZXIg
PSBmYWxzZTsKKyAgICBTY3JvbGxWaWV3KiB2aWV3ID0gcGFyZW50KCk7CisgICAgaWYgKHZpZXcg
JiYgIXJlY3QuaXNFbXB0eSgpICYmICF2aWV3LT53aW5kb3dSZXNpemVyUmVjdCgpLmlzRW1wdHko
KSkgeworICAgICAgICBJbnRSZWN0IHJlc2l6ZXJSZWN0ID0gdmlldy0+Y29udmVydEZyb21Db250
YWluaW5nV2luZG93KHZpZXctPndpbmRvd1Jlc2l6ZXJSZWN0KCkpOworICAgICAgICBpZiAocmVj
dC5pbnRlcnNlY3RzKHJlc2l6ZXJSZWN0KSkgeworICAgICAgICAgICAgaWYgKG9yaWVudGF0aW9u
KCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgeworICAgICAgICAgICAgICAgIGludCBvdmVybGFw
ID0gcmVjdC5tYXhYKCkgLSByZXNpemVyUmVjdC54KCk7CisgICAgICAgICAgICAgICAgaWYgKG92
ZXJsYXAgPiAwICYmIHJlc2l6ZXJSZWN0Lm1heFgoKSA+PSByZWN0Lm1heFgoKSkgeworICAgICAg
ICAgICAgICAgICAgICBhZGp1c3RlZFJlY3Quc2V0V2lkdGgocmVjdC53aWR0aCgpIC0gb3Zlcmxh
cCk7CisgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBzUmVzaXplciA9IHRydWU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnQgb3Zl
cmxhcCA9IHJlY3QubWF4WSgpIC0gcmVzaXplclJlY3QueSgpOworICAgICAgICAgICAgICAgIGlm
IChvdmVybGFwID4gMCAmJiByZXNpemVyUmVjdC5tYXhZKCkgPj0gcmVjdC5tYXhZKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgYWRqdXN0ZWRSZWN0LnNldEhlaWdodChyZWN0LmhlaWdodCgpIC0g
b3ZlcmxhcCk7CisgICAgICAgICAgICAgICAgICAgIG92ZXJsYXBzUmVzaXplciA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGlm
IChvdmVybGFwc1Jlc2l6ZXIgIT0gbV9vdmVybGFwc1Jlc2l6ZXIpIHsKKyAgICAgICAgbV9vdmVy
bGFwc1Jlc2l6ZXIgPSBvdmVybGFwc1Jlc2l6ZXI7CisgICAgICAgIGlmICh2aWV3KQorICAgICAg
ICAgICAgdmlldy0+YWRqdXN0U2Nyb2xsYmFyc0F2b2lkaW5nUmVzaXplckNvdW50KG1fb3Zlcmxh
cHNSZXNpemVyID8gMSA6IC0xKTsKKyAgICB9CisKKyAgICBXaWRnZXQ6OnNldEZyYW1lUmVjdChh
ZGp1c3RlZFJlY3QpOworfQorCit2b2lkIFNjcm9sbGJhcjo6aW52YWxpZGF0ZVJlY3QoY29uc3Qg
SW50UmVjdCYgcmVjdCkKK3sKKyAgICBpZiAoc3VwcHJlc3NJbnZhbGlkYXRpb24oKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIG1fc2Nyb2xs
YWJsZUFyZWEtPmludmFsaWRhdGVTY3JvbGxiYXIodGhpcywgcmVjdCk7Cit9CisKK1Njcm9sbGJh
ck92ZXJsYXlTdHlsZSBTY3JvbGxiYXI6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEgPyBTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZh
dWx0IDogbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7Cit9CisKK3Zv
aWQgU2Nyb2xsYmFyOjpnZXRUaWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JiB0aWNrbWFya3MpIGNv
bnN0Cit7CisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIG1fc2Nyb2xsYWJsZUFy
ZWEtPmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOworfQorCitib29sIFNjcm9sbGJhcjo6aXNTY3Jv
bGxhYmxlQXJlYUFjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEg
JiYgbV9zY3JvbGxhYmxlQXJlYS0+aXNBY3RpdmUoKTsKK30KKworYm9vbCBTY3JvbGxiYXI6Omlz
U2Nyb2xsVmlld1Njcm9sbGJhcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhcmVudCgpICYmIHBh
cmVudCgpLT5pc0ZyYW1lVmlldygpICYmIHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHBhcmVudCgp
KS0+aXNTY3JvbGxWaWV3U2Nyb2xsYmFyKHRoaXMpOworfQorCit2b2lkIFNjcm9sbGJhcjo6c2V0
RW5hYmxlZChib29sIGUpCit7IAorICAgIGlmIChtX2VuYWJsZWQgPT0gZSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fZW5hYmxlZCA9IGU7CisgICAgdGhlbWUoKS0+dXBkYXRlRW5hYmxlZFN0YXRl
KHRoaXMpOworICAgIGludmFsaWRhdGUoKTsKK30KKwogdm9pZCBTY3JvbGxiYXI6Om9mZnNldERp
ZENoYW5nZSgpCiB7CiAgICAgQVNTRVJUKG1fc2Nyb2xsYWJsZUFyZWEpOwpAQCAtNDMyLDQwICs1
MDUsNiBAQCBib29sIFNjcm9sbGJhcjo6bW91c2VEb3duKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZ0KQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNjcm9sbGJhcjo6c2V0RnJhbWVS
ZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgLy8gR2V0IG91ciB3aW5kb3cgcmVzaXpl
ciByZWN0IGFuZCBzZWUgaWYgd2Ugb3ZlcmxhcC4gIEFkanVzdCB0byBhdm9pZCB0aGUgb3Zlcmxh
cAotICAgIC8vIGlmIG5lY2Vzc2FyeS4KLSAgICBJbnRSZWN0IGFkanVzdGVkUmVjdChyZWN0KTsK
LSAgICBib29sIG92ZXJsYXBzUmVzaXplciA9IGZhbHNlOwotICAgIFNjcm9sbFZpZXcqIHZpZXcg
PSBwYXJlbnQoKTsKLSAgICBpZiAodmlldyAmJiAhcmVjdC5pc0VtcHR5KCkgJiYgIXZpZXctPndp
bmRvd1Jlc2l6ZXJSZWN0KCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgIEludFJlY3QgcmVzaXplclJl
Y3QgPSB2aWV3LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3codmlldy0+d2luZG93UmVzaXpl
clJlY3QoKSk7Ci0gICAgICAgIGlmIChyZWN0LmludGVyc2VjdHMocmVzaXplclJlY3QpKSB7Ci0g
ICAgICAgICAgICBpZiAob3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7Ci0g
ICAgICAgICAgICAgICAgaW50IG92ZXJsYXAgPSByZWN0Lm1heFgoKSAtIHJlc2l6ZXJSZWN0Lngo
KTsKLSAgICAgICAgICAgICAgICBpZiAob3ZlcmxhcCA+IDAgJiYgcmVzaXplclJlY3QubWF4WCgp
ID49IHJlY3QubWF4WCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkanVzdGVkUmVjdC5zZXRX
aWR0aChyZWN0LndpZHRoKCkgLSBvdmVybGFwKTsKLSAgICAgICAgICAgICAgICAgICAgb3Zlcmxh
cHNSZXNpemVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgIGludCBvdmVybGFwID0gcmVjdC5tYXhZKCkgLSByZXNpemVyUmVj
dC55KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG92ZXJsYXAgPiAwICYmIHJlc2l6ZXJSZWN0Lm1h
eFkoKSA+PSByZWN0Lm1heFkoKSkgewotICAgICAgICAgICAgICAgICAgICBhZGp1c3RlZFJlY3Qu
c2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLSBvdmVybGFwKTsKLSAgICAgICAgICAgICAgICAgICAg
b3ZlcmxhcHNSZXNpemVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKG92ZXJsYXBzUmVzaXplciAhPSBtX292ZXJsYXBz
UmVzaXplcikgewotICAgICAgICBtX292ZXJsYXBzUmVzaXplciA9IG92ZXJsYXBzUmVzaXplcjsK
LSAgICAgICAgaWYgKHZpZXcpCi0gICAgICAgICAgICB2aWV3LT5hZGp1c3RTY3JvbGxiYXJzQXZv
aWRpbmdSZXNpemVyQ291bnQobV9vdmVybGFwc1Jlc2l6ZXIgPyAxIDogLTEpOwotICAgIH0KLQot
ICAgIFdpZGdldDo6c2V0RnJhbWVSZWN0KGFkanVzdGVkUmVjdCk7Ci19Ci0KIHZvaWQgU2Nyb2xs
YmFyOjpzZXRQYXJlbnQoU2Nyb2xsVmlldyogcGFyZW50VmlldykKIHsKICAgICBpZiAoIXBhcmVu
dFZpZXcgJiYgbV9vdmVybGFwc1Jlc2l6ZXIgJiYgcGFyZW50KCkpCkBAIC00NzMsMTUgKzUxMiw2
IEBAIHZvaWQgU2Nyb2xsYmFyOjpzZXRQYXJlbnQoU2Nyb2xsVmlldyogcGFyZW50VmlldykKICAg
ICBXaWRnZXQ6OnNldFBhcmVudChwYXJlbnRWaWV3KTsKIH0KIAotdm9pZCBTY3JvbGxiYXI6OnNl
dEVuYWJsZWQoYm9vbCBlKQoteyAKLSAgICBpZiAobV9lbmFibGVkID09IGUpCi0gICAgICAgIHJl
dHVybjsKLSAgICBtX2VuYWJsZWQgPSBlOwotICAgIHRoZW1lKCktPnVwZGF0ZUVuYWJsZWRTdGF0
ZSh0aGlzKTsKLSAgICBpbnZhbGlkYXRlKCk7Ci19Ci0KIGJvb2wgU2Nyb2xsYmFyOjppc092ZXJs
YXlTY3JvbGxiYXIoKSBjb25zdAogewogICAgIHJldHVybiBtX3RoZW1lLT51c2VzT3ZlcmxheVNj
cm9sbGJhcnMoKTsKQEAgLTUxMSwxNSArNTQxLDYgQEAgQVhPYmplY3RDYWNoZSogU2Nyb2xsYmFy
OjpheE9iamVjdENhY2hlKCkgY29uc3QKICAgICByZXR1cm4gZG9jdW1lbnQtPmF4T2JqZWN0Q2Fj
aGUoKTsKIH0KIAotdm9pZCBTY3JvbGxiYXI6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3Qm
IHJlY3QpCi17Ci0gICAgaWYgKHN1cHByZXNzSW52YWxpZGF0aW9uKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmIChtX3Njcm9sbGFibGVBcmVhKQotICAgICAgICBtX3Njcm9sbGFibGVBcmVh
LT5pbnZhbGlkYXRlU2Nyb2xsYmFyKHRoaXMsIHJlY3QpOwotfQotCiBJbnRSZWN0IFNjcm9sbGJh
cjo6Y29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYgbG9jYWxSZWN0KSBjb25z
dAogewogICAgIGlmIChtX3Njcm9sbGFibGVBcmVhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXIuaAppbmRleCAzOWFjMjU0NjVkMTQ1NWE1OTkyY2QyNWMyMjI4ZGQyYjY1MzRhNjNkLi45OWZk
ODQ2MWI3YWE3OTk5OTVhMWYzMjliZDMwMGU2NWY2M2YwYzg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXIuaApAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBTY3JvbGxiYXJfaAogI2Rl
ZmluZSBTY3JvbGxiYXJfaAogCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCIKICNp
bmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV2lk
Z2V0LmgiCkBAIC00MCwxMyArNDEsNjAgQEAgY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwogY2xh
c3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBTY3JvbGxiYXJUaGVtZTsKIAotY2xhc3MgU2Nyb2xs
YmFyIDogcHVibGljIFdpZGdldCB7CitjbGFzcyBTY3JvbGxiYXIgOiBwdWJsaWMgV2lkZ2V0LAor
ICAgICAgICAgICAgICAgICAgcHVibGljIFNjcm9sbGJhclRoZW1lQ2xpZW50IHsKKwogcHVibGlj
OgogICAgIC8vIE11c3QgYmUgaW1wbGVtZW50ZWQgYnkgcGxhdGZvcm1zIHRoYXQgY2FuJ3Qgc2lt
cGx5IHVzZSB0aGUgU2Nyb2xsYmFyIGJhc2UgY2xhc3MuICBSaWdodCBub3cgdGhlIG9ubHkgcGxh
dGZvcm0gdGhhdCBpcyBub3QgdXNpbmcgdGhlIGJhc2UgY2xhc3MgaXMgR1RLLgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gY3JlYXRlTmF0aXZlU2Nyb2xsYmFyKFNjcm9sbGFibGVB
cmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sIFNjcm9sbGJhckNvbnRyb2xT
aXplIHNpemUpOwogCiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyKCk7CiAKKyAgICAvLyBTY3JvbGxi
YXJUaGVtZUNsaWVudCBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIGludCB4KCkgY29uc3Qg
eyByZXR1cm4gV2lkZ2V0Ojp4KCk7IH0KKyAgICB2aXJ0dWFsIGludCB5KCkgY29uc3QgeyByZXR1
cm4gV2lkZ2V0Ojp5KCk7IH0KKyAgICB2aXJ0dWFsIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJu
IFdpZGdldDo6d2lkdGgoKTsgfQorICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIFdpZGdldDo6aGVpZ2h0KCk7IH0KKyAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIFdpZGdldDo6c2l6ZSgpOyB9CisgICAgdmlydHVhbCBJbnRQb2ludCBsb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6bG9jYXRpb24oKTsgfQorCisgICAgdmlydHVhbCBT
Y3JvbGxWaWV3KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OnBhcmVudCgpOyB9Cisg
ICAgdmlydHVhbCBTY3JvbGxWaWV3KiByb290KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0Ojpyb290
KCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpOwor
ICAgIHZpcnR1YWwgSW50UmVjdCBmcmFtZVJlY3QoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OmZy
YW1lUmVjdCgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpIHsgV2lkZ2V0Ojpp
bnZhbGlkYXRlKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50
UmVjdCYpOworCisgICAgdmlydHVhbCBTY3JvbGxiYXJPdmVybGF5U3R5bGUgc2Nyb2xsYmFyT3Zl
cmxheVN0eWxlKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGdldFRpY2ttYXJrcyhWZWN0b3I8
SW50UmVjdD4mKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxhYmxlQXJlYUFjdGl2
ZSgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbFZpZXdTY3JvbGxiYXIoKSBjb25z
dDsKKworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nV2luZG93KGNv
bnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkgeyByZXR1cm4gV2lkZ2V0Ojpjb252ZXJ0RnJvbUNv
bnRhaW5pbmdXaW5kb3cod2luZG93UG9pbnQpOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0
b21TY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgU2Nyb2xs
YmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9u
OyB9CisKKyAgICB2aXJ0dWFsIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGxyb3VuZGYobV9j
dXJyZW50UG9zKTsgfQorICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFBvcygpIGNvbnN0IHsgcmV0
dXJuIG1fY3VycmVudFBvczsgfQorICAgIHZpcnR1YWwgaW50IHZpc2libGVTaXplKCkgY29uc3Qg
eyByZXR1cm4gbV92aXNpYmxlU2l6ZTsgfQorICAgIHZpcnR1YWwgaW50IHRvdGFsU2l6ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdG90YWxTaXplOyB9CisgICAgdmlydHVhbCBpbnQgbWF4aW11bSgpIGNv
bnN0IHsgcmV0dXJuIG1fdG90YWxTaXplIC0gbV92aXNpYmxlU2l6ZTsgfQorICAgIHZpcnR1YWwg
U2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRy
b2xTaXplOyB9CisKKyAgICB2aXJ0dWFsIGludCBsaW5lU3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1f
bGluZVN0ZXA7IH0KKyAgICB2aXJ0dWFsIGludCBwYWdlU3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZVN0ZXA7IH0KKworICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBwcmVzc2VkUGFydCgpIGNv
bnN0IHsgcmV0dXJuIG1fcHJlc3NlZFBhcnQ7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQg
aG92ZXJlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX2hvdmVyZWRQYXJ0OyB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgc3R5bGVDaGFuZ2VkKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVk
KGJvb2wgZSk7CisKICAgICAvLyBDYWxsZWQgYnkgdGhlIFNjcm9sbGFibGVBcmVhIHdoZW4gdGhl
IHNjcm9sbCBvZmZzZXQgY2hhbmdlcy4KICAgICB2b2lkIG9mZnNldERpZENoYW5nZSgpOwogCkBA
IC01NywzNCArMTA1LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tU2Nyb2xs
YWJsZUFyZWEoKSB7IG1fc2Nyb2xsYWJsZUFyZWEgPSAwOyB9CiAgICAgU2Nyb2xsYWJsZUFyZWEq
IHNjcm9sbGFibGVBcmVhKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYTsgfQogCi0g
ICAgdmlydHVhbCBib29sIGlzQ3VzdG9tU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KLSAgICBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fb3JpZW50YXRpb247IH0KLQotICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGxyb3Vu
ZGYobV9jdXJyZW50UG9zKTsgfQotICAgIGZsb2F0IGN1cnJlbnRQb3MoKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnRQb3M7IH0KICAgICBpbnQgcHJlc3NlZFBvcygpIGNvbnN0IHsgcmV0dXJuIG1f
cHJlc3NlZFBvczsgfQotICAgIGludCB2aXNpYmxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlz
aWJsZVNpemU7IH0KLSAgICBpbnQgdG90YWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNp
emU7IH0KLSAgICBpbnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplIC0gbV92
aXNpYmxlU2l6ZTsgfSAgICAgICAgCi0gICAgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNp
emUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xTaXplOyB9CiAKLSAgICBpbnQgbGluZVN0ZXAo
KSBjb25zdCB7IHJldHVybiBtX2xpbmVTdGVwOyB9Ci0gICAgaW50IHBhZ2VTdGVwKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlU3RlcDsgfQogICAgIGZsb2F0IHBpeGVsU3RlcCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGl4ZWxTdGVwOyB9CiAKLSAgICBTY3JvbGxiYXJQYXJ0IHByZXNzZWRQYXJ0KCkgY29u
c3QgeyByZXR1cm4gbV9wcmVzc2VkUGFydDsgfQotICAgIFNjcm9sbGJhclBhcnQgaG92ZXJlZFBh
cnQoKSBjb25zdCB7IHJldHVybiBtX2hvdmVyZWRQYXJ0OyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dEhvdmVyZWRQYXJ0KFNjcm9sbGJhclBhcnQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzc2Vk
UGFydChTY3JvbGxiYXJQYXJ0KTsKIAogICAgIHZvaWQgc2V0U3RlcHMoaW50IGxpbmVTdGVwLCBp
bnQgcGFnZVN0ZXAsIGludCBwaXhlbHNQZXJTdGVwID0gMSk7CiAgICAgdm9pZCBzZXRQcm9wb3J0
aW9uKGludCB2aXNpYmxlU2l6ZSwgaW50IHRvdGFsU2l6ZSk7CiAgICAgdm9pZCBzZXRQcmVzc2Vk
UG9zKGludCBwKSB7IG1fcHJlc3NlZFBvcyA9IHA7IH0KLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CiAKLSAg
ICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0RW5hYmxlZChib29sIGUpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKIAogICAgIHZpcnR1YWwgYm9v
bCBpc092ZXJsYXlTY3JvbGxiYXIoKSBjb25zdDsKICAgICBib29sIHNob3VsZFBhcnRpY2lwYXRl
SW5IaXRUZXN0aW5nKCk7CkBAIC05Nyw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBtb3Vz
ZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIHZvaWQgbW91c2VFbnRlcmVk
KCk7CiAgICAgYm9vbCBtb3VzZUV4aXRlZCgpOwotICAgIAorCiAgICAgLy8gVXNlZCBieSBzb21l
IHBsYXRmb3JtIHNjcm9sbGJhcnMgdG8ga25vdyB3aGVuIHRoZXkndmUgYmVlbiByZWxlYXNlZCBm
cm9tIGNhcHR1cmUuCiAgICAgYm9vbCBtb3VzZVVwKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
OwogCkBAIC0xMDYsMTggKzEzOCwxMyBAQCBwdWJsaWM6CiAgICAgU2Nyb2xsYmFyVGhlbWUqIHRo
ZW1lKCkgY29uc3QgeyByZXR1cm4gbV90aGVtZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFBh
cmVudChTY3JvbGxWaWV3Kik7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJ
bnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVj
dCYpOwotICAgIAogICAgIGJvb2wgc3VwcHJlc3NJbnZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3N1cHByZXNzSW52YWxpZGF0aW9uOyB9CiAgICAgdm9pZCBzZXRTdXBwcmVzc0ludmFsaWRh
dGlvbihib29sIHMpIHsgbV9zdXBwcmVzc0ludmFsaWRhdGlvbiA9IHM7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBzdHlsZUNoYW5nZWQoKSB7IH0KLQogICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0
VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAgICAgdmlydHVhbCBJbnRS
ZWN0IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAg
IAorCiAgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJ
bnRQb2ludCYpIGNvbnN0OwogICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWlu
aW5nVmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCkBAIC0xNjAsNyArMTg3LDcgQEAgcHJv
dGVjdGVkOgogCiAgICAgVGltZXI8U2Nyb2xsYmFyPiBtX3Njcm9sbFRpbWVyOwogICAgIGJvb2wg
bV9vdmVybGFwc1Jlc2l6ZXI7Ci0gICAgCisKICAgICBib29sIG1fc3VwcHJlc3NJbnZhbGlkYXRp
b247CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaApp
bmRleCAyYTgzZDUzODVlYWJiY2FjZmY4YmU1NjM0OWI0ZDE5ZTMyYmI2ZmNjLi4xN2VmNjM4ZTYw
M2I0MjE2NTJhNGQwYTliMTFmOTA3NDdkYTc3MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lLmgKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwotY2xhc3MgU2Nyb2xsYmFyOworY2xhc3MgU2Ny
b2xsYmFyVGhlbWVDbGllbnQ7CiBjbGFzcyBTY3JvbGxWaWV3OwogCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCkBAIC00NiwxMCArNDYs
MTAgQEAgcHVibGljOgogICAgIFNjcm9sbGJhclRoZW1lKCkgeyB9CiAgICAgdmlydHVhbCB+U2Ny
b2xsYmFyVGhlbWUoKSB7fTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVkU3RhdGUo
U2Nyb2xsYmFyKikgeyB9OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVkU3RhdGUoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqKSB7IH07CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xs
YmFyKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgLypkYW1hZ2VSZWN0Ki8pIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xs
YmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gTm9QYXJ0OyB9CisgICAg
dmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgLypkYW1hZ2VSZWN0Ki8pIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
dmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBOb1BhcnQ7IH0KICAgICAKICAgICB2aXJ0
dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1bGFy
U2Nyb2xsYmFyKSB7IHJldHVybiAwOyB9CiAKQEAgLTU3LDEzICs1NywxMyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJPdmVybGF5
U3R5bGUoU2Nyb2xsYmFyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbGJhck92
ZXJsYXlTdHlsZShTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHRoZW1lQ2hhbmdlZCgpIHt9CiAgICAgCiAgICAgdmlydHVhbCBib29sIGludmFsaWRhdGVPbk1v
dXNlRW50ZXJFeGl0KCkgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgaW52YWxpZGF0ZVBh
cnRzKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJDb250cm9sUGFydE1hc2sgbWFzaykK
KyAgICB2b2lkIGludmFsaWRhdGVQYXJ0cyhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBTY3JvbGxiYXJDb250cm9sUGFydE1hc2sgbWFzaykKICAgICB7CiAgICAgICAgIGlmIChtYXNr
ICYgQmFja0J1dHRvblN0YXJ0UGFydCkKICAgICAgICAgICAgIGludmFsaWRhdGVQYXJ0KHNjcm9s
bGJhciwgQmFja0J1dHRvblN0YXJ0UGFydCk7CkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIGludmFsaWRhdGVQYXJ0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRvbkVuZFBhcnQp
OwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXIqLCBT
Y3JvbGxiYXJQYXJ0KSB7fQorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxi
YXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIHt9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4
dCwgY29ybmVyUmVjdCk7IH0KICAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3Ju
ZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7
IGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURl
dmljZVJHQik7IH0KQEAgLTkzLDIxICs5MywyMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldFVwQ29udGVudFNoYWRvd0xheWVyKEdyYXBoaWNzTGF5ZXIqKSB7IH0KICNlbmRpZgogCi0g
ICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJhZ0RvY3Vt
ZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jikg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9sbGJh
ciopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0aHVtYiByZWxhdGl2ZSB0
byB0aGUgdHJhY2suCi0gICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyKikgeyBy
ZXR1cm4gMDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0aHVtYiBhbG9uZyB0aGUgYXhpcyBvZiB0
aGUgc2Nyb2xsYmFyLgotICAgIHZpcnR1YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKikg
eyByZXR1cm4gMDsgfSAvLyBUaGUgcG9zaXRpb24gb2YgdGhlIHRyYWNrIHJlbGF0aXZlIHRvIHRo
ZSBzY3JvbGxiYXIuCi0gICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFyKikgeyBy
ZXR1cm4gMDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0cmFjayBhbG9uZyB0aGUgYXhpcyBvZiB0
aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFs
c2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNs
aWVudCopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0aHVtYiByZWxhdGl2
ZSB0byB0aGUgdHJhY2suCisgICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqKSB7IHJldHVybiAwOyB9IC8vIFRoZSBsZW5ndGggb2YgdGhlIHRodW1iIGFsb25n
IHRoZSBheGlzIG9mIHRoZSBzY3JvbGxiYXIuCisgICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlv
bihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9m
IHRoZSB0cmFjayByZWxhdGl2ZSB0byB0aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1YWwgaW50IHRy
YWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4gMDsgfSAvLyBUaGUgbGVu
Z3RoIG9mIHRoZSB0cmFjayBhbG9uZyB0aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLgogCiAgICAg
dmlydHVhbCBpbnQgbWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpIHsgcmV0dXJuIHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50Pjo6bWF4KCk7IH0KIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRv
c2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMjU7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBh
dXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMDU7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKSB7fQotICAgIHZpcnR1YWwgdm9pZCB1bnJl
Z2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciopIHt9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVy
U2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikge30KKyAgICB2aXJ0dWFsIHZvaWQgdW5y
ZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHt9CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNNb2NrVGhlbWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Y2Rh
NDJmNTA1MmUzNGU0YmQ2ZDFhYTdkODM2ZWMzNjc1OTRlZjI4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaApAQCAtMCwwICsx
LDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JvbGxiYXJUaGVtZUNsaWVudF9oCisjZGVmaW5lIFNj
cm9sbGJhclRoZW1lQ2xpZW50X2gKKworI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAi
SW50UmVjdC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJTY3JvbGxUeXBlcy5o
IgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbFZpZXc7CisKK2NsYXNzIFNjcm9s
bGJhclRoZW1lQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZUNs
aWVudCgpIHsgfQorCisgICAgdmlydHVhbCBpbnQgeCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGludCB5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHdpZHRoKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFNpemUg
c2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFBvaW50IGxvY2F0aW9uKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiBwYXJlbnQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBTY3JvbGxWaWV3KiByb290KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBm
cmFtZVJlY3QoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYpID0gMDsK
KworICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHNjcm9sbGJhck92ZXJsYXlTdHls
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3RvcjxJbnRS
ZWN0PiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxhYmxlQXJlYUFjdGl2
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxWaWV3U2Nyb2xsYmFyKCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdX
aW5kb3coY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSA9IDA7CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNDdXN0b21TY3JvbGxiYXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTY3JvbGxiYXJP
cmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgaW50IHZh
bHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFBvcygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGludCB0b3RhbFNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgbWF4aW11bSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCBpbnQgbGluZVN0ZXAoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBpbnQgcGFnZVN0ZXAoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFNjcm9sbGJh
clBhcnQgcHJlc3NlZFBhcnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0
IGhvdmVyZWRQYXJ0KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHN0eWxlQ2hhbmdl
ZCgpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFNjb2xsYmFyVGhlbWVDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCmluZGV4IDYyZmQ1
ZTVkMmM1MGVmOWIzNWI0MTc1NGQwOWJiYjBlMWU2YmUzOGUuLjlkODMzNzQyZjkyZWViZDcwZTBh
Y2MxNmVlMzc4NGIzYzIzMTU3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKQEAgLTMzLDE1ICszMywxNCBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybU1vdXNlRXZlbnQuaCIKLSNpbmNsdWRlICJTY3JvbGxiYXIuaCIKLSNpbmNsdWRlICJTY3Jv
bGxhYmxlQXJlYS5oIgorI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1ib29sIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludChTY3JvbGxiYXIqIHNj
cm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QpCitib29sIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsKICAgICAvLyBDcmVhdGUgdGhlIFNjcm9s
bGJhckNvbnRyb2xQYXJ0TWFzayBiYXNlZCBvbiB0aGUgZGFtYWdlUmVjdAogICAgIFNjcm9sbGJh
ckNvbnRyb2xQYXJ0TWFzayBzY3JvbGxNYXNrID0gTm9QYXJ0OwpAQCAtMTE2LDcgKzExNSw3IEBA
IGJvb2wgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFy
LCBHcmFwaGljc0NvbnRleHQqIGdyYXBoCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVNjcm9sbGJh
clBhcnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OmhpdFRlc3QoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorU2Nyb2xsYmFyUGFydCBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6aGl0VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICBTY3JvbGxiYXJQYXJ0IHJl
c3VsdCA9IE5vUGFydDsKICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQpAQCAtMTU1LDcg
KzE1NCw3IEBAIFNjcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OmhpdFRlc3Qo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotdm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNj
cm9sbGJhclBhcnQgcGFydCkKIHsKICAgICBpZiAocGFydCA9PSBOb1BhcnQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpp
bnZhbGlkYXRlUGFydChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydAogICAgIHNj
cm9sbGJhci0+aW52YWxpZGF0ZVJlY3QocmVzdWx0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCwgSW50UmVjdCYgYmVmb3JlVGh1bWJSZWN0LCBJbnRS
ZWN0JiB0aHVtYlJlY3QsIEludFJlY3QmIGFmdGVyVGh1bWJSZWN0KQordm9pZCBTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0LCBJbnRSZWN0JiBiZWZvcmVU
aHVtYlJlY3QsIEludFJlY3QmIHRodW1iUmVjdCwgSW50UmVjdCYgYWZ0ZXJUaHVtYlJlY3QpCiB7
CiAgICAgLy8gVGhpcyBmdW5jdGlvbiB3b24ndCBldmVuIGdldCBjYWxsZWQgdW5sZXNzIHdlJ3Jl
IGJpZyBlbm91Z2ggdG8gaGF2ZSBzb21lIGNvbWJpbmF0aW9uIG9mIHRoZXNlIHRocmVlIHJlY3Rz
IHdoZXJlIGF0IGxlYXN0CiAgICAgLy8gb25lIG9mIHRoZW0gaXMgbm9uLWVtcHR5LgpAQCAtMjE1
LDcgKzIxNCw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnNwbGl0VHJhY2soU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuCiAKIC8vIFJldHVybnMgdGhlIHNp
emUgcmVwcmVzZW50ZWQgYnkgdHJhY2sgdGFraW5nIGludG8gYWNjb3VudCBzY3JvbGxpbmcgcGFz
dAogLy8gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuCi1zdGF0aWMgZmxvYXQgdXNlZFRvdGFsU2l6
ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3N0YXRpYyBmbG9hdCB1c2VkVG90YWxTaXplKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgZmxvYXQgb3ZlcmhhbmdBdFN0YXJ0
ID0gLXNjcm9sbGJhci0+Y3VycmVudFBvcygpOwogICAgIGZsb2F0IG92ZXJoYW5nQXRFbmQgPSBz
Y3JvbGxiYXItPmN1cnJlbnRQb3MoKSArIHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKSAtIHNjcm9s
bGJhci0+dG90YWxTaXplKCk7CkBAIC0yMjMsNyArMjIyLDcgQEAgc3RhdGljIGZsb2F0IHVzZWRU
b3RhbFNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIHNjcm9sbGJhci0+dG90
YWxTaXplKCkgKyBvdmVyaGFuZzsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0
aHVtYlBvc2l0aW9uKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjp0aHVtYlBvc2l0aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7
CiAgICAgaWYgKHNjcm9sbGJhci0+ZW5hYmxlZCgpKSB7CiAgICAgICAgIGZsb2F0IHNpemUgPSB1
c2VkVG90YWxTaXplKHNjcm9sbGJhcikgLSBzY3JvbGxiYXItPnZpc2libGVTaXplKCk7CkBAIC0y
MzYsNyArMjM1LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYlBvc2l0aW9u
KFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiAwOwogfQogCi1pbnQgU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGU6OnRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQogewogICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybiAwOwpAQCAtMjUwLDE4ICsyNDksMTggQEAgaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRl
Ojp0aHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICByZXR1cm4gbGVuZ3RoOwog
fQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6Om1pbmltdW1UaHVtYkxlbmd0aChTY3Jv
bGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6bWluaW11bVRo
dW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJu
IHNjcm9sbGJhclRoaWNrbmVzcyhzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOwogfQogCi1pbnQg
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxi
YXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrUG9zaXRpb24oU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBJbnRSZWN0IGNvbnN0cmFpbmVkVHJhY2tS
ZWN0ID0gY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxiYXIsIHRyYWNrUmVj
dChzY3JvbGxiYXIpKTsKICAgICByZXR1cm4gKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBI
b3Jpem9udGFsU2Nyb2xsYmFyKSA/IGNvbnN0cmFpbmVkVHJhY2tSZWN0LngoKSAtIHNjcm9sbGJh
ci0+eCgpIDogY29uc3RyYWluZWRUcmFja1JlY3QueSgpIC0gc2Nyb2xsYmFyLT55KCk7CiB9CiAK
LWludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tMZW5ndGgoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrTGVuZ3RoKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgSW50UmVjdCBjb25zdHJhaW5lZFRyYWNr
UmVjdCA9IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoc2Nyb2xsYmFyLCB0cmFja1Jl
Y3Qoc2Nyb2xsYmFyKSk7CiAgICAgcmV0dXJuIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0g
SG9yaXpvbnRhbFNjcm9sbGJhcikgPyBjb25zdHJhaW5lZFRyYWNrUmVjdC53aWR0aCgpIDogY29u
c3RyYWluZWRUcmFja1JlY3QuaGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaAppbmRleCAxMWIzYmQ0NzAwMTg3ZmYxODJiMDQ1
YjQ1MmNkYzI0ZGEzM2U3NTkwLi44ZWRkNGJiYWM5ODA0MGQwM2ZjNGIzMGVlYjIxYWE5OTVlM2Qy
ZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29t
cG9zaXRlLmgKQEAgLTMyLDQwICszMiw0MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlIDogcHVibGljIFNjcm9sbGJhclRoZW1lIHsKIHB1Ymxp
YzoKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFp
bnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRhbWFnZVJlY3QpOwogCi0gICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRl
c3QoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBT
Y3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxi
YXIqLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0KTsKIAotICAgIHZpcnR1YWwgaW50IHRo
dW1iUG9zaXRpb24oU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Ny
b2xsYmFyKik7Ci0gICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3JvbGxiYXIqKTsKLSAg
ICB2aXJ0dWFsIGludCB0cmFja0xlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCB0
aHVtYlBvc2l0aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdGh1
bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCB0cmFja1Bv
c2l0aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdHJhY2tMZW5n
dGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9s
bENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29y
bmVyUmVjdCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3
KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJl
YSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRp
cnR5UmVjdCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3Jv
bGxiYXIqKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSA9IDA7CiAK
LSAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFy
UGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSA9IDA7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZv
cndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSkgPSAwOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwg
Ym9vbCBwYWludGluZyA9IGZhbHNlKSA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0
b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGlu
ZyA9IGZhbHNlKSA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNl
KSA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNwbGl0
VHJhY2soU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYgdHJhY2ssIEludFJlY3QmIHN0YXJ0VHJh
Y2ssIEludFJlY3QmIHRodW1iLCBJbnRSZWN0JiBlbmRUcmFjayk7CisgICAgdmlydHVhbCB2b2lk
IHNwbGl0VHJhY2soU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiB0cmFjaywg
SW50UmVjdCYgc3RhcnRUcmFjaywgSW50UmVjdCYgdGh1bWIsIEludFJlY3QmIGVuZFRyYWNrKTsK
ICAgICAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7Cisg
ICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhciopIHt9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3Jv
dW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSB7fQotICAg
IHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIHt9Ci0gICAgdmlydHVhbCB2b2lkIHBh
aW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBT
Y3JvbGxiYXJQYXJ0KSB7fQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSB7fQotICAgIHZpcnR1YWwgdm9pZCBw
YWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0
Jikge30KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNz
Q29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50Kikge30KKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBJbnRSZWN0Jikge30KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNj
cm9sbGJhclBhcnQpIHt9CisgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBh
cnQpIHt9CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jikge30KKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBj
b25zdCBJbnRSZWN0Jikge30KIAotICAgIHZpcnR1YWwgSW50UmVjdCBjb25zdHJhaW5UcmFja1Jl
Y3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmIHJlY3QpIHsgcmV0dXJu
IHJlY3Q7IH0KKyAgICB2aXJ0dWFsIEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1Bp
ZWNlcyhTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmIHJlY3QpIHsgcmV0dXJu
IHJlY3Q7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAKaW5kZXggZjhjYjI4MTU0ODYx
ZTAxZGE3MTEyNDkyMGM2MGQwNmEzN2U5YTE4My4uNjgyZDgyZDViMzM3OTE4YjI1ZDA5OGJhNzcx
NzM0ZTc5MTUwNWU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAKQEAgLTM5LDE0ICszOSwxNCBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6
aGFzVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21p
dW06Omhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgLy8g
VGhpcyBtZXRob2QgaXMganVzdCBjYWxsZWQgYXMgYSBwYWludC10aW1lIG9wdGltaXphdGlvbiB0
byBzZWUgaWYKICAgICAvLyBwYWludGluZyB0aGUgdGh1bWIgY2FuIGJlIHNraXBwZWQuICBXZSBk
b24ndCBoYXZlIHRvIGJlIGV4YWN0IGhlcmUuCiAgICAgcmV0dXJuIHRodW1iTGVuZ3RoKHNjcm9s
bGJhcikgPiAwOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OmJhY2tCdXR0
b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJ
bnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICAv
LyBXaW5kb3dzIGFuZCBMaW51eCBqdXN0IGhhdmUgc2luZ2xlIGFycm93cy4KICAgICBpZiAocGFy
dCA9PSBCYWNrQnV0dG9uRW5kUGFydCkKQEAgLTU2LDcgKzU2LDcgQEAgSW50UmVjdCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Ny
b2xsYmFyUGEKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55
KCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNj
cm9sbGJhclBhcnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6
Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xs
YmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIC8vIFdpbmRvd3MgYW5kIExpbnV4IGp1c3QgaGF2
ZSBzaW5nbGUgYXJyb3dzLgogICAgIGlmIChwYXJ0ID09IEZvcndhcmRCdXR0b25TdGFydFBhcnQp
CkBAIC03NCw3ICs3NCw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6Zm9yd2Fy
ZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhCiAgICAgcmV0dXJuIElu
dFJlY3QoeCwgeSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJv
b2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnRyYWNrUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sKQogewogICAgIEludFNpemUgYnMgPSBidXR0b25T
aXplKHNjcm9sbGJhcik7CiAgICAgLy8gVGhlIGJ1dHRvbnMgYXQgdGhlIHRvcCBhbmQgYm90dG9t
IG9mIHRoZSBzY3JvbGxiYXIgYXJlIHNxdWFyZSwgc28gdGhlCkBAIC05MiwxNCArOTIsMTQgQEAg
SW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIGJvb2wpCiAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJh
ci0+eSgpICsgYnMuaGVpZ2h0KCksIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIDIg
KiBicy5oZWlnaHQoKSk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRU
cmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6
cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIEp1
c3QgYXNzdW1lIGEgZm9yd2FyZCB0cmFjayBwYXJ0LiAgV2Ugb25seSBwYWludCB0aGUgdHJhY2sg
YXMgYSBzaW5nbGUgcGllY2Ugd2hlbiB0aGVyZSBpcyBubyB0aHVtYi4KICAgICBpZiAoIWhhc1Ro
dW1iKHNjcm9sbGJhcikpCiAgICAgICAgIHBhaW50VHJhY2tQaWVjZShjb250ZXh0LCBzY3JvbGxi
YXIsIHJlY3QsIEZvcndhcmRUcmFja1BhcnQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW06OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW06OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAo
c2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpICE9IFZlcnRpY2FsU2Nyb2xsYmFyKQogICAgICAgICBy
ZXR1cm47CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpw
YWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhcioKIAogICAg
IC8vIEdldCB0aGUgdGlja21hcmtzIGZvciB0aGUgZnJhbWV2aWV3LgogICAgIFZlY3RvcjxJbnRS
ZWN0PiB0aWNrbWFya3M7Ci0gICAgc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5nZXRUaWNr
bWFya3ModGlja21hcmtzKTsKKyAgICBzY3JvbGxiYXItPmdldFRpY2ttYXJrcyh0aWNrbWFya3Mp
OwogICAgIGlmICghdGlja21hcmtzLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtLmgKaW5kZXggMTE3ODEyNTY5ZjY5ZjIwMDM3MWJhYzBmOWRhODdhN2MzMmRlNGZhNS4u
Y2Y2NzFkZDk4NGMwNzkwOTk1YzY3ZDdkMGYxOGM1YjRhNmY2Y2ZkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW0uaApAQCAtNDEsMTcgKzQxLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBXaW5k
b3dzIGFuZCBMaW51eC4KICAgICBjbGFzcyBTY3JvbGxiYXJUaGVtZUNocm9taXVtIDogcHVibGlj
IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlIHsKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1
YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAg
dmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOworICAgICAgICB2aXJ0dWFsIGJvb2wg
aGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIHRydWU7IH0KKyAgICAg
ICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICAg
ICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBh
cnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3
YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0g
ZmFsc2UpOwotICAgICAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJv
b2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9u
UmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSk7CisgICAgICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7
CisgICAgICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRy
YWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0
Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCos
IGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwog
Ci0gICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciopID0gMDsKKyAg
ICAgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSA9
IDA7CiAgICAgfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bUFuZHJvaWQuY3BwCmluZGV4IDFkYmVmYTY0OWMwODk3MmViMWMyYjM3Yjc0NzcxYjBkNjFi
ZWE1YWQuLmUxZTU1YTFmYzEzZDc5YzBmOWU4ZjQ3MzBiZTg5NzgwOTRjMWY2OTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW1BbmRyb2lkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgaW50IFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29u
dHJvbFNpemUgY29udHIKICAgICByZXR1cm4gc2Nyb2xsYmFyVGhpY2tuZXNzVmFsdWU7CiB9CiAK
LXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50U2Nyb2xsYmFyQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9p
ZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5k
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
cikKIHsKICAgICAvLyBQYWludCBibGFjayBiYWNrZ3JvdW5kIGluIER1bXBSZW5kZXJUcmVlLCBv
dGhlcndpc2UgdGhlIHBpeGVscyBpbiB0aGUgc2Nyb2xsYmFyIGFyZWEgZGVwZW5kCiAgICAgLy8g
b24gdGhlaXIgcHJldmlvdXMgc3RhdGUsIHdoaWNoIG1ha2VzIHRoZSBkdW1wZWQgcmVzdWx0IHVu
ZGV0ZXJtaW5lZC4KQEAgLTY1LDEyICs2NSwxMiBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1BbmRyb2lkOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjbwog
ICAgICAgICBjb250ZXh0LT5maWxsUmVjdChzY3JvbGxiYXItPmZyYW1lUmVjdCgpLCBDb2xvcjo6
YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1BbmRyb2lkOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6
c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgZXZ0KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1JbnRTaXplIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpidXR0b25TaXplKFNjcm9sbGJhciogc2Nyb2xsYmFy
KQorSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YnV0dG9uU2l6ZShTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVu
dGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpCiAgICAgICAgIHJldHVybiBJbnRTaXplKHNj
cm9sbGJhclRoaWNrbmVzc1ZhbHVlLCBidXR0b25MZW5ndGgpOwpAQCAtNzgsNyArNzgsNyBAQCBJ
bnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpidXR0b25TaXplKFNjcm9sbGJh
ciogc2Nyb2xsYmFyKQogICAgIHJldHVybiBJbnRTaXplKGJ1dHRvbkxlbmd0aCwgc2Nyb2xsYmFy
VGhpY2tuZXNzVmFsdWUpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6
Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtQW5kcm9pZDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIDIgKiBzY3JvbGxiYXJUaGlja25lc3Moc2Ny
b2xsYmFyLT5jb250cm9sU2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5o
CmluZGV4IGYwN2M5MDE2Nzg2Y2IyNGY4OGRmYjk0YWU0ZmMyMTZmZTZlNzBiZmMuLmYzZGI4MGU1
MmZiZjUwYzFkZjY4YTk0MGVhOWQ0NzNmMmRiZjI4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUFuZHJvaWQuaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBz
Y3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUpOwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3Jv
bGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICB2aXJ0dWFsIEludFNpemUg
YnV0dG9uU2l6ZShTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5n
dGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3Vu
ZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1MaW51eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxi
YXJUaGVtZUNocm9taXVtTGludXguY3BwCmluZGV4IGVjNjg0MDdlOWQ4YzMyZTMwZDMxMGQyZTUw
NThjMmRhN2RiZGVjYzYuLjZiNGRhZmMzNzNmMTBkMGFhMmQ2ZTk2NjJhYmU2M2RkNWRiNjVlN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW1MaW51eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcApAQCAtNTAsNyArNTAsNyBAQCBpbnQg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFy
Q29udHJvbFNpemUgY29udHJvbAogICAgIHJldHVybiBzY3JvbGxiYXJTaXplLndpZHRoKCk7CiB9
CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRyYWNrUGllY2UoR3Jh
cGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJl
Y3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1M
aW51eDo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFy
dFR5cGUpCiB7CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGUgPSBz
Y3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0gcGFydFR5cGUgPyBQbGF0Zm9ybVN1cHBvcnQ6OlN0
YXRlSG92ZXIgOiBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlTm9ybWFsOwogICAgIEludFJlY3QgYWxp
Z25SZWN0ID0gdHJhY2tSZWN0KHNjcm9sbGJhciwgZmFsc2UpOwpAQCAtNjcsNyArNjcsNyBAQCB2
b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNz
Q29udGV4dCogZ2MsIFNjcm9sbGJhcgogICAgICAgICAmZXh0cmFQYXJhbXMpOwogfQogCi12b2lk
IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0
KiBnYywgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJh
clBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRv
bihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBj
b25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgUGxhdGZvcm1T
dXBwb3J0OjpUaGVtZVBhcnQgcGFpbnRQYXJ0OwogICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQ
YWludFN0YXRlIHN0YXRlID0gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZU5vcm1hbDsKQEAgLTEwMiw3
ICsxMDIsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24o
R3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzYwogICAgIFBsYXRmb3JtU3VwcG9ydDo6
cGFpbnRUaGVtZVBhcnQoZ2MsIHBhaW50UGFydCwgc3RhdGUsIHJlY3QsIDApOwogfQogCi12b2lk
IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQq
IGdjLCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2Ms
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7
CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGU7CiAKQEAgLTEyMCwx
MiArMTIwLDEyIEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRodW1i
KEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2NyCiAgICAgICAgIDApOwogfQogCi1i
b29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3Jv
bGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgcmV0dXJuIChldnQuc2hp
ZnRLZXkoKSAmJiBldnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgfHwgKGV2dC5idXR0b24oKSA9
PSBNaWRkbGVCdXR0b24pOwogfQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51
eDo6YnV0dG9uU2l6ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKK0ludFNpemUgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9s
bGJhcikgewogICAgICAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1l
UGFydFNpemUoUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyVXBBcnJvdyk7CkBAIC0xMzcs
NyArMTM3LDcgQEAgSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OmJ1dHRvblNp
emUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIEludFNpemUoc2Nyb2xsYmFyLT53
aWR0aCgpIDwgMiAqIHNpemUud2lkdGgoKSA/IHNjcm9sbGJhci0+d2lkdGgoKSAvIDIgOiBzaXpl
LndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUxpbnV4OjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigp
ID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAgICAgIEludFNpemUgc2l6ZSA9IFBsYXRmb3Jt
U3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJW
ZXJ0aWNhbFRodW1iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgKaW5kZXggOGU4MDJlNzM0
MWI3NzViNTk1NWFkMGRlYzBiOGVlZDU2Zjc5NzI3My4uMzMwZDAzZmIwMjMyMTM0ZWMyY2EyOTQx
OWZkYWIyNzM0OTQ3NTRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgKQEAgLTM5LDEy
ICszOSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgaW50IHNjcm9s
bGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7CiAKICAgICBwcm90ZWN0ZWQ6Ci0g
ICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50
UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihH
cmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpOwotICAgICAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxi
YXIqKTsKLSAgICAgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciop
OworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2Vu
dGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYpOworICAgICAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNs
aWVudCopOworICAgICAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKTsKICAgICB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjLmgKaW5kZXggNDFhMTk4ZTNmODQyMGM4NDg5NDVmYjg0NzQ0ZGRiNzAwMjRj
ZDZlNS4uNGQzNDI2YmI2MjA3OTliYTNkOTA4M2I2ZGM4OTQxY2FiNDQyNmVhZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW1NYWMuaApAQCAtMzYsMTIgKzM2LDEyIEBAIHB1YmxpYzoKICAgICBTY3JvbGxi
YXJUaGVtZUNocm9taXVtTWFjKCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bU1hYygpOwogCi0gICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhciosIEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CisgICAgdmlydHVhbCBi
b29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludE92
ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3Qm
IGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdB
cmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QpOwogICAgIAogcHJpdmF0ZToKLSAgICB2b2lk
IHBhaW50R2l2ZW5UaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3Qg
SW50UmVjdCYsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYpOworICAgIHZvaWQgcGFpbnRHaXZlblRp
Y2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IElu
dFJlY3QmLCBjb25zdCBWZWN0b3I8SW50UmVjdD4mKTsKIAogICAgIFJlZlB0cjxQYXR0ZXJuPiBt
X292ZXJoYW5nUGF0dGVybjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQppbmRleCA0NTlh
NThiMDc2ZjcwMDZmMjc3NjViMDI0OTdhMDk5MzVmODIzZmI3Li5kMDJiNDIxMjU2NDRiNzgzMGNl
MmUwZmFlYjM2NzMzNjFmOGRiOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KQEAgLTYx
LDExICs2MSwxMSBAQCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjp+U2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bU1hYygpCiB7CiB9CiAKLXN0YXRpYyBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRT
dGF0ZSBzY3JvbGxiYXJTdGF0ZVRvVGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3N0
YXRpYyBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzY3JvbGxiYXJTdGF0ZVRvVGhl
bWVTdGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmICghc2Ny
b2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRl
RGlzYWJsZWQ7Ci0gICAgaWYgKCFzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlzQWN0aXZl
KCkpCisgICAgaWYgKCFzY3JvbGxiYXItPmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSkKICAgICAg
ICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVJbmFjdGl2ZTsKICAgICBpZiAoc2Nyb2xs
YmFyLT5wcmVzc2VkUGFydCgpID09IFRodW1iUGFydCkKICAgICAgICAgcmV0dXJuIFBsYXRmb3Jt
U3VwcG9ydDo6U3RhdGVQcmVzc2VkOwpAQCAtOTQsMTEgKzk0LDExIEBAIHN0YXRpYyB2b2lkIHNj
cm9sbGJhclBhaW50ZXJQYWludFRyYWNrKFNjcm9sbGJhclBhaW50ZXIgc2Nyb2xsYmFyUGFpbnRl
ciwgYm9vbCBlCiAvLyAgICAgLSBkcmF3aW5nIHVzaW5nIFBsYXRmb3JtU3VwcG9ydCBmdW5jdGlv
bnMKIC8vICAgICAtIGRyYXdpbmcgdGlja21hcmtzCiAvLyAgICAgLSBTa2lhIHNwZWNpZmljIGNo
YW5nZXMKLWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdl
UmVjdCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBkYW1hZ2VSZWN0KQogewogICAgIC8vIEdldCB0aGUgdGlja21hcmtzIGZvciB0aGUgZnJh
bWV2aWV3LgogICAgIFZlY3RvcjxJbnRSZWN0PiB0aWNrbWFya3M7Ci0gICAgc2Nyb2xsYmFyLT5z
Y3JvbGxhYmxlQXJlYSgpLT5nZXRUaWNrbWFya3ModGlja21hcmtzKTsKKyAgICBzY3JvbGxiYXIt
PmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOwogCiAgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQ
SUF2YWlsYWJsZSgpKSB7CiAgICAgICAgIGZsb2F0IHZhbHVlID0gMDsKQEAgLTE4OCw3ICsxODgs
NyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbgogICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVk
KCkpCiAgICAgICAgIHRyYWNrSW5mby5lbmFibGVTdGF0ZSA9IGtUaGVtZVRyYWNrRGlzYWJsZWQ7
CiAgICAgZWxzZQotICAgICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBzY3JvbGxiYXItPnNj
cm9sbGFibGVBcmVhKCktPmlzQWN0aXZlKCkgPyBrVGhlbWVUcmFja0FjdGl2ZSA6IGtUaGVtZVRy
YWNrSW5hY3RpdmU7CisgICAgICAgIHRyYWNrSW5mby5lbmFibGVTdGF0ZSA9IHNjcm9sbGJhci0+
aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpID8ga1RoZW1lVHJhY2tBY3RpdmUgOiBrVGhlbWVUcmFj
a0luYWN0aXZlOwogCiAgICAgaWYgKCFoYXNCdXR0b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHRy
YWNrSW5mby5lbmFibGVTdGF0ZSA9IGtUaGVtZVRyYWNrTm90aGluZ1RvU2Nyb2xsOwpAQCAtMjQz
LDcgKzI0Myw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogY29uCiAgICAgaWYgKGhhc1RodW1iKHNj
cm9sbGJhcikpIHsKICAgICAgICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U2Nyb2xsYmFy
SW5mbyBzY3JvbGxiYXJJbmZvOwogICAgICAgICBzY3JvbGxiYXJJbmZvLm9yaWVudGF0aW9uID0g
c2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyBQbGF0Zm9y
bVN1cHBvcnQ6OlNjcm9sbGJhck9yaWVudGF0aW9uSG9yaXpvbnRhbCA6IFBsYXRmb3JtU3VwcG9y
dDo6U2Nyb2xsYmFyT3JpZW50YXRpb25WZXJ0aWNhbDsKLSAgICAgICAgc2Nyb2xsYmFySW5mby5w
YXJlbnQgPSBzY3JvbGxiYXItPnBhcmVudCgpICYmIHNjcm9sbGJhci0+cGFyZW50KCktPmlzRnJh
bWVWaWV3KCkgJiYgc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4oc2Nyb2xsYmFyLT5wYXJlbnQoKSkt
PmlzU2Nyb2xsVmlld1Njcm9sbGJhcihzY3JvbGxiYXIpID8gUGxhdGZvcm1TdXBwb3J0OjpTY3Jv
bGxiYXJQYXJlbnRTY3JvbGxWaWV3IDogUGxhdGZvcm1TdXBwb3J0OjpTY3JvbGxiYXJQYXJlbnRS
ZW5kZXJMYXllcjsKKyAgICAgICAgc2Nyb2xsYmFySW5mby5wYXJlbnQgPSBzY3JvbGxiYXItPmlz
U2Nyb2xsVmlld1Njcm9sbGJhcigpID8gUGxhdGZvcm1TdXBwb3J0OjpTY3JvbGxiYXJQYXJlbnRT
Y3JvbGxWaWV3IDogUGxhdGZvcm1TdXBwb3J0OjpTY3JvbGxiYXJQYXJlbnRSZW5kZXJMYXllcjsK
ICAgICAgICAgc2Nyb2xsYmFySW5mby5tYXhWYWx1ZSA9IHNjcm9sbGJhci0+bWF4aW11bSgpOwog
ICAgICAgICBzY3JvbGxiYXJJbmZvLmN1cnJlbnRWYWx1ZSA9IHNjcm9sbGJhci0+Y3VycmVudFBv
cygpOwogICAgICAgICBzY3JvbGxiYXJJbmZvLnZpc2libGVTaXplID0gc2Nyb2xsYmFyLT52aXNp
YmxlU2l6ZSgpOwpAQCAtMjYzLDcgKzI2Myw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogY29uCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFp
bnRHaXZlblRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHRpY2tt
YXJrcykKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnRHaXZlblRpY2ttYXJr
cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgdGlja21hcmtz
KQogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgIT0gVmVydGljYWxTY3JvbGxi
YXIpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAKaW5kZXggZjQz
NTgzOWQ4MjE4NTY0ZjgwMjcyOGQzMjg1MzIwZDFlMGNkYmFjOC4uYTA4MTk4MzQ3NDkxZGNjNWQ4
ZjAyMmExMjI4ODkwZDY1NzdmZTNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAKQEAg
LTczLDcgKzczLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjppbnZhbGlkYXRl
T25Nb3VzZUVudGVyRXhpdCgpCiAgICAgcmV0dXJuIHdpbmRvd3NWZXJzaW9uKCkgPj0gV2luZG93
c1Zpc3RhOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnNob3VsZFNuYXBC
YWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkU25hcEJh
Y2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgLy8gRmluZCB0aGUgcmVjdCB3aXRoaW4gd2hp
Y2ggd2Ugc2hvdWxkbid0IHNuYXAsIGJ5IGV4cGFuZGluZyB0aGUgdHJhY2sgcmVjdAogICAgIC8v
IGluIGJvdGggZGltZW5zaW9ucy4KQEAgLTkxLDcgKzkxLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtV2luOjpzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqIHNjcm9s
bGJhciwKICAgICByZXR1cm4gIXJlY3QuY29udGFpbnMobW91c2VQb3NpdGlvbik7CiB9CiAKLXZv
aWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29u
dGV4dCogZ2MsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3Jv
bGxiYXJQYXJ0IHBhcnRUeXBlKQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWlu
dFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKIHsK
ICAgICBib29sIGhvcnogPSBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNj
cm9sbGJhcjsKIApAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhcioKICAg
ICAgICAgYWxpZ25SZWN0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpw
YWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtV2luOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0
IHBhcnQpCiB7CiAgICAgYm9vbCBob3J6ID0gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXI7CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1XaW46OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJh
ciogc2NybwogICAgICAgICByZWN0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
V2luOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2Nyb2xsYmFy
LCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpw
YWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgYm9vbCBob3J6ID0gc2Nyb2xsYmFy
LT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXI7CiAKQEAgLTE1Miw3ICsxNTIs
NyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIoR3JhcGhpY3ND
b250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvbAogICAgICAgICByZWN0KTsKIH0KIAotaW50IFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldFRoZW1lU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29uc3QKK2ludCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
V2luOjpnZXRUaGVtZVN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9s
bGJhclBhcnQgcGFydCkgY29uc3QKIHsKICAgICAvLyBXaGVuIGRyYWdnaW5nIHRoZSB0aHVtYiwg
ZHJhdyB0aHVtYiBwcmVzc2VkIGFuZCBvdGhlciBzZWdtZW50cyBub3JtYWwKICAgICAvLyByZWdh
cmRsZXNzIG9mIHdoZXJlIHRoZSBjdXJzb3IgYWN0dWFsbHkgaXMuICBTZWUgYWxzbyBmb3VyIHBs
YWNlcyBpbgpAQCAtMTcxLDcgKzE3MSw3IEBAIGludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2lu
OjpnZXRUaGVtZVN0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAg
cmV0dXJuIChzY3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gcGFydCkgPyBTQ1JCU19QUkVTU0VE
IDogU0NSQlNfTk9STUFMOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0
VGhlbWVBcnJvd1N0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQp
IGNvbnN0CitpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVBcnJvd1N0YXRl
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29u
c3QKIHsKICAgICAvLyBXZSBjb3VsZCB0YWtlIGFkdmFudGFnZSBvZiBrbm93aW5nIHRoZSB2YWx1
ZXMgaW4gdGhlIHN0YXRlIGVudW0gdG8gd3JpdGUKICAgICAvLyBzb21lIHNpbXBsZXIgY29kZSwg
YnV0IHRyZWF0aW5nIHRoZSBzdGF0ZSBlbnVtIGFzIGEgYmxhY2sgYm94IHNlZW1zCkBAIC0yMjEs
NyArMjIxLDcgQEAgaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldFRoZW1lQXJyb3dT
dGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmEKICAgICByZXR1cm4gKHNjcm9sbGJh
ci0+cHJlc3NlZFBhcnQoKSA9PSBwYXJ0KSA/IEFCU19ET1dOUFJFU1NFRCA6IEFCU19ET1dOTk9S
TUFMOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3NpY1RoZW1l
U3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29uc3QKK2lu
dCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRDbGFzc2ljVGhlbWVTdGF0ZShTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpIGNvbnN0CiB7CiAg
ICAgLy8gV2hlbiBkcmFnZ2luZyB0aGUgdGh1bWIsIGRyYXcgdGhlIGJ1dHRvbnMgbm9ybWFsIGV2
ZW4gd2hlbiBob3ZlcmVkLgogICAgIGlmIChzY3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gVGh1
bWJQYXJ0KQpAQCAtMjM1LDEyICsyMzUsMTIgQEAgaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1X
aW46OmdldENsYXNzaWNUaGVtZVN0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGwKICAg
ICByZXR1cm4gKHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSA9PSBwYXJ0KSA/IChERkNTX1BVU0hF
RCB8IERGQ1NfRkxBVCkgOiAwOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46
OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnNob3VsZENlbnRlck9uVGh1
bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkK
IHsKICAgICByZXR1cm4gZXZ0LnNoaWZ0S2V5KCkgJiYgZXZ0LmJ1dHRvbigpID09IExlZnRCdXR0
b247CiB9CiAKLUludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6YnV0dG9uU2l6ZShT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKK0ludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6
YnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIC8vIE91
ciBkZXNpcmVkIHJlY3QgaXMgZXNzZW50aWFsbHkgdGhpY2tuZXNzIGJ5IHRoaWNrbmVzcy4KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bVdpbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbi5oCmluZGV4IDY5Y2ZhMTMxYzVjYjA0ZTliNTIxMGI3NjVjZmI0
ODFlOGRkY2IxMzUuLmFjODg4MWY5M2I1ZGIxYWZmNDY3OWE2MDYzZTdiYTdlODZmNTUxZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1l
Q2hyb21pdW1XaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtV2luLmgKQEAgLTM4LDE5ICszOCwxOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25l
c3MoU2Nyb2xsYmFyQ29udHJvbFNpemUpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgaW52YWxpZGF0
ZU9uTW91c2VFbnRlckV4aXQoKTsKLSAgICAgICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBCYWNr
VG9EcmFnT3JpZ2luKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAg
ICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAogICAgIHByb3RlY3RlZDoK
LSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1i
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICAgICAg
dmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50Jik7Ci0gICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9s
bGJhciopOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBh
cnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYpOworICAgICAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJU
aGVtZUNsaWVudCopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgaW50IGdldFRoZW1lU3RhdGUo
U2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCkgY29uc3Q7Ci0gICAgICAgIGludCBnZXRUaGVtZUFy
cm93U3RhdGUoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCkgY29uc3Q7Ci0gICAgICAgIGludCBn
ZXRDbGFzc2ljVGhlbWVTdGF0ZShTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0KSBjb25zdDsKKyAg
ICAgICAgaW50IGdldFRoZW1lU3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQ
YXJ0KSBjb25zdDsKKyAgICAgICAgaW50IGdldFRoZW1lQXJyb3dTdGF0ZShTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIGNvbnN0OworICAgICAgICBpbnQgZ2V0Q2xhc3NpY1Ro
ZW1lU3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0KSBjb25zdDsKICAg
ICB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmNwcAppbmRleCA2MmRmMDA1ZDY3NTcxZDE0YWQz
OTQzNjBkNTZjNDk4ZTRkZjkyYmZiLi4yNDBiNTAxNDc3OWMxODJkMTQzOTBjM2Y4YzM5Mzc3NTc3
ZTkzYTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFy
VGhlbWVFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJU
aGVtZUVmbC5jcHAKQEAgLTQ5LDExICs0OSwxMSBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVFZmw6OnNj
cm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKICAgICBy
ZXR1cm4gMDsgLy8gd2UgcGFpbnQgb24gdG9wCiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVFZmw6
OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJU
aGVtZUVmbDo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
cikKIHsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUVmbDo6dW5yZWdpc3RlclNjcm9sbGJhcihT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVFZmw6OnVucmVnaXN0ZXJT
Y3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaAppbmRleCAwZmUx
Njg4MWUyZTQ1NmU2ZTEyMzAxYWVlZjg2YzI2NWJkMzMyMzRiLi5mYzcxY2JlZDg5MGExYTY1YTlh
MDJhZDhhMDNkMzhmZGM5OWFkM2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
ZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaApAQCAtMzksOCArMzksOCBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1
bGFyU2Nyb2xsYmFyKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3Jv
bGxiYXIqIHNjcm9sbGJhcik7Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJh
cihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5y
ZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVt
ZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsu
Y3BwCmluZGV4IGU5OTM2NGYyYTdmY2FmNDg4ODMwYjQ2OGRlMWQxOGFkNzUwNGU5MGYuLjk0ZTNm
ZDc2ZjdmZmM1MjMwZmM4NDdmZjlmZWNhZjQzZGM0NmZhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcApAQCAtMzMsNyArMzMsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBIYXNoU2V0PFNjcm9sbGJhcio+KiBn
U2Nyb2xsYmFyczsKK3N0YXRpYyBIYXNoU2V0PFNjcm9sbGJhclRoZW1lQ2xpZW50Kj4qIGdTY3Jv
bGxiYXJzOwogCiBTY3JvbGxiYXJUaGVtZSogU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkK
IHsKQEAgLTQ1LDE0ICs0NSwxNCBAQCBTY3JvbGxiYXJUaGVtZUd0azo6flNjcm9sbGJhclRoZW1l
R3RrKCkKIHsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cmVnaXN0ZXJTY3JvbGxiYXIo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpyZWdpc3RlclNj
cm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmICghZ1Nj
cm9sbGJhcnMpCi0gICAgICAgIGdTY3JvbGxiYXJzID0gbmV3IEhhc2hTZXQ8U2Nyb2xsYmFyKj47
CisgICAgICAgIGdTY3JvbGxiYXJzID0gbmV3IEhhc2hTZXQ8U2Nyb2xsYmFyVGhlbWVDbGllbnQq
PjsKICAgICBnU2Nyb2xsYmFycy0+YWRkKHNjcm9sbGJhcik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFy
VGhlbWVHdGs6OnVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lk
IFNjcm9sbGJhclRoZW1lR3RrOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgZ1Njcm9sbGJhcnMtPnJlbW92ZShzY3JvbGxiYXIpOwog
ICAgIGlmIChnU2Nyb2xsYmFycy0+aXNFbXB0eSgpKSB7CkBAIC02OSw5ICs2OSw5IEBAIHZvaWQg
U2Nyb2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRoaWNrbmVzcygpCiAgICAg
Ly8gVXBkYXRlIHRoZSB0aGlja25lc3Mgb2YgZXZlcnkgaW50ZXJpb3IgZnJhbWUgc2Nyb2xsYmFy
IHdpZGdldC4gVGhlCiAgICAgLy8gcGxhdGZvcm0taW5kZXBlbmRlbnQgc2Nyb2xsYmFyIHRoZW0g
Y29kZSBpc24ndCB5ZXQgc21hcnQgZW5vdWdoIHRvIGdldAogICAgIC8vIHRoaXMgaW5mb3JtYXRp
b24gd2hlbiBpdCBwYWludHMuCi0gICAgSGFzaFNldDxTY3JvbGxiYXIqPjo6aXRlcmF0b3IgZW5k
ID0gZ1Njcm9sbGJhcnMtPmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxTY3JvbGxiYXIqPjo6aXRl
cmF0b3IgaXQgPSBnU2Nyb2xsYmFycy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAg
ICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyID0gKCppdCk7CisgICAgSGFzaFNldDxTY3JvbGxiYXJU
aGVtZUNsaWVudCo+OjppdGVyYXRvciBlbmQgPSBnU2Nyb2xsYmFycy0+ZW5kKCk7CisgICAgZm9y
IChIYXNoU2V0PFNjcm9sbGJhclRoZW1lQ2xpZW50Kj46Oml0ZXJhdG9yIGl0ID0gZ1Njcm9sbGJh
cnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyID0gKCppdCk7CiAKICAgICAgICAgLy8gVG9wLWxldmVsIHNjcm9sbGJh
ciBpLmUuIHNjcm9sbGJhcnMgd2hvIGhhdmUgYSBwYXJlbnQgU2Nyb2xsVmlldwogICAgICAgICAv
LyB3aXRoIG5vIHBhcmVudCBhcmUgbmF0aXZlLCBhbmQgdGh1cyBkbyBub3QgbmVlZCB0byBiZSBy
ZXNpemVkLgpAQCAtODYsMTQgKzg2LDE0IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnVwZGF0
ZVNjcm9sbGJhcnNGcmFtZVRoaWNrbmVzcygpCiAgICAgfQogfQogCi1ib29sIFNjcm9sbGJhclRo
ZW1lR3RrOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhl
bWVHdGs6Omhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAg
Ly8gVGhpcyBtZXRob2QgaXMganVzdCBjYWxsZWQgYXMgYSBwYWludC10aW1lIG9wdGltaXphdGlv
biB0byBzZWUgaWYKICAgICAvLyBwYWludGluZyB0aGUgdGh1bWIgY2FuIGJlIHNraXBwZWQuICBX
ZSBkb24ndCBoYXZlIHRvIGJlIGV4YWN0IGhlcmUuCiAgICAgcmV0dXJuIHRodW1iTGVuZ3RoKHNj
cm9sbGJhcikgPiAwOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjpiYWNrQnV0dG9u
UmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQorSW50
UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIGlmIChwYXJ0
ID09IEJhY2tCdXR0b25FbmRQYXJ0ICYmICFtX2hhc0JhY2tCdXR0b25FbmRQYXJ0KQogICAgICAg
ICByZXR1cm4gSW50UmVjdCgpOwpAQCAtMTE0LDcgKzExNCw3IEBAIEludFJlY3QgU2Nyb2xsYmFy
VGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQ
YXJ0IHBhCiAgICAgcmV0dXJuIEludFJlY3QoeCwgc2Nyb2xsYmFyLT55KCkgKyBzY3JvbGxiYXIt
PmhlaWdodCgpIC0gbV90cm91Z2hCb3JkZXJXaWR0aCAtICgyICogc2l6ZS5oZWlnaHQoKSksIHNp
emUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVH
dGs6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0
IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjpmb3J3YXJkQnV0dG9uUmVj
dChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJv
b2wpCiB7CiAgICAgaWYgKHBhcnQgPT0gRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCAmJiAhbV9oYXNG
b3J3YXJkQnV0dG9uU3RhcnRQYXJ0KQogICAgICAgICByZXR1cm4gSW50UmVjdCgpOwpAQCAtMTQw
LDcgKzE0MCw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0b25SZWN0
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgcmV0dXJuIEludFJlY3Qo
eCwgc2Nyb2xsYmFyLT55KCkgKyBtX3Ryb3VnaEJvcmRlcldpZHRoICsgc2l6ZS5oZWlnaHQoKSwg
c2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZUd0azo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBTY3Jv
bGxiYXJUaGVtZUd0azo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIs
IGJvb2wpCiB7CiAgICAgLy8gVGhlIHBhZGRpbmcgYWxvbmcgdGhlIHRodW1iIG1vdmVtZW50IGF4
aXMgaW5jbHVkZXMgdGhlIHRyb3VnaCBib3JkZXIKICAgICAvLyBwbHVzIHRoZSBzaXplIG9mIHN0
ZXBwZXIgc3BhY2luZyAodGhlIHNwYWNlIGJldHdlZW4gdGhlIHN0ZXBwZXIgYW5kCkBAIC0xODAs
NyArMTgwLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tSZWN0KFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBib29sKQogICAgICAgICAgICAgICAgICAgIHRoaWNrbmVzcywgc2Nyb2xs
YmFyLT5oZWlnaHQoKSAtICgyICogbW92ZW1lbnRBeGlzUGFkZGluZykgLSBidXR0b25zV2lkdGgp
OwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0aHVtYlJlY3QoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QpCitJbnRSZWN0
IFNjcm9sbGJhclRoZW1lR3RrOjp0aHVtYlJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCkKIHsKICAgICBJbnRS
ZWN0IHRyYWNrUmVjdCA9IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoc2Nyb2xsYmFy
LCB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KTsKICAgICBpbnQgdGh1bWJQb3MgPSB0aHVtYlBvc2l0
aW9uKHNjcm9sbGJhcik7CkBAIC0xOTEsNyArMTkxLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZUd0azo6dGh1bWJSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNv
bnMKICAgICByZXR1cm4gSW50UmVjdCh0cmFja1JlY3QueCgpICsgKHRyYWNrUmVjdC53aWR0aCgp
IC0gbV90aHVtYkZhdG5lc3MpIC8gMiwgdHJhY2tSZWN0LnkoKSArIHRodW1iUG9zLCBtX3RodW1i
RmF0bmVzcywgdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSk7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhl
bWVHdGs6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Nyb2xsYmFyVGhl
bWVHdGs6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQogewogICAg
IGlmIChncmFwaGljc0NvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMjYwLDcgKzI2MCw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29uCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnNob3VsZENlbnRlck9u
VGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK2Jvb2wg
U2Nyb2xsYmFyVGhlbWVHdGs6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQogewogICAgIHJldHVybiAoZXZl
bnQuc2hpZnRLZXkoKSAmJiBldmVudC5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB8fCAoZXZlbnQu
YnV0dG9uKCkgPT0gTWlkZGxlQnV0dG9uKTsKIH0KQEAgLTI3MCw3ICsyNzAsNyBAQCBpbnQgU2Ny
b2xsYmFyVGhlbWVHdGs6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSkK
ICAgICByZXR1cm4gbV90aHVtYkZhdG5lc3MgKyAobV90cm91Z2hCb3JkZXJXaWR0aCAqIDIpOwog
fQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lR3RrOjpidXR0b25TaXplKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQorSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUd0azo6YnV0dG9uU2l6ZShTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gVmVydGljYWxTY3JvbGxiYXIpCiAgICAgICAgIHJldHVybiBJbnRTaXplKG1fdGh1bWJG
YXRuZXNzLCBtX3N0ZXBwZXJTaXplKTsKQEAgLTI3OSw3ICsyNzksNyBAQCBJbnRTaXplIFNjcm9s
bGJhclRoZW1lR3RrOjpidXR0b25TaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVy
biBJbnRTaXplKG1fc3RlcHBlclNpemUsIG1fdGh1bWJGYXRuZXNzKTsKIH0KIAotaW50IFNjcm9s
bGJhclRoZW1lR3RrOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitp
bnQgU2Nyb2xsYmFyVGhlbWVHdGs6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiBtX21pblRodW1iTGVuZ3RoOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuaAppbmRleCA0
NWUwOTNiMWVjOTdkMWFmYWEyNGM1ODMzMTU2NjkzMDJlODVjZDYzLi5lNzNkZjI4NTUwMWI1ODI2
ZGMwNTliODNiZmMzZDlhNDE3MGQ0YmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuaApAQCAtMzcsMjkgKzM3LDI5IEBAIHB1YmxpYzoKICAg
ICBTY3JvbGxiYXJUaGVtZUd0aygpOwogICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lR3RrKCk7
CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKSB7IHJldHVybiB0cnVl
OyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwg
SW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sKTsK
LSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xs
YmFyUGFydCwgYm9vbCk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIq
LCBib29sKTsKLSAgICBJbnRSZWN0IHRodW1iUmVjdChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0
JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KTsKLSAgICBib29sIHBhaW50KFNjcm9sbGJhciosIEdy
YXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwotICAgIHZvaWQgcGFp
bnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciopOwotICAg
IHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwg
Y29uc3QgSW50UmVjdCYpOwotICAgIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9u
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQ
YXJ0KTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhT
Y3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sKTsK
KyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCk7CisgICAgSW50UmVjdCB0aHVtYlJlY3QoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0
KTsKKyAgICBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CisgICAgdm9pZCBwYWludFNjcm9sbGJhckJh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2
b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCBib29sIHNo
b3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmKTsKICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFy
Q29udHJvbFNpemUpOwotICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciop
OwotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2
aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZp
cnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiAg
ICAgLy8gVE9ETzogVGhlc2UgYXJlIHRoZSBkZWZhdWx0IEdUSysgdmFsdWVzLiBBdCBzb21lIHBv
aW50IHdlIHNob3VsZCBwdWxsIHRoZXNlIGZyb20gdGhlIHRoZW1lIGl0c2VsZi4KICAgICB2aXJ0
dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKSB7IHJldHVybiAwLjIwOyB9
CiAgICAgdmlydHVhbCBkb3VibGUgYXV0b3Njcm9sbFRpbWVyRGVsYXkoKSB7IHJldHVybiAwLjAy
OyB9CiAgICAgdm9pZCB1cGRhdGVUaGVtZVByb3BlcnRpZXMoKTsKICAgICB2b2lkIHVwZGF0ZVNj
cm9sbGJhcnNGcmFtZVRoaWNrbmVzcygpOwotICAgIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Ny
b2xsYmFyKik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciopOworICAg
IHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2b2lk
IHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogcHJvdGVjdGVk
OgogI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsyLmNwcAppbmRleCA3MjliZDEyNGRlMmIyMTg1NDk5
N2IxOTg3NjMwY2RmODliZWE5MTAzLi44NjZiYjhhMWQyZjcxYWE4NjRlYTU3ZWQzMDNmMTM2MDcy
YzFjNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFy
VGhlbWVHdGsyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFy
VGhlbWVHdGsyLmNwcApAQCAtNjYsMTMgKzY2LDEzIEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6
OnVwZGF0ZVRoZW1lUHJvcGVydGllcygpCiAgICAgdXBkYXRlU2Nyb2xsYmFyc0ZyYW1lVGhpY2tu
ZXNzKCk7CiB9CiAKLXN0YXRpYyBHdGtXaWRnZXQqIGdldFdpZGdldEZvclNjcm9sbGJhcihTY3Jv
bGxiYXIqIHNjcm9sbGJhcikKK3N0YXRpYyBHdGtXaWRnZXQqIGdldFdpZGdldEZvclNjcm9sbGJh
cihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIFJlbmRlclRoZW1lR3Rr
KiB0aGVtZSA9IHN0YXRpY19jYXN0PFJlbmRlclRoZW1lR3RrKj4oUmVuZGVyVGhlbWU6OmRlZmF1
bHRUaGVtZSgpLmdldCgpKTsKICAgICByZXR1cm4gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09
IFZlcnRpY2FsU2Nyb2xsYmFyID8gdGhlbWUtPmd0a1ZTY3JvbGxiYXIoKSA6IHRoZW1lLT5ndGtI
U2Nyb2xsYmFyKCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFj
a2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gUGFpbnQgdGhlIHRyYWNr
IGJhY2tncm91bmQuIElmIHRoZSB0cm91Z2gtdW5kZXItc3RlcHBlcnMgcHJvcGVydHkgaXMgdHJ1
ZSwgdGhpcwogICAgIC8vIHNob3VsZCBiZSB0aGUgZnVsbCBzaXplIG9mIHRoZSBzY3JvbGxiYXIs
IGJ1dCBpZiBpcyBmYWxzZSwgaXQgc2hvdWxkIG9ubHkgYmUgdGhlCkBAIC04Nyw3ICs4Nyw3IEBA
IHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
VEtfU1RBVEVfQUNUSVZFLCBHVEtfU0hBRE9XX0lOLCAidHJvdWdoIik7CiB9CiAKLXZvaWQgU2Ny
b2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6
cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBJbnRSZWN0IGZ1bGxTY3JvbGxiYXJS
ZWN0ID0gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCksIHNjcm9sbGJhci0+
d2lkdGgoKSwgc2Nyb2xsYmFyLT5oZWlnaHQoKSk7CiAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBT
Y3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgU2Nyb2wKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFU
RV9OT1JNQUwsIEdUS19TSEFET1dfSU4sICJzY3JvbGxlZF93aW5kb3ciKTsKIH0KIAotdm9pZCBT
Y3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJU
aGVtZUd0azo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgR3RrV2lk
Z2V0KiB3aWRnZXQgPSBnZXRXaWRnZXRGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKICAgICBnYm9v
bGVhbiBhY3RpdmF0ZVNsaWRlcjsKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFNjcm9sbGJhclRo
ZW1lR3RrOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBz
Y3JvbGxiYQogICAgIHdpZGdldENvbnRleHQuZ3RrUGFpbnRTbGlkZXIoc2xpZGVyUmVjdCwgd2lk
Z2V0LCBzdGF0ZVR5cGUsIHNoYWRvd1R5cGUsICJzbGlkZXIiLCBvcmllbnRhdGlvbik7CiB9CiAK
LXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJh
clBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIC8vIFRoZSBidXR0b25z
IHdpbGwgYmUgZGlzYWJsZWQgaWYgdGhlIHRodW1iIGlzIGFzIHRoZSBhcHByb3ByaWF0ZSBleHRy
ZW1lLgogICAgIEd0a1NoYWRvd1R5cGUgc2hhZG93VHlwZSA9IEdUS19TSEFET1dfT1VUOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGszLmNwcApp
bmRleCA0YzMzZTY2ZGI4ZmZlZmMzZjQyMzQ2Y2FkMGVlZTY3ZWU2Y2Q0NWZlLi45NzQ5YzU0M2Yz
ZGRmNmIzMTVlZmZiOThhNzU5ZmY1YjAwMmQ3MGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGszLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGszLmNwcApAQCAtNzIsNyArNzIsNyBAQCBz
dGF0aWMgdm9pZCBhcHBseVNjcm9sbGJhclN0eWxlQ29udGV4dENsYXNzZXMoR3RrU3R5bGVDb250
ZXh0KiBjb250ZXh0LCBTY3JvbGxiYQogICAgIGd0a19zdHlsZV9jb250ZXh0X2FkZF9jbGFzcyhj
b250ZXh0LCBvcmllbnRhdGlvbiA9PSBWZXJ0aWNhbFNjcm9sbGJhciA/ICBHVEtfU1RZTEVfQ0xB
U1NfVkVSVElDQUwgOiBHVEtfU1RZTEVfQ0xBU1NfSE9SSVpPTlRBTCk7CiB9CiAKLXZvaWQgU2Ny
b2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNj
cm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7CiAgICAgLy8gUGFpbnQgdGhlIHRyYWNrIGJhY2tncm91bmQuIElmIHRoZSB0cm91Z2gt
dW5kZXItc3RlcHBlcnMgcHJvcGVydHkgaXMgdHJ1ZSwgdGhpcwogICAgIC8vIHNob3VsZCBiZSB0
aGUgZnVsbCBzaXplIG9mIHRoZSBzY3JvbGxiYXIsIGJ1dCBpZiBpcyBmYWxzZSwgaXQgc2hvdWxk
IG9ubHkgYmUgdGhlCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBh
aW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyCiAg
ICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShtX2NvbnRleHQpOwogfQogCi12b2lkIFNjcm9s
bGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBh
aW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2F2ZSht
X2NvbnRleHQpOwogCkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6
cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2wK
ICAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKG1fY29udGV4dCk7CiB9CiAKLXZvaWQgU2Ny
b2xsYmFyVGhlbWVHdGs6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhl
bWVHdGs6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGd0a19zdHls
ZV9jb250ZXh0X3NhdmUobV9jb250ZXh0KTsKIApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgU2Ny
b2xsYmFyVGhlbWVHdGs6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3Jv
bGxiYXIqIHNjcm9sbGJhCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZShtX2NvbnRleHQp
OwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBT
Y3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRvbihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAgICBndGtfc3R5
bGVfY29udGV4dF9zYXZlKG1fY29udGV4dCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmgKaW5kZXggMTNkNDRjMjNkM2IzMzYyMzZmYjY0MDk4
ZmE4NzBhZWM4YzdiNTY1OC4uOTYyOWY2MDc0ZjYyY2FhYjY1YTkzOWY0NzUwNzE4YTQxMjRkY2Y4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1l
TWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFj
LmgKQEAgLTM5LDQ2ICszOSw0NiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByZWZlcmVuY2VzQ2hh
bmdlZCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXIq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhclRoZW1lQ2xp
ZW50Kik7CiAKICNpZiAhUExBVEZPUk0oQ0hST01JVU0pCi0gICAgdmlydHVhbCBib29sIHBhaW50
KFNjcm9sbGJhciosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFt
YWdlUmVjdCk7CisgICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKICNl
bmRpZgogCiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRy
b2xTaXplID0gUmVndWxhclNjcm9sbGJhcik7CiAgICAgCiAgICAgdmlydHVhbCBib29sIHN1cHBv
cnRzQ29udHJvbFRpbnRzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9v
bCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogICAgIHZp
cnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpOwogICAgIHZpcnR1YWwg
ZG91YmxlIGF1dG9zY3JvbGxUaW1lckRlbGF5KCk7CiAKICAgICB2aXJ0dWFsIFNjcm9sbGJhckJ1
dHRvbnNQbGFjZW1lbnQgYnV0dG9uc1BsYWNlbWVudCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2
b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgdm9pZCB1bnJl
Z2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNj
cm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lz
dGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2b2lkIHNldE5ld1Bh
aW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFpbnRlcik7Ci0gICAgU2Ny
b2xsYmFyUGFpbnRlciBwYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciopOworICAgIHZvaWQg
c2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJh
clBhaW50ZXIpOworICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlckZvclNjcm9sbGJhcihTY3Jv
bGxiYXJUaGVtZUNsaWVudCopOwogCiAgICAgc3RhdGljIGJvb2wgaXNDdXJyZW50bHlEcmF3aW5n
SW50b0xheWVyKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0SXNDdXJyZW50bHlEcmF3aW5nSW50b0xh
eWVyKGJvb2wpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Ny
b2xsYmFyKik7Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOworICAgIHZp
cnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVh
bCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIElu
dFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Ny
b2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0
dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7
CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIElu
dFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQ
YXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1Jl
Y3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogCiAgICAg
dmlydHVhbCBpbnQgbWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpIHsgcmV0dXJuIDQwOyB9CiAKLSAg
ICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVh
bCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAgICAgCi0g
ICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZERyYWdEb2N1bWVudElu
c3RlYWRPZlRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNob3VsZERyYWdE
b2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50Jik7CiAgICAgaW50IHNjcm9sbGJhclBhcnRUb0hJUHJlc3NlZFN0YXRlKFNj
cm9sbGJhclBhcnQpOwogCiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKSAmJiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShSVUJCRVJfQkFORElORykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQppbmRleCBjYzc0ODI0NTc3
ODUyOTNkMWQ1NzhiNzgyZDgxYzI3ZmFiYjI1OTI0Li4zYjkwMjFhZGVhNTVkYzhhZmNkNjZiZGRm
NTU3NjEyNDA5ZDk5N2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsYmFyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Nj
cm9sbGJhclRoZW1lTWFjLm1tCkBAIC01MCw3ICs1MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgSGFzaE1hcDxTY3JvbGxiYXIq
LCBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFpbnRlcj4gPiBTY3JvbGxiYXJQYWludGVyTWFwOwordHlw
ZWRlZiBIYXNoTWFwPFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgUmV0YWluUHRyPFNjcm9sbGJhclBh
aW50ZXI+ID4gU2Nyb2xsYmFyUGFpbnRlck1hcDsKIAogc3RhdGljIFNjcm9sbGJhclBhaW50ZXJN
YXAqIHNjcm9sbGJhck1hcCgpCiB7CkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIHZvaWQgdXBk
YXRlQXJyb3dQbGFjZW1lbnQoKQogICAgIH0KIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6
cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRo
ZW1lTWFjOjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
KQogewogICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkgewogICAgICAg
ICBib29sIGlzSG9yaXpvbnRhbCA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9u
dGFsU2Nyb2xsYmFyOwpAQCAtMTc1LDE5ICsxNzUsMTkgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZU1h
Yzo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgfQogfQogCi12
b2lkIFNjcm9sbGJhclRoZW1lTWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dW5yZWdpc3RlclNjcm9sbGJhcihTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHNjcm9sbGJhck1hcCgpLT5yZW1v
dmUoc2Nyb2xsYmFyKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6c2V0TmV3UGFpbnRl
ckZvclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFpbnRlciBuZXdQ
YWludGVyKQordm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6c2V0TmV3UGFpbnRlckZvclNjcm9sbGJh
cihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYWludGVyIG5ld1Bh
aW50ZXIpCiB7CiAgICAgc2Nyb2xsYmFyTWFwKCktPnNldChzY3JvbGxiYXIsIG5ld1BhaW50ZXIp
OwogICAgIHVwZGF0ZUVuYWJsZWRTdGF0ZShzY3JvbGxiYXIpOwogICAgIHVwZGF0ZVNjcm9sbGJh
ck92ZXJsYXlTdHlsZShzY3JvbGxiYXIpOwogfQogCi1TY3JvbGxiYXJQYWludGVyIFNjcm9sbGJh
clRoZW1lTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorU2Ny
b2xsYmFyUGFpbnRlciBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnRlckZvclNjcm9sbGJhcihTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiBzY3JvbGxiYXJNYXAo
KS0+Z2V0KHNjcm9sbGJhcikuZ2V0KCk7CiB9CkBAIC0yNDgsMTAgKzI0OCwxMCBAQCBib29sIFNj
cm9sbGJhclRoZW1lTWFjOjp1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdAogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZVNjcm9sbGJh
ck92ZXJsYXlTdHlsZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVN
YWM6OnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyKQogewogICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHBhaW50ZXJGb3JTY3Jv
bGxiYXIoc2Nyb2xsYmFyKTsKLSAgICBzd2l0Y2ggKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEo
KS0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkpIHsKKyAgICBzd2l0Y2ggKHNjcm9sbGJhci0+c2Ny
b2xsYmFyT3ZlcmxheVN0eWxlKCkpIHsKICAgICBjYXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZURl
ZmF1bHQ6CiAgICAgICAgIFtwYWludGVyIHNldEtub2JTdHlsZTpOU1Njcm9sbGVyS25vYlN0eWxl
RGVmYXVsdF07CiAgICAgICAgIGJyZWFrOwpAQCAtMjc5LDcgKzI3OSw3IEBAIFNjcm9sbGJhckJ1
dHRvbnNQbGFjZW1lbnQgU2Nyb2xsYmFyVGhlbWVNYWM6OmJ1dHRvbnNQbGFjZW1lbnQoKSBjb25z
dAogICAgIHJldHVybiBnQnV0dG9uUGxhY2VtZW50OwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1l
TWFjOjpoYXNCdXR0b25zKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVt
ZU1hYzo6aGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAg
IHJldHVybiBzY3JvbGxiYXItPmVuYWJsZWQoKSAmJiBidXR0b25zUGxhY2VtZW50KCkgIT0gU2Ny
b2xsYmFyQnV0dG9uc05vbmUKICAgICAgICAgICAgICAmJiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlv
bigpID09IEhvcml6b250YWxTY3JvbGxiYXIKQEAgLTI4Nyw3ICsyODcsNyBAQCBib29sIFNjcm9s
bGJhclRoZW1lTWFjOjpoYXNCdXR0b25zKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgICAgICAg
ICAgIDogc2Nyb2xsYmFyLT5oZWlnaHQoKSkgPj0gMiAqIChjUmVhbEJ1dHRvbkxlbmd0aFtzY3Jv
bGxiYXItPmNvbnRyb2xTaXplKCldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJhci0+Y29udHJv
bFNpemUoKV0pOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNUaHVtYihTY3JvbGxi
YXIqIHNjcm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6Omhhc1RodW1iKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaW50IG1pbkxlbmd0aEZvclRodW1iOwog
ICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkgewpAQCAtMzE5LDcgKzMx
OSw3IEBAIHN0YXRpYyBJbnRSZWN0IGJ1dHRvblJlcGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIGJ1
dHRvblJlY3QsIFNjcm9sbGJhck9yaWVudGF0aW9uCiAgICAgcmV0dXJuIHBhaW50UmVjdDsKIH0K
IAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykKK0ludFJlY3QgU2Ny
b2xsYmFyVGhlbWVNYWM6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykKIHsKICAgICBJbnRSZWN0
IHJlc3VsdDsKICAgICAKQEAgLTM1Myw3ICszNTMsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1l
TWFjOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBw
YQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZv
cndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQs
IGJvb2wgcGFpbnRpbmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjpmb3J3YXJkQnV0dG9u
UmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQs
IGJvb2wgcGFpbnRpbmcpCiB7CiAgICAgSW50UmVjdCByZXN1bHQ7CiAgICAgCkBAIC0zOTMsNyAr
MzkzLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1JbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIGJvb2wgcGFpbnRpbmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjp0cmFja1JlY3Qo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCBwYWludGluZykKIHsKICAgICBp
ZiAocGFpbnRpbmcgfHwgIWhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkKICAgICAgICAgcmV0dXJuIHNj
cm9sbGJhci0+ZnJhbWVSZWN0KCk7CkBAIC00MzAsNyArNDMwLDcgQEAgSW50UmVjdCBTY3JvbGxi
YXJUaGVtZU1hYzo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5n
KQogICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIHN0
YXJ0V2lkdGgsIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIHRvdGFsV2lkdGgpOwog
fQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVNYWM6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIq
IHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKGlzU2Nyb2xsYmFyT3Zl
cmxheUFQSUF2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gW3Njcm9sbGJhck1hcCgpLT5nZXQo
c2Nyb2xsYmFyKS5nZXQoKSBrbm9iTWluTGVuZ3RoXTsKQEAgLTQzOCw3ICs0MzgsNyBAQCBpbnQg
U2Nyb2xsYmFyVGhlbWVNYWM6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJh
cikKICAgICAgICAgcmV0dXJuIGNUaHVtYk1pbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXpl
KCldOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKFNj
cm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJU
aGVtZU1hYzo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIGlmIChldnQuYnV0dG9uKCkgIT0gTGVm
dEJ1dHRvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIGJvb2wg
U2Nyb2xsYmFyVGhlbWVNYWM6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50CiAgICAgcmV0dXJuIGV2dC5hbHRLZXkoKTsKIH0KIAotYm9vbCBT
Y3JvbGxiYXJUaGVtZU1hYzo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xs
YmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK2Jvb2wgU2Nyb2xsYmFyVGhl
bWVNYWM6OnNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICByZXR1cm4gZXZl
bnQuYWx0S2V5KCk7CiB9CkBAIC00NzAsNyArNDcwLDcgQEAgaW50IFNjcm9sbGJhclRoZW1lTWFj
OjpzY3JvbGxiYXJQYXJ0VG9ISVByZXNzZWRTdGF0ZShTY3JvbGxiYXJQYXJ0IHBhcnQpCiAgICAg
fQogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVFbmFibGVkU3Rh
dGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoaXNTY3JvbGxi
YXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpCiAgICAgICAgIFtzY3JvbGxiYXJNYXAoKS0+Z2V0KHNj
cm9sbGJhcikuZ2V0KCkgc2V0RW5hYmxlZDpzY3JvbGxiYXItPmVuYWJsZWQoKV07CkBAIC00OTks
NyArNDk5LDcgQEAgc3RhdGljIHZvaWQgc2Nyb2xsYmFyUGFpbnRlclBhaW50KFNjcm9sbGJhclBh
aW50ZXIgc2Nyb2xsYmFyUGFpbnRlciwgYm9vbCBlbmFibGUKIH0KIAogI2lmICFQTEFURk9STShD
SFJPTUlVTSkKLWJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3Qp
Citib29sIFNjcm9sbGJhclRoZW1lTWFjOjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJl
Y3QpCiB7CiAgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKSB7CiAgICAg
ICAgIGZsb2F0IHZhbHVlID0gMDsKQEAgLTU3MCw3ICs1NzAsNyBAQCBib29sIFNjcm9sbGJhclRo
ZW1lTWFjOjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjbwogICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIHRyYWNrSW5m
by5lbmFibGVTdGF0ZSA9IGtUaGVtZVRyYWNrRGlzYWJsZWQ7CiAgICAgZWxzZQotICAgICAgICB0
cmFja0luZm8uZW5hYmxlU3RhdGUgPSBzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlzQWN0
aXZlKCkgPyBrVGhlbWVUcmFja0FjdGl2ZSA6IGtUaGVtZVRyYWNrSW5hY3RpdmU7CisgICAgICAg
IHRyYWNrSW5mby5lbmFibGVTdGF0ZSA9IHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2
ZSgpID8ga1RoZW1lVHJhY2tBY3RpdmUgOiBrVGhlbWVUcmFja0luYWN0aXZlOwogCiAgICAgaWYg
KGhhc1RodW1iKHNjcm9sbGJhcikpCiAgICAgICAgIHRyYWNrSW5mby5hdHRyaWJ1dGVzIHw9IGtU
aGVtZVRyYWNrU2hvd1RodW1iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCmluZGV4IDVkMmJjM2VjMDg5NzhlMDM3MzdmYmE3Mzk1
YjhiOGNlNzQ2MGQ0NjQuLjZkZTkxY2NiODE5MjEwNDBjMDg0NzhjMWVlNTY3N2RkZTQzNzQ5NWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVN
b2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1l
TW9jay5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMg
aW50IGNTY3JvbGxiYXJUaGlja25lc3NbXSA9IHsgMTUsIDExIH07CiAKLUludFJlY3QgU2Nyb2xs
YmFyVGhlbWVNb2NrOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJbnRS
ZWN0IFNjcm9sbGJhclRoZW1lTW9jazo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7CiB9
CkBAIC00MiwxMiArNDIsMTIgQEAgaW50IFNjcm9sbGJhclRoZW1lTW9jazo6c2Nyb2xsYmFyVGhp
Y2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogICAgIHJldHVybiBjU2Ny
b2xsYmFyVGhpY2tuZXNzW2NvbnRyb2xTaXplXTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1v
Y2s6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRyYWNrUmVjdCkKK3ZvaWQgU2Nyb2xsYmFy
VGhlbWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRyYWNrUmVj
dCkKIHsKICAgICBjb250ZXh0LT5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJhci0+ZW5hYmxl
ZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IENvbG9yKDB4RkZFMEUwRTApLCBDb2xvclNwYWNlRGV2
aWNlUkdCKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
dGh1bWJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiB0aHVtYlJlY3QpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+ZW5hYmxlZCgpKQogICAg
ICAgICBjb250ZXh0LT5maWxsUmVjdCh0aHVtYlJlY3QsIENvbG9yOjpkYXJrR3JheSwgQ29sb3JT
cGFjZURldmljZVJHQik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1Njcm9sbGJhclRoZW1lTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3Jv
bGxiYXJUaGVtZU1vY2suaAppbmRleCBlMjU0ODQyMmEyOGY1ZTcyM2U0MzUzZjhmNDU3NjUyNTNj
YjY4NWJiLi42MzMzODQxYWI3OTZiOWRjMjMzZjNmNjNlYjgwMGFiZmE3YjBiYjA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmgKQEAg
LTM2LDE1ICszNiwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tu
ZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcik7CiAKIHByb3RlY3Rl
ZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKSB7IHJldHVybiBmYWxz
ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKSB7IHJldHVybiB0cnVl
OyB9CisgICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7
IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVt
ZUNsaWVudCopIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0
dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZh
bHNlKSB7IHJldHVybiBJbnRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1
dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCAvKnBhaW50aW5nKi8gPSBm
YWxzZSkgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVj
dChTY3JvbGxiYXIqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVj
dCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJv
b2wgLypwYWludGluZyovID0gZmFsc2UpIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIHZpcnR1
YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9s
bGJhclBhcnQsIGJvb2wgLypwYWludGluZyovID0gZmFsc2UpIHsgcmV0dXJuIEludFJlY3QoKTsg
fQorICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBi
b29sIHBhaW50aW5nID0gZmFsc2UpOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNr
QmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3Vu
ZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3Qm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKICAgICAKIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIGlzTW9ja1RoZW1lKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmNwcAppbmRleCBlMzI0M2Vj
ZmE4OTc5YjlhNjgxZTE1OWJkZWU5YTliMTU5YzY3NDNjLi5kNGI1OGIxYjBlNWFmMTcwZjk2ZWY4
MzY0YjY5YjQ4NGEzNjIyMjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9TY3JvbGxiYXJUaGVtZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9T
Y3JvbGxiYXJUaGVtZVF0LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBTY3JvbGxiYXJQ
YXJ0IHNjcm9sbGJhclBhcnQoY29uc3QgUVN0eWxlOjpTdWJDb250cm9sJiBzYykKICAgICByZXR1
cm4gTm9QYXJ0OwogfQogCi1zdGF0aWMgUVN0eWxlT3B0aW9uU2xpZGVyKiBzdHlsZU9wdGlvblNs
aWRlcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgUVdpZGdldCogd2lkZ2V0ID0gMCkKK3N0YXRpYyBR
U3R5bGVPcHRpb25TbGlkZXIqIHN0eWxlT3B0aW9uU2xpZGVyKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIFFXaWRnZXQqIHdpZGdldCA9IDApCiB7CiAgICAgc3RhdGljIFFTdHlsZU9w
dGlvblNsaWRlciBvcHQ7CiAgICAgaWYgKHdpZGdldCkKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0
aWMgUVN0eWxlT3B0aW9uU2xpZGVyKiBzdHlsZU9wdGlvblNsaWRlcihTY3JvbGxiYXIqIHNjcm9s
bGJhciwgUVdpZGdldCogd2lkZwogICAgIHJldHVybiAmb3B0OwogfQogCi1ib29sIFNjcm9sbGJh
clRoZW1lUXQ6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Nyb2xsYmFy
VGhlbWVRdDo6cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3ND
b250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAg
ICAgaWYgKGdyYXBoaWNzQ29udGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSkgewogICAgICAg
IHNjcm9sbGJhci0+aW52YWxpZGF0ZVJlY3QoZGFtYWdlUmVjdCk7CkBAIC0xOTMsNyArMTkzLDcg
QEAgYm9vbCBTY3JvbGxiYXJUaGVtZVF0OjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU2Nyb2xs
YmFyUGFydCBTY3JvbGxiYXJUaGVtZVF0OjpoaXRUZXN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK1Njcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhl
bWVRdDo6aGl0VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICBRU3R5bGVPcHRpb25TbGlkZXIqIG9wdCA9IHN0
eWxlT3B0aW9uU2xpZGVyKHNjcm9sbGJhcik7CiAgICAgY29uc3QgUVBvaW50IHBvcyA9IHNjcm9s
bGJhci0+Y29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigpKTsKQEAgLTIw
MiwxMyArMjAyLDEzIEBAIFNjcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVRdDo6aGl0VGVzdChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzCiAgICAgcmV0dXJuIHNjcm9s
bGJhclBhcnQoc2MpOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lUXQ6OnNob3VsZENlbnRlck9u
VGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNj
cm9sbGJhclRoZW1lUXQ6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICAvLyBNaWRkbGUgY2xpY2sg
Y2VudGVycyBzbGlkZXIgdGh1bWIgKGlmIHN1cHBvcnRlZCkuCiAgICAgcmV0dXJuIHN0eWxlKCkt
PnN0eWxlSGludChRU3R5bGU6OlNIX1Njcm9sbEJhcl9NaWRkbGVDbGlja0Fic29sdXRlUG9zaXRp
b24pICYmIGV2dC5idXR0b24oKSA9PSBNaWRkbGVCdXR0b247CiB9CiAKLXZvaWQgU2Nyb2xsYmFy
VGhlbWVRdDo6aW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBh
cnQpCit2b2lkIFNjcm9sbGJhclRoZW1lUXQ6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQpCiB7CiAgICAgLy8gRklYTUU6IERvIG1v
cmUgcHJlY2lzZSBpbnZhbGlkYXRpb24uCiAgICAgc2Nyb2xsYmFyLT5pbnZhbGlkYXRlKCk7CkBA
IC0yMjQsNyArMjI0LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lUXQ6OnNjcm9sbGJhclRoaWNrbmVz
cyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKICAgICByZXR1cm4gc3R5bGUoKS0+
cGl4ZWxNZXRyaWMoUVN0eWxlOjpQTV9TY3JvbGxCYXJFeHRlbnQsICZvLCAwKTsKIH0KIAotaW50
IFNjcm9sbGJhclRoZW1lUXQ6OnRodW1iUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitp
bnQgU2Nyb2xsYmFyVGhlbWVRdDo6dGh1bWJQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQogewogICAgIGlmIChzY3JvbGxiYXItPmVuYWJsZWQoKSkgewogICAgICAgICBm
bG9hdCBwb3MgPSAoZmxvYXQpc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgKiAodHJhY2tMZW5ndGgo
c2Nyb2xsYmFyKSAtIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikpIC8gc2Nyb2xsYmFyLT5tYXhpbXVt
KCk7CkBAIC0yMzMsMjEgKzIzMywyMSBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVRdDo6dGh1bWJQb3Np
dGlvbihTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICByZXR1cm4gMDsKIH0KIAotaW50IFNjcm9s
bGJhclRoZW1lUXQ6OnRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9s
bGJhclRoZW1lUXQ6OnRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIp
CiB7CiAgICAgUVN0eWxlT3B0aW9uU2xpZGVyKiBvcHQgPSBzdHlsZU9wdGlvblNsaWRlcihzY3Jv
bGxiYXIpOwogICAgIEludFJlY3QgdGh1bWIgPSBzdHlsZSgpLT5zdWJDb250cm9sUmVjdChRU3R5
bGU6OkNDX1Njcm9sbEJhciwgb3B0LCBRU3R5bGU6OlNDX1Njcm9sbEJhclNsaWRlciwgMCk7CiAg
ICAgcmV0dXJuIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
ID8gdGh1bWIud2lkdGgoKSA6IHRodW1iLmhlaWdodCgpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhl
bWVRdDo6dHJhY2tQb3NpdGlvbihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJU
aGVtZVF0Ojp0cmFja1Bvc2l0aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7
CiAgICAgUVN0eWxlT3B0aW9uU2xpZGVyKiBvcHQgPSBzdHlsZU9wdGlvblNsaWRlcihzY3JvbGxi
YXIpOwogICAgIEludFJlY3QgdHJhY2sgPSBzdHlsZSgpLT5zdWJDb250cm9sUmVjdChRU3R5bGU6
OkNDX1Njcm9sbEJhciwgb3B0LCBRU3R5bGU6OlNDX1Njcm9sbEJhckdyb292ZSwgMCk7CiAgICAg
cmV0dXJuIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8g
dHJhY2sueCgpIC0gc2Nyb2xsYmFyLT54KCkgOiB0cmFjay55KCkgLSBzY3JvbGxiYXItPnkoKTsK
IH0KIAotaW50IFNjcm9sbGJhclRoZW1lUXQ6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQoraW50IFNjcm9sbGJhclRoZW1lUXQ6OnRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgUVN0eWxlT3B0aW9uU2xpZGVyKiBvcHQgPSBzdHlsZU9w
dGlvblNsaWRlcihzY3JvbGxiYXIpOwogICAgIEludFJlY3QgdHJhY2sgPSBzdHlsZSgpLT5zdWJD
b250cm9sUmVjdChRU3R5bGU6OkNDX1Njcm9sbEJhciwgb3B0LCBRU3R5bGU6OlNDX1Njcm9sbEJh
ckdyb292ZSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3Jv
bGxiYXJUaGVtZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVt
ZVF0LmgKaW5kZXggY2Y0ODgyZGEyMDNiYmYwZmI3Y2M2OWU3YzNlMWMxZmZkZDgxZjVlYi4uMDMz
N2JmODBjY2Y2NDZkMThlOGYwN2M0ZmU1YWNiYTNhYTk5NTIyZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuaApAQCAtNDAsMTkgKzQwLDE5IEBAIGNs
YXNzIFNjcm9sbGJhclRoZW1lUXQgOiBwdWJsaWMgU2Nyb2xsYmFyVGhlbWUgewogcHVibGljOgog
ICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lUXQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWlu
dChTY3JvbGxiYXIqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
KTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGNvcm5lclJlY3QpOwogCi0gICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3Qo
U2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBTY3Jv
bGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9s
bGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyKiwg
U2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCk7CiAKLSAgICB2aXJ0dWFsIGludCB0aHVtYlBv
c2l0aW9uKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJh
ciopOwotICAgIHZpcnR1YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKik7Ci0gICAgdmly
dHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBpbnQgdGh1bWJQ
b3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IHRodW1iTGVu
Z3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlv
bihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNj
cm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25l
c3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHAKaW5k
ZXggMzQzYmJiMjgwZWQ2YWY4NDhmNTFjYzAwZWQ5OGYzMWY3ZTE3ZTI0OC4uMWNjNTM4NWUxODdh
MjJlYWYxYjA1NWUzNGJlMGZmNjQzODkyOWIzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuY3BwCkBAIC0xMDQsMTQgKzEwNCwx
NCBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxi
YXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKICAgICByZXR1cm4gY1Njcm9sbGJhclRoaWNrbmVz
c1tjb250cm9sU2l6ZV07CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Omhhc0J1dHRv
bnMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpoYXNC
dXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNj
cm9sbGJhci0+ZW5hYmxlZCgpICYmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpv
bnRhbFNjcm9sbGJhciA/IAogICAgICAgICAgICAgIHNjcm9sbGJhci0+d2lkdGgoKSA6IAogICAg
ICAgICAgICAgIHNjcm9sbGJhci0+aGVpZ2h0KCkpID49IDIgKiAoY1JlYWxCdXR0b25MZW5ndGhb
c2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSAtIGNCdXR0b25IaXRJbnNldFtzY3JvbGxiYXItPmNv
bnRyb2xTaXplKCldKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzVGh1bWIo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpoYXNUaHVt
YihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiBzY3JvbGxi
YXItPmVuYWJsZWQoKSAmJiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxT
Y3JvbGxiYXIgPyAKICAgICAgICAgICAgICBzY3JvbGxiYXItPndpZHRoKCkgOiAKQEAgLTEzNCw3
ICsxMzQsNyBAQCBzdGF0aWMgSW50UmVjdCBidXR0b25SZXBhaW50UmVjdChjb25zdCBJbnRSZWN0
JiBidXR0b25SZWN0LCBTY3JvbGxiYXJPcmllbnRhdGlvbgogICAgIHJldHVybiBwYWludFJlY3Q7
CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmJhY2tCdXR0b25SZWN0KFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCitJbnRS
ZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCiB7CiAg
ICAgSW50UmVjdCByZXN1bHQ7CiAKQEAgLTE1Miw3ICsxNTIsNyBAQCBJbnRSZWN0IFNjcm9sbGJh
clRoZW1lU2FmYXJpOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xs
YmFyUGFydAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVT
YWZhcmk6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQ
YXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpm
b3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxi
YXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCiB7CiAgICAgSW50UmVjdCByZXN1bHQ7CiAgICAg
CkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIEludFJlY3QgdHJhY2tSZXBhaW50UmVjdChjb25z
dCBJbnRSZWN0JiB0cmFja1JlY3QsIFNjcm9sbGJhck9yaWVudGF0aW9uIG8KICAgICByZXR1cm4g
cGFpbnRSZWN0OwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjp0cmFja1JlY3Qo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcpCitJbnRSZWN0IFNjcm9sbGJhclRo
ZW1lU2FmYXJpOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9v
bCBwYWludGluZykKIHsKICAgICBpZiAocGFpbnRpbmcgfHwgIWhhc0J1dHRvbnMoc2Nyb2xsYmFy
KSkKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7CkBAIC0xOTMsMzYgKzE5
MywzNiBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjp0cmFja1JlY3QoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcpCiAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFy
LT54KCksIHNjcm9sbGJhci0+eSgpICsgY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xT
aXplKCldLCB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSAyICogY0J1dHRvbkxlbmd0
aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lU2Fm
YXJpOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xs
YmFyVGhlbWVTYWZhcmk6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQogewogICAgIHJldHVybiBjVGh1bWJNaW5MZW5ndGhbc2Nyb2xsYmFyLT5jb250
cm9sU2l6ZSgpXTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6c2hvdWxkQ2VudGVy
T25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wg
U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4gZXZ0
LnNoaWZ0S2V5KCkgJiYgZXZ0LmJ1dHRvbigpID09IExlZnRCdXR0b247CiB9CiAKLXZvaWQgU2Ny
b2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdHJh
Y2tSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUcmFja0JhY2tncm91bmQo
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRyYWNrUmVjdCkKIHsKICAgICBpZiAoIVNhZmFyaVRo
ZW1lTGlicmFyeSgpKQogICAgICAgICByZXR1cm47CiAgICAgTlNDb250cm9sU2l6ZSBzaXplID0g
c2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpID09IFNtYWxsU2Nyb2xsYmFyID8gTlNTbWFsbENvbnRy
b2xTaXplIDogTlNSZWd1bGFyQ29udHJvbFNpemU7CiAgICAgVGhlbWVDb250cm9sU3RhdGUgc3Rh
dGUgPSAwOwotICAgIGlmIChzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlzQWN0aXZlKCkp
CisgICAgaWYgKHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQogICAgICAgICBz
dGF0ZSB8PSBBY3RpdmVTdGF0ZTsKICAgICBpZiAoaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAg
ICAgICBzdGF0ZSB8PSBFbmFibGVkU3RhdGU7CiAgICAgcGFpbnRUaGVtZVBhcnQoc2Nyb2xsYmFy
LT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gVlNjcm9sbFRyYWNrUGFydCA6
IEhTY3JvbGxUcmFja1BhcnQsIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHRy
YWNrUmVjdCwgc2l6ZSwgc3RhdGUpOyAKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6
cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBidXR0b25SZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQp
Cit2b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQq
IGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgYnV0dG9uUmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGlmICghU2Fm
YXJpVGhlbWVMaWJyYXJ5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBOU0NvbnRyb2xTaXplIHNp
emUgPSBzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkgPT0gU21hbGxTY3JvbGxiYXIgPyBOU1NtYWxs
Q29udHJvbFNpemUgOiBOU1JlZ3VsYXJDb250cm9sU2l6ZTsKICAgICBUaGVtZUNvbnRyb2xTdGF0
ZSBzdGF0ZSA9IDA7Ci0gICAgaWYgKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3Rp
dmUoKSkKKyAgICBpZiAoc2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAgICAg
ICAgIHN0YXRlIHw9IEFjdGl2ZVN0YXRlOwogICAgIGlmIChoYXNCdXR0b25zKHNjcm9sbGJhcikp
CiAgICAgICAgIHN0YXRlIHw9IEVuYWJsZWRTdGF0ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHZv
aWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LCBTY3JvbGxiCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvblJlY3Qs
IHNpemUsIHN0YXRlKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUaHVt
YihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBh
aW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKIHsKICAgICBpZiAo
IVNhZmFyaVRoZW1lTGlicmFyeSgpKQogICAgICAgICByZXR1cm47CiAgICAgTlNDb250cm9sU2l6
ZSBzaXplID0gc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpID09IFNtYWxsU2Nyb2xsYmFyID8gTlNT
bWFsbENvbnRyb2xTaXplIDogTlNSZWd1bGFyQ29udHJvbFNpemU7CiAgICAgVGhlbWVDb250cm9s
U3RhdGUgc3RhdGUgPSAwOwotICAgIGlmIChzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlz
QWN0aXZlKCkpCisgICAgaWYgKHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQog
ICAgICAgICBzdGF0ZSB8PSBBY3RpdmVTdGF0ZTsKICAgICBpZiAoaGFzVGh1bWIoc2Nyb2xsYmFy
KSkKICAgICAgICAgc3RhdGUgfD0gRW5hYmxlZFN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuaAppbmRleCBmMDM5Mzc5ZWE0NDcw
OGU4YjViNzVmOTYwNTUzMmZlMTFkNjI2NTkyLi5mNDI3YjE5MGZkNjc2NjUyMTU2NzU2NmNiNmNi
YzRkZmU0M2Q5OTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Ny
b2xsYmFyVGhlbWVTYWZhcmkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Ny
b2xsYmFyVGhlbWVTYWZhcmkuaApAQCAtNDEsMjAgKzQxLDIwIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAK
IHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBib29sIGhh
c0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1
bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0
dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2Up
OwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3Jv
bGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0
cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFs
IEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQ
YXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJk
QnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFp
bnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CiAKLSAgICB2aXJ0dWFsIGludCBt
aW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRo
dW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAgICAgCi0gICAgdmlydHVhbCBib29s
IHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
Jik7CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBw
YWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRS
ZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1
YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IElu
dFJlY3QmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Ny
b2xsYmFyVGhlbWVXaW4uY3BwCmluZGV4IGQzNjM0MTA2ODQ4N2ZmMWI3ODY5NzY4ZTlkNWY2YjJm
NDg5ODFhYTUuLjU2NDQyOTdkN2YyNzBjNTBjN2EyOGVmM2IxZTI0YWNmMWQxMjc5ZTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcApA
QCAtMTMwLDEyICsxMzAsMTIgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6aW52YWxpZGF0ZU9u
TW91c2VFbnRlckV4aXQoKQogICAgIHJldHVybiBydW5uaW5nVmlzdGE7CiB9CiAKLWJvb2wgU2Ny
b2xsYmFyVGhlbWVXaW46Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3Jv
bGxiYXJUaGVtZVdpbjo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikK
IHsKICAgICByZXR1cm4gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+IDA7CiB9CiAKLUludFJlY3Qg
U2Nyb2xsYmFyVGhlbWVXaW46OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBT
Y3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpiYWNr
QnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0
IHBhcnQsIGJvb2wpCiB7CiAgICAgLy8gV2luZG93cyBqdXN0IGhhcyBzaW5nbGUgYXJyb3dzLgog
ICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0b25FbmRQYXJ0KQpAQCAtMTU0LDcgKzE1NCw3IEBAIElu
dFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBTY3JvbGxiYXJQYXJ0IHBhCiAgICAgICAgICAgICAgICAgICAgdGhpY2tuZXNzLCBzY3Jv
bGxiYXItPmhlaWdodCgpIDwgMiAqIHRoaWNrbmVzcyA/IHNjcm9sbGJhci0+aGVpZ2h0KCkgLyAy
IDogdGhpY2tuZXNzKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6Zm9yd2FyZEJ1
dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkK
K0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICAv
LyBXaW5kb3dzIGp1c3QgaGFzIHNpbmdsZSBhcnJvd3MuCiAgICAgaWYgKHBhcnQgPT0gRm9yd2Fy
ZEJ1dHRvblN0YXJ0UGFydCkKQEAgLTE3NSw3ICsxNzUsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRo
ZW1lV2luOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFy
UGFydAogICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSAr
IHNjcm9sbGJhci0+aGVpZ2h0KCkgLSBoLCB0aGlja25lc3MsIGgpOwogfQogCi1JbnRSZWN0IFNj
cm9sbGJhclRoZW1lV2luOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJ
bnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhciwgYm9vbCkKIHsKICAgICBpbnQgdGhpY2tuZXNzID0gc2Nyb2xsYmFyVGhpY2tu
ZXNzKCk7CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Ny
b2xsYmFyKSB7CkBAIC0xODgsMTIgKzE4OCwxMiBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2lu
Ojp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCiAgICAgcmV0dXJuIEludFJl
Y3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpICsgdGhpY2tuZXNzLCB0aGlja25lc3Ms
IHNjcm9sbGJhci0+aGVpZ2h0KCkgLSAyICogdGhpY2tuZXNzKTsKIH0KIAotYm9vbCBTY3JvbGxi
YXJUaGVtZVdpbjo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZENlbnRlck9u
VGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2
dCkKIHsKICAgICByZXR1cm4gZXZ0LnNoaWZ0S2V5KCkgJiYgZXZ0LmJ1dHRvbigpID09IExlZnRC
dXR0b247CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9EcmFn
T3JpZ2luKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2
dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZ0KQogewogICAgIC8vIEZpbmQgdGhlIHJlY3Qgd2l0aGluIHdoaWNoIHdlIHNob3VsZG4ndCBz
bmFwLCBieSBleHBhbmRpbmcgdGhlIHRyYWNrIHJlY3QKICAgICAvLyBpbiBib3RoIGRpbWVuc2lv
bnMuCkBAIC0yMTEsMTQgKzIxMSwxNCBAQCBib29sIFNjcm9sbGJhclRoZW1lV2luOjpzaG91bGRT
bmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUAogICAgIHJl
dHVybiAhcmVjdC5jb250YWlucyhtb3VzZVBvc2l0aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJU
aGVtZVdpbjo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFy
VGhlbWVXaW46OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsK
ICAgICAvLyBKdXN0IGFzc3VtZSBhIGZvcndhcmQgdHJhY2sgcGFydC4gIFdlIG9ubHkgcGFpbnQg
dGhlIHRyYWNrIGFzIGEgc2luZ2xlIHBpZWNlIHdoZW4gdGhlcmUgaXMgbm8gdGh1bWIuCiAgICAg
aWYgKCFoYXNUaHVtYihzY3JvbGxiYXIpKQogICAgICAgICBwYWludFRyYWNrUGllY2UoY29udGV4
dCwgc2Nyb2xsYmFyLCByZWN0LCBGb3J3YXJkVHJhY2tQYXJ0KTsKIH0KIAotdm9pZCBTY3JvbGxi
YXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFy
dFR5cGUpCit2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQogewogICAgIGNoZWNrQW5kSW5p
dFNjcm9sbGJhclRoZW1lKCk7CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFNjcm9sbGJhclRo
ZW1lV2luOjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxi
YXIqIHNjcgogI2VuZGlmCiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50QnV0dG9u
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46
OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQog
ewogICAgIGNoZWNrQW5kSW5pdFNjcm9sbGJhclRoZW1lKCk7CiAKQEAgLTMzOSw3ICszMzksNyBA
QCBzdGF0aWMgSW50UmVjdCBncmlwcGVyUmVjdChpbnQgdGhpY2tuZXNzLCBjb25zdCBJbnRSZWN0
JiB0aHVtYlJlY3QpCiAgICAgICAgICAgICAgICAgICAgZ3JpcHBlclRoaWNrbmVzcywgZ3JpcHBl
clRoaWNrbmVzcyk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50R3JpcHBlcihTY3JvbGxiYXIqIHNj
cm9sbGJhciwgSERDIGhkYywgY29uc3QgSW50UmVjdCYgcmVjdCkKK3N0YXRpYyB2b2lkIHBhaW50
R3JpcHBlcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBIREMgaGRjLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQogewogICAgIGlmICghc2Nyb2xsYmFyVGhlbWUpCiAgICAgICAgIHJldHVy
bjsgIC8vIENsYXNzaWMgbG9vayBoYXMgbm8gZ3JpcHBlci4KQEAgLTM1OCw3ICszNTgsNyBAQCBz
dGF0aWMgdm9pZCBwYWludEdyaXBwZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEhEQyBoZGMsIGNv
bnN0IEludFJlY3QmIHJlY3QpCiAgICAgRHJhd1RoZW1lQmFja2dyb3VuZChzY3JvbGxiYXJUaGVt
ZSwgaGRjLCBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/
IFNQX0dSSVBQRVJIT1IgOiBTUF9HUklQUEVSVkVSVCwgc3RhdGUsICZ0aGVtZVJlY3QsIDApOwog
fQogCi12b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lk
IFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsK
ICAgICBjaGVja0FuZEluaXRTY3JvbGxiYXJUaGVtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oCmluZGV4IGNkMmYxNzZkZmRjOTczODJj
MzViYjc3M2Y5YjFlOGRhZDIxMjc2YjYuLjg3MDI0MGMxNjU1OGNmMGY2MjU3NDE5NmVlYjY5YWFh
ODA2YTdhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxi
YXJUaGVtZVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJU
aGVtZVdpbi5oCkBAIC00MiwyMCArNDIsMjAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBp
bnZhbGlkYXRlT25Nb3VzZUVudGVyRXhpdCgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBi
b29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwg
Ym9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhT
Y3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBi
YWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0g
ZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIq
LCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50
UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2
aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3Jv
bGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBm
b3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJv
b2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Ny
b2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNo
b3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4o
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3Jv
bGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVj
ZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFy
UGFydCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNj
cm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0
Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4
dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwg
dm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3Qg
SW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwog
fTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFy
VGhlbWVXeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4
LmNwcAppbmRleCBjOTI0OTc4YTUwNWFjMzFmMTQwNTFlMzAxODMzMDY0MjUxM2M0YTUxLi5iYWRm
MzE1NTQwNWE2YTUxMzY2MjMyNWI5MjM1OWRjODEzYTk1MjQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmNwcApAQCAtNzEsMTkgKzcxLDE5IEBA
IGludCBTY3JvbGxiYXJUaGVtZVd4OjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJv
bFNpemUgc2l6ZSkKICAgICByZXR1cm4gdGhpY2tuZXNzOwogfQogCi1ib29sIFNjcm9sbGJhclRo
ZW1lV3g6Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVt
ZVd4OjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIC8v
IFRoaXMgbWV0aG9kIGlzIGp1c3QgY2FsbGVkIGFzIGEgcGFpbnQtdGltZSBvcHRpbWl6YXRpb24g
dG8gc2VlIGlmCiAgICAgLy8gcGFpbnRpbmcgdGhlIHRodW1iIGNhbiBiZSBza2lwcGVkLiAgV2Ug
ZG9uJ3QgaGF2ZSB0byBiZSBleGFjdCBoZXJlLgogICAgIHJldHVybiB0aHVtYkxlbmd0aChzY3Jv
bGxiYXIpID4gMDsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lV3g6Om1pbmltdW1UaHVtYkxlbmd0
aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVd4OjptaW5pbXVtVGh1
bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4g
MjA7CiB9CiAKLUludFNpemUgU2Nyb2xsYmFyVGhlbWVXeDo6YnV0dG9uU2l6ZShTY3JvbGxiYXIq
KSAKK0ludFNpemUgU2Nyb2xsYmFyVGhlbWVXeDo6YnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNs
aWVudCopIAogewogI2lmZGVmIF9fV1hNQUNfXwogICAgIHJldHVybiBJbnRTaXplKDIwLDIwKTsK
QEAgLTkyLDcgKzkyLDcgQEAgSW50U2l6ZSBTY3JvbGxiYXJUaGVtZVd4OjpidXR0b25TaXplKFNj
cm9sbGJhciopCiAjZW5kaWYKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVd4OjpzcGxpdFRyYWNr
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tS
ZWN0LCBJbnRSZWN0JiBiZWZvcmVUaHVtYlJlY3QsIEludFJlY3QmIHRodW1iUmVjdCwgSW50UmVj
dCYgYWZ0ZXJUaHVtYlJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lV3g6OnNwbGl0VHJhY2soU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhaW5l
ZFRyYWNrUmVjdCwgSW50UmVjdCYgYmVmb3JlVGh1bWJSZWN0LCBJbnRSZWN0JiB0aHVtYlJlY3Qs
IEludFJlY3QmIGFmdGVyVGh1bWJSZWN0KQogewogICAgIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRl
OjpzcGxpdFRyYWNrKHNjcm9sbGJhciwgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCwgYmVmb3JlVGh1
bWJSZWN0LCB0aHVtYlJlY3QsIGFmdGVyVGh1bWJSZWN0KTsKICNpZmRlZiBfX1dYTUFDX18KQEAg
LTEwOSw3ICsxMDksNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lV3g6OnNwbGl0VHJhY2soU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYQogI2VuZGlmCiB9CiAKLUlu
dFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6
YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFy
UGFydCBwYXJ0LCBib29sKQogewogICAgIC8vIEZJWE1FOiBIYW5kbGluZyB0aGlzIGNhc2UgaXMg
bmVlZGVkIHdoZW4gdGhlcmUgYXJlIHR3byBzZXRzIG9mIGFycm93IGJ1dHRvbnMKICAgICAvLyBv
biBNYWMsIG9uZSBhdCB0aGUgdG9wIGFuZCBvbmUgYXQgdGhlIGJvdHRvbS4KQEAgLTEzMCw3ICsx
MzAsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcgogICAgIHJldHVybiBJbnRSZWN0KHgsIHks
IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhl
bWVXeDo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBh
cnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6Zm9yd2FyZEJ1dHRvblJl
Y3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBi
b29sKQogewogICAgIC8vIEZJWE1FOiBIYW5kbGluZyB0aGlzIGNhc2UgaXMgbmVlZGVkIHdoZW4g
dGhlcmUgYXJlIHR3byBzZXRzIG9mIGFycm93IGJ1dHRvbnMKICAgICAvLyBvbiBNYWMsIG9uZSBh
dCB0aGUgdG9wIGFuZCBvbmUgYXQgdGhlIGJvdHRvbS4KQEAgLTE1NSw3ICsxNTUsNyBAQCBJbnRS
ZWN0IFNjcm9sbGJhclRoZW1lV3g6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgcmV0dXJuIEludFJlY3QoeCwgeSwgc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojp0cmFja1Jl
Y3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6
OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sKQogewogICAg
IEludFNpemUgYnMgPSBidXR0b25TaXplKHNjcm9sbGJhcik7CiAgICAgaW50IHRyYWNrU3RhcnQg
PSAwOwpAQCAtMTc5LDExICsxNzksMTEgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojp0cmFj
a1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCiAgICAgcmV0dXJuIEludFJlY3Qoc2Ny
b2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpICsgdHJhY2tTdGFydCwgdGhpY2tuZXNzLCBzY3Jv
bGxiYXItPmhlaWdodCgpIC0gMiAqIGJzLmhlaWdodCgpKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJU
aGVtZVd4OjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZVd4OjpwYWludChT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgd3hPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9
IChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgPyB3eEhP
UklaT05UQUwgOiB3eFZFUlRJQ0FMOwogICAgIGludCBmbGFncyA9IDA7Ci0gICAgaWYgKHNjcm9s
bGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSkKKyAgICBpZiAoc2Nyb2xsYmFyLT5p
c1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAgICAgICAgIGZsYWdzIHw9IHd4Q09OVFJPTF9GT0NV
U0VEOwogICAgIAogICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmgKaW5kZXggNzVhYjE3NWEzYmE2MDRm
Y2Q3OTVhZDJlYTQ1ZWRmY2Y1ODNlZTU1OC4uMzcyYWFmOTY2MmY3NDVkNGVlMDc0N2VkZjVjMTFm
OWZjNWFkODk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xs
YmFyVGhlbWVXeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Njcm9sbGJhclRo
ZW1lV3guaApAQCAtMzUsMjEgKzM1LDIxIEBAIGNsYXNzIFNjcm9sbGJhclRoZW1lV3ggOiBwdWJs
aWMgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUgewogcHVibGljOgogICAgIHZpcnR1YWwgflNjcm9s
bGJhclRoZW1lV3goKTsKICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xs
YmFyQ29udHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFp
bnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZp
cnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmKTsKICAgICAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFz
QnV0dG9ucyhTY3JvbGxiYXIqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGhh
c1RodW1iKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJh
clRoZW1lQ2xpZW50KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVt
YihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNp
emUoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3Jv
bGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1
YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBi
b29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Ny
b2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBh
aW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxz
ZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCos
IGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3BsaXRUcmFjayhT
Y3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiB0cmFjaywgSW50UmVjdCYgc3RhcnRUcmFjaywgSW50
UmVjdCYgdGh1bWIsIEludFJlY3QmIGVuZFRyYWNrKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3BsaXRU
cmFjayhTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmIHRyYWNrLCBJbnRSZWN0
JiBzdGFydFRyYWNrLCBJbnRSZWN0JiB0aHVtYiwgSW50UmVjdCYgZW5kVHJhY2spOwogICAgIAot
ICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0
dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIH07CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaAppbmRleCA4MTBj
OThmZjM2NjhhYjkxY2RlOWMzNTcxOGQ2ZjA0YjJmNzQ2NzFiLi43ZmUyZmFjOGI4ZDQ5NzU0ZDhl
YWIyM2Q0MDViMTYyYmUzM2RjN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhci5oCkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1bnNp
Z25lZCwgUmVuZGVyU2Nyb2xsYmFyUGFydCo+IG1fcGFydHM7CiB9OwogCi1pbmxpbmUgUmVuZGVy
U2Nyb2xsYmFyKiB0b1JlbmRlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2lubGlu
ZSBSZW5kZXJTY3JvbGxiYXIqIHRvUmVuZGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIpCiB7CiAgICAgQVNTRVJUKCFzY3JvbGxiYXIgfHwgc2Nyb2xsYmFyLT5pc0N1
c3RvbVNjcm9sbGJhcigpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyU2Nyb2xsYmFy
Kj4oc2Nyb2xsYmFyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyVGhlbWUuY3BwCmluZGV4IDg3MzA5ZDQ0ZTVhYTQ1MjY5NzlhZmViZTUxMjc4YjRlNDZh
NWU5MTcuLjQ0ZTJhYTYzMWRjMjgxNTAxNzRiYzIyNTIzMGU4YjZhYWI3ZDBkMzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcApAQCAt
MjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9s
bGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCisjaW5jbHVkZSAiU2Ny
b2xsYmFyVGhlbWVDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDcgKzM3LDcgQEAgUmVuZGVyU2Nyb2xsYmFyVGhlbWUq
IFJlbmRlclNjcm9sbGJhclRoZW1lOjpyZW5kZXJTY3JvbGxiYXJUaGVtZSgpCiAgICAgcmV0dXJu
ICZ0aGVtZTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9u
Z1RyYWNrQXhpcyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFm
dGVyU2l6ZSkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVzQWxvbmdUcmFj
a0F4aXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBp
bnQmIGFmdGVyU2l6ZSkKIHsKICAgICBJbnRSZWN0IGZpcnN0QnV0dG9uID0gYmFja0J1dHRvblJl
Y3Qoc2Nyb2xsYmFyLCBCYWNrQnV0dG9uU3RhcnRQYXJ0KTsKICAgICBJbnRSZWN0IHNlY29uZEJ1
dHRvbiA9IGZvcndhcmRCdXR0b25SZWN0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRvblN0YXJ0UGFy
dCk7CkBAIC01MSw3ICs1Miw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNp
emVzQWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGludCYKICAgICB9CiB9CiAK
LWJvb2wgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIpCitib29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaW50IHN0YXJ0U2l6ZTsKICAgICBpbnQgZW5kU2l6
ZTsKQEAgLTU5LDI3ICs2MCwyNyBAQCBib29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNCdXR0
b25zKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiAoc3RhcnRTaXplICsgZW5kU2l6
ZSkgPD0gKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8g
c2Nyb2xsYmFyLT53aWR0aCgpIDogc2Nyb2xsYmFyLT5oZWlnaHQoKSk7CiB9CiAKLWJvb2wgUmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhcikKIHsKICAgICByZXR1cm4gdHJhY2tMZW5ndGgoc2Nyb2xsYmFyKSAtIHRodW1iTGVuZ3Ro
KHNjcm9sbGJhcikgPj0gMDsKIH0KIAotaW50IFJlbmRlclNjcm9sbGJhclRoZW1lOjptaW5pbXVt
VGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgUmVuZGVyU2Nyb2xsYmFyVGhl
bWU6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQog
ewogICAgIHJldHVybiB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5taW5pbXVtVGh1bWJM
ZW5ndGgoKTsKIH0KIAotSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YmFja0J1dHRvblJl
Y3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCitJ
bnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29sKQogewogICAg
IHJldHVybiB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5idXR0b25SZWN0KHBhcnRUeXBl
KTsKIH0KIAotSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Zm9yd2FyZEJ1dHRvblJlY3Qo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCitJbnRS
ZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29sKQogewogICAg
IHJldHVybiB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5idXR0b25SZWN0KHBhcnRUeXBl
KTsKIH0KIAotSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6dHJhY2tSZWN0KFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6dHJhY2tS
ZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgaWYgKCFo
YXNCdXR0b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHJldHVybiBzY3JvbGxiYXItPmZyYW1lUmVj
dCgpOwpAQCAtOTEsNyArOTIsNyBAQCBJbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFj
a1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCiAgICAgcmV0dXJuIHRvUmVuZGVyU2Ny
b2xsYmFyKHNjcm9sbGJhciktPnRyYWNrUmVjdChzdGFydExlbmd0aCwgZW5kTGVuZ3RoKTsKIH0K
IAotSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFj
a1BpZWNlcyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK0ludFJl
Y3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsg
CiAgICAgSW50UmVjdCBiYWNrUmVjdCA9IHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnRy
YWNrUGllY2VSZWN0V2l0aE1hcmdpbnMoQmFja1RyYWNrUGFydCwgcmVjdCk7CiAgICAgSW50UmVj
dCBmb3J3YXJkUmVjdCA9IHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnRyYWNrUGllY2VS
ZWN0V2l0aE1hcmdpbnMoRm9yd2FyZFRyYWNrUGFydCwgcmVjdCk7CkBAIC0xMTIsMjcgKzExMywy
NyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxW
aWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZQogICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5l
clJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKLXZvaWQgUmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBSZW5kZXJTY3JvbGxiYXJU
aGVtZTo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICB0b1JlbmRlclNjcm9sbGJh
cihzY3JvbGxiYXIpLT5wYWludFBhcnQoY29udGV4dCwgU2Nyb2xsYmFyQkdQYXJ0LCBzY3JvbGxi
YXItPmZyYW1lUmVjdCgpKTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRU
cmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBh
aW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICB0b1JlbmRl
clNjcm9sbGJhcihzY3JvbGxiYXIpLT5wYWludFBhcnQoY29udGV4dCwgVHJhY2tCR1BhcnQsIHJl
Y3QpOwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNrUGllY2UoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0
KQogewogICAgIHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnBhaW50UGFydChjb250ZXh0
LCBwYXJ0LCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0
b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJU
aGVtZTo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBh
cnQpCiB7CiAgICAgdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+cGFpbnRQYXJ0KGNvbnRl
eHQsIHBhcnQsIHJlY3QpOwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRo
dW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHJlY3QpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRodW1iKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIp
LT5wYWludFBhcnQoY29udGV4dCwgVGh1bWJQYXJ0LCByZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggNzBjMjRhNWVhMmVk
NzliYjlmOGZhZDAyMTM3YzYzNTY5ZDk5NjNjNC4uZWM5MmJkYzkzOTNhY2M2ZjJkYTZhMTc0Zjc3
YjlmM2VhMTQxZmU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclRoZW1lLmgKQEAgLTQ2LDM1ICs0NiwzNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldmVudCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNob3VsZENl
bnRlck9uVGh1bWIoc2Nyb2xsYmFyLCBldmVudCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+
c2hvdWxkQ2VudGVyT25UaHVtYihzY3JvbGxiYXIsIGV2ZW50KTsgfQogICAgIAogICAgIHZpcnR1
YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIFNjcm9sbGJh
clRoZW1lOjp0aGVtZSgpLT5pbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKTsgfQogICAgIHZp
cnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1lckRlbGF5KCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhl
bWU6OnRoZW1lKCktPmF1dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9p
ZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xs
YmFyVGhlbWU6OnRoZW1lKCktPnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikgeyBy
ZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVucmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xs
YmFyKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cmVn
aXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQorICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVy
U2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpIHsgcmV0dXJuIFNjcm9s
bGJhclRoZW1lOjp0aGVtZSgpLT51bnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KIAot
ICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0
dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAg
IHZvaWQgYnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgaW50
JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSk7CisgICAgdm9pZCBidXR0b25TaXplc0Fsb25n
VHJhY2tBeGlzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGludCYgYmVmb3JlU2l6
ZSwgaW50JiBhZnRlclNpemUpOwogICAgIAogICAgIHN0YXRpYyBSZW5kZXJTY3JvbGxiYXJUaGVt
ZSogcmVuZGVyU2Nyb2xsYmFyVGhlbWUoKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9v
bCBoYXNCdXR0b25zKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3Jv
bGxiYXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVu
dCopOworICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwog
Ci0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJh
clBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndh
cmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBm
YWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29sIHBh
aW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7
CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFs
IEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9
IGZhbHNlKTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5k
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciopOyAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50
UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1
YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwg
dm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKTsgICAgCisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5k
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYp
OworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAg
dmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRv
VHJhY2tQaWVjZXMoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgSW50
UmVjdCBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgSW50UmVjdCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128880</attachid>
            <date>2012-02-25 13:29:25 -0800</date>
            <delta_ts>2012-02-28 14:32:34 -0800</delta_ts>
            <desc>Fixes style bugs</desc>
            <filename>bug-78028-20120225162924.patch</filename>
            <type>text/plain</type>
            <size>134807</size>
            <attacher name="Peter Kotwicz">pkotwicz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4Njk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzQxYzM5NDNlODZjOWEz
ZDViNjdhOWM3NmIxN2IwYjc3MzhkMmU4MS4uZWUzNmQxNjMyOTQzMDUzODk2YjM1OTBhNzkzMzJj
OTQwZjdhYWNiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3MSBAQAorMjAxMi0wMi0yMyAgUGV0
ZXIgS290d2ljeiAgPHBrb3R3aWN6QGdvb2dsZS5jb20+CisKKyAgICAgICAgRGVjb3VwbGUgc2Ny
b2xsYmFyIHBhaW50aW5nIGZyb20gU2Nyb2xsYmFyIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwMjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhcjo6c2V0RnJhbWVSZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjppbnZhbGlkYXRlUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXI6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXI6OmdldFRpY2ttYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6
OmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpp
c1Njcm9sbFZpZXdTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzZXRF
bmFibGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAgICAgKFNjcm9s
bGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OngpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjp5KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6d2lkdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bG9jYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjpyb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZnJhbWVS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6aW52YWxpZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXI6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmlzQ3VzdG9tU2Nyb2xsYmFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhcjo6b3JpZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmN1cnJlbnRQb3MpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp2aXNpYmxlU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXI6OnRvdGFsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6
Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpjb250cm9sU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmxpbmVTdGVwKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhcjo6cGFnZVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpwcmVz
c2VkUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmhvdmVyZWRQYXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6c3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhcjo6ZW5hYmxlZCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWU6OnVwZGF0ZUVuYWJsZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OmhpdFRlc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6aW52YWxpZGF0ZVBhcnRz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjppbnZhbGlkYXRlUGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkQ2VudGVyT25UaHVtYik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmln
aW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnNob3VsZERyYWdEb2N1bWVu
dEluc3RlYWRPZlRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp0aHVt
YlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp0aHVtYkxlbmd0
aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dHJhY2tQb3NpdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dHJhY2tMZW5ndGgpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDbGllbnQ6On5TY3JvbGxiYXJUaGVtZUNsaWVudCk6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlOjpoaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjp1c2VkVG90
YWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVt
YlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0
aHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6
bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjp0cmFja1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjp0cmFja0xlbmd0aCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNjcm9sbGJhckJhY2tn
cm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50
VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjpwYWludFRyYWNrUGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjpwYWludFRpY2ttYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpoYXNUaHVtYik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpmb3J3YXJkQnV0dG9uUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjp0cmFja1JlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUcmFja0JhY2tncm91
bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUaWNr
bWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW06Omhhc0J1dHRv
bnMpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50U2Nyb2xsYmFyQmFj
a2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9p
ZDo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtQW5kcm9pZDo6YnV0dG9uU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNocm9taXVtQW5kcm9pZDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5oOgorICAgICAg
ICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQpOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50QnV0dG9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNob3VsZENl
bnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxp
bnV4OjpidXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21p
dW1MaW51eDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1MaW51eCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hYy5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyk6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50R2l2ZW5UaWNrbWFya3MpOgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkU25h
cEJhY2tUb0RyYWdPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bVdpbjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1XaW46OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3NpY1RoZW1lU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkQ2Vu
dGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtV2lu
OjpidXR0b25TaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtV2luLmg6CisgICAgICAgIChTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVFZmw6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lRWZsOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaDoKKyAgICAgICAgKFNjcm9sbGJhclRo
ZW1lRWZsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6
cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6
OnVucmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVH
dGs6OnVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUd0azo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lR3RrOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZUd0azo6dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3Rr
Ojp0aHVtYlJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpzaG91bGRDZW50ZXJPblRo
dW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpidXR0b25TaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjptaW5pbXVtVGh1bWJMZW5ndGgp
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5oOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xs
YmFyVGhlbWVHdGspOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1iKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRvbik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRCdXR0b24pOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVNYWMp
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVy
U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp1bnJlZ2lz
dGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzZXRO
ZXdQYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
TWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVNYWM6Omhhc1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
TWFjOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1h
Yzo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVN
YWM6OnRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6bWlu
aW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpz
aG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFj
OjpzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlRW5hYmxlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3Jv
bGxiYXJUaGVtZU1vY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2Nr
Ojp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWlu
dFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6
OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2Nr
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6Omhhc0J1dHRvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpoYXNUaHVtYik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAg
ICAoU2Nyb2xsYmFyVGhlbWVNb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9TY3JvbGxiYXJU
aGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlT3B0aW9uU2xpZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lUXQ6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVRdDo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZVF0OjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZVF0Ojp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
UXQ6OnRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnRy
YWNrUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVRdDo6dHJhY2tM
ZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuaDoKKyAgICAg
ICAgKFNjcm9sbGJhclRoZW1lUXQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJU
aGVtZVNhZmFyaS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6
aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFz
VGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmJhY2tCdXR0
b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpmb3J3YXJk
QnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6dHJh
Y2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjptaW5pbXVt
VGh1bWJMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnNo
b3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZh
cmk6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6cGFpbnRUaHVtYik6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRo
ZW1lU2FmYXJpLmg6CisgICAgICAgIChTY3JvbGxiYXJUaGVtZVNhZmFyaSk6CisgICAgICAgICog
cGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lV2luOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZVdpbjo6YmFja0J1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVXaW46OmZvcndhcmRCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lV2luOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46
OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVX
aW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lV2luOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lV2luOjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpwYWludEdy
aXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VGh1bWIp
OgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xs
YmFyVGhlbWVXaW4pOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzVGh1bWIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV3g6OmJ1dHRvblNpemUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6c3BsaXRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZVd4OjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVXeDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guaDoK
KyAgICAgICAgKFNjcm9sbGJhclRoZW1lV3gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVXeDo6aGFzQnV0dG9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
ci5oOgorICAgICAgICAoV2ViQ29yZTo6dG9SZW5kZXJTY3JvbGxiYXIpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1pbmltdW1UaHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YmFja0J1dHRvblJlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmZvcndhcmRCdXR0b25SZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVj
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xs
YmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFy
VGhlbWU6OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxi
YXJUaGVtZTo6cGFpbnRCdXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFy
VGhlbWU6OnBhaW50VGh1bWIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJU
aGVtZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnNob3VsZENl
bnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJl
Z2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1l
Ojp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFJlbmRlclNjcm9sbGJhclRoZW1lKToK
KwogMjAxMi0wMi0yMSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gTm90aWZ5IGNvbXBvc2l0b3Igb2Ygd2hlZWwgZXZlbnQgcmVnaXN0
cmF0aW9uIHZpYSBTY3JvbGxpbmdDb29yZGluYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDlkZGY5
MTVmNGVhYzAwNGVlZTY4NTgyYTI4MjE3MzM1YmIzY2E1NjIuLjFkMmZjMzc5MjMyNmFjOWU2M2Nj
MTgyYjMzZDczYmY3YzAyNzYxYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTI5Miw2ICsyOTIsNyBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL1Njcm9sbGJhci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1NoYXJlZEJ1
ZmZlckNodW5rUmVhZGVyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZhMzEzMjdiOWM3NzRkZTEzMzExNTA1ZjA3YTAxYTE2
NjFhMDM0YzguLmYwNjMxMDkwOGI5NWIxMTRjZGRiZmZkNzg0ODAwNzMwMTdjNWE4ZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTU2MDAsNiArNTYwMCw3IEBACiAJCUM1RDRBQTdBMTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1l
dHJpY3NNYXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM1RDRBQTc4MTE2QkFGQjYwMDY5Q0E5MyAvKiBHbHlwaE1ldHJpY3NNYXAuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNUU5QjY3NzEwNjk3RTEz
MDBDN0JCMUEgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUU5QjY3NjEwNjk3RTEzMDBDN0JCMUEgLyog
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAgKi87IH07CiAJCUM1RUJERDg0MTA1RURERUMwMDU2
ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFn
ZUV2ZW50RGlzcGF0Y2hlci5oICovOyB9OworCQlDNkIzMUIyRTE0Rjg0MUZCMDA4OUYyM0YgLyog
U2Nyb2xsYmFyVGhlbWVDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEM2OTE2MTQ3MTRGNkVCQTcwMDQ2Mzc1QyAvKiBTY3JvbGxiYXJUaGVtZUNs
aWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUM2RDc0QUQ1MDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RDc0QUQzMDlB
QTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAqLzsgfTsKIAkJQzZE
NzRBRTQwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3NEFFMzA5QUEy
OTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLzsgfTsKIAkJQzZG
MDhGQkMxNDMwRkU4RjAwNjg1ODQ5IC8qIE11dGF0aW9uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RjA4RkI5MTQzMEZFOEYwMDY4NTg0
OSAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi87IH07CkBAIC0xMjU4Myw2ICsxMjU4NCw3IEBACiAJ
CUM1RUJERDgxMTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzVGNzY1QjQxNEUxRDQxNDAwNkM4OTlCIC8q
IFBhc3RlYm9hcmRTdHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
YXN0ZWJvYXJkU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzVGNzY1
QkExNEUxRUNGNDAwNkM4OTlCIC8qIFBsYXRmb3JtUGFzdGVib2FyZE1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtUGFzdGVib2FyZE1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzY5MTYxNDcxNEY2RUJBNzAwNDYzNzVDIC8q
IFNjcm9sbGJhclRoZW1lQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjcm9sbGJhclRoZW1lQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2
RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RDc0QUUzMDlBQTI5MEEwMDBCMEE1MiAv
KiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQzZGMDhGQjkxNDMwRkU4RjAwNjg1ODQ5IC8qIE11dGF0aW9uUmVjb3Jk
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE11dGF0aW9uUmVjb3Jk
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5OTIxLDYgKzE5OTIzLDcgQEAK
IAkJCQlCQ0FBOTBDMjBBN0VCQTYwMDA4QjEyMjkgLyogU2Nyb2xsYmFyLmNwcCAqLywKIAkJCQlC
QzdCMkFGODA0NTA4MjQxMDBBODAwMEYgLyogU2Nyb2xsYmFyLmggKi8sCiAJCQkJMEZFNzE0MTUx
NDIxODlGQzAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lLmNwcCAqLywKKwkJCQlDNjkxNjE0NzE0
RjZFQkE3MDA0NjM3NUMgLyogU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCAqLywKIAkJCQlCQzhCODU0
QTBFN0M3RjU2MDBBQjY5ODQgLyogU2Nyb2xsYmFyVGhlbWUuaCAqLywKIAkJCQlCQzE0MDI4ODBF
ODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwICovLAogCQkJCUJD
MTQwMjg5MEU4MzY4MDgwMDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oICovLApA
QCAtMjM2OTEsNiArMjM2OTQsNyBAQAogCQkJCUNBM0JGNjdFMTBEOTlCQUUwMEU2Q0U1MyAvKiBT
Y3JvbGxBbmltYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNBRTFGQTcxMjkzOURCNzAwNENC
MDI2IC8qIFNjcm9sbEFuaW1hdG9yTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTlCODA4
MjQ1RTU5MDAxRTlBQkMgLyogU2Nyb2xsYmFyLmggaW4gSGVhZGVycyAqLywKKwkJCQlDNkIzMUIy
RTE0Rjg0MUZCMDA4OUYyM0YgLyogU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDOEI4NTRCMEU3QzdGNTYwMEFCNjk4NCAvKiBTY3JvbGxiYXJUaGVtZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMxNDAyOEIwRTgzNjgwODAwMzE5NzE3IC8qIFNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhCODUzRTBFN0M3RjExMDBBQjY5ODQg
LyogU2Nyb2xsYmFyVGhlbWVNYWMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhci5jcHAKaW5kZXggM2I5YzE5NWNmZjU1MzkxNjU1NjIwM2UyZjJjYzRmZTVkOGY5
YTUxZS4uYTU4ZDI0ODMxOGVlZmVjM2UxMWJlZjE5YjU1MGFiYWYxNzI2YzcyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCkBAIC0xMTIsNiArMTEyLDc5IEBAIFNjcm9sbGJh
cjo6flNjcm9sbGJhcigpCiAgICAgbV90aGVtZS0+dW5yZWdpc3RlclNjcm9sbGJhcih0aGlzKTsK
IH0KIAordm9pZCBTY3JvbGxiYXI6OnNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQor
eworICAgIC8vIEdldCBvdXIgd2luZG93IHJlc2l6ZXIgcmVjdCBhbmQgc2VlIGlmIHdlIG92ZXJs
YXAuIEFkanVzdCB0byBhdm9pZCB0aGUgb3ZlcmxhcAorICAgIC8vIGlmIG5lY2Vzc2FyeS4KKyAg
ICBJbnRSZWN0IGFkanVzdGVkUmVjdChyZWN0KTsKKyAgICBib29sIG92ZXJsYXBzUmVzaXplciA9
IGZhbHNlOworICAgIFNjcm9sbFZpZXcqIHZpZXcgPSBwYXJlbnQoKTsKKyAgICBpZiAodmlldyAm
JiAhcmVjdC5pc0VtcHR5KCkgJiYgIXZpZXctPndpbmRvd1Jlc2l6ZXJSZWN0KCkuaXNFbXB0eSgp
KSB7CisgICAgICAgIEludFJlY3QgcmVzaXplclJlY3QgPSB2aWV3LT5jb252ZXJ0RnJvbUNvbnRh
aW5pbmdXaW5kb3codmlldy0+d2luZG93UmVzaXplclJlY3QoKSk7CisgICAgICAgIGlmIChyZWN0
LmludGVyc2VjdHMocmVzaXplclJlY3QpKSB7CisgICAgICAgICAgICBpZiAob3JpZW50YXRpb24o
KSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgICAgICAgICAgICAgaW50IG92ZXJsYXAg
PSByZWN0Lm1heFgoKSAtIHJlc2l6ZXJSZWN0LngoKTsKKyAgICAgICAgICAgICAgICBpZiAob3Zl
cmxhcCA+IDAgJiYgcmVzaXplclJlY3QubWF4WCgpID49IHJlY3QubWF4WCgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIGFkanVzdGVkUmVjdC5zZXRXaWR0aChyZWN0LndpZHRoKCkgLSBvdmVybGFw
KTsKKyAgICAgICAgICAgICAgICAgICAgb3ZlcmxhcHNSZXNpemVyID0gdHJ1ZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGludCBvdmVy
bGFwID0gcmVjdC5tYXhZKCkgLSByZXNpemVyUmVjdC55KCk7CisgICAgICAgICAgICAgICAgaWYg
KG92ZXJsYXAgPiAwICYmIHJlc2l6ZXJSZWN0Lm1heFkoKSA+PSByZWN0Lm1heFkoKSkgeworICAg
ICAgICAgICAgICAgICAgICBhZGp1c3RlZFJlY3Quc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLSBv
dmVybGFwKTsKKyAgICAgICAgICAgICAgICAgICAgb3ZlcmxhcHNSZXNpemVyID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgaWYg
KG92ZXJsYXBzUmVzaXplciAhPSBtX292ZXJsYXBzUmVzaXplcikgeworICAgICAgICBtX292ZXJs
YXBzUmVzaXplciA9IG92ZXJsYXBzUmVzaXplcjsKKyAgICAgICAgaWYgKHZpZXcpCisgICAgICAg
ICAgICB2aWV3LT5hZGp1c3RTY3JvbGxiYXJzQXZvaWRpbmdSZXNpemVyQ291bnQobV9vdmVybGFw
c1Jlc2l6ZXIgPyAxIDogLTEpOworICAgIH0KKworICAgIFdpZGdldDo6c2V0RnJhbWVSZWN0KGFk
anVzdGVkUmVjdCk7Cit9CisKK3ZvaWQgU2Nyb2xsYmFyOjppbnZhbGlkYXRlUmVjdChjb25zdCBJ
bnRSZWN0JiByZWN0KQoreworICAgIGlmIChzdXBwcmVzc0ludmFsaWRhdGlvbigpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgbV9zY3JvbGxh
YmxlQXJlYS0+aW52YWxpZGF0ZVNjcm9sbGJhcih0aGlzLCByZWN0KTsKK30KKworU2Nyb2xsYmFy
T3ZlcmxheVN0eWxlIFNjcm9sbGJhcjo6c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYSA/IFNjcm9sbGJhck92ZXJsYXlTdHlsZURlZmF1
bHQgOiBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxiYXJPdmVybGF5U3R5bGUoKTsKK30KKwordm9p
ZCBTY3JvbGxiYXI6OmdldFRpY2ttYXJrcyhWZWN0b3I8SW50UmVjdD4mIHRpY2ttYXJrcykgY29u
c3QKK3sKKyAgICBpZiAobV9zY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgbV9zY3JvbGxhYmxlQXJl
YS0+Z2V0VGlja21hcmtzKHRpY2ttYXJrcyk7Cit9CisKK2Jvb2wgU2Nyb2xsYmFyOjppc1Njcm9s
bGFibGVBcmVhQWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYSAm
JiBtX3Njcm9sbGFibGVBcmVhLT5pc0FjdGl2ZSgpOworfQorCitib29sIFNjcm9sbGJhcjo6aXNT
Y3JvbGxWaWV3U2Nyb2xsYmFyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcGFyZW50KCkgJiYgcGFy
ZW50KCktPmlzRnJhbWVWaWV3KCkgJiYgc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4ocGFyZW50KCkp
LT5pc1Njcm9sbFZpZXdTY3JvbGxiYXIodGhpcyk7Cit9CisKK3ZvaWQgU2Nyb2xsYmFyOjpzZXRF
bmFibGVkKGJvb2wgZSkKK3sgCisgICAgaWYgKG1fZW5hYmxlZCA9PSBlKQorICAgICAgICByZXR1
cm47CisgICAgbV9lbmFibGVkID0gZTsKKyAgICB0aGVtZSgpLT51cGRhdGVFbmFibGVkU3RhdGUo
dGhpcyk7CisgICAgaW52YWxpZGF0ZSgpOworfQorCiB2b2lkIFNjcm9sbGJhcjo6b2Zmc2V0RGlk
Q2hhbmdlKCkKIHsKICAgICBBU1NFUlQobV9zY3JvbGxhYmxlQXJlYSk7CkBAIC00MzIsNDAgKzUw
NSw2IEBAIGJvb2wgU2Nyb2xsYmFyOjptb3VzZURvd24oY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldnQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyOjpzZXRGcmFtZVJl
Y3QoY29uc3QgSW50UmVjdCYgcmVjdCkKLXsKLSAgICAvLyBHZXQgb3VyIHdpbmRvdyByZXNpemVy
IHJlY3QgYW5kIHNlZSBpZiB3ZSBvdmVybGFwLiAgQWRqdXN0IHRvIGF2b2lkIHRoZSBvdmVybGFw
Ci0gICAgLy8gaWYgbmVjZXNzYXJ5LgotICAgIEludFJlY3QgYWRqdXN0ZWRSZWN0KHJlY3QpOwot
ICAgIGJvb2wgb3ZlcmxhcHNSZXNpemVyID0gZmFsc2U7Ci0gICAgU2Nyb2xsVmlldyogdmlldyA9
IHBhcmVudCgpOwotICAgIGlmICh2aWV3ICYmICFyZWN0LmlzRW1wdHkoKSAmJiAhdmlldy0+d2lu
ZG93UmVzaXplclJlY3QoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgSW50UmVjdCByZXNpemVyUmVj
dCA9IHZpZXctPmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyh2aWV3LT53aW5kb3dSZXNpemVy
UmVjdCgpKTsKLSAgICAgICAgaWYgKHJlY3QuaW50ZXJzZWN0cyhyZXNpemVyUmVjdCkpIHsKLSAg
ICAgICAgICAgIGlmIChvcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKLSAg
ICAgICAgICAgICAgICBpbnQgb3ZlcmxhcCA9IHJlY3QubWF4WCgpIC0gcmVzaXplclJlY3QueCgp
OwotICAgICAgICAgICAgICAgIGlmIChvdmVybGFwID4gMCAmJiByZXNpemVyUmVjdC5tYXhYKCkg
Pj0gcmVjdC5tYXhYKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYWRqdXN0ZWRSZWN0LnNldFdp
ZHRoKHJlY3Qud2lkdGgoKSAtIG92ZXJsYXApOwotICAgICAgICAgICAgICAgICAgICBvdmVybGFw
c1Jlc2l6ZXIgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgaW50IG92ZXJsYXAgPSByZWN0Lm1heFkoKSAtIHJlc2l6ZXJSZWN0
LnkoKTsKLSAgICAgICAgICAgICAgICBpZiAob3ZlcmxhcCA+IDAgJiYgcmVzaXplclJlY3QubWF4
WSgpID49IHJlY3QubWF4WSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFkanVzdGVkUmVjdC5z
ZXRIZWlnaHQocmVjdC5oZWlnaHQoKSAtIG92ZXJsYXApOwotICAgICAgICAgICAgICAgICAgICBv
dmVybGFwc1Jlc2l6ZXIgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgIH0KLSAgICBpZiAob3ZlcmxhcHNSZXNpemVyICE9IG1fb3ZlcmxhcHNS
ZXNpemVyKSB7Ci0gICAgICAgIG1fb3ZlcmxhcHNSZXNpemVyID0gb3ZlcmxhcHNSZXNpemVyOwot
ICAgICAgICBpZiAodmlldykKLSAgICAgICAgICAgIHZpZXctPmFkanVzdFNjcm9sbGJhcnNBdm9p
ZGluZ1Jlc2l6ZXJDb3VudChtX292ZXJsYXBzUmVzaXplciA/IDEgOiAtMSk7Ci0gICAgfQotCi0g
ICAgV2lkZ2V0OjpzZXRGcmFtZVJlY3QoYWRqdXN0ZWRSZWN0KTsKLX0KLQogdm9pZCBTY3JvbGxi
YXI6OnNldFBhcmVudChTY3JvbGxWaWV3KiBwYXJlbnRWaWV3KQogewogICAgIGlmICghcGFyZW50
VmlldyAmJiBtX292ZXJsYXBzUmVzaXplciAmJiBwYXJlbnQoKSkKQEAgLTQ3MywxNSArNTEyLDYg
QEAgdm9pZCBTY3JvbGxiYXI6OnNldFBhcmVudChTY3JvbGxWaWV3KiBwYXJlbnRWaWV3KQogICAg
IFdpZGdldDo6c2V0UGFyZW50KHBhcmVudFZpZXcpOwogfQogCi12b2lkIFNjcm9sbGJhcjo6c2V0
RW5hYmxlZChib29sIGUpCi17IAotICAgIGlmIChtX2VuYWJsZWQgPT0gZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIG1fZW5hYmxlZCA9IGU7Ci0gICAgdGhlbWUoKS0+dXBkYXRlRW5hYmxlZFN0YXRl
KHRoaXMpOwotICAgIGludmFsaWRhdGUoKTsKLX0KLQogYm9vbCBTY3JvbGxiYXI6OmlzT3Zlcmxh
eVNjcm9sbGJhcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdGhlbWUtPnVzZXNPdmVybGF5U2Ny
b2xsYmFycygpOwpAQCAtNTExLDE1ICs1NDEsNiBAQCBBWE9iamVjdENhY2hlKiBTY3JvbGxiYXI6
OmF4T2JqZWN0Q2FjaGUoKSBjb25zdAogICAgIHJldHVybiBkb2N1bWVudC0+YXhPYmplY3RDYWNo
ZSgpOwogfQogCi12b2lkIFNjcm9sbGJhcjo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYg
cmVjdCkKLXsKLSAgICBpZiAoc3VwcHJlc3NJbnZhbGlkYXRpb24oKSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCi0gICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEt
PmludmFsaWRhdGVTY3JvbGxiYXIodGhpcywgcmVjdCk7Ci19Ci0KIEludFJlY3QgU2Nyb2xsYmFy
Ojpjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JiBsb2NhbFJlY3QpIGNvbnN0
CiB7CiAgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJh
ci5oCmluZGV4IDM5YWMyNTQ2NWQxNDU1YTU5OTJjZDI1YzIyMjhkZDJiNjUzNGE2M2QuLjE3MTQx
M2E4NTVjOWQyYjcwZTUzNWIyZTE5YzUwYmY5NTljNDZjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFNjcm9sbGJhcl9oCiAjZGVm
aW5lIFNjcm9sbGJhcl9oCiAKKyNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJXaWRn
ZXQuaCIKQEAgLTQwLDEzICs0MSw2MCBAQCBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7CiBjbGFz
cyBTY3JvbGxhYmxlQXJlYTsKIGNsYXNzIFNjcm9sbGJhclRoZW1lOwogCi1jbGFzcyBTY3JvbGxi
YXIgOiBwdWJsaWMgV2lkZ2V0IHsKK2NsYXNzIFNjcm9sbGJhciA6IHB1YmxpYyBXaWRnZXQsCisg
ICAgICAgICAgICAgICAgICBwdWJsaWMgU2Nyb2xsYmFyVGhlbWVDbGllbnQgeworCiBwdWJsaWM6
CiAgICAgLy8gTXVzdCBiZSBpbXBsZW1lbnRlZCBieSBwbGF0Zm9ybXMgdGhhdCBjYW4ndCBzaW1w
bHkgdXNlIHRoZSBTY3JvbGxiYXIgYmFzZSBjbGFzcy4gIFJpZ2h0IG5vdyB0aGUgb25seSBwbGF0
Zm9ybSB0aGF0IGlzIG5vdCB1c2luZyB0aGUgYmFzZSBjbGFzcyBpcyBHVEsuCiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8U2Nyb2xsYmFyPiBjcmVhdGVOYXRpdmVTY3JvbGxiYXIoU2Nyb2xsYWJsZUFy
ZWEqLCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNp
emUgc2l6ZSk7CiAKICAgICB2aXJ0dWFsIH5TY3JvbGxiYXIoKTsKIAorICAgIC8vIFNjcm9sbGJh
clRoZW1lQ2xpZW50IGltcGxlbWVudGF0aW9uLgorICAgIHZpcnR1YWwgaW50IHgoKSBjb25zdCB7
IHJldHVybiBXaWRnZXQ6OngoKTsgfQorICAgIHZpcnR1YWwgaW50IHkoKSBjb25zdCB7IHJldHVy
biBXaWRnZXQ6OnkoKTsgfQorICAgIHZpcnR1YWwgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4g
V2lkZ2V0Ojp3aWR0aCgpOyB9CisgICAgdmlydHVhbCBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gV2lkZ2V0OjpoZWlnaHQoKTsgfQorICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3Qg
eyByZXR1cm4gV2lkZ2V0OjpzaXplKCk7IH0KKyAgICB2aXJ0dWFsIEludFBvaW50IGxvY2F0aW9u
KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0Ojpsb2NhdGlvbigpOyB9CisKKyAgICB2aXJ0dWFsIFNj
cm9sbFZpZXcqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6cGFyZW50KCk7IH0KKyAg
ICB2aXJ0dWFsIFNjcm9sbFZpZXcqIHJvb3QoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OnJvb3Qo
KTsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0Jik7Cisg
ICAgdmlydHVhbCBJbnRSZWN0IGZyYW1lUmVjdCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6ZnJh
bWVSZWN0KCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlKCkgeyBXaWRnZXQ6Omlu
dmFsaWRhdGUoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRS
ZWN0Jik7CisKKyAgICB2aXJ0dWFsIFNjcm9sbGJhck92ZXJsYXlTdHlsZSBzY3JvbGxiYXJPdmVy
bGF5U3R5bGUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3RvcjxJ
bnRSZWN0PiYpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbGFibGVBcmVhQWN0aXZl
KCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsVmlld1Njcm9sbGJhcigpIGNvbnN0
OworCisgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coY29u
c3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSB7IHJldHVybiBXaWRnZXQ6OmNvbnZlcnRGcm9tQ29u
dGFpbmluZ1dpbmRvdyh3aW5kb3dQb2ludCk7IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc0N1c3Rv
bVNjcm9sbGJhcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBTY3JvbGxi
YXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247
IH0KKworICAgIHZpcnR1YWwgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbHJvdW5kZihtX2N1
cnJlbnRQb3MpOyB9CisgICAgdmlydHVhbCBmbG9hdCBjdXJyZW50UG9zKCkgY29uc3QgeyByZXR1
cm4gbV9jdXJyZW50UG9zOyB9CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZVNpemUoKSBjb25zdCB7
IHJldHVybiBtX3Zpc2libGVTaXplOyB9CisgICAgdmlydHVhbCBpbnQgdG90YWxTaXplKCkgY29u
c3QgeyByZXR1cm4gbV90b3RhbFNpemU7IH0KKyAgICB2aXJ0dWFsIGludCBtYXhpbXVtKCkgY29u
c3QgeyByZXR1cm4gbV90b3RhbFNpemUgLSBtX3Zpc2libGVTaXplOyB9CisgICAgdmlydHVhbCBT
Y3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udHJv
bFNpemU7IH0KKworICAgIHZpcnR1YWwgaW50IGxpbmVTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9s
aW5lU3RlcDsgfQorICAgIHZpcnR1YWwgaW50IHBhZ2VTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlU3RlcDsgfQorCisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IHByZXNzZWRQYXJ0KCkgY29u
c3QgeyByZXR1cm4gbV9wcmVzc2VkUGFydDsgfQorICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBo
b3ZlcmVkUGFydCgpIGNvbnN0IHsgcmV0dXJuIG1faG92ZXJlZFBhcnQ7IH0KKworICAgIHZpcnR1
YWwgdm9pZCBzdHlsZUNoYW5nZWQoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9lbmFibGVkOyB9CisgICAgdmlydHVhbCB2b2lkIHNldEVuYWJsZWQo
Ym9vbCk7CisKICAgICAvLyBDYWxsZWQgYnkgdGhlIFNjcm9sbGFibGVBcmVhIHdoZW4gdGhlIHNj
cm9sbCBvZmZzZXQgY2hhbmdlcy4KICAgICB2b2lkIG9mZnNldERpZENoYW5nZSgpOwogCkBAIC01
NywzNCArMTA1LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tU2Nyb2xsYWJs
ZUFyZWEoKSB7IG1fc2Nyb2xsYWJsZUFyZWEgPSAwOyB9CiAgICAgU2Nyb2xsYWJsZUFyZWEqIHNj
cm9sbGFibGVBcmVhKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYTsgfQogCi0gICAg
dmlydHVhbCBib29sIGlzQ3VzdG9tU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
b3JpZW50YXRpb247IH0KLQotICAgIGludCB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGxyb3VuZGYo
bV9jdXJyZW50UG9zKTsgfQotICAgIGZsb2F0IGN1cnJlbnRQb3MoKSBjb25zdCB7IHJldHVybiBt
X2N1cnJlbnRQb3M7IH0KICAgICBpbnQgcHJlc3NlZFBvcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJl
c3NlZFBvczsgfQotICAgIGludCB2aXNpYmxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJs
ZVNpemU7IH0KLSAgICBpbnQgdG90YWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNpemU7
IH0KLSAgICBpbnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplIC0gbV92aXNp
YmxlU2l6ZTsgfSAgICAgICAgCi0gICAgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUo
KSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xTaXplOyB9CiAKLSAgICBpbnQgbGluZVN0ZXAoKSBj
b25zdCB7IHJldHVybiBtX2xpbmVTdGVwOyB9Ci0gICAgaW50IHBhZ2VTdGVwKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYWdlU3RlcDsgfQogICAgIGZsb2F0IHBpeGVsU3RlcCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGl4ZWxTdGVwOyB9CiAKLSAgICBTY3JvbGxiYXJQYXJ0IHByZXNzZWRQYXJ0KCkgY29uc3Qg
eyByZXR1cm4gbV9wcmVzc2VkUGFydDsgfQotICAgIFNjcm9sbGJhclBhcnQgaG92ZXJlZFBhcnQo
KSBjb25zdCB7IHJldHVybiBtX2hvdmVyZWRQYXJ0OyB9CiAgICAgdmlydHVhbCB2b2lkIHNldEhv
dmVyZWRQYXJ0KFNjcm9sbGJhclBhcnQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRQcmVzc2VkUGFy
dChTY3JvbGxiYXJQYXJ0KTsKIAogICAgIHZvaWQgc2V0U3RlcHMoaW50IGxpbmVTdGVwLCBpbnQg
cGFnZVN0ZXAsIGludCBwaXhlbHNQZXJTdGVwID0gMSk7CiAgICAgdm9pZCBzZXRQcm9wb3J0aW9u
KGludCB2aXNpYmxlU2l6ZSwgaW50IHRvdGFsU2l6ZSk7CiAgICAgdm9pZCBzZXRQcmVzc2VkUG9z
KGludCBwKSB7IG1fcHJlc3NlZFBvcyA9IHA7IH0KLSAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CiAKLSAgICBi
b29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgc2V0RW5hYmxlZChib29sIGUpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKIAogICAgIHZpcnR1YWwgYm9vbCBp
c092ZXJsYXlTY3JvbGxiYXIoKSBjb25zdDsKICAgICBib29sIHNob3VsZFBhcnRpY2lwYXRlSW5I
aXRUZXN0aW5nKCk7CkBAIC05Nyw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBtb3VzZU1v
dmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIHZvaWQgbW91c2VFbnRlcmVkKCk7
CiAgICAgYm9vbCBtb3VzZUV4aXRlZCgpOwotICAgIAorCiAgICAgLy8gVXNlZCBieSBzb21lIHBs
YXRmb3JtIHNjcm9sbGJhcnMgdG8ga25vdyB3aGVuIHRoZXkndmUgYmVlbiByZWxlYXNlZCBmcm9t
IGNhcHR1cmUuCiAgICAgYm9vbCBtb3VzZVVwKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwog
CkBAIC0xMDYsMTggKzEzOCwxMyBAQCBwdWJsaWM6CiAgICAgU2Nyb2xsYmFyVGhlbWUqIHRoZW1l
KCkgY29uc3QgeyByZXR1cm4gbV90aGVtZTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldFBhcmVu
dChTY3JvbGxWaWV3Kik7Ci0gICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRS
ZWN0Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYp
OwotICAgIAogICAgIGJvb2wgc3VwcHJlc3NJbnZhbGlkYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3N1cHByZXNzSW52YWxpZGF0aW9uOyB9CiAgICAgdm9pZCBzZXRTdXBwcmVzc0ludmFsaWRhdGlv
bihib29sIHMpIHsgbV9zdXBwcmVzc0ludmFsaWRhdGlvbiA9IHM7IH0KIAotICAgIHZpcnR1YWwg
dm9pZCBzdHlsZUNoYW5nZWQoKSB7IH0KLQogICAgIHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0VG9D
b250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Q7CiAgICAgdmlydHVhbCBJbnRSZWN0
IGNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0OwotICAgIAor
CiAgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0VG9Db250YWluaW5nVmlldyhjb25zdCBJbnRQ
b2ludCYpIGNvbnN0OwogICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5n
Vmlldyhjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCkBAIC0xNjAsNyArMTg3LDcgQEAgcHJvdGVj
dGVkOgogCiAgICAgVGltZXI8U2Nyb2xsYmFyPiBtX3Njcm9sbFRpbWVyOwogICAgIGJvb2wgbV9v
dmVybGFwc1Jlc2l6ZXI7Ci0gICAgCisKICAgICBib29sIG1fc3VwcHJlc3NJbnZhbGlkYXRpb247
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAppbmRl
eCAyYTgzZDUzODVlYWJiY2FjZmY4YmU1NjM0OWI0ZDE5ZTMyYmI2ZmNjLi41ZmU0NWIxYTQ3MzY1
NzE2YmYyYjcyYTQ2ZGFiYWViNmFmMGJmZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGJhclRoZW1lLmgKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwotY2xhc3MgU2Nyb2xsYmFyOworY2xhc3MgU2Nyb2xs
YmFyVGhlbWVDbGllbnQ7CiBjbGFzcyBTY3JvbGxWaWV3OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCkBAIC00NiwxMCArNDYsMTAg
QEAgcHVibGljOgogICAgIFNjcm9sbGJhclRoZW1lKCkgeyB9CiAgICAgdmlydHVhbCB+U2Nyb2xs
YmFyVGhlbWUoKSB7fTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVkU3RhdGUoU2Ny
b2xsYmFyKikgeyB9OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKSB7IH07CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFy
KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgLypkYW1hZ2VSZWN0Ki8pIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFy
KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gTm9QYXJ0OyB9CisgICAgdmly
dHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgSW50UmVjdCYgLypkYW1hZ2VSZWN0Ki8pIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBOb1BhcnQ7IH0KICAgICAKICAgICB2aXJ0dWFs
IGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1bGFyU2Ny
b2xsYmFyKSB7IHJldHVybiAwOyB9CiAKQEAgLTU3LDEzICs1NywxMyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5
bGUoU2Nyb2xsYmFyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbGJhck92ZXJs
YXlTdHlsZShTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRo
ZW1lQ2hhbmdlZCgpIHt9CiAgICAgCiAgICAgdmlydHVhbCBib29sIGludmFsaWRhdGVPbk1vdXNl
RW50ZXJFeGl0KCkgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgaW52YWxpZGF0ZVBhcnRz
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJDb250cm9sUGFydE1hc2sgbWFzaykKKyAg
ICB2b2lkIGludmFsaWRhdGVQYXJ0cyhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBT
Y3JvbGxiYXJDb250cm9sUGFydE1hc2sgbWFzaykKICAgICB7CiAgICAgICAgIGlmIChtYXNrICYg
QmFja0J1dHRvblN0YXJ0UGFydCkKICAgICAgICAgICAgIGludmFsaWRhdGVQYXJ0KHNjcm9sbGJh
ciwgQmFja0J1dHRvblN0YXJ0UGFydCk7CkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgICAgIGludmFsaWRhdGVQYXJ0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRvbkVuZFBhcnQpOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXIqLCBTY3Jv
bGxiYXJQYXJ0KSB7fQorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXJU
aGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50
U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGNvcm5lclJlY3QpIHsgZGVmYXVsdFBhaW50U2Nyb2xsQ29ybmVyKGNvbnRleHQs
IGNvcm5lclJlY3QpOyB9CiAgICAgc3RhdGljIHZvaWQgZGVmYXVsdFBhaW50U2Nyb2xsQ29ybmVy
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkgeyBj
b250ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOyB9CkBAIC05MywyMSArOTMsMjEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRVcENvbnRlbnRTaGFkb3dMYXllcihHcmFwaGljc0xheWVyKikgeyB9CiAjZW5kaWYKIAotICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNob3Vs
ZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNob3VsZERyYWdEb2N1bWVu
dEluc3RlYWRPZlRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsg
cmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXIq
KSB7IHJldHVybiAwOyB9IC8vIFRoZSBwb3NpdGlvbiBvZiB0aGUgdGh1bWIgcmVsYXRpdmUgdG8g
dGhlIHRyYWNrLgotICAgIHZpcnR1YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhciopIHsgcmV0
dXJuIDA7IH0gLy8gVGhlIGxlbmd0aCBvZiB0aGUgdGh1bWIgYWxvbmcgdGhlIGF4aXMgb2YgdGhl
IHNjcm9sbGJhci4KLSAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJhciopIHsg
cmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0cmFjayByZWxhdGl2ZSB0byB0aGUg
c2Nyb2xsYmFyLgotICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhciopIHsgcmV0
dXJuIDA7IH0gLy8gVGhlIGxlbmd0aCBvZiB0aGUgdHJhY2sgYWxvbmcgdGhlIGF4aXMgb2YgdGhl
IHNjcm9sbGJhci4KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBm
YWxzZTsgfQorICAgIHZpcnR1YWwgaW50IHRodW1iUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGll
bnQqKSB7IHJldHVybiAwOyB9IC8vIFRoZSBwb3NpdGlvbiBvZiB0aGUgdGh1bWIgcmVsYXRpdmUg
dG8gdGhlIHRyYWNrLgorICAgIHZpcnR1YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1l
Q2xpZW50KikgeyByZXR1cm4gMDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0aHVtYiBhbG9uZyB0
aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1YWwgaW50IHRyYWNrUG9zaXRpb24o
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiAwOyB9IC8vIFRoZSBwb3NpdGlvbiBvZiB0
aGUgdHJhY2sgcmVsYXRpdmUgdG8gdGhlIHNjcm9sbGJhci4KKyAgICB2aXJ0dWFsIGludCB0cmFj
a0xlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIGxlbmd0
aCBvZiB0aGUgdHJhY2sgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIHNjcm9sbGJhci4KIAogICAgIHZp
cnR1YWwgaW50IG1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSB7IHJldHVybiBzdGQ6Om51bWVyaWNf
bGltaXRzPGludD46Om1heCgpOyB9CiAKICAgICB2aXJ0dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Nj
cm9sbFRpbWVyRGVsYXkoKSB7IHJldHVybiAwLjI1OyB9CiAgICAgdmlydHVhbCBkb3VibGUgYXV0
b3Njcm9sbFRpbWVyRGVsYXkoKSB7IHJldHVybiAwLjA1OyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKikge30KLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdp
c3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNj
cm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1bnJl
Z2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyB9CiAKICAgICB2aXJ0dWFs
IGJvb2wgaXNNb2NrVGhlbWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42Y2Rh
NDJmNTA1MmUzNGU0YmQ2ZDFhYTdkODM2ZWMzNjc1OTRlZjI4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaApAQCAtMCwwICsx
LDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBTY3JvbGxiYXJUaGVtZUNsaWVudF9oCisjZGVmaW5lIFNj
cm9sbGJhclRoZW1lQ2xpZW50X2gKKworI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAi
SW50UmVjdC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJTY3JvbGxUeXBlcy5o
IgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbFZpZXc7CisKK2NsYXNzIFNjcm9s
bGJhclRoZW1lQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZUNs
aWVudCgpIHsgfQorCisgICAgdmlydHVhbCBpbnQgeCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGludCB5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHdpZHRoKCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFNpemUg
c2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFBvaW50IGxvY2F0aW9uKCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiBwYXJlbnQoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBTY3JvbGxWaWV3KiByb290KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lk
IHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBm
cmFtZVJlY3QoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZSgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYpID0gMDsK
KworICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHNjcm9sbGJhck92ZXJsYXlTdHls
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VGlja21hcmtzKFZlY3RvcjxJbnRS
ZWN0PiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxhYmxlQXJlYUFjdGl2
ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxWaWV3U2Nyb2xsYmFyKCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdX
aW5kb3coY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSA9IDA7CisKKyAgICB2aXJ0dWFsIGJv
b2wgaXNDdXN0b21TY3JvbGxiYXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTY3JvbGxiYXJP
cmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgaW50IHZh
bHVlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgZmxvYXQgY3VycmVudFBvcygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGludCB0b3RhbFNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgbWF4aW11bSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKCkg
Y29uc3QgPSAwOworCisgICAgdmlydHVhbCBpbnQgbGluZVN0ZXAoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBpbnQgcGFnZVN0ZXAoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFNjcm9sbGJh
clBhcnQgcHJlc3NlZFBhcnQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0
IGhvdmVyZWRQYXJ0KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHN0eWxlQ2hhbmdl
ZCgpID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBlbmFibGVkKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wpID0gMDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFNjb2xsYmFyVGhlbWVDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCmluZGV4IDYyZmQ1
ZTVkMmM1MGVmOWIzNWI0MTc1NGQwOWJiYjBlMWU2YmUzOGUuLjlkODMzNzQyZjkyZWViZDcwZTBh
Y2MxNmVlMzc4NGIzYzIzMTU3NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKQEAgLTMzLDE1ICszMywxNCBAQAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0
Zm9ybU1vdXNlRXZlbnQuaCIKLSNpbmNsdWRlICJTY3JvbGxiYXIuaCIKLSNpbmNsdWRlICJTY3Jv
bGxhYmxlQXJlYS5oIgorI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1ib29sIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludChTY3JvbGxiYXIqIHNj
cm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QpCitib29sIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsKICAgICAvLyBDcmVhdGUgdGhlIFNjcm9s
bGJhckNvbnRyb2xQYXJ0TWFzayBiYXNlZCBvbiB0aGUgZGFtYWdlUmVjdAogICAgIFNjcm9sbGJh
ckNvbnRyb2xQYXJ0TWFzayBzY3JvbGxNYXNrID0gTm9QYXJ0OwpAQCAtMTE2LDcgKzExNSw3IEBA
IGJvb2wgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFy
LCBHcmFwaGljc0NvbnRleHQqIGdyYXBoCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVNjcm9sbGJh
clBhcnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OmhpdFRlc3QoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorU2Nyb2xsYmFyUGFydCBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6aGl0VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICBTY3JvbGxiYXJQYXJ0IHJl
c3VsdCA9IE5vUGFydDsKICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQpAQCAtMTU1LDcg
KzE1NCw3IEBAIFNjcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OmhpdFRlc3Qo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotdm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNj
cm9sbGJhclBhcnQgcGFydCkKIHsKICAgICBpZiAocGFydCA9PSBOb1BhcnQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE5NSw3ICsxOTQsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpp
bnZhbGlkYXRlUGFydChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydAogICAgIHNj
cm9sbGJhci0+aW52YWxpZGF0ZVJlY3QocmVzdWx0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCwgSW50UmVjdCYgYmVmb3JlVGh1bWJSZWN0LCBJbnRS
ZWN0JiB0aHVtYlJlY3QsIEludFJlY3QmIGFmdGVyVGh1bWJSZWN0KQordm9pZCBTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0LCBJbnRSZWN0JiBiZWZvcmVU
aHVtYlJlY3QsIEludFJlY3QmIHRodW1iUmVjdCwgSW50UmVjdCYgYWZ0ZXJUaHVtYlJlY3QpCiB7
CiAgICAgLy8gVGhpcyBmdW5jdGlvbiB3b24ndCBldmVuIGdldCBjYWxsZWQgdW5sZXNzIHdlJ3Jl
IGJpZyBlbm91Z2ggdG8gaGF2ZSBzb21lIGNvbWJpbmF0aW9uIG9mIHRoZXNlIHRocmVlIHJlY3Rz
IHdoZXJlIGF0IGxlYXN0CiAgICAgLy8gb25lIG9mIHRoZW0gaXMgbm9uLWVtcHR5LgpAQCAtMjE1
LDcgKzIxNCw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnNwbGl0VHJhY2soU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuCiAKIC8vIFJldHVybnMgdGhlIHNp
emUgcmVwcmVzZW50ZWQgYnkgdHJhY2sgdGFraW5nIGludG8gYWNjb3VudCBzY3JvbGxpbmcgcGFz
dAogLy8gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuCi1zdGF0aWMgZmxvYXQgdXNlZFRvdGFsU2l6
ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3N0YXRpYyBmbG9hdCB1c2VkVG90YWxTaXplKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgZmxvYXQgb3ZlcmhhbmdBdFN0YXJ0
ID0gLXNjcm9sbGJhci0+Y3VycmVudFBvcygpOwogICAgIGZsb2F0IG92ZXJoYW5nQXRFbmQgPSBz
Y3JvbGxiYXItPmN1cnJlbnRQb3MoKSArIHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKSAtIHNjcm9s
bGJhci0+dG90YWxTaXplKCk7CkBAIC0yMjMsNyArMjIyLDcgQEAgc3RhdGljIGZsb2F0IHVzZWRU
b3RhbFNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIHNjcm9sbGJhci0+dG90
YWxTaXplKCkgKyBvdmVyaGFuZzsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0
aHVtYlBvc2l0aW9uKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjp0aHVtYlBvc2l0aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7
CiAgICAgaWYgKHNjcm9sbGJhci0+ZW5hYmxlZCgpKSB7CiAgICAgICAgIGZsb2F0IHNpemUgPSB1
c2VkVG90YWxTaXplKHNjcm9sbGJhcikgLSBzY3JvbGxiYXItPnZpc2libGVTaXplKCk7CkBAIC0y
MzYsNyArMjM1LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYlBvc2l0aW9u
KFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiAwOwogfQogCi1pbnQgU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGU6OnRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQogewogICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybiAwOwpAQCAtMjUwLDE4ICsyNDksMTggQEAgaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRl
Ojp0aHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICByZXR1cm4gbGVuZ3RoOwog
fQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6Om1pbmltdW1UaHVtYkxlbmd0aChTY3Jv
bGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6bWluaW11bVRo
dW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJu
IHNjcm9sbGJhclRoaWNrbmVzcyhzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOwogfQogCi1pbnQg
U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxi
YXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrUG9zaXRpb24oU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBJbnRSZWN0IGNvbnN0cmFpbmVkVHJhY2tS
ZWN0ID0gY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxiYXIsIHRyYWNrUmVj
dChzY3JvbGxiYXIpKTsKICAgICByZXR1cm4gKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBI
b3Jpem9udGFsU2Nyb2xsYmFyKSA/IGNvbnN0cmFpbmVkVHJhY2tSZWN0LngoKSAtIHNjcm9sbGJh
ci0+eCgpIDogY29uc3RyYWluZWRUcmFja1JlY3QueSgpIC0gc2Nyb2xsYmFyLT55KCk7CiB9CiAK
LWludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tMZW5ndGgoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRyYWNrTGVuZ3RoKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgSW50UmVjdCBjb25zdHJhaW5lZFRyYWNr
UmVjdCA9IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoc2Nyb2xsYmFyLCB0cmFja1Jl
Y3Qoc2Nyb2xsYmFyKSk7CiAgICAgcmV0dXJuIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0g
SG9yaXpvbnRhbFNjcm9sbGJhcikgPyBjb25zdHJhaW5lZFRyYWNrUmVjdC53aWR0aCgpIDogY29u
c3RyYWluZWRUcmFja1JlY3QuaGVpZ2h0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaAppbmRleCAxMWIzYmQ0NzAwMTg3ZmYxODJiMDQ1
YjQ1MmNkYzI0ZGEzM2U3NTkwLi44ZjYyOTEzM2U0MzI4MmM2NmQzZjE5OWQxMmQzMDNkZTcyZWM3
MGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNv
bXBvc2l0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29t
cG9zaXRlLmgKQEAgLTMyLDQwICszMiw0MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlIDogcHVibGljIFNjcm9sbGJhclRoZW1lIHsKIHB1Ymxp
YzoKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFp
bnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
JiBkYW1hZ2VSZWN0KTsKIAotICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBoaXRUZXN0KFNjcm9s
bGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgU2Nyb2xsYmFy
UGFydCBoaXRUZXN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyKiwgU2Ny
b2xsYmFyUGFydCk7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCk7CiAKLSAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0
aW9uKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhciop
OwotICAgIHZpcnR1YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVh
bCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBpbnQgdGh1bWJQb3Np
dGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IHRodW1iTGVuZ3Ro
KFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihT
Y3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9s
bGJhclRoZW1lQ2xpZW50Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIo
U2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3Qp
OwogICAgIHZpcnR1YWwgdm9pZCBwYWludE92ZXJoYW5nQXJlYXMoU2Nyb2xsVmlldyosIEdyYXBo
aWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIGNvbnN0
IEludFJlY3QmIHZlcnRpY2FsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3Qp
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKikg
PSAwOwotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKSA9IDA7CisgICAgdmly
dHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSA9IDA7CisgICAgdmly
dHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgPSAwOwogCi0gICAgdmly
dHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJv
b2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0
dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2Up
ID0gMDsKLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFp
bnRpbmcgPSBmYWxzZSkgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxz
ZSkgPSAwOworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOwor
ICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29s
IHBhaW50aW5nID0gZmFsc2UpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBzcGxpdFRyYWNrKFNj
cm9sbGJhciosIGNvbnN0IEludFJlY3QmIHRyYWNrLCBJbnRSZWN0JiBzdGFydFRyYWNrLCBJbnRS
ZWN0JiB0aHVtYiwgSW50UmVjdCYgZW5kVHJhY2spOworICAgIHZpcnR1YWwgdm9pZCBzcGxpdFRy
YWNrKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYgdHJhY2ssIEludFJlY3Qm
IHN0YXJ0VHJhY2ssIEludFJlY3QmIHRodW1iLCBJbnRSZWN0JiBlbmRUcmFjayk7CiAgICAgCi0g
ICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1
YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAg
dmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXIqKSB7fQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jikge30KLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0
IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSB7fQotICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRv
bihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFy
UGFydCkge30KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jikge30KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNr
bWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIHt9Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNr
QmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0
IEludFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNz
Q29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJh
clBhcnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBJbnRSZWN0JikgeyB9CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0
VG9UcmFja1BpZWNlcyhTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiByZWN0KSB7IHJldHVybiBy
ZWN0OyB9CisgICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVj
ZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiByZWN0KSB7IHJldHVybiBy
ZWN0OyB9CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uY3BwCmluZGV4IGY4Y2IyODE1NDg2MWUw
MWRhNzExMjQ5MjBjNjBkMDZhMzdlOWExODMuLjY4MmQ4MmQ1YjMzNzkxOGIyNWQwOThiYTc3MTcz
NGU3OTE1MDVlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uY3BwCkBAIC0zOSwxNCArMzksMTQgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06Omhh
c1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
OjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIC8vIFRo
aXMgbWV0aG9kIGlzIGp1c3QgY2FsbGVkIGFzIGEgcGFpbnQtdGltZSBvcHRpbWl6YXRpb24gdG8g
c2VlIGlmCiAgICAgLy8gcGFpbnRpbmcgdGhlIHRodW1iIGNhbiBiZSBza2lwcGVkLiAgV2UgZG9u
J3QgaGF2ZSB0byBiZSBleGFjdCBoZXJlLgogICAgIHJldHVybiB0aHVtYkxlbmd0aChzY3JvbGxi
YXIpID4gMDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpiYWNrQnV0dG9u
UmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQorSW50
UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAgICAgLy8g
V2luZG93cyBhbmQgTGludXgganVzdCBoYXZlIHNpbmdsZSBhcnJvd3MuCiAgICAgaWYgKHBhcnQg
PT0gQmFja0J1dHRvbkVuZFBhcnQpCkBAIC01Niw3ICs1Niw3IEBAIEludFJlY3QgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9s
bGJhclBhCiAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgp
LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW06OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3Jv
bGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OmZv
cndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJh
clBhcnQgcGFydCwgYm9vbCkKIHsKICAgICAvLyBXaW5kb3dzIGFuZCBMaW51eCBqdXN0IGhhdmUg
c2luZ2xlIGFycm93cy4KICAgICBpZiAocGFydCA9PSBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0KQpA
QCAtNzQsNyArNzQsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OmZvcndhcmRC
dXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYQogICAgIHJldHVybiBJbnRS
ZWN0KHgsIHksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bTo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29s
KQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCkKIHsKICAgICBJbnRTaXplIGJzID0gYnV0dG9uU2l6
ZShzY3JvbGxiYXIpOwogICAgIC8vIFRoZSBidXR0b25zIGF0IHRoZSB0b3AgYW5kIGJvdHRvbSBv
ZiB0aGUgc2Nyb2xsYmFyIGFyZSBzcXVhcmUsIHNvIHRoZQpAQCAtOTIsMTQgKzkyLDE0IEBAIElu
dFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBib29sKQogICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXIt
PnkoKSArIGJzLmhlaWdodCgpLCB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSAyICog
YnMuaGVpZ2h0KCkpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50VHJh
Y2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBh
aW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBKdXN0
IGFzc3VtZSBhIGZvcndhcmQgdHJhY2sgcGFydC4gIFdlIG9ubHkgcGFpbnQgdGhlIHRyYWNrIGFz
IGEgc2luZ2xlIHBpZWNlIHdoZW4gdGhlcmUgaXMgbm8gdGh1bWIuCiAgICAgaWYgKCFoYXNUaHVt
YihzY3JvbGxiYXIpKQogICAgICAgICBwYWludFRyYWNrUGllY2UoY29udGV4dCwgc2Nyb2xsYmFy
LCByZWN0LCBGb3J3YXJkVHJhY2tQYXJ0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKHNj
cm9sbGJhci0+b3JpZW50YXRpb24oKSAhPSBWZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAgcmV0
dXJuOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFp
bnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqCiAKICAgICAv
LyBHZXQgdGhlIHRpY2ttYXJrcyBmb3IgdGhlIGZyYW1ldmlldy4KICAgICBWZWN0b3I8SW50UmVj
dD4gdGlja21hcmtzOwotICAgIHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+Z2V0VGlja21h
cmtzKHRpY2ttYXJrcyk7CisgICAgc2Nyb2xsYmFyLT5nZXRUaWNrbWFya3ModGlja21hcmtzKTsK
ICAgICBpZiAoIXRpY2ttYXJrcy5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bS5oCmluZGV4IDExNzgxMjU2OWY2OWYyMDAzNzFiYWMwZjlkYTg3YTdjMzJkZTRmYTUuLmNm
NjcxZGQ5ODRjMDc5MDk5NWM2N2Q3ZDBmMThjNWI0YTZmNmNmZGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
LmgKQEAgLTQxLDE3ICs0MSwxNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gV2luZG93
cyBhbmQgTGludXguCiAgICAgY2xhc3MgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bSA6IHB1YmxpYyBT
Y3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSB7CiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFs
IGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIHZp
cnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKTsKKyAgICAgICAgdmlydHVhbCBib29sIGhh
c0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiB0cnVlOyB9CisgICAgICAg
IHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAgICAg
IHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0
LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgICAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2Fy
ZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZh
bHNlKTsKLSAgICAgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29s
IHBhaW50aW5nID0gZmFsc2UpOworICAgICAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJl
Y3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0g
ZmFsc2UpOworICAgICAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwor
ICAgICAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
Ym9vbCBwYWludGluZyA9IGZhbHNlKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFj
a0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYp
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
cmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBj
b25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKIAot
ICAgICAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXIqKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgPSAw
OwogICAgIH07CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21p
dW1BbmRyb2lkLmNwcAppbmRleCAxZGJlZmE2NDljMDg5NzJlYjFjMmIzN2I3NDc3MWIwZDYxYmVh
NWFkLi5lMWU1NWExZmMxM2Q3OWMwZjllOGY0NzMwYmU4OTc4MDk0YzFmNjkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
QW5kcm9pZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIGludCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtQW5kcm9pZDo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRy
b2xTaXplIGNvbnRyCiAgICAgcmV0dXJuIHNjcm9sbGJhclRoaWNrbmVzc1ZhbHVlOwogfQogCi12
b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpwYWludFNjcm9sbGJhckJhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIp
CiB7CiAgICAgLy8gUGFpbnQgYmxhY2sgYmFja2dyb3VuZCBpbiBEdW1wUmVuZGVyVHJlZSwgb3Ro
ZXJ3aXNlIHRoZSBwaXhlbHMgaW4gdGhlIHNjcm9sbGJhciBhcmVhIGRlcGVuZAogICAgIC8vIG9u
IHRoZWlyIHByZXZpb3VzIHN0YXRlLCB3aGljaCBtYWtlcyB0aGUgZHVtcGVkIHJlc3VsdCB1bmRl
dGVybWluZWQuCkBAIC02NSwxMiArNjUsMTIgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
QW5kcm9pZDo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY28KICAg
ICAgICAgY29udGV4dC0+ZmlsbFJlY3Qoc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKSwgQ29sb3I6OmJs
YWNrLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtQW5kcm9pZDo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnNo
b3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotSW50U2l6ZSBTY3JvbGxi
YXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YnV0dG9uU2l6ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikK
K0ludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OmJ1dHRvblNpemUoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRh
dGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKQogICAgICAgICByZXR1cm4gSW50U2l6ZShzY3Jv
bGxiYXJUaGlja25lc3NWYWx1ZSwgYnV0dG9uTGVuZ3RoKTsKQEAgLTc4LDcgKzc4LDcgQEAgSW50
U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YnV0dG9uU2l6ZShTY3JvbGxiYXIq
IHNjcm9sbGJhcikKICAgICByZXR1cm4gSW50U2l6ZShidXR0b25MZW5ndGgsIHNjcm9sbGJhclRo
aWNrbmVzc1ZhbHVlKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpt
aW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUFuZHJvaWQ6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiAyICogc2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9s
bGJhci0+Y29udHJvbFNpemUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuaApp
bmRleCBmMDdjOTAxNjc4NmNiMjRmODhkZmI5NGFlNGZjMjE2ZmU2ZTcwYmZjLi5mM2RiODBlNTJm
YmY1MGMxZGY2OGE5NDBlYTlkNDczZjJkYmYyODY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1B
bmRyb2lkLmgKQEAgLTM1LDEwICszNSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2Ny
b2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplKTsKIAogcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xs
YmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgdmlydHVhbCBJbnRTaXplIGJ1
dHRvblNpemUoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3Ro
KFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQo
R3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJh
clRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9s
bGJhclRoZW1lQ2xpZW50Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4LmNwcAppbmRleCBlYzY4NDA3ZTlkOGMzMmUzMGQzMTBkMmU1MDU4
YzJkYTdkYmRlY2M2Li42YjRkYWZjMzczZjEwZDBhYTJkNmU5NjYyYWJlNjNkZDVkYjY1ZTdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtTGludXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgaW50IFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNv
bnRyb2xTaXplIGNvbnRyb2wKICAgICByZXR1cm4gc2Nyb2xsYmFyU2l6ZS53aWR0aCgpOwogfQog
Ci12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUcmFja1BpZWNlKEdyYXBo
aWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0
LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGlu
dXg6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnRU
eXBlKQogewogICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHN0YXRlID0gc2Ny
b2xsYmFyLT5ob3ZlcmVkUGFydCgpID09IHBhcnRUeXBlID8gUGxhdGZvcm1TdXBwb3J0OjpTdGF0
ZUhvdmVyIDogUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZU5vcm1hbDsKICAgICBJbnRSZWN0IGFsaWdu
UmVjdCA9IHRyYWNrUmVjdChzY3JvbGxiYXIsIGZhbHNlKTsKQEAgLTY3LDcgKzY3LDcgQEAgdm9p
ZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0Nv
bnRleHQqIGdjLCBTY3JvbGxiYXIKICAgICAgICAgJmV4dHJhUGFyYW1zKTsKIH0KIAotdm9pZCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCog
Z2MsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQ
YXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24o
R3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIFBsYXRmb3JtU3Vw
cG9ydDo6VGhlbWVQYXJ0IHBhaW50UGFydDsKICAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFp
bnRTdGF0ZSBzdGF0ZSA9IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVOb3JtYWw7CkBAIC0xMDIsNyAr
MTAyLDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50QnV0dG9uKEdy
YXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2MKICAgICBQbGF0Zm9ybVN1cHBvcnQ6OnBh
aW50VGhlbWVQYXJ0KGdjLCBwYWludFBhcnQsIHN0YXRlLCByZWN0LCAwKTsKIH0KIAotdm9pZCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBn
YywgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewog
ICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHN0YXRlOwogCkBAIC0xMjAsMTIg
KzEyMCwxMiBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUaHVtYihH
cmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcgogICAgICAgICAwKTsKIH0KIAotYm9v
bCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xs
YmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1MaW51eDo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCos
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIHJldHVybiAoZXZ0LnNoaWZ0
S2V5KCkgJiYgZXZ0LmJ1dHRvbigpID09IExlZnRCdXR0b24pIHx8IChldnQuYnV0dG9uKCkgPT0g
TWlkZGxlQnV0dG9uKTsKIH0KIAotSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6
OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitJbnRTaXplIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1MaW51eDo6YnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
KQogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxi
YXIpIHsKICAgICAgICAgSW50U2l6ZSBzaXplID0gUGxhdGZvcm1TdXBwb3J0OjpnZXRUaGVtZVBh
cnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9sbGJhclVwQXJyb3cpOwpAQCAtMTM3LDcg
KzEzNyw3IEBAIEludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXpl
KFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiBJbnRTaXplKHNjcm9sbGJhci0+d2lk
dGgoKSA8IDIgKiBzaXplLndpZHRoKCkgPyBzY3JvbGxiYXItPndpZHRoKCkgLyAyIDogc2l6ZS53
aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1M
aW51eDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1MaW51eDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9
PSBWZXJ0aWNhbFNjcm9sbGJhcikgewogICAgICAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1
cHBvcnQ6OmdldFRoZW1lUGFydFNpemUoUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyVmVy
dGljYWxUaHVtYik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5oCmluZGV4IDhlODAyZTczNDFi
Nzc1YjU5NTVhZDBkZWMwYjhlZWQ1NmY3OTcyNzMuLjMzMGQwM2ZiMDIzMjEzNGVjMmNhMjk0MTlm
ZGFiMjczNDk0NzU0ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5oCkBAIC0zOSwxMiAr
MzksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGludCBzY3JvbGxi
YXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUpOwogCiAgICAgcHJvdGVjdGVkOgotICAg
ICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9s
bGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJl
Y3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmKTsKLSAgICAgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFy
Kik7Ci0gICAgICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRl
ck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
KTsKKyAgICAgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqKTsKKyAgICAgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRo
ZW1lQ2xpZW50Kik7CiAgICAgfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bU1hYy5oCmluZGV4IDQxYTE5OGUzZjg0MjBjODQ4OTQ1ZmI4NDc0NGRkYjcwMDI0Y2Q2
ZTUuLjE5MzQ2ZTcyM2JhYjI4N2Y5OGUxN2M4MTJkYjU4M2ExYzIwNjcwMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1N
YWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtTWFjLmgKQEAgLTM2LDEyICszNiwxMiBAQCBwdWJsaWM6CiAgICAgU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYygpOwogICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lQ2hyb21pdW1N
YWMoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXIqLCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZpcnR1YWwgYm9v
bCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmIGRhbWFnZVJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVh
cyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRh
bE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCk7CiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgcGFpbnRHaXZl
blRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jiwg
Y29uc3QgVmVjdG9yPEludFJlY3Q+Jik7CisgICAgdm9pZCBwYWludEdpdmVuVGlja21hcmtzKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIGNv
bnN0IFZlY3RvcjxJbnRSZWN0PiYpOwogCiAgICAgUmVmUHRyPFBhdHRlcm4+IG1fb3ZlcmhhbmdQ
YXR0ZXJuOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCmluZGV4IDQ1OWE1OGIwNzZmNzAw
NmYyNzc2NWIwMjQ5N2EwOTkzNWY4MjNmYjcuLmQwMmI0MjEyNTY0NGI3ODMwY2UyZTBmYWViMzY3
MzM2MWY4ZGI5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQpAQCAtNjEsMTEgKzYxLDEx
IEBAIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6On5TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
KCkKIHsKIH0KIAotc3RhdGljIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHNjcm9s
bGJhclN0YXRlVG9UaGVtZVN0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorc3RhdGljIFBsYXRm
b3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRlKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKCFzY3JvbGxiYXItPmVu
YWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVEaXNhYmxlZDsK
LSAgICBpZiAoIXNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSkKKyAgICBp
ZiAoIXNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQogICAgICAgICByZXR1cm4g
UGxhdGZvcm1TdXBwb3J0OjpTdGF0ZUluYWN0aXZlOwogICAgIGlmIChzY3JvbGxiYXItPnByZXNz
ZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0KQogICAgICAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpT
dGF0ZVByZXNzZWQ7CkBAIC05NCwxMSArOTQsMTEgQEAgc3RhdGljIHZvaWQgc2Nyb2xsYmFyUGFp
bnRlclBhaW50VHJhY2soU2Nyb2xsYmFyUGFpbnRlciBzY3JvbGxiYXJQYWludGVyLCBib29sIGUK
IC8vICAgICAtIGRyYXdpbmcgdXNpbmcgUGxhdGZvcm1TdXBwb3J0IGZ1bmN0aW9ucwogLy8gICAg
IC0gZHJhd2luZyB0aWNrbWFya3MKIC8vICAgICAtIFNraWEgc3BlY2lmaWMgY2hhbmdlcwotYm9v
bCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwg
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQorYm9v
bCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFn
ZVJlY3QpCiB7CiAgICAgLy8gR2V0IHRoZSB0aWNrbWFya3MgZm9yIHRoZSBmcmFtZXZpZXcuCiAg
ICAgVmVjdG9yPEludFJlY3Q+IHRpY2ttYXJrczsKLSAgICBzY3JvbGxiYXItPnNjcm9sbGFibGVB
cmVhKCktPmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOworICAgIHNjcm9sbGJhci0+Z2V0VGlja21h
cmtzKHRpY2ttYXJrcyk7CiAKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxl
KCkpIHsKICAgICAgICAgZmxvYXQgdmFsdWUgPSAwOwpAQCAtMTg4LDcgKzE4OCw3IEBAIGJvb2wg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdy
YXBoaWNzQ29udGV4dCogY29uCiAgICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAg
ICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0ga1RoZW1lVHJhY2tEaXNhYmxlZDsKICAgICBlbHNl
Ci0gICAgICAgIHRyYWNrSW5mby5lbmFibGVTdGF0ZSA9IHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFy
ZWEoKS0+aXNBY3RpdmUoKSA/IGtUaGVtZVRyYWNrQWN0aXZlIDoga1RoZW1lVHJhY2tJbmFjdGl2
ZTsKKyAgICAgICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0gc2Nyb2xsYmFyLT5pc1Njcm9sbGFi
bGVBcmVhQWN0aXZlKCkgPyBrVGhlbWVUcmFja0FjdGl2ZSA6IGtUaGVtZVRyYWNrSW5hY3RpdmU7
CiAKICAgICBpZiAoIWhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkKICAgICAgICAgdHJhY2tJbmZvLmVu
YWJsZVN0YXRlID0ga1RoZW1lVHJhY2tOb3RoaW5nVG9TY3JvbGw7CkBAIC0yNDMsNyArMjQzLDcg
QEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXIqIHNjcm9s
bGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb24KICAgICBpZiAoaGFzVGh1bWIoc2Nyb2xsYmFyKSkg
ewogICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTY3JvbGxiYXJJbmZvIHNjcm9s
bGJhckluZm87CiAgICAgICAgIHNjcm9sbGJhckluZm8ub3JpZW50YXRpb24gPSBzY3JvbGxiYXIt
Pm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IFBsYXRmb3JtU3VwcG9ydDo6
U2Nyb2xsYmFyT3JpZW50YXRpb25Ib3Jpem9udGFsIDogUGxhdGZvcm1TdXBwb3J0OjpTY3JvbGxi
YXJPcmllbnRhdGlvblZlcnRpY2FsOwotICAgICAgICBzY3JvbGxiYXJJbmZvLnBhcmVudCA9IHNj
cm9sbGJhci0+cGFyZW50KCkgJiYgc2Nyb2xsYmFyLT5wYXJlbnQoKS0+aXNGcmFtZVZpZXcoKSAm
JiBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPihzY3JvbGxiYXItPnBhcmVudCgpKS0+aXNTY3JvbGxW
aWV3U2Nyb2xsYmFyKHNjcm9sbGJhcikgPyBQbGF0Zm9ybVN1cHBvcnQ6OlNjcm9sbGJhclBhcmVu
dFNjcm9sbFZpZXcgOiBQbGF0Zm9ybVN1cHBvcnQ6OlNjcm9sbGJhclBhcmVudFJlbmRlckxheWVy
OworICAgICAgICBzY3JvbGxiYXJJbmZvLnBhcmVudCA9IHNjcm9sbGJhci0+aXNTY3JvbGxWaWV3
U2Nyb2xsYmFyKCkgPyBQbGF0Zm9ybVN1cHBvcnQ6OlNjcm9sbGJhclBhcmVudFNjcm9sbFZpZXcg
OiBQbGF0Zm9ybVN1cHBvcnQ6OlNjcm9sbGJhclBhcmVudFJlbmRlckxheWVyOwogICAgICAgICBz
Y3JvbGxiYXJJbmZvLm1heFZhbHVlID0gc2Nyb2xsYmFyLT5tYXhpbXVtKCk7CiAgICAgICAgIHNj
cm9sbGJhckluZm8uY3VycmVudFZhbHVlID0gc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCk7CiAgICAg
ICAgIHNjcm9sbGJhckluZm8udmlzaWJsZVNpemUgPSBzY3JvbGxiYXItPnZpc2libGVTaXplKCk7
CkBAIC0yNjMsNyArMjYzLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWlu
dChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb24KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludEdpdmVuVGlj
a21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgdGlja21hcmtzKQordm9p
ZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludEdpdmVuVGlja21hcmtzKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgcmVjdCwgY29uc3QgVmVjdG9yPEludFJlY3Q+JiB0aWNrbWFya3MpCiB7CiAgICAg
aWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSAhPSBWZXJ0aWNhbFNjcm9sbGJhcikKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcAppbmRleCBmNDM1ODM5ZDgyMTg1
NjRmODAyNzI4ZDMyODUzMjBkMWUwY2RiYWM4Li5hMDgxOTgzNDc0OTFkY2M1ZDhmMDIyYTEyMjg4
OTBkNjU3N2ZlM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcApAQCAtNzMsNyArNzMs
NyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmludmFsaWRhdGVPbk1vdXNlRW50
ZXJFeGl0KCkKICAgICByZXR1cm4gd2luZG93c1ZlcnNpb24oKSA+PSBXaW5kb3dzVmlzdGE7CiB9
CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdP
cmlnaW4oU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0
KQorYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpzaG91bGRTbmFwQmFja1RvRHJhZ09y
aWdpbihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGV2dCkKIHsKICAgICAvLyBGaW5kIHRoZSByZWN0IHdpdGhpbiB3aGljaCB3ZSBzaG91
bGRuJ3Qgc25hcCwgYnkgZXhwYW5kaW5nIHRoZSB0cmFjayByZWN0CiAgICAgLy8gaW4gYm90aCBk
aW1lbnNpb25zLgpAQCAtOTEsNyArOTEsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1X
aW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhciogc2Nyb2xsYmFyLAogICAg
IHJldHVybiAhcmVjdC5jb250YWlucyhtb3VzZVBvc2l0aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtV2luOjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywg
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQg
cGFydFR5cGUpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VHJhY2tQaWVj
ZShHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBj
b25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQogewogICAgIGJvb2wg
aG9yeiA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyOwog
CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWlu
dFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKgogICAgICAgICBhbGln
blJlY3QpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50QnV0dG9u
KEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0
JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1X
aW46OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsK
ICAgICBib29sIGhvcnogPSBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNj
cm9sbGJhcjsKIApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bVdpbjo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvCiAg
ICAgICAgIHJlY3QpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50
VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIo
R3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBib29sIGhvcnogPSBzY3JvbGxiYXItPm9yaWVudGF0
aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsKIApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdj
LCBTY3JvbGxiYXIqIHNjcm9sCiAgICAgICAgIHJlY3QpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xs
YmFyUGFydCBwYXJ0KSBjb25zdAoraW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldFRo
ZW1lU3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBw
YXJ0KSBjb25zdAogewogICAgIC8vIFdoZW4gZHJhZ2dpbmcgdGhlIHRodW1iLCBkcmF3IHRodW1i
IHByZXNzZWQgYW5kIG90aGVyIHNlZ21lbnRzIG5vcm1hbAogICAgIC8vIHJlZ2FyZGxlc3Mgb2Yg
d2hlcmUgdGhlIGN1cnNvciBhY3R1YWxseSBpcy4gIFNlZSBhbHNvIGZvdXIgcGxhY2VzIGluCkBA
IC0xNzEsNyArMTcxLDcgQEAgaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldFRoZW1l
U3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gKHNj
cm9sbGJhci0+cHJlc3NlZFBhcnQoKSA9PSBwYXJ0KSA/IFNDUkJTX1BSRVNTRUQgOiBTQ1JCU19O
T1JNQUw7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93
U3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29uc3QKK2lu
dCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3RhdGUoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KSBjb25zdAogewogICAg
IC8vIFdlIGNvdWxkIHRha2UgYWR2YW50YWdlIG9mIGtub3dpbmcgdGhlIHZhbHVlcyBpbiB0aGUg
c3RhdGUgZW51bSB0byB3cml0ZQogICAgIC8vIHNvbWUgc2ltcGxlciBjb2RlLCBidXQgdHJlYXRp
bmcgdGhlIHN0YXRlIGVudW0gYXMgYSBibGFjayBib3ggc2VlbXMKQEAgLTIyMSw3ICsyMjEsNyBA
QCBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVBcnJvd1N0YXRlKFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYQogICAgIHJldHVybiAoc2Nyb2xsYmFyLT5wcmVzc2Vk
UGFydCgpID09IHBhcnQpID8gQUJTX0RPV05QUkVTU0VEIDogQUJTX0RPV05OT1JNQUw7CiB9CiAK
LWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRDbGFzc2ljVGhlbWVTdGF0ZShTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KSBjb25zdAoraW50IFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1XaW46OmdldENsYXNzaWNUaGVtZVN0YXRlKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29uc3QKIHsKICAgICAvLyBXaGVu
IGRyYWdnaW5nIHRoZSB0aHVtYiwgZHJhdyB0aGUgYnV0dG9ucyBub3JtYWwgZXZlbiB3aGVuIGhv
dmVyZWQuCiAgICAgaWYgKHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCkBA
IC0yMzUsMTIgKzIzNSwxMiBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xh
c3NpY1RoZW1lU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbAogICAgIHJldHVybiAo
c2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpID09IHBhcnQpID8gKERGQ1NfUFVTSEVEIHwgREZDU19G
TEFUKSA6IDA7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkQ2Vu
dGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jv
b2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIHJl
dHVybiBldnQuc2hpZnRLZXkoKSAmJiBldnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbjsKIH0KIAot
SW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpidXR0b25TaXplKFNjcm9sbGJhciog
c2Nyb2xsYmFyKQorSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpidXR0b25TaXpl
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgLy8gT3VyIGRlc2lyZWQg
cmVjdCBpcyBlc3NlbnRpYWxseSB0aGlja25lc3MgYnkgdGhpY2tuZXNzLgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
V2luLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtV2luLmgKaW5kZXggNjljZmExMzFjNWNiMDRlOWI1MjEwYjc2NWNmYjQ4MWU4ZGRjYjEz
NS4uYWM4ODgxZjkzYjVkYjFhZmY0Njc5YTYwNjNlN2JhN2U4NmY1NTFmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1l
Q2hyb21pdW1XaW4uaApAQCAtMzgsMTkgKzM4LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxi
YXJDb250cm9sU2l6ZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpbnZhbGlkYXRlT25Nb3VzZUVu
dGVyRXhpdCgpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmln
aW4oU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXJUaGVtZUNsaWVudCos
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhcios
IGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBh
aW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBT
Y3JvbGxiYXJQYXJ0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3ND
b250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmKTsKLSAgICAgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJP
blRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7
CisgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50
Kik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBpbnQgZ2V0VGhlbWVTdGF0ZShTY3JvbGxiYXIq
LCBTY3JvbGxiYXJQYXJ0KSBjb25zdDsKLSAgICAgICAgaW50IGdldFRoZW1lQXJyb3dTdGF0ZShT
Y3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0KSBjb25zdDsKLSAgICAgICAgaW50IGdldENsYXNzaWNU
aGVtZVN0YXRlKFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQpIGNvbnN0OworICAgICAgICBpbnQg
Z2V0VGhlbWVTdGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIGNvbnN0
OworICAgICAgICBpbnQgZ2V0VGhlbWVBcnJvd1N0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
U2Nyb2xsYmFyUGFydCkgY29uc3Q7CisgICAgICAgIGludCBnZXRDbGFzc2ljVGhlbWVTdGF0ZShT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIGNvbnN0OwogICAgIH07CiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwv
U2Nyb2xsYmFyVGhlbWVFZmwuY3BwCmluZGV4IDYyZGYwMDVkNjc1NzFkMTRhZDM5NDM2MGQ1NmM0
OThlNGRmOTJiZmIuLjI0MGI1MDE0Nzc5YzE4MmQxNDM5MGMzZjhjMzkzNzc1NzdlOTNhODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmNw
cApAQCAtNDksMTEgKzQ5LDExIEBAIGludCBTY3JvbGxiYXJUaGVtZUVmbDo6c2Nyb2xsYmFyVGhp
Y2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogICAgIHJldHVybiAwOyAv
LyB3ZSBwYWludCBvbiB0b3AKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUVmbDo6cmVnaXN0ZXJT
Y3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lRWZsOjpy
ZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogfQog
Ci12b2lkIFNjcm9sbGJhclRoZW1lRWZsOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciog
c2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUVmbDo6dW5yZWdpc3RlclNjcm9sbGJhcihT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5oCmluZGV4IDBmZTE2ODgxZTJlNDU2
ZTZlMTIzMDFhZWVmODZjMjY1YmQzMzIzNGIuLjI4YzE2M2VkMzg4NjEwOTNhZDc4OTc1MTEyZTU2
MWIxOGYxNjcwMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3Jv
bGxiYXJUaGVtZUVmbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxi
YXJUaGVtZUVmbC5oCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgaW50
IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxi
YXIpOwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Ny
b2xsYmFyKTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIq
IHNjcm9sbGJhcik7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJh
clRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwCmluZGV4IGU5OTM2NGYyYTdmY2FmNDg4ODMw
YjQ2OGRlMWQxOGFkNzUwNGU5MGYuLjk0ZTNmZDc2ZjdmZmM1MjMwZmM4NDdmZjlmZWNhZjQzZGM0
NmZhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJU
aGVtZUd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRo
ZW1lR3RrLmNwcApAQCAtMzMsNyArMzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0
YXRpYyBIYXNoU2V0PFNjcm9sbGJhcio+KiBnU2Nyb2xsYmFyczsKK3N0YXRpYyBIYXNoU2V0PFNj
cm9sbGJhclRoZW1lQ2xpZW50Kj4qIGdTY3JvbGxiYXJzOwogCiBTY3JvbGxiYXJUaGVtZSogU2Ny
b2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCkKIHsKQEAgLTQ1LDE0ICs0NSwxNCBAQCBTY3JvbGxi
YXJUaGVtZUd0azo6flNjcm9sbGJhclRoZW1lR3RrKCkKIHsKIH0KIAotdm9pZCBTY3JvbGxiYXJU
aGVtZUd0azo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNj
cm9sbGJhclRoZW1lR3RrOjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQogewogICAgIGlmICghZ1Njcm9sbGJhcnMpCi0gICAgICAgIGdTY3JvbGxiYXJz
ID0gbmV3IEhhc2hTZXQ8U2Nyb2xsYmFyKj47CisgICAgICAgIGdTY3JvbGxiYXJzID0gbmV3IEhh
c2hTZXQ8U2Nyb2xsYmFyVGhlbWVDbGllbnQqPjsKICAgICBnU2Nyb2xsYmFycy0+YWRkKHNjcm9s
bGJhcik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnVucmVnaXN0ZXJTY3JvbGxiYXIo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjp1bnJlZ2lzdGVy
U2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgZ1Njcm9s
bGJhcnMtPnJlbW92ZShzY3JvbGxiYXIpOwogICAgIGlmIChnU2Nyb2xsYmFycy0+aXNFbXB0eSgp
KSB7CkBAIC02OSw5ICs2OSw5IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVNjcm9s
bGJhcnNGcmFtZVRoaWNrbmVzcygpCiAgICAgLy8gVXBkYXRlIHRoZSB0aGlja25lc3Mgb2YgZXZl
cnkgaW50ZXJpb3IgZnJhbWUgc2Nyb2xsYmFyIHdpZGdldC4gVGhlCiAgICAgLy8gcGxhdGZvcm0t
aW5kZXBlbmRlbnQgc2Nyb2xsYmFyIHRoZW0gY29kZSBpc24ndCB5ZXQgc21hcnQgZW5vdWdoIHRv
IGdldAogICAgIC8vIHRoaXMgaW5mb3JtYXRpb24gd2hlbiBpdCBwYWludHMuCi0gICAgSGFzaFNl
dDxTY3JvbGxiYXIqPjo6aXRlcmF0b3IgZW5kID0gZ1Njcm9sbGJhcnMtPmVuZCgpOwotICAgIGZv
ciAoSGFzaFNldDxTY3JvbGxiYXIqPjo6aXRlcmF0b3IgaXQgPSBnU2Nyb2xsYmFycy0+YmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyID0gKCpp
dCk7CisgICAgSGFzaFNldDxTY3JvbGxiYXJUaGVtZUNsaWVudCo+OjppdGVyYXRvciBlbmQgPSBn
U2Nyb2xsYmFycy0+ZW5kKCk7CisgICAgZm9yIChIYXNoU2V0PFNjcm9sbGJhclRoZW1lQ2xpZW50
Kj46Oml0ZXJhdG9yIGl0ID0gZ1Njcm9sbGJhcnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
eworICAgICAgICBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyID0gKCppdCk7CiAKICAg
ICAgICAgLy8gVG9wLWxldmVsIHNjcm9sbGJhciBpLmUuIHNjcm9sbGJhcnMgd2hvIGhhdmUgYSBw
YXJlbnQgU2Nyb2xsVmlldwogICAgICAgICAvLyB3aXRoIG5vIHBhcmVudCBhcmUgbmF0aXZlLCBh
bmQgdGh1cyBkbyBub3QgbmVlZCB0byBiZSByZXNpemVkLgpAQCAtODYsMTQgKzg2LDE0IEBAIHZv
aWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRoaWNrbmVzcygpCiAg
ICAgfQogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lR3RrOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNj
cm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6Omhhc1RodW1iKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgLy8gVGhpcyBtZXRob2QgaXMganVzdCBjYWxsZWQg
YXMgYSBwYWludC10aW1lIG9wdGltaXphdGlvbiB0byBzZWUgaWYKICAgICAvLyBwYWludGluZyB0
aGUgdGh1bWIgY2FuIGJlIHNraXBwZWQuICBXZSBkb24ndCBoYXZlIHRvIGJlIGV4YWN0IGhlcmUu
CiAgICAgcmV0dXJuIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikgPiAwOwogfQogCi1JbnRSZWN0IFNj
cm9sbGJhclRoZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Ny
b2xsYmFyUGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6YmFja0J1
dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBw
YXJ0LCBib29sKQogewogICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0b25FbmRQYXJ0ICYmICFtX2hh
c0JhY2tCdXR0b25FbmRQYXJ0KQogICAgICAgICByZXR1cm4gSW50UmVjdCgpOwpAQCAtMTE0LDcg
KzExNCw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0KFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhCiAgICAgcmV0dXJuIEludFJlY3QoeCwg
c2Nyb2xsYmFyLT55KCkgKyBzY3JvbGxiYXItPmhlaWdodCgpIC0gbV90cm91Z2hCb3JkZXJXaWR0
aCAtICgyICogc2l6ZS5oZWlnaHQoKSksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9
CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJh
clRoZW1lR3RrOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAgICAgaWYgKHBhcnQgPT0gRm9yd2Fy
ZEJ1dHRvblN0YXJ0UGFydCAmJiAhbV9oYXNGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0KQogICAgICAg
ICByZXR1cm4gSW50UmVjdCgpOwpAQCAtMTQwLDcgKzE0MCw3IEBAIEludFJlY3QgU2Nyb2xsYmFy
VGhlbWVHdGs6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxi
YXJQYXJ0CiAgICAgcmV0dXJuIEludFJlY3QoeCwgc2Nyb2xsYmFyLT55KCkgKyBtX3Ryb3VnaEJv
cmRlcldpZHRoICsgc2l6ZS5oZWlnaHQoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsK
IH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tSZWN0KFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgLy8gVGhlIHBhZGRpbmcg
YWxvbmcgdGhlIHRodW1iIG1vdmVtZW50IGF4aXMgaW5jbHVkZXMgdGhlIHRyb3VnaCBib3JkZXIK
ICAgICAvLyBwbHVzIHRoZSBzaXplIG9mIHN0ZXBwZXIgc3BhY2luZyAodGhlIHNwYWNlIGJldHdl
ZW4gdGhlIHN0ZXBwZXIgYW5kCkBAIC0xODAsNyArMTgwLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJU
aGVtZUd0azo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQogICAgICAgICAg
ICAgICAgICAgIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtICgyICogbW92ZW1lbnRB
eGlzUGFkZGluZykgLSBidXR0b25zV2lkdGgpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1l
R3RrOjp0aHVtYlJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29u
c3RyYWluZWRUcmFja1JlY3QpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0aHVtYlJlY3Qo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJh
aW5lZFRyYWNrUmVjdCkKIHsKICAgICBJbnRSZWN0IHRyYWNrUmVjdCA9IGNvbnN0cmFpblRyYWNr
UmVjdFRvVHJhY2tQaWVjZXMoc2Nyb2xsYmFyLCB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KTsKICAg
ICBpbnQgdGh1bWJQb3MgPSB0aHVtYlBvc2l0aW9uKHNjcm9sbGJhcik7CkBAIC0xOTEsNyArMTkx
LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6dGh1bWJSZWN0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnMKICAgICByZXR1cm4gSW50UmVjdCh0cmFja1Jl
Y3QueCgpICsgKHRyYWNrUmVjdC53aWR0aCgpIC0gbV90aHVtYkZhdG5lc3MpIC8gMiwgdHJhY2tS
ZWN0LnkoKSArIHRodW1iUG9zLCBtX3RodW1iRmF0bmVzcywgdGh1bWJMZW5ndGgoc2Nyb2xsYmFy
KSk7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFt
YWdlUmVjdCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBkYW1hZ2VSZWN0KQogewogICAgIGlmIChncmFwaGljc0NvbnRleHQtPnBhaW50aW5n
RGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYwLDcgKzI2MCw3IEBAIGJv
b2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU2Nyb2xs
YmFyVGhlbWVHdGs6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldmVudCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6OnNob3VsZENlbnRl
ck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50KQogewogICAgIHJldHVybiAoZXZlbnQuc2hpZnRLZXkoKSAmJiBldmVudC5idXR0b24o
KSA9PSBMZWZ0QnV0dG9uKSB8fCAoZXZlbnQuYnV0dG9uKCkgPT0gTWlkZGxlQnV0dG9uKTsKIH0K
QEAgLTI3MCw3ICsyNzAsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVHdGs6OnNjcm9sbGJhclRoaWNr
bmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSkKICAgICByZXR1cm4gbV90aHVtYkZhdG5lc3MgKyAo
bV90cm91Z2hCb3JkZXJXaWR0aCAqIDIpOwogfQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lR3Rr
OjpidXR0b25TaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorSW50U2l6ZSBTY3JvbGxiYXJUaGVt
ZUd0azo6YnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAg
IGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpCiAgICAg
ICAgIHJldHVybiBJbnRTaXplKG1fdGh1bWJGYXRuZXNzLCBtX3N0ZXBwZXJTaXplKTsKQEAgLTI3
OSw3ICsyNzksNyBAQCBJbnRTaXplIFNjcm9sbGJhclRoZW1lR3RrOjpidXR0b25TaXplKFNjcm9s
bGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiBJbnRTaXplKG1fc3RlcHBlclNpemUsIG1fdGh1
bWJGYXRuZXNzKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lR3RrOjptaW5pbXVtVGh1bWJMZW5n
dGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVHdGs6Om1pbmltdW1U
aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVy
biBtX21pblRodW1iTGVuZ3RoOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2Nyb2xsYmFyVGhlbWVHdGsuaAppbmRleCA0NWUwOTNiMWVjOTdkMWFmYWEyNGM1ODMzMTU2Njkz
MDJlODVjZDYzLi5lNzNkZjI4NTUwMWI1ODI2ZGMwNTliODNiZmMzZDlhNDE3MGQ0YmExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuaApAQCAt
MzcsMjkgKzM3LDI5IEBAIHB1YmxpYzoKICAgICBTY3JvbGxiYXJUaGVtZUd0aygpOwogICAgIHZp
cnR1YWwgflNjcm9sbGJhclRoZW1lR3RrKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9u
cyhTY3JvbGxiYXIqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1i
KFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxi
YXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1
dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCk7Ci0gICAgdmlydHVhbCBJ
bnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29sKTsKLSAgICBJbnRSZWN0IHRodW1iUmVj
dChTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KTsKLSAg
ICBib29sIHBhaW50KFNjcm9sbGJhciosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QpOwotICAgIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNz
Q29udGV4dCosIFNjcm9sbGJhciopOwotICAgIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZvaWQgcGFp
bnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0g
ICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhcios
IGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJu
IHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
KTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1
dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sKTsKKyAg
ICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCk7
CisgICAgSW50UmVjdCB0aHVtYlJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KTsKKyAgICBib29sIHBhaW50KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7
CisgICAgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAg
IHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCos
IGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3ND
b250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFy
UGFydCk7CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICAgICB2aXJ0dWFsIGludCBz
Y3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUpOwotICAgIHZpcnR1YWwgSW50
U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVt
Ykxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3Jv
bGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChT
Y3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiAgICAgLy8gVE9ETzogVGhlc2UgYXJlIHRoZSBkZWZh
dWx0IEdUSysgdmFsdWVzLiBBdCBzb21lIHBvaW50IHdlIHNob3VsZCBwdWxsIHRoZXNlIGZyb20g
dGhlIHRoZW1lIGl0c2VsZi4KICAgICB2aXJ0dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Njcm9sbFRp
bWVyRGVsYXkoKSB7IHJldHVybiAwLjIwOyB9CiAgICAgdmlydHVhbCBkb3VibGUgYXV0b3Njcm9s
bFRpbWVyRGVsYXkoKSB7IHJldHVybiAwLjAyOyB9CiAgICAgdm9pZCB1cGRhdGVUaGVtZVByb3Bl
cnRpZXMoKTsKICAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRoaWNrbmVzcygpOwotICAg
IHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKik7Ci0gICAgdm9pZCB1bnJlZ2lzdGVy
U2Nyb2xsYmFyKFNjcm9sbGJhciopOworICAgIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKTsKKyAgICB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKTsKIAogcHJvdGVjdGVkOgogI2lmbmRlZiBHVEtfQVBJX1ZFUlNJT05fMgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3Rr
Mi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsyLmNw
cAppbmRleCA3MjliZDEyNGRlMmIyMTg1NDk5N2IxOTg3NjMwY2RmODliZWE5MTAzLi44NjZiYjhh
MWQyZjcxYWE4NjRlYTU3ZWQzMDNmMTM2MDcyYzFjNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsyLmNwcApAQCAtNjYsMTMgKzY2LDEz
IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVRoZW1lUHJvcGVydGllcygpCiAgICAg
dXBkYXRlU2Nyb2xsYmFyc0ZyYW1lVGhpY2tuZXNzKCk7CiB9CiAKLXN0YXRpYyBHdGtXaWRnZXQq
IGdldFdpZGdldEZvclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3N0YXRpYyBHdGtX
aWRnZXQqIGdldFdpZGdldEZvclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyKQogewogICAgIFJlbmRlclRoZW1lR3RrKiB0aGVtZSA9IHN0YXRpY19jYXN0PFJlbmRlclRo
ZW1lR3RrKj4oUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLmdldCgpKTsKICAgICByZXR1cm4g
c2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gdGhlbWUtPmd0
a1ZTY3JvbGxiYXIoKSA6IHRoZW1lLT5ndGtIU2Nyb2xsYmFyKCk7CiB9CiAKLXZvaWQgU2Nyb2xs
YmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9s
bGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7CiAgICAgLy8gUGFpbnQgdGhlIHRyYWNrIGJhY2tncm91bmQuIElmIHRoZSB0cm91Z2gtdW5k
ZXItc3RlcHBlcnMgcHJvcGVydHkgaXMgdHJ1ZSwgdGhpcwogICAgIC8vIHNob3VsZCBiZSB0aGUg
ZnVsbCBzaXplIG9mIHRoZSBzY3JvbGxiYXIsIGJ1dCBpZiBpcyBmYWxzZSwgaXQgc2hvdWxkIG9u
bHkgYmUgdGhlCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50
VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RBVEVfQUNUSVZFLCBHVEtfU0hBRE9XX0lO
LCAidHJvdWdoIik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFy
QmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFy
KQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsK
ICAgICBJbnRSZWN0IGZ1bGxTY3JvbGxiYXJSZWN0ID0gSW50UmVjdChzY3JvbGxiYXItPngoKSwg
c2Nyb2xsYmFyLT55KCksIHNjcm9sbGJhci0+d2lkdGgoKSwgc2Nyb2xsYmFyLT5oZWlnaHQoKSk7
CiAKQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxi
YXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2wKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JNQUwsIEdUS19TSEFET1dfSU4sICJzY3Jv
bGxlZF93aW5kb3ciKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYihHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiB7CiAgICAgR3RrV2lkZ2V0KiB3aWRnZXQgPSBnZXRXaWRnZXRGb3JTY3Jv
bGxiYXIoc2Nyb2xsYmFyKTsKICAgICBnYm9vbGVhbiBhY3RpdmF0ZVNsaWRlcjsKQEAgLTEyOSw3
ICsxMjksNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYQogICAgIHdpZGdldENvbnRleHQuZ3Rr
UGFpbnRTbGlkZXIoc2xpZGVyUmVjdCwgd2lkZ2V0LCBzdGF0ZVR5cGUsIHNoYWRvd1R5cGUsICJz
bGlkZXIiLCBvcmllbnRhdGlvbik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50
QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhl
bWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBw
YXJ0KQogewogICAgIC8vIFRoZSBidXR0b25zIHdpbGwgYmUgZGlzYWJsZWQgaWYgdGhlIHRodW1i
IGlzIGFzIHRoZSBhcHByb3ByaWF0ZSBleHRyZW1lLgogICAgIEd0a1NoYWRvd1R5cGUgc2hhZG93
VHlwZSA9IEdUS19TSEFET1dfT1VUOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrMy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvU2Nyb2xsYmFyVGhlbWVHdGszLmNwcAppbmRleCA0YzMzZTY2ZGI4ZmZlZmMzZjQyMzQ2Y2Fk
MGVlZTY3ZWU2Y2Q0NWZlLi45NzQ5YzU0M2YzZGRmNmIzMTVlZmZiOThhNzU5ZmY1YjAwMmQ3MGNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVH
dGszLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVH
dGszLmNwcApAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgdm9pZCBhcHBseVNjcm9sbGJhclN0eWxl
Q29udGV4dENsYXNzZXMoR3RrU3R5bGVDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYQogICAgIGd0
a19zdHlsZV9jb250ZXh0X2FkZF9jbGFzcyhjb250ZXh0LCBvcmllbnRhdGlvbiA9PSBWZXJ0aWNh
bFNjcm9sbGJhciA/ICBHVEtfU1RZTEVfQ0xBU1NfVkVSVElDQUwgOiBHVEtfU1RZTEVfQ0xBU1Nf
SE9SSVpPTlRBTCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFj
a2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gUGFpbnQgdGhlIHRyYWNr
IGJhY2tncm91bmQuIElmIHRoZSB0cm91Z2gtdW5kZXItc3RlcHBlcnMgcHJvcGVydHkgaXMgdHJ1
ZSwgdGhpcwogICAgIC8vIHNob3VsZCBiZSB0aGUgZnVsbCBzaXplIG9mIHRoZSBzY3JvbGxiYXIs
IGJ1dCBpZiBpcyBmYWxzZSwgaXQgc2hvdWxkIG9ubHkgYmUgdGhlCkBAIC05NCw3ICs5NCw3IEBA
IHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfcmVzdG9yZSht
X2NvbnRleHQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJhckJh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhcikK
K3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAg
ICAgZ3RrX3N0eWxlX2NvbnRleHRfc2F2ZShtX2NvbnRleHQpOwogCkBAIC0xMDUsNyArMTA1LDcg
QEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2wKICAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3Jl
KG1fY29udGV4dCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VGh1bWIoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQogewogICAgIGd0a19zdHlsZV9jb250ZXh0X3NhdmUobV9jb250ZXh0KTsKIApA
QCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VGh1bWIoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhCiAgICAgZ3RrX3N0eWxl
X2NvbnRleHRfcmVzdG9yZShtX2NvbnRleHQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lR3Rr
OjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9s
bGJhclRoZW1lR3RrOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJh
clBhcnQgcGFydCkKIHsKICAgICBndGtfc3R5bGVfY29udGV4dF9zYXZlKG1fY29udGV4dCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1h
Yy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmgKaW5k
ZXggMTNkNDRjMjNkM2IzMzYyMzZmYjY0MDk4ZmE4NzBhZWM4YzdiNTY1OC4uZDE0ZGE2ZGIyNGIw
N2E2Mjk3ZDEyNzZhNDFmM2JiYjNlZTExMjU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmgKQEAgLTM5LDQ2ICszOSw0NiBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHByZWZlcmVuY2VzQ2hhbmdlZCgpOwogCi0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRW5h
YmxlZFN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKICNpZiAhUExBVEZPUk0oQ0hST01J
VU0pCi0gICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhciosIEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CisgICAgdmlydHVhbCBib29sIHBh
aW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVj
dCYgZGFtYWdlUmVjdCk7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNr
bmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpOwogICAgIAogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KICAgICB2aXJ0dWFsIGJvb2wgdXNlc092ZXJsYXlTY3JvbGxiYXJzKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXIqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhclRoZW1l
Q2xpZW50Kik7CiAKICAgICB2aXJ0dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVs
YXkoKTsKICAgICB2aXJ0dWFsIGRvdWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpOwogCiAgICAg
dmlydHVhbCBTY3JvbGxiYXJCdXR0b25zUGxhY2VtZW50IGJ1dHRvbnNQbGFjZW1lbnQoKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwog
Ci0gICAgdm9pZCBzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciosIFNjcm9sbGJh
clBhaW50ZXIpOwotICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlckZvclNjcm9sbGJhcihTY3Jv
bGxiYXIqKTsKKyAgICB2b2lkIHNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBTY3JvbGxiYXJQYWludGVyKTsKKyAgICBTY3JvbGxiYXJQYWludGVyIHBhaW50
ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogICAgIHN0YXRpYyBib29s
IGlzQ3VycmVudGx5RHJhd2luZ0ludG9MYXllcigpOwogICAgIHN0YXRpYyB2b2lkIHNldElzQ3Vy
cmVudGx5RHJhd2luZ0ludG9MYXllcihib29sKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwg
Ym9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihT
Y3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNs
aWVudCopOworICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCop
OwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9s
bGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZv
cndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29s
IHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxz
ZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0
dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGlu
ZyA9IGZhbHNlKTsKIAogICAgIHZpcnR1YWwgaW50IG1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSB7
IHJldHVybiA0MDsgfQogCi0gICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9s
bGJhciopOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVt
ZUNsaWVudCopOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNj
cm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwotICAgIHZpcnR1YWwgYm9vbCBz
aG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9y
bU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1
YWwgYm9vbCBzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIGludCBzY3JvbGxiYXJQYXJ0
VG9ISVByZXNzZWRTdGF0ZShTY3JvbGxiYXJQYXJ0KTsKIAogI2lmICFQTEFURk9STShDSFJPTUlV
TSkgJiYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoUlVCQkVSX0JBTkRJ
TkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhl
bWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMu
bW0KaW5kZXggY2M3NDgyNDU3Nzg1MjkzZDFkNTc4Yjc4MmQ4MWMyN2ZhYmIyNTkyNC4uM2I5MDIx
YWRlYTU1ZGM4YWZjZDY2YmRkZjU1NzYxMjQwOWQ5OTdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpAQCAtNTAsNyArNTAsNyBAQCB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVm
IEhhc2hNYXA8U2Nyb2xsYmFyKiwgUmV0YWluUHRyPFNjcm9sbGJhclBhaW50ZXI+ID4gU2Nyb2xs
YmFyUGFpbnRlck1hcDsKK3R5cGVkZWYgSGFzaE1hcDxTY3JvbGxiYXJUaGVtZUNsaWVudCosIFJl
dGFpblB0cjxTY3JvbGxiYXJQYWludGVyPiA+IFNjcm9sbGJhclBhaW50ZXJNYXA7CiAKIHN0YXRp
YyBTY3JvbGxiYXJQYWludGVyTWFwKiBzY3JvbGxiYXJNYXAoKQogewpAQCAtMTYyLDcgKzE2Miw3
IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUFycm93UGxhY2VtZW50KCkKICAgICB9CiB9CiAKLXZvaWQg
U2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFy
KQordm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZh
aWxhYmxlKCkpIHsKICAgICAgICAgYm9vbCBpc0hvcml6b250YWwgPSBzY3JvbGxiYXItPm9yaWVu
dGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsKQEAgLTE3NSwxOSArMTc1LDE5IEBAIHZv
aWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQogICAgIH0KIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dW5yZWdpc3RlclNjcm9s
bGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVucmVn
aXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBz
Y3JvbGxiYXJNYXAoKS0+cmVtb3ZlKHNjcm9sbGJhcik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhl
bWVNYWM6OnNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNj
cm9sbGJhclBhaW50ZXIgbmV3UGFpbnRlcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnNldE5l
d1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Ny
b2xsYmFyUGFpbnRlciBuZXdQYWludGVyKQogewogICAgIHNjcm9sbGJhck1hcCgpLT5zZXQoc2Ny
b2xsYmFyLCBuZXdQYWludGVyKTsKICAgICB1cGRhdGVFbmFibGVkU3RhdGUoc2Nyb2xsYmFyKTsK
ICAgICB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoc2Nyb2xsYmFyKTsKIH0KIAotU2Nyb2xs
YmFyUGFpbnRlciBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxi
YXIqIHNjcm9sbGJhcikKK1Njcm9sbGJhclBhaW50ZXIgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50
ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBy
ZXR1cm4gc2Nyb2xsYmFyTWFwKCktPmdldChzY3JvbGxiYXIpLmdldCgpOwogfQpAQCAtMjQ4LDEw
ICsyNDgsMTAgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6dXNlc092ZXJsYXlTY3JvbGxiYXJz
KCkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1l
TWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2
b2lkIFNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBTY3JvbGxiYXJQYWludGVyIHBhaW50
ZXIgPSBwYWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJhcik7Ci0gICAgc3dpdGNoIChzY3JvbGxi
YXItPnNjcm9sbGFibGVBcmVhKCktPnNjcm9sbGJhck92ZXJsYXlTdHlsZSgpKSB7CisgICAgc3dp
dGNoIChzY3JvbGxiYXItPnNjcm9sbGJhck92ZXJsYXlTdHlsZSgpKSB7CiAgICAgY2FzZSBTY3Jv
bGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0OgogICAgICAgICBbcGFpbnRlciBzZXRLbm9iU3R5bGU6
TlNTY3JvbGxlcktub2JTdHlsZURlZmF1bHRdOwogICAgICAgICBicmVhazsKQEAgLTI3OSw3ICsy
NzksNyBAQCBTY3JvbGxiYXJCdXR0b25zUGxhY2VtZW50IFNjcm9sbGJhclRoZW1lTWFjOjpidXR0
b25zUGxhY2VtZW50KCkgY29uc3QKICAgICByZXR1cm4gZ0J1dHRvblBsYWNlbWVudDsKIH0KIAot
Ym9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6aGFzQnV0dG9ucyhTY3JvbGxiYXIqIHNjcm9sbGJhcikK
K2Jvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gc2Nyb2xsYmFyLT5lbmFibGVkKCkgJiYgYnV0dG9u
c1BsYWNlbWVudCgpICE9IFNjcm9sbGJhckJ1dHRvbnNOb25lCiAgICAgICAgICAgICAgJiYgKHNj
cm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyCkBAIC0yODcsNyAr
Mjg3LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6aGFzQnV0dG9ucyhTY3JvbGxiYXIqIHNj
cm9sbGJhcikKICAgICAgICAgICAgICA6IHNjcm9sbGJhci0+aGVpZ2h0KCkpID49IDIgKiAoY1Jl
YWxCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSAtIGNCdXR0b25IaXRJbnNl
dFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZU1h
Yzo6aGFzVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lTWFj
OjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGludCBt
aW5MZW5ndGhGb3JUaHVtYjsKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxl
KCkpIHsKQEAgLTMxOSw3ICszMTksNyBAQCBzdGF0aWMgSW50UmVjdCBidXR0b25SZXBhaW50UmVj
dChjb25zdCBJbnRSZWN0JiBidXR0b25SZWN0LCBTY3JvbGxiYXJPcmllbnRhdGlvbgogICAgIHJl
dHVybiBwYWludFJlY3Q7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmJhY2tCdXR0
b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFp
bnRpbmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRp
bmcpCiB7CiAgICAgSW50UmVjdCByZXN1bHQ7CiAgICAgCkBAIC0zNTMsNyArMzUzLDcgQEAgSW50
UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGEKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbnRSZWN0IFNj
cm9sbGJhclRoZW1lTWFjOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwg
U2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwg
U2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQogewogICAgIEludFJlY3QgcmVzdWx0
OwogICAgIApAQCAtMzkzLDcgKzM5Myw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZv
cndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6dHJhY2tSZWN0
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJU
aGVtZU1hYzo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wg
cGFpbnRpbmcpCiB7CiAgICAgaWYgKHBhaW50aW5nIHx8ICFoYXNCdXR0b25zKHNjcm9sbGJhcikp
CiAgICAgICAgIHJldHVybiBzY3JvbGxiYXItPmZyYW1lUmVjdCgpOwpAQCAtNDMwLDcgKzQzMCw3
IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9s
bGJhciwgYm9vbCBwYWludGluZykKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwg
c2Nyb2xsYmFyLT55KCkgKyBzdGFydFdpZHRoLCB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0
KCkgLSB0b3RhbFdpZHRoKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lTWFjOjptaW5pbXVtVGh1
bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVNYWM6Om1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAg
IGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIFtz
Y3JvbGxiYXJNYXAoKS0+Z2V0KHNjcm9sbGJhcikuZ2V0KCkga25vYk1pbkxlbmd0aF07CkBAIC00
MzgsNyArNDM4LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lTWFjOjptaW5pbXVtVGh1bWJMZW5ndGgo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgICAgIHJldHVybiBjVGh1bWJNaW5MZW5ndGhbc2Ny
b2xsYmFyLT5jb250cm9sU2l6ZSgpXTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6c2hv
dWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2
dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICBpZiAo
ZXZ0LmJ1dHRvbigpICE9IExlZnRCdXR0b24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ0
Nyw3ICs0NDcsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudAogICAgIHJldHVybiBldnQuYWx0
S2V5KCk7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnNob3VsZERyYWdEb2N1bWVudElu
c3RlYWRPZlRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQp
Citib29sIFNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVt
YihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQp
CiB7CiAgICAgcmV0dXJuIGV2ZW50LmFsdEtleSgpOwogfQpAQCAtNDcwLDcgKzQ3MCw3IEBAIGlu
dCBTY3JvbGxiYXJUaGVtZU1hYzo6c2Nyb2xsYmFyUGFydFRvSElQcmVzc2VkU3RhdGUoU2Nyb2xs
YmFyUGFydCBwYXJ0KQogICAgIH0KIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRl
RW5hYmxlZFN0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZU1h
Yzo6dXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7
CiAgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQogICAgICAgICBbc2Ny
b2xsYmFyTWFwKCktPmdldChzY3JvbGxiYXIpLmdldCgpIHNldEVuYWJsZWQ6c2Nyb2xsYmFyLT5l
bmFibGVkKCldOwpAQCAtNDk5LDcgKzQ5OSw3IEBAIHN0YXRpYyB2b2lkIHNjcm9sbGJhclBhaW50
ZXJQYWludChTY3JvbGxiYXJQYWludGVyIHNjcm9sbGJhclBhaW50ZXIsIGJvb2wgZW5hYmxlCiB9
CiAKICNpZiAhUExBVEZPUk0oQ0hST01JVU0pCi1ib29sIFNjcm9sbGJhclRoZW1lTWFjOjpwYWlu
dChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBkYW1hZ2VSZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQogewogICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElB
dmFpbGFibGUoKSkgewogICAgICAgICBmbG9hdCB2YWx1ZSA9IDA7CkBAIC01NzAsNyArNTcwLDcg
QEAgYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY28KICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgp
KQogICAgICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBrVGhlbWVUcmFja0Rpc2FibGVkOwog
ICAgIGVsc2UKLSAgICAgICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0gc2Nyb2xsYmFyLT5zY3Jv
bGxhYmxlQXJlYSgpLT5pc0FjdGl2ZSgpID8ga1RoZW1lVHJhY2tBY3RpdmUgOiBrVGhlbWVUcmFj
a0luYWN0aXZlOworICAgICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBzY3JvbGxiYXItPmlz
U2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSA/IGtUaGVtZVRyYWNrQWN0aXZlIDoga1RoZW1lVHJhY2tJ
bmFjdGl2ZTsKIAogICAgIGlmIChoYXNUaHVtYihzY3JvbGxiYXIpKQogICAgICAgICB0cmFja0lu
Zm8uYXR0cmlidXRlcyB8PSBrVGhlbWVUcmFja1Nob3dUaHVtYjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAppbmRleCA1ZDJiYzNl
YzA4OTc4ZTAzNzM3ZmJhNzM5NWI4YjhjZTc0NjBkNDY0Li42ZGU5MWNjYjgxOTIxMDQwYzA4NDc4
YzFlZTU2NzdkZGU0Mzc0OTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIGludCBjU2Nyb2xsYmFyVGhpY2tuZXNzW10gPSB7IDE1LCAxMSB9
OwogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lTW9jazo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1vY2s6OnRyYWNrUmVjdChTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sKQogewogICAgIHJldHVybiBzY3JvbGxi
YXItPmZyYW1lUmVjdCgpOwogfQpAQCAtNDIsMTIgKzQyLDEyIEBAIGludCBTY3JvbGxiYXJUaGVt
ZU1vY2s6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6
ZSkKICAgICByZXR1cm4gY1Njcm9sbGJhclRoaWNrbmVzc1tjb250cm9sU2l6ZV07CiB9CiAKLXZv
aWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1Jl
Y3QpCit2b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25z
dCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7CiAgICAgY29udGV4dC0+ZmlsbFJlY3QodHJhY2tSZWN0
LCBzY3JvbGxiYXItPmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdyYXkgOiBDb2xvcigweEZGRTBF
MEUwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVNb2Nr
OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpw
YWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQogewogICAgIGlmIChzY3JvbGxi
YXItPmVuYWJsZWQoKSkKICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QodGh1bWJSZWN0LCBDb2xv
cjo6ZGFya0dyYXksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmgKaW5kZXggZTI1NDg0MjJhMjhmNWU3
MjNlNDM1M2Y4ZjQ1NzY1MjUzY2I2ODViYi4uNjMzMzg0MWFiNzk2YjlkYzIzM2YzZjYzZWI4MDBh
YmZhN2IwYmIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3Jv
bGxiYXJUaGVtZU1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9s
bGJhclRoZW1lTW9jay5oCkBAIC0zNiwxNSArMzYsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
aW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3Jv
bGxiYXIpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xs
YmFyKikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xs
YmFyKikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9s
bGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFz
VGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0
dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9v
bCAvKnBhaW50aW5nKi8gPSBmYWxzZSkgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmlydHVh
bCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJv
b2wgLypwYWludGluZyovID0gZmFsc2UpIHsgcmV0dXJuIEludFJlY3QoKTsgfQotICAgIHZpcnR1
YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsK
KyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBTY3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7IHJldHVybiBJbnRS
ZWN0KCk7IH0KKyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7
IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKICAgICAKLSAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
KiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNz
Q29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CiAgICAg
CiBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc01vY2tUaGVtZSgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJh
clRoZW1lUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVR
dC5jcHAKaW5kZXggZTMyNDNlY2ZhODk3OWI5YTY4MWUxNTliZGVlOWE5YjE1OWM2NzQzYy4uZDRi
NThiMWIwZTVhZjE3MGY5NmVmODM2NGI2OWI0ODRhMzYyMjI1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAKQEAgLTExMiw3ICsxMTIsNyBA
QCBzdGF0aWMgU2Nyb2xsYmFyUGFydCBzY3JvbGxiYXJQYXJ0KGNvbnN0IFFTdHlsZTo6U3ViQ29u
dHJvbCYgc2MpCiAgICAgcmV0dXJuIE5vUGFydDsKIH0KIAotc3RhdGljIFFTdHlsZU9wdGlvblNs
aWRlciogc3R5bGVPcHRpb25TbGlkZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFFXaWRnZXQqIHdp
ZGdldCA9IDApCitzdGF0aWMgUVN0eWxlT3B0aW9uU2xpZGVyKiBzdHlsZU9wdGlvblNsaWRlcihT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBRV2lkZ2V0KiB3aWRnZXQgPSAwKQogewog
ICAgIHN0YXRpYyBRU3R5bGVPcHRpb25TbGlkZXIgb3B0OwogICAgIGlmICh3aWRnZXQpCkBAIC0x
NTUsNyArMTU1LDcgQEAgc3RhdGljIFFTdHlsZU9wdGlvblNsaWRlciogc3R5bGVPcHRpb25TbGlk
ZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFFXaWRnZXQqIHdpZGcKICAgICByZXR1cm4gJm9wdDsK
IH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVF0OjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwg
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJl
Y3QpCitib29sIFNjcm9sbGJhclRoZW1lUXQ6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0
JiBkYW1hZ2VSZWN0KQogewogICAgIGlmIChncmFwaGljc0NvbnRleHQtPnVwZGF0aW5nQ29udHJv
bFRpbnRzKCkpIHsKICAgICAgICBzY3JvbGxiYXItPmludmFsaWRhdGVSZWN0KGRhbWFnZVJlY3Qp
OwpAQCAtMTkzLDcgKzE5Myw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVRdDo6cGFpbnQoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLVNjcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVRdDo6aGl0VGVzdChTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitTY3JvbGxi
YXJQYXJ0IFNjcm9sbGJhclRoZW1lUXQ6OmhpdFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgUVN0eWxlT3B0
aW9uU2xpZGVyKiBvcHQgPSBzdHlsZU9wdGlvblNsaWRlcihzY3JvbGxiYXIpOwogICAgIGNvbnN0
IFFQb2ludCBwb3MgPSBzY3JvbGxiYXItPmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQu
cG9zaXRpb24oKSk7CkBAIC0yMDIsMTMgKzIwMiwxMyBAQCBTY3JvbGxiYXJQYXJ0IFNjcm9sbGJh
clRoZW1lUXQ6OmhpdFRlc3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91
cwogICAgIHJldHVybiBzY3JvbGxiYXJQYXJ0KHNjKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVt
ZVF0OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZVF0OjpzaG91bGRDZW50ZXJPblRodW1iKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAg
ICAgLy8gTWlkZGxlIGNsaWNrIGNlbnRlcnMgc2xpZGVyIHRodW1iIChpZiBzdXBwb3J0ZWQpLgog
ICAgIHJldHVybiBzdHlsZSgpLT5zdHlsZUhpbnQoUVN0eWxlOjpTSF9TY3JvbGxCYXJfTWlkZGxl
Q2xpY2tBYnNvbHV0ZVBvc2l0aW9uKSAmJiBldnQuYnV0dG9uKCkgPT0gTWlkZGxlQnV0dG9uOwog
fQogCi12b2lkIFNjcm9sbGJhclRoZW1lUXQ6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBTY3JvbGxiYXJQYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZVF0OjppbnZhbGlkYXRl
UGFydChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0KQogewog
ICAgIC8vIEZJWE1FOiBEbyBtb3JlIHByZWNpc2UgaW52YWxpZGF0aW9uLgogICAgIHNjcm9sbGJh
ci0+aW52YWxpZGF0ZSgpOwpAQCAtMjI0LDcgKzIyNCw3IEBAIGludCBTY3JvbGxiYXJUaGVtZVF0
OjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiAg
ICAgcmV0dXJuIHN0eWxlKCktPnBpeGVsTWV0cmljKFFTdHlsZTo6UE1fU2Nyb2xsQmFyRXh0ZW50
LCAmbywgMCk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYlBvc2l0aW9uKFNjcm9s
bGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lUXQ6OnRodW1iUG9zaXRpb24oU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5lbmFi
bGVkKCkpIHsKICAgICAgICAgZmxvYXQgcG9zID0gKGZsb2F0KXNjcm9sbGJhci0+Y3VycmVudFBv
cygpICogKHRyYWNrTGVuZ3RoKHNjcm9sbGJhcikgLSB0aHVtYkxlbmd0aChzY3JvbGxiYXIpKSAv
IHNjcm9sbGJhci0+bWF4aW11bSgpOwpAQCAtMjMzLDIxICsyMzMsMjEgQEAgaW50IFNjcm9sbGJh
clRoZW1lUXQ6OnRodW1iUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJu
IDA7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYkxlbmd0aChTY3JvbGxiYXIqIHNj
cm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIFFTdHlsZU9wdGlvblNsaWRlciogb3B0ID0gc3R5
bGVPcHRpb25TbGlkZXIoc2Nyb2xsYmFyKTsKICAgICBJbnRSZWN0IHRodW1iID0gc3R5bGUoKS0+
c3ViQ29udHJvbFJlY3QoUVN0eWxlOjpDQ19TY3JvbGxCYXIsIG9wdCwgUVN0eWxlOjpTQ19TY3Jv
bGxCYXJTbGlkZXIsIDApOwogICAgIHJldHVybiBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0g
SG9yaXpvbnRhbFNjcm9sbGJhciA/IHRodW1iLndpZHRoKCkgOiB0aHVtYi5oZWlnaHQoKTsKIH0K
IAotaW50IFNjcm9sbGJhclRoZW1lUXQ6OnRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxi
YXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVRdDo6dHJhY2tQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyKQogewogICAgIFFTdHlsZU9wdGlvblNsaWRlciogb3B0ID0gc3R5bGVP
cHRpb25TbGlkZXIoc2Nyb2xsYmFyKTsKICAgICBJbnRSZWN0IHRyYWNrID0gc3R5bGUoKS0+c3Vi
Q29udHJvbFJlY3QoUVN0eWxlOjpDQ19TY3JvbGxCYXIsIG9wdCwgUVN0eWxlOjpTQ19TY3JvbGxC
YXJHcm9vdmUsIDApOwogICAgIHJldHVybiBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9y
aXpvbnRhbFNjcm9sbGJhciA/IHRyYWNrLngoKSAtIHNjcm9sbGJhci0+eCgpIDogdHJhY2sueSgp
IC0gc2Nyb2xsYmFyLT55KCk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZVF0Ojp0cmFja0xlbmd0
aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVF0Ojp0cmFja0xlbmd0
aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIFFTdHlsZU9wdGlvblNs
aWRlciogb3B0ID0gc3R5bGVPcHRpb25TbGlkZXIoc2Nyb2xsYmFyKTsKICAgICBJbnRSZWN0IHRy
YWNrID0gc3R5bGUoKS0+c3ViQ29udHJvbFJlY3QoUVN0eWxlOjpDQ19TY3JvbGxCYXIsIG9wdCwg
UVN0eWxlOjpTQ19TY3JvbGxCYXJHcm9vdmUsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5oCmluZGV4IGNmNDg4MmRhMjAzYmJmMGZiN2NjNjllN2Mz
ZTFjMWZmZGQ4MWY1ZWIuLjAzMzdiZjgwY2NmNjQ2ZDE4ZThmMDdjNGZlNWFjYmEzYWE5OTUyMmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmgKQEAg
LTQwLDE5ICs0MCwxOSBAQCBjbGFzcyBTY3JvbGxiYXJUaGVtZVF0IDogcHVibGljIFNjcm9sbGJh
clRoZW1lIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZVF0KCk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
SW50UmVjdCYgZGFtYWdlUmVjdCk7CisgICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7
CiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKIAotICAgIHZpcnR1YWwgU2Ny
b2xsYmFyUGFydCBoaXRUZXN0KFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
OworICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBoaXRUZXN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
Q2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCos
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGludmFsaWRh
dGVQYXJ0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBpbnZh
bGlkYXRlUGFydChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpOwogCi0gICAg
dmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0
aHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNj
cm9sbGJhciopOwotICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhciopOworICAg
IHZpcnR1YWwgaW50IHRodW1iUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2
aXJ0dWFsIGludCB0aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1
YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFs
IGludCB0cmFja0xlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiAgICAgdmlydHVhbCBp
bnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9s
bGJhcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxi
YXJUaGVtZVNhZmFyaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFy
VGhlbWVTYWZhcmkuY3BwCmluZGV4IDM0M2JiYjI4MGVkNmFmODQ4ZjUxY2MwMGVkOThmMzFmN2Ux
N2UyNDguLjFjYzUzODVlMTg3YTIyZWFmMWIwNTVlMzRiZTBmZjY0Mzg5MjliM2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmNw
cApAQCAtMTA0LDE0ICsxMDQsMTQgQEAgaW50IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpzY3JvbGxi
YXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiAgICAgcmV0dXJu
IGNTY3JvbGxiYXJUaGlja25lc3NbY29udHJvbFNpemVdOwogfQogCi1ib29sIFNjcm9sbGJhclRo
ZW1lU2FmYXJpOjpoYXNCdXR0b25zKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxi
YXJUaGVtZVNhZmFyaTo6aGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
KQogewogICAgIHJldHVybiBzY3JvbGxiYXItPmVuYWJsZWQoKSAmJiAoc2Nyb2xsYmFyLT5vcmll
bnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyAKICAgICAgICAgICAgICBzY3JvbGxi
YXItPndpZHRoKCkgOiAKICAgICAgICAgICAgICBzY3JvbGxiYXItPmhlaWdodCgpKSA+PSAyICog
KGNSZWFsQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0gLSBjQnV0dG9uSGl0
SW5zZXRbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSk7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhl
bWVTYWZhcmk6Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJU
aGVtZVNhZmFyaTo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsK
ICAgICByZXR1cm4gc2Nyb2xsYmFyLT5lbmFibGVkKCkgJiYgKHNjcm9sbGJhci0+b3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gCiAgICAgICAgICAgICAgc2Nyb2xsYmFyLT53
aWR0aCgpIDogCkBAIC0xMzQsNyArMTM0LDcgQEAgc3RhdGljIEludFJlY3QgYnV0dG9uUmVwYWlu
dFJlY3QoY29uc3QgSW50UmVjdCYgYnV0dG9uUmVjdCwgU2Nyb2xsYmFyT3JpZW50YXRpb24KICAg
ICByZXR1cm4gcGFpbnRSZWN0OwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpi
YWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBi
b29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6YmFja0J1dHRvblJl
Y3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBi
b29sIHBhaW50aW5nKQogewogICAgIEludFJlY3QgcmVzdWx0OwogCkBAIC0xNTIsNyArMTUyLDcg
QEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbnRS
ZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3Jv
bGxiYXJUaGVtZVNhZmFyaTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQogewogICAgIElu
dFJlY3QgcmVzdWx0OwogICAgIApAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyBJbnRSZWN0IHRy
YWNrUmVwYWludFJlY3QoY29uc3QgSW50UmVjdCYgdHJhY2tSZWN0LCBTY3JvbGxiYXJPcmllbnRh
dGlvbiBvCiAgICAgcmV0dXJuIHBhaW50UmVjdDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQor
SW50UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcpCiB7CiAgICAgaWYgKHBhaW50aW5nIHx8ICFo
YXNCdXR0b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHJldHVybiBzY3JvbGxiYXItPmZyYW1lUmVj
dCgpOwpAQCAtMTkzLDM2ICsxOTMsMzYgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6
dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQogICAgIHJldHVy
biBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIGNCdXR0b25MZW5ndGhb
c2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSwgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgp
IC0gMiAqIGNCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSk7CiB9CiAKLWlu
dCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lU2FmYXJpOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gY1RodW1iTWluTGVu
Z3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV07CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVT
YWZhcmk6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpzaG91bGRDZW50ZXJPblRo
dW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQp
CiB7CiAgICAgcmV0dXJuIGV2dC5zaGlmdEtleSgpICYmIGV2dC5idXR0b24oKSA9PSBMZWZ0QnV0
dG9uOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludFRyYWNrQmFja2dyb3Vu
ZChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHRyYWNrUmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBh
aW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7
CiAgICAgaWYgKCFTYWZhcmlUaGVtZUxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIE5T
Q29udHJvbFNpemUgc2l6ZSA9IHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSA9PSBTbWFsbFNjcm9s
bGJhciA/IE5TU21hbGxDb250cm9sU2l6ZSA6IE5TUmVndWxhckNvbnRyb2xTaXplOwogICAgIFRo
ZW1lQ29udHJvbFN0YXRlIHN0YXRlID0gMDsKLSAgICBpZiAoc2Nyb2xsYmFyLT5zY3JvbGxhYmxl
QXJlYSgpLT5pc0FjdGl2ZSgpKQorICAgIGlmIChzY3JvbGxiYXItPmlzU2Nyb2xsYWJsZUFyZWFB
Y3RpdmUoKSkKICAgICAgICAgc3RhdGUgfD0gQWN0aXZlU3RhdGU7CiAgICAgaWYgKGhhc0J1dHRv
bnMoc2Nyb2xsYmFyKSkKICAgICAgICAgc3RhdGUgfD0gRW5hYmxlZFN0YXRlOwogICAgIHBhaW50
VGhlbWVQYXJ0KHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhciA/
IFZTY3JvbGxUcmFja1BhcnQgOiBIU2Nyb2xsVHJhY2tQYXJ0LCBncmFwaGljc0NvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLCB0cmFja1JlY3QsIHNpemUsIHN0YXRlKTsgCiB9CiAKLXZvaWQgU2Ny
b2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3ND
b250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgYnV0dG9uUmVjdCwg
U2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0
b24oR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJhclBhcnQgcGFy
dCkKIHsKICAgICBpZiAoIVNhZmFyaVRoZW1lTGlicmFyeSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgTlNDb250cm9sU2l6ZSBzaXplID0gc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpID09IFNtYWxs
U2Nyb2xsYmFyID8gTlNTbWFsbENvbnRyb2xTaXplIDogTlNSZWd1bGFyQ29udHJvbFNpemU7CiAg
ICAgVGhlbWVDb250cm9sU3RhdGUgc3RhdGUgPSAwOwotICAgIGlmIChzY3JvbGxiYXItPnNjcm9s
bGFibGVBcmVhKCktPmlzQWN0aXZlKCkpCisgICAgaWYgKHNjcm9sbGJhci0+aXNTY3JvbGxhYmxl
QXJlYUFjdGl2ZSgpKQogICAgICAgICBzdGF0ZSB8PSBBY3RpdmVTdGF0ZTsKICAgICBpZiAoaGFz
QnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICBzdGF0ZSB8PSBFbmFibGVkU3RhdGU7CkBAIC0y
MzYsMTMgKzIzNiwxMyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbihH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYgogICAgICAgICAgICAgICAg
ICAgICAgICBidXR0b25SZWN0LCBzaXplLCBzdGF0ZSk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhl
bWVTYWZhcmk6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3QpCit2b2lkIFNjcm9s
bGJhclRoZW1lU2FmYXJpOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVt
YlJlY3QpCiB7CiAgICAgaWYgKCFTYWZhcmlUaGVtZUxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIE5TQ29udHJvbFNpemUgc2l6ZSA9IHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSA9PSBT
bWFsbFNjcm9sbGJhciA/IE5TU21hbGxDb250cm9sU2l6ZSA6IE5TUmVndWxhckNvbnRyb2xTaXpl
OwogICAgIFRoZW1lQ29udHJvbFN0YXRlIHN0YXRlID0gMDsKLSAgICBpZiAoc2Nyb2xsYmFyLT5z
Y3JvbGxhYmxlQXJlYSgpLT5pc0FjdGl2ZSgpKQorICAgIGlmIChzY3JvbGxiYXItPmlzU2Nyb2xs
YWJsZUFyZWFBY3RpdmUoKSkKICAgICAgICAgc3RhdGUgfD0gQWN0aXZlU3RhdGU7CiAgICAgaWYg
KGhhc1RodW1iKHNjcm9sbGJhcikpCiAgICAgICAgIHN0YXRlIHw9IEVuYWJsZWRTdGF0ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFy
aS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmgK
aW5kZXggZjAzOTM3OWVhNDQ3MDhlOGI1Yjc1Zjk2MDU1MzJmZTExZDYyNjU5Mi4uZjQyN2IxOTBm
ZDY3NjY1MjE1Njc1NjZjYjZjYmM0ZGZlNDNkOTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmgKQEAgLTQxLDIwICs0MSwyMCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRv
bnMoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOwor
ICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAg
dmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0
dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9v
bCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJl
Y3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAg
ICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBm
YWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0
dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3Jv
bGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCB0
cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwog
Ci0gICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZp
cnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogICAg
IAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRo
dW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRv
bihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFy
UGFydCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFj
a2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IElu
dFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Cisg
ICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcAppbmRleCBkMzYzNDEwNjg0ODdm
ZjFiNzg2OTc2OGU5ZDVmNmIyZjQ4OTgxYWE1Li41NjQ0Mjk3ZDdmMjcwYzUwYzdhMjhlZjNiMWUy
NGFjZjFkMTI3OWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Ny
b2xsYmFyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3Jv
bGxiYXJUaGVtZVdpbi5jcHAKQEAgLTEzMCwxMiArMTMwLDEyIEBAIGJvb2wgU2Nyb2xsYmFyVGhl
bWVXaW46OmludmFsaWRhdGVPbk1vdXNlRW50ZXJFeGl0KCkKICAgICByZXR1cm4gcnVubmluZ1Zp
c3RhOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lV2luOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNj
cm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVXaW46Omhhc1RodW1iKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikg
PiAwOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpiYWNrQnV0dG9uUmVjdChTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3Jv
bGxiYXJUaGVtZVdpbjo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIC8vIFdpbmRvd3MganVzdCBo
YXMgc2luZ2xlIGFycm93cy4KICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uRW5kUGFydCkKQEAg
LTE1NCw3ICsxNTQsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpiYWNrQnV0dG9uUmVj
dChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYQogICAgICAgICAgICAgICAg
ICAgIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSA8IDIgKiB0aGlja25lc3MgPyBzY3Jv
bGxiYXItPmhlaWdodCgpIC8gMiA6IHRoaWNrbmVzcyk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFy
VGhlbWVXaW46OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxi
YXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpmb3J3YXJkQnV0
dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBh
cnQsIGJvb2wpCiB7CiAgICAgLy8gV2luZG93cyBqdXN0IGhhcyBzaW5nbGUgYXJyb3dzLgogICAg
IGlmIChwYXJ0ID09IEZvcndhcmRCdXR0b25TdGFydFBhcnQpCkBAIC0xNzUsNyArMTc1LDcgQEAg
SW50UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngo
KSwgc2Nyb2xsYmFyLT55KCkgKyBzY3JvbGxiYXItPmhlaWdodCgpIC0gaCwgdGhpY2tuZXNzLCBo
KTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6dHJhY2tSZWN0KFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6dHJhY2tSZWN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgaW50IHRoaWNrbmVz
cyA9IHNjcm9sbGJhclRoaWNrbmVzcygpOwogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewpAQCAtMTg4LDEyICsxODgsMTIgQEAgSW50UmVj
dCBTY3JvbGxiYXJUaGVtZVdpbjo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29s
KQogICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIHRo
aWNrbmVzcywgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0gMiAqIHRoaWNrbmVzcyk7
CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xs
YmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1l
V2luOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgcmV0dXJuIGV2dC5zaGlmdEtleSgpICYmIGV2
dC5idXR0b24oKSA9PSBMZWZ0QnV0dG9uOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lV2luOjpz
aG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lV2luOjpzaG91bGRTbmFw
QmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICAvLyBGaW5kIHRoZSByZWN0IHdpdGhpbiB3
aGljaCB3ZSBzaG91bGRuJ3Qgc25hcCwgYnkgZXhwYW5kaW5nIHRoZSB0cmFjayByZWN0CiAgICAg
Ly8gaW4gYm90aCBkaW1lbnNpb25zLgpAQCAtMjExLDE0ICsyMTEsMTQgQEAgYm9vbCBTY3JvbGxi
YXJUaGVtZVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIGNvbnN0IFAKICAgICByZXR1cm4gIXJlY3QuY29udGFpbnMobW91c2VQb3NpdGlvbik7CiB9
CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCit2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gSnVzdCBhc3N1bWUgYSBmb3J3YXJkIHRyYWNrIHBh
cnQuICBXZSBvbmx5IHBhaW50IHRoZSB0cmFjayBhcyBhIHNpbmdsZSBwaWVjZSB3aGVuIHRoZXJl
IGlzIG5vIHRodW1iLgogICAgIGlmICghaGFzVGh1bWIoc2Nyb2xsYmFyKSkKICAgICAgICAgcGFp
bnRUcmFja1BpZWNlKGNvbnRleHQsIHNjcm9sbGJhciwgcmVjdCwgRm9yd2FyZFRyYWNrUGFydCk7
CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0
LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQordm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRU
cmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkK
IHsKICAgICBjaGVja0FuZEluaXRTY3JvbGxiYXJUaGVtZSgpOwogCkBAIC0yNzYsNyArMjc2LDcg
QEAgdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3IKICNlbmRpZgogfQogCi12b2lkIFNjcm9sbGJhclRo
ZW1lV2luOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lk
IFNjcm9sbGJhclRoZW1lV2luOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNj
cm9sbGJhclBhcnQgcGFydCkKIHsKICAgICBjaGVja0FuZEluaXRTY3JvbGxiYXJUaGVtZSgpOwog
CkBAIC0zMzksNyArMzM5LDcgQEAgc3RhdGljIEludFJlY3QgZ3JpcHBlclJlY3QoaW50IHRoaWNr
bmVzcywgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQogICAgICAgICAgICAgICAgICAgIGdyaXBw
ZXJUaGlja25lc3MsIGdyaXBwZXJUaGlja25lc3MpOwogfQogCi1zdGF0aWMgdm9pZCBwYWludEdy
aXBwZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIHJlY3Qp
CitzdGF0aWMgdm9pZCBwYWludEdyaXBwZXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgSERDIGhkYywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIXNjcm9sbGJhclRo
ZW1lKQogICAgICAgICByZXR1cm47ICAvLyBDbGFzc2ljIGxvb2sgaGFzIG5vIGdyaXBwZXIuCkBA
IC0zNTgsNyArMzU4LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRHcmlwcGVyKFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBIREMgaGRjLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIERyYXdUaGVtZUJhY2tn
cm91bmQoc2Nyb2xsYmFyVGhlbWUsIGhkYywgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXIgPyBTUF9HUklQUEVSSE9SIDogU1BfR1JJUFBFUlZFUlQsIHN0YXRl
LCAmdGhlbWVSZWN0LCAwKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUaHVt
YihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUaHVtYihHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHJlY3QpCiB7CiAgICAgY2hlY2tBbmRJbml0U2Nyb2xsYmFyVGhlbWUoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2lu
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uaAppbmRl
eCBjZDJmMTc2ZGZkYzk3MzgyYzM1YmI3NzNmOWIxZThkYWQyMTI3NmI2Li44NzAyNDBjMTY1NThj
ZjBmNjI1NzQxOTZlZWI2OWFhYTgwNmE3YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uaApAQCAtNDIsMjAgKzQyLDIwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgaW52YWxpZGF0ZU9uTW91c2VFbnRlckV4aXQoKTsKIAogcHJvdGVj
dGVkOgotICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopIHsgcmV0dXJuIHRy
dWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7CisgICAgdmlydHVh
bCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiB0cnVlOyB9
CisgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAg
ICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFy
dCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1
dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNl
KTsKLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRp
bmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAg
ICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50
UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFs
c2UpOwogCi0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBC
YWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNob3VsZFNu
YXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwg
dm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3Qg
SW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihH
cmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFy
dCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCos
IGNvbnN0IEludFJlY3QmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d3gvU2Nyb2xsYmFyVGhlbWVXeC5jcHAKaW5kZXggYzkyNDk3OGE1MDVhYzMxZjE0MDUxZTMwMTgz
MzA2NDI1MTNjNGE1MS4uYmFkZjMxNTU0MDVhNmE1MTM2NjIzMjViOTIzNTlkYzgxM2E5NTI0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5jcHAK
QEAgLTcxLDE5ICs3MSwxOSBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVXeDo6c2Nyb2xsYmFyVGhpY2tu
ZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIHNpemUpCiAgICAgcmV0dXJuIHRoaWNrbmVzczsKIH0K
IAotYm9vbCBTY3JvbGxiYXJUaGVtZVd4OjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikK
K2Jvb2wgU2Nyb2xsYmFyVGhlbWVXeDo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBqdXN0IGNhbGxlZCBhcyBhIHBhaW50
LXRpbWUgb3B0aW1pemF0aW9uIHRvIHNlZSBpZgogICAgIC8vIHBhaW50aW5nIHRoZSB0aHVtYiBj
YW4gYmUgc2tpcHBlZC4gIFdlIGRvbid0IGhhdmUgdG8gYmUgZXhhY3QgaGVyZS4KICAgICByZXR1
cm4gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+IDA7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZVd4
OjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFy
VGhlbWVXeDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIpCiB7CiAgICAgcmV0dXJuIDIwOwogfQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lV3g6OmJ1
dHRvblNpemUoU2Nyb2xsYmFyKikgCitJbnRTaXplIFNjcm9sbGJhclRoZW1lV3g6OmJ1dHRvblNp
emUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSAKIHsKICNpZmRlZiBfX1dYTUFDX18KICAgICByZXR1
cm4gSW50U2l6ZSgyMCwyMCk7CkBAIC05Miw3ICs5Miw3IEBAIEludFNpemUgU2Nyb2xsYmFyVGhl
bWVXeDo6YnV0dG9uU2l6ZShTY3JvbGxiYXIqKQogI2VuZGlmCiB9CiAKLXZvaWQgU2Nyb2xsYmFy
VGhlbWVXeDo6c3BsaXRUcmFjayhTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
dW5jb25zdHJhaW5lZFRyYWNrUmVjdCwgSW50UmVjdCYgYmVmb3JlVGh1bWJSZWN0LCBJbnRSZWN0
JiB0aHVtYlJlY3QsIEludFJlY3QmIGFmdGVyVGh1bWJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVt
ZVd4OjpzcGxpdFRyYWNrKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QsIEludFJlY3QmIGJlZm9yZVRodW1iUmVjdCwg
SW50UmVjdCYgdGh1bWJSZWN0LCBJbnRSZWN0JiBhZnRlclRodW1iUmVjdCkKIHsKICAgICBTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhzY3JvbGxiYXIsIHVuY29uc3RyYWluZWRU
cmFja1JlY3QsIGJlZm9yZVRodW1iUmVjdCwgdGh1bWJSZWN0LCBhZnRlclRodW1iUmVjdCk7CiAj
aWZkZWYgX19XWE1BQ19fCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZVd4
OjpzcGxpdFRyYWNrKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0
cmEKICNlbmRpZgogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OmJhY2tCdXR0b25SZWN0
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0
IFNjcm9sbGJhclRoZW1lV3g6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICAvLyBGSVhNRTogSGFu
ZGxpbmcgdGhpcyBjYXNlIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGFyZSB0d28gc2V0cyBvZiBhcnJv
dyBidXR0b25zCiAgICAgLy8gb24gTWFjLCBvbmUgYXQgdGhlIHRvcCBhbmQgb25lIGF0IHRoZSBi
b3R0b20uCkBAIC0xMzAsNyArMTMwLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4OjpiYWNr
QnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXIKICAgICBy
ZXR1cm4gSW50UmVjdCh4LCB5LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogfQogCi1J
bnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1l
V3g6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNj
cm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICAvLyBGSVhNRTogSGFuZGxpbmcgdGhpcyBj
YXNlIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGFyZSB0d28gc2V0cyBvZiBhcnJvdyBidXR0b25zCiAg
ICAgLy8gb24gTWFjLCBvbmUgYXQgdGhlIHRvcCBhbmQgb25lIGF0IHRoZSBib3R0b20uCkBAIC0x
NTUsNyArMTU1LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0dG9uUmVj
dChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydAogICAgIHJldHVybiBJbnRSZWN0
KHgsIHksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Nyb2xs
YmFyVGhlbWVXeDo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQorSW50UmVj
dCBTY3JvbGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgYm9vbCkKIHsKICAgICBJbnRTaXplIGJzID0gYnV0dG9uU2l6ZShzY3JvbGxiYXIpOwog
ICAgIGludCB0cmFja1N0YXJ0ID0gMDsKQEAgLTE3OSwxMSArMTc5LDExIEBAIEludFJlY3QgU2Ny
b2xsYmFyVGhlbWVXeDo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQogICAg
IHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIHRyYWNrU3Rh
cnQsIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIDIgKiBicy5oZWlnaHQoKSk7CiB9
CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVXeDo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgU2Nyb2xs
YmFyVGhlbWVXeDo6cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIHd4T3JpZW50
YXRpb24gb3JpZW50YXRpb24gPSAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250
YWxTY3JvbGxiYXIpID8gd3hIT1JJWk9OVEFMIDogd3hWRVJUSUNBTDsKICAgICBpbnQgZmxhZ3Mg
PSAwOwotICAgIGlmIChzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlzQWN0aXZlKCkpCisg
ICAgaWYgKHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQogICAgICAgICBmbGFn
cyB8PSB3eENPTlRST0xfRk9DVVNFRDsKICAgICAKICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxl
ZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhl
bWVXeC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5oCmlu
ZGV4IDc1YWIxNzVhM2JhNjA0ZmNkNzk1YWQyZWE0NWVkZmNmNTgzZWU1NTguLjM3MmFhZjk2NjJm
NzQ1ZDRlZTA3NDdlZGY1YzExZjlmYzVhZDg5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmgKQEAgLTM1LDIxICszNSwyMSBAQCBjbGFzcyBTY3Jv
bGxiYXJUaGVtZVd4IDogcHVibGljIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlIHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZVd4KCk7CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xs
YmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcik7Ci0g
ICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhciosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0
IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0g
ICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKikgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2
aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1
YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgSW50U2l6ZSBi
dXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIEludFJlY3Qg
YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9
IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFy
KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIElu
dFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAg
dmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Ny
b2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3Qg
Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBi
b29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogCi0gICAgdmlydHVh
bCB2b2lkIHNwbGl0VHJhY2soU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYgdHJhY2ssIEludFJl
Y3QmIHN0YXJ0VHJhY2ssIEludFJlY3QmIHRodW1iLCBJbnRSZWN0JiBlbmRUcmFjayk7CisgICAg
dmlydHVhbCB2b2lkIHNwbGl0VHJhY2soU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0JiB0cmFjaywgSW50UmVjdCYgc3RhcnRUcmFjaywgSW50UmVjdCYgdGh1bWIsIEludFJlY3Qm
IGVuZFRyYWNrKTsKICAgICAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Ny
b2xsYmFyKik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRo
ZW1lQ2xpZW50Kik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyLmgKaW5kZXggODEwYzk4ZmYzNjY4YWI5MWNkZTljMzU3MThkNmYwNGIyZjc0NjcxYi4u
N2ZlMmZhYzhiOGQ0OTc1NGQ4ZWFiMjNkNDA1YjE2MmJlMzNkYzdiYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRl
OgogICAgIEhhc2hNYXA8dW5zaWduZWQsIFJlbmRlclNjcm9sbGJhclBhcnQqPiBtX3BhcnRzOwog
fTsKIAotaW5saW5lIFJlbmRlclNjcm9sbGJhciogdG9SZW5kZXJTY3JvbGxiYXIoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIpCitpbmxpbmUgUmVuZGVyU2Nyb2xsYmFyKiB0b1JlbmRlclNjcm9sbGJhcihT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIEFTU0VSVCghc2Nyb2xsYmFy
IHx8IHNjcm9sbGJhci0+aXNDdXN0b21TY3JvbGxiYXIoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFJlbmRlclNjcm9sbGJhcio+KHNjcm9sbGJhcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAppbmRleCA4NzMwOWQ0NGU1YWE0NTI2
OTc5YWZlYmU1MTI3OGI0ZTQ2YTVlOTE3Li40NGUyYWE2MzFkYzI4MTUwMTc0YmMyMjUyMzBlOGI2
YWFiN2QwZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Ny
b2xsYmFyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3Jv
bGxiYXJUaGVtZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJSZW5kZXJTY3JvbGxiYXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJh
ci5oIgorI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiw3ICszNyw3IEBAIFJl
bmRlclNjcm9sbGJhclRoZW1lKiBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cmVuZGVyU2Nyb2xsYmFy
VGhlbWUoKQogICAgIHJldHVybiAmdGhlbWU7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGludCYg
YmVmb3JlU2l6ZSwgaW50JiBhZnRlclNpemUpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpi
dXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIs
IGludCYgYmVmb3JlU2l6ZSwgaW50JiBhZnRlclNpemUpCiB7CiAgICAgSW50UmVjdCBmaXJzdEJ1
dHRvbiA9IGJhY2tCdXR0b25SZWN0KHNjcm9sbGJhciwgQmFja0J1dHRvblN0YXJ0UGFydCk7CiAg
ICAgSW50UmVjdCBzZWNvbmRCdXR0b24gPSBmb3J3YXJkQnV0dG9uUmVjdChzY3JvbGxiYXIsIEZv
cndhcmRCdXR0b25TdGFydFBhcnQpOwpAQCAtNTEsNyArNTIsNyBAQCB2b2lkIFJlbmRlclNjcm9s
bGJhclRoZW1lOjpidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9sbGJhciogc2Nyb2xsYmFy
LCBpbnQmCiAgICAgfQogfQogCi1ib29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNCdXR0b25z
KFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzQnV0
dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGludCBzdGFydFNp
emU7CiAgICAgaW50IGVuZFNpemU7CkBAIC01OSwyNyArNjAsMjcgQEAgYm9vbCBSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6aGFzQnV0dG9ucyhTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICByZXR1cm4g
KHN0YXJ0U2l6ZSArIGVuZFNpemUpIDw9IChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9y
aXpvbnRhbFNjcm9sbGJhciA/IHNjcm9sbGJhci0+d2lkdGgoKSA6IHNjcm9sbGJhci0+aGVpZ2h0
KCkpOwogfQogCi1ib29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNUaHVtYihTY3JvbGxiYXIq
IHNjcm9sbGJhcikKK2Jvb2wgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Omhhc1RodW1iKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHRyYWNrTGVuZ3RoKHNjcm9s
bGJhcikgLSB0aHVtYkxlbmd0aChzY3JvbGxiYXIpID49IDA7CiB9CiAKLWludCBSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50
IFJlbmRlclNjcm9sbGJhclRoZW1lOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xs
YmFyKS0+bWluaW11bVRodW1iTGVuZ3RoKCk7CiB9CiAKLUludFJlY3QgUmVuZGVyU2Nyb2xsYmFy
VGhlbWU6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0
IHBhcnRUeXBlLCBib29sKQorSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YmFja0J1dHRv
blJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0
VHlwZSwgYm9vbCkKIHsKICAgICByZXR1cm4gdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+
YnV0dG9uUmVjdChwYXJ0VHlwZSk7CiB9CiAKLUludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBh
cnRUeXBlLCBib29sKQorSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Zm9yd2FyZEJ1dHRv
blJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0
VHlwZSwgYm9vbCkKIHsKICAgICByZXR1cm4gdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+
YnV0dG9uUmVjdChwYXJ0VHlwZSk7CiB9CiAKLUludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgYm9vbCkKK0ludFJlY3QgUmVuZGVyU2Ny
b2xsYmFyVGhlbWU6OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBi
b29sKQogewogICAgIGlmICghaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICByZXR1cm4g
c2Nyb2xsYmFyLT5mcmFtZVJlY3QoKTsKQEAgLTkxLDcgKzkyLDcgQEAgSW50UmVjdCBSZW5kZXJT
Y3JvbGxiYXJUaGVtZTo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQogICAg
IHJldHVybiB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT50cmFja1JlY3Qoc3RhcnRMZW5n
dGgsIGVuZExlbmd0aCk7CiB9CiAKLUludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmNvbnN0
cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCitJbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjpjb25zdHJhaW5UcmFj
a1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHJlY3QpCiB7IAogICAgIEludFJlY3QgYmFja1JlY3QgPSB0b1JlbmRlclNjcm9s
bGJhcihzY3JvbGxiYXIpLT50cmFja1BpZWNlUmVjdFdpdGhNYXJnaW5zKEJhY2tUcmFja1BhcnQs
IHJlY3QpOwogICAgIEludFJlY3QgZm9yd2FyZFJlY3QgPSB0b1JlbmRlclNjcm9sbGJhcihzY3Jv
bGxiYXIpLT50cmFja1BpZWNlUmVjdFdpdGhNYXJnaW5zKEZvcndhcmRUcmFja1BhcnQsIHJlY3Qp
OwpAQCAtMTEyLDI3ICsxMTMsMjcgQEAgdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRT
Y3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGUKICAgICBjb250
ZXh0LT5maWxsUmVjdChjb3JuZXJSZWN0LCBDb2xvcjo6d2hpdGUsIENvbG9yU3BhY2VEZXZpY2VS
R0IpOwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbGJhckJhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3Zv
aWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAg
ICAgdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+cGFpbnRQYXJ0KGNvbnRleHQsIFNjcm9s
bGJhckJHUGFydCwgc2Nyb2xsYmFyLT5mcmFtZVJlY3QoKSk7CiB9CiAKLXZvaWQgUmVuZGVyU2Ny
b2xsYmFyVGhlbWU6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFJlbmRl
clNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCiB7CiAgICAgdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+cGFpbnRQYXJ0KGNvbnRl
eHQsIFRyYWNrQkdQYXJ0LCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgUmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qs
IFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAgICB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIp
LT5wYWludFBhcnQoY29udGV4dCwgcGFydCwgcmVjdCk7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xs
YmFyVGhlbWU6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3Zv
aWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJh
ciktPnBhaW50UGFydChjb250ZXh0LCBwYXJ0LCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJU
aGVtZTo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgdG9SZW5kZXJT
Y3JvbGxiYXIoc2Nyb2xsYmFyKS0+cGFpbnRQYXJ0KGNvbnRleHQsIFRodW1iUGFydCwgcmVjdCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
VGhlbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5o
CmluZGV4IDcwYzI0YTVlYTJlZDc5YmI5ZjhmYWQwMjEzN2M2MzU2OWQ5OTYzYzQuLmU3YzgxNjk3
ZDczYTk0OTE0NTFiMjY3ZjQxYWJkZGU3YWUzZGZkNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oCkBAIC00NiwzNSArNDYsMzUgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOwogCi0g
ICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1l
Ojp0aGVtZSgpLT5zaG91bGRDZW50ZXJPblRodW1iKHNjcm9sbGJhciwgZXZlbnQpOyB9CisgICAg
dmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgeyByZXR1cm4gU2Nyb2xs
YmFyVGhlbWU6OnRoZW1lKCktPnNob3VsZENlbnRlck9uVGh1bWIoc2Nyb2xsYmFyLCBldmVudCk7
IH0KICAgICAKICAgICB2aXJ0dWFsIGRvdWJsZSBpbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXko
KSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+aW5pdGlhbEF1dG9zY3JvbGxUaW1l
ckRlbGF5KCk7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsg
cmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5hdXRvc2Nyb2xsVGltZXJEZWxheSgpOyB9
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5yZWdpc3RlclNjcm9sbGJhcihz
Y3JvbGxiYXIpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT51bnJlZ2lz
dGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3Jv
bGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFy
VGhlbWU6OnRoZW1lKCktPnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+dW5yZWdpc3RlclNjcm9sbGJh
cihzY3JvbGxiYXIpOyB9CiAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Ny
b2xsYmFyKik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRo
ZW1lQ2xpZW50Kik7CiAKLSAgICB2b2lkIGJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIGludCYgYmVmb3JlU2l6ZSwgaW50JiBhZnRlclNpemUpOworICAgIHZv
aWQgYnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhTY3JvbGxiYXJUaGVtZUNsaWVudCosIGludCYg
YmVmb3JlU2l6ZSwgaW50JiBhZnRlclNpemUpOwogICAgIAogICAgIHN0YXRpYyBSZW5kZXJTY3Jv
bGxiYXJUaGVtZSogcmVuZGVyU2Nyb2xsYmFyVGhlbWUoKTsKIAogcHJvdGVjdGVkOgotICAgIHZp
cnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgYm9vbCBoYXNU
aHVtYihTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJU
aGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNs
aWVudCopOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhcios
IFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRS
ZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFp
bnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIq
LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9u
UmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAg
ICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBw
YWludGluZyA9IGZhbHNlKTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJC
YWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciopOyAgICAKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwg
Y29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwot
ICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIq
LCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50
VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOworICAg
IHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsgICAgCisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tC
YWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3Qg
SW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFy
dCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgIHZp
cnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRy
YWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZp
cnR1YWwgSW50UmVjdCBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129332</attachid>
            <date>2012-02-28 14:32:50 -0800</date>
            <delta_ts>2012-03-01 14:32:18 -0800</delta_ts>
            <desc>Changes as per jamesr</desc>
            <filename>bug-78028-20120228173248.patch</filename>
            <type>text/plain</type>
            <size>130978</size>
            <attacher name="Peter Kotwicz">pkotwicz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MTQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc2MTE5YTBmMWIxZTYx
NTE1ZjZmNTI0MDlhMGUxNTdmMzdmOWM3Mi4uMmIzOWRkYjUwYzJjMjMwNzFiNGQ3NjFkMDhlZWQz
ODM3ZDNkZDIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2OSBAQAorMjAxMi0wMi0yOCAgUGV0
ZXIgS290d2ljeiAgPHBrb3R3aWN6QGdvb2dsZS5jb20+CisKKyAgICAgICAgRGVjb3VwbGUgc2Ny
b2xsYmFyIHBhaW50aW5nIGZyb20gU2Nyb2xsYmFyIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwMjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhcjo6c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpnZXRUaWNrbWFya3MpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjppc1Njcm9sbGFibGVBcmVhQWN0aXZlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhcjo6aXNTY3JvbGxWaWV3U2Nyb2xsYmFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhcjo6c2V0RnJhbWVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3Jv
bGxiYXIuaDoKKyAgICAgICAgKFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXI6OngpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp5KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhcjo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpoZWln
aHQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhcjo6bG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpw
YXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpyb290KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhcjo6ZnJhbWVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
cjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmNvbnZlcnRGcm9t
Q29udGFpbmluZ1dpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmlzQ3VzdG9t
U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6b3JpZW50YXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXI6OmN1cnJlbnRQb3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp2aXNp
YmxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnRvdGFsU2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6Om1heGltdW0pOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyOjpjb250cm9sU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmxpbmVT
dGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFnZVN0ZXApOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyOjpwcmVzc2VkUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXI6OmhvdmVyZWRQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6c3R5bGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZW5hYmxlZCk6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnVwZGF0ZUVuYWJsZWRTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWU6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6
OnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZTo6aW52YWxpZGF0ZVBhcnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lOjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6
c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6
c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWU6OnNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lOjp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lOjp0aHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZTo6dHJhY2tQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6
dHJhY2tMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnJlZ2lzdGVy
U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVy
U2Nyb2xsYmFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDbGllbnQp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDbGllbnQ6On5TY3JvbGxiYXJUaGVt
ZUNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpoaXRUZXN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRlUGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjp1c2VkVG90YWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja1Bvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aCk6CisgICAgICAg
ICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaDoKKyAgICAgICAgKFNjcm9sbGJh
clRoZW1lQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGU6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRyYWNrUGllY2UpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50QnV0dG9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRodW1iKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRpY2ttYXJrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6Y29uc3RyYWluVHJhY2tSZWN0
VG9UcmFja1BpZWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVt
OjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpi
YWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVt
Ojpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNo
cm9taXVtOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bTo6cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bTo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ2hyb21pdW06Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUFuZHJvaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFu
ZHJvaWQ6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YnV0dG9uU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6bWluaW11bVRo
dW1iTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtQW5kcm9pZC5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQp
OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBh
aW50VHJhY2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVt
TGludXg6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hy
b21pdW1MaW51eDo6cGFpbnRUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTGludXg6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaDoK
KyAgICAgICAgKFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eCk6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAgICAgICAoU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbGJhclN0YXRl
VG9UaGVtZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1N
YWM6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6
OnBhaW50R2l2ZW5UaWNrbWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50QnV0dG9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVTdGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVt
ZUFycm93U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bjo6Z2V0Q2xhc3NpY1RoZW1lU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bVdpbjo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpidXR0b25TaXplKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmg6CisgICAgICAgIChTY3JvbGxi
YXJUaGVtZUNocm9taXVtV2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhl
bWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVFZmw6OnJlZ2lzdGVy
U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lRWZsOjp1bnJlZ2lz
dGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwu
aDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lRWZsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
U2Nyb2xsYmFyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnVucmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVNjcm9sbGJhcnNGcmFtZVRoaWNrbmVz
cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6aGFzVGh1bWIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjp0aHVtYlJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lR3RrOjpzaG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lR3RrOjpidXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
R3RrOjptaW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxi
YXJUaGVtZUd0ay5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6Omhhc0J1
dHRvbnMpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVHdGspOgorICAgICAgICAqIHBsYXRmb3Jt
L2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0V2lkZ2V0
Rm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWlu
dFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6
cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lR3RrOjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3Rr
OjpwYWludEJ1dHRvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3Rr
My5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0Jh
Y2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Ny
b2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6
cGFpbnRUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRC
dXR0b24pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5oOgorICAg
ICAgICAoU2Nyb2xsYmFyVGhlbWVNYWMpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxi
YXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lTWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5
bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1dHRvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc1RodW1iKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVt
Yik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlRW5hYmxlZFN0
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludCk6CisgICAg
ICAgICogcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBsYXRmb3Jt
L21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZU1vY2s6Omhhc0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVN
b2NrOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OmJh
Y2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTW9jazo6Zm9y
d2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVNb2NrKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN0
eWxlT3B0aW9uU2xpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnBh
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OmhpdFRlc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVRdDo6c2hvdWxkQ2VudGVyT25UaHVtYik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVF0OjppbnZhbGlkYXRlUGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lUXQ6OnRyYWNrUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVRdDo6dHJhY2tMZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Nj
cm9sbGJhclRoZW1lUXQuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lUXQpOgorICAgICAgICAq
IHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVTYWZhcmk6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lU2FmYXJpOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZVNhZmFyaTo6dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lU2FmYXJpOjptaW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUaHVtYik6CisgICAgICAgICog
cGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmg6CisgICAgICAgIChTY3JvbGxiYXJU
aGVtZVNhZmFyaSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpoYXNUaHVtYik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVdpbjo6YmFja0J1dHRvblJlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OmZvcndhcmRCdXR0b25SZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjp0cmFja1JlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNrQmFja2dyb3Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludEJ1dHRvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpwYWludEdyaXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVXaW46OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxi
YXJUaGVtZVdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46Omhhc0J1
dHRvbnMpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVXaW4pOgorICAgICAgICAqIHBsYXRmb3Jt
L3d4L1Njcm9sbGJhclRoZW1lV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVXeDo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6bWlu
aW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV3g6OmJ1
dHRvblNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6c3BsaXRUcmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4OjpiYWNrQnV0dG9uUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0dG9uUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6cGFpbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L3d4L1Njcm9sbGJhclRoZW1lV3guaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lV3gpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzQnV0dG9ucyk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oOgorICAgICAgICAoV2ViQ29yZTo6dG9SZW5kZXJT
Y3JvbGxiYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9u
Z1RyYWNrQXhpcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFz
QnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzVGh1
bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1pbmltdW1UaHVt
Ykxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YmFja0J1
dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmZvcndh
cmRCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp0
cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmNvbnN0
cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Ny
b2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U2Nyb2xsYmFyVGhlbWU6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAg
KFJlbmRlclNjcm9sbGJhclRoZW1lKToKKwogMjAxMi0wMi0yOCAgSnVuZ3NoaWsgU2hpbiAgPGpz
aGluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgYSBmYWxsYmFjayBwYXRoIHRvIExpbmVC
cmVha0l0ZXJhdG9yUG9vbElDVSB3aGVuIHRoZSBsb2NhbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBl
MjU4ZjllNzhmMzQ0YmE5MGU3MTFlNjljYWIyM2UyZmFhYTRiYzJiLi41MGFiODU0NWYzY2VlODMy
M2MxMGQ5ZmUxNTY3ZTJiNWE3NjQwNDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yOTEsNiArMjkx
LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9TY3JvbGxiYXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWUuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TaGFy
ZWRCdWZmZXJDaHVua1JlYWRlci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3YzdjZTUxYThlNzZkM2M2NGU0YjI2NzExMWVm
NTdlZGU3ZWEyNDA1Li4yY2JmNWE2N2FmNTdmZTUyYWExNDhmZTQ0Y2FkZjU4NjdlYmRhYjczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC01NjA3LDYgKzU2MDcsNyBAQAogCQlDNUQ0QUE3QTExNkJBRkI2MDA2OUNBOTMgLyogR2x5
cGhNZXRyaWNzTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDNUQ0QUE3ODExNkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFwLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzVFOUI2NzcxMDY5
N0UxMzAwQzdCQjFBIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVFOUI2NzYxMDY5N0UxMzAwQzdCQjFB
IC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwICovOyB9OwogCQlDNUVCREQ4NDEwNUVEREVD
MDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8qIFN0
b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLzsgfTsKKwkJQzZCMzFCMkUxNEY4NDFGQjAwODlGMjNG
IC8qIFNjcm9sbGJhclRoZW1lQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDNjkxNjE0NzE0RjZFQkE3MDA0NjM3NUMgLyogU2Nyb2xsYmFyVGhl
bWVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDNkQ3NEFENTA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3NEFE
MzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggKi87IH07CiAJ
CUM2RDc0QUU0MDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZENzRBRTMw
OUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgKi87IH07CiAJ
CUM2RjA4RkJDMTQzMEZFOEYwMDY4NTg0OSAvKiBNdXRhdGlvblJlY29yZC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkYwOEZCOTE0MzBGRThGMDA2
ODU4NDkgLyogTXV0YXRpb25SZWNvcmQuY3BwICovOyB9OwpAQCAtMTI2MDIsNiArMTI2MDMsNyBA
QAogCQlDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlRXZlbnREaXNwYXRjaGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1Rjc2NUI0MTRFMUQ0MTQwMDZDODk5
QiAvKiBQYXN0ZWJvYXJkU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUGFzdGVib2FyZFN0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1
Rjc2NUJBMTRFMUVDRjQwMDZDODk5QiAvKiBQbGF0Zm9ybVBhc3RlYm9hcmRNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybVBhc3RlYm9hcmRNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2OTE2MTQ3MTRGNkVCQTcwMDQ2Mzc1
QyAvKiBTY3JvbGxiYXJUaGVtZUNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JvbGxiYXJUaGVtZUNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZl
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFFMzA5QUEyOTBBMDAwQjBB
NTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUM2RjA4RkI5MTQzMEZFOEYwMDY4NTg0OSAvKiBNdXRhdGlvblJl
Y29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNdXRhdGlvblJl
Y29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTk0NCw2ICsxOTk0Niw3
IEBACiAJCQkJQkNBQTkwQzIwQTdFQkE2MDAwOEIxMjI5IC8qIFNjcm9sbGJhci5jcHAgKi8sCiAJ
CQkJQkM3QjJBRjgwNDUwODI0MTAwQTgwMDBGIC8qIFNjcm9sbGJhci5oICovLAogCQkJCTBGRTcx
NDE1MTQyMTg5RkMwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZS5jcHAgKi8sCisJCQkJQzY5MTYx
NDcxNEY2RUJBNzAwNDYzNzVDIC8qIFNjcm9sbGJhclRoZW1lQ2xpZW50LmggKi8sCiAJCQkJQkM4
Qjg1NEEwRTdDN0Y1NjAwQUI2OTg0IC8qIFNjcm9sbGJhclRoZW1lLmggKi8sCiAJCQkJQkMxNDAy
ODgwRTgzNjgwODAwMzE5NzE3IC8qIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcCAqLywKIAkJ
CQlCQzE0MDI4OTBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaCAq
LywKQEAgLTIzNzI1LDYgKzIzNzI4LDcgQEAKIAkJCQlDQTNCRjY3RTEwRDk5QkFFMDBFNkNFNTMg
LyogU2Nyb2xsQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQUUxRkE3MTI5MzlEQjcw
MDRDQjAyNiAvKiBTY3JvbGxBbmltYXRvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5
QjgwODI0NUU1OTAwMUU5QUJDIC8qIFNjcm9sbGJhci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzZC
MzFCMkUxNEY4NDFGQjAwODlGMjNGIC8qIFNjcm9sbGJhclRoZW1lQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzhCODU0QjBFN0M3RjU2MDBBQjY5ODQgLyogU2Nyb2xsYmFyVGhlbWUuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDMTQwMjhCMEU4MzY4MDgwMDMxOTcxNyAvKiBTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4Qjg1M0UwRTdDN0YxMTAwQUI2
OTg0IC8qIFNjcm9sbGJhclRoZW1lTWFjLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXIuY3BwCmluZGV4IDNiOWMxOTVjZmY1NTM5MTY1NTYyMDNlMmYyY2M0ZmU1
ZDhmOWE1MWUuLmRmZDQ2NDk3YTE5ZDZjMjlhODhmN2RmM2IxYzdkOGNkZGNiYTAzYjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcApAQCAtMTEyLDYgKzExMiwyNyBAQCBTY3Jv
bGxiYXI6On5TY3JvbGxiYXIoKQogICAgIG1fdGhlbWUtPnVucmVnaXN0ZXJTY3JvbGxiYXIodGhp
cyk7CiB9CiAKK1Njcm9sbGJhck92ZXJsYXlTdHlsZSBTY3JvbGxiYXI6OnNjcm9sbGJhck92ZXJs
YXlTdHlsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEgPyBTY3JvbGxi
YXJPdmVybGF5U3R5bGVEZWZhdWx0IDogbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKCk7Cit9CisKK3ZvaWQgU2Nyb2xsYmFyOjpnZXRUaWNrbWFya3MoVmVjdG9yPEludFJl
Y3Q+JiB0aWNrbWFya3MpIGNvbnN0Cit7CisgICAgaWYgKG1fc2Nyb2xsYWJsZUFyZWEpCisgICAg
ICAgIG1fc2Nyb2xsYWJsZUFyZWEtPmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOworfQorCitib29s
IFNjcm9sbGJhcjo6aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fc2Nyb2xsYWJsZUFyZWEgJiYgbV9zY3JvbGxhYmxlQXJlYS0+aXNBY3RpdmUoKTsKK30KKwor
Ym9vbCBTY3JvbGxiYXI6OmlzU2Nyb2xsVmlld1Njcm9sbGJhcigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHBhcmVudCgpICYmIHBhcmVudCgpLT5pc0ZyYW1lVmlldygpICYmIHN0YXRpY19jYXN0PEZy
YW1lVmlldyo+KHBhcmVudCgpKS0+aXNTY3JvbGxWaWV3U2Nyb2xsYmFyKHRoaXMpOworfQorCiB2
b2lkIFNjcm9sbGJhcjo6b2Zmc2V0RGlkQ2hhbmdlKCkKIHsKICAgICBBU1NFUlQobV9zY3JvbGxh
YmxlQXJlYSk7CkBAIC00MzQsNyArNDU1LDcgQEAgYm9vbCBTY3JvbGxiYXI6Om1vdXNlRG93bihj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIAogdm9pZCBTY3JvbGxiYXI6OnNldEZyYW1l
UmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIC8vIEdldCBvdXIgd2luZG93IHJlc2l6
ZXIgcmVjdCBhbmQgc2VlIGlmIHdlIG92ZXJsYXAuICBBZGp1c3QgdG8gYXZvaWQgdGhlIG92ZXJs
YXAKKyAgICAvLyBHZXQgb3VyIHdpbmRvdyByZXNpemVyIHJlY3QgYW5kIHNlZSBpZiB3ZSBvdmVy
bGFwLiBBZGp1c3QgdG8gYXZvaWQgdGhlIG92ZXJsYXAKICAgICAvLyBpZiBuZWNlc3NhcnkuCiAg
ICAgSW50UmVjdCBhZGp1c3RlZFJlY3QocmVjdCk7CiAgICAgYm9vbCBvdmVybGFwc1Jlc2l6ZXIg
PSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKaW5kZXggMzlhYzI1NDY1ZDE0
NTVhNTk5MmNkMjVjMjIyOGRkMmI2NTM0YTYzZC4uMTcxNDEzYTg1NWM5ZDJiNzBlNTM1YjJlMTlj
NTBiZjk1OWM0NmM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNpZm5kZWYgU2Nyb2xsYmFyX2gKICNkZWZpbmUgU2Nyb2xsYmFyX2gKIAorI2lu
Y2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2xpZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIldpZGdldC5oIgpAQCAtNDAsMTMgKzQxLDYw
IEBAIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNzIFNjcm9sbGFibGVBcmVhOwogY2xh
c3MgU2Nyb2xsYmFyVGhlbWU7CiAKLWNsYXNzIFNjcm9sbGJhciA6IHB1YmxpYyBXaWRnZXQgewor
Y2xhc3MgU2Nyb2xsYmFyIDogcHVibGljIFdpZGdldCwKKyAgICAgICAgICAgICAgICAgIHB1Ymxp
YyBTY3JvbGxiYXJUaGVtZUNsaWVudCB7CisKIHB1YmxpYzoKICAgICAvLyBNdXN0IGJlIGltcGxl
bWVudGVkIGJ5IHBsYXRmb3JtcyB0aGF0IGNhbid0IHNpbXBseSB1c2UgdGhlIFNjcm9sbGJhciBi
YXNlIGNsYXNzLiAgUmlnaHQgbm93IHRoZSBvbmx5IHBsYXRmb3JtIHRoYXQgaXMgbm90IHVzaW5n
IHRoZSBiYXNlIGNsYXNzIGlzIEdUSy4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTY3JvbGxiYXI+
IGNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihTY3JvbGxhYmxlQXJlYSosIFNjcm9sbGJhck9yaWVudGF0
aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6ZSBzaXplKTsKIAogICAgIHZpcnR1
YWwgflNjcm9sbGJhcigpOwogCisgICAgLy8gU2Nyb2xsYmFyVGhlbWVDbGllbnQgaW1wbGVtZW50
YXRpb24uCisgICAgdmlydHVhbCBpbnQgeCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6eCgpOyB9
CisgICAgdmlydHVhbCBpbnQgeSgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6eSgpOyB9CisgICAg
dmlydHVhbCBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OndpZHRoKCk7IH0KKyAg
ICB2aXJ0dWFsIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OmhlaWdodCgpOyB9
CisgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OnNpemUo
KTsgfQorICAgIHZpcnR1YWwgSW50UG9pbnQgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBXaWRn
ZXQ6OmxvY2F0aW9uKCk7IH0KKworICAgIHZpcnR1YWwgU2Nyb2xsVmlldyogcGFyZW50KCkgY29u
c3QgeyByZXR1cm4gV2lkZ2V0OjpwYXJlbnQoKTsgfQorICAgIHZpcnR1YWwgU2Nyb2xsVmlldyog
cm9vdCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6cm9vdCgpOyB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgZnJh
bWVSZWN0KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0OjpmcmFtZVJlY3QoKTsgfQorCisgICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGUoKSB7IFdpZGdldDo6aW52YWxpZGF0ZSgpOyB9CisgICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKTsKKworICAgIHZpcnR1YWwg
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBnZXRUaWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JikgY29uc3Q7CisgICAg
dmlydHVhbCBib29sIGlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNTY3JvbGxWaWV3U2Nyb2xsYmFyKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIEludFBv
aW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhjb25zdCBJbnRQb2ludCYgd2luZG93UG9p
bnQpIHsgcmV0dXJuIFdpZGdldDo6Y29udmVydEZyb21Db250YWluaW5nV2luZG93KHdpbmRvd1Bv
aW50KTsgfQorCisgICAgdmlydHVhbCBib29sIGlzQ3VzdG9tU2Nyb2xsYmFyKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorCisgICAgdmlydHVhbCBpbnQg
dmFsdWUoKSBjb25zdCB7IHJldHVybiBscm91bmRmKG1fY3VycmVudFBvcyk7IH0KKyAgICB2aXJ0
dWFsIGZsb2F0IGN1cnJlbnRQb3MoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRQb3M7IH0KKyAg
ICB2aXJ0dWFsIGludCB2aXNpYmxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZVNpemU7
IH0KKyAgICB2aXJ0dWFsIGludCB0b3RhbFNpemUoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsU2l6
ZTsgfQorICAgIHZpcnR1YWwgaW50IG1heGltdW0oKSBjb25zdCB7IHJldHVybiBtX3RvdGFsU2l6
ZSAtIG1fdmlzaWJsZVNpemU7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJhckNvbnRyb2xTaXplIGNv
bnRyb2xTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb250cm9sU2l6ZTsgfQorCisgICAgdmlydHVh
bCBpbnQgbGluZVN0ZXAoKSBjb25zdCB7IHJldHVybiBtX2xpbmVTdGVwOyB9CisgICAgdmlydHVh
bCBpbnQgcGFnZVN0ZXAoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VTdGVwOyB9CisKKyAgICB2aXJ0
dWFsIFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXNzZWRQ
YXJ0OyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhvdmVyZWRQYXJ0KCkgY29uc3QgeyBy
ZXR1cm4gbV9ob3ZlcmVkUGFydDsgfQorCisgICAgdmlydHVhbCB2b2lkIHN0eWxlQ2hhbmdlZCgp
IHsgfQorCisgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJs
ZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sKTsKKwogICAgIC8vIENhbGxl
ZCBieSB0aGUgU2Nyb2xsYWJsZUFyZWEgd2hlbiB0aGUgc2Nyb2xsIG9mZnNldCBjaGFuZ2VzLgog
ICAgIHZvaWQgb2Zmc2V0RGlkQ2hhbmdlKCk7CiAKQEAgLTU3LDM0ICsxMDUsMTggQEAgcHVibGlj
OgogICAgIHZvaWQgZGlzY29ubmVjdEZyb21TY3JvbGxhYmxlQXJlYSgpIHsgbV9zY3JvbGxhYmxl
QXJlYSA9IDA7IH0KICAgICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEoKSBjb25zdCB7
IHJldHVybiBtX3Njcm9sbGFibGVBcmVhOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21T
Y3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIFNjcm9sbGJhck9yaWVudGF0
aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQotCi0gICAg
aW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbHJvdW5kZihtX2N1cnJlbnRQb3MpOyB9Ci0gICAg
ZmxvYXQgY3VycmVudFBvcygpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudFBvczsgfQogICAgIGlu
dCBwcmVzc2VkUG9zKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzc2VkUG9zOyB9Ci0gICAgaW50IHZp
c2libGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlU2l6ZTsgfQotICAgIGludCB0b3Rh
bFNpemUoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsU2l6ZTsgfQotICAgIGludCBtYXhpbXVtKCkg
Y29uc3QgeyByZXR1cm4gbV90b3RhbFNpemUgLSBtX3Zpc2libGVTaXplOyB9ICAgICAgICAKLSAg
ICBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29u
dHJvbFNpemU7IH0KIAotICAgIGludCBsaW5lU3RlcCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZVN0
ZXA7IH0KLSAgICBpbnQgcGFnZVN0ZXAoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VTdGVwOyB9CiAg
ICAgZmxvYXQgcGl4ZWxTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9waXhlbFN0ZXA7IH0KIAotICAg
IFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXNzZWRQYXJ0
OyB9Ci0gICAgU2Nyb2xsYmFyUGFydCBob3ZlcmVkUGFydCgpIGNvbnN0IHsgcmV0dXJuIG1faG92
ZXJlZFBhcnQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SG92ZXJlZFBhcnQoU2Nyb2xsYmFyUGFy
dCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFByZXNzZWRQYXJ0KFNjcm9sbGJhclBhcnQpOwogCiAg
ICAgdm9pZCBzZXRTdGVwcyhpbnQgbGluZVN0ZXAsIGludCBwYWdlU3RlcCwgaW50IHBpeGVsc1Bl
clN0ZXAgPSAxKTsKICAgICB2b2lkIHNldFByb3BvcnRpb24oaW50IHZpc2libGVTaXplLCBpbnQg
dG90YWxTaXplKTsKICAgICB2b2lkIHNldFByZXNzZWRQb3MoaW50IHApIHsgbV9wcmVzc2VkUG9z
ID0gcDsgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKIAotICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZW5hYmxlZDsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wgZSk7
CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QpOwogCiAgICAgdmlydHVhbCBib29sIGlzT3ZlcmxheVNjcm9sbGJhcigpIGNv
bnN0OwogICAgIGJvb2wgc2hvdWxkUGFydGljaXBhdGVJbkhpdFRlc3RpbmcoKTsKQEAgLTk3LDcg
KzEyOSw3IEBAIHB1YmxpYzoKICAgICBib29sIG1vdXNlTW92ZWQoY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50Jik7CiAgICAgdm9pZCBtb3VzZUVudGVyZWQoKTsKICAgICBib29sIG1vdXNlRXhpdGVk
KCk7Ci0gICAgCisKICAgICAvLyBVc2VkIGJ5IHNvbWUgcGxhdGZvcm0gc2Nyb2xsYmFycyB0byBr
bm93IHdoZW4gdGhleSd2ZSBiZWVuIHJlbGVhc2VkIGZyb20gY2FwdHVyZS4KICAgICBib29sIG1v
dXNlVXAoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKQEAgLTEwNiwxOCArMTM4LDEzIEBA
IHB1YmxpYzoKICAgICBTY3JvbGxiYXJUaGVtZSogdGhlbWUoKSBjb25zdCB7IHJldHVybiBtX3Ro
ZW1lOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50KFNjcm9sbFZpZXcqKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0Jik7Ci0gICAgCiAgICAgYm9vbCBzdXBw
cmVzc0ludmFsaWRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3NJbnZhbGlkYXRpb247
IH0KICAgICB2b2lkIHNldFN1cHByZXNzSW52YWxpZGF0aW9uKGJvb2wgcykgeyBtX3N1cHByZXNz
SW52YWxpZGF0aW9uID0gczsgfQogCi0gICAgdmlydHVhbCB2b2lkIHN0eWxlQ2hhbmdlZCgpIHsg
fQotCiAgICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IElu
dFJlY3QmKSBjb25zdDsKICAgICB2aXJ0dWFsIEludFJlY3QgY29udmVydEZyb21Db250YWluaW5n
Vmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgCisKICAgICB2aXJ0dWFsIEludFBvaW50
IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAgICAgdmly
dHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBvaW50Jikg
Y29uc3Q7CiAKQEAgLTE2MCw3ICsxODcsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBUaW1lcjxTY3Jv
bGxiYXI+IG1fc2Nyb2xsVGltZXI7CiAgICAgYm9vbCBtX292ZXJsYXBzUmVzaXplcjsKLSAgICAK
KwogICAgIGJvb2wgbV9zdXBwcmVzc0ludmFsaWRhdGlvbjsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCmluZGV4IDJhODNkNTM4NWVhYmJjYWNmZjhi
ZTU2MzQ5YjRkMTllMzJiYjZmY2MuLjVmZTQ1YjFhNDczNjU3MTZiZjJiNzJhNDZkYWJhZWI2YWYw
YmZmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaApAQCAtMzMs
NyArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZl
bnQ7Ci1jbGFzcyBTY3JvbGxiYXI7CitjbGFzcyBTY3JvbGxiYXJUaGVtZUNsaWVudDsKIGNsYXNz
IFNjcm9sbFZpZXc7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVOQUJM
RShSVUJCRVJfQkFORElORykKQEAgLTQ2LDEwICs0NiwxMCBAQCBwdWJsaWM6CiAgICAgU2Nyb2xs
YmFyVGhlbWUoKSB7IH0KICAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZSgpIHt9OwogCi0gICAg
dmlydHVhbCB2b2lkIHVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXIqKSB7IH07CisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgfTsK
IAotICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXIqLCBHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0JiAvKmRhbWFnZVJlY3QqLykgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0
dWFsIFNjcm9sbGJhclBhcnQgaGl0VGVzdChTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmKSB7IHJldHVybiBOb1BhcnQ7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiAvKmRhbWFn
ZVJlY3QqLykgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgaGl0
VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsg
cmV0dXJuIE5vUGFydDsgfQogICAgIAogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVz
cyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIpIHsgcmV0dXJuIDA7IH0K
IApAQCAtNTcsMTMgKzU3LDEzIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29s
IHVzZXNPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXIqKSB7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhclRoZW1l
Q2xpZW50KikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdGhlbWVDaGFuZ2VkKCkge30KICAgICAK
ICAgICB2aXJ0dWFsIGJvb2wgaW52YWxpZGF0ZU9uTW91c2VFbnRlckV4aXQoKSB7IHJldHVybiBm
YWxzZTsgfQogCi0gICAgdm9pZCBpbnZhbGlkYXRlUGFydHMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IFNjcm9sbGJhckNvbnRyb2xQYXJ0TWFzayBtYXNrKQorICAgIHZvaWQgaW52YWxpZGF0ZVBhcnRz
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhckNvbnRyb2xQYXJ0TWFz
ayBtYXNrKQogICAgIHsKICAgICAgICAgaWYgKG1hc2sgJiBCYWNrQnV0dG9uU3RhcnRQYXJ0KQog
ICAgICAgICAgICAgaW52YWxpZGF0ZVBhcnQoc2Nyb2xsYmFyLCBCYWNrQnV0dG9uU3RhcnRQYXJ0
KTsKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgaW52YWxpZGF0ZVBhcnQo
c2Nyb2xsYmFyLCBGb3J3YXJkQnV0dG9uRW5kUGFydCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2
b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQpIHt9CisgICAgdmly
dHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFy
UGFydCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmll
dyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCkg
eyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29ybmVyUmVjdCk7IH0KICAgICBz
dGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRleHQtPmZpbGxSZWN0KGNvcm5l
clJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7IH0KQEAgLTkzLDIxICs5
MywyMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFVwQ29udGVudFNoYWRvd0xheWVy
KEdyYXBoaWNzTGF5ZXIqKSB7IH0KICNlbmRpZgogCi0gICAgdmlydHVhbCBib29sIHNob3VsZENl
bnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4o
U2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xs
YmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9sbGJhciopIHsgcmV0dXJuIDA7IH0gLy8gVGhl
IHBvc2l0aW9uIG9mIHRoZSB0aHVtYiByZWxhdGl2ZSB0byB0aGUgdHJhY2suCi0gICAgdmlydHVh
bCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyKikgeyByZXR1cm4gMDsgfSAvLyBUaGUgbGVuZ3Ro
IG9mIHRoZSB0aHVtYiBhbG9uZyB0aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLgotICAgIHZpcnR1
YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKikgeyByZXR1cm4gMDsgfSAvLyBUaGUgcG9z
aXRpb24gb2YgdGhlIHRyYWNrIHJlbGF0aXZlIHRvIHRoZSBzY3JvbGxiYXIuCi0gICAgdmlydHVh
bCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFyKikgeyByZXR1cm4gMDsgfSAvLyBUaGUgbGVuZ3Ro
IG9mIHRoZSB0cmFjayBhbG9uZyB0aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1
YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBz
aG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBp
bnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIDA7IH0gLy8g
VGhlIHBvc2l0aW9uIG9mIHRoZSB0aHVtYiByZWxhdGl2ZSB0byB0aGUgdHJhY2suCisgICAgdmly
dHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiAwOyB9
IC8vIFRoZSBsZW5ndGggb2YgdGhlIHRodW1iIGFsb25nIHRoZSBheGlzIG9mIHRoZSBzY3JvbGxi
YXIuCisgICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCop
IHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0cmFjayByZWxhdGl2ZSB0byB0
aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1l
Q2xpZW50KikgeyByZXR1cm4gMDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0cmFjayBhbG9uZyB0
aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLgogCiAgICAgdmlydHVhbCBpbnQgbWF4T3ZlcmxhcEJl
dHdlZW5QYWdlcygpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCk7IH0K
IAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0
dXJuIDAuMjU7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsg
cmV0dXJuIDAuMDU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3Jv
bGxiYXIqKSB7fQotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJh
ciopIHt9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1l
Q2xpZW50KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqKSB7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc01vY2tUaGVtZSgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbGJhclRoZW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxiYXJUaGVtZUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3MWM1MmU5MGI4OTkwZjg4NmE2YjdkM2Zk
NWZkNGU0ZGJmNjlmMjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFNjcm9sbGJhclRoZW1lQ2xpZW50X2gKKyNkZWZpbmUgU2Nyb2xsYmFyVGhlbWVDbGllbnRfaAor
CisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAi
SW50U2l6ZS5oIgorI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgU2Nyb2xsVmlldzsKKworY2xhc3MgU2Nyb2xsYmFyVGhlbWVDbGllbnQgeworcHVi
bGljOgorICAgIHZpcnR1YWwgaW50IHgoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgeSgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCB3aWR0aCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGludCBoZWlnaHQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRQb2ludCBsb2NhdGlvbigpIGNvbnN0ID0gMDsKKwor
ICAgIHZpcnR1YWwgU2Nyb2xsVmlldyogcGFyZW50KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
U2Nyb2xsVmlldyogcm9vdCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFt
ZVJlY3QoY29uc3QgSW50UmVjdCYpID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3QgZnJhbWVSZWN0
KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmKSA9IDA7CisKKyAgICB2
aXJ0dWFsIFNjcm9sbGJhck92ZXJsYXlTdHlsZSBzY3JvbGxiYXJPdmVybGF5U3R5bGUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFRpY2ttYXJrcyhWZWN0b3I8SW50UmVjdD4mKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsVmlld1Njcm9sbGJhcigpIGNvbnN0ID0g
MDsKKworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nV2luZG93KGNv
bnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkgPSAwOworCisgICAgdmlydHVhbCBib29sIGlzQ3Vz
dG9tU2Nyb2xsYmFyKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3JpZW50YXRp
b24gb3JpZW50YXRpb24oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGludCB2YWx1ZSgpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRQb3MoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBpbnQgdmlzaWJsZVNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgdG90
YWxTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IG1heGltdW0oKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSgpIGNvbnN0ID0g
MDsKKworICAgIHZpcnR1YWwgaW50IGxpbmVTdGVwKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
aW50IHBhZ2VTdGVwKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IHBy
ZXNzZWRQYXJ0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBob3ZlcmVk
UGFydCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBzdHlsZUNoYW5nZWQoKSA9IDA7
CisKKyAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0RW5hYmxlZChib29sKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5TY3Jv
bGxiYXJUaGVtZUNsaWVudCgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gU2NvbGxiYXJUaGVtZUNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAKaW5kZXggNjJmZDVlNWQyYzUwZWY5
YjM1YjQxNzU0ZDA5YmJiMGUxZTZiZTM4ZS4uOWQ4MzM3NDJmOTJlZWJkNzBlMGFjYzE2ZWUzNzg0
YjNjMjMxNTc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJh
clRoZW1lQ29tcG9zaXRlLmNwcApAQCAtMzMsMTUgKzMzLDE0IEBACiAjaW5jbHVkZSAiR3JhcGhp
Y3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VF
dmVudC5oIgotI2luY2x1ZGUgIlNjcm9sbGJhci5oIgotI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVh
LmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJv
b2wgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVj
dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBkYW1hZ2VSZWN0KQogewogICAgIC8vIENyZWF0ZSB0aGUgU2Nyb2xsYmFyQ29udHJv
bFBhcnRNYXNrIGJhc2VkIG9uIHRoZSBkYW1hZ2VSZWN0CiAgICAgU2Nyb2xsYmFyQ29udHJvbFBh
cnRNYXNrIHNjcm9sbE1hc2sgPSBOb1BhcnQ7CkBAIC0xMTYsNyArMTE1LDcgQEAgYm9vbCBTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNz
Q29udGV4dCogZ3JhcGgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU2Nyb2xsYmFyUGFydCBTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZTo6aGl0VGVzdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitTY3JvbGxiYXJQYXJ0IFNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlOjpoaXRUZXN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIFNjcm9sbGJhclBhcnQgcmVzdWx0ID0gTm9Q
YXJ0OwogICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCkBAIC0xNTUsNyArMTU0LDcgQEAg
U2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aGl0VGVzdChTY3JvbGxiYXIq
IHNjcm9sbGJhciwgY29uc3QgUGxhdGYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRlUGFydChTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aW52
YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFy
dCBwYXJ0KQogewogICAgIGlmIChwYXJ0ID09IE5vUGFydCkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTk1LDcgKzE5NCw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OmludmFsaWRhdGVQ
YXJ0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgc2Nyb2xsYmFyLT5p
bnZhbGlkYXRlUmVjdChyZXN1bHQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRl
OjpzcGxpdFRyYWNrKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0
cmFpbmVkVHJhY2tSZWN0LCBJbnRSZWN0JiBiZWZvcmVUaHVtYlJlY3QsIEludFJlY3QmIHRodW1i
UmVjdCwgSW50UmVjdCYgYWZ0ZXJUaHVtYlJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjpzcGxpdFRyYWNrKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QsIEludFJlY3QmIGJlZm9yZVRodW1iUmVjdCwg
SW50UmVjdCYgdGh1bWJSZWN0LCBJbnRSZWN0JiBhZnRlclRodW1iUmVjdCkKIHsKICAgICAvLyBU
aGlzIGZ1bmN0aW9uIHdvbid0IGV2ZW4gZ2V0IGNhbGxlZCB1bmxlc3Mgd2UncmUgYmlnIGVub3Vn
aCB0byBoYXZlIHNvbWUgY29tYmluYXRpb24gb2YgdGhlc2UgdGhyZWUgcmVjdHMgd2hlcmUgYXQg
bGVhc3QKICAgICAvLyBvbmUgb2YgdGhlbSBpcyBub24tZW1wdHkuCkBAIC0yMTUsNyArMjE0LDcg
QEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhTY3JvbGxiYXIqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgdW4KIAogLy8gUmV0dXJucyB0aGUgc2l6ZSByZXByZXNl
bnRlZCBieSB0cmFjayB0YWtpbmcgaW50byBhY2NvdW50IHNjcm9sbGluZyBwYXN0CiAvLyB0aGUg
ZW5kIG9mIHRoZSBkb2N1bWVudC4KLXN0YXRpYyBmbG9hdCB1c2VkVG90YWxTaXplKFNjcm9sbGJh
ciogc2Nyb2xsYmFyKQorc3RhdGljIGZsb2F0IHVzZWRUb3RhbFNpemUoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBmbG9hdCBvdmVyaGFuZ0F0U3RhcnQgPSAtc2Nyb2xs
YmFyLT5jdXJyZW50UG9zKCk7CiAgICAgZmxvYXQgb3ZlcmhhbmdBdEVuZCA9IHNjcm9sbGJhci0+
Y3VycmVudFBvcygpICsgc2Nyb2xsYmFyLT52aXNpYmxlU2l6ZSgpIC0gc2Nyb2xsYmFyLT50b3Rh
bFNpemUoKTsKQEAgLTIyMyw3ICsyMjIsNyBAQCBzdGF0aWMgZmxvYXQgdXNlZFRvdGFsU2l6ZShT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICByZXR1cm4gc2Nyb2xsYmFyLT50b3RhbFNpemUoKSAr
IG92ZXJoYW5nOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUG9zaXRp
b24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRo
dW1iUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAo
c2Nyb2xsYmFyLT5lbmFibGVkKCkpIHsKICAgICAgICAgZmxvYXQgc2l6ZSA9IHVzZWRUb3RhbFNp
emUoc2Nyb2xsYmFyKSAtIHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKTsKQEAgLTIzNiw3ICsyMzUs
NyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUG9zaXRpb24oU2Nyb2xsYmFy
KiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZTo6dGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGU6OnRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIp
CiB7CiAgICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBA
IC0yNTAsMTggKzI0OSwxOCBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iTGVu
Z3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiBsZW5ndGg7CiB9CiAKLWludCBT
Y3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjptaW5pbXVtVGh1bWJMZW5ndGgo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gc2Nyb2xsYmFy
VGhpY2tuZXNzKHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSk7CiB9CiAKLWludCBTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6dHJhY2tQb3NpdGlvbihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBT
Y3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyKQogewogICAgIEludFJlY3QgY29uc3RyYWluZWRUcmFja1JlY3QgPSBjb25z
dHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKHNjcm9sbGJhciwgdHJhY2tSZWN0KHNjcm9sbGJh
cikpOwogICAgIHJldHVybiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxT
Y3JvbGxiYXIpID8gY29uc3RyYWluZWRUcmFja1JlY3QueCgpIC0gc2Nyb2xsYmFyLT54KCkgOiBj
b25zdHJhaW5lZFRyYWNrUmVjdC55KCkgLSBzY3JvbGxiYXItPnkoKTsKIH0KIAotaW50IFNjcm9s
bGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2lu
dCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhcikKIHsKICAgICBJbnRSZWN0IGNvbnN0cmFpbmVkVHJhY2tSZWN0ID0gY29u
c3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxiYXIsIHRyYWNrUmVjdChzY3JvbGxi
YXIpKTsKICAgICByZXR1cm4gKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFs
U2Nyb2xsYmFyKSA/IGNvbnN0cmFpbmVkVHJhY2tSZWN0LndpZHRoKCkgOiBjb25zdHJhaW5lZFRy
YWNrUmVjdC5oZWlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbGJhclRoZW1lQ29tcG9zaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZS5oCmluZGV4IDExYjNiZDQ3MDAxODdmZjE4MmIwNDViNDUyY2RjMjRk
YTMzZTc1OTAuLjhmNjI5MTMzZTQzMjgyYzY2ZDNmMTk5ZDEyZDMwM2RlNzJlYzcwZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaApA
QCAtMzIsNDAgKzMyLDQwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGUgOiBwdWJsaWMgU2Nyb2xsYmFyVGhlbWUgewogcHVibGljOgotICAgIHZp
cnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXIqLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxi
YXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJl
Y3QpOwogCi0gICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyKiwgY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRl
c3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0
KTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBTY3JvbGxiYXJQYXJ0KTsKIAotICAgIHZpcnR1YWwgaW50IHRodW1iUG9zaXRpb24oU2Nyb2xs
YmFyKik7Ci0gICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7Ci0gICAgdmly
dHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0cmFj
a0xlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9s
bGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJhclRo
ZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3
KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYg
dmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAKIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKSA9IDA7Ci0gICAg
dmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSA9IDA7CiAKLSAgICB2aXJ0dWFsIEludFJl
Y3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGlu
ZyA9IGZhbHNlKSA9IDA7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNj
cm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOwotICAg
IHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZh
bHNlKSA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSA9IDA7Cisg
ICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSA9IDA7CisgICAgdmlydHVh
bCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNwbGl0VHJhY2soU2Nyb2xsYmFyKiwg
Y29uc3QgSW50UmVjdCYgdHJhY2ssIEludFJlY3QmIHN0YXJ0VHJhY2ssIEludFJlY3QmIHRodW1i
LCBJbnRSZWN0JiBlbmRUcmFjayk7CisgICAgdmlydHVhbCB2b2lkIHNwbGl0VHJhY2soU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiB0cmFjaywgSW50UmVjdCYgc3RhcnRUcmFj
aywgSW50UmVjdCYgdGh1bWIsIEludFJlY3QmIGVuZFRyYWNrKTsKICAgICAKLSAgICB2aXJ0dWFs
IGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBpbnQgbWlu
aW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciop
IHt9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4
dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSB7fQotICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYs
IFNjcm9sbGJhclBhcnQpIHt9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNz
Q29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KSB7fQot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhcios
IGNvbnN0IEludFJlY3QmKSB7fQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jikge30KKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJh
clRoZW1lQ2xpZW50KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5k
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkgeyB9
CisgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgY29uc3QgSW50UmVjdCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJr
cyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3Qm
KSB7IH0KIAotICAgIHZpcnR1YWwgSW50UmVjdCBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGll
Y2VzKFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmIHJlY3QpIHsgcmV0dXJuIHJlY3Q7IH0KKyAg
ICB2aXJ0dWFsIEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmIHJlY3QpIHsgcmV0dXJuIHJlY3Q7IH0KIH07
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAKaW5kZXggZjhjYjI4MTU0ODYxZTAxZGE3MTEyNDky
MGM2MGQwNmEzN2U5YTE4My4uNjgyZDgyZDViMzM3OTE4YjI1ZDA5OGJhNzcxNzM0ZTc5MTUwNWU5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAKQEAgLTM5LDE0ICszOSwxNCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6aGFzVGh1bWIoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06Omhhc1RodW1i
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgLy8gVGhpcyBtZXRob2Qg
aXMganVzdCBjYWxsZWQgYXMgYSBwYWludC10aW1lIG9wdGltaXphdGlvbiB0byBzZWUgaWYKICAg
ICAvLyBwYWludGluZyB0aGUgdGh1bWIgY2FuIGJlIHNraXBwZWQuICBXZSBkb24ndCBoYXZlIHRv
IGJlIGV4YWN0IGhlcmUuCiAgICAgcmV0dXJuIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikgPiAwOwog
fQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OmJhY2tCdXR0b25SZWN0KFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9s
bGJhclRoZW1lQ2hyb21pdW06OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICAvLyBXaW5kb3dzIGFu
ZCBMaW51eCBqdXN0IGhhdmUgc2luZ2xlIGFycm93cy4KICAgICBpZiAocGFydCA9PSBCYWNrQnV0
dG9uRW5kUGFydCkKQEAgLTU2LDcgKzU2LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGEKICAg
ICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Nyb2xsYmFyLT55KCksIHNpemUud2lk
dGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQg
cGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6Zm9yd2FyZEJ1dHRv
blJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0
LCBib29sKQogewogICAgIC8vIFdpbmRvd3MgYW5kIExpbnV4IGp1c3QgaGF2ZSBzaW5nbGUgYXJy
b3dzLgogICAgIGlmIChwYXJ0ID09IEZvcndhcmRCdXR0b25TdGFydFBhcnQpCkBAIC03NCw3ICs3
NCw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6Zm9yd2FyZEJ1dHRvblJlY3Qo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhCiAgICAgcmV0dXJuIEludFJlY3QoeCwgeSwg
c2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZUNocm9taXVtOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJbnRSZWN0
IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBib29sKQogewogICAgIEludFNpemUgYnMgPSBidXR0b25TaXplKHNjcm9sbGJh
cik7CiAgICAgLy8gVGhlIGJ1dHRvbnMgYXQgdGhlIHRvcCBhbmQgYm90dG9tIG9mIHRoZSBzY3Jv
bGxiYXIgYXJlIHNxdWFyZSwgc28gdGhlCkBAIC05MiwxNCArOTIsMTQgQEAgSW50UmVjdCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wp
CiAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpICsgYnMu
aGVpZ2h0KCksIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIDIgKiBicy5oZWlnaHQo
KSk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUcmFja0JhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUcmFja0Jh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIC8vIEp1c3QgYXNzdW1lIGEg
Zm9yd2FyZCB0cmFjayBwYXJ0LiAgV2Ugb25seSBwYWludCB0aGUgdHJhY2sgYXMgYSBzaW5nbGUg
cGllY2Ugd2hlbiB0aGVyZSBpcyBubyB0aHVtYi4KICAgICBpZiAoIWhhc1RodW1iKHNjcm9sbGJh
cikpCiAgICAgICAgIHBhaW50VHJhY2tQaWVjZShjb250ZXh0LCBzY3JvbGxiYXIsIHJlY3QsIEZv
cndhcmRUcmFja1BhcnQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50
VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnBhaW50
VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5v
cmllbnRhdGlvbigpICE9IFZlcnRpY2FsU2Nyb2xsYmFyKQogICAgICAgICByZXR1cm47CkBAIC0x
MDksNyArMTA5LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpwYWludFRpY2ttYXJr
cyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhcioKIAogICAgIC8vIEdldCB0aGUg
dGlja21hcmtzIGZvciB0aGUgZnJhbWV2aWV3LgogICAgIFZlY3RvcjxJbnRSZWN0PiB0aWNrbWFy
a3M7Ci0gICAgc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5nZXRUaWNrbWFya3ModGlja21h
cmtzKTsKKyAgICBzY3JvbGxiYXItPmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOwogICAgIGlmICgh
dGlja21hcmtzLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmgKaW5k
ZXggMTE3ODEyNTY5ZjY5ZjIwMDM3MWJhYzBmOWRhODdhN2MzMmRlNGZhNS4uY2Y2NzFkZDk4NGMw
NzkwOTk1YzY3ZDdkMGYxOGM1YjRhNmY2Y2ZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaApAQCAtNDEs
MTcgKzQxLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBXaW5kb3dzIGFuZCBMaW51
eC4KICAgICBjbGFzcyBTY3JvbGxiYXJUaGVtZUNocm9taXVtIDogcHVibGljIFNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlIHsKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBoYXNC
dXR0b25zKFNjcm9sbGJhciopIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdmlydHVhbCBib29s
IGhhc1RodW1iKFNjcm9sbGJhciopOworICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhT
Y3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBi
b29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICAgICAgdmlydHVhbCBJ
bnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFp
bnRpbmcgPSBmYWxzZSk7Ci0gICAgICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVj
dChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAg
ICAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSk7CisgICAgICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxi
YXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Cisg
ICAgICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgICAgIHZp
cnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50
aW5nID0gZmFsc2UpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3Vu
ZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIq
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4
dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwogCi0gICAgICAgIHZp
cnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciopID0gMDsKKyAgICAgICAgdmlydHVh
bCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSA9IDA7CiAgICAgfTsK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQu
Y3BwCmluZGV4IDFkYmVmYTY0OWMwODk3MmViMWMyYjM3Yjc0NzcxYjBkNjFiZWE1YWQuLmUxZTU1
YTFmYzEzZDc5YzBmOWU4ZjQ3MzBiZTg5NzgwOTRjMWY2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtQW5kcm9pZC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1BbmRyb2lkOjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29u
dHIKICAgICByZXR1cm4gc2Nyb2xsYmFyVGhpY2tuZXNzVmFsdWU7CiB9CiAKLXZvaWQgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtQW5kcm9pZDo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICAv
LyBQYWludCBibGFjayBiYWNrZ3JvdW5kIGluIER1bXBSZW5kZXJUcmVlLCBvdGhlcndpc2UgdGhl
IHBpeGVscyBpbiB0aGUgc2Nyb2xsYmFyIGFyZWEgZGVwZW5kCiAgICAgLy8gb24gdGhlaXIgcHJl
dmlvdXMgc3RhdGUsIHdoaWNoIG1ha2VzIHRoZSBkdW1wZWQgcmVzdWx0IHVuZGV0ZXJtaW5lZC4K
QEAgLTY1LDEyICs2NSwxMiBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpw
YWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjbwogICAgICAgICBjb250
ZXh0LT5maWxsUmVjdChzY3JvbGxiYXItPmZyYW1lUmVjdCgpLCBDb2xvcjo6YmxhY2ssIENvbG9y
U3BhY2VEZXZpY2VSR0IpOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lk
OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6c2hvdWxkQ2VudGVy
T25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZ0KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1BbmRyb2lkOjpidXR0b25TaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorSW50U2l6ZSBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0g
VmVydGljYWxTY3JvbGxiYXIpCiAgICAgICAgIHJldHVybiBJbnRTaXplKHNjcm9sbGJhclRoaWNr
bmVzc1ZhbHVlLCBidXR0b25MZW5ndGgpOwpAQCAtNzgsNyArNzgsNyBAQCBJbnRTaXplIFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpidXR0b25TaXplKFNjcm9sbGJhciogc2Nyb2xsYmFy
KQogICAgIHJldHVybiBJbnRTaXplKGJ1dHRvbkxlbmd0aCwgc2Nyb2xsYmFyVGhpY2tuZXNzVmFs
dWUpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6Om1pbmltdW1UaHVt
Ykxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
QW5kcm9pZDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIpCiB7CiAgICAgcmV0dXJuIDIgKiBzY3JvbGxiYXJUaGlja25lc3Moc2Nyb2xsYmFyLT5jb250
cm9sU2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5oCmluZGV4IGYwN2M5
MDE2Nzg2Y2IyNGY4OGRmYjk0YWU0ZmMyMTZmZTZlNzBiZmMuLmYzZGI4MGU1MmZiZjUwYzFkZjY4
YTk0MGVhOWQ0NzNmMmRiZjI4NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuaApA
QCAtMzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlj
a25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2
b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIq
KTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShT
Y3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFy
Kik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRD
ZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CisgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtTGludXguY3BwCmluZGV4IGVjNjg0MDdlOWQ4YzMyZTMwZDMxMGQyZTUwNThjMmRhN2RiZGVj
YzYuLjZiNGRhZmMzNzNmMTBkMGFhMmQ2ZTk2NjJhYmU2M2RkNWRiNjVlN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1M
aW51eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUxpbnV4LmNwcApAQCAtNTAsNyArNTAsNyBAQCBpbnQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4OjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUg
Y29udHJvbAogICAgIHJldHVybiBzY3JvbGxiYXJTaXplLndpZHRoKCk7CiB9CiAKLXZvaWQgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0
KiBnYywgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJh
clBhcnQgcGFydFR5cGUpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRU
cmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCiB7CiAg
ICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGUgPSBzY3JvbGxiYXItPmhv
dmVyZWRQYXJ0KCkgPT0gcGFydFR5cGUgPyBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlSG92ZXIgOiBQ
bGF0Zm9ybVN1cHBvcnQ6OlN0YXRlTm9ybWFsOwogICAgIEludFJlY3QgYWxpZ25SZWN0ID0gdHJh
Y2tSZWN0KHNjcm9sbGJhciwgZmFsc2UpOwpAQCAtNjcsNyArNjcsNyBAQCB2b2lkIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2Ms
IFNjcm9sbGJhcgogICAgICAgICAmZXh0cmFQYXJhbXMpOwogfQogCi12b2lkIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkK
K3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbihHcmFwaGljc0Nv
bnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0
JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVt
ZVBhcnQgcGFpbnRQYXJ0OwogICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHN0
YXRlID0gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZU5vcm1hbDsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2
b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250
ZXh0KiBnYywgU2Nyb2xsYmFyKiBzYwogICAgIFBsYXRmb3JtU3VwcG9ydDo6cGFpbnRUaGVtZVBh
cnQoZ2MsIHBhaW50UGFydCwgc3RhdGUsIHJlY3QsIDApOwogfQogCi12b2lkIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgUGxhdGZv
cm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGU7CiAKQEAgLTEyMCwxMiArMTIwLDEyIEBA
IHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCogZ2MsIFNjcm9sbGJhciogc2NyCiAgICAgICAgIDApOwogfQogCi1ib29sIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eDo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxp
bnV4OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgcmV0dXJuIChldnQuc2hpZnRLZXkoKSAmJiBl
dnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgfHwgKGV2dC5idXR0b24oKSA9PSBNaWRkbGVCdXR0
b24pOwogfQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6YnV0dG9uU2l6
ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKK0ludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxp
bnV4OjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAg
aWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikgewogICAg
ICAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6OmdldFRoZW1lUGFydFNpemUoUGxh
dGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyVXBBcnJvdyk7CkBAIC0xMzcsNyArMTM3LDcgQEAg
SW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OmJ1dHRvblNpemUoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIEludFNpemUoc2Nyb2xsYmFyLT53aWR0aCgpIDwgMiAq
IHNpemUud2lkdGgoKSA/IHNjcm9sbGJhci0+d2lkdGgoKSAvIDIgOiBzaXplLndpZHRoKCksIHNp
emUuaGVpZ2h0KCkpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjptaW5p
bXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUxpbnV4OjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2Fs
U2Nyb2xsYmFyKSB7CiAgICAgICAgIEludFNpemUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0
VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJWZXJ0aWNhbFRodW1i
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0v
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgKaW5kZXggOGU4MDJlNzM0MWI3NzViNTk1NWFk
MGRlYzBiOGVlZDU2Zjc5NzI3My4uMzMwZDAzZmIwMjMyMTM0ZWMyY2EyOTQxOWZkYWIyNzM0OTQ3
NTRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgKQEAgLTM5LDEyICszOSwxMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVz
cyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29u
c3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRC
dXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9s
bGJhclBhcnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRl
eHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
OwotICAgICAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXIqKTsKLSAgICAg
ICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgICAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgICAg
ICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAg
ICAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
KTsKICAgICB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFj
LmgKaW5kZXggNDFhMTk4ZTNmODQyMGM4NDg5NDVmYjg0NzQ0ZGRiNzAwMjRjZDZlNS4uMTkzNDZl
NzIzYmFiMjg3Zjk4ZTE3YzgxMmRiNTgzYTFjMjA2NzAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1N
YWMuaApAQCAtMzYsMTIgKzM2LDEyIEBAIHB1YmxpYzoKICAgICBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtTWFjKCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYygpOwogCi0g
ICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhciosIEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CisgICAgdmlydHVhbCBib29sIHBhaW50KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFt
YWdlUmVjdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9sbFZp
ZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3ZlcmhhbmdB
cmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYg
ZGlydHlSZWN0KTsKICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCBwYWludEdpdmVuVGlja21hcmtz
KEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBjb25zdCBWZWN0
b3I8SW50UmVjdD4mKTsKKyAgICB2b2lkIHBhaW50R2l2ZW5UaWNrbWFya3MoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgVmVjdG9y
PEludFJlY3Q+Jik7CiAKICAgICBSZWZQdHI8UGF0dGVybj4gbV9vdmVyaGFuZ1BhdHRlcm47CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KaW5kZXggNDU5YTU4YjA3NmY3MDA2ZjI3NzY1YjAy
NDk3YTA5OTM1ZjgyM2ZiNy4uZDAyYjQyMTI1NjQ0Yjc4MzBjZTJlMGZhZWIzNjczMzYxZjhkYjk0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCkBAIC02MSwxMSArNjEsMTEgQEAgU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYzo6flNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMoKQogewogfQog
Ci1zdGF0aWMgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc2Nyb2xsYmFyU3RhdGVU
b1RoZW1lU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitzdGF0aWMgUGxhdGZvcm1TdXBwb3J0
OjpUaGVtZVBhaW50U3RhdGUgc2Nyb2xsYmFyU3RhdGVUb1RoZW1lU3RhdGUoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQog
ICAgICAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZURpc2FibGVkOwotICAgIGlmICgh
c2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5pc0FjdGl2ZSgpKQorICAgIGlmICghc2Nyb2xs
YmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVN1
cHBvcnQ6OlN0YXRlSW5hY3RpdmU7CiAgICAgaWYgKHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSA9
PSBUaHVtYlBhcnQpCiAgICAgICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlUHJlc3Nl
ZDsKQEAgLTk0LDExICs5NCwxMSBAQCBzdGF0aWMgdm9pZCBzY3JvbGxiYXJQYWludGVyUGFpbnRU
cmFjayhTY3JvbGxiYXJQYWludGVyIHNjcm9sbGJhclBhaW50ZXIsIGJvb2wgZQogLy8gICAgIC0g
ZHJhd2luZyB1c2luZyBQbGF0Zm9ybVN1cHBvcnQgZnVuY3Rpb25zCiAvLyAgICAgLSBkcmF3aW5n
IHRpY2ttYXJrcwogLy8gICAgIC0gU2tpYSBzcGVjaWZpYyBjaGFuZ2VzCi1ib29sIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCitib29sIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIs
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKIHsK
ICAgICAvLyBHZXQgdGhlIHRpY2ttYXJrcyBmb3IgdGhlIGZyYW1ldmlldy4KICAgICBWZWN0b3I8
SW50UmVjdD4gdGlja21hcmtzOwotICAgIHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+Z2V0
VGlja21hcmtzKHRpY2ttYXJrcyk7CisgICAgc2Nyb2xsYmFyLT5nZXRUaWNrbWFya3ModGlja21h
cmtzKTsKIAogICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkgewogICAg
ICAgICBmbG9hdCB2YWx1ZSA9IDA7CkBAIC0xODgsNyArMTg4LDcgQEAgYm9vbCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250
ZXh0KiBjb24KICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQogICAgICAgICB0cmFja0lu
Zm8uZW5hYmxlU3RhdGUgPSBrVGhlbWVUcmFja0Rpc2FibGVkOwogICAgIGVsc2UKLSAgICAgICAg
dHJhY2tJbmZvLmVuYWJsZVN0YXRlID0gc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5pc0Fj
dGl2ZSgpID8ga1RoZW1lVHJhY2tBY3RpdmUgOiBrVGhlbWVUcmFja0luYWN0aXZlOworICAgICAg
ICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBzY3JvbGxiYXItPmlzU2Nyb2xsYWJsZUFyZWFBY3Rp
dmUoKSA/IGtUaGVtZVRyYWNrQWN0aXZlIDoga1RoZW1lVHJhY2tJbmFjdGl2ZTsKIAogICAgIGlm
ICghaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUg
PSBrVGhlbWVUcmFja05vdGhpbmdUb1Njcm9sbDsKQEAgLTI0Myw3ICsyNDMsNyBAQCBib29sIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFw
aGljc0NvbnRleHQqIGNvbgogICAgIGlmIChoYXNUaHVtYihzY3JvbGxiYXIpKSB7CiAgICAgICAg
IFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFNjcm9sbGJhckluZm8gc2Nyb2xsYmFySW5mbzsK
ICAgICAgICAgc2Nyb2xsYmFySW5mby5vcmllbnRhdGlvbiA9IHNjcm9sbGJhci0+b3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gUGxhdGZvcm1TdXBwb3J0OjpTY3JvbGxiYXJP
cmllbnRhdGlvbkhvcml6b250YWwgOiBQbGF0Zm9ybVN1cHBvcnQ6OlNjcm9sbGJhck9yaWVudGF0
aW9uVmVydGljYWw7Ci0gICAgICAgIHNjcm9sbGJhckluZm8ucGFyZW50ID0gc2Nyb2xsYmFyLT5w
YXJlbnQoKSAmJiBzY3JvbGxiYXItPnBhcmVudCgpLT5pc0ZyYW1lVmlldygpICYmIHN0YXRpY19j
YXN0PEZyYW1lVmlldyo+KHNjcm9sbGJhci0+cGFyZW50KCkpLT5pc1Njcm9sbFZpZXdTY3JvbGxi
YXIoc2Nyb2xsYmFyKSA/IFBsYXRmb3JtU3VwcG9ydDo6U2Nyb2xsYmFyUGFyZW50U2Nyb2xsVmll
dyA6IFBsYXRmb3JtU3VwcG9ydDo6U2Nyb2xsYmFyUGFyZW50UmVuZGVyTGF5ZXI7CisgICAgICAg
IHNjcm9sbGJhckluZm8ucGFyZW50ID0gc2Nyb2xsYmFyLT5pc1Njcm9sbFZpZXdTY3JvbGxiYXIo
KSA/IFBsYXRmb3JtU3VwcG9ydDo6U2Nyb2xsYmFyUGFyZW50U2Nyb2xsVmlldyA6IFBsYXRmb3Jt
U3VwcG9ydDo6U2Nyb2xsYmFyUGFyZW50UmVuZGVyTGF5ZXI7CiAgICAgICAgIHNjcm9sbGJhcklu
Zm8ubWF4VmFsdWUgPSBzY3JvbGxiYXItPm1heGltdW0oKTsKICAgICAgICAgc2Nyb2xsYmFySW5m
by5jdXJyZW50VmFsdWUgPSBzY3JvbGxiYXItPmN1cnJlbnRQb3MoKTsKICAgICAgICAgc2Nyb2xs
YmFySW5mby52aXNpYmxlU2l6ZSA9IHNjcm9sbGJhci0+dmlzaWJsZVNpemUoKTsKQEAgLTI2Myw3
ICsyNjMsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbgogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50R2l2ZW5UaWNrbWFya3MoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCwgY29uc3QgVmVjdG9yPEludFJlY3Q+JiB0aWNrbWFya3MpCit2b2lkIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWM6OnBhaW50R2l2ZW5UaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHRpY2ttYXJrcykKIHsKICAgICBpZiAoc2Nyb2xs
YmFyLT5vcmllbnRhdGlvbigpICE9IFZlcnRpY2FsU2Nyb2xsYmFyKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwCmluZGV4IGY0MzU4MzlkODIxODU2NGY4MDI3Mjhk
MzI4NTMyMGQxZTBjZGJhYzguLmEwODE5ODM0NzQ5MWRjYzVkOGYwMjJhMTIyODg5MGQ2NTc3ZmUz
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6aW52YWxpZGF0ZU9uTW91c2VFbnRlckV4aXQoKQog
ICAgIHJldHVybiB3aW5kb3dzVmVyc2lvbigpID49IFdpbmRvd3NWaXN0YTsKIH0KIAotYm9vbCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0
KQogewogICAgIC8vIEZpbmQgdGhlIHJlY3Qgd2l0aGluIHdoaWNoIHdlIHNob3VsZG4ndCBzbmFw
LCBieSBleHBhbmRpbmcgdGhlIHRyYWNrIHJlY3QKICAgICAvLyBpbiBib3RoIGRpbWVuc2lvbnMu
CkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxk
U25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiBzY3JvbGxiYXIsCiAgICAgcmV0dXJuICFy
ZWN0LmNvbnRhaW5zKG1vdXNlUG9zaXRpb24pOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1XaW46OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIq
IHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkK
K3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNz
Q29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCiB7CiAgICAgYm9vbCBob3J6ID0gc2Ny
b2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXI7CiAKQEAgLTExMyw3
ICsxMTMsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VHJhY2tQaWVj
ZShHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqCiAgICAgICAgIGFsaWduUmVjdCk7CiB9
CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRCdXR0b24oR3JhcGhpY3ND
b250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNj
cm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRC
dXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGJvb2wg
aG9yeiA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyOwog
CkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWlu
dEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcm8KICAgICAgICAgcmVj
dCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUaHVtYihHcmFw
aGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUaHVtYihHcmFwaGljc0Nv
bnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0
JiByZWN0KQogewogICAgIGJvb2wgaG9yeiA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBI
b3Jpem9udGFsU2Nyb2xsYmFyOwogCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtV2luOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJh
ciogc2Nyb2wKICAgICAgICAgcmVjdCk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
V2luOjpnZXRUaGVtZVN0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBh
cnQpIGNvbnN0CitpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZShT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpIGNvbnN0
CiB7CiAgICAgLy8gV2hlbiBkcmFnZ2luZyB0aGUgdGh1bWIsIGRyYXcgdGh1bWIgcHJlc3NlZCBh
bmQgb3RoZXIgc2VnbWVudHMgbm9ybWFsCiAgICAgLy8gcmVnYXJkbGVzcyBvZiB3aGVyZSB0aGUg
Y3Vyc29yIGFjdHVhbGx5IGlzLiAgU2VlIGFsc28gZm91ciBwbGFjZXMgaW4KQEAgLTE3MSw3ICsx
NzEsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZShTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydAogICAgIHJldHVybiAoc2Nyb2xsYmFyLT5w
cmVzc2VkUGFydCgpID09IHBhcnQpID8gU0NSQlNfUFJFU1NFRCA6IFNDUkJTX05PUk1BTDsKIH0K
IAotaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldFRoZW1lQXJyb3dTdGF0ZShTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KSBjb25zdAoraW50IFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1XaW46OmdldFRoZW1lQXJyb3dTdGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpIGNvbnN0CiB7CiAgICAgLy8gV2UgY291
bGQgdGFrZSBhZHZhbnRhZ2Ugb2Yga25vd2luZyB0aGUgdmFsdWVzIGluIHRoZSBzdGF0ZSBlbnVt
IHRvIHdyaXRlCiAgICAgLy8gc29tZSBzaW1wbGVyIGNvZGUsIGJ1dCB0cmVhdGluZyB0aGUgc3Rh
dGUgZW51bSBhcyBhIGJsYWNrIGJveCBzZWVtcwpAQCAtMjIxLDcgKzIyMSw3IEBAIGludCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3RhdGUoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIFNjcm9sbGJhCiAgICAgcmV0dXJuIChzY3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0g
cGFydCkgPyBBQlNfRE9XTlBSRVNTRUQgOiBBQlNfRE9XTk5PUk1BTDsKIH0KIAotaW50IFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1XaW46OmdldENsYXNzaWNUaGVtZVN0YXRlKFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpIGNvbnN0CitpbnQgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bVdpbjo6Z2V0Q2xhc3NpY1RoZW1lU3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KSBjb25zdAogewogICAgIC8vIFdoZW4gZHJhZ2dpbmcg
dGhlIHRodW1iLCBkcmF3IHRoZSBidXR0b25zIG5vcm1hbCBldmVuIHdoZW4gaG92ZXJlZC4KICAg
ICBpZiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpID09IFRodW1iUGFydCkKQEAgLTIzNSwxMiAr
MjM1LDEyIEBAIGludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRDbGFzc2ljVGhlbWVT
dGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsCiAgICAgcmV0dXJuIChzY3JvbGxiYXIt
PnByZXNzZWRQYXJ0KCkgPT0gcGFydCkgPyAoREZDU19QVVNIRUQgfCBERkNTX0ZMQVQpIDogMDsK
IH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtV2luOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgcmV0dXJuIGV2dC5z
aGlmdEtleSgpICYmIGV2dC5idXR0b24oKSA9PSBMZWZ0QnV0dG9uOwogfQogCi1JbnRTaXplIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
CitJbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmJ1dHRvblNpemUoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICAvLyBPdXIgZGVzaXJlZCByZWN0IGlzIGVz
c2VudGlhbGx5IHRoaWNrbmVzcyBieSB0aGlja25lc3MuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4u
aAppbmRleCA2OWNmYTEzMWM1Y2IwNGU5YjUyMTBiNzY1Y2ZiNDgxZThkZGNiMTM1Li5hYzg4ODFm
OTNiNWRiMWFmZjQ2NzlhNjA2M2U3YmE3ZTg2ZjU1MWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bi5oCkBAIC0zOCwxOSArMzgsMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoK
ICAgICAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xT
aXplKTsKICAgICAgICAgdmlydHVhbCBib29sIGludmFsaWRhdGVPbk1vdXNlRW50ZXJFeGl0KCk7
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxi
YXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICAgICAgdmlydHVhbCBib29sIHNo
b3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50Jik7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50
UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24o
R3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBh
cnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRD
ZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwotICAg
ICAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXIqKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0
IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICAgICAg
dmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIGludCBnZXRUaGVtZVN0YXRlKFNjcm9sbGJhciosIFNjcm9sbGJh
clBhcnQpIGNvbnN0OwotICAgICAgICBpbnQgZ2V0VGhlbWVBcnJvd1N0YXRlKFNjcm9sbGJhcios
IFNjcm9sbGJhclBhcnQpIGNvbnN0OwotICAgICAgICBpbnQgZ2V0Q2xhc3NpY1RoZW1lU3RhdGUo
U2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCkgY29uc3Q7CisgICAgICAgIGludCBnZXRUaGVtZVN0
YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCkgY29uc3Q7CisgICAgICAg
IGludCBnZXRUaGVtZUFycm93U3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQ
YXJ0KSBjb25zdDsKKyAgICAgICAgaW50IGdldENsYXNzaWNUaGVtZVN0YXRlKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCkgY29uc3Q7CiAgICAgfTsKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9s
bGJhclRoZW1lRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJU
aGVtZUVmbC5jcHAKaW5kZXggNjJkZjAwNWQ2NzU3MWQxNGFkMzk0MzYwZDU2YzQ5OGU0ZGY5MmJm
Yi4uMjQwYjUwMTQ3NzljMTgyZDE0MzkwYzNmOGMzOTM3NzU3N2U5M2E4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwCkBAIC00OSwx
MSArNDksMTEgQEAgaW50IFNjcm9sbGJhclRoZW1lRWZsOjpzY3JvbGxiYXJUaGlja25lc3MoU2Ny
b2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiAgICAgcmV0dXJuIDA7IC8vIHdlIHBhaW50
IG9uIHRvcAogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lRWZsOjpyZWdpc3RlclNjcm9sbGJhcihT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVFZmw6OnJlZ2lzdGVyU2Ny
b2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiB9CiAKLXZvaWQgU2Ny
b2xsYmFyVGhlbWVFZmw6OnVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
Cit2b2lkIFNjcm9sbGJhclRoZW1lRWZsOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmgKaW5kZXggMGZlMTY4ODFlMmU0NTZlNmUxMjMwMWFl
ZWY4NmMyNjViZDMzMjM0Yi4uMjhjMTYzZWQzODg2MTA5M2FkNzg5NzUxMTJlNTYxYjE4ZjE2NzAw
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1l
RWZsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZs
LmgKQEAgLTM5LDggKzM5LDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFy
VGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpOwot
ICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFy
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVt
ZUNsaWVudCopOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9T
Y3JvbGxiYXJUaGVtZUd0ay5jcHAKaW5kZXggZTk5MzY0ZjJhN2ZjYWY0ODg4MzBiNDY4ZGUxZDE4
YWQ3NTA0ZTkwZi4uOTRlM2ZkNzZmN2ZmYzUyMzBmYzg0N2ZmOWZlY2FmNDNkYzQ2ZmEwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3Bw
CkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEhhc2hT
ZXQ8U2Nyb2xsYmFyKj4qIGdTY3JvbGxiYXJzOworc3RhdGljIEhhc2hTZXQ8U2Nyb2xsYmFyVGhl
bWVDbGllbnQqPiogZ1Njcm9sbGJhcnM7CiAKIFNjcm9sbGJhclRoZW1lKiBTY3JvbGxiYXJUaGVt
ZTo6bmF0aXZlVGhlbWUoKQogewpAQCAtNDUsMTQgKzQ1LDE0IEBAIFNjcm9sbGJhclRoZW1lR3Rr
Ojp+U2Nyb2xsYmFyVGhlbWVHdGsoKQogewogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpy
ZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhl
bWVHdGs6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIp
CiB7CiAgICAgaWYgKCFnU2Nyb2xsYmFycykKLSAgICAgICAgZ1Njcm9sbGJhcnMgPSBuZXcgSGFz
aFNldDxTY3JvbGxiYXIqPjsKKyAgICAgICAgZ1Njcm9sbGJhcnMgPSBuZXcgSGFzaFNldDxTY3Jv
bGxiYXJUaGVtZUNsaWVudCo+OwogICAgIGdTY3JvbGxiYXJzLT5hZGQoc2Nyb2xsYmFyKTsKIH0K
IAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIq
IHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnVucmVnaXN0ZXJTY3JvbGxiYXIo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBnU2Nyb2xsYmFycy0+cmVt
b3ZlKHNjcm9sbGJhcik7CiAgICAgaWYgKGdTY3JvbGxiYXJzLT5pc0VtcHR5KCkpIHsKQEAgLTY5
LDkgKzY5LDkgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dXBkYXRlU2Nyb2xsYmFyc0ZyYW1l
VGhpY2tuZXNzKCkKICAgICAvLyBVcGRhdGUgdGhlIHRoaWNrbmVzcyBvZiBldmVyeSBpbnRlcmlv
ciBmcmFtZSBzY3JvbGxiYXIgd2lkZ2V0LiBUaGUKICAgICAvLyBwbGF0Zm9ybS1pbmRlcGVuZGVu
dCBzY3JvbGxiYXIgdGhlbSBjb2RlIGlzbid0IHlldCBzbWFydCBlbm91Z2ggdG8gZ2V0CiAgICAg
Ly8gdGhpcyBpbmZvcm1hdGlvbiB3aGVuIGl0IHBhaW50cy4KLSAgICBIYXNoU2V0PFNjcm9sbGJh
cio+OjppdGVyYXRvciBlbmQgPSBnU2Nyb2xsYmFycy0+ZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0
PFNjcm9sbGJhcio+OjppdGVyYXRvciBpdCA9IGdTY3JvbGxiYXJzLT5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpIHsKLSAgICAgICAgU2Nyb2xsYmFyKiBzY3JvbGxiYXIgPSAoKml0KTsKKyAgICBI
YXNoU2V0PFNjcm9sbGJhclRoZW1lQ2xpZW50Kj46Oml0ZXJhdG9yIGVuZCA9IGdTY3JvbGxiYXJz
LT5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8U2Nyb2xsYmFyVGhlbWVDbGllbnQqPjo6aXRlcmF0
b3IgaXQgPSBnU2Nyb2xsYmFycy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAg
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIgPSAoKml0KTsKIAogICAgICAgICAvLyBU
b3AtbGV2ZWwgc2Nyb2xsYmFyIGkuZS4gc2Nyb2xsYmFycyB3aG8gaGF2ZSBhIHBhcmVudCBTY3Jv
bGxWaWV3CiAgICAgICAgIC8vIHdpdGggbm8gcGFyZW50IGFyZSBuYXRpdmUsIGFuZCB0aHVzIGRv
IG5vdCBuZWVkIHRvIGJlIHJlc2l6ZWQuCkBAIC04NiwxNCArODYsMTQgQEAgdm9pZCBTY3JvbGxi
YXJUaGVtZUd0azo6dXBkYXRlU2Nyb2xsYmFyc0ZyYW1lVGhpY2tuZXNzKCkKICAgICB9CiB9CiAK
LWJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQor
Ym9vbCBTY3JvbGxiYXJUaGVtZUd0azo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBqdXN0IGNhbGxlZCBhcyBhIHBhaW50
LXRpbWUgb3B0aW1pemF0aW9uIHRvIHNlZSBpZgogICAgIC8vIHBhaW50aW5nIHRoZSB0aHVtYiBj
YW4gYmUgc2tpcHBlZC4gIFdlIGRvbid0IGhhdmUgdG8gYmUgZXhhY3QgaGVyZS4KICAgICByZXR1
cm4gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+IDA7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhl
bWVHdGs6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0
IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wp
CiB7CiAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRvbkVuZFBhcnQgJiYgIW1faGFzQmFja0J1dHRv
bkVuZFBhcnQpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CkBAIC0xMTQsNyArMTE0LDcgQEAg
SW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQgcGEKICAgICByZXR1cm4gSW50UmVjdCh4LCBzY3JvbGxiYXIt
PnkoKSArIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSBtX3Ryb3VnaEJvcmRlcldpZHRoIC0gKDIgKiBz
aXplLmhlaWdodCgpKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVj
dCBTY3JvbGxiYXJUaGVtZUd0azo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6
OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9s
bGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICBpZiAocGFydCA9PSBGb3J3YXJkQnV0dG9uU3Rh
cnRQYXJ0ICYmICFtX2hhc0ZvcndhcmRCdXR0b25TdGFydFBhcnQpCiAgICAgICAgIHJldHVybiBJ
bnRSZWN0KCk7CkBAIC0xNDAsNyArMTQwLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6
Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAg
ICByZXR1cm4gSW50UmVjdCh4LCBzY3JvbGxiYXItPnkoKSArIG1fdHJvdWdoQm9yZGVyV2lkdGgg
KyBzaXplLmhlaWdodCgpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogfQogCi1JbnRS
ZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJv
b2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhciwgYm9vbCkKIHsKICAgICAvLyBUaGUgcGFkZGluZyBhbG9uZyB0aGUg
dGh1bWIgbW92ZW1lbnQgYXhpcyBpbmNsdWRlcyB0aGUgdHJvdWdoIGJvcmRlcgogICAgIC8vIHBs
dXMgdGhlIHNpemUgb2Ygc3RlcHBlciBzcGFjaW5nICh0aGUgc3BhY2UgYmV0d2VlbiB0aGUgc3Rl
cHBlciBhbmQKQEAgLTE4MCw3ICsxODAsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0
cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCiAgICAgICAgICAgICAgICAgICAg
dGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0gKDIgKiBtb3ZlbWVudEF4aXNQYWRkaW5n
KSAtIGJ1dHRvbnNXaWR0aCk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OnRodW1i
UmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRy
YWNrUmVjdCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OnRodW1iUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tS
ZWN0KQogewogICAgIEludFJlY3QgdHJhY2tSZWN0ID0gY29uc3RyYWluVHJhY2tSZWN0VG9UcmFj
a1BpZWNlcyhzY3JvbGxiYXIsIHVuY29uc3RyYWluZWRUcmFja1JlY3QpOwogICAgIGludCB0aHVt
YlBvcyA9IHRodW1iUG9zaXRpb24oc2Nyb2xsYmFyKTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBJbnRS
ZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0aHVtYlJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIHVuY29ucwogICAgIHJldHVybiBJbnRSZWN0KHRyYWNrUmVjdC54KCkgKyAo
dHJhY2tSZWN0LndpZHRoKCkgLSBtX3RodW1iRmF0bmVzcykgLyAyLCB0cmFja1JlY3QueSgpICsg
dGh1bWJQb3MsIG1fdGh1bWJGYXRuZXNzLCB0aHVtYkxlbmd0aChzY3JvbGxiYXIpKTsKIH0KIAot
Ym9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQor
Ym9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRh
bWFnZVJlY3QpCiB7CiAgICAgaWYgKGdyYXBoaWNzQ29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjAsNyArMjYwLDcgQEAgYm9vbCBTY3JvbGxi
YXJUaGVtZUd0azo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUd0
azo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2ZW50KQorYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6c2hvdWxkQ2VudGVyT25UaHVtYihT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiB7
CiAgICAgcmV0dXJuIChldmVudC5zaGlmdEtleSgpICYmIGV2ZW50LmJ1dHRvbigpID09IExlZnRC
dXR0b24pIHx8IChldmVudC5idXR0b24oKSA9PSBNaWRkbGVCdXR0b24pOwogfQpAQCAtMjcwLDcg
KzI3MCw3IEBAIGludCBTY3JvbGxiYXJUaGVtZUd0azo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9s
bGJhckNvbnRyb2xTaXplKQogICAgIHJldHVybiBtX3RodW1iRmF0bmVzcyArIChtX3Ryb3VnaEJv
cmRlcldpZHRoICogMik7CiB9CiAKLUludFNpemUgU2Nyb2xsYmFyVGhlbWVHdGs6OmJ1dHRvblNp
emUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitJbnRTaXplIFNjcm9sbGJhclRoZW1lR3RrOjpidXR0
b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKHNjcm9s
bGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAgcmV0dXJu
IEludFNpemUobV90aHVtYkZhdG5lc3MsIG1fc3RlcHBlclNpemUpOwpAQCAtMjc5LDcgKzI3OSw3
IEBAIEludFNpemUgU2Nyb2xsYmFyVGhlbWVHdGs6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCiAgICAgcmV0dXJuIEludFNpemUobV9zdGVwcGVyU2l6ZSwgbV90aHVtYkZhdG5lc3Mp
OwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVHdGs6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxi
YXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUd0azo6bWluaW11bVRodW1iTGVuZ3Ro
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIG1fbWluVGh1
bWJMZW5ndGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Ny
b2xsYmFyVGhlbWVHdGsuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJU
aGVtZUd0ay5oCmluZGV4IDQ1ZTA5M2IxZWM5N2QxYWZhYTI0YzU4MzMxNTY2OTMwMmU4NWNkNjMu
LmU3M2RmMjg1NTAxYjU4MjZkYzA1OWI4M2JmYzNkOWE0MTcwZDRiYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5oCkBAIC0zNywyOSArMzcs
MjkgQEAgcHVibGljOgogICAgIFNjcm9sbGJhclRoZW1lR3RrKCk7CiAgICAgdmlydHVhbCB+U2Ny
b2xsYmFyVGhlbWVHdGsoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJh
ciopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFy
Kik7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9s
bGJhclBhcnQsIGJvb2wpOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChT
Y3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgdHJh
Y2tSZWN0KFNjcm9sbGJhciosIGJvb2wpOwotICAgIEludFJlY3QgdGh1bWJSZWN0KFNjcm9sbGJh
ciosIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QpOwotICAgIGJvb2wgcGFp
bnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVj
dCk7Ci0gICAgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyKik7Ci0gICAgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRl
eHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdm9pZCBwYWludFRodW1iKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50
UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRo
dW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwg
Ym9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZp
cnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9s
bGJhclBhcnQsIGJvb2wpOworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wpOworICAgIHZpcnR1YWwg
SW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sKTsKKyAgICBJbnRS
ZWN0IHRodW1iUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmIHVuY29u
c3RyYWluZWRUcmFja1JlY3QpOworICAgIGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2b2lk
IHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCopOworICAgIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50
UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCos
IGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRo
aWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7Ci0gICAgdmlydHVhbCBJbnRTaXplIGJ1dHRv
blNpemUoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNj
cm9sbGJhciopOworICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1l
Q2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRo
ZW1lQ2xpZW50Kik7CiAKICAgICAvLyBUT0RPOiBUaGVzZSBhcmUgdGhlIGRlZmF1bHQgR1RLKyB2
YWx1ZXMuIEF0IHNvbWUgcG9pbnQgd2Ugc2hvdWxkIHB1bGwgdGhlc2UgZnJvbSB0aGUgdGhlbWUg
aXRzZWxmLgogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgp
IHsgcmV0dXJuIDAuMjA7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxh
eSgpIHsgcmV0dXJuIDAuMDI7IH0KICAgICB2b2lkIHVwZGF0ZVRoZW1lUHJvcGVydGllcygpOwog
ICAgIHZvaWQgdXBkYXRlU2Nyb2xsYmFyc0ZyYW1lVGhpY2tuZXNzKCk7Ci0gICAgdm9pZCByZWdp
c3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKLSAgICB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIo
U2Nyb2xsYmFyKik7CisgICAgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNs
aWVudCopOworICAgIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVu
dCopOwogCiBwcm90ZWN0ZWQ6CiAjaWZuZGVmIEdUS19BUElfVkVSU0lPTl8yCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwCmluZGV4IDcy
OWJkMTI0ZGUyYjIxODU0OTk3YjE5ODc2MzBjZGY4OWJlYTkxMDMuLjg2NmJiOGExZDJmNzFhYTg2
NGVhNTdlZDMwM2YxMzYwNzJjMWM0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwCkBAIC02NiwxMyArNjYsMTMgQEAgdm9pZCBT
Y3JvbGxiYXJUaGVtZUd0azo6dXBkYXRlVGhlbWVQcm9wZXJ0aWVzKCkKICAgICB1cGRhdGVTY3Jv
bGxiYXJzRnJhbWVUaGlja25lc3MoKTsKIH0KIAotc3RhdGljIEd0a1dpZGdldCogZ2V0V2lkZ2V0
Rm9yU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorc3RhdGljIEd0a1dpZGdldCogZ2V0
V2lkZ2V0Rm9yU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAg
ICAgUmVuZGVyVGhlbWVHdGsqIHRoZW1lID0gc3RhdGljX2Nhc3Q8UmVuZGVyVGhlbWVHdGsqPihS
ZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCkuZ2V0KCkpOwogICAgIHJldHVybiBzY3JvbGxiYXIt
Pm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIgPyB0aGVtZS0+Z3RrVlNjcm9sbGJh
cigpIDogdGhlbWUtPmd0a0hTY3JvbGxiYXIoKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVH
dGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAv
LyBQYWludCB0aGUgdHJhY2sgYmFja2dyb3VuZC4gSWYgdGhlIHRyb3VnaC11bmRlci1zdGVwcGVy
cyBwcm9wZXJ0eSBpcyB0cnVlLCB0aGlzCiAgICAgLy8gc2hvdWxkIGJlIHRoZSBmdWxsIHNpemUg
b2YgdGhlIHNjcm9sbGJhciwgYnV0IGlmIGlzIGZhbHNlLCBpdCBzaG91bGQgb25seSBiZSB0aGUK
QEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdUS19TVEFURV9BQ1RJVkUsIEdUS19TSEFET1dfSU4sICJ0cm91Z2gi
KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5k
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNj
cm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIEludFJl
Y3QgZnVsbFNjcm9sbGJhclJlY3QgPSBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXIt
PnkoKSwgc2Nyb2xsYmFyLT53aWR0aCgpLCBzY3JvbGxiYXItPmhlaWdodCgpKTsKIApAQCAtOTYs
NyArOTYsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJhckJhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR1RLX1NUQVRFX05PUk1BTCwgR1RLX1NIQURPV19JTiwgInNjcm9sbGVkX3dpbmRv
dyIpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qp
Cit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKICAgICBHdGtXaWRnZXQqIHdpZGdldCA9IGdldFdpZGdldEZvclNjcm9sbGJhcihzY3Jv
bGxiYXIpOwogICAgIGdib29sZWFuIGFjdGl2YXRlU2xpZGVyOwpAQCAtMTI5LDcgKzEyOSw3IEBA
IHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhCiAgICAgd2lkZ2V0Q29udGV4dC5ndGtQYWludFNsaWRl
cihzbGlkZXJSZWN0LCB3aWRnZXQsIHN0YXRlVHlwZSwgc2hhZG93VHlwZSwgInNsaWRlciIsIG9y
aWVudGF0aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRCdXR0b24oR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFp
bnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAg
ICAgLy8gVGhlIGJ1dHRvbnMgd2lsbCBiZSBkaXNhYmxlZCBpZiB0aGUgdGh1bWIgaXMgYXMgdGhl
IGFwcHJvcHJpYXRlIGV4dHJlbWUuCiAgICAgR3RrU2hhZG93VHlwZSBzaGFkb3dUeXBlID0gR1RL
X1NIQURPV19PVVQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Ny
b2xsYmFyVGhlbWVHdGszLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxi
YXJUaGVtZUd0azMuY3BwCmluZGV4IDRjMzNlNjZkYjhmZmVmYzNmNDIzNDZjYWQwZWVlNjdlZTZj
ZDQ1ZmUuLjk3NDljNTQzZjNkZGY2YjMxNWVmZmI5OGE3NTlmZjViMDAyZDcwY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azMuY3BwCkBA
IC03Miw3ICs3Miw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5U2Nyb2xsYmFyU3R5bGVDb250ZXh0Q2xh
c3NlcyhHdGtTdHlsZUNvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhCiAgICAgZ3RrX3N0eWxlX2Nv
bnRleHRfYWRkX2NsYXNzKGNvbnRleHQsIG9yaWVudGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFy
ID8gIEdUS19TVFlMRV9DTEFTU19WRVJUSUNBTCA6IEdUS19TVFlMRV9DTEFTU19IT1JJWk9OVEFM
KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBQYWludCB0aGUgdHJhY2sgYmFja2dyb3Vu
ZC4gSWYgdGhlIHRyb3VnaC11bmRlci1zdGVwcGVycyBwcm9wZXJ0eSBpcyB0cnVlLCB0aGlzCiAg
ICAgLy8gc2hvdWxkIGJlIHRoZSBmdWxsIHNpemUgb2YgdGhlIHNjcm9sbGJhciwgYnV0IGlmIGlz
IGZhbHNlLCBpdCBzaG91bGQgb25seSBiZSB0aGUKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBTY3Jv
bGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBTY3JvbGxiYXIKICAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKG1fY29udGV4dCk7
CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3Jv
bGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBndGtfc3R5
bGVfY29udGV4dF9zYXZlKG1fY29udGV4dCk7CiAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFNj
cm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBTY3JvbAogICAgIGd0a19zdHlsZV9jb250ZXh0X3Jlc3RvcmUobV9jb250ZXh0
KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQor
dm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qp
CiB7CiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2F2ZShtX2NvbnRleHQpOwogCkBAIC0xMjYsNyAr
MTI2LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmEKICAgICBndGtfc3R5bGVfY29udGV4dF9y
ZXN0b3JlKG1fY29udGV4dCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0
dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVH
dGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0
KQogewogICAgIGd0a19zdHlsZV9jb250ZXh0X3NhdmUobV9jb250ZXh0KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaAppbmRleCAxM2Q0NGMy
M2QzYjMzNjIzNmZiNjQwOThmYTg3MGFlYzhjN2I1NjU4Li5kMTRkYTZkYjI0YjA3YTYyOTdkMTI3
NmE0MWYzYmJiM2VlMTEyNTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU2Nyb2xsYmFyVGhlbWVNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsYmFyVGhlbWVNYWMuaApAQCAtMzksNDYgKzM5LDQ2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgcHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRW5hYmxl
ZFN0YXRlKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVkU3RhdGUo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogI2lmICFQTEFURk9STShDSFJPTUlVTSkKLSAgICB2
aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VS
ZWN0KTsKICNlbmRpZgogCiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9s
bGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcik7CiAgICAgCiAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZp
cnR1YWwgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZv
aWQgdXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsK
IAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpOwogICAg
IHZpcnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1lckRlbGF5KCk7CiAKICAgICB2aXJ0dWFsIFNj
cm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgYnV0dG9uc1BsYWNlbWVudCgpIGNvbnN0OwogCi0gICAg
dmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwg
dm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgdm9p
ZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2b2lk
IHNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFpbnRlcik7
Ci0gICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciopOwor
ICAgIHZvaWQgc2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCos
IFNjcm9sbGJhclBhaW50ZXIpOworICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlckZvclNjcm9s
bGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiAgICAgc3RhdGljIGJvb2wgaXNDdXJyZW50
bHlEcmF3aW5nSW50b0xheWVyKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0SXNDdXJyZW50bHlEcmF3
aW5nSW50b0xheWVyKGJvb2wpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1
dHRvbnMoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciop
OworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7Cisg
ICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2
aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwg
Ym9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRv
blJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsK
LSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2
aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBT
Y3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVj
dCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2Up
OwogCiAgICAgdmlydHVhbCBpbnQgbWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpIHsgcmV0dXJuIDQw
OyB9CiAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7Cisg
ICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7
CiAgICAgCi0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZERyYWdE
b2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNo
b3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAgICAgaW50IHNjcm9sbGJhclBhcnRUb0hJUHJlc3Nl
ZFN0YXRlKFNjcm9sbGJhclBhcnQpOwogCiAjaWYgIVBMQVRGT1JNKENIUk9NSVVNKSAmJiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShSVUJCRVJfQkFORElORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQppbmRleCBl
ZTI4ZmIyODY0YWRlMTc1OTc2ODU3YzU3MWMxOGNiODk0YmE4MjkxLi5lNDc0NjhiZDU2MDM4NjU4
OTJlMmMxNGQ5NGEzMTNkYWEwNzZhMmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCkBAIC01MCw3ICs1MCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgSGFzaE1hcDxT
Y3JvbGxiYXIqLCBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFpbnRlcj4gPiBTY3JvbGxiYXJQYWludGVy
TWFwOwordHlwZWRlZiBIYXNoTWFwPFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgUmV0YWluUHRyPFNj
cm9sbGJhclBhaW50ZXI+ID4gU2Nyb2xsYmFyUGFpbnRlck1hcDsKIAogc3RhdGljIFNjcm9sbGJh
clBhaW50ZXJNYXAqIHNjcm9sbGJhck1hcCgpCiB7CkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGlj
IHZvaWQgdXBkYXRlQXJyb3dQbGFjZW1lbnQoKQogICAgIH0KIH0KIAotdm9pZCBTY3JvbGxiYXJU
aGVtZU1hYzo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNj
cm9sbGJhclRoZW1lTWFjOjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyKQogewogICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkg
ewogICAgICAgICBib29sIGlzSG9yaXpvbnRhbCA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9
PSBIb3Jpem9udGFsU2Nyb2xsYmFyOwpAQCAtMTc1LDE5ICsxNzUsMTkgQEAgdm9pZCBTY3JvbGxi
YXJUaGVtZU1hYzo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAg
fQogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9s
bGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dW5yZWdpc3RlclNjcm9s
bGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHNjcm9sbGJhck1h
cCgpLT5yZW1vdmUoc2Nyb2xsYmFyKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6c2V0
TmV3UGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFp
bnRlciBuZXdQYWludGVyKQordm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6c2V0TmV3UGFpbnRlckZv
clNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYWlu
dGVyIG5ld1BhaW50ZXIpCiB7CiAgICAgc2Nyb2xsYmFyTWFwKCktPnNldChzY3JvbGxiYXIsIG5l
d1BhaW50ZXIpOwogICAgIHVwZGF0ZUVuYWJsZWRTdGF0ZShzY3JvbGxiYXIpOwogICAgIHVwZGF0
ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShzY3JvbGxiYXIpOwogfQogCi1TY3JvbGxiYXJQYWludGVy
IFNjcm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQorU2Nyb2xsYmFyUGFpbnRlciBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnRlckZvclNjcm9s
bGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiBzY3Jv
bGxiYXJNYXAoKS0+Z2V0KHNjcm9sbGJhcikuZ2V0KCk7CiB9CkBAIC0yNDgsMTAgKzI0OCwxMCBA
QCBib29sIFNjcm9sbGJhclRoZW1lTWFjOjp1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0
ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xs
YmFyVGhlbWVNYWM6OnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyKQogewogICAgIFNjcm9sbGJhclBhaW50ZXIgcGFpbnRlciA9IHBhaW50
ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKLSAgICBzd2l0Y2ggKHNjcm9sbGJhci0+c2Nyb2xs
YWJsZUFyZWEoKS0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkpIHsKKyAgICBzd2l0Y2ggKHNjcm9s
bGJhci0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkpIHsKICAgICBjYXNlIFNjcm9sbGJhck92ZXJs
YXlTdHlsZURlZmF1bHQ6CiAgICAgICAgIFtwYWludGVyIHNldEtub2JTdHlsZTpOU1Njcm9sbGVy
S25vYlN0eWxlRGVmYXVsdF07CiAgICAgICAgIGJyZWFrOwpAQCAtMjc5LDcgKzI3OSw3IEBAIFNj
cm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgU2Nyb2xsYmFyVGhlbWVNYWM6OmJ1dHRvbnNQbGFjZW1l
bnQoKSBjb25zdAogICAgIHJldHVybiBnQnV0dG9uUGxhY2VtZW50OwogfQogCi1ib29sIFNjcm9s
bGJhclRoZW1lTWFjOjpoYXNCdXR0b25zKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3Jv
bGxiYXJUaGVtZU1hYzo6aGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
KQogewogICAgIHJldHVybiBzY3JvbGxiYXItPmVuYWJsZWQoKSAmJiBidXR0b25zUGxhY2VtZW50
KCkgIT0gU2Nyb2xsYmFyQnV0dG9uc05vbmUKICAgICAgICAgICAgICAmJiAoc2Nyb2xsYmFyLT5v
cmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIKQEAgLTI4Nyw3ICsyODcsNyBAQCBi
b29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNCdXR0b25zKFNjcm9sbGJhciogc2Nyb2xsYmFyKQog
ICAgICAgICAgICAgIDogc2Nyb2xsYmFyLT5oZWlnaHQoKSkgPj0gMiAqIChjUmVhbEJ1dHRvbkxl
bmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldIC0gY0J1dHRvbkhpdEluc2V0W3Njcm9sbGJh
ci0+Y29udHJvbFNpemUoKV0pOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNUaHVt
YihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6Omhhc1RodW1i
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaW50IG1pbkxlbmd0aEZv
clRodW1iOwogICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkgewpAQCAt
MzE5LDcgKzMxOSw3IEBAIHN0YXRpYyBJbnRSZWN0IGJ1dHRvblJlcGFpbnRSZWN0KGNvbnN0IElu
dFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJhck9yaWVudGF0aW9uCiAgICAgcmV0dXJuIHBhaW50
UmVjdDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6YmFja0J1dHRvblJlY3QoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykKK0lu
dFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCBwYWludGluZykKIHsKICAg
ICBJbnRSZWN0IHJlc3VsdDsKICAgICAKQEAgLTM1Myw3ICszNTMsNyBAQCBJbnRSZWN0IFNjcm9s
bGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xs
YmFyUGFydCBwYQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhl
bWVNYWM6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQ
YXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjpmb3J3
YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQ
YXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCiB7CiAgICAgSW50UmVjdCByZXN1bHQ7CiAgICAgCkBA
IC0zOTMsNyArMzkzLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRv
blJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjp0cmFja1JlY3QoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjp0
cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCBwYWludGluZykK
IHsKICAgICBpZiAocGFpbnRpbmcgfHwgIWhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkKICAgICAgICAg
cmV0dXJuIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7CkBAIC00MzAsNyArNDMwLDcgQEAgSW50UmVj
dCBTY3JvbGxiYXJUaGVtZU1hYzo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29s
IHBhaW50aW5nKQogICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXIt
PnkoKSArIHN0YXJ0V2lkdGgsIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIHRvdGFs
V2lkdGgpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVNYWM6Om1pbmltdW1UaHVtYkxlbmd0aChT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZU1hYzo6bWluaW11bVRodW1i
TGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKGlzU2Ny
b2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQogICAgICAgICByZXR1cm4gW3Njcm9sbGJhck1h
cCgpLT5nZXQoc2Nyb2xsYmFyKS5nZXQoKSBrbm9iTWluTGVuZ3RoXTsKQEAgLTQzOCw3ICs0Mzgs
NyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVNYWM6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIq
IHNjcm9sbGJhcikKICAgICAgICAgcmV0dXJuIGNUaHVtYk1pbkxlbmd0aFtzY3JvbGxiYXItPmNv
bnRyb2xTaXplKCldOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJP
blRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBT
Y3JvbGxiYXJUaGVtZU1hYzo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIGlmIChldnQuYnV0dG9u
KCkgIT0gTGVmdEJ1dHRvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDQ3LDcgKzQ0Nyw3
IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFy
KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50CiAgICAgcmV0dXJuIGV2dC5hbHRLZXkoKTsKIH0K
IAotYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVhZE9mVGh1
bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK2Jvb2wgU2Ny
b2xsYmFyVGhlbWVNYWM6OnNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKIHsKICAgICBy
ZXR1cm4gZXZlbnQuYWx0S2V5KCk7CiB9CkBAIC00NzAsNyArNDcwLDcgQEAgaW50IFNjcm9sbGJh
clRoZW1lTWFjOjpzY3JvbGxiYXJQYXJ0VG9ISVByZXNzZWRTdGF0ZShTY3JvbGxiYXJQYXJ0IHBh
cnQpCiAgICAgfQogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVFbmFibGVkU3Rh
dGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVF
bmFibGVkU3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAo
aXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpCiAgICAgICAgIFtzY3JvbGxiYXJNYXAo
KS0+Z2V0KHNjcm9sbGJhcikuZ2V0KCkgc2V0RW5hYmxlZDpzY3JvbGxiYXItPmVuYWJsZWQoKV07
CkBAIC00OTksNyArNDk5LDcgQEAgc3RhdGljIHZvaWQgc2Nyb2xsYmFyUGFpbnRlclBhaW50KFNj
cm9sbGJhclBhaW50ZXIgc2Nyb2xsYmFyUGFpbnRlciwgYm9vbCBlbmFibGUKIH0KIAogI2lmICFQ
TEFURk9STShDSFJPTUlVTSkKLWJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50KFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRh
bWFnZVJlY3QpCitib29sIFNjcm9sbGJhclRoZW1lTWFjOjpwYWludChTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3Qm
IGRhbWFnZVJlY3QpCiB7CiAgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgp
KSB7CiAgICAgICAgIGZsb2F0IHZhbHVlID0gMDsKQEAgLTU3MCw3ICs1NzAsNyBAQCBib29sIFNj
cm9sbGJhclRoZW1lTWFjOjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjbwogICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCiAgICAgICAg
IHRyYWNrSW5mby5lbmFibGVTdGF0ZSA9IGtUaGVtZVRyYWNrRGlzYWJsZWQ7CiAgICAgZWxzZQot
ICAgICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVh
KCktPmlzQWN0aXZlKCkgPyBrVGhlbWVUcmFja0FjdGl2ZSA6IGtUaGVtZVRyYWNrSW5hY3RpdmU7
CisgICAgICAgIHRyYWNrSW5mby5lbmFibGVTdGF0ZSA9IHNjcm9sbGJhci0+aXNTY3JvbGxhYmxl
QXJlYUFjdGl2ZSgpID8ga1RoZW1lVHJhY2tBY3RpdmUgOiBrVGhlbWVUcmFja0luYWN0aXZlOwog
CiAgICAgaWYgKGhhc1RodW1iKHNjcm9sbGJhcikpCiAgICAgICAgIHRyYWNrSW5mby5hdHRyaWJ1
dGVzIHw9IGtUaGVtZVRyYWNrU2hvd1RodW1iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCmluZGV4IDVkMmJjM2VjMDg5NzhlMDM3
MzdmYmE3Mzk1YjhiOGNlNzQ2MGQ0NjQuLjZkZTkxY2NiODE5MjEwNDBjMDg0NzhjMWVlNTY3N2Rk
ZTQzNzQ5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xs
YmFyVGhlbWVNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9s
bGJhclRoZW1lTW9jay5jcHAKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgaW50IGNTY3JvbGxiYXJUaGlja25lc3NbXSA9IHsgMTUsIDExIH07CiAKLUludFJl
Y3QgU2Nyb2xsYmFyVGhlbWVNb2NrOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJv
b2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lTW9jazo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZnJhbWVS
ZWN0KCk7CiB9CkBAIC00MiwxMiArNDIsMTIgQEAgaW50IFNjcm9sbGJhclRoZW1lTW9jazo6c2Ny
b2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogICAgIHJl
dHVybiBjU2Nyb2xsYmFyVGhpY2tuZXNzW2NvbnRyb2xTaXplXTsKIH0KIAotdm9pZCBTY3JvbGxi
YXJUaGVtZU1vY2s6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRyYWNrUmVjdCkKK3ZvaWQg
U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHRyYWNrUmVjdCkKIHsKICAgICBjb250ZXh0LT5maWxsUmVjdCh0cmFja1JlY3QsIHNjcm9sbGJh
ci0+ZW5hYmxlZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IENvbG9yKDB4RkZFMEUwRTApLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1
bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgdGh1bWJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3QpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+ZW5hYmxl
ZCgpKQogICAgICAgICBjb250ZXh0LT5maWxsUmVjdCh0aHVtYlJlY3QsIENvbG9yOjpkYXJrR3Jh
eSwgQ29sb3JTcGFjZURldmljZVJHQik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaAppbmRleCBlMjU0ODQyMmEyOGY1ZTcyM2U0MzUzZjhm
NDU3NjUyNTNjYjY4NWJiLi42MzMzODQxYWI3OTZiOWRjMjMzZjNmNjNlYjgwMGFiZmE3YjBiYjA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1l
TW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVN
b2NrLmgKQEAgLTM2LDE1ICszNiwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xs
YmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcik7CiAK
IHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKSB7IHJl
dHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKSB7IHJl
dHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3Jv
bGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIHZpcnR1YWwgSW50UmVj
dCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRp
bmcqLyA9IGZhbHNlKSB7IHJldHVybiBJbnRSZWN0KCk7IH0KLSAgICB2aXJ0dWFsIEludFJlY3Qg
Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCAvKnBhaW50
aW5nKi8gPSBmYWxzZSkgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBJbnRSZWN0
IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1
YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJh
clBhcnQsIGJvb2wgLypwYWludGluZyovID0gZmFsc2UpIHsgcmV0dXJuIEludFJlY3QoKTsgfQor
ICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIFNjcm9sbGJhclBhcnQsIGJvb2wgLypwYWludGluZyovID0gZmFsc2UpIHsgcmV0dXJuIElu
dFJlY3QoKTsgfQorICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBw
YWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJ
bnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNr
QmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0
IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKICAgICAKIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIGlzTW9ja1RoZW1lKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmNwcAppbmRl
eCBlMzI0M2VjZmE4OTc5YjlhNjgxZTE1OWJkZWU5YTliMTU5YzY3NDNjLi5kNGI1OGIxYjBlNWFm
MTcwZjk2ZWY4MzY0YjY5YjQ4NGEzNjIyMjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHN0YXRpYyBT
Y3JvbGxiYXJQYXJ0IHNjcm9sbGJhclBhcnQoY29uc3QgUVN0eWxlOjpTdWJDb250cm9sJiBzYykK
ICAgICByZXR1cm4gTm9QYXJ0OwogfQogCi1zdGF0aWMgUVN0eWxlT3B0aW9uU2xpZGVyKiBzdHls
ZU9wdGlvblNsaWRlcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgUVdpZGdldCogd2lkZ2V0ID0gMCkK
K3N0YXRpYyBRU3R5bGVPcHRpb25TbGlkZXIqIHN0eWxlT3B0aW9uU2xpZGVyKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFFXaWRnZXQqIHdpZGdldCA9IDApCiB7CiAgICAgc3RhdGlj
IFFTdHlsZU9wdGlvblNsaWRlciBvcHQ7CiAgICAgaWYgKHdpZGdldCkKQEAgLTE1NSw3ICsxNTUs
NyBAQCBzdGF0aWMgUVN0eWxlT3B0aW9uU2xpZGVyKiBzdHlsZU9wdGlvblNsaWRlcihTY3JvbGxi
YXIqIHNjcm9sbGJhciwgUVdpZGdldCogd2lkZwogICAgIHJldHVybiAmb3B0OwogfQogCi1ib29s
IFNjcm9sbGJhclRoZW1lUXQ6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0Nv
bnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wg
U2Nyb2xsYmFyVGhlbWVRdDo6cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwg
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJl
Y3QpCiB7CiAgICAgaWYgKGdyYXBoaWNzQ29udGV4dC0+dXBkYXRpbmdDb250cm9sVGludHMoKSkg
ewogICAgICAgIHNjcm9sbGJhci0+aW52YWxpZGF0ZVJlY3QoZGFtYWdlUmVjdCk7CkBAIC0xOTMs
NyArMTkzLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZVF0OjpwYWludChTY3JvbGxiYXIqIHNjcm9s
bGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnQKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZVF0OjpoaXRUZXN0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK1Njcm9sbGJhclBhcnQgU2Ny
b2xsYmFyVGhlbWVRdDo6aGl0VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICBRU3R5bGVPcHRpb25TbGlkZXIq
IG9wdCA9IHN0eWxlT3B0aW9uU2xpZGVyKHNjcm9sbGJhcik7CiAgICAgY29uc3QgUVBvaW50IHBv
cyA9IHNjcm9sbGJhci0+Y29udmVydEZyb21Db250YWluaW5nV2luZG93KGV2dC5wb3NpdGlvbigp
KTsKQEAgLTIwMiwxMyArMjAyLDEzIEBAIFNjcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVRdDo6
aGl0VGVzdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzCiAgICAgcmV0
dXJuIHNjcm9sbGJhclBhcnQoc2MpOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lUXQ6OnNob3Vs
ZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQp
Citib29sIFNjcm9sbGJhclRoZW1lUXQ6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICAvLyBNaWRk
bGUgY2xpY2sgY2VudGVycyBzbGlkZXIgdGh1bWIgKGlmIHN1cHBvcnRlZCkuCiAgICAgcmV0dXJu
IHN0eWxlKCktPnN0eWxlSGludChRU3R5bGU6OlNIX1Njcm9sbEJhcl9NaWRkbGVDbGlja0Fic29s
dXRlUG9zaXRpb24pICYmIGV2dC5idXR0b24oKSA9PSBNaWRkbGVCdXR0b247CiB9CiAKLXZvaWQg
U2Nyb2xsYmFyVGhlbWVRdDo6aW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNj
cm9sbGJhclBhcnQpCit2b2lkIFNjcm9sbGJhclRoZW1lUXQ6OmludmFsaWRhdGVQYXJ0KFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQpCiB7CiAgICAgLy8gRklY
TUU6IERvIG1vcmUgcHJlY2lzZSBpbnZhbGlkYXRpb24uCiAgICAgc2Nyb2xsYmFyLT5pbnZhbGlk
YXRlKCk7CkBAIC0yMjQsNyArMjI0LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lUXQ6OnNjcm9sbGJh
clRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKICAgICByZXR1cm4g
c3R5bGUoKS0+cGl4ZWxNZXRyaWMoUVN0eWxlOjpQTV9TY3JvbGxCYXJFeHRlbnQsICZvLCAwKTsK
IH0KIAotaW50IFNjcm9sbGJhclRoZW1lUXQ6OnRodW1iUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVRdDo6dGh1bWJQb3NpdGlvbihTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChzY3JvbGxiYXItPmVuYWJsZWQoKSkgewog
ICAgICAgICBmbG9hdCBwb3MgPSAoZmxvYXQpc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCkgKiAodHJh
Y2tMZW5ndGgoc2Nyb2xsYmFyKSAtIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikpIC8gc2Nyb2xsYmFy
LT5tYXhpbXVtKCk7CkBAIC0yMzMsMjEgKzIzMywyMSBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVRdDo6
dGh1bWJQb3NpdGlvbihTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICByZXR1cm4gMDsKIH0KIAot
aW50IFNjcm9sbGJhclRoZW1lUXQ6OnRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQor
aW50IFNjcm9sbGJhclRoZW1lUXQ6OnRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIpCiB7CiAgICAgUVN0eWxlT3B0aW9uU2xpZGVyKiBvcHQgPSBzdHlsZU9wdGlvblNs
aWRlcihzY3JvbGxiYXIpOwogICAgIEludFJlY3QgdGh1bWIgPSBzdHlsZSgpLT5zdWJDb250cm9s
UmVjdChRU3R5bGU6OkNDX1Njcm9sbEJhciwgb3B0LCBRU3R5bGU6OlNDX1Njcm9sbEJhclNsaWRl
ciwgMCk7CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFs
U2Nyb2xsYmFyID8gdGh1bWIud2lkdGgoKSA6IHRodW1iLmhlaWdodCgpOwogfQogCi1pbnQgU2Ny
b2xsYmFyVGhlbWVRdDo6dHJhY2tQb3NpdGlvbihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBT
Y3JvbGxiYXJUaGVtZVF0Ojp0cmFja1Bvc2l0aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIpCiB7CiAgICAgUVN0eWxlT3B0aW9uU2xpZGVyKiBvcHQgPSBzdHlsZU9wdGlvblNsaWRl
cihzY3JvbGxiYXIpOwogICAgIEludFJlY3QgdHJhY2sgPSBzdHlsZSgpLT5zdWJDb250cm9sUmVj
dChRU3R5bGU6OkNDX1Njcm9sbEJhciwgb3B0LCBRU3R5bGU6OlNDX1Njcm9sbEJhckdyb292ZSwg
MCk7CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Ny
b2xsYmFyID8gdHJhY2sueCgpIC0gc2Nyb2xsYmFyLT54KCkgOiB0cmFjay55KCkgLSBzY3JvbGxi
YXItPnkoKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lUXQ6OnRyYWNrTGVuZ3RoKFNjcm9sbGJh
ciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lUXQ6OnRyYWNrTGVuZ3RoKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgUVN0eWxlT3B0aW9uU2xpZGVyKiBvcHQg
PSBzdHlsZU9wdGlvblNsaWRlcihzY3JvbGxiYXIpOwogICAgIEludFJlY3QgdHJhY2sgPSBzdHls
ZSgpLT5zdWJDb250cm9sUmVjdChRU3R5bGU6OkNDX1Njcm9sbEJhciwgb3B0LCBRU3R5bGU6OlND
X1Njcm9sbEJhckdyb292ZSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9TY3JvbGxiYXJUaGVtZVF0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3Jv
bGxiYXJUaGVtZVF0LmgKaW5kZXggY2Y0ODgyZGEyMDNiYmYwZmI3Y2M2OWU3YzNlMWMxZmZkZDgx
ZjVlYi4uMDMzN2JmODBjY2Y2NDZkMThlOGYwN2M0ZmU1YWNiYTNhYTk5NTIyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuaApAQCAtNDAsMTkgKzQw
LDE5IEBAIGNsYXNzIFNjcm9sbGJhclRoZW1lUXQgOiBwdWJsaWMgU2Nyb2xsYmFyVGhlbWUgewog
cHVibGljOgogICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lUXQoKTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBwYWludChTY3JvbGxiYXIqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0KTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOwogCi0gICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0
IGhpdFRlc3QoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmly
dHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRo
dW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQoU2Ny
b2xsYmFyKiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCk7CiAKLSAgICB2aXJ0dWFsIGlu
dCB0aHVtYlBvc2l0aW9uKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgaW50IHRodW1iTGVuZ3Ro
KFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKik7
Ci0gICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBp
bnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50
IHRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdHJh
Y2tQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IHRyYWNr
TGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKICAgICB2aXJ0dWFsIGludCBzY3JvbGxi
YXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2Fm
YXJpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFy
aS5jcHAKaW5kZXggMzQzYmJiMjgwZWQ2YWY4NDhmNTFjYzAwZWQ5OGYzMWY3ZTE3ZTI0OC4uMWNj
NTM4NWUxODdhMjJlYWYxYjA1NWUzNGJlMGZmNjQzODkyOWIzZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuY3BwCkBAIC0xMDQs
MTQgKzEwNCwxNCBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnNjcm9sbGJhclRoaWNrbmVz
cyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkKICAgICByZXR1cm4gY1Njcm9sbGJh
clRoaWNrbmVzc1tjb250cm9sU2l6ZV07CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6
Omhhc0J1dHRvbnMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lU2Fm
YXJpOjpoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAg
cmV0dXJuIHNjcm9sbGJhci0+ZW5hYmxlZCgpICYmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkg
PT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IAogICAgICAgICAgICAgIHNjcm9sbGJhci0+d2lkdGgo
KSA6IAogICAgICAgICAgICAgIHNjcm9sbGJhci0+aGVpZ2h0KCkpID49IDIgKiAoY1JlYWxCdXR0
b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSAtIGNCdXR0b25IaXRJbnNldFtzY3Jv
bGxiYXItPmNvbnRyb2xTaXplKCldKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6
aGFzVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lU2FmYXJp
OjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVy
biBzY3JvbGxiYXItPmVuYWJsZWQoKSAmJiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhv
cml6b250YWxTY3JvbGxiYXIgPyAKICAgICAgICAgICAgICBzY3JvbGxiYXItPndpZHRoKCkgOiAK
QEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgSW50UmVjdCBidXR0b25SZXBhaW50UmVjdChjb25z
dCBJbnRSZWN0JiBidXR0b25SZWN0LCBTY3JvbGxiYXJPcmllbnRhdGlvbgogICAgIHJldHVybiBw
YWludFJlY3Q7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmJhY2tCdXR0b25S
ZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRp
bmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRp
bmcpCiB7CiAgICAgSW50UmVjdCByZXN1bHQ7CiAKQEAgLTE1Miw3ICsxNTIsNyBAQCBJbnRSZWN0
IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgU2Nyb2xsYmFyUGFydAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUludFJlY3QgU2Nyb2xs
YmFyVGhlbWVTYWZhcmk6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBT
Y3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1l
U2FmYXJpOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCiB7CiAgICAgSW50UmVjdCByZXN1
bHQ7CiAgICAgCkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGljIEludFJlY3QgdHJhY2tSZXBhaW50
UmVjdChjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QsIFNjcm9sbGJhck9yaWVudGF0aW9uIG8KICAg
ICByZXR1cm4gcGFpbnRSZWN0OwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjp0
cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcpCitJbnRSZWN0IFNj
cm9sbGJhclRoZW1lU2FmYXJpOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgYm9vbCBwYWludGluZykKIHsKICAgICBpZiAocGFpbnRpbmcgfHwgIWhhc0J1dHRvbnMo
c2Nyb2xsYmFyKSkKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7CkBAIC0x
OTMsMzYgKzE5MywzNiBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjp0cmFja1JlY3Qo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcpCiAgICAgcmV0dXJuIEludFJlY3Qo
c2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpICsgY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXIt
PmNvbnRyb2xTaXplKCldLCB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSAyICogY0J1
dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldKTsKIH0KIAotaW50IFNjcm9sbGJh
clRoZW1lU2FmYXJpOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitp
bnQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiBjVGh1bWJNaW5MZW5ndGhbc2Nyb2xs
YmFyLT5jb250cm9sU2l6ZSgpXTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6c2hv
dWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2
dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICBy
ZXR1cm4gZXZ0LnNoaWZ0S2V5KCkgJiYgZXZ0LmJ1dHRvbigpID09IExlZnRCdXR0b247CiB9CiAK
LXZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50
UmVjdCYgdHJhY2tSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUcmFja0Jh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclRoZW1l
Q2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRyYWNrUmVjdCkKIHsKICAgICBpZiAo
IVNhZmFyaVRoZW1lTGlicmFyeSgpKQogICAgICAgICByZXR1cm47CiAgICAgTlNDb250cm9sU2l6
ZSBzaXplID0gc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpID09IFNtYWxsU2Nyb2xsYmFyID8gTlNT
bWFsbENvbnRyb2xTaXplIDogTlNSZWd1bGFyQ29udHJvbFNpemU7CiAgICAgVGhlbWVDb250cm9s
U3RhdGUgc3RhdGUgPSAwOwotICAgIGlmIChzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlz
QWN0aXZlKCkpCisgICAgaWYgKHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQog
ICAgICAgICBzdGF0ZSB8PSBBY3RpdmVTdGF0ZTsKICAgICBpZiAoaGFzQnV0dG9ucyhzY3JvbGxi
YXIpKQogICAgICAgICBzdGF0ZSB8PSBFbmFibGVkU3RhdGU7CiAgICAgcGFpbnRUaGVtZVBhcnQo
c2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gVlNjcm9sbFRy
YWNrUGFydCA6IEhTY3JvbGxUcmFja1BhcnQsIGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCksIHRyYWNrUmVjdCwgc2l6ZSwgc3RhdGUpOyAKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBidXR0b25SZWN0LCBTY3JvbGxiYXJQ
YXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbihHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgYnV0dG9uUmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAg
IGlmICghU2FmYXJpVGhlbWVMaWJyYXJ5KCkpCiAgICAgICAgIHJldHVybjsKICAgICBOU0NvbnRy
b2xTaXplIHNpemUgPSBzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkgPT0gU21hbGxTY3JvbGxiYXIg
PyBOU1NtYWxsQ29udHJvbFNpemUgOiBOU1JlZ3VsYXJDb250cm9sU2l6ZTsKICAgICBUaGVtZUNv
bnRyb2xTdGF0ZSBzdGF0ZSA9IDA7Ci0gICAgaWYgKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEo
KS0+aXNBY3RpdmUoKSkKKyAgICBpZiAoc2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZl
KCkpCiAgICAgICAgIHN0YXRlIHw9IEFjdGl2ZVN0YXRlOwogICAgIGlmIChoYXNCdXR0b25zKHNj
cm9sbGJhcikpCiAgICAgICAgIHN0YXRlIHw9IEVuYWJsZWRTdGF0ZTsKQEAgLTIzNiwxMyArMjM2
LDEzIEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29u
dGV4dCogZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxiCiAgICAgICAgICAgICAgICAgICAgICAgIGJ1
dHRvblJlY3QsIHNpemUsIHN0YXRlKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6
cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVT
YWZhcmk6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKIHsK
ICAgICBpZiAoIVNhZmFyaVRoZW1lTGlicmFyeSgpKQogICAgICAgICByZXR1cm47CiAgICAgTlND
b250cm9sU2l6ZSBzaXplID0gc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpID09IFNtYWxsU2Nyb2xs
YmFyID8gTlNTbWFsbENvbnRyb2xTaXplIDogTlNSZWd1bGFyQ29udHJvbFNpemU7CiAgICAgVGhl
bWVDb250cm9sU3RhdGUgc3RhdGUgPSAwOwotICAgIGlmIChzY3JvbGxiYXItPnNjcm9sbGFibGVB
cmVhKCktPmlzQWN0aXZlKCkpCisgICAgaWYgKHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFj
dGl2ZSgpKQogICAgICAgICBzdGF0ZSB8PSBBY3RpdmVTdGF0ZTsKICAgICBpZiAoaGFzVGh1bWIo
c2Nyb2xsYmFyKSkKICAgICAgICAgc3RhdGUgfD0gRW5hYmxlZFN0YXRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuaAppbmRleCBmMDM5
Mzc5ZWE0NDcwOGU4YjViNzVmOTYwNTUzMmZlMTFkNjI2NTkyLi5mNDI3YjE5MGZkNjc2NjUyMTU2
NzU2NmNiNmNiYzRkZmU0M2Q5OTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuaApAQCAtNDEsMjAgKzQxLDIwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxi
YXIqKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7CisgICAgdmlydHVh
bCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGJv
b2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1YWwgSW50UmVj
dCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5n
ID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxi
YXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwg
SW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAg
ICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBT
Y3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVj
dCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQs
IGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CiAKLSAgICB2aXJ0
dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBpbnQg
bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAgICAgCi0gICAgdmly
dHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAotICAgIHZpcnR1
YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIq
LCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNz
Q29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBj
b25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdy
YXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCos
IGNvbnN0IEludFJlY3QmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwCmluZGV4IGQzNjM0MTA2ODQ4N2ZmMWI3ODY5NzY4
ZTlkNWY2YjJmNDg5ODFhYTUuLjU2NDQyOTdkN2YyNzBjNTBjN2EyOGVmM2IxZTI0YWNmMWQxMjc5
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVt
ZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1l
V2luLmNwcApAQCAtMTMwLDEyICsxMzAsMTIgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6aW52
YWxpZGF0ZU9uTW91c2VFbnRlckV4aXQoKQogICAgIHJldHVybiBydW5uaW5nVmlzdGE7CiB9CiAK
LWJvb2wgU2Nyb2xsYmFyVGhlbWVXaW46Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQor
Ym9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICByZXR1cm4gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+IDA7CiB9CiAK
LUludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1l
V2luOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3Jv
bGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAgICAgLy8gV2luZG93cyBqdXN0IGhhcyBzaW5nbGUg
YXJyb3dzLgogICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0b25FbmRQYXJ0KQpAQCAtMTU0LDcgKzE1
NCw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhCiAgICAgICAgICAgICAgICAgICAgdGhpY2tu
ZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIDwgMiAqIHRoaWNrbmVzcyA/IHNjcm9sbGJhci0+aGVp
Z2h0KCkgLyAyIDogdGhpY2tuZXNzKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6
Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFy
dCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OmZvcndhcmRCdXR0b25SZWN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkK
IHsKICAgICAvLyBXaW5kb3dzIGp1c3QgaGFzIHNpbmdsZSBhcnJvd3MuCiAgICAgaWYgKHBhcnQg
PT0gRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCkKQEAgLTE3NSw3ICsxNzUsNyBAQCBJbnRSZWN0IFNj
cm9sbGJhclRoZW1lV2luOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwg
U2Nyb2xsYmFyUGFydAogICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxi
YXItPnkoKSArIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSBoLCB0aGlja25lc3MsIGgpOwogfQogCi1J
bnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCkKIHsKICAgICBpbnQgdGhpY2tuZXNzID0gc2Nyb2xs
YmFyVGhpY2tuZXNzKCk7CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jp
em9udGFsU2Nyb2xsYmFyKSB7CkBAIC0xODgsMTIgKzE4OCwxMiBAQCBJbnRSZWN0IFNjcm9sbGJh
clRoZW1lV2luOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCiAgICAgcmV0
dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpICsgdGhpY2tuZXNzLCB0
aGlja25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSAyICogdGhpY2tuZXNzKTsKIH0KIAotYm9v
bCBTY3JvbGxiYXJUaGVtZVdpbjo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVXaW46OnNob3Vs
ZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4gZXZ0LnNoaWZ0S2V5KCkgJiYgZXZ0LmJ1dHRvbigp
ID09IExlZnRCdXR0b247CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBC
YWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9EcmFn
T3JpZ2luKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZ0KQogewogICAgIC8vIEZpbmQgdGhlIHJlY3Qgd2l0aGluIHdoaWNoIHdlIHNo
b3VsZG4ndCBzbmFwLCBieSBleHBhbmRpbmcgdGhlIHRyYWNrIHJlY3QKICAgICAvLyBpbiBib3Ro
IGRpbWVuc2lvbnMuCkBAIC0yMTEsMTQgKzIxMSwxNCBAQCBib29sIFNjcm9sbGJhclRoZW1lV2lu
OjpzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3Qg
UAogICAgIHJldHVybiAhcmVjdC5jb250YWlucyhtb3VzZVBvc2l0aW9uKTsKIH0KIAotdm9pZCBT
Y3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQg
U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsKICAgICAvLyBKdXN0IGFzc3VtZSBhIGZvcndhcmQgdHJhY2sgcGFydC4gIFdlIG9u
bHkgcGFpbnQgdGhlIHRyYWNrIGFzIGEgc2luZ2xlIHBpZWNlIHdoZW4gdGhlcmUgaXMgbm8gdGh1
bWIuCiAgICAgaWYgKCFoYXNUaHVtYihzY3JvbGxiYXIpKQogICAgICAgICBwYWludFRyYWNrUGll
Y2UoY29udGV4dCwgc2Nyb2xsYmFyLCByZWN0LCBGb3J3YXJkVHJhY2tQYXJ0KTsKIH0KIAotdm9p
ZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJh
clBhcnQgcGFydFR5cGUpCit2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNrUGllY2Uo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQogewogICAgIGNo
ZWNrQW5kSW5pdFNjcm9sbGJhclRoZW1lKCk7CiAKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFNj
cm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBTY3JvbGxiYXIqIHNjcgogI2VuZGlmCiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBh
aW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFy
VGhlbWVXaW46OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFy
dCBwYXJ0KQogewogICAgIGNoZWNrQW5kSW5pdFNjcm9sbGJhclRoZW1lKCk7CiAKQEAgLTMzOSw3
ICszMzksNyBAQCBzdGF0aWMgSW50UmVjdCBncmlwcGVyUmVjdChpbnQgdGhpY2tuZXNzLCBjb25z
dCBJbnRSZWN0JiB0aHVtYlJlY3QpCiAgICAgICAgICAgICAgICAgICAgZ3JpcHBlclRoaWNrbmVz
cywgZ3JpcHBlclRoaWNrbmVzcyk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50R3JpcHBlcihTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgSERDIGhkYywgY29uc3QgSW50UmVjdCYgcmVjdCkKK3N0YXRpYyB2
b2lkIHBhaW50R3JpcHBlcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBIREMgaGRj
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICghc2Nyb2xsYmFyVGhlbWUpCiAgICAg
ICAgIHJldHVybjsgIC8vIENsYXNzaWMgbG9vayBoYXMgbm8gZ3JpcHBlci4KQEAgLTM1OCw3ICsz
NTgsNyBAQCBzdGF0aWMgdm9pZCBwYWludEdyaXBwZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEhE
QyBoZGMsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgRHJhd1RoZW1lQmFja2dyb3VuZChzY3Jv
bGxiYXJUaGVtZSwgaGRjLCBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNj
cm9sbGJhciA/IFNQX0dSSVBQRVJIT1IgOiBTUF9HUklQUEVSVkVSVCwgc3RhdGUsICZ0aGVtZVJl
Y3QsIDApOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRodW1iKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJl
Y3QpCit2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsKICAgICBjaGVja0FuZEluaXRTY3JvbGxiYXJUaGVtZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oCmluZGV4IGNkMmYxNzZk
ZmRjOTczODJjMzViYjc3M2Y5YjFlOGRhZDIxMjc2YjYuLjg3MDI0MGMxNjU1OGNmMGY2MjU3NDE5
NmVlYjY5YWFhODA2YTdhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TY3JvbGxiYXJUaGVtZVdpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9T
Y3JvbGxiYXJUaGVtZVdpbi5oCkBAIC00MiwyMCArNDIsMjAgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBpbnZhbGlkYXRlT25Nb3VzZUVudGVyRXhpdCgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKikgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
QnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1YWwg
SW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBh
aW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChT
Y3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZp
cnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZhbHNl
KTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwg
SW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJh
clBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNr
UmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CiAKLSAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdP
cmlnaW4oU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVh
bCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0Ry
YWdPcmlnaW4oU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRl
eHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50
VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jiwg
U2Nyb2xsYmFyUGFydCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25z
dCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAg
IHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50
UmVjdCYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gv
U2Nyb2xsYmFyVGhlbWVXeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxi
YXJUaGVtZVd4LmNwcAppbmRleCBjOTI0OTc4YTUwNWFjMzFmMTQwNTFlMzAxODMzMDY0MjUxM2M0
YTUxLi5iYWRmMzE1NTQwNWE2YTUxMzY2MjMyNWI5MjM1OWRjODEzYTk1MjQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmNwcApAQCAtNzEsMTkg
KzcxLDE5IEBAIGludCBTY3JvbGxiYXJUaGVtZVd4OjpzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xs
YmFyQ29udHJvbFNpemUgc2l6ZSkKICAgICByZXR1cm4gdGhpY2tuZXNzOwogfQogCi1ib29sIFNj
cm9sbGJhclRoZW1lV3g6Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3Jv
bGxiYXJUaGVtZVd4OjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQog
ewogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGp1c3QgY2FsbGVkIGFzIGEgcGFpbnQtdGltZSBvcHRp
bWl6YXRpb24gdG8gc2VlIGlmCiAgICAgLy8gcGFpbnRpbmcgdGhlIHRodW1iIGNhbiBiZSBza2lw
cGVkLiAgV2UgZG9uJ3QgaGF2ZSB0byBiZSBleGFjdCBoZXJlLgogICAgIHJldHVybiB0aHVtYkxl
bmd0aChzY3JvbGxiYXIpID4gMDsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lV3g6Om1pbmltdW1U
aHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVd4Ojpt
aW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAg
ICByZXR1cm4gMjA7CiB9CiAKLUludFNpemUgU2Nyb2xsYmFyVGhlbWVXeDo6YnV0dG9uU2l6ZShT
Y3JvbGxiYXIqKSAKK0ludFNpemUgU2Nyb2xsYmFyVGhlbWVXeDo6YnV0dG9uU2l6ZShTY3JvbGxi
YXJUaGVtZUNsaWVudCopIAogewogI2lmZGVmIF9fV1hNQUNfXwogICAgIHJldHVybiBJbnRTaXpl
KDIwLDIwKTsKQEAgLTkyLDcgKzkyLDcgQEAgSW50U2l6ZSBTY3JvbGxiYXJUaGVtZVd4OjpidXR0
b25TaXplKFNjcm9sbGJhciopCiAjZW5kaWYKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVd4Ojpz
cGxpdFRyYWNrKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFp
bmVkVHJhY2tSZWN0LCBJbnRSZWN0JiBiZWZvcmVUaHVtYlJlY3QsIEludFJlY3QmIHRodW1iUmVj
dCwgSW50UmVjdCYgYWZ0ZXJUaHVtYlJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lV3g6OnNwbGl0
VHJhY2soU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdW5j
b25zdHJhaW5lZFRyYWNrUmVjdCwgSW50UmVjdCYgYmVmb3JlVGh1bWJSZWN0LCBJbnRSZWN0JiB0
aHVtYlJlY3QsIEludFJlY3QmIGFmdGVyVGh1bWJSZWN0KQogewogICAgIFNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlOjpzcGxpdFRyYWNrKHNjcm9sbGJhciwgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCwg
YmVmb3JlVGh1bWJSZWN0LCB0aHVtYlJlY3QsIGFmdGVyVGh1bWJSZWN0KTsKICNpZmRlZiBfX1dY
TUFDX18KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lV3g6OnNwbGl0VHJh
Y2soU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYQogI2VuZGlm
CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFy
VGhlbWVXeDo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwg
U2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIC8vIEZJWE1FOiBIYW5kbGluZyB0aGlz
IGNhc2UgaXMgbmVlZGVkIHdoZW4gdGhlcmUgYXJlIHR3byBzZXRzIG9mIGFycm93IGJ1dHRvbnMK
ICAgICAvLyBvbiBNYWMsIG9uZSBhdCB0aGUgdG9wIGFuZCBvbmUgYXQgdGhlIGJvdHRvbS4KQEAg
LTEzMCw3ICsxMzAsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OmJhY2tCdXR0b25SZWN0
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcgogICAgIHJldHVybiBJbnRS
ZWN0KHgsIHksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Ny
b2xsYmFyVGhlbWVXeDo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNj
cm9sbGJhclBhcnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6Zm9yd2Fy
ZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFy
dCBwYXJ0LCBib29sKQogewogICAgIC8vIEZJWE1FOiBIYW5kbGluZyB0aGlzIGNhc2UgaXMgbmVl
ZGVkIHdoZW4gdGhlcmUgYXJlIHR3byBzZXRzIG9mIGFycm93IGJ1dHRvbnMKICAgICAvLyBvbiBN
YWMsIG9uZSBhdCB0aGUgdG9wIGFuZCBvbmUgYXQgdGhlIGJvdHRvbS4KQEAgLTE1NSw3ICsxNTUs
NyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgcmV0dXJuIEludFJlY3QoeCwgeSwgc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4
Ojp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJh
clRoZW1lV3g6OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29s
KQogewogICAgIEludFNpemUgYnMgPSBidXR0b25TaXplKHNjcm9sbGJhcik7CiAgICAgaW50IHRy
YWNrU3RhcnQgPSAwOwpAQCAtMTc5LDExICsxNzksMTEgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZVd4Ojp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCiAgICAgcmV0dXJuIElu
dFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpICsgdHJhY2tTdGFydCwgdGhpY2tu
ZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0gMiAqIGJzLmhlaWdodCgpKTsKIH0KIAotYm9vbCBT
Y3JvbGxiYXJUaGVtZVd4OjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZVd4
OjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgd3hPcmllbnRhdGlvbiBvcmll
bnRhdGlvbiA9IChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJh
cikgPyB3eEhPUklaT05UQUwgOiB3eFZFUlRJQ0FMOwogICAgIGludCBmbGFncyA9IDA7Ci0gICAg
aWYgKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSkKKyAgICBpZiAoc2Ny
b2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAgICAgICAgIGZsYWdzIHw9IHd4Q09O
VFJPTF9GT0NVU0VEOwogICAgIAogICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmgKaW5kZXggNzVhYjE3
NWEzYmE2MDRmY2Q3OTVhZDJlYTQ1ZWRmY2Y1ODNlZTU1OC4uMzcyYWFmOTY2MmY3NDVkNGVlMDc0
N2VkZjVjMTFmOWZjNWFkODk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d3gvU2Nyb2xsYmFyVGhlbWVXeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3d4L1Nj
cm9sbGJhclRoZW1lV3guaApAQCAtMzUsMjEgKzM1LDIxIEBAIGNsYXNzIFNjcm9sbGJhclRoZW1l
V3ggOiBwdWJsaWMgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUgewogcHVibGljOgogICAgIHZpcnR1
YWwgflNjcm9sbGJhclRoZW1lV3goKTsKICAgICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25l
c3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xsYmFyKTsKLSAgICB2aXJ0dWFs
IGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYp
OworICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNz
Q29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKICAgICAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFs
IGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgdmlydHVh
bCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25z
KFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9v
bCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAgdmlydHVhbCBJbnRTaXpl
IGJ1dHRvblNpemUoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9u
UmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwot
ICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxi
YXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFj
a1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIElu
dFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0
LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0
dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRp
bmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3Bs
aXRUcmFjayhTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiB0cmFjaywgSW50UmVjdCYgc3RhcnRU
cmFjaywgSW50UmVjdCYgdGh1bWIsIEludFJlY3QmIGVuZFRyYWNrKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc3BsaXRUcmFjayhTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmIHRyYWNr
LCBJbnRSZWN0JiBzdGFydFRyYWNrLCBJbnRSZWN0JiB0aHVtYiwgSW50UmVjdCYgZW5kVHJhY2sp
OwogICAgIAotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsK
KyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
KTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaApp
bmRleCA4MTBjOThmZjM2NjhhYjkxY2RlOWMzNTcxOGQ2ZjA0YjJmNzQ2NzFiLi43ZmUyZmFjOGI4
ZDQ5NzU0ZDhlYWIyM2Q0MDViMTYyYmUzM2RjN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhci5oCkBAIC04NSw3ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgSGFz
aE1hcDx1bnNpZ25lZCwgUmVuZGVyU2Nyb2xsYmFyUGFydCo+IG1fcGFydHM7CiB9OwogCi1pbmxp
bmUgUmVuZGVyU2Nyb2xsYmFyKiB0b1JlbmRlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJh
cikKK2lubGluZSBSZW5kZXJTY3JvbGxiYXIqIHRvUmVuZGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgQVNTRVJUKCFzY3JvbGxiYXIgfHwgc2Nyb2xs
YmFyLT5pc0N1c3RvbVNjcm9sbGJhcigpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVy
U2Nyb2xsYmFyKj4oc2Nyb2xsYmFyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCmluZGV4IDg3MzA5ZDQ0ZTVhYTQ1MjY5NzlhZmViZTUx
Mjc4YjRlNDZhNWU5MTcuLjQ0ZTJhYTYzMWRjMjgxNTAxNzRiYzIyNTIzMGU4YjZhYWI3ZDBkMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVt
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1l
LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJl
bmRlclNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyU2Nyb2xsYmFyLmgiCisjaW5j
bHVkZSAiU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDcgKzM3LDcgQEAgUmVuZGVyU2Nyb2xs
YmFyVGhlbWUqIFJlbmRlclNjcm9sbGJhclRoZW1lOjpyZW5kZXJTY3JvbGxiYXJUaGVtZSgpCiAg
ICAgcmV0dXJuICZ0aGVtZTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9u
U2l6ZXNBbG9uZ1RyYWNrQXhpcyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXpl
LCBpbnQmIGFmdGVyU2l6ZSkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVz
QWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgaW50JiBiZWZv
cmVTaXplLCBpbnQmIGFmdGVyU2l6ZSkKIHsKICAgICBJbnRSZWN0IGZpcnN0QnV0dG9uID0gYmFj
a0J1dHRvblJlY3Qoc2Nyb2xsYmFyLCBCYWNrQnV0dG9uU3RhcnRQYXJ0KTsKICAgICBJbnRSZWN0
IHNlY29uZEJ1dHRvbiA9IGZvcndhcmRCdXR0b25SZWN0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRv
blN0YXJ0UGFydCk7CkBAIC01MSw3ICs1Miw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6
OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGludCYKICAg
ICB9CiB9CiAKLWJvb2wgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Omhhc0J1dHRvbnMoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIpCitib29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaW50IHN0YXJ0U2l6ZTsKICAgICBp
bnQgZW5kU2l6ZTsKQEAgLTU5LDI3ICs2MCwyNyBAQCBib29sIFJlbmRlclNjcm9sbGJhclRoZW1l
OjpoYXNCdXR0b25zKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiAoc3RhcnRTaXpl
ICsgZW5kU2l6ZSkgPD0gKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Ny
b2xsYmFyID8gc2Nyb2xsYmFyLT53aWR0aCgpIDogc2Nyb2xsYmFyLT5oZWlnaHQoKSk7CiB9CiAK
LWJvb2wgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFy
KQorYm9vbCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gdHJhY2tMZW5ndGgoc2Nyb2xsYmFyKSAtIHRo
dW1iTGVuZ3RoKHNjcm9sbGJhcikgPj0gMDsKIH0KIAotaW50IFJlbmRlclNjcm9sbGJhclRoZW1l
OjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgUmVuZGVyU2Ny
b2xsYmFyVGhlbWU6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyKQogewogICAgIHJldHVybiB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5taW5p
bXVtVGh1bWJMZW5ndGgoKTsKIH0KIAotSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUs
IGJvb2wpCitJbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjpiYWNrQnV0dG9uUmVjdChTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29s
KQogewogICAgIHJldHVybiB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5idXR0b25SZWN0
KHBhcnRUeXBlKTsKIH0KIAotSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Zm9yd2FyZEJ1
dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGJv
b2wpCitJbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjpmb3J3YXJkQnV0dG9uUmVjdChTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29s
KQogewogICAgIHJldHVybiB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5idXR0b25SZWN0
KHBhcnRUeXBlKTsKIH0KIAotSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6dHJhY2tSZWN0
KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVt
ZTo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAg
ICAgaWYgKCFoYXNCdXR0b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHJldHVybiBzY3JvbGxiYXIt
PmZyYW1lUmVjdCgpOwpAQCAtOTEsNyArOTIsNyBAQCBJbnRSZWN0IFJlbmRlclNjcm9sbGJhclRo
ZW1lOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCiAgICAgcmV0dXJuIHRv
UmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnRyYWNrUmVjdChzdGFydExlbmd0aCwgZW5kTGVu
Z3RoKTsKIH0KIAotSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Y29uc3RyYWluVHJhY2tS
ZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCkKK0ludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVjdFRvVHJh
Y2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
cmVjdCkKIHsgCiAgICAgSW50UmVjdCBiYWNrUmVjdCA9IHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9s
bGJhciktPnRyYWNrUGllY2VSZWN0V2l0aE1hcmdpbnMoQmFja1RyYWNrUGFydCwgcmVjdCk7CiAg
ICAgSW50UmVjdCBmb3J3YXJkUmVjdCA9IHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnRy
YWNrUGllY2VSZWN0V2l0aE1hcmdpbnMoRm9yd2FyZFRyYWNrUGFydCwgcmVjdCk7CkBAIC0xMTIs
MjcgKzExMywyNyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbENvcm5l
cihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250ZQogICAgIGNvbnRleHQtPmZpbGxS
ZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAK
LXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBSZW5kZXJT
Y3JvbGxiYXJUaGVtZTo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICB0b1JlbmRl
clNjcm9sbGJhcihzY3JvbGxiYXIpLT5wYWludFBhcnQoY29udGV4dCwgU2Nyb2xsYmFyQkdQYXJ0
LCBzY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVt
ZTo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFy
VGhlbWU6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAg
ICB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5wYWludFBhcnQoY29udGV4dCwgVHJhY2tC
R1BhcnQsIHJlY3QpOwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNr
UGllY2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBSZW5kZXJTY3JvbGxi
YXJUaGVtZTo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFy
UGFydCBwYXJ0KQogewogICAgIHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnBhaW50UGFy
dChjb250ZXh0LCBwYXJ0LCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBSZW5kZXJT
Y3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxi
YXJQYXJ0IHBhcnQpCiB7CiAgICAgdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+cGFpbnRQ
YXJ0KGNvbnRleHQsIHBhcnQsIHJlY3QpOwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1l
OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICB0b1JlbmRlclNjcm9sbGJhcihz
Y3JvbGxiYXIpLT5wYWludFBhcnQoY29udGV4dCwgVGh1bWJQYXJ0LCByZWN0KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggNzBj
MjRhNWVhMmVkNzliYjlmOGZhZDAyMTM3YzYzNTY5ZDk5NjNjNC4uZTdjODE2OTdkNzNhOTQ5MTQ1
MWIyNjdmNDFhYmRkZTdhZTNkZmQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclRoZW1lLmgKQEAgLTQ2LDM1ICs0NiwzNSBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCkt
PnNob3VsZENlbnRlck9uVGh1bWIoc2Nyb2xsYmFyLCBldmVudCk7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6
dGhlbWUoKS0+c2hvdWxkQ2VudGVyT25UaHVtYihzY3JvbGxiYXIsIGV2ZW50KTsgfQogICAgIAog
ICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJu
IFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5pbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKTsg
fQogICAgIHZpcnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1lckRlbGF5KCkgeyByZXR1cm4gU2Ny
b2xsYmFyVGhlbWU6OnRoZW1lKCktPmF1dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KIAotICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikgeyByZXR1
cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9s
bGJhcikgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVucmVnaXN0ZXJTY3JvbGxi
YXIoc2Nyb2xsYmFyKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhl
bWUoKS0+cmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQorICAgIHZpcnR1YWwgdm9pZCB1
bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpIHsgcmV0
dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT51bnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJh
cik7IH0KIAotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsK
KyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
KTsKIAotICAgIHZvaWQgYnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhTY3JvbGxiYXIqIHNjcm9s
bGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSk7CisgICAgdm9pZCBidXR0b25T
aXplc0Fsb25nVHJhY2tBeGlzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgaW50JiBiZWZvcmVTaXpl
LCBpbnQmIGFmdGVyU2l6ZSk7CiAgICAgCiAgICAgc3RhdGljIFJlbmRlclNjcm9sbGJhclRoZW1l
KiByZW5kZXJTY3JvbGxiYXJUaGVtZSgpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29s
IGhhc0J1dHRvbnMoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9s
bGJhciopOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50
Kik7CisgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAK
LSAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFy
UGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2Fy
ZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZh
bHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFp
bnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsK
KyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwg
SW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0g
ZmFsc2UpOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQo
R3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKik7ICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRS
ZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmlydHVh
bCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJU
aGVtZUNsaWVudCopOyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQo
R3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7
CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVhbCB2b2lk
IHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0VG9U
cmFja1BpZWNlcyhTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCBJbnRS
ZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBJbnRSZWN0Jik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129747</attachid>
            <date>2012-03-01 14:32:33 -0800</date>
            <delta_ts>2012-03-01 15:16:34 -0800</delta_ts>
            <desc>Build files for Win, GTK, and QT</desc>
            <filename>bug-78028-20120301173232.patch</filename>
            <type>text/plain</type>
            <size>132880</size>
            <attacher name="Peter Kotwicz">pkotwicz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NDE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQwMDM4ZDU4N2MxOGNm
OTg0OWIwYzNmN2U5MmE2NjQzNTYxNTM5NC4uOGUwZTEzNGUwNTliYWFjYjMxZjQ1YmY1MzI2YjU0
NmQzMDYxOTg4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3NCBAQAorMjAxMi0wMy0wMSAgUGV0
ZXIgS290d2ljeiAgPHBrb3R3aWN6QGdvb2dsZS5jb20+CisKKyAgICAgICAgRGVjb3VwbGUgc2Ny
b2xsYmFyIHBhaW50aW5nIGZyb20gU2Nyb2xsYmFyIG9iamVjdAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgwMjgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBpbnRlcmZhY2UgU2Nyb2xsYmFyVGhl
bWVDbGllbnQgd2hpY2ggU2Nyb2xsYmFyIGluaGVyaXRzIGZyb20uCisgICAgICAgIFRoaXMgYWxs
b3dzIHBhaW50aW5nIHZpYSBTY3JvbGxiYXJUaGVtZSB3aXRoIGEgcHJveHkgdG8gYSBTY3JvbGxi
YXIKKyAgICAgICAgb2JqZWN0LgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAg
ICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBX
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpnZXRUaWNrbWFya3Mp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjppc1Njcm9sbGFibGVBcmVhQWN0aXZlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6aXNTY3JvbGxWaWV3U2Nyb2xsYmFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6c2V0RnJhbWVSZWN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9TY3JvbGxiYXIuaDoKKyAgICAgICAgKFNjcm9sbGJhcik6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXI6OngpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6d2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyOjpoZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpzaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpyb290KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZnJhbWVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhcjo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmNv
bnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6
OmlzQ3VzdG9tU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6b3JpZW50
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjp2YWx1ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXI6OmN1cnJlbnRQb3MpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyOjp2aXNpYmxlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnRvdGFsU2l6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6Om1heGltdW0pOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjpjb250cm9sU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXI6OmxpbmVTdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6cGFnZVN0ZXApOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyOjpwcmVzc2VkUGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXI6OmhvdmVyZWRQYXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
cjo6c3R5bGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6ZW5hYmxlZCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnVwZGF0ZUVuYWJsZWRTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6cGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWU6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWU6OnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZTo6aW52YWxpZGF0ZVBhcnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lOjppbnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZTo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZTo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWU6OnNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lOjp0aHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZTo6dHJhY2tQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZTo6dHJhY2tMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6
OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp1
bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNs
aWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2Nyb2xsYmFyVGhl
bWVDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDbGllbnQ6On5TY3Jv
bGxiYXJUaGVtZUNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBh
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpoaXRUZXN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRl
UGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRU
cmFjayk6CisgICAgICAgIChXZWJDb3JlOjp1c2VkVG90YWxTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYlBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYkxlbmd0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja1Bvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aCk6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaDoKKyAgICAgICAg
KFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRyYWNrUGllY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50QnV0dG9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRodW1iKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRpY2ttYXJr
cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6Y29uc3RyYWlu
VHJhY2tSZWN0VG9UcmFja1BpZWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNo
cm9taXVtOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNocm9taXVtOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bTo6cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUaWNrbWFya3MpOgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lQ2hyb21pdW06Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUFuZHJvaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUFuZHJvaWQ6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6c2hvdWxkQ2VudGVyT25UaHVtYik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YnV0dG9u
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6
bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxi
YXJUaGVtZUNocm9taXVtQW5kcm9pZC5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUFuZHJvaWQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1MaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVt
TGludXg6OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTGludXg6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6bWluaW11bVRodW1iTGVu
Z3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
TGludXguaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eCk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5oOgorICAgICAg
ICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9s
bGJhclN0YXRlVG9UaGVtZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
Q2hyb21pdW1NYWM6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hy
b21pdW1NYWM6OnBhaW50R2l2ZW5UaWNrbWFya3MpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4pOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUcmFja1BpZWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50QnV0
dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50
VGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0
VGhlbWVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtV2lu
OjpnZXRUaGVtZUFycm93U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bVdpbjo6Z2V0Q2xhc3NpY1RoZW1lU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkQ2VudGVyT25UaHVtYik6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpidXR0b25TaXplKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmg6CisgICAgICAg
IChTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Ny
b2xsYmFyVGhlbWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVFZmw6
OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lRWZs
Ojp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwvU2Nyb2xsYmFy
VGhlbWVFZmwuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lRWZsKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnVucmVnaXN0ZXJTY3JvbGxiYXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVNjcm9sbGJhcnNGcmFt
ZVRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6aGFzVGh1
bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpmb3J3YXJkQnV0dG9uUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tSZWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjp0aHVtYlJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lR3RrOjpzaG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lR3RrOjpidXR0b25TaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lR3RrOjptaW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAqIHBsYXRmb3JtL2d0
ay9TY3JvbGxiYXJUaGVtZUd0ay5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVH
dGs6Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVHdGspOgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
R3RrOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lR3RrOjpwYWludEJ1dHRvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9sbGJh
clRoZW1lR3RrMy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cGFp
bnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6
OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJU
aGVtZUd0azo6cGFpbnRUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRCdXR0b24pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1h
Yy5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVNYWMpOgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9TY3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9yU2Nyb2xsYmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJP
dmVybGF5U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1
dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhhc1RodW1iKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGREcmFnRG9jdW1lbnRJbnN0
ZWFkT2ZUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRl
RW5hYmxlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpwYWlu
dCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjp0cmFja1JlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIpOgorICAgICAgICAq
IHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZU1vY2s6Omhhc0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVNb2NrOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZU1vY2s6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
TW9jazo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVNb2NrKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnN0eWxlT3B0aW9uU2xpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lUXQ6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OmhpdFRl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVRdDo6c2hvdWxkQ2VudGVyT25U
aHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVF0OjppbnZhbGlkYXRlUGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYlBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnRodW1iTGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnRyYWNrUG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVRdDo6dHJhY2tMZW5ndGgpOgorICAgICAgICAqIHBsYXRm
b3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lUXQpOgor
ICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzQnV0dG9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6dHJhY2tSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjptaW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50VHJhY2tCYWNrZ3JvdW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbik6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUaHVtYik6Cisg
ICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmg6CisgICAgICAgIChT
Y3JvbGxiYXJUaGVtZVNhZmFyaSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRo
ZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpoYXNUaHVt
Yik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVdpbjo6YmFja0J1dHRvblJlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OmZvcndhcmRCdXR0b25SZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjp0cmFja1JlY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZENlbnRlck9uVGh1bWIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9EcmFn
T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNr
QmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRU
cmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpwYWludEJ1
dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpwYWludEdyaXBwZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBsYXRmb3JtL3dp
bi9TY3JvbGxiYXJUaGVtZVdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVX
aW46Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVXaW4pOgorICAgICAgICAq
IHBsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVXeDo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhl
bWVXeDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRo
ZW1lV3g6OmJ1dHRvblNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6
c3BsaXRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4OjpiYWNrQnV0
dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0
dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojp0cmFja1JlY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6cGFpbnQpOgorICAgICAgICAq
IHBsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1l
V3gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzQnV0dG9ucyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oOgorICAgICAgICAoV2ViQ29yZTo6
dG9SZW5kZXJTY3JvbGxiYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJU
aGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9u
U2l6ZXNBbG9uZ1RyYWNrQXhpcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJU
aGVtZTo6aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVt
ZTo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1p
bmltdW1UaHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVt
ZTo6YmFja0J1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OmZvcndhcmRCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJh
clRoZW1lOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhl
bWU6OmNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tncm91bmQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tQaWVjZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1bWIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnNob3VsZENlbnRlck9uVGh1bWIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKFJlbmRlclNjcm9sbGJhclRoZW1lKToKKwogMjAxMi0wMy0wMSAgSm9lIFRob21h
cyAgPGpvZXRob21hc0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgOmVtcHR5IHN0aWxsIGFwcGxp
ZXMgdG8gZWxlbWVudHMgbWFkZSBub24tZW1wdHkgdmlhIHBhZ2UgZHluYW1pY3MuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAyZTYyZjE0NDUyYjk4MjM1NWQ2NWE3ZTViMzJjODVk
N2JhODFjNTE4Li42MWNlMTAyNjFkZDZjMDBlOTBmYWI5YzA0M2NkNjM4YzAzMTc4MWVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTMzMzAsNiArMzMzMCw3IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhclRoZW1lQ2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRo
ZW1lQ29tcG9zaXRlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCmluZGV4IGFlMjkwN2M0YTQ3Njk2MWY4N2M5Y2NhYTEwZDQ0NDVlMTg4
MDg2NDUuLjEzZTEwNGJiODQzMGIwMTgwN2MyNDdlYjkxNjc3MWFjZjllYjhlNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQpAQCAtMjI3OSw2ICsyMjc5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vU2Ny
b2xsYWJsZUFyZWEuaCBcCiAgICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBcCiAgICAgcGxh
dGZvcm0vU2Nyb2xsYmFyLmggXAorICAgIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ2xpZW50Lmgg
XAogICAgIHBsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmggXAogICAgIHBsYXRmb3Jt
L1Njcm9sbFZpZXcuaCBcCiAgICAgcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmggXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCmluZGV4IDU1ZmM2ZjJkZTcyN2MyYjEwMGVkOGJkNjNlMzE1ZTIxMTM5OGRmYTEuLjQ2
MTU1NzgwNTZlODgwMmYzOWNlZTgwOTI0N2RiZGJjZjMyYzM1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTI5MSw2ICsyOTEsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGFibGVBcmVh
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGJhci5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9TY3JvbGxi
YXJUaGVtZUNsaWVudC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TZWFyY2hQb3B1cE1lbnUu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL1NoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAwYjA5NDcyYmJjZjViZTg2MWExNTk4
YzViMjE5NTY1NDE1ZjM1MDNlLi42ZDljZWVhZmM4YTJiMzViZWU0OTUzOTY1NTUxMmEzYjgyNTg3
MTU2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpA
QCAtMjcwMzQsNiArMjcwMzQsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cU2Ny
b2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3ZjkxZGMy
NzViOTZmNzI4MDgxYzgyYTEzY2M4ZDEyZmQ2MTFlYjI5Li5iODA3OTdiMDE4NzYyNTE4MTZiYmQ1
ZjE5NmM3N2FmOTg0MzExMmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC01NjA4LDYgKzU2MDgsNyBAQAogCQlDNUQ0QUE3QTEx
NkJBRkI2MDA2OUNBOTMgLyogR2x5cGhNZXRyaWNzTWFwLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUQ0QUE3ODExNkJBRkI2MDA2OUNBOTMgLyogR2x5
cGhNZXRyaWNzTWFwLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQzVFOUI2NzcxMDY5N0UxMzAwQzdCQjFBIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNo
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVF
OUI2NzYxMDY5N0UxMzAwQzdCQjFBIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwICovOyB9
OwogCQlDNUVCREQ4NDEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVFQkREODEx
MDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLzsgfTsKKwkJQzZC
MzFCMkUxNEY4NDFGQjAwODlGMjNGIC8qIFNjcm9sbGJhclRoZW1lQ2xpZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNjkxNjE0NzE0RjZFQkE3MDA0
NjM3NUMgLyogU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDNkQ3NEFENTA5QUEyODJFMDAwQjBBNTIgLyogTW9k
aWZ5U2VsZWN0aW9uTGlzdExldmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9u
TGlzdExldmVsLmggKi87IH07CiAJCUM2RDc0QUU0MDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlT
ZWxlY3Rpb25MaXN0TGV2ZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzZENzRBRTMwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxp
c3RMZXZlbC5jcHAgKi87IH07CiAJCUM2RjA4RkJDMTQzMEZFOEYwMDY4NTg0OSAvKiBNdXRhdGlv
blJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDNkYwOEZCOTE0MzBGRThGMDA2ODU4NDkgLyogTXV0YXRpb25SZWNvcmQuY3BwICovOyB9OwpA
QCAtMTI2MDAsNiArMTI2MDEsNyBAQAogCQlDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
dG9yYWdlRXZlbnREaXNwYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM1
Rjc2NUI0MTRFMUQ0MTQwMDZDODk5QiAvKiBQYXN0ZWJvYXJkU3RyYXRlZ3kuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFzdGVib2FyZFN0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUM1Rjc2NUJBMTRFMUVDRjQwMDZDODk5QiAvKiBQbGF0Zm9ybVBh
c3RlYm9hcmRNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
bGF0Zm9ybVBhc3RlYm9hcmRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUM2
OTE2MTQ3MTRGNkVCQTcwMDQ2Mzc1QyAvKiBTY3JvbGxiYXJUaGVtZUNsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxiYXJUaGVtZUNsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5
U2VsZWN0aW9uTGlzdExldmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1v
ZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
NkQ3NEFFMzA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RM
ZXZlbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RjA4RkI5MTQzMEZFOEYw
MDY4NTg0OSAvKiBNdXRhdGlvblJlY29yZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNdXRhdGlvblJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xOTkzOSw2ICsxOTk0MSw3IEBACiAJCQkJQkNBQTkwQzIwQTdFQkE2MDAwOEIxMjI5IC8q
IFNjcm9sbGJhci5jcHAgKi8sCiAJCQkJQkM3QjJBRjgwNDUwODI0MTAwQTgwMDBGIC8qIFNjcm9s
bGJhci5oICovLAogCQkJCTBGRTcxNDE1MTQyMTg5RkMwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVt
ZS5jcHAgKi8sCisJCQkJQzY5MTYxNDcxNEY2RUJBNzAwNDYzNzVDIC8qIFNjcm9sbGJhclRoZW1l
Q2xpZW50LmggKi8sCiAJCQkJQkM4Qjg1NEEwRTdDN0Y1NjAwQUI2OTg0IC8qIFNjcm9sbGJhclRo
ZW1lLmggKi8sCiAJCQkJQkMxNDAyODgwRTgzNjgwODAwMzE5NzE3IC8qIFNjcm9sbGJhclRoZW1l
Q29tcG9zaXRlLmNwcCAqLywKIAkJCQlCQzE0MDI4OTBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUuaCAqLywKQEAgLTIzNzE0LDYgKzIzNzE3LDcgQEAKIAkJCQlDQTNC
RjY3RTEwRDk5QkFFMDBFNkNFNTMgLyogU2Nyb2xsQW5pbWF0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDQUUxRkE3MTI5MzlEQjcwMDRDQjAyNiAvKiBTY3JvbGxBbmltYXRvck1hYy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNGMTk5QjgwODI0NUU1OTAwMUU5QUJDIC8qIFNjcm9sbGJhci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQzZCMzFCMkUxNEY4NDFGQjAwODlGMjNGIC8qIFNjcm9sbGJhclRo
ZW1lQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhCODU0QjBFN0M3RjU2MDBBQjY5ODQg
LyogU2Nyb2xsYmFyVGhlbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTQwMjhCMEU4MzY4MDgw
MDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkM4Qjg1M0UwRTdDN0YxMTAwQUI2OTg0IC8qIFNjcm9sbGJhclRoZW1lTWFjLmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCmluZGV4IDNiOWMxOTVjZmY1
NTM5MTY1NTYyMDNlMmYyY2M0ZmU1ZDhmOWE1MWUuLmRmZDQ2NDk3YTE5ZDZjMjlhODhmN2RmM2Ix
YzdkOGNkZGNiYTAzYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcApAQCAt
MTEyLDYgKzExMiwyNyBAQCBTY3JvbGxiYXI6On5TY3JvbGxiYXIoKQogICAgIG1fdGhlbWUtPnVu
cmVnaXN0ZXJTY3JvbGxiYXIodGhpcyk7CiB9CiAKK1Njcm9sbGJhck92ZXJsYXlTdHlsZSBTY3Jv
bGxiYXI6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Ny
b2xsYWJsZUFyZWEgPyBTY3JvbGxiYXJPdmVybGF5U3R5bGVEZWZhdWx0IDogbV9zY3JvbGxhYmxl
QXJlYS0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7Cit9CisKK3ZvaWQgU2Nyb2xsYmFyOjpnZXRU
aWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JiB0aWNrbWFya3MpIGNvbnN0Cit7CisgICAgaWYgKG1f
c2Nyb2xsYWJsZUFyZWEpCisgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPmdldFRpY2ttYXJrcyh0
aWNrbWFya3MpOworfQorCitib29sIFNjcm9sbGJhcjo6aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEgJiYgbV9zY3JvbGxhYmxlQXJl
YS0+aXNBY3RpdmUoKTsKK30KKworYm9vbCBTY3JvbGxiYXI6OmlzU2Nyb2xsVmlld1Njcm9sbGJh
cigpIGNvbnN0Cit7CisgICAgcmV0dXJuIHBhcmVudCgpICYmIHBhcmVudCgpLT5pc0ZyYW1lVmll
dygpICYmIHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHBhcmVudCgpKS0+aXNTY3JvbGxWaWV3U2Ny
b2xsYmFyKHRoaXMpOworfQorCiB2b2lkIFNjcm9sbGJhcjo6b2Zmc2V0RGlkQ2hhbmdlKCkKIHsK
ICAgICBBU1NFUlQobV9zY3JvbGxhYmxlQXJlYSk7CkBAIC00MzQsNyArNDU1LDcgQEAgYm9vbCBT
Y3JvbGxiYXI6Om1vdXNlRG93bihjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIAogdm9p
ZCBTY3JvbGxiYXI6OnNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIC8v
IEdldCBvdXIgd2luZG93IHJlc2l6ZXIgcmVjdCBhbmQgc2VlIGlmIHdlIG92ZXJsYXAuICBBZGp1
c3QgdG8gYXZvaWQgdGhlIG92ZXJsYXAKKyAgICAvLyBHZXQgb3VyIHdpbmRvdyByZXNpemVyIHJl
Y3QgYW5kIHNlZSBpZiB3ZSBvdmVybGFwLiBBZGp1c3QgdG8gYXZvaWQgdGhlIG92ZXJsYXAKICAg
ICAvLyBpZiBuZWNlc3NhcnkuCiAgICAgSW50UmVjdCBhZGp1c3RlZFJlY3QocmVjdCk7CiAgICAg
Ym9vbCBvdmVybGFwc1Jlc2l6ZXIgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbGJhci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFy
LmgKaW5kZXggMzlhYzI1NDY1ZDE0NTVhNTk5MmNkMjVjMjIyOGRkMmI2NTM0YTYzZC4uMTcxNDEz
YTg1NWM5ZDJiNzBlNTM1YjJlMTljNTBiZjk1OWM0NmM4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsYmFyLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgU2Nyb2xsYmFyX2gKICNkZWZp
bmUgU2Nyb2xsYmFyX2gKIAorI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ2xpZW50LmgiCiAjaW5j
bHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIldpZGdl
dC5oIgpAQCAtNDAsMTMgKzQxLDYwIEBAIGNsYXNzIFBsYXRmb3JtTW91c2VFdmVudDsKIGNsYXNz
IFNjcm9sbGFibGVBcmVhOwogY2xhc3MgU2Nyb2xsYmFyVGhlbWU7CiAKLWNsYXNzIFNjcm9sbGJh
ciA6IHB1YmxpYyBXaWRnZXQgeworY2xhc3MgU2Nyb2xsYmFyIDogcHVibGljIFdpZGdldCwKKyAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTY3JvbGxiYXJUaGVtZUNsaWVudCB7CisKIHB1YmxpYzoK
ICAgICAvLyBNdXN0IGJlIGltcGxlbWVudGVkIGJ5IHBsYXRmb3JtcyB0aGF0IGNhbid0IHNpbXBs
eSB1c2UgdGhlIFNjcm9sbGJhciBiYXNlIGNsYXNzLiAgUmlnaHQgbm93IHRoZSBvbmx5IHBsYXRm
b3JtIHRoYXQgaXMgbm90IHVzaW5nIHRoZSBiYXNlIGNsYXNzIGlzIEdUSy4KICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTY3JvbGxiYXI+IGNyZWF0ZU5hdGl2ZVNjcm9sbGJhcihTY3JvbGxhYmxlQXJl
YSosIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxiYXJDb250cm9sU2l6
ZSBzaXplKTsKIAogICAgIHZpcnR1YWwgflNjcm9sbGJhcigpOwogCisgICAgLy8gU2Nyb2xsYmFy
VGhlbWVDbGllbnQgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCBpbnQgeCgpIGNvbnN0IHsg
cmV0dXJuIFdpZGdldDo6eCgpOyB9CisgICAgdmlydHVhbCBpbnQgeSgpIGNvbnN0IHsgcmV0dXJu
IFdpZGdldDo6eSgpOyB9CisgICAgdmlydHVhbCBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBX
aWRnZXQ6OndpZHRoKCk7IH0KKyAgICB2aXJ0dWFsIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVy
biBXaWRnZXQ6OmhlaWdodCgpOyB9CisgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdCB7
IHJldHVybiBXaWRnZXQ6OnNpemUoKTsgfQorICAgIHZpcnR1YWwgSW50UG9pbnQgbG9jYXRpb24o
KSBjb25zdCB7IHJldHVybiBXaWRnZXQ6OmxvY2F0aW9uKCk7IH0KKworICAgIHZpcnR1YWwgU2Ny
b2xsVmlldyogcGFyZW50KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0OjpwYXJlbnQoKTsgfQorICAg
IHZpcnR1YWwgU2Nyb2xsVmlldyogcm9vdCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6cm9vdCgp
OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIEludFJlY3QgZnJhbWVSZWN0KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0OjpmcmFt
ZVJlY3QoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGUoKSB7IFdpZGdldDo6aW52
YWxpZGF0ZSgpOyB9CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IEludFJl
Y3QmKTsKKworICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHNjcm9sbGJhck92ZXJs
YXlTdHlsZSgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBnZXRUaWNrbWFya3MoVmVjdG9yPElu
dFJlY3Q+JikgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTY3JvbGxWaWV3U2Nyb2xsYmFyKCkgY29uc3Q7
CisKKyAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhjb25z
dCBJbnRQb2ludCYgd2luZG93UG9pbnQpIHsgcmV0dXJuIFdpZGdldDo6Y29udmVydEZyb21Db250
YWluaW5nV2luZG93KHdpbmRvd1BvaW50KTsgfQorCisgICAgdmlydHVhbCBib29sIGlzQ3VzdG9t
U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJh
ck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsg
fQorCisgICAgdmlydHVhbCBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBscm91bmRmKG1fY3Vy
cmVudFBvcyk7IH0KKyAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRQb3MoKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnRQb3M7IH0KKyAgICB2aXJ0dWFsIGludCB2aXNpYmxlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmlzaWJsZVNpemU7IH0KKyAgICB2aXJ0dWFsIGludCB0b3RhbFNpemUoKSBjb25z
dCB7IHJldHVybiBtX3RvdGFsU2l6ZTsgfQorICAgIHZpcnR1YWwgaW50IG1heGltdW0oKSBjb25z
dCB7IHJldHVybiBtX3RvdGFsU2l6ZSAtIG1fdmlzaWJsZVNpemU7IH0KKyAgICB2aXJ0dWFsIFNj
cm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb250cm9s
U2l6ZTsgfQorCisgICAgdmlydHVhbCBpbnQgbGluZVN0ZXAoKSBjb25zdCB7IHJldHVybiBtX2xp
bmVTdGVwOyB9CisgICAgdmlydHVhbCBpbnQgcGFnZVN0ZXAoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VTdGVwOyB9CisKKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQoKSBjb25z
dCB7IHJldHVybiBtX3ByZXNzZWRQYXJ0OyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhv
dmVyZWRQYXJ0KCkgY29uc3QgeyByZXR1cm4gbV9ob3ZlcmVkUGFydDsgfQorCisgICAgdmlydHVh
bCB2b2lkIHN0eWxlQ2hhbmdlZCgpIHsgfQorCisgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2VuYWJsZWQ7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChi
b29sKTsKKwogICAgIC8vIENhbGxlZCBieSB0aGUgU2Nyb2xsYWJsZUFyZWEgd2hlbiB0aGUgc2Ny
b2xsIG9mZnNldCBjaGFuZ2VzLgogICAgIHZvaWQgb2Zmc2V0RGlkQ2hhbmdlKCk7CiAKQEAgLTU3
LDM0ICsxMDUsMTggQEAgcHVibGljOgogICAgIHZvaWQgZGlzY29ubmVjdEZyb21TY3JvbGxhYmxl
QXJlYSgpIHsgbV9zY3JvbGxhYmxlQXJlYSA9IDA7IH0KICAgICBTY3JvbGxhYmxlQXJlYSogc2Ny
b2xsYWJsZUFyZWEoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVBcmVhOyB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgaXNDdXN0b21TY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQot
ICAgIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9v
cmllbnRhdGlvbjsgfQotCi0gICAgaW50IHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbHJvdW5kZiht
X2N1cnJlbnRQb3MpOyB9Ci0gICAgZmxvYXQgY3VycmVudFBvcygpIGNvbnN0IHsgcmV0dXJuIG1f
Y3VycmVudFBvczsgfQogICAgIGludCBwcmVzc2VkUG9zKCkgY29uc3QgeyByZXR1cm4gbV9wcmVz
c2VkUG9zOyB9Ci0gICAgaW50IHZpc2libGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV92aXNpYmxl
U2l6ZTsgfQotICAgIGludCB0b3RhbFNpemUoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsU2l6ZTsg
fQotICAgIGludCBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNpemUgLSBtX3Zpc2li
bGVTaXplOyB9ICAgICAgICAKLSAgICBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29udHJvbFNpemU7IH0KIAotICAgIGludCBsaW5lU3RlcCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGluZVN0ZXA7IH0KLSAgICBpbnQgcGFnZVN0ZXAoKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VTdGVwOyB9CiAgICAgZmxvYXQgcGl4ZWxTdGVwKCkgY29uc3QgeyByZXR1cm4g
bV9waXhlbFN0ZXA7IH0KIAotICAgIFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQoKSBjb25zdCB7
IHJldHVybiBtX3ByZXNzZWRQYXJ0OyB9Ci0gICAgU2Nyb2xsYmFyUGFydCBob3ZlcmVkUGFydCgp
IGNvbnN0IHsgcmV0dXJuIG1faG92ZXJlZFBhcnQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0SG92
ZXJlZFBhcnQoU2Nyb2xsYmFyUGFydCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFByZXNzZWRQYXJ0
KFNjcm9sbGJhclBhcnQpOwogCiAgICAgdm9pZCBzZXRTdGVwcyhpbnQgbGluZVN0ZXAsIGludCBw
YWdlU3RlcCwgaW50IHBpeGVsc1BlclN0ZXAgPSAxKTsKICAgICB2b2lkIHNldFByb3BvcnRpb24o
aW50IHZpc2libGVTaXplLCBpbnQgdG90YWxTaXplKTsKICAgICB2b2lkIHNldFByZXNzZWRQb3Mo
aW50IHApIHsgbV9wcmVzc2VkUG9zID0gcDsgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKIAotICAgIGJv
b2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQotICAgIHZpcnR1YWwgdm9p
ZCBzZXRFbmFibGVkKGJvb2wgZSk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29u
dGV4dCosIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwogCiAgICAgdmlydHVhbCBib29sIGlz
T3ZlcmxheVNjcm9sbGJhcigpIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkUGFydGljaXBhdGVJbkhp
dFRlc3RpbmcoKTsKQEAgLTk3LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICBib29sIG1vdXNlTW92
ZWQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAgICAgdm9pZCBtb3VzZUVudGVyZWQoKTsK
ICAgICBib29sIG1vdXNlRXhpdGVkKCk7Ci0gICAgCisKICAgICAvLyBVc2VkIGJ5IHNvbWUgcGxh
dGZvcm0gc2Nyb2xsYmFycyB0byBrbm93IHdoZW4gdGhleSd2ZSBiZWVuIHJlbGVhc2VkIGZyb20g
Y2FwdHVyZS4KICAgICBib29sIG1vdXNlVXAoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAK
QEAgLTEwNiwxOCArMTM4LDEzIEBAIHB1YmxpYzoKICAgICBTY3JvbGxiYXJUaGVtZSogdGhlbWUo
KSBjb25zdCB7IHJldHVybiBtX3RoZW1lOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0UGFyZW50
KFNjcm9sbFZpZXcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNvbnN0IEludFJl
Y3QmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0Jik7
Ci0gICAgCiAgICAgYm9vbCBzdXBwcmVzc0ludmFsaWRhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
c3VwcHJlc3NJbnZhbGlkYXRpb247IH0KICAgICB2b2lkIHNldFN1cHByZXNzSW52YWxpZGF0aW9u
KGJvb2wgcykgeyBtX3N1cHByZXNzSW52YWxpZGF0aW9uID0gczsgfQogCi0gICAgdmlydHVhbCB2
b2lkIHN0eWxlQ2hhbmdlZCgpIHsgfQotCiAgICAgdmlydHVhbCBJbnRSZWN0IGNvbnZlcnRUb0Nv
bnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3QmKSBjb25zdDsKICAgICB2aXJ0dWFsIEludFJlY3Qg
Y29udmVydEZyb21Db250YWluaW5nVmlldyhjb25zdCBJbnRSZWN0JikgY29uc3Q7Ci0gICAgCisK
ICAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZlcnRUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IEludFBv
aW50JikgY29uc3Q7CiAgICAgdmlydHVhbCBJbnRQb2ludCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdW
aWV3KGNvbnN0IEludFBvaW50JikgY29uc3Q7CiAKQEAgLTE2MCw3ICsxODcsNyBAQCBwcm90ZWN0
ZWQ6CiAKICAgICBUaW1lcjxTY3JvbGxiYXI+IG1fc2Nyb2xsVGltZXI7CiAgICAgYm9vbCBtX292
ZXJsYXBzUmVzaXplcjsKLSAgICAKKwogICAgIGJvb2wgbV9zdXBwcmVzc0ludmFsaWRhdGlvbjsK
IAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJh
clRoZW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCmluZGV4
IDJhODNkNTM4NWVhYmJjYWNmZjhiZTU2MzQ5YjRkMTllMzJiYjZmY2MuLjVmZTQ1YjFhNDczNjU3
MTZiZjJiNzJhNDZkYWJhZWI2YWYwYmZmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsYmFyVGhlbWUuaApAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnQ7Ci1jbGFzcyBTY3JvbGxiYXI7CitjbGFzcyBTY3JvbGxi
YXJUaGVtZUNsaWVudDsKIGNsYXNzIFNjcm9sbFZpZXc7CiAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpICYmIEVOQUJMRShSVUJCRVJfQkFORElORykKQEAgLTQ2LDEwICs0NiwxMCBA
QCBwdWJsaWM6CiAgICAgU2Nyb2xsYmFyVGhlbWUoKSB7IH0KICAgICB2aXJ0dWFsIH5TY3JvbGxi
YXJUaGVtZSgpIHt9OwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUVuYWJsZWRTdGF0ZShTY3Jv
bGxiYXIqKSB7IH07CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxi
YXJUaGVtZUNsaWVudCopIHsgfTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXIq
LCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiAvKmRhbWFnZVJlY3QqLykgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgaGl0VGVzdChTY3JvbGxiYXIq
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBOb1BhcnQ7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0JiAvKmRhbWFnZVJlY3QqLykgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIFNjcm9sbGJhclBhcnQgaGl0VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIE5vUGFydDsgfQogICAgIAogICAgIHZpcnR1YWwg
aW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3Jv
bGxiYXIpIHsgcmV0dXJuIDA7IH0KIApAQCAtNTcsMTMgKzU3LDEzIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgYm9vbCBzdXBwb3J0c0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBib29sIHVzZXNPdmVybGF5U2Nyb2xsYmFycygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHls
ZShTY3JvbGxiYXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgdGhl
bWVDaGFuZ2VkKCkge30KICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaW52YWxpZGF0ZU9uTW91c2VF
bnRlckV4aXQoKSB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdm9pZCBpbnZhbGlkYXRlUGFydHMo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhckNvbnRyb2xQYXJ0TWFzayBtYXNrKQorICAg
IHZvaWQgaW52YWxpZGF0ZVBhcnRzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNj
cm9sbGJhckNvbnRyb2xQYXJ0TWFzayBtYXNrKQogICAgIHsKICAgICAgICAgaWYgKG1hc2sgJiBC
YWNrQnV0dG9uU3RhcnRQYXJ0KQogICAgICAgICAgICAgaW52YWxpZGF0ZVBhcnQoc2Nyb2xsYmFy
LCBCYWNrQnV0dG9uU3RhcnRQYXJ0KTsKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgaW52YWxpZGF0ZVBhcnQoc2Nyb2xsYmFyLCBGb3J3YXJkQnV0dG9uRW5kUGFydCk7CiAg
ICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJhciosIFNjcm9s
bGJhclBhcnQpIHt9CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRT
Y3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
SW50UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwg
Y29ybmVyUmVjdCk7IH0KICAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNv
bnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmlj
ZVJHQik7IH0KQEAgLTkzLDIxICs5MywyMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dFVwQ29udGVudFNoYWRvd0xheWVyKEdyYXBoaWNzTGF5ZXIqKSB7IH0KICNlbmRpZgogCi0gICAg
dmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
U25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJhZ0RvY3VtZW50
SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyBy
ZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9sbGJhciop
IHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0aHVtYiByZWxhdGl2ZSB0byB0
aGUgdHJhY2suCi0gICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyKikgeyByZXR1
cm4gMDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0aHVtYiBhbG9uZyB0aGUgYXhpcyBvZiB0aGUg
c2Nyb2xsYmFyLgotICAgIHZpcnR1YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKikgeyBy
ZXR1cm4gMDsgfSAvLyBUaGUgcG9zaXRpb24gb2YgdGhlIHRyYWNrIHJlbGF0aXZlIHRvIHRoZSBz
Y3JvbGxiYXIuCi0gICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFyKikgeyByZXR1
cm4gMDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0cmFjayBhbG9uZyB0aGUgYXhpcyBvZiB0aGUg
c2Nyb2xsYmFyLgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVu
dCopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0aHVtYiByZWxhdGl2ZSB0
byB0aGUgdHJhY2suCisgICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqKSB7IHJldHVybiAwOyB9IC8vIFRoZSBsZW5ndGggb2YgdGhlIHRodW1iIGFsb25nIHRo
ZSBheGlzIG9mIHRoZSBzY3JvbGxiYXIuCisgICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihT
Y3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRo
ZSB0cmFjayByZWxhdGl2ZSB0byB0aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1YWwgaW50IHRyYWNr
TGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4gMDsgfSAvLyBUaGUgbGVuZ3Ro
IG9mIHRoZSB0cmFjayBhbG9uZyB0aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLgogCiAgICAgdmly
dHVhbCBpbnQgbWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50Pjo6bWF4KCk7IH0KIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Ny
b2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMjU7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBhdXRv
c2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMDU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKSB7fQotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lz
dGVyU2Nyb2xsYmFyKFNjcm9sbGJhciopIHt9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Ny
b2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVucmVn
aXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IH0KIAogICAgIHZpcnR1YWwg
Ym9vbCBpc01vY2tUaGVtZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3MWM1
MmU5MGI4OTkwZjg4NmE2YjdkM2ZkNWZkNGU0ZGJmNjlmMjUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oCkBAIC0wLDAgKzEs
OTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFNjcm9sbGJhclRoZW1lQ2xpZW50X2gKKyNkZWZpbmUgU2Ny
b2xsYmFyVGhlbWVDbGllbnRfaAorCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJ
bnRSZWN0LmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgi
CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsVmlldzsKKworY2xhc3MgU2Nyb2xs
YmFyVGhlbWVDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgaW50IHgoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBpbnQgeSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCB3aWR0aCgp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCBoZWlnaHQoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBJbnRTaXplIHNpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBJbnRQb2ludCBsb2Nh
dGlvbigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgU2Nyb2xsVmlldyogcGFyZW50KCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgU2Nyb2xsVmlldyogcm9vdCgpIGNvbnN0ID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpID0gMDsKKyAgICB2aXJ0
dWFsIEludFJlY3QgZnJhbWVSZWN0KCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGlu
dmFsaWRhdGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVSZWN0KGNvbnN0IElu
dFJlY3QmKSA9IDA7CisKKyAgICB2aXJ0dWFsIFNjcm9sbGJhck92ZXJsYXlTdHlsZSBzY3JvbGxi
YXJPdmVybGF5U3R5bGUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldFRpY2ttYXJr
cyhWZWN0b3I8SW50UmVjdD4mKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xs
YWJsZUFyZWFBY3RpdmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU2Nyb2xsVmll
d1Njcm9sbGJhcigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydEZy
b21Db250YWluaW5nV2luZG93KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkgPSAwOworCisg
ICAgdmlydHVhbCBib29sIGlzQ3VzdG9tU2Nyb2xsYmFyKCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCA9IDA7CisKKyAgICB2
aXJ0dWFsIGludCB2YWx1ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRQ
b3MoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgdmlzaWJsZVNpemUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBpbnQgdG90YWxTaXplKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50
IG1heGltdW0oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTY3JvbGxiYXJDb250cm9sU2l6ZSBj
b250cm9sU2l6ZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgaW50IGxpbmVTdGVwKCkgY29u
c3QgPSAwOworICAgIHZpcnR1YWwgaW50IHBhZ2VTdGVwKCkgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCBTY3JvbGxiYXJQYXJ0IHByZXNzZWRQYXJ0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
U2Nyb2xsYmFyUGFydCBob3ZlcmVkUGFydCgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgdm9p
ZCBzdHlsZUNoYW5nZWQoKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RW5hYmxlZChib29sKSA9IDA7CisKK3Byb3RlY3Rl
ZDoKKyAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZUNsaWVudCgpIHsgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2NvbGxiYXJUaGVtZUNsaWVudF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5jcHAK
aW5kZXggNjJmZDVlNWQyYzUwZWY5YjM1YjQxNzU0ZDA5YmJiMGUxZTZiZTM4ZS4uOWQ4MzM3NDJm
OTJlZWJkNzBlMGFjYzE2ZWUzNzg0YjNjMjMxNTc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNwcApAQCAtMzMsMTUgKzMzLDE0
IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgotI2luY2x1ZGUgIlNjcm9sbGJhci5oIgotI2lu
Y2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDbGllbnQu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29u
c3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBh
aW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3Jh
cGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQogewogICAgIC8vIENyZWF0
ZSB0aGUgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrIGJhc2VkIG9uIHRoZSBkYW1hZ2VSZWN0CiAg
ICAgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrIHNjcm9sbE1hc2sgPSBOb1BhcnQ7CkBAIC0xMTYs
NyArMTE1LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6cGFpbnQoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGgKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aGl0VGVzdChTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitTY3JvbGxiYXJQ
YXJ0IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpoaXRUZXN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIFNjcm9s
bGJhclBhcnQgcmVzdWx0ID0gTm9QYXJ0OwogICAgIGlmICghc2Nyb2xsYmFyLT5lbmFibGVkKCkp
CkBAIC0xNTUsNyArMTU0LDcgQEAgU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6aGl0VGVzdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGYKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjppbnZhbGlkYXRlUGFy
dChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6aW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGlmIChwYXJ0ID09IE5vUGFydCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTk1LDcgKzE5NCw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQ
YXJ0CiAgICAgc2Nyb2xsYmFyLT5pbnZhbGlkYXRlUmVjdChyZXN1bHQpOwogfQogCi12b2lkIFNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxpdFRyYWNrKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBj
b25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0LCBJbnRSZWN0JiBiZWZvcmVUaHVt
YlJlY3QsIEludFJlY3QmIHRodW1iUmVjdCwgSW50UmVjdCYgYWZ0ZXJUaHVtYlJlY3QpCit2b2lk
IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxpdFRyYWNrKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QsIEludFJl
Y3QmIGJlZm9yZVRodW1iUmVjdCwgSW50UmVjdCYgdGh1bWJSZWN0LCBJbnRSZWN0JiBhZnRlclRo
dW1iUmVjdCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHdvbid0IGV2ZW4gZ2V0IGNhbGxlZCB1
bmxlc3Mgd2UncmUgYmlnIGVub3VnaCB0byBoYXZlIHNvbWUgY29tYmluYXRpb24gb2YgdGhlc2Ug
dGhyZWUgcmVjdHMgd2hlcmUgYXQgbGVhc3QKICAgICAvLyBvbmUgb2YgdGhlbSBpcyBub24tZW1w
dHkuCkBAIC0yMTUsNyArMjE0LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6c3Bs
aXRUcmFjayhTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdW4KIAogLy8gUmV0
dXJucyB0aGUgc2l6ZSByZXByZXNlbnRlZCBieSB0cmFjayB0YWtpbmcgaW50byBhY2NvdW50IHNj
cm9sbGluZyBwYXN0CiAvLyB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudC4KLXN0YXRpYyBmbG9hdCB1
c2VkVG90YWxTaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorc3RhdGljIGZsb2F0IHVzZWRUb3Rh
bFNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBmbG9hdCBvdmVy
aGFuZ0F0U3RhcnQgPSAtc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCk7CiAgICAgZmxvYXQgb3Zlcmhh
bmdBdEVuZCA9IHNjcm9sbGJhci0+Y3VycmVudFBvcygpICsgc2Nyb2xsYmFyLT52aXNpYmxlU2l6
ZSgpIC0gc2Nyb2xsYmFyLT50b3RhbFNpemUoKTsKQEAgLTIyMyw3ICsyMjIsNyBAQCBzdGF0aWMg
ZmxvYXQgdXNlZFRvdGFsU2l6ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICByZXR1cm4gc2Ny
b2xsYmFyLT50b3RhbFNpemUoKSArIG92ZXJoYW5nOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnRodW1iUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5lbmFibGVkKCkpIHsKICAgICAgICAgZmxv
YXQgc2l6ZSA9IHVzZWRUb3RhbFNpemUoc2Nyb2xsYmFyKSAtIHNjcm9sbGJhci0+dmlzaWJsZVNp
emUoKTsKQEAgLTIzNiw3ICsyMzUsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRo
dW1iUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWlu
dCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iTGVuZ3RoKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNTAsMTggKzI0OSwxOCBAQCBpbnQgU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGU6OnRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVy
biBsZW5ndGg7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6bWluaW11bVRodW1i
TGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRl
OjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsK
ICAgICByZXR1cm4gc2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSk7
CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tQb3NpdGlvbihTY3JvbGxi
YXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tQb3NpdGlv
bihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIEludFJlY3QgY29uc3Ry
YWluZWRUcmFja1JlY3QgPSBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKHNjcm9sbGJh
ciwgdHJhY2tSZWN0KHNjcm9sbGJhcikpOwogICAgIHJldHVybiAoc2Nyb2xsYmFyLT5vcmllbnRh
dGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpID8gY29uc3RyYWluZWRUcmFja1JlY3QueCgp
IC0gc2Nyb2xsYmFyLT54KCkgOiBjb25zdHJhaW5lZFRyYWNrUmVjdC55KCkgLSBzY3JvbGxiYXIt
PnkoKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aChTY3Jv
bGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tMZW5n
dGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBJbnRSZWN0IGNvbnN0
cmFpbmVkVHJhY2tSZWN0ID0gY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxi
YXIsIHRyYWNrUmVjdChzY3JvbGxiYXIpKTsKICAgICByZXR1cm4gKHNjcm9sbGJhci0+b3JpZW50
YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSA/IGNvbnN0cmFpbmVkVHJhY2tSZWN0Lndp
ZHRoKCkgOiBjb25zdHJhaW5lZFRyYWNrUmVjdC5oZWlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oCmluZGV4IDExYjNiZDQ3MDAx
ODdmZjE4MmIwNDViNDUyY2RjMjRkYTMzZTc1OTAuLjhmNjI5MTMzZTQzMjgyYzY2ZDNmMTk5ZDEy
ZDMwM2RlNzJlYzcwZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhclRoZW1lQ29tcG9zaXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUuaApAQCAtMzIsNDAgKzMyLDQwIEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUgOiBwdWJsaWMgU2Nyb2xsYmFyVGhl
bWUgewogcHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXIqLCBHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZpcnR1
YWwgYm9vbCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwogCi0gICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhp
dFRlc3QoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVh
bCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3Jv
bGxiYXIqLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVBhcnQo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0KTsKIAotICAgIHZpcnR1YWwgaW50
IHRodW1iUG9zaXRpb24oU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgo
U2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3JvbGxiYXIqKTsK
LSAgICB2aXJ0dWFsIGludCB0cmFja0xlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGlu
dCB0aHVtYlBvc2l0aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQg
dGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCB0cmFj
a1Bvc2l0aW9uKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgdHJhY2tM
ZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludFNj
cm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYg
Y29ybmVyUmVjdCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxW
aWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5n
QXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVyaGFuZ0FyZWEsIGNvbnN0IEludFJlY3Qm
IGRpcnR5UmVjdCk7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhT
Y3JvbGxiYXIqKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSA9IDA7
CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xs
YmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKSA9IDA7Ci0gICAgdmlydHVhbCBJbnRSZWN0
IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRp
bmcgPSBmYWxzZSkgPSAwOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFy
KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKSA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tC
dXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKSA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZh
bHNlKSA9IDA7CisgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNw
bGl0VHJhY2soU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYgdHJhY2ssIEludFJlY3QmIHN0YXJ0
VHJhY2ssIEludFJlY3QmIHRodW1iLCBJbnRSZWN0JiBlbmRUcmFjayk7CisgICAgdmlydHVhbCB2
b2lkIHNwbGl0VHJhY2soU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiB0cmFj
aywgSW50UmVjdCYgc3RhcnRUcmFjaywgSW50UmVjdCYgdGh1bWIsIEludFJlY3QmIGVuZFRyYWNr
KTsKICAgICAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7
CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50
Kik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNz
Q29udGV4dCosIFNjcm9sbGJhciopIHt9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSB7fQot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpIHt9Ci0gICAgdmlydHVhbCB2b2lk
IHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3Qm
LCBTY3JvbGxiYXJQYXJ0KSB7fQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNz
Q29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKSB7fQotICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRS
ZWN0Jikge30KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyB9CisgICAgdmlydHVhbCB2b2lk
IHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgY29uc3QgSW50UmVjdCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGll
Y2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0
JiwgU2Nyb2xsYmFyUGFydCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9s
bGJhclBhcnQpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4
dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmKSB7IH0KIAotICAgIHZpcnR1YWwgSW50UmVjdCBjb25zdHJh
aW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmIHJlY3Qp
IHsgcmV0dXJuIHJlY3Q7IH0KKyAgICB2aXJ0dWFsIEludFJlY3QgY29uc3RyYWluVHJhY2tSZWN0
VG9UcmFja1BpZWNlcyhTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmIHJlY3Qp
IHsgcmV0dXJuIHJlY3Q7IH0KIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAKaW5kZXggZjhj
YjI4MTU0ODYxZTAxZGE3MTEyNDkyMGM2MGQwNmEzN2U5YTE4My4uNjgyZDgyZDViMzM3OTE4YjI1
ZDA5OGJhNzcxNzM0ZTc5MTUwNWU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAKQEAgLTM5LDE0
ICszOSwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bTo6aGFzVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW06Omhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7
CiAgICAgLy8gVGhpcyBtZXRob2QgaXMganVzdCBjYWxsZWQgYXMgYSBwYWludC10aW1lIG9wdGlt
aXphdGlvbiB0byBzZWUgaWYKICAgICAvLyBwYWludGluZyB0aGUgdGh1bWIgY2FuIGJlIHNraXBw
ZWQuICBXZSBkb24ndCBoYXZlIHRvIGJlIGV4YWN0IGhlcmUuCiAgICAgcmV0dXJuIHRodW1iTGVu
Z3RoKHNjcm9sbGJhcikgPiAwOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06
OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQs
IGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OmJhY2tCdXR0b25SZWN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkK
IHsKICAgICAvLyBXaW5kb3dzIGFuZCBMaW51eCBqdXN0IGhhdmUgc2luZ2xlIGFycm93cy4KICAg
ICBpZiAocGFydCA9PSBCYWNrQnV0dG9uRW5kUGFydCkKQEAgLTU2LDcgKzU2LDcgQEAgSW50UmVj
dCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9s
bGJhciwgU2Nyb2xsYmFyUGEKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Ny
b2xsYmFyLT55KCksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3Qg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIC8vIFdpbmRvd3MgYW5kIExpbnV4
IGp1c3QgaGF2ZSBzaW5nbGUgYXJyb3dzLgogICAgIGlmIChwYXJ0ID09IEZvcndhcmRCdXR0b25T
dGFydFBhcnQpCkBAIC03NCw3ICs3NCw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhCiAgICAg
cmV0dXJuIEludFJlY3QoeCwgeSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIH0KIAot
SW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnRyYWNrUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sKQogewogICAgIEludFNpemUgYnMg
PSBidXR0b25TaXplKHNjcm9sbGJhcik7CiAgICAgLy8gVGhlIGJ1dHRvbnMgYXQgdGhlIHRvcCBh
bmQgYm90dG9tIG9mIHRoZSBzY3JvbGxiYXIgYXJlIHNxdWFyZSwgc28gdGhlCkBAIC05MiwxNCAr
OTIsMTQgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjp0cmFja1JlY3QoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIGJvb2wpCiAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCks
IHNjcm9sbGJhci0+eSgpICsgYnMuaGVpZ2h0KCksIHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWln
aHQoKSAtIDIgKiBicy5oZWlnaHQoKSk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bTo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bTo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewog
ICAgIC8vIEp1c3QgYXNzdW1lIGEgZm9yd2FyZCB0cmFjayBwYXJ0LiAgV2Ugb25seSBwYWludCB0
aGUgdHJhY2sgYXMgYSBzaW5nbGUgcGllY2Ugd2hlbiB0aGVyZSBpcyBubyB0aHVtYi4KICAgICBp
ZiAoIWhhc1RodW1iKHNjcm9sbGJhcikpCiAgICAgICAgIHBhaW50VHJhY2tQaWVjZShjb250ZXh0
LCBzY3JvbGxiYXIsIHJlY3QsIEZvcndhcmRUcmFja1BhcnQpOwogfQogCi12b2lkIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW06OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW06OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsK
ICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpICE9IFZlcnRpY2FsU2Nyb2xsYmFyKQog
ICAgICAgICByZXR1cm47CkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtOjpwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJh
cioKIAogICAgIC8vIEdldCB0aGUgdGlja21hcmtzIGZvciB0aGUgZnJhbWV2aWV3LgogICAgIFZl
Y3RvcjxJbnRSZWN0PiB0aWNrbWFya3M7Ci0gICAgc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgp
LT5nZXRUaWNrbWFya3ModGlja21hcmtzKTsKKyAgICBzY3JvbGxiYXItPmdldFRpY2ttYXJrcyh0
aWNrbWFya3MpOwogICAgIGlmICghdGlja21hcmtzLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxi
YXJUaGVtZUNocm9taXVtLmgKaW5kZXggMTE3ODEyNTY5ZjY5ZjIwMDM3MWJhYzBmOWRhODdhN2Mz
MmRlNGZhNS4uY2Y2NzFkZDk4NGMwNzkwOTk1YzY3ZDdkMGYxOGM1YjRhNmY2Y2ZkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW0uaApAQCAtNDEsMTcgKzQxLDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAvLyBXaW5kb3dzIGFuZCBMaW51eC4KICAgICBjbGFzcyBTY3JvbGxiYXJUaGVtZUNocm9taXVt
IDogcHVibGljIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlIHsKICAgICBwcm90ZWN0ZWQ6Ci0gICAg
ICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopIHsgcmV0dXJuIHRydWU7IH0K
LSAgICAgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOworICAgICAgICB2aXJ0
dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIHRydWU7
IH0KKyAgICAgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7
CiAKLSAgICAgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNj
cm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgICAgIHZpcnR1YWwgSW50
UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBh
aW50aW5nID0gZmFsc2UpOwotICAgICAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9s
bGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgICAgIHZpcnR1YWwgSW50UmVjdCBi
YWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wg
cGFpbnRpbmcgPSBmYWxzZSk7CisgICAgICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9u
UmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSk7CisgICAgICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25z
dCBJbnRSZWN0Jik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGlj
c0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlj
a21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50
UmVjdCYpOwogCi0gICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciop
ID0gMDsKKyAgICAgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqKSA9IDA7CiAgICAgfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUFuZHJvaWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFy
VGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwCmluZGV4IDFkYmVmYTY0OWMwODk3MmViMWMyYjM3Yjc0
NzcxYjBkNjFiZWE1YWQuLmUxZTU1YTFmYzEzZDc5YzBmOWU4ZjQ3MzBiZTg5NzgwOTRjMWY2OTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW1BbmRyb2lkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5jcHAKQEAgLTU3LDcgKzU3LDcgQEAg
aW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpzY3JvbGxiYXJUaGlja25lc3MoU2Ny
b2xsYmFyQ29udHJvbFNpemUgY29udHIKICAgICByZXR1cm4gc2Nyb2xsYmFyVGhpY2tuZXNzVmFs
dWU7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50U2Nyb2xs
YmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xs
YmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6cGFpbnRTY3JvbGxiYXJC
YWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhcikKIHsKICAgICAvLyBQYWludCBibGFjayBiYWNrZ3JvdW5kIGluIER1bXBSZW5k
ZXJUcmVlLCBvdGhlcndpc2UgdGhlIHBpeGVscyBpbiB0aGUgc2Nyb2xsYmFyIGFyZWEgZGVwZW5k
CiAgICAgLy8gb24gdGhlaXIgcHJldmlvdXMgc3RhdGUsIHdoaWNoIG1ha2VzIHRoZSBkdW1wZWQg
cmVzdWx0IHVuZGV0ZXJtaW5lZC4KQEAgLTY1LDEyICs2NSwxMiBAQCB2b2lkIFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1BbmRyb2lkOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250
ZXh0KiBjbwogICAgICAgICBjb250ZXh0LT5maWxsUmVjdChzY3JvbGxiYXItPmZyYW1lUmVjdCgp
LCBDb2xvcjo6YmxhY2ssIENvbG9yU3BhY2VEZXZpY2VSR0IpOwogfQogCi1ib29sIFNjcm9sbGJh
clRoZW1lQ2hyb21pdW1BbmRyb2lkOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
QW5kcm9pZDo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1JbnRT
aXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpidXR0b25TaXplKFNjcm9sbGJhciog
c2Nyb2xsYmFyKQorSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6YnV0dG9u
U2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChzY3JvbGxi
YXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpCiAgICAgICAgIHJldHVybiBJ
bnRTaXplKHNjcm9sbGJhclRoaWNrbmVzc1ZhbHVlLCBidXR0b25MZW5ndGgpOwpAQCAtNzgsNyAr
NzgsNyBAQCBJbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpidXR0b25TaXpl
KFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiBJbnRTaXplKGJ1dHRvbkxlbmd0aCwg
c2Nyb2xsYmFyVGhpY2tuZXNzVmFsdWUpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUFuZHJvaWQ6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJh
clRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIDIgKiBzY3JvbGxiYXJUaGlj
a25lc3Moc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
QW5kcm9pZC5oCmluZGV4IGYwN2M5MDE2Nzg2Y2IyNGY4OGRmYjk0YWU0ZmMyMTZmZTZlNzBiZmMu
LmYzZGI4MGU1MmZiZjUwYzFkZjY4YTk0MGVhOWQ0NzNmMmRiZjI4NjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRy
b2lkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUFuZHJvaWQuaApAQCAtMzUsMTAgKzM1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUpOwogCiBwcm90
ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGlj
c0NvbnRleHQqLCBTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25U
aHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICB2aXJ0dWFs
IEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVt
VGh1bWJMZW5ndGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFy
QmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNp
emUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJM
ZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwCmluZGV4IGVjNjg0MDdlOWQ4YzMyZTMw
ZDMxMGQyZTUwNThjMmRhN2RiZGVjYzYuLjZiNGRhZmMzNzNmMTBkMGFhMmQ2ZTk2NjJhYmU2M2Rk
NWRiNjVlN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcApAQCAtNTAsNyArNTAs
NyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpzY3JvbGxiYXJUaGlja25lc3Mo
U2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbAogICAgIHJldHVybiBzY3JvbGxiYXJTaXplLndp
ZHRoKCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRyYWNr
UGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCit2b2lkIFNjcm9sbGJhclRoZW1l
Q2hyb21pdW1MaW51eDo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJh
clBhcnQgcGFydFR5cGUpCiB7CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUg
c3RhdGUgPSBzY3JvbGxiYXItPmhvdmVyZWRQYXJ0KCkgPT0gcGFydFR5cGUgPyBQbGF0Zm9ybVN1
cHBvcnQ6OlN0YXRlSG92ZXIgOiBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlTm9ybWFsOwogICAgIElu
dFJlY3QgYWxpZ25SZWN0ID0gdHJhY2tSZWN0KHNjcm9sbGJhciwgZmFsc2UpOwpAQCAtNjcsNyAr
NjcsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUcmFja1BpZWNl
KEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhcgogICAgICAgICAmZXh0cmFQYXJhbXMpOwog
fQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRCdXR0b24oR3JhcGhp
Y3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qs
IFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4Ojpw
YWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAg
UGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhcnQgcGFpbnRQYXJ0OwogICAgIFBsYXRmb3JtU3VwcG9y
dDo6VGhlbWVQYWludFN0YXRlIHN0YXRlID0gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZU5vcm1hbDsK
QEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFp
bnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzYwogICAgIFBsYXRmb3Jt
U3VwcG9ydDo6cGFpbnRUaGVtZVBhcnQoZ2MsIHBhaW50UGFydCwgc3RhdGUsIHJlY3QsIDApOwog
fQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUaHVtYihHcmFwaGlj
c0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
K3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3Qm
IHJlY3QpCiB7CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc3RhdGU7CiAK
QEAgLTEyMCwxMiArMTIwLDEyIEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4Ojpw
YWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2NyCiAgICAgICAgIDAp
OwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6c2hvdWxkQ2VudGVyT25U
aHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgcmV0dXJu
IChldnQuc2hpZnRLZXkoKSAmJiBldnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbikgfHwgKGV2dC5i
dXR0b24oKSA9PSBNaWRkbGVCdXR0b24pOwogfQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hy
b21pdW1MaW51eDo6YnV0dG9uU2l6ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKK0ludFNpemUgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0
aWNhbFNjcm9sbGJhcikgewogICAgICAgICBJbnRTaXplIHNpemUgPSBQbGF0Zm9ybVN1cHBvcnQ6
OmdldFRoZW1lUGFydFNpemUoUGxhdGZvcm1TdXBwb3J0OjpQYXJ0U2Nyb2xsYmFyVXBBcnJvdyk7
CkBAIC0xMzcsNyArMTM3LDcgQEAgSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6
OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIEludFNpemUoc2Ny
b2xsYmFyLT53aWR0aCgpIDwgMiAqIHNpemUud2lkdGgoKSA/IHNjcm9sbGJhci0+d2lkdGgoKSAv
IDIgOiBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4OjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
CitpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjptaW5pbXVtVGh1bWJMZW5ndGgoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmll
bnRhdGlvbigpID09IFZlcnRpY2FsU2Nyb2xsYmFyKSB7CiAgICAgICAgIEludFNpemUgc2l6ZSA9
IFBsYXRmb3JtU3VwcG9ydDo6Z2V0VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRT
Y3JvbGxiYXJWZXJ0aWNhbFRodW1iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgKaW5kZXgg
OGU4MDJlNzM0MWI3NzViNTk1NWFkMGRlYzBiOGVlZDU2Zjc5NzI3My4uMzMwZDAzZmIwMjMyMTM0
ZWMyY2EyOTQxOWZkYWIyNzM0OTQ3NTRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmgK
QEAgLTM5LDEyICszOSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
aW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7CiAKICAgICBwcm90
ZWN0ZWQ6Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwg
Y29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0g
ICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYpOwotICAgICAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6
ZShTY3JvbGxiYXIqKTsKLSAgICAgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNj
cm9sbGJhciopOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNz
Q29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJh
clBhcnQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0
KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpOworICAgICAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxi
YXJUaGVtZUNsaWVudCopOworICAgICAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKICAgICB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3Jv
bGxiYXJUaGVtZUNocm9taXVtTWFjLmgKaW5kZXggNDFhMTk4ZTNmODQyMGM4NDg5NDVmYjg0NzQ0
ZGRiNzAwMjRjZDZlNS4uMTkzNDZlNzIzYmFiMjg3Zjk4ZTE3YzgxMmRiNTgzYTFjMjA2NzAyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWMuaApAQCAtMzYsMTIgKzM2LDEyIEBAIHB1YmxpYzoKICAg
ICBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjKCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bU1hYygpOwogCi0gICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhciosIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CisgICAg
dmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRP
dmVyaGFuZ0FyZWFzKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
JiBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5n
QXJlYSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KTsKICAgICAKIHByaXZhdGU6Ci0gICAgdm9p
ZCBwYWludEdpdmVuVGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0
IEludFJlY3QmLCBjb25zdCBWZWN0b3I8SW50UmVjdD4mKTsKKyAgICB2b2lkIHBhaW50R2l2ZW5U
aWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJ
bnRSZWN0JiwgY29uc3QgVmVjdG9yPEludFJlY3Q+Jik7CiAKICAgICBSZWZQdHI8UGF0dGVybj4g
bV9vdmVyaGFuZ1BhdHRlcm47CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KaW5kZXggNDU5
YTU4YjA3NmY3MDA2ZjI3NzY1YjAyNDk3YTA5OTM1ZjgyM2ZiNy4uZDAyYjQyMTI1NjQ0Yjc4MzBj
ZTJlMGZhZWIzNjczMzYxZjhkYjk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCkBAIC02
MSwxMSArNjEsMTEgQEAgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6flNjcm9sbGJhclRoZW1l
Q2hyb21pdW1NYWMoKQogewogfQogCi1zdGF0aWMgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50
U3RhdGUgc2Nyb2xsYmFyU3RhdGVUb1RoZW1lU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitz
dGF0aWMgUGxhdGZvcm1TdXBwb3J0OjpUaGVtZVBhaW50U3RhdGUgc2Nyb2xsYmFyU3RhdGVUb1Ro
ZW1lU3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoIXNj
cm9sbGJhci0+ZW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpTdGF0
ZURpc2FibGVkOwotICAgIGlmICghc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJlYSgpLT5pc0FjdGl2
ZSgpKQorICAgIGlmICghc2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAgICAg
ICAgIHJldHVybiBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlSW5hY3RpdmU7CiAgICAgaWYgKHNjcm9s
bGJhci0+cHJlc3NlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCiAgICAgICAgIHJldHVybiBQbGF0Zm9y
bVN1cHBvcnQ6OlN0YXRlUHJlc3NlZDsKQEAgLTk0LDExICs5NCwxMSBAQCBzdGF0aWMgdm9pZCBz
Y3JvbGxiYXJQYWludGVyUGFpbnRUcmFjayhTY3JvbGxiYXJQYWludGVyIHNjcm9sbGJhclBhaW50
ZXIsIGJvb2wgZQogLy8gICAgIC0gZHJhd2luZyB1c2luZyBQbGF0Zm9ybVN1cHBvcnQgZnVuY3Rp
b25zCiAvLyAgICAgLSBkcmF3aW5nIHRpY2ttYXJrcwogLy8gICAgIC0gU2tpYSBzcGVjaWZpYyBj
aGFuZ2VzCi1ib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFn
ZVJlY3QpCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCkKIHsKICAgICAvLyBHZXQgdGhlIHRpY2ttYXJrcyBmb3IgdGhlIGZy
YW1ldmlldy4KICAgICBWZWN0b3I8SW50UmVjdD4gdGlja21hcmtzOwotICAgIHNjcm9sbGJhci0+
c2Nyb2xsYWJsZUFyZWEoKS0+Z2V0VGlja21hcmtzKHRpY2ttYXJrcyk7CisgICAgc2Nyb2xsYmFy
LT5nZXRUaWNrbWFya3ModGlja21hcmtzKTsKIAogICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlB
UElBdmFpbGFibGUoKSkgewogICAgICAgICBmbG9hdCB2YWx1ZSA9IDA7CkBAIC0xODgsNyArMTg4
LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxiYXIqIHNj
cm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb24KICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxl
ZCgpKQogICAgICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBrVGhlbWVUcmFja0Rpc2FibGVk
OwogICAgIGVsc2UKLSAgICAgICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0gc2Nyb2xsYmFyLT5z
Y3JvbGxhYmxlQXJlYSgpLT5pc0FjdGl2ZSgpID8ga1RoZW1lVHJhY2tBY3RpdmUgOiBrVGhlbWVU
cmFja0luYWN0aXZlOworICAgICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBzY3JvbGxiYXIt
PmlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSA/IGtUaGVtZVRyYWNrQWN0aXZlIDoga1RoZW1lVHJh
Y2tJbmFjdGl2ZTsKIAogICAgIGlmICghaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICB0
cmFja0luZm8uZW5hYmxlU3RhdGUgPSBrVGhlbWVUcmFja05vdGhpbmdUb1Njcm9sbDsKQEAgLTI0
Myw3ICsyNDMsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbgogICAgIGlmIChoYXNUaHVtYihz
Y3JvbGxiYXIpKSB7CiAgICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFNjcm9sbGJh
ckluZm8gc2Nyb2xsYmFySW5mbzsKICAgICAgICAgc2Nyb2xsYmFySW5mby5vcmllbnRhdGlvbiA9
IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gUGxhdGZv
cm1TdXBwb3J0OjpTY3JvbGxiYXJPcmllbnRhdGlvbkhvcml6b250YWwgOiBQbGF0Zm9ybVN1cHBv
cnQ6OlNjcm9sbGJhck9yaWVudGF0aW9uVmVydGljYWw7Ci0gICAgICAgIHNjcm9sbGJhckluZm8u
cGFyZW50ID0gc2Nyb2xsYmFyLT5wYXJlbnQoKSAmJiBzY3JvbGxiYXItPnBhcmVudCgpLT5pc0Zy
YW1lVmlldygpICYmIHN0YXRpY19jYXN0PEZyYW1lVmlldyo+KHNjcm9sbGJhci0+cGFyZW50KCkp
LT5pc1Njcm9sbFZpZXdTY3JvbGxiYXIoc2Nyb2xsYmFyKSA/IFBsYXRmb3JtU3VwcG9ydDo6U2Ny
b2xsYmFyUGFyZW50U2Nyb2xsVmlldyA6IFBsYXRmb3JtU3VwcG9ydDo6U2Nyb2xsYmFyUGFyZW50
UmVuZGVyTGF5ZXI7CisgICAgICAgIHNjcm9sbGJhckluZm8ucGFyZW50ID0gc2Nyb2xsYmFyLT5p
c1Njcm9sbFZpZXdTY3JvbGxiYXIoKSA/IFBsYXRmb3JtU3VwcG9ydDo6U2Nyb2xsYmFyUGFyZW50
U2Nyb2xsVmlldyA6IFBsYXRmb3JtU3VwcG9ydDo6U2Nyb2xsYmFyUGFyZW50UmVuZGVyTGF5ZXI7
CiAgICAgICAgIHNjcm9sbGJhckluZm8ubWF4VmFsdWUgPSBzY3JvbGxiYXItPm1heGltdW0oKTsK
ICAgICAgICAgc2Nyb2xsYmFySW5mby5jdXJyZW50VmFsdWUgPSBzY3JvbGxiYXItPmN1cnJlbnRQ
b3MoKTsKICAgICAgICAgc2Nyb2xsYmFySW5mby52aXNpYmxlU2l6ZSA9IHNjcm9sbGJhci0+dmlz
aWJsZVNpemUoKTsKQEAgLTI2Myw3ICsyNjMsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1NYWM6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbgog
ICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBh
aW50R2l2ZW5UaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgVmVjdG9yPEludFJlY3Q+JiB0aWNr
bWFya3MpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50R2l2ZW5UaWNrbWFy
a3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBWZWN0b3I8SW50UmVjdD4mIHRpY2ttYXJr
cykKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpICE9IFZlcnRpY2FsU2Nyb2xs
YmFyKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwCmluZGV4IGY0
MzU4MzlkODIxODU2NGY4MDI3MjhkMzI4NTMyMGQxZTBjZGJhYzguLmEwODE5ODM0NzQ5MWRjYzVk
OGYwMjJhMTIyODg5MGQ2NTc3ZmUzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwCkBA
IC03Myw3ICs3Myw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6aW52YWxpZGF0
ZU9uTW91c2VFbnRlckV4aXQoKQogICAgIHJldHVybiB3aW5kb3dzVmVyc2lvbigpID49IFdpbmRv
d3NWaXN0YTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpzaG91bGRTbmFw
QmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnNob3VsZFNuYXBC
YWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIC8vIEZpbmQgdGhlIHJlY3Qgd2l0aGluIHdo
aWNoIHdlIHNob3VsZG4ndCBzbmFwLCBieSBleHBhbmRpbmcgdGhlIHRyYWNrIHJlY3QKICAgICAv
LyBpbiBib3RoIGRpbWVuc2lvbnMuCkBAIC05MSw3ICs5MSw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsCiAgICAgcmV0dXJuICFyZWN0LmNvbnRhaW5zKG1vdXNlUG9zaXRpb24pOwogfQogCi12
b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0Nv
bnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Ny
b2xsYmFyUGFydCBwYXJ0VHlwZSkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFp
bnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCiB7
CiAgICAgYm9vbCBob3J6ID0gc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxT
Y3JvbGxiYXI7CiAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21p
dW1XaW46OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqCiAg
ICAgICAgIGFsaWduUmVjdCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6
cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bVdpbjo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFy
dCBwYXJ0KQogewogICAgIGJvb2wgaG9yeiA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBI
b3Jpem9udGFsU2Nyb2xsYmFyOwogCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtV2luOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxi
YXIqIHNjcm8KICAgICAgICAgcmVjdCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bVdpbjo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6
cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGJvb2wgaG9yeiA9IHNjcm9sbGJh
ci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyOwogCkBAIC0xNTIsNyArMTUy
LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWludFRodW1iKEdyYXBoaWNz
Q29udGV4dCogZ2MsIFNjcm9sbGJhciogc2Nyb2wKICAgICAgICAgcmVjdCk7CiB9CiAKLWludCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZVN0YXRlKFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpIGNvbnN0CitpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bVdpbjo6Z2V0VGhlbWVTdGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3Jv
bGxiYXJQYXJ0IHBhcnQpIGNvbnN0CiB7CiAgICAgLy8gV2hlbiBkcmFnZ2luZyB0aGUgdGh1bWIs
IGRyYXcgdGh1bWIgcHJlc3NlZCBhbmQgb3RoZXIgc2VnbWVudHMgbm9ybWFsCiAgICAgLy8gcmVn
YXJkbGVzcyBvZiB3aGVyZSB0aGUgY3Vyc29yIGFjdHVhbGx5IGlzLiAgU2VlIGFsc28gZm91ciBw
bGFjZXMgaW4KQEAgLTE3MSw3ICsxNzEsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bjo6Z2V0VGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydAogICAg
IHJldHVybiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpID09IHBhcnQpID8gU0NSQlNfUFJFU1NF
RCA6IFNDUkJTX05PUk1BTDsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46Omdl
dFRoZW1lQXJyb3dTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0
KSBjb25zdAoraW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldFRoZW1lQXJyb3dTdGF0
ZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpIGNv
bnN0CiB7CiAgICAgLy8gV2UgY291bGQgdGFrZSBhZHZhbnRhZ2Ugb2Yga25vd2luZyB0aGUgdmFs
dWVzIGluIHRoZSBzdGF0ZSBlbnVtIHRvIHdyaXRlCiAgICAgLy8gc29tZSBzaW1wbGVyIGNvZGUs
IGJ1dCB0cmVhdGluZyB0aGUgc3RhdGUgZW51bSBhcyBhIGJsYWNrIGJveCBzZWVtcwpAQCAtMjIx
LDcgKzIyMSw3IEBAIGludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93
U3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhCiAgICAgcmV0dXJuIChzY3JvbGxi
YXItPnByZXNzZWRQYXJ0KCkgPT0gcGFydCkgPyBBQlNfRE9XTlBSRVNTRUQgOiBBQlNfRE9XTk5P
Uk1BTDsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldENsYXNzaWNUaGVt
ZVN0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQpIGNvbnN0Citp
bnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3NpY1RoZW1lU3RhdGUoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KSBjb25zdAogewog
ICAgIC8vIFdoZW4gZHJhZ2dpbmcgdGhlIHRodW1iLCBkcmF3IHRoZSBidXR0b25zIG5vcm1hbCBl
dmVuIHdoZW4gaG92ZXJlZC4KICAgICBpZiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFydCgpID09IFRo
dW1iUGFydCkKQEAgLTIzNSwxMiArMjM1LDEyIEBAIGludCBTY3JvbGxiYXJUaGVtZUNocm9taXVt
V2luOjpnZXRDbGFzc2ljVGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsCiAg
ICAgcmV0dXJuIChzY3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gcGFydCkgPyAoREZDU19QVVNI
RUQgfCBERkNTX0ZMQVQpIDogMDsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2lu
OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpzaG91bGRDZW50ZXJPblRo
dW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQp
CiB7CiAgICAgcmV0dXJuIGV2dC5zaGlmdEtleSgpICYmIGV2dC5idXR0b24oKSA9PSBMZWZ0QnV0
dG9uOwogfQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmJ1dHRvblNpemUo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitJbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46
OmJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICAvLyBP
dXIgZGVzaXJlZCByZWN0IGlzIGVzc2VudGlhbGx5IHRoaWNrbmVzcyBieSB0aGlja25lc3MuCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW1XaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9s
bGJhclRoZW1lQ2hyb21pdW1XaW4uaAppbmRleCA2OWNmYTEzMWM1Y2IwNGU5YjUyMTBiNzY1Y2Zi
NDgxZThkZGNiMTM1Li5hYzg4ODFmOTNiNWRiMWFmZjQ2NzlhNjA2M2U3YmE3ZTg2ZjU1MWZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5oCkBAIC0zOCwxOSArMzgsMTkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tu
ZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplKTsKICAgICAgICAgdmlydHVhbCBib29sIGludmFsaWRh
dGVPbk1vdXNlRW50ZXJFeGl0KCk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTbmFwQmFj
a1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAg
ICAgICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKICAgICBwcm90ZWN0ZWQ6
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3Qg
SW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVt
YihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRm
b3JtTW91c2VFdmVudCYpOwotICAgICAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3Jv
bGxiYXIqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQ
YXJ0KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVhbCBib29sIHNo
b3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmKTsKKyAgICAgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGludCBnZXRUaGVtZVN0YXRl
KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQpIGNvbnN0OwotICAgICAgICBpbnQgZ2V0VGhlbWVB
cnJvd1N0YXRlKFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQpIGNvbnN0OwotICAgICAgICBpbnQg
Z2V0Q2xhc3NpY1RoZW1lU3RhdGUoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCkgY29uc3Q7Cisg
ICAgICAgIGludCBnZXRUaGVtZVN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFy
UGFydCkgY29uc3Q7CisgICAgICAgIGludCBnZXRUaGVtZUFycm93U3RhdGUoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0KSBjb25zdDsKKyAgICAgICAgaW50IGdldENsYXNzaWNU
aGVtZVN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCkgY29uc3Q7CiAg
ICAgfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5jcHAKaW5kZXggNjJkZjAwNWQ2NzU3MWQxNGFk
Mzk0MzYwZDU2YzQ5OGU0ZGY5MmJmYi4uMjQwYjUwMTQ3NzljMTgyZDE0MzkwYzNmOGMzOTM3NzU3
N2U5M2E4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJh
clRoZW1lRWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFy
VGhlbWVFZmwuY3BwCkBAIC00OSwxMSArNDksMTEgQEAgaW50IFNjcm9sbGJhclRoZW1lRWZsOjpz
Y3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiAgICAg
cmV0dXJuIDA7IC8vIHdlIHBhaW50IG9uIHRvcAogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lRWZs
OjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFy
VGhlbWVFZmw6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIpCiB7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVFZmw6OnVucmVnaXN0ZXJTY3JvbGxiYXIo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lRWZsOjp1bnJlZ2lzdGVy
U2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmgKaW5kZXggMGZl
MTY4ODFlMmU0NTZlNmUxMjMwMWFlZWY4NmMyNjViZDMzMjM0Yi4uMjhjMTYzZWQzODg2MTA5M2Fk
Nzg5NzUxMTJlNTYxYjE4ZjE2NzAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
ZWZsL1Njcm9sbGJhclRoZW1lRWZsLmgKQEAgLTM5LDggKzM5LDggQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVn
dWxhclNjcm9sbGJhcik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFy
KFNjcm9sbGJhciogc2Nyb2xsYmFyKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxi
YXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNj
cm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAKaW5kZXggZTk5MzY0ZjJh
N2ZjYWY0ODg4MzBiNDY4ZGUxZDE4YWQ3NTA0ZTkwZi4uOTRlM2ZkNzZmN2ZmYzUyMzBmYzg0N2Zm
OWZlY2FmNDNkYzQ2ZmEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Njcm9sbGJhclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2Nyb2xsYmFyVGhlbWVHdGsuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIEhhc2hTZXQ8U2Nyb2xsYmFyKj4qIGdTY3JvbGxiYXJzOworc3RhdGlj
IEhhc2hTZXQ8U2Nyb2xsYmFyVGhlbWVDbGllbnQqPiogZ1Njcm9sbGJhcnM7CiAKIFNjcm9sbGJh
clRoZW1lKiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQogewpAQCAtNDUsMTQgKzQ1LDE0
IEBAIFNjcm9sbGJhclRoZW1lR3RrOjp+U2Nyb2xsYmFyVGhlbWVHdGsoKQogewogfQogCi12b2lk
IFNjcm9sbGJhclRoZW1lR3RrOjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJh
cikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKCFnU2Nyb2xsYmFycykKLSAgICAgICAg
Z1Njcm9sbGJhcnMgPSBuZXcgSGFzaFNldDxTY3JvbGxiYXIqPjsKKyAgICAgICAgZ1Njcm9sbGJh
cnMgPSBuZXcgSGFzaFNldDxTY3JvbGxiYXJUaGVtZUNsaWVudCo+OwogICAgIGdTY3JvbGxiYXJz
LT5hZGQoc2Nyb2xsYmFyKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dW5yZWdpc3Rl
clNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6
OnVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsK
ICAgICBnU2Nyb2xsYmFycy0+cmVtb3ZlKHNjcm9sbGJhcik7CiAgICAgaWYgKGdTY3JvbGxiYXJz
LT5pc0VtcHR5KCkpIHsKQEAgLTY5LDkgKzY5LDkgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6
dXBkYXRlU2Nyb2xsYmFyc0ZyYW1lVGhpY2tuZXNzKCkKICAgICAvLyBVcGRhdGUgdGhlIHRoaWNr
bmVzcyBvZiBldmVyeSBpbnRlcmlvciBmcmFtZSBzY3JvbGxiYXIgd2lkZ2V0LiBUaGUKICAgICAv
LyBwbGF0Zm9ybS1pbmRlcGVuZGVudCBzY3JvbGxiYXIgdGhlbSBjb2RlIGlzbid0IHlldCBzbWFy
dCBlbm91Z2ggdG8gZ2V0CiAgICAgLy8gdGhpcyBpbmZvcm1hdGlvbiB3aGVuIGl0IHBhaW50cy4K
LSAgICBIYXNoU2V0PFNjcm9sbGJhcio+OjppdGVyYXRvciBlbmQgPSBnU2Nyb2xsYmFycy0+ZW5k
KCk7Ci0gICAgZm9yIChIYXNoU2V0PFNjcm9sbGJhcio+OjppdGVyYXRvciBpdCA9IGdTY3JvbGxi
YXJzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIgPSAoKml0KTsKKyAgICBIYXNoU2V0PFNjcm9sbGJhclRoZW1lQ2xpZW50Kj46Oml0ZXJh
dG9yIGVuZCA9IGdTY3JvbGxiYXJzLT5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8U2Nyb2xsYmFy
VGhlbWVDbGllbnQqPjo6aXRlcmF0b3IgaXQgPSBnU2Nyb2xsYmFycy0+YmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CisgICAgICAgIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIgPSAo
Kml0KTsKIAogICAgICAgICAvLyBUb3AtbGV2ZWwgc2Nyb2xsYmFyIGkuZS4gc2Nyb2xsYmFycyB3
aG8gaGF2ZSBhIHBhcmVudCBTY3JvbGxWaWV3CiAgICAgICAgIC8vIHdpdGggbm8gcGFyZW50IGFy
ZSBuYXRpdmUsIGFuZCB0aHVzIGRvIG5vdCBuZWVkIHRvIGJlIHJlc2l6ZWQuCkBAIC04NiwxNCAr
ODYsMTQgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dXBkYXRlU2Nyb2xsYmFyc0ZyYW1lVGhp
Y2tuZXNzKCkKICAgICB9CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6Omhhc1RodW1iKFNj
cm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6aGFzVGh1bWIoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBq
dXN0IGNhbGxlZCBhcyBhIHBhaW50LXRpbWUgb3B0aW1pemF0aW9uIHRvIHNlZSBpZgogICAgIC8v
IHBhaW50aW5nIHRoZSB0aHVtYiBjYW4gYmUgc2tpcHBlZC4gIFdlIGRvbid0IGhhdmUgdG8gYmUg
ZXhhY3QgaGVyZS4KICAgICByZXR1cm4gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+IDA7CiB9CiAK
LUludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1l
R3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3Jv
bGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRvbkVuZFBh
cnQgJiYgIW1faGFzQmFja0J1dHRvbkVuZFBhcnQpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7
CkBAIC0xMTQsNyArMTE0LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6YmFja0J1dHRv
blJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGEKICAgICByZXR1cm4g
SW50UmVjdCh4LCBzY3JvbGxiYXItPnkoKSArIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSBtX3Ryb3Vn
aEJvcmRlcldpZHRoIC0gKDIgKiBzaXplLmhlaWdodCgpKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhl
aWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6Zm9yd2FyZEJ1dHRvblJl
Y3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKK0ludFJl
Y3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICBpZiAocGFy
dCA9PSBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0ICYmICFtX2hhc0ZvcndhcmRCdXR0b25TdGFydFBh
cnQpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CkBAIC0xNDAsNyArMTQwLDcgQEAgSW50UmVj
dCBTY3JvbGxiYXJUaGVtZUd0azo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gSW50UmVjdCh4LCBzY3JvbGxiYXItPnkoKSAr
IG1fdHJvdWdoQm9yZGVyV2lkdGggKyBzaXplLmhlaWdodCgpLCBzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0cmFja1JlY3QoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0cmFj
a1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCkKIHsKICAgICAvLyBU
aGUgcGFkZGluZyBhbG9uZyB0aGUgdGh1bWIgbW92ZW1lbnQgYXhpcyBpbmNsdWRlcyB0aGUgdHJv
dWdoIGJvcmRlcgogICAgIC8vIHBsdXMgdGhlIHNpemUgb2Ygc3RlcHBlciBzcGFjaW5nICh0aGUg
c3BhY2UgYmV0d2VlbiB0aGUgc3RlcHBlciBhbmQKQEAgLTE4MCw3ICsxODAsNyBAQCBJbnRSZWN0
IFNjcm9sbGJhclRoZW1lR3RrOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wp
CiAgICAgICAgICAgICAgICAgICAgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0gKDIg
KiBtb3ZlbWVudEF4aXNQYWRkaW5nKSAtIGJ1dHRvbnNXaWR0aCk7CiB9CiAKLUludFJlY3QgU2Ny
b2xsYmFyVGhlbWVHdGs6OnRodW1iUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50
UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6
OnRodW1iUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0
JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KQogewogICAgIEludFJlY3QgdHJhY2tSZWN0ID0gY29u
c3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxiYXIsIHVuY29uc3RyYWluZWRUcmFj
a1JlY3QpOwogICAgIGludCB0aHVtYlBvcyA9IHRodW1iUG9zaXRpb24oc2Nyb2xsYmFyKTsKQEAg
LTE5MSw3ICsxOTEsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0aHVtYlJlY3QoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29ucwogICAgIHJldHVybiBJbnRS
ZWN0KHRyYWNrUmVjdC54KCkgKyAodHJhY2tSZWN0LndpZHRoKCkgLSBtX3RodW1iRmF0bmVzcykg
LyAyLCB0cmFja1JlY3QueSgpICsgdGh1bWJQb3MsIG1fdGh1bWJGYXRuZXNzLCB0aHVtYkxlbmd0
aChzY3JvbGxiYXIpKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBkYW1hZ2VSZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgaWYgKGdyYXBoaWNzQ29udGV4
dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjAsNyAr
MjYwLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBTY3JvbGxiYXJUaGVtZUd0azo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQorYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6
c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgZXZlbnQpCiB7CiAgICAgcmV0dXJuIChldmVudC5zaGlmdEtleSgpICYmIGV2
ZW50LmJ1dHRvbigpID09IExlZnRCdXR0b24pIHx8IChldmVudC5idXR0b24oKSA9PSBNaWRkbGVC
dXR0b24pOwogfQpAQCAtMjcwLDcgKzI3MCw3IEBAIGludCBTY3JvbGxiYXJUaGVtZUd0azo6c2Ny
b2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplKQogICAgIHJldHVybiBtX3RodW1i
RmF0bmVzcyArIChtX3Ryb3VnaEJvcmRlcldpZHRoICogMik7CiB9CiAKLUludFNpemUgU2Nyb2xs
YmFyVGhlbWVHdGs6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitJbnRTaXplIFNj
cm9sbGJhclRoZW1lR3RrOjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9s
bGJhcikKICAgICAgICAgcmV0dXJuIEludFNpemUobV90aHVtYkZhdG5lc3MsIG1fc3RlcHBlclNp
emUpOwpAQCAtMjc5LDcgKzI3OSw3IEBAIEludFNpemUgU2Nyb2xsYmFyVGhlbWVHdGs6OmJ1dHRv
blNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIEludFNpemUobV9zdGVwcGVy
U2l6ZSwgbV90aHVtYkZhdG5lc3MpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVHdGs6Om1pbmlt
dW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUd0
azo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7
CiAgICAgcmV0dXJuIG1fbWluVGh1bWJMZW5ndGg7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5oCmluZGV4IDQ1ZTA5M2IxZWM5N2QxYWZhYTI0
YzU4MzMxNTY2OTMwMmU4NWNkNjMuLmU3M2RmMjg1NTAxYjU4MjZkYzA1OWI4M2JmYzNkOWE0MTcw
ZDRiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJU
aGVtZUd0ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVt
ZUd0ay5oCkBAIC0zNywyOSArMzcsMjkgQEAgcHVibGljOgogICAgIFNjcm9sbGJhclRoZW1lR3Rr
KCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhlbWVHdGsoKTsKIAotICAgIHZpcnR1YWwgYm9v
bCBoYXNCdXR0b25zKFNjcm9sbGJhciopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIGJv
b2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25S
ZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wpOwotICAgIHZpcnR1YWwgSW50UmVj
dCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sKTsKLSAg
ICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wpOwotICAgIEludFJl
Y3QgdGh1bWJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFj
a1JlY3QpOwotICAgIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7Ci0gICAgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKik7Ci0gICAgdm9pZCBwYWludFRyYWNrQmFj
a2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0g
ICAgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0Kiwg
U2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50
KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJU
aGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxi
YXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wpOworICAgIHZpcnR1YWwgSW50UmVj
dCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQs
IGJvb2wpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBib29sKTsKKyAgICBJbnRSZWN0IHRodW1iUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCos
IGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QpOworICAgIGJvb2wgcGFpbnQo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0KTsKKyAgICB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZvaWQgcGFpbnRUcmFja0JhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRS
ZWN0Jik7CisgICAgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRv
bihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3Qm
LCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIHZp
cnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7Ci0gICAg
dmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBpbnQg
bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0
b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRo
dW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKICAgICAvLyBUT0RPOiBUaGVzZSBh
cmUgdGhlIGRlZmF1bHQgR1RLKyB2YWx1ZXMuIEF0IHNvbWUgcG9pbnQgd2Ugc2hvdWxkIHB1bGwg
dGhlc2UgZnJvbSB0aGUgdGhlbWUgaXRzZWxmLgogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxB
dXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMjA7IH0KICAgICB2aXJ0dWFsIGRvdWJs
ZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMDI7IH0KICAgICB2b2lkIHVwZGF0
ZVRoZW1lUHJvcGVydGllcygpOwogICAgIHZvaWQgdXBkYXRlU2Nyb2xsYmFyc0ZyYW1lVGhpY2tu
ZXNzKCk7Ci0gICAgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKLSAgICB2b2lk
IHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CisgICAgdm9pZCByZWdpc3RlclNjcm9s
bGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJh
cihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiBwcm90ZWN0ZWQ6CiAjaWZuZGVmIEdUS19BUElf
VkVSU0lPTl8yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xs
YmFyVGhlbWVHdGsyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJU
aGVtZUd0azIuY3BwCmluZGV4IDcyOWJkMTI0ZGUyYjIxODU0OTk3YjE5ODc2MzBjZGY4OWJlYTkx
MDMuLjg2NmJiOGExZDJmNzFhYTg2NGVhNTdlZDMwM2YxMzYwNzJjMWM0MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwCkBAIC02
NiwxMyArNjYsMTMgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dXBkYXRlVGhlbWVQcm9wZXJ0
aWVzKCkKICAgICB1cGRhdGVTY3JvbGxiYXJzRnJhbWVUaGlja25lc3MoKTsKIH0KIAotc3RhdGlj
IEd0a1dpZGdldCogZ2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQor
c3RhdGljIEd0a1dpZGdldCogZ2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgUmVuZGVyVGhlbWVHdGsqIHRoZW1lID0gc3RhdGljX2Nh
c3Q8UmVuZGVyVGhlbWVHdGsqPihSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCkuZ2V0KCkpOwog
ICAgIHJldHVybiBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIg
PyB0aGVtZS0+Z3RrVlNjcm9sbGJhcigpIDogdGhlbWUtPmd0a0hTY3JvbGxiYXIoKTsKIH0KIAot
dm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
K3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50
UmVjdCYgcmVjdCkKIHsKICAgICAvLyBQYWludCB0aGUgdHJhY2sgYmFja2dyb3VuZC4gSWYgdGhl
IHRyb3VnaC11bmRlci1zdGVwcGVycyBwcm9wZXJ0eSBpcyB0cnVlLCB0aGlzCiAgICAgLy8gc2hv
dWxkIGJlIHRoZSBmdWxsIHNpemUgb2YgdGhlIHNjcm9sbGJhciwgYnV0IGlmIGlzIGZhbHNlLCBp
dCBzaG91bGQgb25seSBiZSB0aGUKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVt
ZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3Jv
bGxiYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9BQ1RJVkUsIEdU
S19TSEFET1dfSU4sICJ0cm91Z2giKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFp
bnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFy
KiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJhckJhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyKQogewogICAgIEludFJlY3QgZnVsbFNjcm9sbGJhclJlY3QgPSBJbnRSZWN0KHNjcm9s
bGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSwgc2Nyb2xsYmFyLT53aWR0aCgpLCBzY3JvbGxiYXIt
PmhlaWdodCgpKTsKIApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpw
YWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NUQVRFX05PUk1BTCwgR1RLX1NIQURP
V19JTiwgInNjcm9sbGVkX3dpbmRvdyIpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpw
YWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1i
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBHdGtXaWRnZXQqIHdpZGdldCA9IGdldFdp
ZGdldEZvclNjcm9sbGJhcihzY3JvbGxiYXIpOwogICAgIGdib29sZWFuIGFjdGl2YXRlU2xpZGVy
OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VGh1bWIo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhCiAgICAgd2lkZ2V0
Q29udGV4dC5ndGtQYWludFNsaWRlcihzbGlkZXJSZWN0LCB3aWRnZXQsIHN0YXRlVHlwZSwgc2hh
ZG93VHlwZSwgInNsaWRlciIsIG9yaWVudGF0aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVt
ZUd0azo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBT
Y3JvbGxiYXJUaGVtZUd0azo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3Jv
bGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgLy8gVGhlIGJ1dHRvbnMgd2lsbCBiZSBkaXNhYmxlZCBp
ZiB0aGUgdGh1bWIgaXMgYXMgdGhlIGFwcHJvcHJpYXRlIGV4dHJlbWUuCiAgICAgR3RrU2hhZG93
VHlwZSBzaGFkb3dUeXBlID0gR1RLX1NIQURPV19PVVQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGszLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azMuY3BwCmluZGV4IDRjMzNlNjZkYjhmZmVm
YzNmNDIzNDZjYWQwZWVlNjdlZTZjZDQ1ZmUuLjk3NDljNTQzZjNkZGY2YjMxNWVmZmI5OGE3NTlm
ZjViMDAyZDcwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3Jv
bGxiYXJUaGVtZUd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3Jv
bGxiYXJUaGVtZUd0azMuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyB2b2lkIGFwcGx5U2Ny
b2xsYmFyU3R5bGVDb250ZXh0Q2xhc3NlcyhHdGtTdHlsZUNvbnRleHQqIGNvbnRleHQsIFNjcm9s
bGJhCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfYWRkX2NsYXNzKGNvbnRleHQsIG9yaWVudGF0aW9u
ID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gIEdUS19TVFlMRV9DTEFTU19WRVJUSUNBTCA6IEdUS19T
VFlMRV9DTEFTU19IT1JJWk9OVEFMKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFp
bnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBh
aW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBQYWlu
dCB0aGUgdHJhY2sgYmFja2dyb3VuZC4gSWYgdGhlIHRyb3VnaC11bmRlci1zdGVwcGVycyBwcm9w
ZXJ0eSBpcyB0cnVlLCB0aGlzCiAgICAgLy8gc2hvdWxkIGJlIHRoZSBmdWxsIHNpemUgb2YgdGhl
IHNjcm9sbGJhciwgYnV0IGlmIGlzIGZhbHNlLCBpdCBzaG91bGQgb25seSBiZSB0aGUKQEAgLTk0
LDcgKzk0LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIKICAgICBndGtfc3R5bGVfY29udGV4
dF9yZXN0b3JlKG1fY29udGV4dCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50
U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciog
c2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3Jv
dW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhcikKIHsKICAgICBndGtfc3R5bGVfY29udGV4dF9zYXZlKG1fY29udGV4dCk7CiAKQEAgLTEw
NSw3ICsxMDUsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJhckJhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbAogICAgIGd0a19zdHlsZV9jb250
ZXh0X3Jlc3RvcmUobV9jb250ZXh0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFp
bnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBj
b25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2F2ZShtX2Nv
bnRleHQpOwogCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFp
bnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmEKICAg
ICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKG1fY29udGV4dCk7CiB9CiAKLXZvaWQgU2Nyb2xs
YmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkK
K3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGd0a19zdHlsZV9jb250ZXh0X3NhdmUobV9j
b250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9s
bGJhclRoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhl
bWVNYWMuaAppbmRleCAxM2Q0NGMyM2QzYjMzNjIzNmZiNjQwOThmYTg3MGFlYzhjN2I1NjU4Li5k
MTRkYTZkYjI0YjA3YTYyOTdkMTI3NmE0MWYzYmJiM2VlMTEyNTkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaApAQCAtMzksNDYgKzM5LDQ2
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcHJlZmVyZW5jZXNDaGFuZ2VkKCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogI2lmICFQTEFU
Rk9STShDSFJPTUlVTSkKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2aXJ0
dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKICNlbmRpZgogCiAgICAgdmlydHVhbCBpbnQgc2Ny
b2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcik7
CiAgICAgCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKFNjcm9s
bGJhciopOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqKTsKIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Ny
b2xsVGltZXJEZWxheSgpOwogICAgIHZpcnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1lckRlbGF5
KCk7CiAKICAgICB2aXJ0dWFsIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgYnV0dG9uc1BsYWNl
bWVudCgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9s
bGJhciopOwotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciop
OworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVu
dCopOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1l
Q2xpZW50Kik7CiAKLSAgICB2b2lkIHNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFy
KiwgU2Nyb2xsYmFyUGFpbnRlcik7Ci0gICAgU2Nyb2xsYmFyUGFpbnRlciBwYWludGVyRm9yU2Ny
b2xsYmFyKFNjcm9sbGJhciopOworICAgIHZvaWQgc2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcihT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhaW50ZXIpOworICAgIFNjcm9sbGJhclBh
aW50ZXIgcGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiAgICAg
c3RhdGljIGJvb2wgaXNDdXJyZW50bHlEcmF3aW5nSW50b0xheWVyKCk7CiAgICAgc3RhdGljIHZv
aWQgc2V0SXNDdXJyZW50bHlEcmF3aW5nSW50b0xheWVyKGJvb2wpOwogCiBwcm90ZWN0ZWQ6Ci0g
ICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBib29s
IGhhc1RodW1iKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9s
bGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRo
ZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xs
YmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFs
IEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9v
bCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9s
bGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tC
dXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2Up
OworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBi
b29sIHBhaW50aW5nID0gZmFsc2UpOwogCiAgICAgdmlydHVhbCBpbnQgbWF4T3ZlcmxhcEJldHdl
ZW5QYWdlcygpIHsgcmV0dXJuIDQwOyB9CiAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJM
ZW5ndGgoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNj
cm9sbGJhclRoZW1lQ2xpZW50Kik7CiAgICAgCi0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRl
ck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgdmly
dHVhbCBib29sIHNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9sbGJhciosIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJP
blRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7
CisgICAgdmlydHVhbCBib29sIHNob3VsZERyYWdEb2N1bWVudEluc3RlYWRPZlRodW1iKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAgICAgaW50IHNj
cm9sbGJhclBhcnRUb0hJUHJlc3NlZFN0YXRlKFNjcm9sbGJhclBhcnQpOwogCiAjaWYgIVBMQVRG
T1JNKENIUk9NSVVNKSAmJiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShS
VUJCRVJfQkFORElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
Y3JvbGxiYXJUaGVtZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxi
YXJUaGVtZU1hYy5tbQppbmRleCBlZTI4ZmIyODY0YWRlMTc1OTc2ODU3YzU3MWMxOGNiODk0YmE4
MjkxLi5lNDc0NjhiZDU2MDM4NjU4OTJlMmMxNGQ5NGEzMTNkYWEwNzZhMmMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCkBAIC01MCw3
ICs1MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXR5cGVkZWYgSGFzaE1hcDxTY3JvbGxiYXIqLCBSZXRhaW5QdHI8U2Nyb2xsYmFyUGFpbnRl
cj4gPiBTY3JvbGxiYXJQYWludGVyTWFwOwordHlwZWRlZiBIYXNoTWFwPFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgUmV0YWluUHRyPFNjcm9sbGJhclBhaW50ZXI+ID4gU2Nyb2xsYmFyUGFpbnRlck1h
cDsKIAogc3RhdGljIFNjcm9sbGJhclBhaW50ZXJNYXAqIHNjcm9sbGJhck1hcCgpCiB7CkBAIC0x
NjIsNyArMTYyLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQXJyb3dQbGFjZW1lbnQoKQogICAgIH0K
IH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lTWFjOjpyZWdpc3RlclNjcm9sbGJhcihT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChpc1Njcm9sbGJhck92
ZXJsYXlBUElBdmFpbGFibGUoKSkgewogICAgICAgICBib29sIGlzSG9yaXpvbnRhbCA9IHNjcm9s
bGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyOwpAQCAtMTc1LDE5ICsx
NzUsMTkgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIpCiAgICAgfQogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTWFjOjp1bnJl
Z2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVt
ZU1hYzo6dW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
KQogewogICAgIHNjcm9sbGJhck1hcCgpLT5yZW1vdmUoc2Nyb2xsYmFyKTsKIH0KIAotdm9pZCBT
Y3JvbGxiYXJUaGVtZU1hYzo6c2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXIqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFpbnRlciBuZXdQYWludGVyKQordm9pZCBTY3JvbGxiYXJUaGVt
ZU1hYzo6c2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyLCBTY3JvbGxiYXJQYWludGVyIG5ld1BhaW50ZXIpCiB7CiAgICAgc2Nyb2xsYmFyTWFw
KCktPnNldChzY3JvbGxiYXIsIG5ld1BhaW50ZXIpOwogICAgIHVwZGF0ZUVuYWJsZWRTdGF0ZShz
Y3JvbGxiYXIpOwogICAgIHVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShzY3JvbGxiYXIpOwog
fQogCi1TY3JvbGxiYXJQYWludGVyIFNjcm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9yU2Nyb2xs
YmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorU2Nyb2xsYmFyUGFpbnRlciBTY3JvbGxiYXJUaGVt
ZU1hYzo6cGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
KQogewogICAgIHJldHVybiBzY3JvbGxiYXJNYXAoKS0+Z2V0KHNjcm9sbGJhcikuZ2V0KCk7CiB9
CkBAIC0yNDgsMTAgKzI0OCwxMCBAQCBib29sIFNjcm9sbGJhclRoZW1lTWFjOjp1c2VzT3Zlcmxh
eVNjcm9sbGJhcnMoKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU2Ny
b2xsYmFyVGhlbWVNYWM6OnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXIqIHNj
cm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVwZGF0ZVNjcm9sbGJhck92ZXJsYXlT
dHlsZShTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIFNjcm9sbGJhclBh
aW50ZXIgcGFpbnRlciA9IHBhaW50ZXJGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyKTsKLSAgICBzd2l0
Y2ggKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkp
IHsKKyAgICBzd2l0Y2ggKHNjcm9sbGJhci0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkpIHsKICAg
ICBjYXNlIFNjcm9sbGJhck92ZXJsYXlTdHlsZURlZmF1bHQ6CiAgICAgICAgIFtwYWludGVyIHNl
dEtub2JTdHlsZTpOU1Njcm9sbGVyS25vYlN0eWxlRGVmYXVsdF07CiAgICAgICAgIGJyZWFrOwpA
QCAtMjc5LDcgKzI3OSw3IEBAIFNjcm9sbGJhckJ1dHRvbnNQbGFjZW1lbnQgU2Nyb2xsYmFyVGhl
bWVNYWM6OmJ1dHRvbnNQbGFjZW1lbnQoKSBjb25zdAogICAgIHJldHVybiBnQnV0dG9uUGxhY2Vt
ZW50OwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNCdXR0b25zKFNjcm9sbGJhciog
c2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6aGFzQnV0dG9ucyhTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiBzY3JvbGxiYXItPmVuYWJsZWQo
KSAmJiBidXR0b25zUGxhY2VtZW50KCkgIT0gU2Nyb2xsYmFyQnV0dG9uc05vbmUKICAgICAgICAg
ICAgICAmJiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIK
QEAgLTI4Nyw3ICsyODcsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lTWFjOjpoYXNCdXR0b25zKFNj
cm9sbGJhciogc2Nyb2xsYmFyKQogICAgICAgICAgICAgIDogc2Nyb2xsYmFyLT5oZWlnaHQoKSkg
Pj0gMiAqIChjUmVhbEJ1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldIC0gY0J1
dHRvbkhpdEluc2V0W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0pOwogfQogCi1ib29sIFNjcm9s
bGJhclRoZW1lTWFjOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jvb2wgU2Nyb2xs
YmFyVGhlbWVNYWM6Omhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7
CiAgICAgaW50IG1pbkxlbmd0aEZvclRodW1iOwogICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlB
UElBdmFpbGFibGUoKSkgewpAQCAtMzE5LDcgKzMxOSw3IEBAIHN0YXRpYyBJbnRSZWN0IGJ1dHRv
blJlcGFpbnRSZWN0KGNvbnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJhck9yaWVudGF0
aW9uCiAgICAgcmV0dXJuIHBhaW50UmVjdDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1h
Yzo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFy
dCwgYm9vbCBwYWludGluZykKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmJhY2tCdXR0b25S
ZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwg
Ym9vbCBwYWludGluZykKIHsKICAgICBJbnRSZWN0IHJlc3VsdDsKICAgICAKQEAgLTM1Myw3ICsz
NTMsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxi
YXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LUludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCitJbnRSZWN0IFNj
cm9sbGJhclRoZW1lTWFjOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCog
c2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCiB7CiAgICAgSW50
UmVjdCByZXN1bHQ7CiAgICAgCkBAIC0zOTMsNyArMzkzLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJU
aGVtZU1hYzo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJh
clBhcnQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFj
Ojp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcpCitJbnRSZWN0
IFNjcm9sbGJhclRoZW1lTWFjOjp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgYm9vbCBwYWludGluZykKIHsKICAgICBpZiAocGFpbnRpbmcgfHwgIWhhc0J1dHRvbnMo
c2Nyb2xsYmFyKSkKICAgICAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7CkBAIC00
MzAsNyArNDMwLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6dHJhY2tSZWN0KFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQogICAgIHJldHVybiBJbnRSZWN0KHNjcm9s
bGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIHN0YXJ0V2lkdGgsIHRoaWNrbmVzcywgc2Nyb2xs
YmFyLT5oZWlnaHQoKSAtIHRvdGFsV2lkdGgpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVNYWM6
Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJU
aGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIpCiB7CiAgICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQogICAgICAg
ICByZXR1cm4gW3Njcm9sbGJhck1hcCgpLT5nZXQoc2Nyb2xsYmFyKS5nZXQoKSBrbm9iTWluTGVu
Z3RoXTsKQEAgLTQzOCw3ICs0MzgsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVNYWM6Om1pbmltdW1U
aHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICAgICAgcmV0dXJuIGNUaHVtYk1p
bkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldOwogfQogCi1ib29sIFNjcm9sbGJhclRo
ZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6c2hvdWxkQ2VudGVyT25UaHVt
YihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQog
ewogICAgIGlmIChldnQuYnV0dG9uKCkgIT0gTGVmdEJ1dHRvbikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnNob3VsZENl
bnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50CiAgICAgcmV0
dXJuIGV2dC5hbHRLZXkoKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6c2hvdWxkRHJh
Z0RvY3VtZW50SW5zdGVhZE9mVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBldmVudCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnNob3VsZERyYWdEb2N1bWVudElu
c3RlYWRPZlRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBldmVudCkKIHsKICAgICByZXR1cm4gZXZlbnQuYWx0S2V5KCk7CiB9CkBAIC00NzAsNyAr
NDcwLDcgQEAgaW50IFNjcm9sbGJhclRoZW1lTWFjOjpzY3JvbGxiYXJQYXJ0VG9ISVByZXNzZWRT
dGF0ZShTY3JvbGxiYXJQYXJ0IHBhcnQpCiAgICAgfQogfQogCi12b2lkIFNjcm9sbGJhclRoZW1l
TWFjOjp1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9s
bGJhclRoZW1lTWFjOjp1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkpCiAg
ICAgICAgIFtzY3JvbGxiYXJNYXAoKS0+Z2V0KHNjcm9sbGJhcikuZ2V0KCkgc2V0RW5hYmxlZDpz
Y3JvbGxiYXItPmVuYWJsZWQoKV07CkBAIC00OTksNyArNDk5LDcgQEAgc3RhdGljIHZvaWQgc2Ny
b2xsYmFyUGFpbnRlclBhaW50KFNjcm9sbGJhclBhaW50ZXIgc2Nyb2xsYmFyUGFpbnRlciwgYm9v
bCBlbmFibGUKIH0KIAogI2lmICFQTEFURk9STShDSFJPTUlVTSkKLWJvb2wgU2Nyb2xsYmFyVGhl
bWVNYWM6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCitib29sIFNjcm9sbGJhclRoZW1lTWFjOjpw
YWludChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgaWYgKGlzU2Nyb2xsYmFy
T3ZlcmxheUFQSUF2YWlsYWJsZSgpKSB7CiAgICAgICAgIGZsb2F0IHZhbHVlID0gMDsKQEAgLTU3
MCw3ICs1NzAsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lTWFjOjpwYWludChTY3JvbGxiYXIqIHNj
cm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjbwogICAgIGlmICghc2Nyb2xsYmFy
LT5lbmFibGVkKCkpCiAgICAgICAgIHRyYWNrSW5mby5lbmFibGVTdGF0ZSA9IGtUaGVtZVRyYWNr
RGlzYWJsZWQ7CiAgICAgZWxzZQotICAgICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBzY3Jv
bGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlzQWN0aXZlKCkgPyBrVGhlbWVUcmFja0FjdGl2ZSA6
IGtUaGVtZVRyYWNrSW5hY3RpdmU7CisgICAgICAgIHRyYWNrSW5mby5lbmFibGVTdGF0ZSA9IHNj
cm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpID8ga1RoZW1lVHJhY2tBY3RpdmUgOiBr
VGhlbWVUcmFja0luYWN0aXZlOwogCiAgICAgaWYgKGhhc1RodW1iKHNjcm9sbGJhcikpCiAgICAg
ICAgIHRyYWNrSW5mby5hdHRyaWJ1dGVzIHw9IGtUaGVtZVRyYWNrU2hvd1RodW1iOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCmlu
ZGV4IDVkMmJjM2VjMDg5NzhlMDM3MzdmYmE3Mzk1YjhiOGNlNzQ2MGQ0NjQuLjZkZTkxY2NiODE5
MjEwNDBjMDg0NzhjMWVlNTY3N2RkZTQzNzQ5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5jcHAKQEAgLTMyLDcgKzMyLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgaW50IGNTY3JvbGxiYXJUaGlja25lc3NbXSA9
IHsgMTUsIDExIH07CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVNb2NrOjp0cmFja1JlY3QoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lTW9jazo6dHJh
Y2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgcmV0
dXJuIHNjcm9sbGJhci0+ZnJhbWVSZWN0KCk7CiB9CkBAIC00MiwxMiArNDIsMTIgQEAgaW50IFNj
cm9sbGJhclRoZW1lTW9jazo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXpl
IGNvbnRyb2xTaXplKQogICAgIHJldHVybiBjU2Nyb2xsYmFyVGhpY2tuZXNzW2NvbnRyb2xTaXpl
XTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHRyYWNrUmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRyYWNrQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHRyYWNrUmVjdCkKIHsKICAgICBjb250ZXh0LT5maWxsUmVj
dCh0cmFja1JlY3QsIHNjcm9sbGJhci0+ZW5hYmxlZCgpID8gQ29sb3I6OmxpZ2h0R3JheSA6IENv
bG9yKDB4RkZFMEUwRTApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKIH0KIAotdm9pZCBTY3JvbGxi
YXJUaGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQordm9pZCBTY3JvbGxiYXJU
aGVtZU1vY2s6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3QpCiB7CiAgICAg
aWYgKHNjcm9sbGJhci0+ZW5hYmxlZCgpKQogICAgICAgICBjb250ZXh0LT5maWxsUmVjdCh0aHVt
YlJlY3QsIENvbG9yOjpkYXJrR3JheSwgQ29sb3JTcGFjZURldmljZVJHQik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaAppbmRleCBlMjU0
ODQyMmEyOGY1ZTcyM2U0MzUzZjhmNDU3NjUyNTNjYjY4NWJiLi42MzMzODQxYWI3OTZiOWRjMjMz
ZjNmNjNlYjgwMGFiZmE3YjBiYjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL1Njcm9sbGJhclRoZW1lTW9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmgKQEAgLTM2LDE1ICszNiwxNSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0g
UmVndWxhclNjcm9sbGJhcik7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0
dG9ucyhTY3JvbGxiYXIqKSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNU
aHVtYihTY3JvbGxiYXIqKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBib29sIGhhc0J1
dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1
YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIHRydWU7IH0K
IAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxi
YXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7IHJldHVybiBJbnRSZWN0KCk7IH0K
LSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xs
YmFyUGFydCwgYm9vbCAvKnBhaW50aW5nKi8gPSBmYWxzZSkgeyByZXR1cm4gSW50UmVjdCgpOyB9
Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29sIHBhaW50aW5n
ID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgLypwYWludGluZyovID0gZmFsc2UpIHsg
cmV0dXJuIEludFJlY3QoKTsgfQorICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVj
dChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgLypwYWludGluZyov
ID0gZmFsc2UpIHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIHZpcnR1YWwgSW50UmVjdCB0cmFj
a1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogICAg
IAotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1
bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZp
cnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRU
aHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmKTsKICAgICAKIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzTW9ja1RoZW1lKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3Jv
bGxiYXJUaGVtZVF0LmNwcAppbmRleCBlMzI0M2VjZmE4OTc5YjlhNjgxZTE1OWJkZWU5YTliMTU5
YzY3NDNjLi5kNGI1OGIxYjBlNWFmMTcwZjk2ZWY4MzY0YjY5YjQ4NGEzNjIyMjU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmNwcApAQCAtMTEy
LDcgKzExMiw3IEBAIHN0YXRpYyBTY3JvbGxiYXJQYXJ0IHNjcm9sbGJhclBhcnQoY29uc3QgUVN0
eWxlOjpTdWJDb250cm9sJiBzYykKICAgICByZXR1cm4gTm9QYXJ0OwogfQogCi1zdGF0aWMgUVN0
eWxlT3B0aW9uU2xpZGVyKiBzdHlsZU9wdGlvblNsaWRlcihTY3JvbGxiYXIqIHNjcm9sbGJhciwg
UVdpZGdldCogd2lkZ2V0ID0gMCkKK3N0YXRpYyBRU3R5bGVPcHRpb25TbGlkZXIqIHN0eWxlT3B0
aW9uU2xpZGVyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFFXaWRnZXQqIHdpZGdl
dCA9IDApCiB7CiAgICAgc3RhdGljIFFTdHlsZU9wdGlvblNsaWRlciBvcHQ7CiAgICAgaWYgKHdp
ZGdldCkKQEAgLTE1NSw3ICsxNTUsNyBAQCBzdGF0aWMgUVN0eWxlT3B0aW9uU2xpZGVyKiBzdHls
ZU9wdGlvblNsaWRlcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgUVdpZGdldCogd2lkZwogICAgIHJl
dHVybiAmb3B0OwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lUXQ6OnBhaW50KFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVj
dCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVRdDo6cGFpbnQoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNv
bnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgaWYgKGdyYXBoaWNzQ29udGV4dC0+dXBk
YXRpbmdDb250cm9sVGludHMoKSkgewogICAgICAgIHNjcm9sbGJhci0+aW52YWxpZGF0ZVJlY3Qo
ZGFtYWdlUmVjdCk7CkBAIC0xOTMsNyArMTkzLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZVF0Ojpw
YWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnQK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZVF0Ojpo
aXRUZXN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2
dCkKK1Njcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVRdDo6aGl0VGVzdChTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAg
ICBRU3R5bGVPcHRpb25TbGlkZXIqIG9wdCA9IHN0eWxlT3B0aW9uU2xpZGVyKHNjcm9sbGJhcik7
CiAgICAgY29uc3QgUVBvaW50IHBvcyA9IHNjcm9sbGJhci0+Y29udmVydEZyb21Db250YWluaW5n
V2luZG93KGV2dC5wb3NpdGlvbigpKTsKQEAgLTIwMiwxMyArMjAyLDEzIEBAIFNjcm9sbGJhclBh
cnQgU2Nyb2xsYmFyVGhlbWVRdDo6aGl0VGVzdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3Qg
UGxhdGZvcm1Nb3VzCiAgICAgcmV0dXJuIHNjcm9sbGJhclBhcnQoc2MpOwogfQogCi1ib29sIFNj
cm9sbGJhclRoZW1lUXQ6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lUXQ6OnNob3VsZENlbnRl
ck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2dCkKIHsKICAgICAvLyBNaWRkbGUgY2xpY2sgY2VudGVycyBzbGlkZXIgdGh1bWIgKGlmIHN1
cHBvcnRlZCkuCiAgICAgcmV0dXJuIHN0eWxlKCktPnN0eWxlSGludChRU3R5bGU6OlNIX1Njcm9s
bEJhcl9NaWRkbGVDbGlja0Fic29sdXRlUG9zaXRpb24pICYmIGV2dC5idXR0b24oKSA9PSBNaWRk
bGVCdXR0b247CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVRdDo6aW52YWxpZGF0ZVBhcnQoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQpCit2b2lkIFNjcm9sbGJhclRoZW1lUXQ6
OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJh
clBhcnQpCiB7CiAgICAgLy8gRklYTUU6IERvIG1vcmUgcHJlY2lzZSBpbnZhbGlkYXRpb24uCiAg
ICAgc2Nyb2xsYmFyLT5pbnZhbGlkYXRlKCk7CkBAIC0yMjQsNyArMjI0LDcgQEAgaW50IFNjcm9s
bGJhclRoZW1lUXQ6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250
cm9sU2l6ZSkKICAgICByZXR1cm4gc3R5bGUoKS0+cGl4ZWxNZXRyaWMoUVN0eWxlOjpQTV9TY3Jv
bGxCYXJFeHRlbnQsICZvLCAwKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lUXQ6OnRodW1iUG9z
aXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVRdDo6dGh1bWJQ
b3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChzY3Jv
bGxiYXItPmVuYWJsZWQoKSkgewogICAgICAgICBmbG9hdCBwb3MgPSAoZmxvYXQpc2Nyb2xsYmFy
LT5jdXJyZW50UG9zKCkgKiAodHJhY2tMZW5ndGgoc2Nyb2xsYmFyKSAtIHRodW1iTGVuZ3RoKHNj
cm9sbGJhcikpIC8gc2Nyb2xsYmFyLT5tYXhpbXVtKCk7CkBAIC0yMzMsMjEgKzIzMywyMSBAQCBp
bnQgU2Nyb2xsYmFyVGhlbWVRdDo6dGh1bWJQb3NpdGlvbihTY3JvbGxiYXIqIHNjcm9sbGJhcikK
ICAgICByZXR1cm4gMDsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lUXQ6OnRodW1iTGVuZ3RoKFNj
cm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lUXQ6OnRodW1iTGVuZ3RoKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgUVN0eWxlT3B0aW9uU2xpZGVy
KiBvcHQgPSBzdHlsZU9wdGlvblNsaWRlcihzY3JvbGxiYXIpOwogICAgIEludFJlY3QgdGh1bWIg
PSBzdHlsZSgpLT5zdWJDb250cm9sUmVjdChRU3R5bGU6OkNDX1Njcm9sbEJhciwgb3B0LCBRU3R5
bGU6OlNDX1Njcm9sbEJhclNsaWRlciwgMCk7CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+b3JpZW50
YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gdGh1bWIud2lkdGgoKSA6IHRodW1iLmhl
aWdodCgpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVRdDo6dHJhY2tQb3NpdGlvbihTY3JvbGxi
YXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVF0Ojp0cmFja1Bvc2l0aW9uKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgUVN0eWxlT3B0aW9uU2xpZGVyKiBv
cHQgPSBzdHlsZU9wdGlvblNsaWRlcihzY3JvbGxiYXIpOwogICAgIEludFJlY3QgdHJhY2sgPSBz
dHlsZSgpLT5zdWJDb250cm9sUmVjdChRU3R5bGU6OkNDX1Njcm9sbEJhciwgb3B0LCBRU3R5bGU6
OlNDX1Njcm9sbEJhckdyb292ZSwgMCk7CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+b3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gdHJhY2sueCgpIC0gc2Nyb2xsYmFyLT54KCkg
OiB0cmFjay55KCkgLSBzY3JvbGxiYXItPnkoKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lUXQ6
OnRyYWNrTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lUXQ6
OnRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgUVN0
eWxlT3B0aW9uU2xpZGVyKiBvcHQgPSBzdHlsZU9wdGlvblNsaWRlcihzY3JvbGxiYXIpOwogICAg
IEludFJlY3QgdHJhY2sgPSBzdHlsZSgpLT5zdWJDb250cm9sUmVjdChRU3R5bGU6OkNDX1Njcm9s
bEJhciwgb3B0LCBRU3R5bGU6OlNDX1Njcm9sbEJhckdyb292ZSwgMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmgKaW5kZXggY2Y0ODgyZGEyMDNiYmYw
ZmI3Y2M2OWU3YzNlMWMxZmZkZDgxZjVlYi4uMDMzN2JmODBjY2Y2NDZkMThlOGYwN2M0ZmU1YWNi
YTNhYTk5NTIyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xs
YmFyVGhlbWVRdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRo
ZW1lUXQuaApAQCAtNDAsMTkgKzQwLDE5IEBAIGNsYXNzIFNjcm9sbGJhclRoZW1lUXQgOiBwdWJs
aWMgU2Nyb2xsYmFyVGhlbWUgewogcHVibGljOgogICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1l
UXQoKTsKIAotICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXIqLCBHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnQo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmll
dyosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmIGNvcm5lclJlY3QpOwogCi0gICAg
dmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgaW52YWxpZGF0ZVBhcnQoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVh
bCB2b2lkIGludmFsaWRhdGVQYXJ0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFy
dCk7CiAKLSAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9sbGJhciopOwotICAgIHZp
cnR1YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgaW50IHRyYWNr
UG9zaXRpb24oU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xs
YmFyKik7CisgICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVu
dCopOworICAgIHZpcnR1YWwgaW50IHRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7
CisgICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwor
ICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKICAg
ICB2aXJ0dWFsIGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBS
ZWd1bGFyU2Nyb2xsYmFyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHAKaW5kZXggMzQzYmJiMjgwZWQ2YWY4NDhmNTFjYzAw
ZWQ5OGYzMWY3ZTE3ZTI0OC4uMWNjNTM4NWUxODdhMjJlYWYxYjA1NWUzNGJlMGZmNjQzODkyOWIz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1l
U2FmYXJpLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhl
bWVTYWZhcmkuY3BwCkBAIC0xMDQsMTQgKzEwNCwxNCBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVTYWZh
cmk6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkK
ICAgICByZXR1cm4gY1Njcm9sbGJhclRoaWNrbmVzc1tjb250cm9sU2l6ZV07CiB9CiAKLWJvb2wg
U2Nyb2xsYmFyVGhlbWVTYWZhcmk6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiti
b29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHNjcm9sbGJhci0+ZW5hYmxlZCgpICYmIChzY3Jv
bGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IAogICAgICAgICAg
ICAgIHNjcm9sbGJhci0+d2lkdGgoKSA6IAogICAgICAgICAgICAgIHNjcm9sbGJhci0+aGVpZ2h0
KCkpID49IDIgKiAoY1JlYWxCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSAt
IGNCdXR0b25IaXRJbnNldFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldKTsKIH0KIAotYm9vbCBT
Y3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29s
IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyKQogewogICAgIHJldHVybiBzY3JvbGxiYXItPmVuYWJsZWQoKSAmJiAoc2Nyb2xsYmFy
LT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyAKICAgICAgICAgICAgICBz
Y3JvbGxiYXItPndpZHRoKCkgOiAKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgSW50UmVjdCBi
dXR0b25SZXBhaW50UmVjdChjb25zdCBJbnRSZWN0JiBidXR0b25SZWN0LCBTY3JvbGxiYXJPcmll
bnRhdGlvbgogICAgIHJldHVybiBwYWludFJlY3Q7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhl
bWVTYWZhcmk6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQ
YXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpi
YWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQ
YXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCiB7CiAgICAgSW50UmVjdCByZXN1bHQ7CiAKQEAgLTE1
Miw3ICsxNTIsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpiYWNrQnV0dG9uUmVj
dChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydAogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmZvcndhcmRCdXR0b25SZWN0KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcpCitJ
bnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcp
CiB7CiAgICAgSW50UmVjdCByZXN1bHQ7CiAgICAgCkBAIC0xODEsNyArMTgxLDcgQEAgc3RhdGlj
IEludFJlY3QgdHJhY2tSZXBhaW50UmVjdChjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QsIFNjcm9s
bGJhck9yaWVudGF0aW9uIG8KICAgICByZXR1cm4gcGFpbnRSZWN0OwogfQogCi1JbnRSZWN0IFNj
cm9sbGJhclRoZW1lU2FmYXJpOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wg
cGFpbnRpbmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjp0cmFja1JlY3QoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCBwYWludGluZykKIHsKICAgICBpZiAocGFp
bnRpbmcgfHwgIWhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkKICAgICAgICAgcmV0dXJuIHNjcm9sbGJh
ci0+ZnJhbWVSZWN0KCk7CkBAIC0xOTMsMzYgKzE5MywzNiBAQCBJbnRSZWN0IFNjcm9sbGJhclRo
ZW1lU2FmYXJpOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcp
CiAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgpICsgY0J1
dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCldLCB0aGlja25lc3MsIHNjcm9sbGJh
ci0+aGVpZ2h0KCkgLSAyICogY0J1dHRvbkxlbmd0aFtzY3JvbGxiYXItPmNvbnRyb2xTaXplKCld
KTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lU2FmYXJpOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6Om1pbmltdW1UaHVt
Ykxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiBj
VGh1bWJNaW5MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXTsKIH0KIAotYm9vbCBTY3Jv
bGxiYXJUaGVtZVNhZmFyaTo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQ
bGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnNob3Vs
ZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4gZXZ0LnNoaWZ0S2V5KCkgJiYgZXZ0LmJ1dHRvbigp
ID09IExlZnRCdXR0b247CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50VHJh
Y2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxiYXIq
IHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdHJhY2tSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0Nv
bnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRy
YWNrUmVjdCkKIHsKICAgICBpZiAoIVNhZmFyaVRoZW1lTGlicmFyeSgpKQogICAgICAgICByZXR1
cm47CiAgICAgTlNDb250cm9sU2l6ZSBzaXplID0gc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpID09
IFNtYWxsU2Nyb2xsYmFyID8gTlNTbWFsbENvbnRyb2xTaXplIDogTlNSZWd1bGFyQ29udHJvbFNp
emU7CiAgICAgVGhlbWVDb250cm9sU3RhdGUgc3RhdGUgPSAwOwotICAgIGlmIChzY3JvbGxiYXIt
PnNjcm9sbGFibGVBcmVhKCktPmlzQWN0aXZlKCkpCisgICAgaWYgKHNjcm9sbGJhci0+aXNTY3Jv
bGxhYmxlQXJlYUFjdGl2ZSgpKQogICAgICAgICBzdGF0ZSB8PSBBY3RpdmVTdGF0ZTsKICAgICBp
ZiAoaGFzQnV0dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICBzdGF0ZSB8PSBFbmFibGVkU3RhdGU7
CiAgICAgcGFpbnRUaGVtZVBhcnQoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2Fs
U2Nyb2xsYmFyID8gVlNjcm9sbFRyYWNrUGFydCA6IEhTY3JvbGxUcmFja1BhcnQsIGdyYXBoaWNz
Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIHRyYWNrUmVjdCwgc2l6ZSwgc3RhdGUpOyAKIH0K
IAotdm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0
KiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBi
dXR0b25SZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJp
OjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgYnV0dG9uUmVjdCwgU2Nyb2xs
YmFyUGFydCBwYXJ0KQogewogICAgIGlmICghU2FmYXJpVGhlbWVMaWJyYXJ5KCkpCiAgICAgICAg
IHJldHVybjsKICAgICBOU0NvbnRyb2xTaXplIHNpemUgPSBzY3JvbGxiYXItPmNvbnRyb2xTaXpl
KCkgPT0gU21hbGxTY3JvbGxiYXIgPyBOU1NtYWxsQ29udHJvbFNpemUgOiBOU1JlZ3VsYXJDb250
cm9sU2l6ZTsKICAgICBUaGVtZUNvbnRyb2xTdGF0ZSBzdGF0ZSA9IDA7Ci0gICAgaWYgKHNjcm9s
bGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSkKKyAgICBpZiAoc2Nyb2xsYmFyLT5p
c1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAgICAgICAgIHN0YXRlIHw9IEFjdGl2ZVN0YXRlOwog
ICAgIGlmIChoYXNCdXR0b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHN0YXRlIHw9IEVuYWJsZWRT
dGF0ZTsKQEAgLTIzNiwxMyArMjM2LDEzIEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBh
aW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxiCiAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1dHRvblJlY3QsIHNpemUsIHN0YXRlKTsKIH0KIAotdm9pZCBT
Y3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkK
K3ZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBn
cmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHRodW1iUmVjdCkKIHsKICAgICBpZiAoIVNhZmFyaVRoZW1lTGlicmFyeSgpKQogICAg
ICAgICByZXR1cm47CiAgICAgTlNDb250cm9sU2l6ZSBzaXplID0gc2Nyb2xsYmFyLT5jb250cm9s
U2l6ZSgpID09IFNtYWxsU2Nyb2xsYmFyID8gTlNTbWFsbENvbnRyb2xTaXplIDogTlNSZWd1bGFy
Q29udHJvbFNpemU7CiAgICAgVGhlbWVDb250cm9sU3RhdGUgc3RhdGUgPSAwOwotICAgIGlmIChz
Y3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlzQWN0aXZlKCkpCisgICAgaWYgKHNjcm9sbGJh
ci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQogICAgICAgICBzdGF0ZSB8PSBBY3RpdmVTdGF0
ZTsKICAgICBpZiAoaGFzVGh1bWIoc2Nyb2xsYmFyKSkKICAgICAgICAgc3RhdGUgfD0gRW5hYmxl
ZFN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJh
clRoZW1lU2FmYXJpLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhl
bWVTYWZhcmkuaAppbmRleCBmMDM5Mzc5ZWE0NDcwOGU4YjViNzVmOTYwNTUzMmZlMTFkNjI2NTky
Li5mNDI3YjE5MGZkNjc2NjUyMTU2NzU2NmNiNmNiYzRkZmU0M2Q5OTI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVTYWZhcmkuaApAQCAtNDEs
MjAgKzQxLDIwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGlu
dHMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJv
b2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Ny
b2xsYmFyKik7CisgICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsK
IAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxi
YXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3
YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0g
ZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBw
YWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2Up
OworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVh
bCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSk7CiAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFy
Kik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xp
ZW50Kik7CiAgICAgCi0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xs
YmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNob3Vs
ZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNl
RXZlbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGlj
c0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lk
IHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3Qm
LCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0Nv
bnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBh
aW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGlj
c0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxi
YXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKTsKIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwCmluZGV4IGQz
NjM0MTA2ODQ4N2ZmMWI3ODY5NzY4ZTlkNWY2YjJmNDg5ODFhYTUuLjU2NDQyOTdkN2YyNzBjNTBj
N2EyOGVmM2IxZTI0YWNmMWQxMjc5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcApAQCAtMTMwLDEyICsxMzAsMTIgQEAgYm9vbCBT
Y3JvbGxiYXJUaGVtZVdpbjo6aW52YWxpZGF0ZU9uTW91c2VFbnRlckV4aXQoKQogICAgIHJldHVy
biBydW5uaW5nVmlzdGE7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVXaW46Omhhc1RodW1iKFNj
cm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6aGFzVGh1bWIoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gdGh1bWJMZW5ndGgo
c2Nyb2xsYmFyKSA+IDA7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OmJhY2tCdXR0
b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJ
bnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAgICAgLy8gV2lu
ZG93cyBqdXN0IGhhcyBzaW5nbGUgYXJyb3dzLgogICAgIGlmIChwYXJ0ID09IEJhY2tCdXR0b25F
bmRQYXJ0KQpAQCAtMTU0LDcgKzE1NCw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46OmJh
Y2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhCiAgICAg
ICAgICAgICAgICAgICAgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIDwgMiAqIHRoaWNr
bmVzcyA/IHNjcm9sbGJhci0+aGVpZ2h0KCkgLyAyIDogdGhpY2tuZXNzKTsKIH0KIAotSW50UmVj
dCBTY3JvbGxiYXJUaGVtZVdpbjo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXaW46
OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9s
bGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICAvLyBXaW5kb3dzIGp1c3QgaGFzIHNpbmdsZSBh
cnJvd3MuCiAgICAgaWYgKHBhcnQgPT0gRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCkKQEAgLTE3NSw3
ICsxNzUsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpmb3J3YXJkQnV0dG9uUmVjdChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydAogICAgIHJldHVybiBJbnRSZWN0KHNj
cm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSBoLCB0
aGlja25lc3MsIGgpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjp0cmFja1JlY3Qo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjp0
cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCkKIHsKICAgICBp
bnQgdGhpY2tuZXNzID0gc2Nyb2xsYmFyVGhpY2tuZXNzKCk7CiAgICAgaWYgKHNjcm9sbGJhci0+
b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSB7CkBAIC0xODgsMTIgKzE4OCwx
MiBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIGJvb2wpCiAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJh
ci0+eSgpICsgdGhpY2tuZXNzLCB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSAyICog
dGhpY2tuZXNzKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVdpbjo6c2hvdWxkQ2VudGVyT25U
aHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Ny
b2xsYmFyVGhlbWVXaW46OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4gZXZ0LnNoaWZ0
S2V5KCkgJiYgZXZ0LmJ1dHRvbigpID09IExlZnRCdXR0b247CiB9CiAKLWJvb2wgU2Nyb2xsYmFy
VGhlbWVXaW46OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhciogc2Nyb2xsYmFy
LCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVXaW46
OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIC8vIEZpbmQgdGhlIHJl
Y3Qgd2l0aGluIHdoaWNoIHdlIHNob3VsZG4ndCBzbmFwLCBieSBleHBhbmRpbmcgdGhlIHRyYWNr
IHJlY3QKICAgICAvLyBpbiBib3RoIGRpbWVuc2lvbnMuCkBAIC0yMTEsMTQgKzIxMSwxNCBAQCBi
b29sIFNjcm9sbGJhclRoZW1lV2luOjpzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgUAogICAgIHJldHVybiAhcmVjdC5jb250YWlucyhtb3VzZVBv
c2l0aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja0JhY2tncm91
bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VHJhY2tCYWNrZ3Jv
dW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBKdXN0IGFzc3VtZSBhIGZvcndh
cmQgdHJhY2sgcGFydC4gIFdlIG9ubHkgcGFpbnQgdGhlIHRyYWNrIGFzIGEgc2luZ2xlIHBpZWNl
IHdoZW4gdGhlcmUgaXMgbm8gdGh1bWIuCiAgICAgaWYgKCFoYXNUaHVtYihzY3JvbGxiYXIpKQog
ICAgICAgICBwYWludFRyYWNrUGllY2UoY29udGV4dCwgc2Nyb2xsYmFyLCByZWN0LCBGb3J3YXJk
VHJhY2tQYXJ0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNl
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUpCit2b2lkIFNjcm9sbGJhclRoZW1l
V2luOjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0
IHBhcnRUeXBlKQogewogICAgIGNoZWNrQW5kSW5pdFNjcm9sbGJhclRoZW1lKCk7CiAKQEAgLTI3
Niw3ICsyNzYsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNrUGllY2UoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcgogI2VuZGlmCiB9CiAKLXZvaWQg
U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQg
cGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGNoZWNrQW5kSW5pdFNjcm9sbGJh
clRoZW1lKCk7CiAKQEAgLTMzOSw3ICszMzksNyBAQCBzdGF0aWMgSW50UmVjdCBncmlwcGVyUmVj
dChpbnQgdGhpY2tuZXNzLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3QpCiAgICAgICAgICAgICAg
ICAgICAgZ3JpcHBlclRoaWNrbmVzcywgZ3JpcHBlclRoaWNrbmVzcyk7CiB9CiAKLXN0YXRpYyB2
b2lkIHBhaW50R3JpcHBlcihTY3JvbGxiYXIqIHNjcm9sbGJhciwgSERDIGhkYywgY29uc3QgSW50
UmVjdCYgcmVjdCkKK3N0YXRpYyB2b2lkIHBhaW50R3JpcHBlcihTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBIREMgaGRjLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGlmICgh
c2Nyb2xsYmFyVGhlbWUpCiAgICAgICAgIHJldHVybjsgIC8vIENsYXNzaWMgbG9vayBoYXMgbm8g
Z3JpcHBlci4KQEAgLTM1OCw3ICszNTgsNyBAQCBzdGF0aWMgdm9pZCBwYWludEdyaXBwZXIoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIHJlY3QpCiAgICAgRHJh
d1RoZW1lQmFja2dyb3VuZChzY3JvbGxiYXJUaGVtZSwgaGRjLCBzY3JvbGxiYXItPm9yaWVudGF0
aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/IFNQX0dSSVBQRVJIT1IgOiBTUF9HUklQUEVS
VkVSVCwgc3RhdGUsICZ0aGVtZVJlY3QsIDApOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lV2lu
OjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRo
dW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBjaGVja0FuZEluaXRTY3JvbGxiYXJU
aGVtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xs
YmFyVGhlbWVXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVt
ZVdpbi5oCmluZGV4IGNkMmYxNzZkZmRjOTczODJjMzViYjc3M2Y5YjFlOGRhZDIxMjc2YjYuLjg3
MDI0MGMxNjU1OGNmMGY2MjU3NDE5NmVlYjY5YWFhODA2YTdhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oCkBAIC00MiwyMCArNDIsMjAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpbnZhbGlkYXRlT25Nb3VzZUVudGVyRXhpdCgp
OwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKikg
eyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKTsK
KyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0
dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBT
Y3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVj
dCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50
aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwg
Ym9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJl
Y3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0g
ZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAg
dmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFp
bnRpbmcgPSBmYWxzZSk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihT
Y3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFj
a2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0g
ICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxi
YXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmlydHVhbCB2b2lkIHBh
aW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBT
Y3JvbGxiYXJQYXJ0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRl
eHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50
VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
Y29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xs
YmFyUGFydCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJUaGVtZVd4LmNwcAppbmRleCBjOTI0OTc4YTUwNWFjMzFm
MTQwNTFlMzAxODMzMDY0MjUxM2M0YTUxLi5iYWRmMzE1NTQwNWE2YTUxMzY2MjMyNWI5MjM1OWRj
ODEzYTk1MjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxi
YXJUaGVtZVd4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJU
aGVtZVd4LmNwcApAQCAtNzEsMTkgKzcxLDE5IEBAIGludCBTY3JvbGxiYXJUaGVtZVd4OjpzY3Jv
bGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgc2l6ZSkKICAgICByZXR1cm4gdGhp
Y2tuZXNzOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lV3g6Omhhc1RodW1iKFNjcm9sbGJhciog
c2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZVd4OjpoYXNUaHVtYihTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIC8vIFRoaXMgbWV0aG9kIGlzIGp1c3QgY2FsbGVk
IGFzIGEgcGFpbnQtdGltZSBvcHRpbWl6YXRpb24gdG8gc2VlIGlmCiAgICAgLy8gcGFpbnRpbmcg
dGhlIHRodW1iIGNhbiBiZSBza2lwcGVkLiAgV2UgZG9uJ3QgaGF2ZSB0byBiZSBleGFjdCBoZXJl
LgogICAgIHJldHVybiB0aHVtYkxlbmd0aChzY3JvbGxiYXIpID4gMDsKIH0KIAotaW50IFNjcm9s
bGJhclRoZW1lV3g6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2lu
dCBTY3JvbGxiYXJUaGVtZVd4OjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gMjA7CiB9CiAKLUludFNpemUgU2Nyb2xsYmFy
VGhlbWVXeDo6YnV0dG9uU2l6ZShTY3JvbGxiYXIqKSAKK0ludFNpemUgU2Nyb2xsYmFyVGhlbWVX
eDo6YnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVudCopIAogewogI2lmZGVmIF9fV1hNQUNf
XwogICAgIHJldHVybiBJbnRTaXplKDIwLDIwKTsKQEAgLTkyLDcgKzkyLDcgQEAgSW50U2l6ZSBT
Y3JvbGxiYXJUaGVtZVd4OjpidXR0b25TaXplKFNjcm9sbGJhciopCiAjZW5kaWYKIH0KIAotdm9p
ZCBTY3JvbGxiYXJUaGVtZVd4OjpzcGxpdFRyYWNrKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25z
dCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0LCBJbnRSZWN0JiBiZWZvcmVUaHVtYlJl
Y3QsIEludFJlY3QmIHRodW1iUmVjdCwgSW50UmVjdCYgYWZ0ZXJUaHVtYlJlY3QpCit2b2lkIFNj
cm9sbGJhclRoZW1lV3g6OnNwbGl0VHJhY2soU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCwgSW50UmVjdCYgYmVmb3Jl
VGh1bWJSZWN0LCBJbnRSZWN0JiB0aHVtYlJlY3QsIEludFJlY3QmIGFmdGVyVGh1bWJSZWN0KQog
ewogICAgIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxpdFRyYWNrKHNjcm9sbGJhciwgdW5j
b25zdHJhaW5lZFRyYWNrUmVjdCwgYmVmb3JlVGh1bWJSZWN0LCB0aHVtYlJlY3QsIGFmdGVyVGh1
bWJSZWN0KTsKICNpZmRlZiBfX1dYTUFDX18KQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNjcm9s
bGJhclRoZW1lV3g6OnNwbGl0VHJhY2soU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHVuY29uc3RyYQogI2VuZGlmCiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6YmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9v
bCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIC8v
IEZJWE1FOiBIYW5kbGluZyB0aGlzIGNhc2UgaXMgbmVlZGVkIHdoZW4gdGhlcmUgYXJlIHR3byBz
ZXRzIG9mIGFycm93IGJ1dHRvbnMKICAgICAvLyBvbiBNYWMsIG9uZSBhdCB0aGUgdG9wIGFuZCBv
bmUgYXQgdGhlIGJvdHRvbS4KQEAgLTEzMCw3ICsxMzAsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRo
ZW1lV3g6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0
IHBhcgogICAgIHJldHVybiBJbnRSZWN0KHgsIHksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVXeDo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKK0ludFJlY3QgU2Ny
b2xsYmFyVGhlbWVXeDo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIC8vIEZJWE1FOiBIYW5k
bGluZyB0aGlzIGNhc2UgaXMgbmVlZGVkIHdoZW4gdGhlcmUgYXJlIHR3byBzZXRzIG9mIGFycm93
IGJ1dHRvbnMKICAgICAvLyBvbiBNYWMsIG9uZSBhdCB0aGUgdG9wIGFuZCBvbmUgYXQgdGhlIGJv
dHRvbS4KQEAgLTE1NSw3ICsxNTUsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OmZvcndh
cmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgcmV0
dXJuIEludFJlY3QoeCwgeSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIH0KIAotSW50
UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJv
b2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OnRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyLCBib29sKQogewogICAgIEludFNpemUgYnMgPSBidXR0b25TaXplKHNj
cm9sbGJhcik7CiAgICAgaW50IHRyYWNrU3RhcnQgPSAwOwpAQCAtMTc5LDExICsxNzksMTEgQEAg
SW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGJvb2wpCiAgICAgcmV0dXJuIEludFJlY3Qoc2Nyb2xsYmFyLT54KCksIHNjcm9sbGJhci0+eSgp
ICsgdHJhY2tTdGFydCwgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0gMiAqIGJzLmhl
aWdodCgpKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVd4OjpwYWludChTY3JvbGxiYXIqIHNj
cm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQor
Ym9vbCBTY3JvbGxiYXJUaGVtZVd4OjpwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xs
YmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAg
ICAgd3hPcmllbnRhdGlvbiBvcmllbnRhdGlvbiA9IChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkg
PT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgPyB3eEhPUklaT05UQUwgOiB3eFZFUlRJQ0FMOwogICAg
IGludCBmbGFncyA9IDA7Ci0gICAgaWYgKHNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNB
Y3RpdmUoKSkKKyAgICBpZiAoc2Nyb2xsYmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkpCiAg
ICAgICAgIGZsYWdzIHw9IHd4Q09OVFJPTF9GT0NVU0VEOwogICAgIAogICAgIGlmICghc2Nyb2xs
YmFyLT5lbmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9T
Y3JvbGxiYXJUaGVtZVd4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC9TY3JvbGxiYXJU
aGVtZVd4LmgKaW5kZXggNzVhYjE3NWEzYmE2MDRmY2Q3OTVhZDJlYTQ1ZWRmY2Y1ODNlZTU1OC4u
MzcyYWFmOTY2MmY3NDVkNGVlMDc0N2VkZjVjMTFmOWZjNWFkODk1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guaApAQCAtMzUsMjEgKzM1LDIxIEBA
IGNsYXNzIFNjcm9sbGJhclRoZW1lV3ggOiBwdWJsaWMgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUg
ewogcHVibGljOgogICAgIHZpcnR1YWwgflNjcm9sbGJhclRoZW1lV3goKTsKICAgICB2aXJ0dWFs
IGludCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1bGFyU2Ny
b2xsYmFyKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXJU
aGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IEludFJlY3QmKTsKICAgICAKIHBy
b3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXIqKSB7IHJldHVy
biB0cnVlOyB9Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOworICAgIHZp
cnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwog
Ci0gICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKik7CisgICAgdmlydHVh
bCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1
YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29s
IHBhaW50aW5nID0gZmFsc2UpOwotICAgIHZpcnR1YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVj
dChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOwotICAg
IHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZh
bHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1
YWwgSW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9s
bGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IHRy
YWNrUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CiAK
LSAgICB2aXJ0dWFsIHZvaWQgc3BsaXRUcmFjayhTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiB0
cmFjaywgSW50UmVjdCYgc3RhcnRUcmFjaywgSW50UmVjdCYgdGh1bWIsIEludFJlY3QmIGVuZFRy
YWNrKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3BsaXRUcmFjayhTY3JvbGxiYXJUaGVtZUNsaWVudCos
IGNvbnN0IEludFJlY3QmIHRyYWNrLCBJbnRSZWN0JiBzdGFydFRyYWNrLCBJbnRSZWN0JiB0aHVt
YiwgSW50UmVjdCYgZW5kVHJhY2spOwogICAgIAotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVt
Ykxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXIuaAppbmRleCA4MTBjOThmZjM2NjhhYjkxY2RlOWMzNTcxOGQ2ZjA0
YjJmNzQ2NzFiLi43ZmUyZmFjOGI4ZDQ5NzU0ZDhlYWIyM2Q0MDViMTYyYmUzM2RjN2JhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCkBAIC04NSw3ICs4NSw3
IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDx1bnNpZ25lZCwgUmVuZGVyU2Nyb2xsYmFyUGFydCo+
IG1fcGFydHM7CiB9OwogCi1pbmxpbmUgUmVuZGVyU2Nyb2xsYmFyKiB0b1JlbmRlclNjcm9sbGJh
cihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2lubGluZSBSZW5kZXJTY3JvbGxiYXIqIHRvUmVuZGVy
U2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgQVNTRVJU
KCFzY3JvbGxiYXIgfHwgc2Nyb2xsYmFyLT5pc0N1c3RvbVNjcm9sbGJhcigpKTsKICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8UmVuZGVyU2Nyb2xsYmFyKj4oc2Nyb2xsYmFyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwCmluZGV4IDg3MzA5
ZDQ0ZTVhYTQ1MjY5NzlhZmViZTUxMjc4YjRlNDZhNWU5MTcuLjQ0ZTJhYTYzMWRjMjgxNTAxNzRi
YzIyNTIzMGU4YjZhYWI3ZDBkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlclNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU2Nyb2xsYmFyLmgiCisjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVDbGllbnQuaCIKICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM2LDcg
KzM3LDcgQEAgUmVuZGVyU2Nyb2xsYmFyVGhlbWUqIFJlbmRlclNjcm9sbGJhclRoZW1lOjpyZW5k
ZXJTY3JvbGxiYXJUaGVtZSgpCiAgICAgcmV0dXJuICZ0aGVtZTsKIH0KIAotdm9pZCBSZW5kZXJT
Y3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhTY3JvbGxiYXIqIHNjcm9s
bGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSkKK3ZvaWQgUmVuZGVyU2Nyb2xs
YmFyVGhlbWU6OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSkKIHsKICAgICBJbnRS
ZWN0IGZpcnN0QnV0dG9uID0gYmFja0J1dHRvblJlY3Qoc2Nyb2xsYmFyLCBCYWNrQnV0dG9uU3Rh
cnRQYXJ0KTsKICAgICBJbnRSZWN0IHNlY29uZEJ1dHRvbiA9IGZvcndhcmRCdXR0b25SZWN0KHNj
cm9sbGJhciwgRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCk7CkBAIC01MSw3ICs1Miw3IEBAIHZvaWQg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIGludCYKICAgICB9CiB9CiAKLWJvb2wgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6
Omhhc0J1dHRvbnMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFJlbmRlclNjcm9sbGJhclRo
ZW1lOjpoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAg
aW50IHN0YXJ0U2l6ZTsKICAgICBpbnQgZW5kU2l6ZTsKQEAgLTU5LDI3ICs2MCwyNyBAQCBib29s
IFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKFNjcm9sbGJhciogc2Nyb2xsYmFyKQog
ICAgIHJldHVybiAoc3RhcnRTaXplICsgZW5kU2l6ZSkgPD0gKHNjcm9sbGJhci0+b3JpZW50YXRp
b24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gc2Nyb2xsYmFyLT53aWR0aCgpIDogc2Nyb2xs
YmFyLT5oZWlnaHQoKSk7CiB9CiAKLWJvb2wgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Omhhc1RodW1i
KFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6aGFzVGh1
bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gdHJhY2tM
ZW5ndGgoc2Nyb2xsYmFyKSAtIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikgPj0gMDsKIH0KIAotaW50
IFJlbmRlclNjcm9sbGJhclRoZW1lOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCitpbnQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1pbmltdW1UaHVtYkxlbmd0aChTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIHJldHVybiB0b1JlbmRlclNjcm9s
bGJhcihzY3JvbGxiYXIpLT5taW5pbXVtVGh1bWJMZW5ndGgoKTsKIH0KIAotSW50UmVjdCBSZW5k
ZXJTY3JvbGxiYXJUaGVtZTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNj
cm9sbGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCitJbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1l
OjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxi
YXJQYXJ0IHBhcnRUeXBlLCBib29sKQogewogICAgIHJldHVybiB0b1JlbmRlclNjcm9sbGJhcihz
Y3JvbGxiYXIpLT5idXR0b25SZWN0KHBhcnRUeXBlKTsKIH0KIAotSW50UmVjdCBSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9s
bGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCitJbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjpm
b3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxi
YXJQYXJ0IHBhcnRUeXBlLCBib29sKQogewogICAgIHJldHVybiB0b1JlbmRlclNjcm9sbGJhcihz
Y3JvbGxiYXIpLT5idXR0b25SZWN0KHBhcnRUeXBlKTsKIH0KIAotSW50UmVjdCBSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQorSW50UmVj
dCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgaWYgKCFoYXNCdXR0b25zKHNjcm9sbGJhcikpCiAgICAg
ICAgIHJldHVybiBzY3JvbGxiYXItPmZyYW1lUmVjdCgpOwpAQCAtOTEsNyArOTIsNyBAQCBJbnRS
ZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGJvb2wpCiAgICAgcmV0dXJuIHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnRyYWNrUmVj
dChzdGFydExlbmd0aCwgZW5kTGVuZ3RoKTsKIH0KIAotSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJU
aGVtZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK0ludFJlY3QgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmNv
bnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsgCiAgICAgSW50UmVjdCBiYWNrUmVjdCA9IHRv
UmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnRyYWNrUGllY2VSZWN0V2l0aE1hcmdpbnMoQmFj
a1RyYWNrUGFydCwgcmVjdCk7CiAgICAgSW50UmVjdCBmb3J3YXJkUmVjdCA9IHRvUmVuZGVyU2Ny
b2xsYmFyKHNjcm9sbGJhciktPnRyYWNrUGllY2VSZWN0V2l0aE1hcmdpbnMoRm9yd2FyZFRyYWNr
UGFydCwgcmVjdCk7CkBAIC0xMTIsMjcgKzExMywyNyBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclRo
ZW1lOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiBjb250
ZQogICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JT
cGFjZURldmljZVJHQik7CiB9CiAKLXZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Ny
b2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Ny
b2xsYmFyKQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRTY3JvbGxiYXJCYWNrZ3Jv
dW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhcikKIHsKICAgICB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5wYWludFBhcnQoY29u
dGV4dCwgU2Nyb2xsYmFyQkdQYXJ0LCBzY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKIH0KIAotdm9p
ZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
K3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKICAgICB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5wYWlu
dFBhcnQoY29udGV4dCwgVHJhY2tCR1BhcnQsIHJlY3QpOwogfQogCi12b2lkIFJlbmRlclNjcm9s
bGJhclRoZW1lOjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0
KQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50
UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIHRvUmVuZGVyU2Nyb2xsYmFy
KHNjcm9sbGJhciktPnBhaW50UGFydChjb250ZXh0LCBwYXJ0LCByZWN0KTsKIH0KIAotdm9pZCBS
ZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFy
dCBwYXJ0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24oR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgdG9SZW5kZXJTY3JvbGxi
YXIoc2Nyb2xsYmFyKS0+cGFpbnRQYXJ0KGNvbnRleHQsIHBhcnQsIHJlY3QpOwogfQogCi12b2lk
IFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFJlbmRl
clNjcm9sbGJhclRoZW1lOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAg
ICB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5wYWludFBhcnQoY29udGV4dCwgVGh1bWJQ
YXJ0LCByZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJTY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhclRoZW1lLmgKaW5kZXggNzBjMjRhNWVhMmVkNzliYjlmOGZhZDAyMTM3YzYzNTY5ZDk5NjNj
NC4uZTdjODE2OTdkNzNhOTQ5MTQ1MWIyNjdmNDFhYmRkZTdhZTNkZmQ2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKQEAgLTQ2LDM1ICs0
NiwzNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxDb3JuZXIoU2Ny
b2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29ybmVy
UmVjdCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIq
IHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldmVudCkgeyByZXR1cm4gU2Ny
b2xsYmFyVGhlbWU6OnRoZW1lKCktPnNob3VsZENlbnRlck9uVGh1bWIoc2Nyb2xsYmFyLCBldmVu
dCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVt
ZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KSB7IHJl
dHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2hvdWxkQ2VudGVyT25UaHVtYihzY3JvbGxi
YXIsIGV2ZW50KTsgfQogICAgIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xs
VGltZXJEZWxheSgpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT5pbml0aWFsQXV0
b3Njcm9sbFRpbWVyRGVsYXkoKTsgfQogICAgIHZpcnR1YWwgZG91YmxlIGF1dG9zY3JvbGxUaW1l
ckRlbGF5KCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPmF1dG9zY3JvbGxUaW1l
ckRlbGF5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxi
YXIqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnJlZ2lzdGVy
U2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9s
bGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1l
KCktPnVucmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQorICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKSB7IHJldHVy
biBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsg
fQorICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1lOjp0aGVtZSgpLT51bnJlZ2lz
dGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KIAotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVt
Ykxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZvaWQgYnV0dG9uU2l6ZXNBbG9uZ1RyYWNr
QXhpcyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6
ZSk7CisgICAgdm9pZCBidXR0b25TaXplc0Fsb25nVHJhY2tBeGlzKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6ZSk7CiAgICAgCiAgICAgc3RhdGlj
IFJlbmRlclNjcm9sbGJhclRoZW1lKiByZW5kZXJTY3JvbGxiYXJUaGVtZSgpOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVh
bCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25z
KFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9s
bGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3Qo
U2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2
aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFy
dCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0
KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0
IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9v
bCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJl
Y3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0g
ZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogICAgIAotICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKik7ICAgIAot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQ
aWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xs
YmFyUGFydCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCos
IFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRS
ZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGlj
c0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopOyAgICAKKyAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShH
cmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBT
Y3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFy
dCk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CiAKLSAgICB2aXJ0dWFsIEludFJlY3Qg
Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0
Jik7CisgICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="132523"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>